-- 0.9.36.3: --

August 3, 2014:
	NGP: Fixed a potentially-exploitable overflow bug in the flash dirty block list code.

	PCE, PCE_FAST: Fixed bug(from sloppy handling of errors) that caused battery-backed save game file destruction
	if an error(e.g. missing CD BIOS, memory allocation failure, etc.) occurred during game load and initialization.

	PSX: Fixed a bug that caused a crash when trying to use save states during PSF playback/PS-EXE execution.

-- 0.9.36.2: --

June 25, 2014:
	SNES: Save extra input device state in save states that the bsnes core fails to save.

	Removed computationally-expensive and unnecessary(it's already done in the state load code path) duplicate-variable check debug code
	in the save state saving code.

	SNES: Hooked up Super Scope emulation.

June 24, 2014:
	PCE_FAST: Removed debug puts() in VPC mixing inner loop, and added compiler hints to some of the rendering and mixing loops.

	Fixed an ancient regression introduced around version 0.9.16-WIP.  Said regression caused the file extension of the save state used by the auto save
	state save/load	feature(setting "autosave") to be the same as the extension used for the currently selected save state slot, effectively overwriting that
	save state slot on exit.

	Added setting "video.disable_composition", to allow the user to override Mednafen's default behavior of disabling desktop composition on
	Windows Vista and Windows 7.

June 23, 2014:
	MD: Fixed a 68K emulation regression introduced in 0.9.34, that broke save game	loading in "Sonic the Hedgehog 3",
	and possibly broke other games in subtle ways.

	MD: Fixed prototype for cart mapper 16-bit write function.

	MD: Cleaned up debug printf()s.

	PSX, PCE, MD, CDPLAY: Resolved a few compiler warnings.

	PC-FX: Fixed an old bug that, when coupled with changes made in 0.9.35, caused low-volume crackling in the CD-DA sound output.

-- 0.9.36.1: --

June 22, 2014:
	Fixed a bug that could cause an assert() to trigger under certain circumstances when the scale2x/scale3x/scale4x special scaler is used with
	SNES emulation.

	PSX: Fixed a major SPU emulation regression in 0.9.36 that completely broke sample playback on a channel when the playback rate
	was set near the maximum.

	PSX: Fixed noise emulation playback frequency calculation(particularly for the lowest noise playback frequencies), per tests on a PS1.
	It's unlikely to have any audible effect on games, though.

-- 0.9.36: --

June 17, 2014:
	PSX: Rewrote SPU ADPCM decoding code per tests on a PS1; fixes the early voice cutoff problem in "Thousand Arms", and possibly some other
	games as well.  Seems to fix the post-battle quasi-random lockup problem in the Japanese version of Tales of Destiny.

June 15, 2014:
	WonderSwan: Added experimental, undocumented support for interfacing with trap15's WonderFence program, which provides MobileWonderGate emulation;
	controlled via settings "wswan.excomm" and "wswan.excomm.path".  This support is currently only available on UN*X-like platforms.

	WonderSwan: Added SRAM size calculation for the raw header value of 0x05(used by MobileWonderGate).

	WonderSwan: Corrected the SRAM size calculation for the raw header value of 0x04(used by Dicing Knight and Judgement Silversword).

	WonderSwan: Rewrote RTC emulation code to avoid runtime use of C library time functions(fixing potential desync issues when using netplay and input-recording
	movies), and fixed the time initialization code to reflect the current local time instead of UTC.

June 14, 2014:
	PSX: Implemented experimental support for save states.

	PSX: Rewrote MDEC execution loop; the MDEC emulation model still is far from perfect, though.  Fixes the lockup during the intro FMV of
	a corrupt copy of "Dragon Knight 4" that's floating around the Internet.

June 10, 2014:
	Ripped out incomplete "snes_perf" emulation module, and ripped out the unimplemented PC emulation stub module.

June 9, 2014:
	PSX: Improvements to SPU volume sweep emulation accuracy per tests on a PS1.  Fixes sound/music wonkiness in "WipEout 3".

June 6, 2014:
	PSX: Minor improvements to MDEC YCbCr to RGB color conversion accuracy, per tests on a PS1.

-- 0.9.35.1: --

June 5, 2014:
	PSX: Improved accuracy of the GPU framebuffer rectangle copy command(0x80) per tests on a PS1; fixes graphical glitches in the
	water effect of stage 4 of "Einhander".

-- 0.9.35: --

May 31, 2014:
	Use a semaphore to allow for tighter emulation-thread->video-thread blit timing granularity.

May 29, 2014:
	PC-FX: Battery-backed save game memory is now saved to a file during runtime if the memory contents have changed, rather than only
	saved on exit as before.

	NES: Fixed unusably-broken emulation of iNES mapper 80's internal battery-backed save-game RAM(used by "Minelvation Saga", "Mirai Shinwa Jarvas", and
	"Taito Grand Prix").

	NES: Implemented battery-backed save game support for iNES mapper 69(for the two or so games that need it).

	NES: Fixed multiple major issues with the iNES mapper 69 save state code.

	NES: Added missing PowerPad default button assignments.

	NES: Fixed how Mahjong, Family Trainer, and PowerPad input device code reads input data, to fix brokenness on big-endian platforms, and to prevent
	(mostly benign) buffer overflows.

	NES: Fixed some buffer overflow issues in the "Barcode World" barcode reader input device emulation code.

	NES: Changed how save state loading works so that failure to load one section will not abort loading, but signal a deferred error(most useful
	with missing input device sections).

May 28, 2014:
	Fixed some careless unsafe instances of "-2147483648" added since 0.9.34.1.

	PSX: Draw lightgun crosshairs in a separate pass to the lightgun color/brightness evaluation logic, so that crosshairs from a lightgun on a lower port
	won't mess up the color evaluation logic of a lightgun on a higher port.

	PSX: Refactored the lightgun crosshair drawing code to reduce code duplication, and made some changes to the drawing algorithm to increase
	visibility(and make the crosshairs not lopsided anymore).

	Pack IDIT_X_AXIS and IDIT_Y_AXIS input types in 2 bytes, 1-byte-aligned, instead of 4 bytes, 4-byte-aligned.

	NES: Fixed some minor issues with the lightgun coordinate translation calculations(hopefully for the last time :p).

	PSX: Fixed a bug in the Guncon and Justifier emulation code that resulted in memory corruption when the crosshairs were
	positioned near the upper left corner of the screen.

	NES: Fixed a bug in the iNES mapper 71 code that was causing Mednafen to crash when trying to play "Dreamworld Pogie".

May 27, 2014:
	NES: Made some improvements to the new X24C01P/X24C02P EEPROM emulation code, though it's still a bit messy.

May 26, 2014:
	NES: Added support for iNES mapper 159.

	NES: Added emulation of mapper 16's EEPROM.

	NES: Fixed a bug that was causing some of the Bandai Datach games to have corrupt graphics.

	NES: Reworked how the Zapper crosshairs are drawn to fix the problem of them being drawn at the wrong position
	if "nes.clipsides" is set to "1"(and to render with 8bpp and 16bpp video output, and to update properly in respect
	to MDFN_MidLineUpdate(); though neither is currently used by Mednafen per-se, they are useful for ports).

	NES: Fixed a design flaw that could easily cause desync during netplay with an emulated Zapper if different clients' video settings
	are different.

May 25, 2014:
	Cleaned up some of the netplay code to increase maintainability.

May 24, 2014:
	Changed how the Linux joystick code de-initializes joysticks when rumble has been used, to try to minimize the
	probability of a kernel panic due to buggy(race conditions) Linux kernel drivers.

	PSX: Added emulation of GPU IRQs.

	PSX: Implemented support for GPU command number mirrors.

May 23, 2014:
	NES: Added SSE2 code to the sound resampler, but currently disabled(#if 0'd out) as it will probably perform
	worse than the MMX version on a large number of CPU models.

	NES: Made some general minor optimizations to the sound resampling code.

	NES: Add "memory" to the clobber list of the sound resampler's MMX inline assembly MAC loop code.

May 22, 2014:
	PSX: Improved accuracy of GPU line drawing algorithm.

	WonderSwan: Improved noise(sound) emulation(thanks to trap15).

May 20, 2014:
	PSX: Optimized(reduced memory usage) layout of the GPU command table.

May 19, 2014:
	Added gcc format string check attributes to the applicable trio function prototypes, and fixed a few minor problems the
	checks uncovered.

	Fixed a compilation error when compiling without the debugger(--disable-debugger passed to the configure script).

	PSX: Fixed a glitch/bug in the triangle rasterization code that was causing some textured rectangular quads to have incorrect
	distortion of the texture(see "I" of "OPTIONS" in the Twisted Metal 2 title screen).

May 18, 2014:
	Implemented MDFND_WaitCondTimeout() (currently unused by anything, though).

May 14, 2014:
	Make the "wasapish"(WASAPI shared-mode) sound driver the default sound driver for where it's available(Windows Vista and newer).

May 13, 2014:
	PCE, PC-FX: Implemented CD-DA de-emphasis filter support(though the filter is a rough approximation).

	PCE, PC-FX: Optimized CD-DA filtering code, and implemented an SSE2 version of the oversampling filter code, to partially
	mask the performance hit that the oversampling filter causes.

May 12, 2014:
	PCE, PCFX: Loosened output resampling filter design constraints so that the resampler doesn't take excessive amounts of
	CPU time with higher(96KHz+) output rates(made feasible by implementing CD-DA oversampling).

	PCE, PC-FX: CD-DA is now run through a 2x oversampling filter(this does have a minor performance penalty to it though, sadly).

-- 0.9.34.1: --

May 11, 2014:
	Fixed a bug in the sound format conversion code that caused garbled audio when using the new shared-mode WASAPI driver
	with a sound device configured with more than 2 speakers.

-- 0.9.34: --

May 10, 2014:
	CDPLAY: Optimized the visualization code.

	Added a new shared-mode WASAPI sound driver named "wasapish".

	For consistency, the "wasapi" and "sdl" sound drivers no longer subtract the overhead latency from the desired buffer size
	when calculating the size of the buffer to use.

	Changed the default value of setting "sound.buffer_time" to "0", to enable usage of partially-new code that calculates a buffer
	size automatically based on emulated system characteristics and the sound driver in use.

May 8, 2014:
	GB: Fixed tilt sensor emulation that was broken in the May 6 IDIT_BUTTON_ANALOG packing change.

	Updated the embedded copy of libmpcdec to the latest SVN copy; fixes problems with playback of older SV7 format files(with
	the CD emulation code).

	Wrote threading code to target Win32 APIs directly, rather than rely on SDL's threading support, for the Windows build.

May 7, 2014:
	GBA, NES: Resolved some compiler warnings.

	No longer compile with -mstackrealign for the Windows build, instead using "__attribute__((force_align_arg_pointer))" where
	appropriate(e.g. Win32 and SDL callbacks).

	Updated the cheat console-interface code to use a condition variable instead of sleep-waiting.

	Remove an erroneous extra mutex unlock around a driver-side message queue.

May 6, 2014:
	Pack "IDIT_BUTTON_ANALOG" and "IDIT_RUMBLE" type input device data more tightly(only aligning to a byte-boundary now,
	and packing as 16-bits rather than 32-bits).

	Calculate and send a device type number for each emulated port with the netplay login data(the data is not used currently by
	mednafen-server, but will be in the future).

May 5, 2014:
	Reworked the multithreaded CD reading code to use condition variables, rather than repeatedly unlocking, sleeping, and
	locking mutexes.  This should help with performance a bit, and will prevent a lot of unnecessary CPU/CPU core wakeups, especially
	after loading multiple disc images with M3U files(since a read thread is created for each disc image, at least when CD image
	memcaching is disabled, the default).

	Moved common parts of the MDFNI_Load and MDFNI_LoadCD functions into a separate function to reduce code duplication.

	Emulation modules' LoadCD functions all now throw exceptions on error, so changed the function pointer prototype to remove
	the return type(void all the way!).

May 4, 2014:
	PCE, PCE_FAST, PC-FX, MD: Make better use of exceptions(and handle some that were not handled properly before) in the game
	loading and initialization code paths.

	Emulation modules' Load and LoadCD functions may now throw exceptions upwards instead of calling MDFN_PrintError() and
	returning 0.

	Reworked IPS parsing and applying code to use exceptions, and Stream instead of stdio file access.

	Reworked MDFNFILE to use exceptions to signal errors on file loading(the memory-stream functions provided primarily for the NES
	module's use still don't throw exceptions, however).

	Lynx: Removed undocumented(and largely pointless) support for loading a gzip or ZIP-compressed "lynxboot.img" firmware file.

	GB: Made game loading code more resilient to avoid leaking memory if an error occurs during game load.

	Added a gcc format string check attribute to an MDFN_Error constructor, and fixed a few minor format string problems this
	checking exposed.

May 3, 2014:
	GBA: Reworked save file type parsing code to use FileStream instead of stdio.

	GBA: Sanitize a few variables in the flash memory save state loading code to prevent malicious save states blah blah blah.

	GBA: Added masks to array access in the EEPROM emulation code to prevent malicious save states from corrupting the heap.

	GBA: EEPROM file loading code now errors out if there's an error opening or reading the file(but not if the error is that it
	simply does not exist), or the file is of an unexpected/incorrect size.

May 2, 2014:
	NES:  The filename scanning to select region/video standard(NTSC or PAL), controlled via the "nes.fnscan" setting, now
	uses the filename and path stored in the ZIP file(when loading a NES game from a ZIP file) rather than the name of the ZIP file
	itself.	 Additionally, the filename scanning feature no longer is affected by strings in the file extension(though I doubt this
	will affect anyone, as you'd have to be pretty deranged to name a NES game file like that).

May 1, 2014:
	PSX: Made CD-DA playback position report code more correct and resilient in regards to Q subchannel checksum errors.

April 30, 2014:
	PSX: Added settings to allow for scaling the analog stick axis values, to work around the issue of different logical ranges of 
	motion for PS1 DualShock and Dual Analog controllers versus more modern PC-compatible gamepads.

April 29, 2014:
	Added logic to gracefully fall back to other fullscreen stretch modes if the current fullscreen resolution is too low to support the
	stretch mode selected.

April 28, 2014:
	Added support for mapping joystick axes to lightgun screen coordinates; however, the configuration must be done manually
	by editing the configuration file.  (Additionally, the translation will not function properly if the software-rotation
	feature(via ALT+O) is used.)
	Example:
		psx.input.port2.guncon.x_axis joystick 630f0eab74165481 00008000
		psx.input.port2.guncon.y_axis joystick 630f0eab74165481 00008001
	Alternate coordinate translation for fullscreen mode, intended for physical modern lightgun and pointer devices:
		psx.input.port2.guncon.x_axis joystick 630f0eab74165481 00048000
		psx.input.port2.guncon.y_axis joystick 630f0eab74165481 00048001

April 27, 2014:
	GB: Cleaned up the memory-mapper code, fixing a few bugs that allowed some games(like "Best of the Best Championship Karate")
	to cause Mednafen itself to crash.

	GB: Fixed MBC7 support(it's been broken in Mednafen for a loooong time).

	GB: Disabled the broken simulation of HDMA overhead that seemed to be doing more harm than good; fixes problems with
	unstable framerates and inaccurate slowdown on some GBC games(such as "Shantae").

	MD, NGP, WonderSwan: Fixed potential memory leaks(memory was not really leaked due to how Mednafen is currently structured,
	but they could have become problematic leaks in the future).

	Merge clamp.h into math_ops.h.

	More #include statement changes in emulation module sources to use #include <mednafen/BLAH> style instead of #include "../BLAH".

April 26, 2014:
	Fixed a bug that was causing the output image to be distorted when rotation(via ALT+O) was used in conjunction with
	a *.videoip setting value of "x" or "y".

	Added a test/demo module to help work out bugs in the video processing code paths.

April 25, 2014:
	Reworked the build system and numerous source code and header files to allow for less sloppiness with -I include paths.

	GB: Statically-allocate a 320-byte graphics buffer instead of malloc()'ing it.

April 24, 2014:
	Fixed a problem with the configure script so it will (hopefully) no longer error out when cross-compiling.

	MD: memset() line buffer padding areas to prevent sprite rendering from reading from uninitialized memory.

	MD: Fixed violations of strict aliasing in the 68K CPU core.

	PC-FX, VB: Replaced SoftFloat, used in FPU emulation, with newly-written-while-sleep-deprived code.  It's possible this may
	cause regressions, since floating-point stuff is rather hairy...

	Fixed an ancient bug that made iterative multibyte-value cheat searches extremely unreliable.

	Fixed a bug that broke the output image when displaying a source image with multiple horizontal resolutions at a specific
	rotation angle(selected via ALT+O).

	Added support for negative <system>.scanlines setting values, which will change scanline behavior and size to overlay/obscure
	the previous field's line data if "video.deinterlacer" is set to "weave".

	Added setting "video.deinterlacer", default value of "weave".

	NES: Align a temporary line buffer array to prevent the possibility of a CPU fault and/or poor performance on non-x86 platforms.

	Simplified handling of muli-horizontal-resolution frames by changing "LineWidths"'s type from MDFN_Rect(representing
	x offset and width) to a simple int32(representing just width).

April 23, 2014:
	GB: Added support for custom palettes that specify BGP, OBP0, and OBP1 colors independently.

April 18, 2014:
	PC-FX, VB: Corrected the debugger's disassembly of the 5-bit sign-extended immediate form of "mov"
	(the disassembler was failing to sign-extend).

-- 0.9.33.3: --

April 16, 2014:
	Reworked the FPS calculation algorithm to produce more accurate FPS values.

	Added a manifest file that's embedded into the Windows executable, to ensure that noxious DPI virtualization and scaling available
	on Windows Vista and newer will not be used with Mednafen.

	Added code to disable DWM composition when running on pre-Windows 8 systems, to ensure better performance and less
	video juddering.  (Sadly, it's not possible to disable desktop composition in this manner on Windows 8 and later)

	PCE, PCE_FAST: Added a missing ADPCM playback variable to save states; fixes the problem of severe ADPCM sound
	distortion when loading save states that are saved during ADPCM playback(especially noticeable with the state rewinding feature).

April 15, 2014:
	Modified MDFN_RemoveControlChars() to not kill non-7-bit-ASCII text.

April 12, 2014:
	Misc minor code cleanups and fixes for some compiler warnings.

April 11, 2014:
	NES: Fixed broken emulation of board "UNL-Sachen-8259B"(used in the game "Silver Eagle").

April 10, 2014:
	Fixed the with-drop-shadow internal text drawing routine to not draw horizontally one pixel beyond the specified maximum width
	in some circumstances.

April 9, 2014:
	SNES: Altered a code construct to hopefully resolve a reported compiler error with clang.

	Error out of save state loading when the version specified in the save state is invalid.

	Call SDL_WM_SetIcon() before SDL_SetVideoMode(), to fix the problem of the missing Mednafen icon on some platforms/window
	managers.

	Fixed a minor integer overflow issue in the core PSF loading code.

	NES: Fixed some problems in the ROM image file loading code, including a potential heap overflow vulnerability.

-- 0.9.33.2: --

March 24, 2014:
	PSX: Fixed a small MDEC emulation bug; fixes the hang during startup in "SimCity 2000".

March 17, 2014:
	The order of evaluation of the frame advance and run normal command keys/hotkeys is now based on whether or not we're
	currently in frame advance mode, to allow for the derivation of a single-press pause/unpause key(effected by the user mapping both
	functions to a single key).

March 15, 2014:
	Renamed the log2 LUT array in the mpcdec code to avoid shadowing the math library function log2().

	NES: Fixed the problem of the VS Unisystem DIP switch position display(accessed via the "F6" key) being invisible.

	PCE: Fixed broken MCGenjin support.

March 13, 2014:
	CDPLAY: Tweaked visualization code to reduce memory and CPU usage.

March 11, 2014:
        Lynx: Minor code cleanups.

-- 0.9.33.1: --

March 8, 2014:
	Fixed compiler errors when compiling without the debugger.

	Fixed a couple of memory leaks.

	PSX: Made better use of exceptions in the loading and initialization code paths(and avoid leaking memory if a part of the
	process fails).

	PSX: Protect against sound buffer overflow without causing a call to abort() so that using save states(when they're added)
	or power toggling/resetting in the debugger while in step mode is safer.

	PSX: Output of debug messages to stdout and stderr is now controlled via the "psx.dbg_level" setting, whose default
	value of "0" disables almost all debug messages.  Set the setting to "3" to obtain roughly the same output as previous
	versions of Mednafen.

March 1, 2014:
	Modified the simple interpolation pixel shader code to avoid using the GLSL 1.3 function "round()", for better compatibility
	with some OpenGL implementations.

-- 0.9.33: --

February 25, 2014:
	PSX: Reworked CD-XA ADPCM playback buffering and sector buffering per tests on a PS1; fixes the problem of cut-off voices
	in some games("Breath of Fire 4" for example), and *should* increase the playability of some games like "Um Jammer Lammy".
	Also, these changes seem to have somehow fixed the corrupted boss graphics in the first boss fight in "Captain Commando".

	PSX: Refactored sector reading code, and added support for reading from the leadout area(the data is synthesized, though).

February 15, 2014:
	Implemented simple dithering in the 16-bit->8-bit sound sample conversion code.

	Added checks for legacy DOS device filenames to the untrusted file include path checking code used for Win32 and DOS.

February 11, 2014:
	Added support for "FOUR_CHANNEL_AUDIO", "TWO_CHANNEL_AUDIO", "COPY", "NO COPY", "PRE_EMPHASIS", and "NO PRE_EMPHASIS" directives
	in the cdrdao TOC-format file parsing and Q subchannel synthesis code.

	PC-FX, VB: Fixed V810 "mul" instruction overflow flag calculation per tests on a PC-FX.

February 2, 2014:
	PSX: Added settings "psx.slstart", "psx.slstartp", "psx.slend", and "psx.slendp" to control the vertical positioning and viewable
	area(more useful with PAL).

	NES: If the value of the nes.slstart? setting is larger than the value of the nes.slend? setting, swap the values when
	calculating the surface rectangle.

	Rewrote the simple interpolation pixel shader code(for "ipsharper", "ipxnoty", "autoipsharper", etc.) to fix problems
	with the autoip* shaders sometimes causing diagonal distortion lines in some scenarios.

February 1, 2014:
	Fixed a bug that caused major graphics corruption when rotation(ALT+O) is used with a multiple-horizontal-resolution source
	image(emulation modules that can produce such an image include pce, pce_fast, pcfx, psx, and snes).

	Fixed a bug in the SDL soft stretching with rotation code path that effectively caused the source surface rectangle Y offset to be
	ignored(with varying effects from emulation module to emulation module).

	GBA: Implemented support for 16bpp video output format.

	GBA: Implemented usage of MDFN_MidLineUpdate().

January 29, 2014:
	GB, NES, PCE_FAST, SNES: Implemented usage of MDFN_MidLineUpdate() call to allow for 0 video frame latency in some environments
	in the future(though this is not going to be possible for the VB module due to how it renders); and, we still need to figure out
	the semantics of handling interlaced video this way.

January 24, 2014:
	Replaced some usage of snprintf() with trio_snprintf().

	Replaced some usage of round(...) with floor(0.5 + ...) where appropriate, to work with the non-C99-compliant libc distributed
	with the last stable DJGPP release; however, we didn't have too many uses of round(), but it may make sense in the future to
	just insert our own custom round() function instead to preserve code clarity.	(Note that floor(0.5 + ...) does not always give
	the same result as round(), as it rounds negative midway points(-0.5,-1.5, etc.) differently).

January 23, 2014:
	Made some changes to the build system to support a DOS port.

January 18, 2014:
	VB: Moved initialization of some variables from the VSU emulation class destructor to the constructor(must have been asleep
	or something when that code first went in); fixes audio "pop" that could sometimes be heard on VB emulation startup.

January 17, 2014:
	Use XInputGetStateEx() instead of XInputGetState(), if available, to allow for usage of the XBox 360 controller
	guide button within Mednafen on MS Windows.

January 13, 2014:
	In the TOC file reading code, set disc type based on CD_DA/CD_ROM/CD_ROM_XA string.

	In the CUE sheet reading code, if any tracks are MODE2, assume the disc type is 0x20(CD-XA).

January 5, 2014:
	PSX: Moved CD-XA ADPCM resampling code from spu.cpp to cdc.cpp.

	PSX: CD-XA ADPCM audio is now resampled using the proper(ish) impulse responses, as observed from running CD-R-eating-nom-nom-nom
	tests on a PS1(this improves CD-XA ADPCM quality a bit compared to what it was in previous versions of Mednafen).

	PSX: Don't play CD-XA ADPCM sectors if the "realtime" bit in the subheader isn't set to 1(per an
	unintentional test on a PS1).

January 1, 2014:
	Synchronize raw input mapping structures to setting strings when an emulated input device configuration is finished/interrupted,
	instead of unconditionally on exit or emulated device change, to prevent pollution of the primary settings file
	when using per-module settings override files(though in that context it doesn't make much sense to override the emulated
	input device mappings that way, but we're going to add per-game settings override support eventually).

	Allow for overriding the "video.glvsync" setting and command key input mappings via the per-module settings override files.

December 31, 2013:
	Added support for per-module settings overrides(specified via placing settings in files named such as "nes.cfg", "pce.cfg",
	"pce_fast.cfg", etc.).  The settings override files will be considered read-only, and should not alter the contents of the primary
	settings file unless an in-emulator configuration process occurs that builds on the current effective setting value.

        PCE, PCE_FAST: Don't generate a command error if a track number too high is specified via CD commands 0xD8 and/or 0xD9; instead,
        treat it as if the leadout track was specified.  I'm not certain if this is correct behavior as per the actual system, but
        that'll have to wait until I'm able to run some tests.  Fixes a startup lockup in "Star Mobile".

December 22, 2013:
	PC-FX: CD-DA impulse volume is now adjusted based on the current CD-DA playback rate.

	PCE, PC-FX: Recalculated the CD-DA impulse phase adjustment convolution table to fix a tiny quality issue.

December 18, 2013:
	PC-FX: Implemented ADPCM phase-correction filtering(related to the Dec. 1 resampling changes), and modified the ADPCM volume
	handling code to not throw away so much ADPCM output sample precision.

December 1, 2013:
	PCE: Changed default value of "pce.psgrevision" from "huc6280a" to "match"; this causes revision "huc6280" to be used for
	non-SuperGrafx games, and "huc6280a" to be used for SuperGrafx games and HES playback(since SuperGrafx emulation is forcibly
	enabled during HES playback).

	PCE, PC-FX: Implemented new sound resampling and filtering code(actually we did this in November, but it's been a definite
	work-in-progress since then, and still is to a degree);	benefits include better frequency response(especially for CD-DA),
	and more flexible filtering options(code-wise, for the future).
	Downsides include increased CPU utilization, and the output sound rate has a degree of error.
	  Minimum CPU usage(and quality) with the new resampling code can be achieved with the following setting values:
            pce.resamp_quality 0
            pce.resamp_rate_error 0.0000350
            pcfx.resamp_quality 0
            pcfx.resamp_rate_error 0.0000350

	  Maximum CPU usage(and quality, though arguably overkill) can be achieved with:
            pce.resamp_quality 5
            pce.resamp_rate_error 0.0000001
            pcfx.resamp_quality 5
            pcfx.resamp_rate_error 0.0000001


	PCE: Removed support for the "enhanced" PSG revision(previously selectable by pce.psgrevision setting), as it had
	negligible benefits, caused problems with at least one game, and made the PSG emulation code slightly more complex.

	PCE: Added setting "pce.adpcmextraprec", default value of 0, that when enabled will do the same thing that the PCE_FAST module
	is now hardcoded to do with ADPCM predictor precision.

	PCE_FAST: Reduced Blip_Buffer attenuation of upper frequencies with CD-DA playback, and also to a lesser degree PSG sound.

	PCE_FAST: Removed stubish Tsushin Booster code; the regular "PCE" module's better for emulating Tsushin Tool anyway, as it
	includes keyboard emulation.

        PCE_FAST: Output full 12-bit ADPCM predictor instead of truncating it to 10-bits, for less whining in ADPCM sounds; since we're
        targetting PCE_FAST more for compatibility and subjective quality than outright accuracy per-se.

        PCE_FAST: Utilizing some macro-magic, only use computed goto on compilers known to support it.

        PCE_FAST: PSG revision changed to HuC6280A instead of "Enhanced".

November 24, 2013:
	Reduced the maximum supported sound output rate from 1048576Hz to a much more reasonable 192000Hz(significantly eases proper
	sound processing algorithm design and testing).

November 16, 2013:
	PCE_FAST: Fixed a potential crash after a garbage/corrupted ROM image is loaded.

November 12, 2013:
	Reworked the debugger UI code to fix various thread safety issues by running it(drawing, and input processing) in the
	game/emulation thread instead of the main/video blit thread.

November 9, 2013:
	PCE: During HES playback initialization, the second emulated VDC's registers are now initialized properly so that the
	emulation event system isn't overtaxed(which drove up CPU usage considerably during HES playback).  It may be prudent
	to look into implementing an optimization(based on VDC CR and DCR IRQ enable bits) in the HuC6270 emulation code so that a
	similar issue doesn't occur when the user has set "pce.forcesgx" to "1" and is emulating a non-SuperGrafx game; however, this
	could have a performance PENALTY for SuperGrafx games due to the required need to recalculate events on every VDC write(unless
	we're smart and only recalculate when the IRQ enable bits change?).

November 7, 2013:
	Reworked settings string->floating-point conversion code to not use ancient(and apparently buggy) code from glibc, and
	instead rely on the system's libc(which is ostensibly less buggy!); also changed some of the NES setting structure entries so
	that the default values and minimum/maximum values have the same number of places after the decimal point to forestall
	any future similar problems with libc strtod().

November 3, 2013:
	PSX: Implemented forced synchronization before calling debugger interface core hook.

        Changed debugger CPU core hook semantics so that the core emulation code will only call the driver-side debugger interface
        code when absolutely necessary(which will allow for proper emulator core forced synchronization when in step mode
	without killing performance, which is a prerequisite for the register view, save states, and reset/power to work properly in
	step mode; actually implementing said forced synchronization will have to be done carefully on a core-by-core basis, though,
	in addition to other changes to make major machine state changes work reliably when in step mode).

November 1, 2013:
	PCE_FAST: Changed CD-DA Blip_Synth treble parameter so that the upper parts of the CD-DA frequency spectrum aren't attenuated
	so much.

	PCE_FAST: Removed PC-FX-specific code from the CD drive emulation code.

	PCE_FAST: Forked PSG, CD interface unit, and CD drive emulation code so that it's no longer shared with the regular PCE and
	PC-FX(for CD drive) modules.

October 25, 2013:
	SNES: Added support for Game Genie codes.

	SNES: Simplified(and hackified gloriously!) and reduced memory usage of SuperFX memory mapping code.

October 22, 2013:
	A name(used in the window title bar) for loaded CD games will now be extracted from the filepath, as was already done for
	cart-based games.

October 21, 2013:
	Reworked cheat loading and saving code to use FileStream.

	Renamed Stream::printf to Stream::print_format to avoid head-desking.

	GBA, PCE, PCE_FAST: Rewrote custom palette loading code to use FileStream, and removed the undocumented gzip'd custom palette
	support in the process.

October 20, 2013:
	PSX: Added limited support for entering "GameShark" cheats in the cheat interface(not every code type is supported), and some
	cheats may not work properly anyway due to differences in the timing of RAM patching in Mednafen vs on a actual GameShark.

	Cheat support:
		The cheat interface's cheat list now displays less information overall, but is better structured.

		Fixed broken cheat conditions when condition unit size is greater than 4 bytes(due to a missing typecast).

		The interface for adding and modifying a cheat now exposes more of the core cheat engine functionality.

		Added support for RAM copy and RAM repeat/fill type cheats to the cheat engine.

October 18, 2013:
	NES: Added support for entering "Pro Action Rocky" cheats in the cheat interface.

	GB: Added support for entering "GameShark" cheats in the cheat interface.

	Refactored NES and GameBoy Game Genie decoding code from the Mednafen core into the NES and GameBoy cores respectively.

	Made some changes to the cheat interface:
		Cheat text size is now larger with higher resolutions(though the size increase is a bit too granular).

		When asking to add a new cheat, the default will now be 'Y' instead of 'N'.

		System-specific cheat format adding support(e.g. Game Genie) has been moved to the main menu.

		When adding a system-specific cheat(e.g. Game Genie), the code is now asked for before the name, and the default
		for the name is set to the code text.

October 10, 2013:
	Lynx: Added emulation of Lynx 2 stereo audio registers, based on patches submitted by "sage".

October 8, 2013:
	Added a very simple double-precision floating-point range test to tests.cpp.

October 1, 2013:
	PC-FX: Changed the default value of setting "pcfx.rainbow.chromaip" from "1" to "0".

	When reading the TOC from a physical CD with the READ TOC command, now use response format 0010b instead of response format
	0000b so that we can get the disc type field stored in the TOC.

September 29, 2013:
	Fixed a bug that was causing the CD reading code to get confused about whether a disc(or drive dray) was inserted or ejected
	when the insert/eject MMC command failed, and updated the documentation in regards to physical discs and multiple CD games.

	Added more verbose error messages when errors with libcdio occur in regards to reading a physical CD.

September 27, 2013:
	PSX: Improved DualShock emulation accuracy per tests on a DualShock; rumble now works in "Final Fantasy 8", and possibly
	other games where rumble was previously non-working.

	Reworked how joystick/gamepad rumble is handled on Linux, to perform better and hopefully not cause kernel panics
	anymore(or at least not so often as the old code did).

September 25, 2013:
	CDPLAY: More Q subchannel information is now displayed.

	PSX: Removed an unnecessary and borked memset() statement from mdec.cpp.

	Compile with "-fno-aggressive-loop-optimizations", if the option is detected to be supported by the compiler.  I don't
	particularly trust that new optimization in gcc 4.8.x.

September 22, 2013:
	SNES: Eliminated bsnes' internal framebuffer, and added a scanline render callback into the Mednafen interface code.

	SNES: Reduced size of sound resampling buffer.

-- 0.9.32-WIP: --

September 12, 2013:
	PSX: Reworked GPU interlacing and double-height mode emulation code a bit; fixes lockups in "iS: Internal Section" and
	"The Next Tetris".

-- 0.9.31-WIP: --

September 4, 2013:
	PSX: Separated the memory map peeking functionality(for the debugger) from the main memory read/write handler, as previous
	timing changes broke peeking functionality, and the peeking code was making the read/write handler too complicated and hard
	to read.

	When in the debugger's step mode, blit the previous valid frame, instead of trying to blit an incomplete frame(which
	was buggy and prone to various modes of failure).  In the future, blitting incomplete frames may be re-added as a "feature",
	but it will require work and guarantees in the emulation modules to make sure it works properly.

	Slightly refactored code that passes around video buffers(in the driver-side code) to be a bit cleaner and more clear as
	to what it does.

September 3, 2013:
	PSX: Slow down CDC DMA a bit, but nowhere near how long it is on an actual PS1(that will have to wait for further tests so
	we don't overshoot the time required).  Fixes broken music in the intro movie in "Legend of Mana" (a regression from the
	DMA changes on Aug 13).

September 2, 2013:
	PSX: Various multitap changes:
		Improved multitap emulation, so that multitap will work properly with the "Tales of <XXX>" games.

		Reworked how Mednafen's virtual port numbers are assigned to emulated PS1 and multitap ports(see the documentation
		for details on the new mapping), so multitap is not so user-unfriendly and will work better with netplay when
		save states are finally implemented.  Note that if you have used Mednafen's PS1 multitap emulation before for more than
		2-player support, this change will cause your multitap-connected configured controllers to be a bit jumbled up in
		regards to controller order.

		Renamed the "psx.input.port1.multitap" and "psx.input.port2.multitap" settings to "psx.input.pport1.multitap" and
		"psx.input.pport2.multitap", respectively.

August 29, 2013:
	Changed the semantics of the experimental "-remote" command-line argument such that it now takes a value, that is used as
	a "key" of sorts to differentiate between debug garbage written to stdout and properly-formatted messages.  Example:
		mednafen -remote gAsafYghGb50gAKSFskIAMARANDOMSTRINGRAWRGH SomeGame.pce
	...and the frontend would use something like:
		char *good_line = strstr(line_buffer, "gAsafYghGb50gAKSFskIAMARANDOMSTRINGRAWRGH");
	...and also changed where the "remote" initialization occurs, so that startup messages will be properly
	formatted.

	Fixed a double-free bug in file.cpp that could be triggered if an error occurred while reading a non-compressed file
	into memory.

	Refactored handling of physical CD loading:
		Removed physical CD device detection heuristics from the normal game file loading path.  This means you
		can't do something like "mednafen /dev/sr0" to load a physical CD anymore.

		Deprecated -loadcd.

		Added new command-line option "-physcd".  It takes no arguments, makes it so that the typically-required "filename"
		argument is optional, and treats the "filename" argument as the device name.  Examples of syntax:

			mednafen -physcd
			mednafen -physcd /dev/sr0
			mednafen -physcd \\.\E:
			mednafen -force_module pce_fast -physcd

August 28, 2013:
	Added experimental support for CloneCD-format disc images, based on my own observations and nocash notes.

August 27, 2013:
	Fixed minor line-reading logic errors(we were discarding the last line read if it ended because of a stream EOF) with settings
	file and CUE/TOC file reading(with CUE/TOC file reading, it's a regression introduced on Aug 23) by changing the semantics of
	Stream::get_line()

August 25, 2013:
	VB: Return a known good value on reads from the VIP version control register.

	VB: Tweaked noise generation algorithm a bit per VB dev observations from PVB forum members.

August 23, 2013:
	Reworked the CUE and TOC CD image loading code to use FileStream instead of FileWrapper, to remove the 512-byte line length limit,
	and to fix a bug that was causing multiple copies of the sector data file to be loaded into memory with multi-track TOC images
	when "cd.image_memcache" is set to 1.

August 18, 2013:
	PSX: With MDEC, added emulation of quantization multiplier quirks per tests on a PS1, reversed the order of the 1D-IDCTs
	to match what was observed occurring on the PS1, and improved command word parsing.  The overall MDEC emulation model is
	still far from what it should be, though(not that commercially-released games really care), not to mention that the IDCT
	and colorspace conversion algorithms are still off in some test cases(looks to be precision and saturation related).
	(nocash notes were useful in devising tests, and for improving command word parsing)

August 13, 2013:
	PSX: Slow down one type of DMA to the GPU, and add a cycle penalty to CPU memory reads when they occur during this type of DMA
	(almost fixes the glitchy "Sony Computer Entertainment" logo at the start of FF7).

August 11, 2013:
	Made conditional cheats work on all emulation modules where cheat support is implemented(previously, they were limited
	to NES and PCE).

	PSX: Fixed improper vertical screen offset in non-interlaced mode caused by the August 9 internal GPU field toggle change.
	Though come to think of it, maybe it's not so improper after all, but emulating that way does introduce practical problems,
	and I doubt any PS1 games will be switching between interlaced and non-interlaced modes every 16ms...

August 10, 2013:
	PSX: MDEC 2D IDCT is now done via multiple 1D IDCTs, reducing computational complexity(and CPU usage).

	PSX: Return data with all bits set on reads from the PIO memory area when it's not in use(for PSFs or whatnot); fixes game
	lockup in "Tetris with Cardcaptor Sakura".

August 9, 2013:
	PSX: Corrected value of internal GPU field toggle when in non-interlaced mode; fixes "Toobin" in "Arcade Party Pak"(but
	I don't know why...)

	PSX: Don't flush the DMA sector data buffer on Read* command start; fixes a lockup that occurred after a while in the
	course selection screen of "Crash Team Racing".

August 8, 2013:
	PSX: Made some optimizations to the new memory load pipeline stall emulation code.

	PSX: Improved CDC emulation model in regards to command argument FIFO handling, per tests and nocash notes.

August 6, 2013:
	PSX: Brought pad/memcard serial I/O timing closer to that of an actual PS1; made practical(IE games don't flip out) by the
	aforementioned mess of a solution for pipeline stalls.

	PSX: Implemented hackish, ugly, kludgish, abominational, horrible, terrible, and just downright bad pipeline stall
	emulation for divides, multiplies, and loads from memory.

August 3, 2013:
	Lynx: Added 16bpp video output format support.

	Added 8bpp and 16bpp video format support to the deinterlacing code.

	MD: Added 16bpp video output format support.

	Encapsulated mostly-platform-independent OpenGL blitting and shader code into classes.

August 2, 2013:
	In the deinterlacer code, if the current field surface pixel format does not equal the field history surface pixel format,
	convert the field history surface to the current pixel format.  Fixes minor graphical glitches in some circumstances when using
	the "overlay" "video.driver" setting.

July 31, 2013:
	Fixed a few minor issues in Stereo_Buffer.

	GB: Made minor optimizations to graphics rendering code.

	GB: Added support for 8bpp and 16bpp video output formats(color gamut is heavily degraded in CGB games when rendering for 8bpp,
	though).

-- 0.9.29-WIP: --

July 26, 2013:
	Manually replaced m4/iconv.m4 with the copy from the latest gettext, and modified it slightly, to fix build errors on
	some non-glibc-utilizing platforms(e.g. my Win32 toolchain setup).

	Fixed a bug that broke(sometimes crashing Mednafen) displaying of long lines in the console viewport(cheats, netplay).

July 24, 2013:
	SNES: Fixed a couple of bugs that could cause memory corruption when a corrupted/bad save state is loaded.  (Bad save states being
	loaded can still cause the emulator to lock up or trigger an assert(), and that's probably never going to be fixed, at least
	with the SNES emulation core).

July 22, 2013:
	SNES: Implemented code for more aggressive frameskipping, but currently disabled pending further contemplation.

	Removed some unused files from the SNES emulation code tree.

July 17, 2013:
	SNES: Changed hires blending algorithm, and only blend when in pseudo-hires mode(which is "cheating" a bit, but is ultimately
	the best solution I've found to blend/blur what needs to be while preserving pixel clarity).

July 15, 2013:
	SNES: Implemented partial frameskipping support(won't affect emulation from the view of the emulated program/game, and it is disabled
	when interlacing is enabled).

	SNES: Changed it so the Mednafen core does deinterlacing, instead of the bsnes core; improves performance slightly when games
	are in interlaced mode.

July 14, 2013:
	WASAPI: Prevent complete Mednafen lockup when a device invalidation error occurs after successful initialization.

	WASAPI: Fixed sample format conversion/volume issues with > 16-bit formats.

July 13, 2013:
	SNES: Smashed some PPU emulation files together just 'cause.

	SNES: Made minor structural optimizations to S-SMP emulation.

July 12, 2013:
	SNES: Made minor structural(shouldn't affect emulation accuracy) optimizations to SuperFX emulation.

July 11, 2013:
	Added support for additional formats and rates to the new, experimental WASAPI exclusive-mode driver; fixes audio output on my
	Echo Mia MIDI sound card.
	
May 28, 2013:
	CDPLAY: Added boolean setting "cdplay.visualization", default value of "1", to allow disabling of the CPU-intensive
	simplistic waveform visualization effect.

	CDPLAY: Reduced horizontal and vertical resolutions to 60% of their previous values, to reduce CPU usage.

April 20, 2013:
	Fixed a typo-bug that would cause Mednafen to crash when, in addition to the host, the port was specified via the
	/server command in the netplay console.

April 3, 2013:
	Lynx:  Fixed an audio bug(or alternatively, replaced with kludges ;)) that was breaking the "mwahahaha" audio from the spiderthing in Gates of Zendocon, per a bug
	report and code patch from "sage".

	The "autoip" and "autoipsharper" pixel shaders weren't working properly when the screen was rotated(such as via ALT+O); fixed.

March 23, 2013:
	PSX: Changed Read* and Play CD command processing, and added support for playing CD-DA via the Read* commands coupled with
	bit0 of the mode set via SetMode; fixes music resumption after pause issue in "Mortal Kombat Trilogy".

March 19, 2013:
	Rearranged the psg_channel struct in pce_psg.h a bit to potentially allow for tiny performance improvements on some
	architectures.

	PCE_FAST:  Made a few micro-optimizations to the BG rendering code.

March 17, 2013:
	PCE_FAST:  Added a runtime check for "cmov" instruction availability on 32-bit x86, and an alternate VDC BG/SPR mixing function
	that avoids using it when it's not available.  Fixes an illegal instruction-related crash on older 
	non-Intel CPUs(like AMD K6-III+), and Intel CPUs older than Pentium Pro(though I doubt that even a 233MHz Pentium MMX is fast enough to
	run it fullspeed anyway).

	Added a compiler version check to avoid utilization of "fastcall" calling convention when compiling with a version of
	gcc older than 4.1.0, as the older versions of gcc have code generation bugs relating to fastcall/regparm(though I'm not
	sure if Mednafen will even compile at all with those older versions...).

	Repositioned the FPS display position when in SDL software rendering mode such that it won't cause a potentially
	expensive backbuffer clear operation for every frame which would compromise the accuracy/usefulness of the FPS display.

	Fixed some bugs with the SDL software rendering mode fallback used when the "opengl" vdriver is selected but OpenGL initialization
	failed(doubled-buffered video wasn't being specified in this fallback case, which led to massive screen flickering when an OSD
	element was active).

March 14, 2013:
	Added a configure script option to build without fancy software scalers(hq2x, 2xsai, scale2x, and the like).

	Replaced ancient rectangle drawing code with newer, slightly different code!

February 24, 2013:
	Renamed edc_lec_check_correct() to edc_lec_check_and_correct().

February 19, 2013:
	SNES: Use higher-quality, but more CPU-intensive(and slightly higher latency, on the order of about 1ms), speex resampler
	instead of Fir_Resampler.

	PC-FX: Save-game RAM is no longer stored compressed.

	PCE, PCE_FAST: BRAM save-game RAM is no longer stored compressed.

	Optimized special scalers slightly by not initializing dynamically allocated memory for pixel data, since it's overwritten in
	totality by the special scalers anyway.

	Added a parameter to MDFN_Surface()'s constructor to allow the creation of a surface without initializing its pixel
	data to zero.

	Added a kludge to try to clear all OpenGL backbuffers(when necessary) when an OpenGL implementation with forced
	triple-buffering is used.

	Changed code so that the video backbuffer won't be needlessly cleared due to OSD presence if the OSD is only
	displayed in portions of the screen that are overwritten each frame anyway during normal emulated video blitting.

February 18, 2013:
	When recording a QuickTime movie and the sound output rate is greater than 64000Hz, resample the audio stream written
	to the QuickTime file to 64000Hz, as the QuickTime format has issues with sound rates greater than 65535Hz.

February 14, 2013:
	Removed MDFND_KillThread().

	Worked around x87 excess-precision problems that were causing nonsensical error messages to be printed in some circumstances
	when parsing the settings file.  I'm so tempted to just compile with -mfpmath=sse when compiling for 32-bit x86...

	Fixed broken error messages printed out when an error occurs when loading the settings file.

	SexyAL:
		Changed DirectSound buffer writing algorithm to write up to an extra ~30ms of sound data beyond the
		effective buffer size on sound writes, and then synchronize(IE wait) to the effective buffer size 
		after the data is written, to slightly reduce the chance of sound buffer underruns and sound glitches on a loaded
		system.

		Changed DirectSound buffer underrun handling to better preserve the flow of emulated time.

		Use a dynamically-allocated buffer sized to fit 25ms of output-device-format audio as the sound conversion target
		buffer, rather than a statically-allocated fixed-size buffer that could only fit a very small amount of audio data
		(time-wise) at higher output sample rates.

		Added channel deinterleaving into the main audio format conversion code, and removed the driver-specific deinterleaving
		code from the "ALSA" and "JACK" driver code.

		Fixed a potential buffer overrun bug when converting 1-channel audio from one sample format to another(it's unlikely to
		have triggered a crash though, due to the size of the sound buffers used and doing the conversion in chunks).

		Added logic to the "SDL" and "JACK" output driver code so that the internal software buffers won't overflow if a
		large amount of data is passed to it at once(which wouldn't have happened anyway, since there's protection code
		in the SexyAL core to prevent that, but that protection code is in need of removal or updating).

January 27, 2013:
	Added a floating-point-related compiler code generation bug test to tests.cpp.

January 20, 2013:
	Changed endian detection in tremor header files to hopefully fix a compilation problem on Haiku.

January 19, 2013:
	SNES: Renamed some functions to fix a compilation problem on "ALT Linux".

	MD: Fixed broken default key assignments for emulated 3-button gamepads(for the A, B, and C buttons).

-- 0.9.28-WIP: --

January 13, 2013:
	PSX: Corrected lcm_width and lcm_height emulation module structure values(affects QuickTime movie recording).

	Fixed a bug in the netplay sound buffer underrun mitigation code that was causing it to only write 1/2 the data it should
	be writing when the emulated system has stereo sound output.

	Make netplay text line command processing only able to make the netplay text area visible or refresh its visibility, and not
	able to hide it; fixes a problem of the netplay text area disappearing before the command response text
	(like the disconnect message after /quit) can be seen.

	Un-documented Musepack support for ripped CD images as the feature doesn't get much testing, and the support will eventually
	be removed(someday ;)).

	Removed some ancient unused members of a debugger-related address space data structure.

	Fixed a major bug in the CD image audio decoding code that broke repeated playback of
	CD audio tracks that are encoded in files handled by libsndfile(e.g. FLAC, WAV), although it may not have affected all
	formats, the problem was noted to occur with FLAC at least.
	(The bug is a regression apparently introduced in 0.9.25-WIP)

January 12, 2013:
	PCE_FAST: Fixed some problems with the 8bpp palette generation routine.

	Don't compile with -ffast-math anymore, as it was noted to mess up the NES sound resampler code when
	__attribute__((cold)) was used on the filter class constructor, to the extent that it was clearly audible.

January 10, 2013:
	Don't needlessly clear the software video buffers to black when changing video modes; fixes the problem of the screen going
	black when in frame advance mode and toggling fullscreen.

January 8, 2013:
	Fixed a crash(due to a buffer overflow) in Mednafen's test CD-DA player when sound is disabled.

	Fixed recording of QuickTime movies when sound is disabled(it was producing unplayably broken QuickTime files before).

	PSX: Added a pseudorandom component to command processing and seek timing, to prevent a lockup in "Legend of Dragoon".

January 6, 2013:
	NES, PCE_FAST: Made limited use of MDFN_COLD.

	Added "MDFN_COLD" define, expanding to "__attribute__((cold))" on sufficiently-recent versions of gcc.

	NES, PCE_FAST: Implemented 8-bit rendering internally(for ports, not used by Mednafen proper), using static(in the sense
	that the palettes won't change while emulation is in progress) palettes.  The limitations of palettized 8bpp don't
	really affect the NES too much in practice, except for at least one homebrew demo.  The PC Engine, on the other hand, is
	a different story...

January 5, 2013:
	PC-FX, VB, PSX: Fixed debugger trace log PC address recording.

	VB: Corrected (lack of) disassembly of "di" and "ei" instructions.

	PC-FX: Fixed broken VDC-A/VDC-B VRAM read/write aux debugger breakpoint support.

	PC-FX: Fixed debugger's graphics viewer weirdness when viewing transparent KING BG pixels(by forcing them to black).

	PC-FX: Fixed totally broken VDC VRAM debugger memory editor functionality

January 4, 2013:
	Only rebuild and re-run the 68K core generator program when necessary, hopefully fixing one big problem when doing
	a pure cross-compiled build.

January 3, 2013:
	Added "SABR"( http://board.byuu.org/viewtopic.php?f=3&t=3416 ) pixel shader, as an option for the *.pixshader settings.

December 24, 2012:
	Added "WYSIWYG"-style(except for the "overlay" video.driver) scaled, filtered, maimed, diced, and so forth screen snapshots,
	taken with the SHIFT+F9 key

	Marked "Insert/Eject disk/disc" key function assigned to key F8 as being "dangerous" and subject to the delay specified by
	the "ckdelay" setting, since many games respond very poorly to the disk/disc being ejected in the middle of a disc/disk
	operation.

December 23, 2012:
	Simplified(less multithreaded message moving madness) and moved some driver-side netplay code into the Mednafen core.

-- 0.9.27-WIP: --

December 20, 2012:
	Removed some old unused code from the memory debugger.

	PSX: The debugger's disassembler will now pull instructions from the instruction cache, if it's valid(and fall back
	to the memory map data if it's not).

	NES: Fixed a bug in the FDS state loading routine that could cause sound issues(wrong volume of FDS sound channel).

	NES: Replaced a floating-point filter used when expansion sound is in use with a 64-bit fixed-point integer math filter,
	to fix a problem of massive performance degradation in some circumstances(probably due to denormals).

	NES: Fixed a bug that was causing a crash when Game Genie emulation was enabled while trying to emulate an FDS game.

	Don't make use of errno in FileWrapper::read when handling an unexpected EOF.

	NES, SNES: Replaced usage of stdio file access with FileStream usage.

December 19, 2012:
	Fixed a startup multithreading race condition with QuickTime and WAV file recording.

	PC-FX: Resolved a few compiler warnings.

	Replaced usage of stdio file access with FileStream usage in:
		Memory debugger.
		NGP FLASH memory saving/loading routines.

December 17, 2012:
	NES: Added setting "nes.correct_aspect".

	Attempt to open a Linux (joystick) event device read-only if opening it for read+write fails, so at least some of the
	enhanced functionality will be available on Linux distributions with partially broken device permissions.

December 16, 2012:
	PSX: Run EXE-loading MIPS binary code from a cacheable segment so it doesn't take so long to run.

December 15, 2012:
	SNES: Changed frame/system synchronization point logic, to reduce input latency by 1 video frame(~17ms).

	SNES: The setting "snes.correct_aspect" setting now supports the unique PAL aspect ratio with PAL games(rather than just correcting the
	aspect ratio per NTSC as before)

	SNES: Fixed a bug that was causing distorted vertical scaling with PAL games.

December 12, 2012:
	PSX: Improved CDC "ID" command emulation, fixes a problem with music in "WipEout 3".

	PSX: Changed how end-of-disc is handled while CD-DA is playing, per tests on a PS1; fixes a major problem with
	"Wu-Tang - Shaolin Style" during its startup.

December 11, 2012:
	PSX: Added a kludge to the CDC logical seek emulation code to fix the problem of missing music in "Gran Turismo 1".

	PSX: More DMA emulation revising.

December 10, 2012:
	PSX: Force DMA channel 6's channel control register bit1 to 1, per tests on a PS1.

December 9, 2012:
	PSX: Added use of MDFN_LIKELY() and MDFN_UNLIKELY() to the CPU core.

	Added MDFN_LIKELY() and MDFN_UNLIKELY() macros to provide crude branch prediction hints to the compiler.

	PSX: Improved DMA controller emulation, per tests on a PS1 and nocash documentation.  Fixes major problems with "Final Fantasy 7",
	"Final Fantasy 9", "Chrono Cross", "Legacy of Kain - Soul Reaver", and "Dragon Quest 7".

December 8, 2012:
	PSX: Added preliminary instruction cache emulation, fixes problems with "Formula One 99", "Formula One 2000", and "Formula One 2001".

	PSX: Corrected the value in the CPU product ID register.

December 5, 2012:
	PSX: Improved GPU info control port command emulation, per tests on a PS1.

	PSX: Reset more GPU state on software(via control port) reset, per tests on a PS1.

December 2, 2012:
	PSX: Initialize NTSC vertical and horizontal GPU display timings properly on software reset(via the GPU control port),
	per tests on a PS1(the horizontal timings might not be 100% correct, but they probably are).

	PSX: Increased the amount of NTSC horizontal overscan shown.

	PSX: Revamped GPU vertical display timing model, per tests on a PS1(the old model was Quite Wrong), and made the visible 
	vertical 240-pixel "viewport" match standard PS1 NTSC game vertical timings.

	PSX: Ignore lower bit of the GPU framebuffer X readout coordinate, per tests on a PS1.

	Made CUE sheet parser slightly stricter.

	Added setting, "cd.image_memcache", default value of "0", that when enabled will cause any referenced data files in CUE and
	TOC sheets to be loaded entirely into memory on startup, and cause the non-multithreaded CD reader interface to be used
	rather than the reader interface that uses an additional thread, for that emulated CD.

November 16, 2012:
	Replaced various instances of "__attribute__((unused))" with MDFN_NOWARN_UNUSED, a macro defined in types.h.

	Removed nonutilized file "git-virtb.h".

November 13, 2012:
	PCE_FAST: Comment out a debug print statement in the CPU emulation core.

	PCE_FAST: Fixed a heap overflow bug when loading excessively large ROM images.

November 6, 2012:
	Fixed a compiler warning in the Linux joystick code that could hypothetically be treated as an error by some compiler(configurations).

	In the Linux joystick code, Directly include <linux/input.h> instead of relying on it being included by <linux/joystick.h>.

November 5, 2012:
	Removed internal input button data encoding method "IDIT_BUTTON_BYTE", as the sole user of it(Family Keyboard) has been changed
	to not use it, and it is wasteful(especially with netplay).

	NES: Simplified Family Keyboard emulation, and compacted the key state.

	NES: Removed unused members from emulated input device definition structures.

November 4, 2012:
	Don't error out if the corresponding evdev to a jsdev device can't be opened, and instead rely
	on legacy jsdev functionality only, as Mednafen versions prior to 0.9.25-WIP would.

November 3, 2012:
	The "SDL" audio driver/output method now respects the "sound.period_time" setting.

November 2, 2012:
	PCE: Fixed a rather obvious major problem with the (incomplete/preliminary) MCGenjin emulation code.

	Added missing sizeof(RAWINPUTDEVICELIST) parameter to a GetRawInputDeviceList() call in the Win32 DirectX joystick code.  It's
	probably not strictly necessary now when viewed in context, but may be in the future if Microsoft does something weird, which Microsoft
	tends to do, so better safe than sorry.  Thanks to zeromus for pointing it out.

October 28, 2012:
	Fixed typos that broke compilation without internal CJK fonts.  Thanks to zeromus for pointing it out.

October 25, 2012:
	VB: Completely removed the deprecated and disabled code for support for ".bin" file extension.

	NES: Added support for iNES mapper 37.

October 24, 2012:
	NES: Changed filter parameters for a "nes.soundq" setting of "-2", increasing the computational complexity slightly, so that
	games like "Solstice" and "Mega Man 2" don't sound like whining messes.

October 19, 2012:
	Cleaned up TODO file a bit, migrating some of the useful data into the general documentation.

	PCE_FAST: Brought aspect ratio correction in line with the "pce" module(which is about what it should be).

-- 0.9.26-WIP: --

October 13, 2012:
	PSX: Handle non-word-aligned timer port reads and writes, rather than triggering an assert().  Also, a warning message is
	now printed if a game tries to read from timer open bus space, rather than an assert() being triggered.

	More C++11 warning fixes.

October 12, 2012:
	NES: Added emulation of iNES mapper 101.

October 11, 2012:
	PSX: Added a "Dance Pad" emulated device, that uses mostly the same code as the "Gamepad" device, but doesn't provide
	access to the shoulder buttons, and allows for opposing D-pad directions to be pressed simultaneously.

	PSX: Improved emulation of bit15 of the SPU control register; fixes problems with "Dance Dance Revolution",
	"Medal of Honor", "Madden NFL 2003", "Fuuraiki", and "The Misadventures of Tron Bonne".

October 10, 2012:
	PSX: Fixed a bug that could cause an emulator crash if the game crashed and tried to execute code in the last 64KiB of the
	CPU logical address space.

-- 0.9.25-WIP: --

October 9, 2012:
	Fixed a problem of usage of uninitialized memory in a startup function in drivers/input.cpp.

October 8, 2012:
	PSX: Tweaked GunCon hit detection, to improve menu behavior in games like "Point Blank 2".

	PSX: Reduced the penalty time required to resume from a Pause state to the best-case observed times(for 1x and 2x) on a PS1;
	more accurate modeling will need to take into account the time passed since the Pause command among other things(TODO for
	the future maybe, though the relationship between time passed and time to resume from a Pause state is a bit...wonky).

	PSX: Pause command completion time is now more accurate, per tests on a PS1.

October 7, 2012:
	PSX: Changed conditions under which "GetLocL" fails, per limited tests on a PS1.  Fixed a game-breaking lockup in "Star Ixiom".

	PSX: Added CDC "Standby" command and status emulation, fixes a game-breaking lockup in "Philosoma".

October 6, 2012:
	PSX: Don't run DMA channel 1 unless there really is data available from the MDEC; fixes partially-broken FMV in "Rayman".

October 5, 2012:
	PSX: DMA, and GPU FIFO emulation tweaks, to fix a regression in "Legacy of Kain - Soul Reaver"(the game does something fairly
	unique; it has a transfer length of 0x10 in some linked-list headers).

	PSX: Increased base cycle usage counts for polygon commands, per tests on a PS1.

	PSX: Improved GPU FIFO behavior, based on tests on a PS1.  The GPU on an actual PS1 appears(more of a hypothesis than anything, based
	on limited data) to have a contention or dependency system with different functional units that have access to the FIFO; the changes
	here just simulate some of its less-computationally-expensive characteristics in regards to GPU status bits and
	gross/rough timing.

September 30, 2012:
	Fixed numerous code constructs that caused errors and/or warnings when compiling for the C++11 standard.

September 29, 2012:
	PSX: Improved reliability of the Konami Justifier simulated offscreen shot process.

	PSX: More event handling tweaks.

September 28, 2012:
	PSX: Added experimental emulation of the DREAD Konami Justifier.  This light gun makes tears of pain flow in a torrent.

	PSX: Added partial emulation of some esoteric timer features, though what was added is probably not totally correct.

	PSX: Altered the global event system to use a sorted doubly-linked list, to allow for more precise timing of events
	in relation of one sub-device/chip to another.

September 27, 2012:
	Added code to allow CD image file data to be entirely loaded into memory, though the code is not used as such at current.

	SNES: Added boolean setting "snes.correct_aspect", default value of "0"(preserving previous behavior).

	PSX: Added additional heuristics for determining game region; fixes misdetection of the region for the North American release
	of "Wing Commander IV".

September 25, 2012:
	PSX: Tweaked GunCon x coordinate scaling.

	Changed absolute mouse x and y coordinate passing from driver->core to be in 1.15.16 fixed point format(previously
	simple integers), to avoid excess precision loss when scaling the coordinates from viewport dimensions
	to nominal_width and nominal_height.

September 24, 2012:
	PSX: Added preliminary GunCon emulation.

	Genesis: Adjusted aspect ratio slightly.

	PSX: Adjusted NTSC aspect ratio slightly.

	PSX: Reduced internal frame buffer width by 1/4(reduces memory usage).

	PSX: When playing a PSF, virtual input(gamepad, etc.) devices are no longer emulated as being connected.

	The CUE sheet reader will now seek past a UTF-8 BOM at the beginning of a CUE sheet if present(and print an error/warning
	message).

	Fixed resource leakage issue when CUE/TOC sheet loading aborts due to an error.

September 20, 2012:
	Removed the rawer parts of a half-baked idea implemented long ago in the virtual input device abstraction structures, and
	removed some extremely poorly-scaling-with-increased-emulated-system-count-and-emulated-device-count code that said
	half-baked functionality required, shaving a considerable amount off Mednafen's startup time
	(though probably not really noticeable on faster CPUs).

	Modified settings loading and saving code to use new FileStream functionality.

September 18, 2012:
	Modified the CD image reading and "AudioReader" code(used for reading MS WAV/Vorbis/MusePack/etc) to operate on a
	"Stream" object instead of using stdio functions on "FILE", in regards to files used for track data.  This allows MemoryStream
	to be used very easily to preload the track file data into memory, which may be put to use in the future.

	Implemented FileStream, derived from Stream, as a quick wrapper around FileWrapper(HAH).

September 15, 2012:
	Map SDL hats to buttons instead of axes in the new joystick interface abstraction code, to prevent loss of information.

September 8, 2012:
	Entered more information into the possible values enum struct for the *.debugger.disfontsize setting(s) so that the possible values
	will be in the autogenerated documentation.

September 7, 2012:
	Added a const char* "Description" member to the "InputDeviceInfoStruct", and did some minor internal plumbing so it will be propagated to the
	automatically-generated documentation if non-NULL.  (For the possibility of more verbose emulated input device information for the
	*.input.port* settings in the documentation)

September 6, 2012:
	Increased size of line buffer used in settings file reading.

	Changed input configuration evaluation code to allow multiple physical mappings to a single emulated analog button/axis to work properly(it is
	somewhat useful for neGcon emulation).

	PSX: Added neGcon emulation.

September 5, 2012:
	Added setting "input.joystick.global_focus".

	Renamed settings:
 		autofirefreq -> input.autofirefreq
 		analogthreshold -> input.joystick.axis_threshold
 	 	ckdelay -> input.ckdelay

September 3, 2012:
	PSX: Don't mask the address specified by the memcard write command, but instead signal an error condition if the address is invalid, per
	tests on a PS1.

September 1, 2012:
	Reduced memory usage of internal runtime text rendering data structures by about 2.4MB for 64-bit builds, and about 0.8MB for 32-bit builds.

August 31, 2012:
	Only destroy and recreate the emulated device and device state on the port being altered with CTRL+SHIFT+[n], rather than all ports, to
	avoid usability problems with more complex input devices(like on the PS1 for instance).

	Fixed a longstanding bug that caused input configuration data to be lost if you changed the device on a port with CTRL+SHIFT+[n] after
	configuring input without an emulator exit in-between.

August somethingth, 2012:
	PSX: Added DualShock emulation, complete with Analog mode toggle button emulation.

	Revamped physical joystick/gamepad support:
		Added native code targeting DirectInput(5.0) and XInput on MS Windows, and jsdev and evdev on Linux.

		Added support for rumble on Linux and XInput devices on MS Windows.

		Refactored and recoded much of the joystick input configuration handling code.

		Added kludgey support for handling physical joystick analog buttons in the input configuration process without it freaking out:
		  Note: The process described below should NOT be necessary if you're using an XBox 360/XInput controller under MS Windows.  If
		  you're using such a controller under a different operating system, or using a non-XBox 360/non-XInput controller, and it has
		  analog buttons, then you should perform the process as described below.

		  Also note that the process is only necessary when you're configuring inputs, and not during "normal" gameplay/usage.

		  Twirl all sticks and D-pads and press all analog buttons on any physical gamepads/joysticks with analog buttons you want
		  to use in the input configuration process, then press F3.  Then, configure input as normal.  The detected analog buttons
		  will be recognized during input configuration until Mednafen exits;  if you exit Mednafen and restart, and want to configure
		  input devices again, you'll need to repeat the twirling-pressing-F3 process again).

August 12, 2012:
	Fixed a bug that was causing the FPS display to be missing if the "overlay" video driver was used in combination with PC Engine emulation.

	Removed the last vestiges of the driver-side handling of the long since removed/replaced PC-FX multi-resolution-frame multi-layer alpha
	blending method.

August 11, 2012:
	Added setting "osd.alpha_blend", default value of "1", that controls enabling of OSD alpha-channel blending.  Set it to "0" for
	a speedup when using the "sdl" video.driver.

	Software("sdl" video driver) render fixes/improvements:
		Improved precision and rounding behavior with the fixed-point math used for scanline effects and non-integer scaling.

		Implemented alpha blending for all OSD elements except the FPS display.

		Added support for the scanlines effect when the screen is rotated(via ALT+O).

		Fixed a bug that caused an enabled scanline effect to be missing when a special scaler(hq2x, hq3x, scale2x, etc) is used
		and no post-special-scaler scaling is necessary.

August 10, 2012:
	Implemented minor optimizations to the "sdl" "video.driver" scanlines effect code.

	Changed a ton of driver-side OSD rendering code to use MDFN_Surface instead of SDL_Surface.

August 1, 2012:
	Fixed port numbering(from 0-based to 1-based) in the error message display after trying to configure buttons for a nonexistent virtual device/port.

June 14, 2012:
	Added a non-threaded alternative implementation of CDIF(currently unused, but will be useful if we ever target an OS without multithreading
	capabilities).

July 13, 2012:
	Lynx: Made reporting of errors during game load to be more verbose.

	GB: Error out if a ROM image to be loaded is less than 512 bytes in size.

	GB: Don't use TestMagic() in Load(), and don't return -1.  (So that -force_module gb will work as expected)

-- 0.9.24-WIP: --

July 12, 2012:
	Only use "AI_ADDRCONFIG" flag with getaddrinfo() hints if it's available; fixes a compilation error on OpenBSD.

	Disallow manual save states with "snes" module during netplay, since the bsnes save state code alters the current state on save state,
	which would cause desynchs, or annoyances and extra bandwidth usage to work around the issue, in a netplay environment.

July 9, 2012:
	Netplay:
		Removed setting "netplay.merge", since similar functionality can be obtained by issuing one or more of the newly-added commands.

		Added /take, /dupe, and /drop commands.

July 8, 2012:
	PSX: Implemented CD-XA playback current file and channel matching(per very limited tests on a real PS1), fixes broken speech in
	"Yarudora Series Vol.1 - Double Cast".

	Netplay:
		BSD/POSIX: Only use MSG_NOSIGNAL if it is defined; fixes compilation issue on Mac OS X.  And don't use MSG_NOSIGNAL
		for recv(), only send().

		BSD/POSIX: Use socket option "SO_NOSIGPIPE", if available.

		Handle a recv() return value of zero properly(or at least semi-properly :b), to prevent a lockup in certain situations.

		Added player /swap command(requires mednafen-server 0.5.0).

July 6, 2012:
	SMS: Added "Power Strike II" to the internal game database, to force PAL mode, per suggestion from "megadriver".

-- 0.9.23-WIP: --

July 5, 2012:
	PSX: Fixed a very small memory leak in frontio.cpp.

	Updated internal copy of miniLZO from version 2.01 to version 2.06.

July 4, 2012:
	SNES: Removed some debug printf()'s that got left in the code from the work a few days ago.

	Networking:
		Don't pass a NULL pointer to the WSAIoctl() output length count pointer argument.

		More verbose error reporting with Winsock2 network code.

		Break out of the name resolution loop so that we don't erroneously connect() multiple times.

		Fixed some socket leaks on error bugs.

	PSX: Use only one 9-bit SPU RAM write address offset counter for voices 1 and 3, and CD-audio writing to SPU RAM, and never reset it during
	runtime(sans reset/power condition, of course); fixes audio glitches with the guitar sounds in "Um Jammer Lammy".

July 3, 2012:
	Wrote netplay code directly targeting BSD/POSIX and Winsock2 APIs, and removed SDL_net support.  This change also brings support
	for IPv6.

July 2, 2012:
	/server and /connect no longer accept "[HOST]:[PORT]" form, only "[HOST] [PORT]".

	/server and/or /connect with no arguments in the netplay console will now connect to the server as specified by "netplay.host" instead
	of trying to connect to an empty string and trashing the "netplay.host" setting in the process.

July 1, 2012:
	Fixed various internal problems with the netplay user interface code(memory leaks, using free()'d memory, definite multithreading unsafety,
	/quit not working properly, trying to access the network when the connection is closed, etc.).

June 30, 2012:
	Further disable state rewinding functionality during netplay.

	SNES: Backported(sort of) a fix to the serializer code that was breaking 64-bit integer restoring.

June 29, 2012:
	SNES: Change various instances of "if(scheduler.sync == Scheduler::SyncAll)" to "while(scheduler.sync == Scheduler::SyncAll)" in the
	bsnes code, for better save state behavior.

	SNES: Run S-SMP more tightly in sync with S-CPU, to further reduce frame timing jitter.

June 27, 2012:
	Updated netplay protocol to increase the maximum number of allowed controllers per game from 8 to 16.

June 26, 2012:
	Changed save-state header magic from the 16-bytes MEDNAFENSVESTATE to the 8-bytes MDFNSVST, to make room for a 64-bit creation
	timestamp(which will be used in the future).
	The old header magic is still recognized, for backwards compatibility.

June 25, 2012:
	Cleaned up and remove VLA usage from core netplay code.

June 24, 2012:
	NES: Fixed an annoying old compiler warning in "ines.cpp".

	SNES: Disable some warnings to keep compilation of the bsnes code from spamming the screen with warnings.

	SNES: Implemented kludges to prevent sound clicks and scratchiness when state rewinding functionality is enabled(but it's still plenty
	scratchy when actually rewinding ;)).  A more proper fix does not seem possible, due to the way bsnes works.

	SNES: Modified bsnes core to prevent S-SMP(and S-DSP) from running as far ahead of the CPU as it did before, to reduce timing jitter.
	This change has a small negative speed impact.

June 23, 2012:
	Tidied up netplay join/leave messages.

May 30, 2012:
	Fall back to nearest-neighbor scaling when blitting a screen image segment with a height less than 2(or less than 4, for scale4x); fixes an
	assert-triggered "crash" when using scale2x with PSX emulation(and possibly Genesis and PC Engine emulation with some games, as well).

May 29, 2012:
	PSX: Fixed a stupid bug in the FB fill GPU command; the height iteration variable was being tested in respect to drawability(interlace mode,
	dfe, etc.), rather than the actual destination Y coordinate into GPU RAM.  Fixes major graphical problems with "Dead or Alive".

May 28, 2012:
	PSX: Altered data structures to avoid instantiating a templated struct with 0-size arrays.

May 26, 2012:
	PSX: The Pause CDC command will "complete" much, much faster now if the drive is already paused.  Fixes the lack of music after pausing
	and unpausing in "Dead or Alive".

	PSX:  Corrected GPU line draw command coordinate precision handling, in regards to x,y drawing offset, per tests on a PS1; fixes a
	flickering line issue in "Triple Play 97".

May 25, 2012:
	PC-FX: QuickTime movie recording will now (indirectly) take the "pcfx.high_dotclock_width" setting into account, to reduce the
	size of the raw recorded image data when the setting is set to "256".  (Note that this setting should still not be changed from the default
	of "1024", unless you understand the graphical degradation smaller setting values will cause in some games.)

	MD: Fixed a bug that was causing the QuickTime movie recording code to instantly crash right after emulator startup with MD/Genesis emulation.

May 24, 2012:
	PCE_FAST: Some 32-bit x86 inline assembly was listing "rbp" in the clobber list, when it should have been listing "ebp".  Fixed.

May 23, 2012:
	PSX: Improved the emulation accuracy of GPU texture windows(and made the texture window code much simpler), per tests on a PS1.

May 23, 2012:
	PSX: Mask sprite width and height for custom/variable-sized GPU sprites against 1023 and 511, respectively, per tests on a PS1.

-- 0.9.22-WIP: --

May 8, 2012:
	PC-FX: Increased the minimum allowable value for the "pcfx.cdspeed" setting from "1" to "2".

	Replaced internal module graphics layer toggling code with absolute graphics layer enable mask setting code.

May 5, 2012:
	NGP: Reduced the size of the noise channel LFSR from 16-bits to 15-bits, per mic_'s suggestion(and test program and recorded sound sample).

May 4, 2012:
	Fixed broken support for "CTRL" modifier when configuring command keys/hotkeys(this doesn't affect hardcoded default key assignments,
	or manual configuration file changes to use the ctrl modifier, both of which already worked fine, it's just the in-Mednafen configuration
	process that was broken in regards to the CTRL modifier key).

May 2, 2012:
	PSX: Fixed SPU handling of voice pitches > 0x3FFF; fixes broken sound effects in "Tales of Phantasia", and likely other games
	as well.  Thanks to "sparklewind" for bringing the bug to my attention, and recording sound samples of the sound effects from a PS1.

April 30, 2012:
	MD: Reworked YM2612 LFO PM/FM emulation based on notes from Nemesis.  Changed the LFO AM waveform start phase so
	that the first "sample" is 0; though the waveform probably needs to be changed from sine to triangle.  Corrected(I hope. :b) LFO AM depth
	setting 0x1 shift factor.

April 29, 2012:
	PSX: Increased CD audio buffering slightly, and flush buffers on Pause, to reduce the number of voice audio glitches in "Tales of Destiny 2".

April 28, 2012:
        PSX: Began adding save state support.

	Fixed a regression in the deinterlacer code, from the April 20 fix, that was causing the first entry in a valid line widths array
	to be trashed.

April 26, 2012:
	NGP: Got rid of various truncations of CPU cycle counts to 8-bits(they're still ultimately truncated to 8-bit, but only in one place now, so
	that it can easily be removed in the future when the CPU timing mess is resolved).

	PCE: Added direct BRAM editing capability to the debugger's memory editor.

	PCE: Fixed broken direct main RAM viewing and editing in the debugger's memory editor.

April 23, 2012:
	MD: Added support for region overrides in the internal database(though no entries that override region are present yet).

	MD: Changed supported region(as indicated by the game's embedded header) preference order to prefer domestic NTSC over overseas PAL.

	MD: Removed an erroneously superfluous interrupt pending check in the 68K emulator core(which should have been removed a long time ago,
	since it is apparently a leftover of the original C68K timing model).

April 21, 2012:
	MD: The upper 8 and lower 8 horizontal lines on the screen are now rendered as the border color in 224 height mode; fixes graphical glitches
	in "Micro Machines", possibly other games.

	MD: Corrected VDP vblank flag set and clear time, fixes sprite glitches in X-Men 2.

April 20, 2012:
	Fixed a bug in the system-independent deinterlacing code that was causing graphical glitches with Genesis interlaced mode under
	certain conditions

	MD: Reset-button-triggered reset no longer resets VDP state, fixes major graphical corruption with Bonkers after such a reset.

April 19, 2012:
	MD: If the YM2612 channel "algorithm" has changed, start the attack phase on the next key on from maximum attenuation, to ostensibly
	fix a broken sound effect in Ecco the Dolphin 2(Tides of Time), per the Gens EG implementation; this needs to be tested on an actual
	Genesis, which will have to wait until I'm able to obtain a Genesis flash cart.

April 18, 2012:
	MD: Fixed the YM2612 save state code to work again(after the recent changes broke it); however, the recent changes have broken
	save state compatibility with save states from 0.9.21-WIP and earlier, and that isn't going to be "fixed".

	MD: Fixed a major problem with the new EG implementation that was causing significant timbre and volume issues, due to an erroneous
	assumption(from PS1 emulation work) of how the attack phase entry works(thanks to a terse old forum post from Steve Snake
	for clarifying the issue).

April 16, 2012:
	MD: Tweaked the sin and exp table algorithms to more or less match those described at https://docs.google.com/View?docid=dd8kqn9f_13cqjkf4gp
	(different chip, but at least the logsin table is supposed to be the same as the YM2612).  The LFO tables still need to be worked on, though.

	MD: Fixed a bug(relating to ADSR phase skipping) in the new EG code that caused some broken music in Flashback.

April 15, 2012:
	MD: Fixed CSM support(untested) in YM2612 emulator.

	MD: Rewrote YM2612 emulator EG portion, based on information from Nemesis and MAME/Genesis Plus GX.  (CSM support was broken in the process, and will
	need to be fixed, along with some other code cleanups)

	MD: Simulated FIFO bits in the status register were only being set(to 1), and never cleared.  Fixed.  (Mega Turrican actually checks the
	FIFO full bit, unlike many other games).

April 14, 2012:
	MD: Updated Z80 core to latest FUSE SVN revision(though it required heavy modification for inclusion in Mednafen, so it's possible
	something Z80-emulation-related could have broken in the process); the update fixes some undocumented flag results, and changes/fixes timing
	for some instructions.

	MD: Implemented very crude VDP FIFO timing simulation, fixes issues with "Soldiers of Fortune" and "Fatal Rewind".

	MD: Removed old, questionable YM2612 hack, fixes some missing sound effects in "Williams Arcade's Greatest Hits".

April 13, 2012:
	MD: Changed VDP line timing based on information in Genesis Plus GX, "Bram Stoker's Dracula" is now playable.

	MD: Reset(via F10 button) will now reset less state than power off/on "reset", to allow "X-Men" to progress to the final level.

	MD: Revamped 68K emulator timing, for more versatility and better timing granularity(exact timing not so much, at least not yet...) at the cost of
	increased CPU usage.

	MD: Fixed a bug in the VDP DMA fill and VDP DMA VRAM copy timing calculations, fixes graphical glitches in a few games.

	MD: Applied Yabause revision 1972 C68K timing fix patch.

April 11, 2012:
	MD: Fixed a few(but there are many left :() YM2612 emulator bugs, based on information at http://gendev.spritesmind.net/forum/viewtopic.php?t=386

April 10, 2012:
	PSX: Unmapped entries in the CPU emulator's fast instruction fetch memory map are now filled with a pointer to a dummy page, to prevent
	a game's crash from crashing Mednafen as a whole.

	PSX: Removed unused partially-implemented CPU trampoline code and data, to reduce RAM usage and clean up code a bit(it was originally
	to ensure stability with a PC-as-a-pointer style CPU optimization, but that optimization was never implemented due to being in conflict
	with branch delay slot emulation).

April 9, 2012:
	PSX: Added main RAM mirror addresses to the fast instruction fetch memory map.

	PSX: Added various coprocessor-related instructions to the disassembler.

	Added logical AND mode command key functionality(where all buttons/keys configured to the command are required to be in a pressed state
	simultaneously for the command to occur), on a per-command basis(commands can be configured in this mode with SHIFT+F2).

April 8, 2012:
	Fixed transposed memset() value and length arguments in cdromif.cpp, thanks to skitt for the notice.

	PSX: Fixed triangle coordinate precision in relation to draw offset based on more tests, fixes flickering graphical glitches on the
	right side of the screen in "Quake II", probably other games as well.

April 7, 2012:
	PSX: Added L3 and R3 button emulation for emulated Dual Analog gamepads.

-- 0.9.21-WIP: --

March 30, 2012:
	Updated the internal copy of libmpcdec to r475(which supports SV8, whereas the version in Mednafen previously only supported up to
	SV7), and updated the CD audio file reading code to use the new API, fixing a few problems(with variable initialization, and seeking)
	in the process.

	SNES, PSX: Moved cleanup/deallocation code into a separate Cleanup() function, and call Cleanup() instead of CloseGame() in case of
	error during file loading, to prevent nonvolatile saved memory deletion in case of error.

	SNES: 8MiB of memory is now allocated for the ROM image buffer passed to bsnes, regardless of actual ROM image size, to work
	around potential design flaws in the bsnes cart loading code to prevent emulator crashes with malformed or corrupted ROM images.

	SNES: Added an 8MiB limit maximum ROM image size limit.

March 29, 2012:
	Updated the internal copy of tremor to SVN revision 18222, and imported and merged in libogg 1.3.0, since SVN tremor
	no longer has its own libogg implementation(and hasn't for some time apparently!).

	PSX: Added draw time penalty for texturing on polygons.

	SNES: Began adding SNSF support.

	SNES: Added default mouse button assignments to emulated mice, and default key assignments to the emulated gamepad on the first
	port.

March 28, 2012:
	Fixed a big bug in the CUE sheet parser that caused wrong track addresses/LBAs with multi-data/bin-file CD rips where the pregap
	data is included in the binary image via "INDEX 00/INDEX 01" directives in the CUE sheet(which is a common form for PSX CD rips).

	PSX: Added draw time penalty for goraud/gradient polygon shading.

	PSX: Reduced draw time penalty for having transparency enabled, and added a draw time penalty for mask evaluation, per a quick,
	noncomprehensive test on a PS1(more thorough testing in the future is warranted) on a flat-shaded triangle.

	PSX: Reduced triangle coordinate integer component precision, and reduced the maximum allowed triangle height to 512; fixes some graphical
	glitches in "Fighting Force 2".

	PSX: Added SPU RAM editing(as opposed to simply viewing, as before) capability to the debugger.

	PSX: Noise mode being enabled on a voice will now suppress ADPCM block flags effecting an ADSR release, per tests on a PS1.

March 27, 2012:
	PSX: Revamped SPU IRQ to fix lockups in "Eithea".  Tests need to be run on a PS1 to make sure the fix is correct, but the fix is derived
	from plausible hypothetical behavior.

	PSX: Added emulation of some bits of the SPU status "register" at 0x1F801DAE.

March 21, 2012:
	PSX: Brought SPU DMA timing closer to what it is on actual PS1 in game usage cases(more accurate timing than this will require significantly
	more SPU emulation work).  This should fix sound glitches in the "Legend of Mana" FMV sequences.

March 20, 2012:
	PSX: Reverse OT clear DMA is now emulated as halting the CPU, per tests on a PS1(though further tests are needed, the DMA controller
	"halting" is likely more complex than simply halting the CPU unconditionally while the DMA runs; and even in a C program, the
	halting effect does not occur immediately, but is slightly delayed, which is not emulated).

	PSX: Improved CDC DMA timing slightly.

	PSX: Bit 28 of a channel control register is now cleared on DMA completion of that channel, per tests on a PS1.

March 19, 2012:
	PSX: Mute/Demute is now implemented for CD-XA playback as well as CD-DA playback.

	PSX: SPU control register bit14(mask 0x4000, the mute bit) no longer affects CD audio output, per a test on a PS1.

March 4, 2012:
	PSX: Added emulation of SPU registers available at [0x1F801E00, 0x1F801E80).

February 29, 2012:
	NGP, VB, GBA: Implemented minor optimizations for when running on PowerPC.

February 28, 2012:
	PSX: Added support for running on big-endian hosts, and added PowerPC-specific optimizations(AltiVec IDCT for MDEC,
	and load/store byte-reverse instructions via inline assembly for memory accesses).  A 1.42GHz PowerMac G4 system
	is more than fast enough to play PSFs(especially with the idle loop detection speed hack added earlier), but is much
	too slow to play games at full speed.

February 18, 2012:
	NES: Fixed Famicom Arkanoid controller emulation, thanks to raz0red for reporting that it was completely borked.

February 16, 2012:
	Fixed a compilation problem with gcc 4.7-prerelease, reported by belegdol.

Feburary 11, 2012:
	PSX: Fixed a mnemonic typo in the disassembler for "sltu", thanks to zeromus for reporting it.

February 6, 2012:
	PSX: Altered DMA abort behavior to try to prevent lockups in some games.

February 5, 2012:
	PSX: Fixed a potential buffer overflow crash when playing a PSF if the PSF tries to enable GPU video output.

	PSX: Added a simple idle loop detection speed hack to the CPU core, used only during PSF playback.

	PSX: Removed the InBDSlot variable, rolling its functionality into an interpretation of the lower 2 bits of the "new_PC_mask" 
	variable.

February 3, 2012:
	Fixed a spelling error in a 3D mode setting in vb/vb.cpp

	Added some missing typecasts in src/file.cpp.

January 31, 2012:
	Fixed a bug in the interpolation pixel shaders code that could cause a shader compilation error on some
	OpenGL implementations.

-- 0.9.19-WIP: --

January 28, 2012:
	Added workaround for questionable header changes with libcdio 0.83 and newer.

January 25, 2012:
	Fixed "x" and "y" <system>.videoip settings not working properly with screen rotation(though the fix is a bit
	convoluted, in the future it may make sense to completely re-evaluate how destination rectangles and rotation
	are done).

	Re-added "ipxnotysharper", "ipynotxsharper", and "ipsharper" pixel shader settings.

	Fixed interpolation-pixel-shader algorithm texture coordinate evaluation.

January 24, 2012:
	Re-added "ipxnoty" and "ipynotx" pixel shader settings, to compensate for the removal of the extended videoip settings.

	Fixed "x" and "y" <system>.videoip settings to work properly in full-screen mode.

	PSX: Added default mouse button assignments for emulated mice.

	PC-FX: Fixed a crash when selecting the "RAINBOW" layer in the debugger's graphics viewer.  (Note that viewing
	the RAINBOW layer via this manner is still not supported; IE there's just empty space when the layer is selected in the
	graphics viewer).

January 23, 2012:
	WonderSwan: Fixed a reset initialization bug(due to a design flaw) that was partially corrupting internal and
	external EEPROM.

	PSX: Added emulation of LWL and LWR load delays, and emulation of LWL and LWR diversion of the register writeback
	stage of a previous instruction's delayed load.

January 22, 2012:
	libcdio version information is now printed out on startup.

January 21, 2012:
	PSX: Added mouse emulation.

	Changed how physical mouse events are processed, removing a potential thread-safety issue with some SDL functions,
	and ensuring that a very quick mouse button press and release registers as pressed for at least 1 frame, as far
	as command processing and virtual input device emulation go.

January 20, 2012:
	PSX: Added default keyboard button assignments for emulated digital gamepad 1.

	PSX: Worked on multitap emulation some more.

	PSX: Corrected gamepad and memcard emulation, to only respond when the first communication byte is 0x01 or 0x81
	respectively, rather than masking the byte with 0x81 and then testing, which is apparently incorrect based on
	real system testing.

January 19, 2012:
	PSX: Began adding multitap emulation.

	Fixed broken emulated input device selection command keys for ports 6, 7, and 8

January 18, 2012:
	PSX: Front port I/O changes:
		Masked values written to control and mode registers to match tests on a real PS1.

		Corrected RxD bit status when no device is driving it(was 0, should be 1).

		Added emulation of DSR status bit to reads from the status register(though DSR emulation is totally kludgy
		at the moment, need to fix it up in the future).

		Added emulation of interrupt status bit to reads from the status register.

		Added emulation of memory card insertion detection bit, that is apparently set when the memory card receives
		power after being off, and is cleared by issuing a (successful?) write.

		Attempted memory card block reads from beyond the end of the memory card will now fail as tested(granted
		not extensively tested for multiple beyond-end address values) on a real PS1.

		The high byte of the read address specified in the memory card read command will now be echoed back in
		the following byte sent back to the PS1, as per tests on the real PS1(previously in Mednafen, that byte was
		just being sent as 0x00).

		The receive buffer byte is now duplicated across all bytes of multi-byte reads of the data port address,
		as on a real PS1.

		Began adding analog gamepad support; though, the current front port SIO device interface is a bit clunky,
		so probably no more emulated devices will be added until that can be improved.

	PSX: Removed asserts on MFC0 from a debug register; a warning message will still be printed if a debug register
	is written with MTC0, however.

	Fixed a bug that could cause an assert() to be thrown with small effective y-scale values on certain types of
	multires video frames, thanks to Speedvicio for reporting it.

January 17, 2012:
	PSX emulation module compilation is now enabled by default in the configure script.

	PC-FX: Fixed a lack of updating a cached copy of the debugger-editable KING register "ADPCMCTRL" on edit.

	Added a rudimentary test in the configure script to determine if "-fno-strict-overflow" or "-fwrapv" should be used
	(in regards to gcc 4.2.x generating bad code for -fno-strict-overflow).

	Updated list of gettext translateable source code files.

January 16, 2012:
	PSX: Fixed emulation of bit7 of SPU control register, it actually appears to control the reverb algorithm writing
	into the reverb work area, rather than setting the inputs to 0 as it was emulated before.  Fixes music corruption
	in "The Roots" demo, music playback in "Vib-Ribbon", and possibly minor sound glitches in other games as well.

	PSX: CD audio data is now written to SPU RAM without SPU output CD volume being applied, fixes course generation
	in "Vib-Ribbon".

	Implemented support for mapping command keys(hotkeys) to mouse buttons; it was partially implemented before,
	in that the command key configuration process allowed you to select mouse buttons for a command key, but the
	mouse buttons had no effect in actually triggering the command.

January 15, 2012:
	GB: Added GB system type selection via "gb.system_type" setting.  Sound emulation nuances have
	changed from the previous default, such that DMG games will select emulation of the DMG sound hardware whereas
	before they selected CGB sound hardware.  To achieve the previous behavior, set the "gb.system_type" setting to "cgb",
	though note that in a future version this setting may change color and palette selection as well.

January 13, 2012:
	Corrected a wrong argument type in an error reporting function in drivers/shader.cpp, which should fix compilation
	issues with certain OpenGL implementations.

	PSX: Removed erroneous coordinate check in line-drawing code that was preventing 1-pixel-long lines from
	being drawn, and fixed a divide-by-zero issue that removing the check caused.

	Port cache is now cleared on game close; has no practical effect on stock Mednafen, but needed for ports
	that allow for more than one game loading per instance, to prevent problems with netplay and state rewinding.

	PSX: Refined GPU status port bit28 emulation, per tests run on a 
	real system(it's a bit weird and inconsistent).

	PSX: GPU polylines now require at least one line segment(two vertices) to
	be specified before the termination code is honored, per tests on
	a real system.

January 12, 2012:
	PSX: Fixed a problem with shaded polyline end code evaluation, fixes startup lockup in "Codename: Tenka".

	PSX: Fixed GPU flipped sprite drawing, the starting coordinates were being set incorrectly as
	to how a real GPU apparently works(and how a real GPU apparently works is kind of wonky compared
	to sprite flipping on older consoles!).

	PSX: Sprites are no longer dithered, per test results run on the real thing(though only with commands
	0x64 through 0x67, it's possible that the others couuuuld be different, more tests will be run).  Fixes
	the motion-blurred running scene in the beginning of "Silent Hill".

January 11, 2012:
	PSX: Improved GPU FB Read, FB Write, FB Copy, and FB Fill command emulation(particularly coordinate and
	size masking; and doing mask bit handling for FB Copy, which fixes FF8 battle transitions), based on tests
	run on a real system.

January 8, 2012:
	PSX: Fixed IRQ idle and FIFO room bits, fixes graphical update issues with "The Roots" demo.

	PSX: Made OT clear DMA occur over time instead of instantly.

	Fixed a deinterlacer bug that would cause a stale field to be displayed for the first interlaced frame after a
	period of non-interlaced frames.

January 6, 2012:
	More build information is displayed on startup.

	Fixed a memory leak in the internal message display code.

January 5, 2012:
	Improved PAL region game support, and added rough region autodetection, with a BIOS filename setting for each supported
	region.

January 4, 2012:
	Fixed multiple issues with the signal handler.

January 3, 2012:
	Fixed temporal blur memory allocation that could lead to crashes with emulated systems that support
	interlaced video, it was only allocating for a fixed height of 256 when it should have been using the fb_height
	member of MDFNGameInfo.

	Fixed problems with the configure script that caused user-supplied CPPFLAGS to be ignored.

	The Win32 build is now compiled with gcc 4.5.4 20111030(prerelease), and compiled with gcc option "-mstackrealign".

December 30, 2011:
        PSX: Added emulation of coprocessor->CPU transfer delay slots, fixes
        graphical glitches in "Tekken 2".

        PSX: Fixed bug that was causing timer overflow flag to be set when it shouldn't be(when in target mode).

	PSX: GPU CLUT offset wrapping fixed(fixes "Next Tetris").

	PSX: Return interlaced mode field in bit 13 of GPU status port reads.

	PSX: Miscellaneous GPU emulation improvements relating to coordinate precision.

	PSX: Revamped GPU, SPU, and MDEC DMA, (and GPU command buffering), to run over time instead of all at once.

December 29, 2011:
	Lynx: Fixed EVERON detection emulation, and emulated a hardware bug regarding SCB data reading, the latter of which
	fixes a graphical glitch in "Joust".  Thanks to sage and LX.NET for information and patches.

December 21, 2011:
	PSX: Fixed a typo in the return value calculation for control command 0x10, fixes graphical glitches in
	"Xenogears".

December 19, 2011:
	PSX: Added backing variables/memory for memory accesses to 0x1f801000-0x1f801023, though their actual functionality isn't
	emulated yet.

	PSX: Added dummy SIO(rear serial port) emulation to fix a divide-by-zero crash in Wipeout.

	PSX: Altered ReadN and ReadS semantics, fixes a lockup in Suikoden II.

	PSX: CD sector error correction will no longer be attempted on mode 2 form 2 sectors, fixes data corruption and lockup
	issues with "Final Fantasy Tactics", "SaGa Frontier", and perhaps others.

December 18, 2011:
	PSX: Fixed a problem with line drawing gradient shading, fixes some glitches with lighting effects
	in "Quake II", "Need for Speed III", and probably other glitches in other games as well.

	PSX: Altered Mem->GPU DMA completion calculation to take into account the GPU's FIFO, though the FIFO simulation
	is rather crude; fixes various games that were flickering messes.

	PSX: Fixed FB write coordinate and size masking to not be braindead(it didn't allow 1024 width or 512 height,
	which obviously broke games).

December 17, 2011:
	PSX: Improved emulation of SPU control register bit 15, fixes sound effects and music glitches in "Viewpoint", "Mat
	Hoffman's Pro BMX", and likely other games as well(though "Hydro Thunder" still seems to have issues with
	garbage sound).

	PSX: Improved emulation of SPU control register bit 14.

December 16, 2011:
	SMS: Began work on fixing H-counter behavior.

December 15, 2011:
	PSX: Masked FB write coordinates and widths to the bare minimum; not sure if this is totally correct(need to run
	tests on the real thing), but it fixes a startup lockup in "Crash Team Racing".

	Revamped internal CD direct reading abstraction, and made several user-visible changes:
		Removed "cdrom.lec_eval" setting; it complicated internal design, and was a bad decision in the sense
		that it could promote distributing patches or CD rips that would likely not work properly when burned to
		an actual disc.

		Added more proper support for multi-disc CD games; see the CD-emulation section in the documentation
		for further details.

		Dropped support for physical CD drives that don't support MMC commands, don't support raw sector reading,
		and/or don't support raw subchannel reading.

December 7, 2011:
	Added experimental support for enabling linear interpolation on one axis only(via the <system>.videoip setting),
	that doesn't require FBOs or pixel shaders.

December 4, 2011:
	PSX: Corrected time of FB Y readout offset lower bit versus field bit setting, fixes startup freeze in 
	"X-Men: Mutant Academy".

	PSX: Made SPU IRQ emulation slightly more accurate.

December 3, 2011:
	PSX: Added a kludge to prevent the GPU from returning busy status on status port reads after DMA to the GPU
	     finishes its simulated run time, to fix major problems with the battles in "Valkyrie Profile".
   	     TODO: This kludge will be removed when more accurate DMA emulation is in place in the future.

	PSX: Reduced triangle vertex x,y coordinate integer precision, fixes missing level graphics in "Tony Hawk's
	Pro Skater 2".

December 2, 2011:
	PSX: Improved mask bit emulation, fixes text brightness issues in "Dragon Quest 4", and possibly other
	graphical issues in other games as well.

	Swapped the lines the scanlines effect is applied to, and removed the OpenGL texture offset hack used when scanlines
	were enabled.

December 1, 2011:
	PSX: Improved display FB Y readout position emulation, and added support for line skipping and "dfe" functionality
	when drawing in interlaced mode(it's likely not 100% correct, though).

November 29, 2011:
	Added emulation of the VDP quirk present in the Japanese SMS VDP to fix the graphical glitches in the Japanese
	version of "Ys"; however, the quirk will only be emulated when the "sms.territory" setting is set to "domestic".

November 28, 2011:
	Replaced the various <system>.pixshader ip* settings with "autoip" and "autoipsharper", and rewrote
	the underlying "sharper" interpolation algorithm to produce more visually-pleasing results.  There is some loss of
	potential functionality with this change, but hopefully the gained functionality will greatly offset the loss in
	practice.

November 25, 2011:
	SMS: Reduced FM volume to prevent some kind of overflow clicking in Blip_Buffer(TODO: investigate where
	exactly it was happening).

November 17, 2011:
	Fixed some code causing compiler warnings in:
		psx/dis.cpp
		pcfx/king.cpp
		pcfx/fxscsi.cpp
		pce_fast/vdc.cpp
		pce/vce_sync.inc
		nes/boards/emu2413.cpp
		nes/ntsc/nes_ntsc.cpp
		md/debug.cpp
		md/cd/cdc_cdd.cpp

November 15, 2011:
	Fixed the broken scanline effect when the screen is rotated when using the OpenGL video output driver.

November 13, 2011:
	Genesis: Fixed left/right gamepad default key assignments, they were backwards for some reason.

	Changed the default values for <system>.xres and <system>.yres to "0", which will cause Mednafen to use
	the same resolution as the desktop video mode.

	Changed the default values for <system>.xscalefs and <system>.yscalefs to "1", and changed the default value
	for <system>.stretch from "0"(disabled) to "aspect_mult2".

	Revamped the quick help(via F1) screen, removing the annoying partial opacity and changing colors and layout
	slightly.

	Remapped the screen rotation button from "F8" to "ALT + O", enabled screen rotation for all emulated systems,
	and renamed the "command.rotatescreen" setting to "command.rotate_screen".

November 12, 2011:
	Began adding support for emulated analog buttons/axes to the core and driver code(to be used in the future
	for additional PSX input device support).

November 11, 2011:
	Implemented a workaround for compiling the unzip code with Gentoo's messed up zlib header files.

November 10, 2011:
	NES: Corrected multiple problems with mouse coordinate translation for Zapper, Space Shadow Gun, Oeka Kids Tablet,
	and Arkanoid controller emulation, especially with non-default video settings.

November 9, 2011:
	Altered "video.glvsync" semantics slightly, such that a setting of "0"(vsync disabled) will override video card
	system driver settings in the same way that a setting of "1" will.  (In short, it makes disabling vsync via this
	setting more reliable)

November 8, 2011:
	Added new video stretch modes "aspect_int" and "aspect_mult2".

	WonderSwan: Implemented experimental setting "wswan.language"; it's only known to affect one game.

November 7, 2011:
        PSX: Made SPU execution slaved to the CDC, to prevent potential edge-case synchronization issues for audio streaming.

	PSX: Implemented rudimentary CD-XA playback.

	PSX: Implemented GetLocL CD command.

October 30, 2011:
	PSX: Implemented more of MDEC, to the point where the video in FMV sequences is working to a degree.

October 27, 2011:
	NES: Improved iNES mapper 69 expansion sound emulation accuracy(volume interpretation and channel frequencies
	were off).

October 26, 2011:
	PSX: Fixed a bug that caused crashing when emulator sound output was disabled.

	PSX: Fixed missing initialization of a local variable in a GTE emulation function(very curiously, gcc 4.4 optimized it
	as if it were initialized to zero, and didn't even print a warning about an uninitialized variable being used, but
	the lack of initialization DID cause a warning and broke the code with gcc 4.6).

October 25, 2011:
	PSX: More GTE fixes.

October 19, 2011:
	PSX: Altered GPU triangle rendering to fix the little problem of
	invisible walls in "Doom".

October 18, 2011:
	PSX: Corrected GTE MVMA when mx is 3(it has very strange behavior).

October 17, 2011:
	PSX: Improved CPU branch delay slot emulation, fixes a few graphical glitches in "Threads of Fate".

	PSX: Improved GTE flag emulation, and support for MVMA with the far color vector.

October 15, 2011:
	Fixed a bug that caused crackling and increased CPU usage when using certain non-integer fast/slow-forward speed
	multipliers.

October 13, 2011:
	GBA: Added GSF-related file extensions to known file extensions list.

	PSX: Added PSF-related file extensions to known file extensions list.

	PSX: Disabled memory card emulation when a PSF is loaded.

October 12, 2011:
	CDPLAY, SNES, PSX:  Changed several large statically-allocated arrays to be dynamically-allocated to reduce
	memory usage when those emulation modules aren't being used.

	Increased the maximum supported sound output rate to 1048576 Hz, JUST BECAUSE.

	GB: Fixed loading of custom per-game palettes.

October 10, 2011:
	Changed setting and code constraints to increase the maximum supported sound output rate from 48KHz to 192KHz.

	NES: Altered the resampler to work for output rates higher than 48KHz.

	Modified Blip_Buffer to use 64-bit types for time-keeping and calculation instead of 32-bit, and extended
	the precision of the fractional component of the output-to-input rate ratio from 20 bits to 32-bits.  This
	change to 64-bit types also has the effect for allowing for very large buffer sizes with very high
	output rates.  However, if you're using a custom video mode with a refresh rate tuned to minimize juddering
	and frameskipping, you will need to adjust/recalculate those modes for all emulation modules
	*other* than "nes", "psx", and "snes".

October 8, 2011:
	NES: Fixed a bug in the MMC5 split-screen emulation that caused a garbage scanline in the intro sequence
	of "Uchuu Keibitai SDF".

	NES: Fixed MMC5 32K PRG switching mode.

September 29, 2011:
	Fixed a file descriptor leak in the gzip loading code, and removed usage of dup().

	Maximum ROM image size is now enforced in the gzip loading code.

September 25, 2011:
	GBA: Fixed an endian-related bug in the sound emulation code.

September 22, 2011:
	Changed an erroneous memcpy() of an object to an assignment in the MDFN_Surface constructor.

	SMS: Removed an unecessary memset() that sometimes tried to memset() a NULL pointer.

September 5, 2011:
	PSX: Changed coordinate precision in the GPU sprite drawing code so that the level in "Skullmonkeys"
	doesn't disappear when your character goes far enough to the right.

September 4, 2011:
	PSX: Added memory card support.

	PSX: Reworked SIO(for front ports) code, fixes problems with controllers acting totally wonky on some games.

August 29, 2011:
	NES: Fixed potential(in ports) memory leaks in the Game Genie emulation code.

August 28, 2011:
	PCE, PCE_FAST: Fixed an Arcade Card emulation bug that made Garou Densetsu 2 virtually unplayably difficult.

August 25, 2011:
	Added a "close()" method to FileWrapper, and modified the QuickTime and WAV recording code to make use of it.

August 24, 2011:
	GBA: Encapsulated in a namespace.

	GB: Encapsulated in a namespace.

	GB: Added a few minor missing variables to save states.

        PCE, PCE_FAST, PC-FX: Fixed potential memory leak(in ports) in the SCSI CD emulation code.

	NES: Fixed potential memory leaks(in ports) in the FDS and PPU emulation code.

August 23, 2011:
	PC-FX: Fixed a potential memory leak in the RAINBOW emulation code, again currently only relevant to ports of Mednafen.

	Refactored and reorganized physical CD and image reading code, and moved utility-type functions, types, and
	enums into their own namespace, with somewhat more consistent naming, and removal of redundant functions and macros.

	Fixed a crash when "cdrom.lec_eval" is "0" and a physical data CD is loaded.

	Fixed potential(in ports of Mednafen) memory leaks in the CD-ROM emulation code.

August 20, 2011:
	PCE, PCE_FAST: Fixed potential memory leaks(in ports of Mednafen, not Mednafen as-is) in HES player code.

August 18, 2011:
	WonderSwan: Fixed an issue in the debugger's disassembly code that had the potential to cause the
	compiler's linker to error out in certain situations.

	NGP: Fixed a memory map initialization bug(won't affect Mednafen as it is currently, but may affect ports that
	load more than one game without restarting Mednafen).  Thanks to raz0red for pointing it out.

August 13, 2011:
	Fixed(again) waveform Y coordinate saturation in the music player.

-- 0.9.18-WIP: --

August 11, 2011:
	SexyAL: Added support for reversed-byte-order(relative to CPU endianness) sample formats to the ALSA driver; this
	will allow for better support for non-native soundcards(such as a little-endian sample format "PC" soundcard plugged
	into an old PowerPC Mac big-endian system running Linux).

	SNES: Added support for custom palettes.

	GB: Added support for custom palettes.

August 9, 2011:
	The "P" subchannel is now simulated along with the Q subchannel in the CD read functions.  This shouldn't have any
	effect on emulation now, as the P subchannel data isn't used by any system emulation code in Mednafen, but it may
	be used in the future.

	Improved accuracy of simulated Q subchannel data for pregap areas, in the
	CD read functions.

August 8, 2011:
	Added path checks to files referenced in CUE sheets and PSF files, controlled(enabled/disabled) via the
	setting "filesys.untrusted_fip_check".

	Added untested support for the "POSTGAP" directive in CUE sheets.

	Added support for specifying absolute file paths in PSF files and CUE/TOC files.

August 7, 2011:
	When loading a state, if the recorded variable/datum size is not equal to the expected size of the variable,
	it will be treated as missing and not loaded.

	Removed redundant function "CDIF_GetTrackStartPositionLBA()".

	Removed mostly-redundant, and inconsistent across disc images and physical discs, functions
	"cdrfile_get_track_sec_count()" and "CDIF_GetTrackSectorCount()".

	GB: Fixed coarse instruction timing and flag behavior for several instructions, based on blargg's CPU tests and
	on code in the VBA-M SVN repository.

	Fixed a file descriptor leak in the save state preview code, that could cause file descriptor exhaustion
	if multiple save states are used extensively in one session.  Thanks to raz0red for reporting the bug.

August 5, 2011:
	SNES: Implemented RAM cheats and cheat search via the common interface.

	WonderSwan: Cart save RAM is now available to the cheat engine code(it was supposed to be before, but the code
	was passing the pointer before it was initialized).

	Genesis: Updated EEPROM code to newer code from Genesis Plus GX, and fixed most of the EEPROM database entries
	that were previously broken in Mednafen.

August 4, 2011:
	Genesis: Refactored and tweaked input device emulation a bit to fix input unresponsiveness issues in
	"Samurai Spirits/"Samurai Shodown".

August 3, 2011:
	Genesis: Revamped 6-button gamepad emulation, and made it actually work.

August 1, 2011:
	Fixed a lack of mutex locks in the debugger's memory viewer when editing memory, that could cause crashes or wrong
	behavior in certain cases.

	Began work on supporting comments in the disassembled code in the debugger.

July 29, 2011:
	Genesis: Made H-counter reading less completely wrong, but it's likely still mostly wrong(added a TODO entry
	for fixing it).

	WonderSwan: Fixed(made considerably less broken at least!) debugger's fubar branch
	history(it only took a few years, I guess no one used the WonderSwan debugger much :b).

July 28, 2011:
	WonderSwan: Cleaned up debugger code a bit.

	WonderSwan: Encapsulated in a namespace.

	The music player interface's waveform display will now saturate the Y coordinate to the screen boundaries
	rather than forcing it to the middle of the screen(not sure why it was doing that before, doesn't make much sense).

	NES: Tweaked the audio resampling algorithms a bit to prevent degraded audio quality on high-amplitude input
	samples.

	NES: Corrected audio resampler filter setup debug printfs to use more-correct labels, and added more information.

	NES: Added AltiVec support to the audio resampler.

July 27, 2011:
	Internal text renderer now truncates text with pixel granularity rather than glyph granularity.

July 26, 2011:
	NES: Reduced fb_height from 256 to 240.

	GBA: Changed "gba.bios" setting to use Mednafen's firmware path construction semantics rather than specifying a
	path used directly.

	GBA: The "gba.bios" setting is now ignored when playing a GSF, fixing GSF playback with a real BIOS ROM
	image is used.

July 25, 2011:
	PCE_FAST: Changed x86 inline assembly to manually push and pop rbx/ebx, rather than listing it in the clobber list,
	to work around pedanticness in compilers in certain cases.

	Added a test to make sure "char" type is signed to "tests.cpp".

	Added a quick and dirty signed overflow test to "tests.cpp".

July 18, 2011:
	Lynx: ROM image headers are now read out field-by-field rather than memcpy()'ing into a packed struct.

July 16, 2011:
	Genesis: A loaded file with an extension of "md" will now be treated as a Sega Genesis/Megadrive game.

July 8, 2011:
	WonderSwan: Added "Code Segment", "Stack Segment", "Data Segment", and "Extra Segment" logical address spaces
	to the debugger's memory editor.

July 5, 2011:
	Added highlighting to the instruction disassembly for the instruction that PC is pointing to, to avoid confusion
	when the disassembly cursor is moved off in step mode from the current PC.

	Debugger disassembly will now be forcibly resynchronized to PC, in addition to the current disassembly cursor
	address(currently, only the latter was synched).

	PCE: Revamped branch history to show the old PC in addition to the new PC, not to add an entry when a conditional
	branch isn't taken, to show reset and IRQ events/"branches", and to show branch count when repeatedly branching to
	the same target from the same source with no other branches in-between.  These changes necessitated reducing the
	number of entries in the branch history from 32 to 24.
	T = timer, 1 = IRQ1, 2 = IRQ2, R = reset.

	Increased the available area for branch history display in the debugger.

	Halved the size(and number of bytes displayed) of the memory watch section in the debugger when the disassembly
	list is selected(and offseted the watch address by -0x80 when the register list is selected).

Jun 26, 2011:
	Replaced the old CPU flag testing code with newer code from libavutil from ffmpeg.

	Restructured architecture detection code in configure.ac.

Jun 19, 2011:
	Fixed a minor(it's unlikely to have noticeably affected any commercial games) LFO emulation bug in the HuC6280 sound
	core emulation code, reported by "mic_".

Jun 13, 2011:
	GBA: GSF playback now uses new PSF loading code developed for the PS1 emulation module.

	Changed the music player overlay to use std::string instead of C-strings.

Jun 7, 2011:
	Fixed a lack of variable initialization in the WAV recording code, which could cause WAV recordings to have an
	erroneous value in a size field in the header.

Jun 5, 2011:
	PC-FX, VB: Implemented a minor CPU optimization that could cause regressions. TODO: Test games.

Jun 2, 2011:
	Changed "INLINE" #define in the SoftFloat target definition file from "extern inline" to "static inline" to resolve
	issues user "mziab" reported with gcc 4.6.0.

May 30, 2011:
	NGP: Fixed the "ngp.language" setting to work properly with the non-numeric setting values("english" and "japanese")
	(previously it was always Japanese language selection for both strings).

May 28, 2011:
	Genesis: Fixed a bug in the 68K emulation core that caused major problems in some games("Instruments of Power",
	"The Lost Vikings", perhaps others) when running on big-endian platforms.

May 20, 2011:
	PCE: Loading Games Express CD games will now automatically load the Games Express CD Card BIOS; BIOS filename
	is specified by the new "pce.gecdbios" setting, default value of "gecard.pce".

	PCE: Added Games Express CD game detection based on CRC32s for the remaining handful of games that the previous
	method didn't detect.

May 18, 2011:
	Tweaked CD simulated read ahead to read farther ahead, but incrementally instead of all at once as before.

April 28, 2011:
	SNES: Fixed PAL video output size, and frame rate when using netplay.

April 27, 2011:
	SexyAL: Rewrote the channel and format conversion code, now allowing for output channel count up to 8; and,
	tweaked the ALSA code to work with devices that only support > 2(but code is limited to <= 8) channels.
	(The Audigy 2's "p16v" sub-device in ALSA can now be used directly by Mednafen)

April 23, 2011:
	Fixed a crash on exit when one audio file(FLAC, WAV, Vorbis, etc.) is used for multiple tracks in a CUE sheet.

April 17, 2011:
	NES, PCE: Fixed relative branch target address 16-bit wrapping in the debugger's disassembler.

	PCE: Added "SET" instruction to the debugger's disassembler(can't believe it's been missing all this time).

April 15, 2011:
	Fixed "--disable-vb" option to ./configure, thanks to Rakashazi for reporting the bug.

April 8, 2011:
	PC-FX: Fixed debugger's timer register text, and hooked up sound chip register setting in the debugger.

	PCE: Altered VDC line timing to fix raster effects in "Camp California" and "Shape Shifter".  The changed way probably
	still isn't right, but it's something commercial games are unlikely to rely on anyway(except in maybe those
	hidden "four-screen" modes), and the previous way WAS breaking commercial games.

	PCE: Fixed a timing bug in the maximum VDC wait state calculation code(wasn't taking into account VCE-controlled
	events like hsync and vsync changing state).

April 5, 2011:
	VB: Fixed register 30 state during and after *bsu instructions.  Thanks to blitter for pointing the bug out
	and submitting a patch.

	PCE: Improved ADPCM emulation based on more tests run on the real system.  Fixes a lockup bug in "Hyper Wars".
	(The changes made have the potential to cause regressions, however, if any are found please report them)

Mar 7, 2011:
	Hackish fix for problems with CUE/BIN disc images(particularly bad with multiple BIN style images) that contain
	"INDEX 00" statements in the CUE sheet.  (Problems ranging from incorrect Q subchannel data for the pregap
	to wrong track start LBAs)

February 12, 2011:
	PC-FX, MD: Factored the deinterlacing code out of the individual emulation modules and into the core Mednafen code.

	PCE: Adjusted ADPCM emulation slightly, fixes massive A/V sync problems with "Sherlock Holmes".

January 29, 2011:
	NGP: Masked NGP BIOS syscall code properly, thanks to SANiK for pointing it out.

	MD: Changed line timings so vertical refresh rates are the same in both 256 and 320-wide modes.

	PCE: Fixed a Seiya Monogatari ADPCM-related lockup, thanks to Rakashazi for pointing the problem out.

January 15, 2011:
	Began adding PlayStation 1 emulation.

January 5, 2011:
	Fixed "volatile" placement on several pointer declarations.

-- 0.9.16-WIP: --

December 31, 2010:
	PCE: Re-enabled the VDC wait-state-limiting kludge, with some tweaks, to prevent hypothetical emulator crashes.

	PCE: Added a FIFO to buffer the CD subchannel data.  Fixes CD+G playback, which was broken when VRAM access wait stating
	was implemented.

	Adjusted a few setting descriptive texts, for the automatically-generated documentation.

December 29, 2010:
	Added setting aliases, allowing old setting names to be used in the settings file(though the new setting name
	will be saved back to the setting file, not the old name) and on the command line.  Currently,
	settings renamed since December 15, 2010 have old setting name aliases. (Note: This of course doesn't apply to
	the numerous removed settings since 0.9.15).
	
	Renamed settings:
		frameskip -> video.frameskip
		glvsync -> video.glvsync (Might want to rename this to video.opengl.vsync or video.driver.opengl.vsync in the future)
		fs	-> video.fs
		vdriver	-> video.driver


December 26, 2010:
	Added "gama" atom to recorded QuickTime files.

	Added setting "qtrecord.vcodec", and added support for the QuickTime PNG codec.  Possible values for this setting
	are "raw", "cscd", and "png", with the default being "cscd".

	Added "ftyp" atom writing to the beginning of QuickTime files created.

	Class-ified PNG writing code, and fixed a bug from when the filesys.fname_* settings were added that broke
	screen snapshots.

	Wrote new MS WAV file recording code to replace the old code that relied on libsndfile.  This allows sound recording
	to function even when Mednafen is compiled without libsndfile.

December 25, 2010:
	Fixed various problems with the QuickTime writing code.  VLC and the official Apple QuickTime player can now
	play the files Mednafen produces(though not necessarily the video component in the Apple QuickTime player).

	open() in the FileWrapper class is now passed with flag O_BINARY if it's defined.  Fixes QT recording
	on MS Windows.

	Creation and modification timestamps in QuickTime files produced are now filled with the time of recording start,
	rather than being left at 0.

	Adjusted the QuickTime matrix calculation used for aspect ratio correction.

	Added settings "qtrecord.w_double_threshold" and "qtrecord.h_double_threshold".  Users on slower systems, or
	those who are transcoding via full-featured software after recording, may want to set these to 0.

December 24, 2010:

	Mednafen is now compiled with largefile support enabled on 32-bit platforms(Win32 kind of included, its largefile
	support is...DIFFERENT), though it is currently only necessary for QuickTime movie recording.

	Added experimental QuickTime movie recording support via the -qtrecord command-line switch.  Video data
	is encoded via the CamStudio codec(this may cause problems for Apple's QuickTime player software, as this
	codec is typically not used in QuickTime containers AFAIK), audio data is raw.  A few auxillary atoms
	were left out, and may or may not need to be implemented in the future.
	MPlayer, ffmpeg, and Youtube seem to be able to handle the files produced, though MPlayer has occasional
	random A/V sync issues(at least for me).  The version of VLC I have installed can play the video, but aspect
	ratio correction and audio playback are broken.

	Removed the custom MMM-format recording and playback.

	Added lcm_width and lcm_height members to the MDFNGI struct, to aid in video recording(and perhaps other uses
	in the future).

December 19, 2010:
	Added "%%" specifier to filesys.fname_* parser.

	Fixed a couple of deadlock bugs in the signal handler, though the probability of them having been encountered
	during normal Mednafen use is very low.

	sigaction() will now be used instead of signal(), if available.

	Fixed strerror_r() usage(AGAIN, hopefully corectly this time) on non-glibc platforms.

December 18, 2010:
	Renamed settings:
		nethost 	-> netplay.host
		netport 	-> netplay.port
		netpassword 	-> netplay.password
		netlocalplayers -> netplay.localplayers
		netnick		-> netplay.nick
		netgamekey	-> netplay.gamekey
		netmerge	-> netplay.merge
		netsmallfont	-> netplay.smallfont

	Updated QuickLZ from 1.2.0 to 1.3.1. (1.4.1 seems to have some kind of a performance regression, at least how it's used in Mednafen),
	and changed the default value for the "srwcompressor" setting from "minilzo" to "quicklz".

December 17, 2010:
	Renamed settings:
		sounddriver -> sound.driver
		sounddevice -> sound.device
	        soundrate   -> sound.rate
		soundvol    -> sound.volume
	        soundbufsize -> sound.buffer_time

	Added filesys.fname_movie, filesys.fname_state, filesys.fname_sav, and filesys.fname_snap settings.  These settings
	contain a format string, and through manipulation of this format string, the previous functionality of
	"dfmd5", filesys.*_samedir, and "snapname" settings can be obtained.  For example, remove the "%M" specifier
	to simulate setting the "dfmd5" setting to 0.  Available specifiers:
		
		%b	-	Mednafen base directory (no trailing slash)
		%z	-	Path separator
		%d	-	Loaded file base directory("/games/nintendo/megaman.nes" -> "/games/nintendo")
		%f	-	File base("/games/nintendo/megaman.nes" -> "megaman")
		%F	-	Same as %f, but replaced with emulation module's short name with recognized multi-CD CD sets.
		%m	-	MD5 hash of the currently loaded game.
		%M	-	Empty for first evaluation per full path construction, then filled with the game's
				MD5 hash(or the game set's MD5 hash ID for multi-CD CD sets) followed by a period.
		%e	-	Loaded file extension("/games/nintendo/megaman.nes" -> ".nes")
		%s	-	Current emulation module's short name.
		%p	-	Special parameter(usually a number/numeric counter).
		%x	-	Default extension for the file type the path will be used for(extension is WITHOUT the period).
		%X	-	A merging of %p and %x(replaces the last character of %x with %p).
	If the constructed path is relative, it will be appended to the Mednafen base directory and value of the
	filesys.*_path settings automatically.  If the constructed path is absolute, this appending will not occur.

	Removed setting dfmd5.

December 16, 2010:
	Removed the filesys.*_samedir settings, as they're largely unnecessary, can cause file corruption in certain
	cases, and generally cause filesystem clutter.

	Removed the "snapname" setting(it's now hardcoded-on, effectively), and altered the snapshot naming template to
	produce filenames that will be sorted correctly when in a list(IE in a file browser).

	NES: Added hashes of alternate VS SMB and VS The Goonies ROM images into the internal VS Unisystem database.

	NES: Cleaned up palette-handling code, and updated the VS System palettes.

December 15, 2010:
	NES:  Added rudimentary bus conflict emulation to mapper 3, to fix corrupt graphics in Cybernoid.

	Removed the "pce.colormap", "pce_fast.colormap", "nes.cpalette", and "gba.colormap" settings.  Custom palettes
	will automatically be loaded if they're named "pce.pal", "pce_fast.pal", "nes.pal", and "gba.pal" respectively,
	under the "palettes" directory under the Mednafen base directory.  All of these systems can now use custom per-game
	palettes by name a palette file as <FileBase>.pal or <FileBase>.<MD5 Hash>.pal, IE "Mega Man 4.pal" or
	"Mega Man 4.db45eb9413964295adb8d1da961807cc.pal".  Using the form that includes the MD5 hash is preferred, to
	prevent conflicts between games on different systems with the same filenames, and conflicts with the custom palette
	for all games on an emulated system.

	Renamed path_snap, path_sav, path_state, path_movie, path_cheat, path_palette, path_firmware to filesys.path_*,
	changed the interpretation of the path so that if the path is relative, it is relative to the Mednafen base directory,
	and filled in the default values for these settings as the Mednafen default directories("sav", "mcs", "mcm",
	"snaps", etc.).

	Changed the directory used for custom NES palettes from "gameinfo" to "palettes", since that was the only thing the
	directory was being used for.

	Changed MDFN_Thread and MDFN_Mutex structs to forward declarations.

December 13, 2010:
	Fixed a rather insidious bug with the 64-bit little-endian decoding function(bug was due to a misunderstanding of
	implicit type promotion rules).  This fixes some (potential) issues with MMM playback, and RTC clock corruption
	when loading the GameBoy MBC3 mapper's RTC data from a sav file.

	Added MasterClock and MasterCycles fields to the MMM format.  This change is incompatible with previously-recorded
	MMM movies.

	Added MasterCycles setting on the remaining systems.

December 12, 2010:
	PCE: Implemented mid-frame synching and input updating(at this point, it only happens twice per frame, IE only once
	"in the middle"), although it can be extended to more points very easily in the future if the need should arise.
	This should reduce input latency by up to 8ms in cases not improved by the previous change(below),
	and allows "Takeda Shingen" to be playable.  Mid-frame sync required a lot of code refactoring and kludging, Mednafen
	was definitely not designed nor written with this feature in mind, so it's possible some things may be broken now
	when using the PCE module/emulation; for example, rewinding while movie recording is active might corrupt the movie.
	Also, mid-frame syncing isn't done while netplay is active, so "Takeda Shingen" will remain unplayable in netplay.

	PCE: Altered frame end timing slightly to reduce input lag on some games by 1 frame.

	SNES: Reduced input latency by 1 frame(~16.67ms).

	If the MEDNAFEN_HOME environment variable is either unset or empty, and the HOME environment variable is unset,
	and getuid() and getpwuid() are available, the home directory used in consructing Mednafen's base directory will now be
	obtained from the system password file via getpwuid().

	Rewrote most of the speed throttling and frameskip determination code to be cleaner, and made a few minor tweaks
	to the algorithms.

December 9, 2010:
	Being in the input configuration process will now disable all emulated device input during the process, and until 300ms
	after it ends.

December 8, 2010:
	PCE: Rewrote the HES VDC initialization HuC6280 assembly code to work correctly with the new VDC emulation
	accuracy improvements.

	Fixed a bug that would prevent exiting if physical CD-ROM reading hung, and the exit key was assigned
	to a joystick button or a mouse button.

	Fixed an old kludge/bug that caused keyboard input latency for emulated devices(IE not command keys) to be
	1 frame(16.7 ms usually) higher than it should have been.

	PCE: Improved VRAM DMA emulation accuracy, improved wait state emulation accuracy, added kludgy emulation of a
	CPU VRAM-access dead zone tied to HSYNC(fixes "Star Breaker" locking up when leaving a town), and improved VDC
	horizontal timing register emulation.

-- 0.9.15-WIP: --

November 12, 2010:
	SNES: Reworked a floating-point compare to work correctly with x87 FPU math on gcc(and probably most 32-bit x86
	compilers).  TODO: Audit code to find and correct any other instances of similar problematic floating-point code.

November 11, 2010:
	MasterCycles field of EmulateSpecStruct is now assigned in more emulated systems.

November 10, 2010:
	Genesis: Converted the "md.region" and "md.reported_region" settings to enum types, to allow for automatic document
	generation for the various values for these settings.

	Genesis: Fixed various issues that were preventing emulation from working properly on big-endian systems.

	SNES: Updated the PowerPC code in libco with "blargg_libco_ppc64-5".

November 9, 2010:
	VB: Fixed an endian-related bug with joystick input state decoding.

	VB: Made the VIP emulation code big-endian-compatible.

	VB, PC-FX: Made the V810 core's "fast" mode work on big-endian platforms.

	Genesis: Fixed a major problem with illegal instruction handling; executing a long string of illegal instructions
	will no longer lock up Mednafen.  Thanks to Zombie for pointing out the lockup problem.
	
November 8, 2010:

	Fixed(hopefully) OpenGL pixel shader initialization error detection.

	Fixed "supereagle" special scaler crashing when the source surface was large.

	VB: Added setting "vb.sidebyside.separation", which controls the number of pixels between the L/R view(pixel count is
	pre-scaling by xscale(fs)), with a default value of 0.  Previously, the effective separation for the sidebyside
	was 16, so if you want to replicate the behavior of previous versions, set this setting's value to 16.

November 7, 2010:
	NGP, SMS, NES: const-ified some const data.

	NGP, PC-FX, NES, WonderSwan: Fixed various initialization issues(they're not a problem now, but it's done for future-proofing).

	WonderSwan: Fixed internal EEPROM initialization to not persist across game loadings(this doesn't apply to Mednafen...
	yet ;)).  TODO: Evaluate removing persistence across power events.

	MDFND_DestroyMutex() now actually frees the memory for the mutex wrapper.

	Fixed a few initialization and deinitialization bugs in cdrom/cdromif.cpp (thanks to Rakashazi for pointing them out)

-- 0.9.14-WIP: --

November 6, 2010:
	Corrected the last updated dates in the auto-generated documentation files.

	VB: Uncommented out important save state code that was commented out for debugging purposes(and was accidentally left
	that way).

-- 0.9.13-WIP: --
November 5, 2010:
	PCE: The timestamp displayed in the debugger is now counted from when a virtual power off->on occurred, rather
	than the start of the Mednafen video frame.  However, the displayed value wrap when it reaches 2^32 due to limitations
	in the debugger code(TODO: fix in the future).

	PCE: Fixed default mouse L/R button assignments(they were reversed).  (You'll need to delete the Mednafen configuration
	file for the new defaults to take effect, or reconfigure the mouse in Mednafen, with the correct L/R button
	assignment)

	PCE: Fixed a bug that caused the debugger to corrupt Arcade Card state in certain common situations while the debugger
	was open or breakpoints were enabled.

	PCE, PCE_FAST: Reworked and fixed the ADPCM code to closer match a real system(based on hardware tests).  Previously,
	ADPCM playback IRQ generation was sooooo wrong.  These changes finally fix the broken battle voices in "Langrisser",
	yay.

October 17, 2010:
	Fixed 2xSaI family filters to not crash; the 2xSaI filter source image data is now from a temporary video buffer
	created from the original source video buffer, but with padding on all sides to handle 2xSaI's lack of source 
	video buffer coordinate bounds checking.

October 14, 2010:
	Re-disabled physical CD unreadable sector testing code, as it causes too long of a delay at startup.  A
	different solution will need to be found.

October 4, 2010:
	PCE: Optimized debugger PC and opcode breakpoint testing during emulation.

October 3, 2010:
	PCE: Fixed CD register reads with side effects when the debugger is open, and changed PCE_InDebug from bool to uint32,
	to allow for ++/-- pairs instead of = true, = false, to handle potential recursion.

September 30, 2010:
	PCE_FAST: Fixed a emulator crash in the case that a game didn't initialize MPRs properly.

	PCE_FAST: Made a small optimization to the HuC6280 core.

	PCE_FAST: Rewrote a bit of HES playback code so it works at a lower-level, allowing the removal/privatization of some
	HuC6280 state setting functions.

September 29, 2010:
	PCE_FAST:  Fixed a reversed-tile issue with BG drawing on big-endian platforms(thanks to Rakashazi for pointing it out).

	PCE_FAST:  Added 16bpp rendering support.

	NES:  Added 16bpp rendering support.

	Added 16bpp support to MDFN_Surface and MDFN_PixelFormat.  However, most internal components in Mednafen currently
	can't handle 16bpp, emulation modules included.

September 25, 2010:
	Altered the text for the "sound" setting to better match what it actually does.

September 19, 2010:
	The destination blit rectangle in the video output code now has the lowermost bits of the X and Y coordinates cleared,
	as a quick kludge to fix potential issues with the VB emulation's "hli" and "vli" video modes.  A cleaner
	solution may be prudent in the future.

	VB: Added setting "vb.liprescale".

	Optimized the "hli" video mode drawing code slightly.

September 18, 2010:
	VB: Added setting "vb.3dreverse".

	VB: Renamed "pbarrier" 3dmode to "vli".

	VB: Added 3dmode "hli".

September 16, 2010:
	When -force_module is used with an unknown/invalid system, Mednafen will print an error stating so, rather
	than stating that the file format is unrecognized.  If the system is recognized, but the system only supports CDs
	and the file being loaded is not a CD image, a message will be printed to that effect.

September 13, 2010:
	PCE_FAST: HDS is now used in calculating the screen viewable area position, fixing the "Final Blaster" intro
	sequence.

September 12, 2010:
	Fixed a significant memory leak in the video output code(the leak would increase every time fullscreen is toggled
	while Mednafen is running).

	PCE_FAST: Fixed a benign(in Mednafen as it is now) memory leak.

	PCE_FAST, PCE: IsSGX variable is now explicitly initialized to 0 correctly.

	Updated the AX_CFLAGS_GCC_OPTION autoconf macro.

	PCE_FAST: Renamed various identifiers in the HuC6280 emulator code to avoid conflicting with C reserved identifier
	conventions.

	PCE_FAST: Removed unused VDC debug code.

	NES: An error while attempting to open the file specified by setting "nes.cpalette" will no longer cause Mednafen
	to crash.

	SCSI CD:
		Refactoring and code cleanups.

		Added various command error condition checks, and corrected various error codes(NEC uses a few
		nonstandard ASC values). (INCOMPLETE)

		Specific command fixes for PCE CD:
		 Command 0xD8:  If the command is executed with the same address as when it was previously executed,
		 		and the previous execution was < 190ms ago, then the new execution
				is ignored(this occurs regardless if the previous command was ignored).  This is more
				of a kludge than a proper fix, and it is intended to fix the silent CD-DA problem
				with "Steam Heart's".

		Specific command fixes for PC-FX:
		 MODE SENSE and MODE SELECT:
			Added support for block descriptor(incomplete), and the DBD bit for MODE SENSE.
			Added support for all the mode pages present on a PC-FX(though most don't actually do anything
				in emulation yet, as I do not know their function or their function is irrelevant at the current
				level of CD emulation accuracy).

		 Command 0x25:  Corrected returned data when PMI bit is set.
		 Command 0x42:	Fixed the relative address returned when the address results are expressed as LBA.
		 Command 0xD8:  Proper support for play bit.
		 Command 0xD9:	Improved play mode evaluation, and play mode 0x1 is no longer erroneously
				interpreted as loop mode(only 0x4 is).
		 Command 0xDD:	The control/adr field is now returned in the data.
		 Command 0xDE:	Added emulation of returned data mode 0x03(there was a dummy stub before, to get the PhotoCD
				player to work).

September 11, 2010:
	Changed hqxx's sole supported pixel format to match the new OpenGL texture pixel format used(in the future, changing
	its hardcoded pixel format based on an #ifdef MSB_FIRST may be warranted).

	WonderSwan:  Re-enabled(and fixed) debugger's graphics viewer.

	PCE_FAST: Reduced fb_height from 256 to 242.

September 10, 2010:
	If Mednafen is running with an OpenGL implementation of OpenGL >= 1.2, and is on an x86 or x86_64 platform,
	it will now upload texture data in GL_BGRA GL_UNSIGNED_INT_8_8_8_8_REV format rather than GL_RGBA GL_UNSIGNED_BYTE.
	This may need to be tweaked for older video cards.  Would it have killed the OpenGL developers to have
	included a means of querying the fastest formats for texture uploading?

September 8, 2010:
	todo: make sure tblur works right with surface->pitch32 != gameinfo->fb_width and player

        Converted MDFNGI pitch(in bytes) to fb_width(in pixels).

        Fixes for incorrectly using MDFNGameInfo->fb_width instead of the surface's pitch:
		gb
		gba
		lynx(was hardcoded)
		nes
		ngp
		pce_fast(was hardcoded)
		player
		wswan
		mmrecord.cpp
		tblur.cpp

	Reduction of fb_width to minimum acceptible for the module(the driver-side can still round up to a power of 2 when
	creating the MDFN_Surface, of course):
		gb
		gba
		lynx
		ngp
		pce_fast(required a bit of work in vdc.cpp to eliminate non-visible-area surface rendering)
		vb
		wswan


September 5, 2010:
	PC-FX: Implemented an optimization to the FX VCE layer mixing priority evaluation code, that will also allow further
	optimization in the future.

September 4, 2010:
	NES: Replaced "femms" inline assembly generated when compiling for x86_64 with "emms", as not all x86_64
	processors are made by AMD.

August 24, 2010:
	PC-FX: Track numbers in READ TOC(10) are now returned in hex instead of BCD(fixes BIOS handling of discs
	with a large number of tracks; no PC-FX games are like this, but it may be useful for playing audio CDs or audio
	portions of PCE CD).  The bug was present in 0.8.x, but due to a design decision/bug elsewhere, it didn't
	cause the BIOS to be unable to play the CD-DA tracks.

August 22, 2010:
	Re-enabled raw MMC command usage for reading physical discs(it had been disabled for debugging purposes).

	PC-FX: A PhotoCD disc will now automatically be detected as being handled by the PC-FX module.

	L-EC correction code is now called external to cdromfile.cpp, and with PC-FX/PCE CD emulation, will generate
	a SCSI error if it fails.

August 20, 2010:
	SNES: Applied a patch from Jonas Quinn to fix a Cx4 emulation bug.

	VB: Mednafen will no longer automatically recognize files with the ".bin" extension as Virtual Boy games,
	as the extension conflicts with Sega Genesis/Megadrive.  If you have any such files, they will need to be renamed
	to have an extension of ".vb" or ".vboy".

	VB: Files with the extension ".vboy" are now automatically recognized as Virtual Boy games.

	VB: Altered timer emulation to fix digital sound and voice playback in "Virtual Bowling".  The change has the
	possibility of causing regressions with other games, but none were detected in very quick and not thorough testing.

August 14, 2010:
	Cleaned up git.h slightly.

-- 0.9.12-WIP: --
August 13, 2010:
	Updated internal copy of "libmpcdec" library from 1.2.5 to 1.2.6.

	Updated internal copy of "trio" library to 1.14(I believe the previous version was a pull from CVS between the 1.10
	and 1.11 releases).

August 12, 2010:
	PCE_FAST: Added setting "pce.correct_aspect", default value of 1.  When disabled(value of 0), no aspect correction
	will take place(other than in the 10MHz dot clock mode to halve its width), and overscan color will be used to
	fill in the empty space when in 5MHz/10MHz dot clock modes.

	PCE_FAST: Corrected aspect ratio when playing HES files.

	PC-FX, VB: Fixed CPU operand order for FPU subops in the disassembler.

	VB: Hooked up more debugger functionality.

	PC-FX, VB: Fixed V810 read/write breakpoints in "fast" V810 emulation mode.

August 9, 2010:
	Mednafen's now compiled with -Wempty-body and -Wignored-qualifiers.

	NES: Removed a typoed semicolon in sound.cpp.

August 8, 2010:
	Added "math.h" header order inclusion check to "types.h", and fixed a few instances of incorrect #include order.

	Fixed C68K code generator dependency when building on/for a platform that has an extension for executables(AKA MS Windows).

	Fixed a structure initialization problem in the input setting generation code that could cause crashing under
	certain circumstances.

	Fixed Makefile.am to actually link against SDL(somehow it was working anyway on Linux, probably through
	an indirect linkage through SDL_net).

August 5, 2010:
	Debugger settings *.debugger.disfontsize and *.debugger.memcharenc are now automatically generated, the latter based on the system's DebuggerInfoStruct.

	Renamed *.debugger.memcharset settings to *.debugger.memcharenc

	PC-FX: Added settings "pcfx.input.port1.multitap" and "pcfx.input.port2.multitap".  These settings shouldn't be enabled by average users.

August 4, 2010:
	PC-FX:	Added RAINBOW buffer data to save states.

		Added a variable to save states whose absence was breaking save states made in the middle of a CD-ROM transfer.

        Switched to using the internal copy of Tremor to decode Ogg Vorbis files during CD emulation preferentially over libsndfile, as libsndfile has
        an unacceptably slow seek implementation for Ogg Vorbis.

August 3, 2010:
	PC-FX: 	Added emulation of the 2 gamepad switches.
	
		Fixed a bug that caused a crash if input type of "none" was selected for a virtual input port.

		Input device state is now saved in save states(missing a call before).

		Fixed mouse emulation(previously, cursor movement was totally broken).

		Disabled various debug printf statements.

		Removed "bios.fastboot" setting and the HuEXE loading code(both of which have been broken for a while).  The fastboot code likely
		won't return(it'd be better as an external patch to the BIOS ROM image), and the HuEXE loading may return when PIO emulation is added(requiring
		the use of the PC-FXGA BIOS most likely).

August 2, 2010:
	PC-FX: Fixed the horizontal position of the VDC layers vs KING BG and RAINBOW layers when VDC is in 7MHz dot clock mode.

	PC-FX: Disabled a few unknown memory address read/write debug printf()s.

August 1, 2010:
	PC-FX: Writing 0 to D0 of KING register 0x40 while a RAINBOW transfer is in process will now abort it.  Fixes background flickering in "Tonari
	no Princess Rolfee".

	PC-FX, VB: Values written to system registers EIPSW, FEPSW, EIPC, and FEPC by instruction "ldsr" are now masked properly.

	PC-FX: Added emulation of the TIMER TIREQ bit.

	PC-FX: Interrupt controller level/priority register writes are now ignored unless all 7 bits in the interrupt mask register are set.  This matches
	tests done on a real system(done by writing the priority registers, and then reading back the values; wouldn't catch the case of there being shadow
	registers, however, given that this ignoring behavior is documented in the hardware documentation, this seems highly unlikely).  This *finally* fixes
	the PC-FX BIOS PhotoCD player!

	PC-FX: Fixed interrupt controller register value masks.

July 31, 2010:
	PCE: Removed a (mostly benign) debug addition left in the extended SF2 mapper size calculation code.

July 30, 2010:
	NES: Removed/Disabled some debug(not debugger :b) code.

	NES: Fixed the FDS written-disk shadow copy code.  Previously, the FDS loading code was updating the MD5 hash improperly, causing
	the filename of the shadow copy to be different when it was written than it was when a shadow copy was to be opened.

	NES: Altered FDS IRQ emulation to fix "Druid".

	NES: Fixed a bug that caused the entire file pathname to be evaluated when determining system type, now only the filename is examined.

	NES: Added strings "(Europe)", "(Germany)", "(USA)", and "(Japan)" to the filename scanning code for system determination.

	NES: Prettified the NES filter.cpp debug printf()s a little.

	PCE: Fixed HES player screen dimensions.

	PCE: Removed debug printf on bad opcode execution.

	PCE: HES playback code now initializes the VDC horizontal and vertical timing registers before calling the song initialization routine.  Interestingly,
	this seems to have broken the Cosmic Fantasy IV HES, but that it even sort-of worked in the first place was probably a fluke given the quality of the rip...

	PCE: Altered HuC6270 reset code to reset the horizontal and vertical timing registers to 0(which is closer to the real system than setting them to 0xFF, but
	real reset values are unknown, though they might just be 0).

	PCE: When in LFO(FM) mode, excessive playback frequency for channel 0(carrier) is handled more gracefully(but still not "correct",
	as it would be too CPU intensive).

	PCE: Rolled the LFO counter into the normal channel counter.  On a real system, the LFO counter(pre-divider) and the normal channel counter may be
	resetable independently, however, rolling them into one shouldn't cause any audible differences and simplifies the code(and fixes a bug due to how
	it was implemented before in that if the modulator channel's volume was in the audible range, the waveform would have been distorted for larger LFO pre-divider
	reload values).

July 25, 2010:
	Fixed Ogg Vorbis playback when libsndfile doesn't support it(I'd accidentally inverted the ov_open() success test during the change to AudioReader()).

	PCE: PSG channel numbering in the debugger's memory editor is now from 0 instead of 1.

July 24, 2010:
	Fixed libsndfile linkage with mingw32 target(it was broken when we added --with(out)-libsndfile configure option).

July 22, 2010:
	PCE: The 2MiB of arcade card RAM is now defined as an array that's allocated along with the ArcadeCard object, rather than a pointer that's manually
	allocated off the heap.

	PCE: Added support for HES files that load data into banks 0x80-0x87.

	PCE: Fixed HES controls(song increment/decrement) to not lose responsiveness if the frame is being skipped.

July 21, 2010:
	PCE: Added a setting to select the PSG revision, "pce.psgrevision".

	PCE, PCE_FAST, PC-FX: Added revision selection functionality(only supporting HuC6280 and HuC6280A revisions currently) to the PSG emulation code, and
	altered the volume table slightly to mimic the PCE's actual volume reduction limits.  Also, hooked up the PSG register setting code for the debugger.

July 17, 2010:
	PCE: Fixed inconsistencies in how an emulated "power toggle" affects timestamps, correcting a failed assert in the CD-ROM emulation code if the user
	tries to reset/power in the debugger under certain conditions. (TODO: Make similar fixes to PC-FX emulation code)

	PCE, PCE_FAST, PC-FX: Revamped and refactored PCE PSG core code to implement new details obtained through tests on a real SuperGrafx(HuC6280A)
	and on a PC Engine(HuC6280).  However, the emulation is closer to the HuC6280A revision.  It may be necessary in the future to run tests on a PC-FX
	to determine what differences, if any, are in its PSG core vs the HuC6280A's sound core.

July 10, 2010:
	PC-FX, PCE: SCSI CD-ROM emulation code cleanup and minor tweaks.

July 7, 2010:
	PCE: Improved mouse emulation greatly; previously, emulation of two buttons was missing.  The two newly-emulated buttons "Select" and "Run" are mapped to
	keyboard keys "Tab" and "Enter" by default.  However, the L/R mapping may be backwards, and there are still problems with using the mouse with at least
	one game("Lemmings").

July 5, 2010:
	Fixed a temporal blur code bug that was causing an unblurred section of the screen on PCE games.

	Renamed the <system>.vblur* settings to <system>.tblur* (for temporal blur) to reduce confusion.

July 3, 2010:
	PCE: Adjusted DMA timing again to fix an extremely long delay at the beginning of Takeda Shingen(TODO: make sure the delay doesn't exist on a real PCE).

	The core CD reading functions now always put CD-DA data in the buffer in little-endian form.

	Separated and refactored the audio format decoding code out of cdromfile.cpp into audioreader.cpp

July 2, 2010:
	PCE_FAST: Scrapped the old arcade card code in favor of the modularized code from the "pce" emulation module.

	PCE: Moved arcade_card.* to hw_misc/arcade_card/arcade_card.*, and made its save state section names more verbose.

July 1, 2010:
	PCE_FAST: Corrected the aspect ratio.

	PCE_FAST: Scrapped the old PSG code in favor of the new modularized PSG code already being used by the regular "pce" module.

June 27, 2010:
	PCE: Fixed PRAM poking in the debugger to not allow unused bits to be set.

June 26, 2010:
	GBA: Including a line containing "rtc" in the save-game "type" file(refer to the GBA module documentation) will now enable realtime clock emulation for
	that game.

June 22, 2010:
	SNES: Hooked up backup memory loading.

	Fixed the "autosave" option to work instead of causing a crash on exit.

June 21, 2010:
	The IPS patch loading code now checks for file read errors, and is no longer tolerant of IPS patches that end without an "EOF" patch/chunk header.

	Removed support for automatically patching with compressed IPS patches, as it causes a problem with at least one patch that has semi-hidden 
	PKZIP-format data in it that was confusing the file loader.

June 20, 2010:
	SNES: Hooked up multitap and mouse input emulation code(you'll need to manually enable multitap by setting "snes.input.port2.multitap" to "1"
	because it can cause problems if it's enabled by default.

	SNES: Updated to bsnes v0.59(for SA-1 and SuperFX save state support).

June 17, 2010:
	NES: Added cart WRAM to mapper 18 emulation to fix "Jajamaru Gekimaden".

	PCE: Altered VRAM-to-VRAM DMA operation to fix Ankoku Densetsu/Legendary Axe II(and without breaking Langrisser), though stage 5 in LAII/AD may still
	randomly have graphics corruption in certain conditions.

June 11, 2010:
	PC-FX: Fixed a bug that caused only half of the VDC BG tiles to be displayed in the debugger's graphics viewer.

	Fixed segfault on 0-entry setting enum lists.

	Wrote some simple PHP scripts to automatically generate portions of the individual emulation module documentation based on templates and the
	settings definition file produced by -dump_settings_def.

	Added a command-line option "-dump_settings_def", which will dump definition data for all possible settings in Mednafen.

June 8, 2010:
	PCE: Adjusted VDC VDW start timing to fix vibrating screen in World Court Tennis.

June 7, 2010:
	PCE: Fixed "pce.h_overscan" setting to actually work right.

	PCE: Fixed screenshot width.

June 6, 2010:
	Finally got rid of the old FSettings global, moving SndRate to SoundRate of EmulateSpecStruct.

	Video frames are now recorded before temporal blur effect is applied(rationale: external movie encoders will have a wider variety of filters, whose
	quality and parameters are not constrained by being able to run in realtime).

June 5, 2010:
	CDPLAY: Fixed a crash if playback when past the last audio track, and the last audio track was not the last track of the disc.

	PCE: Added more missing data to save states.

June 2, 2010
	PCE: Altered vblank IRQ start timing to fix occasional massively-glitchy frames in Street Fighter II.

	PCE: Fixed a bug that could cause a crash(due to an incorrect parameter to memcpy()) if trying to load a large ROM image(>= 2MiB) that was
	not padded to the Street Fighter II mapper size.

	PCE: Fixed missing intialization of many VDC variables on reset.

	PCE: Added support for a hypothetical extended Street Fighter II mapper.

June 1, 2010:
	Revamped CD-ROM system determination code.

	PCE: Altered VDC BXR/BYR latch timing again to fix Seiya Monogatari, and probably breaking another game in exchange though. :/

	PC-FX: Fixed a problem caused by V810 optimization changes that broke CD ROM emulation in save states.

	Fixed loading of game cheats when loading a CD game(PCE CD, PC-FX).

May 31, 2010:
	PCE:  Added a few missing variables to save states.

May 29, 2010:

	Fixed a bug that could cause crashing on invalid save states(or with a state variable name >= 128 chars in length).

	NES:  Added a few missing sound variables to save states, and added a missing CPU state variable to save states that could cause netplay
	desync(unlikely, but still possible).

	PCE_FAST:  Fixed broken frameskip behavior in regards to sprite overflow IRQs(which caused netplay desyncs).

	PCE_FAST:  Added missing variables to save states(whose absence caused netplay desyncs).

May 26, 2010:
	Made an optimization to the V810 emulation code in order to improve performance on RISC CPUs(TODO: Make sure this didn't break anything).

	Fixed compiling when the configure script was passed "--disable-debugger".

May 25, 2010:
	Added support for compiling without libcdio and without libsndfile, by passing --without-libcdio and --without-libsndfile to the configure script,
	respectively.  Compiling without either is not recommended for general use of course, but may be of use to porters(especially compiling without libcdio).

May 23, 2010:
	Lynx: Fixed a few pieces of poorly-formed(and possibly undefined) code in the UART emulation code.

	Fixed an incorrect object creation bug in cdrom/pcecd.cpp

	SMS: Fixed a couple of strict aliasing violations.

	GBA: Fixed code causing gcc to issue warnings(listed here in the ChangeLog in the case I broke something, I'll know what did it) in the BIOS emulation code.

May 22, 2010:
	Moved MDFN_Rect typedef from types.h to video.h.

	Removed an extraneous semicolon after an if statement in the V810 save state code.

	Fixed a few code constructs causing compiler warnings.

	Added various macros(to force no inlining, force arbitrary alignment, etc.) to allow for an easier time getting the code to compile on
	non-gcc-compatible compilers.

May 21, 2010:
	NES: Fixed a bug that could cause Mednafen to crash if the game crashed or intentionally executed off the end of the 16-bit address space without an immediate
	absolute branch afterwards.

	VB: Hooked up settings "vb.disable_parallax", "vb.default_color", "vb.anaglyph.preset", "vb.anaglyph.lcolor", "vb.anaglyph.rcolor", and "vb.input.instant_read_hack"
	to a SettingChanged() notification function so that those settings can be changed during emulation runtime.  "vb.cpu_emulation" and "vb.3dmode"
	are not hooked up, and can not be due to current Mednafen architectural limitations(and even if those weren't present, "vb.cpu_emulation" would still
	require a virtual power toggle).

May 15, 2010:
	Began work on expanding the information in the setting definition structures, so that the documentation on settings can eventually be mostly auto-generated.

	Altered the help screen accessible via command-line option "-help" to not display any settings.  There are far too many settings to list all at once.
	Perhaps we'll add additional command-line options in the future to list settings according to a simple filter.

May 14, 2010:
	PC-FX:  Added setting "pcfx.disable_bram".  Only set this to 1 if you know what you're doing, as it's enabling an illegal/broken state.

	PCE:  Added setting "pce.disable_bram_cd" and "pce.disable_bram_hucard".  Only set "pce.disable_bram_cd" to 1 if you know what you're doing, as it's enabling
	an illegal/broken state.  pce.disable_bram_hucard is more useful, as it will make HuCard game run as if they're on a plain-Jane PC Engine/TurboGrafx without
	CD-style backup memory.

May 13, 2010:
	NES:  Moved read/write handler installation from the Power function to the Init function for input emulation, PPU emulation, and VS Unisystem emulation.

	NES:  Corrected the power-up state(values) of internal RAM.

	NES:  Fixed mapper 99 emulation(hopefully, I'm unable to test it currently).

	Fixed #include order(for config.h, basically) in many files.

May 7, 2010:
	Added a new fullscreen stretch mode that preserves the aspect ratio(at least in the same way that keeping xscalefs == yscalefs does), courtesy of donb04.

May 6, 2010:
	NES:  Fixed PPU rendering code to use the real pitch of the output surface, rather than the requested pitch as specified in the MDFNGameInfo struct.
	This should fix garbled video with "overlay" vdriver in some circumstances.

	NES:  Fixed clear color during PPU startup/reset, such that the screen will no longer be briefly green after a reset using the "overlay" vdriver.

	NES:  Added a (slow) kludge so that the output image is not totally wrong when NTSC blitter is enabled while using the "overlay" vdriver.

April 30, 2010:
	Altered the strerror_r() implementation detection preprocessor code to hopefully work correctly on non-GNU platforms.

April 29, 2010:
	GBA:  Fixed a small bug that totally broke GSF loading.

	PCE_FAST:  Added padding to memory mapped into the HuC6280 virtual address space to avoid potential emulator crashes if a game crashes.

	VB:  Implemented more of the debugger.

April 27, 2010:
	Added 2xSaI, Super 2xSai, and Super Eagle scaling filters courtesy of a code submission from "donb04".

	Fixed fatal bugs in the IPS patching code(the bugs were introduced from the refactoring of the file loading code).

	Genesis:  Removed various debug calls to exit() so that games crashing should no longer cause Mednafen to crash/exit.

	Genesis:  Fixed interlaced mode to not be totally broken.

April 23, 2010:
	VB: Fixed brightness calculation bug that resulted in very dark images instead of completely black images.

April 12, 2010:
	SMS: Encapsulated in a namespace.

	SMS: Added missing state to save states to fix netplay and movie desynchs.

April 11, 2010:
	VB:  Null-terminated the anaglyph preset list.

April 11, 2010:
	VB: Changed nominal width in pbarrier 3dmode to 768.

	Removed stale build files.

April 7, 2010:
	Removed unused PulseAudio option from configure.ac.

	Genesis:  Encapsulated more code in a namespace.

April 6, 2010:
	PCE_FAST:  Changed "inc" instructions to the equivalent "add" forms in inline assembly for better performance.

April 5, 2010:
	Replaced MDFN_FastU32MemsetM8() with code that doesn't violate strict aliasing(at least when an array with 32-bit elements is passed...which
	is not exactly the case in every place it's called), and with inline assembly for x86 and x86_64.

April 4, 2010:
	VB:  Fixed graphics output when "vdriver" is set to "overlay", and "vb.3dmode" is set to "anaglyph".

	Fixed command-line argument "-force_module" handling.

	PC-FX:  Renamed setting "pcfx.adpcm.restrict_range" to "pcfx.adpcm.emulate_buggy_codec", since it now does more than effectively restrict the range,
	thanks to David Michel's analysis of an official PC-FX ADPCM encoder.

April 3, 2010:
	Settings are now sorted before being saved to disk.

	Invalid/Unknown settings are now saved back to the configuration file on exit rather than being discarded.

	PCE:  Fixed input port definitions so that Tsushin Keyboard can only be enabled on input port 1(which reduces the number of input mapping settings
	automatically generated by about 400).

	PCE:  Multitap emulation is now automatically disabled when Tsushin Keyboard is selected on input port 1(TODO: document this fact).

	NES:  Fixed a few memory leaks in filter.cpp.

March 30, 2010:
	VB: Added a hack, enabled by default, that will return the current pad state when reading from SDR, rather than the latched state, to reduce latency
	by 20milliseconds in some games.  Perhaps remove this option when everyone has 240Hz monitors and we don't have much emulator and PC-caused latency. ;)

	VB: Fixed input automatic reading code to read 16 bits, not 32.  Stupid typos.

	VB: Changed VB_SetEvent() to take the timestamp of the next event, rather than the number of cycles until the next event.  The input code was erroneously
	calling it with a timestamp before this change, so this change should fix potential input lag issues.

March 29, 2010:
	Factored some cheat management function calls out of individual emulation module code.

March 26, 2010:
	Added support for "enum" setting type.

	Added support for recognizing integer settings expressed as hexadecimal, with a 0x prefix.

March 19, 2010:
	PCE:  Added (untested) emulation of Arcade Card register 0x1AE5, based on information from FluBBa.

	PC-FX, VB:  Fixed "DIV" and "DIVU" instruction emulation when the destination register is "r30".

March 18, 2010:
	VB:  Began adding Virtual Boy emulation.

March 17, 2010(FIXME/TODO these changelogs):
	Reorganized sufficiently-abstracted chip hardware emulation into directories hw_cpu, hw_sound, and hw_video.

	PC-FX: Fixed V810system register "PIR" value.


March 16, 2010:
	PC-FX:	Scrapped the old PC-FX-specific VDC code, in favor of the new abstracted VDC code originally written for the new more accurate
		PC Engine emulation.

		Removed KING KRAM mode masks(they were pretty much disabled, anyway, and only served to bloat the code).

		Moved the KRAM arrays to the end of the king_t struct, so that commonly-used variables don't require 1MB+ offsets.

		Added page setting cache pointers to speed up rainbow and DMA operations slightly.

		The V810 event handler and memory+IO read/write functions are now accessed via pointers(small speed penalty, unfortunately).

		Minor V810 optimizations.

		FINALLY fixed the ADPCM decoding algorithm for the most part(I'm still unsure about loss of precision in interpolation mode, though),
		removing that ugly hack that ran a DC-bias removal filter on the ADPCM predictors themselves.  However, it turns out PC-FX games
		are somewhat glitchy, so the following settings have been added(implemented as hacks that can improve sound quality over that
		of an actual PC-FX):
			pcfx.adpcm.restrict_range (Default: Disabled)
				Hack that restrict ADPCM predictor to 50% normal range.  Can improve sound in some games whose ADPCM was encoded
				improperly(for example, in Miraculum FMV), but will make sound worse in other games(for example, Nirgends).

			pcfx.adpcm.suppress_channel_reset_clicks (Default: Enabled)
				Hack to suppress clicks caused by forced channel resets.  This will MURDER those nasty clicks that occur
				when games reset the ADPCM predictor values when they are off-center.  It shouldn't harm anything(except in
				pathological cases, and even then, only minimally), thus it is enabled by default.  However, people developing
				new code for the PC-FX may wish to disable it for testing their programs.


March 7, 2010:
	PC-FX, PCE CD:  Fixed SCSI commands 0xD8 and 0xD9 to work properly when passed a track value of last_track + 1(leadout in this cae).

	PC-FX: V810 event handling revamp.

March 5, 2010:
	PC-FX: Added untested V810 bitstring search instructions.

	PC-FX: Fixed the FPU precision degradation flag when an overflow exception occurred(it was never being set, even in cases where it should have).

	PC-FX: Fixed CY and S flags when an FPU overflow exception occurred(they were erroneously being set in EIPSW, due to V810_Exp() being
	called before SetFlag()).

March 4, 2010:
	PC-FX: The result of an FPU operation that overflows is now written to the output register(instead of discarded).  Additionally, to get the correct
	value on overflows required hacking the SoftFloat code to "wrap" the exponent on overflows, instead of transforming the value into an infinity.

March 3, 2010:
	PC-FX: Fixed the value returned on reads from the "PIR" V810 system register.

	PC-FX: Fixed the exception generated when an invalid FP instruction is executed.

	PC-FX: Scrapped most of the old V810 FPU emulation code, and switched from glibc's FPU emulation code to using "SoftFloat".  SoftFloat has a well-defined
	interface(even if it does pollute the namespace with globals :b), documentation, and has a license that will allow the V810 code to eventually be
	backported to RealityBoy.  The new V810 emulation code also has much more accurate FPU flag calculation and exception handling.

February 27, 2010:
	PC-FX: Fixed TRNC.SW and CVT.SW to set the FIV flag instead of the FRO flag in the event the result is too large to fit in an integer
	register.

	PC-FX: Fixed unused variable warnings in the V810 emulator.

	PC-FX: Fixed lastop variable in V810 emulation code after a bitstring instruction is executed.  Fixed bitstring handling so that the emulator
	won't malfunction if an unhandled/illegal bitstring instruction is executed.


February 15, 2010:
	PCE:  Reworked HES playback code to be lower-level.

	PCE_FAST:  Copied more CPU state to local variables in the execution loop.

	PCE_FAST:  Added a "Page1" pointer that ZP and stack accessess now go through, instead of directly to RAM(for the case the game changes
	what RAM is mapped into $2000-$3FFF).  Note that this doesn't have any write protection mechanism, so if a game maps in ROM and then writes to ZP
	or stack, the ROM data will be trashed.  FIXME.

February 10, 2010:
	PCE:  Added VCE and VPC registers to the debugger.

February 8, 2010:
	PCE_FAST:  Optimized the SuperGrafx VPC mixing code a bit.

February 5, 2010:
	PCE_FAST:  Refactored the HuC6280 cycle counting code to reduce CPU usage, and made a simple event system to reduce CPU usage further by
	factoring timer updates out of the per-instruction execution loop.

	PCE_FAST:  Increased the maximum overclock value accepted to "100", for testing purposes.  TODO: Decrease this to a sane value
	(or not, if 100 will work correctly even with PCE CD emulation) for 0.9.0 final.

January 27, 2010:
	PCE: Removed a bit of preprocessor abuse in the HuC6280 CPU core, and altered the HuC6280 CPU core emulator to not have dependencies on the main PC Engine
	emulation code.

	PCE: Fixed CPU reset while in step mode(and a few other related problems) by altering the semantics of the debugger step mode with a pending IRQ.
	(TODO: This needs to be documented in detail later when my thoughts are more collected)

January 25, 2010:
	Fixed a bug that would cause the emulator to crash if any opcode breakpoints triggered when the debugger screen was disabled and no other
	breakpoints were active.

January 24, 2010:
	PCE: Encapsulated HuC6280 emulation in a class, and fixed(mostly) the debugger-related code.

January 22, 2010:

	Changed save state format to save variable/array names somewhat like PASCAL strings in the file(maximum 255 bytes per name), instead of a fixed-width
	field.

	On save state loading, each of the section definition arrays are now parsed and copied into a std::map, before the data in each section is
	loaded, changing variable name search algorithmic complexity in the actual loading code from O(n^2) to O(log n)(ignoring any overhead that loading
	into the std::map incurs).

January 20, 2010:

	Fixed a couple of remotely-exploitable(if connected to a malicious server) stack manipulation bugs in the network play code.

January 18, 2010:

	PCE: Removed settings "pce.ocmultiplier" and "pce.cdspeed", as they break games and cause code obfuscation(especially the overclocking option).
	They will still be available in the PCE_FAST module, though(with no plans to remove them from it).

	PCE: Fixed the SF2 bank mask value to prevent invalid memory accesses.

	PCE:  Altered multitap emulation slightly to fix input in "Strip Fighter".

	PCE:  Fixed a bug that was causing CPU cycles to be lost as far as the VCE is concerned due to failing to synchronize the VCE emulation before
	the timestamp was reset.

	PCE:  Fixed a similar bug with lost cycles in timer emulation.  (TODO: Maybe refactor the forced synchronization code so that it's all in one
	spot instead of scattered about).

	PCE:  Reverted VDC wait states to multiples of the 7MHz CPU clock instead of the 21MHz master clock, as after thinking about it more, I highly
	doubt the wait states are done with 21MHz granularity.

January 17, 2010:

	PCE: Altered VRAM DMA so that it will only run outside of VDW(or inside if in burst mode), and only when SAT DMA is not in progress.  Fixes
	status bar glitches in Langrisser.

	PCE: Removed VRAM DMA running shadow variables to fix "Fushigi no Yume no Alice"(setting SOUR to the value of DMA_SOUR, LENR to the value of DMA_LENR, etc.
	works too, but I prefer the solution that uses the least number of extra registers/variables; to see which way is correct, though, we would
	need to try to write LENR/SOUR/DESR while VRAM DMA is in progress on a real PC Engine).

	PCE:  Adjusted horizontal line timing slightly to fix a broken scanline in Aoi Blink.

	PCE:  Removed various debug print statements.

	PCE: Dot clock mode changes will now reset the VCE's clock divider.  This is done, in combination with
	VDC wait states being in 21MHz master cycles, to synchronize the VDC with the CPU when in 7MHz dot clock(and not possibly be in an unsynchronized state
	dependent on when the dot clock change occurred).  This may not be what happens on the real system, but it *shouldn't* hurt anything(commercial
	games at least), and it should make it easier to get scanline timing right for emulating raster effects without glitches when in 7MHz dot clock.

	PCE: VDC wait states are now done in terms of 21MHz master cycles(TODO: confirm this is how it is on a real PCE or not).

January 16, 2010:

	PCE: Added a lot of missing VDC variables to save states.

	PCE: Adjusted horizontal line timing slightly to fix a jittery problem with Shin Megami Tensei.

January 15, 2010:

	PCE: Fixed arcade card state loading(it wasn't saving and loading the ACRAMUsed variable, causing the actual RAM contents to not be loaded
	unless the arcade card RAM was written to before the state was loaded).

	PCE: Fixed the end of VRAM DMA code to actually commit any pending reads/writes(fixes an assert() failure in Crest of Wolf).

January 14, 2010:
	PCE: Added a semi-hack to fix VRAM and screen corruption in Asuka 120%'s split-resolution screen.

January 10, 2010:

	PCE: Mostly figured out the Tsushin Keyboard layout, and mapped the best keys on a standard western "Windows key"-style keyboard I could think of
	to the emulated keyboard.  It turns out the keyboard is very similar to later(?) PC-88 keyboards(I used source code from "M88 - PC8801 Series Emulator"
	as a guide to some of the more exotic keys I was having trouble with).

January 9, 2010:

	PCE_FAST:  Fixed CD BIOS loader to look in the "firmware" directory with non-absolute paths.

	PCE_FAST:  Changed the default setting for "pce_fast.cdbios" from a warning string to "syscard3.pce".

	PCE_FAST:  Fixed CD emulation crash.

January 8, 2010:

	Added very basic support for threading functions on the driver side(which right now are just basic wrappers around SDL's threading support).  This
	was done to get the SDL dependency out of the new multi-threaded CD-ROM reading code.

January 7, 2010:

	PCE:  Fixed graphics rendering to use the actual pitch of the MDFN_Surface, instead of the hard-coded requested pitch/framebuffer width in
	EmulatedPCE.

	Fixed a compilation problem with MINGW in src/cdrom/lec.h

	SNES, MMPlay, PCE_FAST: Fixed sound emulation to use driver-side supplied buffer.

	PCE, PC-FX: lastts is now initialized in the PCE_PSG constructor.

	WonderSwan:  EEPROM is now initialized to 0 on startup(it wasn't being initialized at all before).

	Fixed a bug in the overlay blitting code that was causing graphics corruption on some PCE games(it was essentially assuming the source width was always
	a multiple of 2).   This bug made apparent another bug(reading beyond the source rect width, and possibly beyond the buffer in the worst-case.  FIXME.).

	Overloaded the Open() method of the MDFNFILE class to allow for passing a "std::string" type for the path argument.

	PCE:  Fixed the base path used in CD BIOS loading.

	PCE:  Fixed loading of CD BIOS ROM images with 512-byte headers(broken in the HuCLoadCD->HuCLoad merge).	

	SNES:  Fixed compilation with (at least old) mingw32.  byuu will include the fix in future bsnes.

	Fixed link order of libintl and libiconv.

	Fixed the include dir for config.h in intl/Makefile.in

January 6, 2010:
	Moved the "<sysname>.forcemono" setting functionality out of individual emulator modules, into the core Mednafen code.  The new way will be slightly
	less efficient, but only when the user changes the setting from the default of 0, and most users PROBABLY won't do this.  The benefit is simplification
	of sound emulation in the emulation modules.
	(This definitely breaks/changes the music format player's waveform visualization, which we might want to fix in the future)

	PCE: Merged HuCLoadCD() into HuCLoad().

	PCE, PC-FX: Abstracted the core PCE PSG code in a class.  The PCE and PC-FX PSG emulation now use this class(but not pce_fast, at least not yet...).

	PCE: Fixed CD sound emulation(broken in the PCE PSG refactoring).

	PCE: Stuffed arcade card emulation into a class.

	SMS: Fixed YM2413 detection(though I'm not sure it's 100% correct, games that can use it actually do use it now).

	SMS: Fixed an output overflow bug in the YM2413 emulation code.

	SNES: 15-bit SNES RGB to the host system video format now uses a 32768-entry uint32 LUT, instead of calling the output surface's MakeColor() method
	for every pixel(which was especially slow in YCbCr mode).

	SNES: Updated to BSNES v058.

January 5, 2010:
	Added a "slow-forwarding" feature.  It's like FAST forwarding, but you go SLOWER.  Which kind of goes without saying, but I felt like saying it anyway.
	It is controlled via the new settings "sftoggle" and "sfspeed", which behave similarly to "fftoggle" and "ffspeed", except that "sfspeed" can be
	set to < 1 values(the actual range is 0.25 <= value <= 1).  Fast-forwarding is activated by the backslash key(I first thought about using SHIFT+BACKQUOTE,
	but that would probably make Mednafen worse on foreign keyboards, and we don't need any more of that...)...though this will probably break on some
	Frussiranistanadengia keyboard somewhere.
	If fast-forwarding and slow-forwarding are activated simultaneously(YOU MONSTER), the fast-forwarding speed multiplier will have precedence over the
	slow-forwarding multiplier.
	...and since we recently moved to resampling the audio post-emulation-module-...emulation, slow-forwarding won't bring inaudible frequencies down
	to the audible frequency range(since they were already filtered out).  This has both good and bad sides, but probably mostly good(so no non-tubular sounds
	caused by games "silencing" sound channels by setting their playback rates extremely high will be heard).

        GB:  Fixed a bug(still many left) in the external RAM handling code, fixing an
        emulator crash with "Wizards & Warriors - Chapter X". (I think! TODO: confirm)

        Added support for "lurkers" on the network play server.  Previous versions of Mednafen don't lack support for this per se, but there
        would be cosmetic issues with status messages printed to the internal console.

	Lynx, GBA, PC-FX, MD, SMS: Fixed sound emulation to use the driver-side allocated buffer.

January 4, 2010:

	PC-FX:  Added more checks to error conditions during fast booting, and cleaned up and added a few error messages.

	MDFND_PrintError() and MDFN_Message() will now lock a mutex around access to stdout, instead of queueing the messages to be sent to stdout in the
	main thread.  This is what I should have done in the first place...  (This change fixes, among other things, dropped status/error messages
	when CD-ROM loading fails).

	SMS:  Fixed video output, broken during the transition to MDFN_Surface.

January 3, 2010:
	PCE: Fixed broken Soldier Blade title screen by altering the conditions of when D6 is set(TODO: alter/rename VDC_IS_BSY).

	Finished implementing priorities for emulation modules when loading a game.  The priorities are, from highest to lowest:
		External_high
		Internal_high	(All modules but pce_fast are currently set to this)
		External_low
		Internal low	(pce_fast is set to this)

	Added <sysname>.enable settings(type boolean, default value of 1) for all emulation modules.  Setting the setting for an emulation module to 0
	will cause that module to not be considered when trying to determine which module to load the game with(it will still be used if explicitly
	specified via -force_module or -loadcd).

	Added TestMagic() to Lynx, NES, GG, SMS, SNES.

	Removed SetSoundVolume() from the emulation modules, it's handled in the core code now, but the emulation modules can handle it themselves
	if speed is critically important.

        Removed SetSoundMultiplier() from the emulation modules, sound is now resampled in the main core if fast-forwarding is in effect.  However,
        there still is a provision to handle it in the emulation modules if speed is critically important.

        The sound buffer emulation modules write to is now allocated on the driver side, but Mednafen still supports the old method of having the sound
	buffer allocated in emulation modules.  Currently, the following modules have been converted to the new system:
		GameBoy
		Neo Geo Pocket
		NES
		WonderSwan

January 2, 2010:
	Updated the documentation to reflect the additions and changes made between 0.8.5 and 0.8.D.

        GBA:  Fixed a bug that would cause data corruption and the loaded game to crash whenever a state was
        saved(but the state itself, and loading it, was fine) on a big-endian platform.

	NES:  Removed support for sound quality setting "-3".  It's too low-quality(Solstice sounds awful) and is unlikely to give a significant % performance
	boost over quality -2.

December 31, 2009:
	Replaced more instances of usage of strerror() and "%m" in format strings with usage of the ErrnoHolder class.

	Lynx: The boot ROM is now loaded through MDFNFILE instead of stdio f*().

	PC-FX: ROM BIOS and FX-SCSI ROM are now loaded through MDFNFILE instead of stdio f*().

        Lynx:  Fixed a bug in the cart loader code that would cause a crash if the ROM bank size was larger than the actual data available in the
        file(as is the case with some homebrew programs).  Thanks to "Wookie" for the patch.

	GB: Fixed colors when "vdriver" is set to "overlay".

        Fixed strerror_r() usage in error.cpp/error.h

	SexyAL:  Fixed a bug affecting the return value from RawCanWrite() in the ALSA driver.  The returned value was typically too
		 small by a factor of 4.  The effects of this bug included potential long periods of garbled sound
		 during netplay.

		 Fixed the return value from RawCanWrite() in the JACK driver.  It was being clamped to a value
		 that was too small by a factor of 4; however, the clamp value was already excessively large in a way
		 that this bug would should have only been triggered if the "soundbufsize" setting was excessively large.
		 The effects of this bug would be similar to the ALSA RawCanWrite() bug.

		 The ALSA and OSS drivers will now try to set audio output to 2 channels if the source data only has 1 channel, and 16-bit signed if the
		 source data is 8-bit(automatic conversion is done).  This is done to allow for lower period/fragment sizes, as, in ALSA's internals at least,
		 the minimum period sizes are expressed in bytes, not sound frames.

		 The ALSA and OSS drivers will now try to set lower period/fragment sizes than previous versions of Mednafen did.  With default settings, for
		 ALSA, the new period/fragment size is 50% of what it was before, and for OSS, 25%.  Also, there's a new setting to override
		 the SexyAL's driver's preferred period/fragment sizes, named "sound.period_time"(default value of 0: no override). 
		 The period/fragment size is expressed in microseconds.  If the new, lower fragment sizes cause problems, the setting can be changed to "2666"
		 to approximate the fragment size selection in previous versions of Mednafen when using ALSA output, and "5333" when using OSS output.

		 Added a workaround to the OSS driver for a bug in ALSA(and hence, ALSA's in-kernel OSS emulation) that could cause the emulator to run far
		 too fast for a short period of time if a buffer underflow occurred.

		 The ALSA's driver's RawCanWrite() method now(finally) uses snd_pcm_avail_update() instead of snd_pcm_delay().
		 This should improve performance and frameskipping behavior when the ALSA output is not routed directly to a physical device, such as the case with
		 PulseAudio(though PulseAudio is still not recommended :b).

	If an invalid "sounddriver" is selected, Mednafen will now print an error message and not initialize sound
	instead of silently selecting the default sound driver.

	SexyAL: Altered the argument order of SexiALI_Convert() to make more sense.

		Fixed the broken conversion code used when the frame count passed to Write() is greater than 2048.

		Fixed a bug/design flaw in the SexyAL SDL sound driver that can cause a crash during program
		deinitialization.

		Added support for "float" output format to the ALSA driver.

		The ALSA driver will now try all formats that SexyAL's conversion code supports if the desired
		format is not supported by the output device, rather that simply erroring out as before.

		Added support for converting to 24-bit and 32-bit PCM output formats from the source format(which
		is still fixed to signed 16-bit).

		The driver function RawCanWrite() is now passed a pointer to a uint32_t, which it sets to the number
		of bytes that can be written without blocking, rather than returning the value directly, so that
		the return value can be used as a success/failure indicator.

		The driver function RawWrite(), and the "user" function Write(), will now return 1 on success, 0 on
		(fatal) error, rather than returning the amount of data written.

		The OSS driver was testing the return value of open() incorrectly.  Fixed.

		SexyAL is now compiled as C++(but doesn't use many C++ features yet), which necessitated
		adding several explicit casts in various code, and fixing some inconsistent function prototypes and
		declarations.

                JACK: Fixed a stereo playback crashing problem(a loop count was being calculated incorrectly).

                JACK: Switched to using jack_client_open() instead of the deprecated jack_client_new().

                JACK: The "sounddevice" setting is now used, to specify the JACK server to connect to.

                JACK: Fixed a possible race condition in RawCanWrite().

		JACK, SDL: Changed the inter-thread ringbuffer setup to be less likely to underrun, while not hurting
		latency.

		JACK, SDL: Additional playback position precision is now obtained by using
		jack_get_time()/SDL_GetTicks().  This will improve Mednafen's performance with larger fragment sizes
		with these drivers, but smaller fragment sizes are still preferred for latency-to-underrun-occurrence-ratio
		reasons.

		Renamed the "byteorder" field of SexyAL_format to "revbyteorder", and changed it to a boolean type,
		to avoid confusion over what it actually represents.

December 30, 2009:
	Altered autogen.sh to force updates(copy to Mednafen's source dir) of automake standard files.

	Added usage of the AM_SILENT_RULES macro to the autoconf script, allowing pretty compile output via:
			./configure --enable-silent-rules
		or
			make V=0

        PCE: Fixed the BRAM initialization(it was wrong, and generated from when Mednafen erroneously emulated 8KiB of BRAM).
        Fixes lockups in "Sorcerian".
        Note that if you have any existing save states or battery-backed RAM files for "Sorcerian" in "sav" or "mcs" under
        Mednafen's base directory from when you attempted to run "Sorcerian", you will need to delete them
        for this fix to have any effect.

	Fixed:
		joystick.cpp:141: warning: format ‘%016llx’ expects type ‘long long unsigned int’, but argument 4 has type ‘uint64’


November 30, 2009:
	Fixed some PC-FX interlaced compile errors(resulting from an earlier effort to fix 0-width source rect blits
        
	due to not verifying that the variables for the previous field contained valid data).

	Fixed a minor typo in NGPGFX_CLASS::reset()

        GB:  Fixed initialization of "HRAM" on virtual power toggle/reset.

        SMS:  Fixed the input and reset emulation when the territory was
        set to "domestic"(Japan) and FM emulation was enabled; the emulated system was erroneously
        being treated as a Game Gear in a few places when those conditions were met.



November 8, 2009:
	Reran ./autogen.sh, under Ubuntu 9.10

	Reverted drivers/opengl.cpp and drivers/opengl.h to pre-PBO experimentation copies.

	Fixed incorrect(and excessively complex, old code nearby) usage of MDFNI_DispMessage() in drivers/input.cpp in
	the input configuration process.

	Removed archaic and unused(but still being compiled!) files drivers/config.cpp and drivers/config.h.

	Fixed cases of file I/O return values being ignored in:
		mempatcher.cpp
		mmmreader.cpp (not complete)

	Fixed some strict-aliasing-conflicting code in nes/ppu/ppu.cpp, and somewhat ambiguous parentheses.
	TODO: Clean it up more.

	Reverted PC-FX KING/FXVCE rendering/mixing code to pre-black-bias-optimization attempt.  It was convoluting the
	code too much.


Before(some of these changes listed below are seriously out of order from when they occurred, development was kind of chaotic and haphazard):

	Altered the netplay protocol, adding "INTEGRITY", "SERVERTEXT", and "ECHO" commands.  Added "/ping" and "/integrity" commands to the netplay
	text console.

	CD emulation:
	        Added new multi-threaded CD image and physical drive reading code, with a small readahead buffer.
	        This new code will also allow sector read hints to be given, which should alleviate
	        emulation freezes once we emulate CD seek delays in cdrom/scsicd.cpp.

	        Simplified the base CD reading code, to always fetch 2352+96 bytes of data.

                Physical CD reads will now read semi-"raw" data(2352 bytes per sector regardless of sector type),
                along with 96 bytes of subchannel data per sector.

                extra commands(WIP)

                requires_medium

	Added "ErrnoHolder" class, to be instantiated immediately after a function that modifies errno(passed "errno" as the constructor argument).
	It holds the errno value in a safe place(so future calls to any printf or whatever functions won't change it), and it has a StrError() function,
	which is essentially a wrapper that will use strerror_r(), or if not available, strerror(), and return a const char * pointer to a buffer
	internal to the ErrnoHolder class.


        PC-FX: (August 30, 2009) Fixed stupid ASC value bug in DoPAUSERESUME that broke PC-FX CDDA player

        PC-FX, PCE:  (August 30, 2009) Fixed stupid CD-DA playback volume bug

	PC-FX: Fixed ADPCM IRQ handling(fixes random lockups in Sparkling Feather during the initial period of FMVs).

	NES:  Changed DMC IRQ emulation to fix "Apple Town Story".

	NES:  Greatly improved FDS sound emulation(thanks to Disch's document, and VirtuaNES source code).

	The framebuffer that emulation modules render to is now abstracted behind the "MDFN_Surface" class, instead of having naked pointers and
	various video format global variables out the wazoo.  Adding the "overlay" output driver/method necessitated this change, too.

	Added support for SDL Y'CbCr overlays(USUALLY hardware accelerated).  Enabling this video output method can be achieved by setting the "vdriver"
	setting to "overlay".  This is a very experimental video output method, it may not work properly on all operating systems and video cards.

	Added a special case faster 5x scaler for the "SDL soft" video driver.

	Added a faster generic integer scaler for the "SDL soft" video driver.

        PCE:  Added the ability to load a custom colormap(palette) by setting "pce.colormap" to the path of the colormap
        file.  The colormap consists of either 512 or 1024 RGB triplets, 8-bits per color component,
        in the order R,G,B,R,G,B,R,G,B,... .
        It is recommended that the colormap provide all 1024 entries(the first 512 entries are for normal mode,
        the second 512 entries are for grayscale/strip-colorburst mode). If it doesn't, Mednafen will calculate
        the grayscale colors using a formula similar to that used with the real VCE, but with more precision.
        The colormap may be disabled by setting the "pce.colormap" setting to an empty string, or 0.  Command-line
        examples:
                mednafen -pce.colormap /path/to/blueblue.cmap /yarr/pirate/booty.pce    [Enable]

                mednafen -pce.colormap 0 /some/where/over/the/rainbow/islands.cue       [Disable]

	Added a (convoluted) compiler bug test to tests.cpp, to guard against buggy gcc versions when
	compiling with -fno-strict-overflow with optimizations enabled.

	Added "frameskip" setting to disable internal frameskip for speed testing(because we invariably forget
	to disable manual frameskip disabling code changes after we're done running tests).

        Fixed a crashing problem when entering an invalid menu choice("0") in the cheat interface.  Thanks to
        tsenart for reporting the bug.

	Fixed several instances of mismatches between format strings and passed argument types, which could cause
        nonsensical information to be printed on big-endian platforms, and perhaps some little-endian platforms as well.

        Fixed the minimum field-width specifier on the statements that print the loaded game's CRC32 in several
        places.

        Added the "format(...)" function attribute to the MDFN_DispMessage(), MDFN_PrintError(), and MDFN_printf()
        function prototypes to catch format string errors.

	Changed the INLINE define to always force an inline with gcc(contrast with 0.8.x, where we introduced
	a new ALWAYS_INLINE in addition to INLINE).
	...and added a blip_inline that does the same for Blip_Buffer.
	...and changed various "inline" statements to INLINE and blip_inline, where appropriate.
	TODO: Audit our INLINE statements to make sure we're using them only in speed-critical code and with
	smallish functions.  Looking at Lynx and NES code here especially...

        NES: Fixed an intialization bug in mapper 193.

        NGP: Fixed an unaligned memory access bug in the memory r/w handlers, causing crashes on platforms
        that do not support unaligned memory accesses.

	Removed erroneous dependency on CD-ROM emulation when WonderSwan emulation is enabled in the configure script.

	The included Tremor is now compiled with "-fvisibility=hidden" to work around a dynamic symbol collision
        problem with libsndfile(BUT, -fvisibility is only available in gcc 4.0 and newer).
        This solution may not be correct...

	Updated Tremor to the latest SVN version.

	Upped the minimum playback rate to 22050 Hz, from 8192 Hz.  The lower rates aren't tested very often,
	and the sound resampling code works very poorly at such low rates(not to mention sound quality in general is
	going to be pretty bad at such low rates anyway).

	Added sanity checks to the first track number and total track count returned from libcdio, to prevent
	a crash in Mednafen if the libcdio driver fails and returns nonsensical values.

        Removed unused file sms/state.h.

        Fixed a very-old bug that caused joystick unique ID collisions if more than 2 of the same "type" of physical
        joystick were available.

        Mednafen is now compiled with -fsigned-char, to prevent any potential problems on systems with an "unsigned" char
        type as default.

	Reworked the setting code to use a multimap with a 32-bit key(CRC32 of the setting name) instead of a vector
	that was iterated over(TODO:  Sort settings written to the configuration file).

	PC-FX:  Adjusted the range of the I/O map mirror access range in the memory map, and added emulation of reads from it.

	PC-FX:  Refactored the KING BG drawing code, adding support for BG0 subscreen.  Fixes problems with
	"Angelique Special".  (We'll add a simple hack/very limited subscreen code to 0.8.x to fix this problem)

	PCE, PC-FX:  Fixed the emulation of SCSI command 0xDE, mode 0x1.  The value returned was too small by
	2 seconds.

	PCE, PC-FX:  Fixed the sector count for the last track(which influences the leadout track start position/total
	sector count) in multi-track CUE/BIN CDROM images.

	PC-FX:  Greatly improved the KING->RAINBOW block transfer logic(previously a hacky buggy mess).
	Fixes some minor glitches in Zenki.

        Fixed several problems in file.cpp, including buggy and overly-complicated MDFN_read*le() functions,
        and a problem with the const-ness of the return value of strrchr() with gcc 4.4.

        PC-FX:  Fixed the exception code set when an FPU divide-by-zero occurs(previously, it was being set to the
        integer divide-by-zero exception code).

	PC-FX:  Fixed the handler address called when a TRAP instruction is executed.

	PC-FX: Added boolean setting "pcfx.rainbow.chromaip", default enabled, that controls whether or not
	the chroma channel of the RAINBOW chip's YUV output(usually used when decoding still full-color or moving images)
	should be interpolated bilinearly.  Turning it off will make the output image appear blockier and slightly
	less blurry, and closer to what a real PC-FX displays.  For a good example of its effect, look at the scrolling
	red letters in "Kishin Douji Zenki" with it on, and then with it off.

        GBA: An error loading the custom colormap file is now treated as fatal.

	Increased the maximum X scale and Y scale sanity check value from 20 to 50.

        Fixed an off-by-one error in the software SDL graphics rotation code(used for Lynx and WonderSwan).

        SexyAL:  The return values of ALSA functions are now treated as errors only if they're less than 0, rather
        than non-zero as before.  Thanks to R.L. for pointing this out.

        The default "nethost" setting is now "fobby.net" instead of "mednafen.com".  The latter was allowed to
        expire and lost to domain squatters some time ago.  Domain squatters cause desires to commit grievous face-stabbing.
        However, the netplay server on "fobby.net" is not guaranteed to be up. :p

        Fixed the rectangle calculation for screen rotation with Lynx and WonderSwan to use X scale and Y scale
        values appropriately(they were reversed before; also, assuming square pixels on your monitor ;)).
        Rotation still poses a problem in fullscreen with the default settings, however.

	Added new entries to "InputDeviceInputInfoStruct" concerning rotated inputs, and removed the Lynx and WonderSwan
	partially-specific rotation code in drivers/input.cpp

        WonderSwan: Fixed a bug that made it impossible to push a direction on one D-pad while the opposing direction
        was being pressed on the other D-pad.

	fflush(stdout) is now called after printing status messages or errors(may be nominally slower, but should
	provide more information if something goes kaka on some platforms).
	TODO:  Synchronous error messages and status messages from the game thread, rather than asynchronous.

	Z80(SMS, NGP, MD): Ported the following changes from the FUSE SVN repository:
		Unhalt on NMI (thanks, Simon Owen).

	Changed how firmware is located.  Firmware is now searched in several locations, in this order:
		MEDNAFEN_BASE_PATH/firmware/SYSTEM_SPECIFIC_FIRMWARE_FILENAME_SETTING
		MEDNAFEN_BASE_PATH/SYSTEM_SPECIFIC_FIRMWARE_FILENAME_SETTING (for backwards compatibility)
	...or, if SYSTEM_SPECIFIC_blahblahblah has been set to an absolute path by the user, it will only search
	there.  Also, the firmware path override "path_firmware" setting has been added.  Note that setting "path_firmware"
	to a non-default value will cause Mednafen to only try to open SYSTEM_SPECIFIC_FIRMWARE_FILENAME_SETTING in
	that path, it won't look anywhere else.
	TODO:  Document all this in the primary documentation.

        Fixed a race condition that could cause rapid oscillation between fullscreen and windowed when trying to
        toggle it.
        ...and fixed a race condition that could cause oscillations when rotating the screen with Lynx and WonderSwan
        emulation.

	Changed the name of the mednafen configuration file to "mednafen-09x.cfg", to prevent conflicts with 0.8.x
	and older(when going back and forth).
	
	NES:  Renamed the misnamed Famicom input device "Quiz King Buzzers" to the correct name, "Party Tap".

        Fixed a bug when creating an SDL source surface, whose negative effects(clipping rightmost columns) could be
        triggered when the "sdl" vdriver setting was used with certain xscale and yscale settings that would
        cause a 1:1 pixel copy operation.

        PCE: Altered the Street Fighter 2 autodetection code to be data-agnostic.  The SF2 mapper will now be enabled for
        any ROM images 2MiB and over in size.

	Fixed string constant-to-(char *) problems in drivers/cheat.cpp

	PC-FX:  Fixed bugs in "Play Audio Track Index" and "Read Subchannel" MMC commands, fixing the totally broken
	cinematic sequences in "Boundary Gate".  There may still be bugs in these commands that don't cause any known
	problems with games, so I will need to run tests on a real system.

	PCE:  Fixed ST0, ST1, and ST2 instruction timings(they were too low by 1 cycle).

	(Autoconf/automake cleanups and fixes)

        NES:  Fixed "Time Lord" by altering the PPU startup sequence timing.

	Netplay (New commands, WIP)

	PC-FX:  Chroma keying is now disabled in the 7.16MHz dot-clock mode(the problem that making this change
		caused with Nirgends before was apparently a bug in the handling of RAINBOW's non-endless scroll mode,
		which was fixed during optimizations).

	PC-FX: Made various optimizations:
		Altered how chip linebuffer transparencies are expressed.  They are now expressed simply by the pixel
		being 0(along with layer number reorganization, the layer number in the upper bits of the internal
		pixel prevents a YUV-triplet of "0" erroneously being interpreted as transparent).

		Reworked the VDC layer mixing code to be simpler, and have separate optimized(if the compiler works
		properly :b) versions for the 4 different VDC 240-color-mode-enable settings.

		Rewrote pieces of the RAINBOW Huffman decoder to use LUTs.

		Rewrote the RAINBOW chroma-key evaluation code on suggestion of Exophase, and added several
		special-case faster versions for common simple chroma-key settings.

	PC-FX:  Modified the ADPCM play back code to use linear interpolation, with respect for the enable bits
		in the control register, and to use the OKI/Dialogic ADPCM decoder class originally written for
		PCE CD ADPCM emulation.

	NES:  Cleaned up the iNES loading code a bit, and added support for WRAM on a few mappers that nominally shouldn't
	have WRAM, enabled if the battery-backed bit is set in the iNES header.  Fixes "Family BASIC", and probably
	a few bootleg games as well.

	Added configure script option "--enable-altivec/--disable-altivec (default: enabled)" for compiling on
	PowerPC architectures where AltiVec is not supported, or causes problems.

        Fixed a call to putenv(), to pass a static character array initialized to a string constant instead of a string
        constant directly.

        SMS:  Removed the old unused Z80 emulator code from when SMS Plus was assimilated.

	NES:  Added support for mapper 163(TODO).

	NES:  Added support for mapper 241.

	PCE, PC-FX:  Improved LFO emulation again, fixing vibratto effects in the intro of "Hanii in the Sky".

	Debugger:  Fixed a bug in the trace log code.  It would cause the emulator to lock up if the user pressed
	Enter/Return in the prompt popup without any text in the input field.

	Fixed a few argument descriptions(invoked with the -help command-line switch) that weren't properly gettextized.

	TODO-itemize? Added Sega Genesis emulation:
		Based on cgfm2's Genesis Plus.
		Uses YM2612 emulator from Gens
		Uses Stef's C68k emulator(still needs more bug fixes for "The Lost Vikings").
		Uses blargg's Sms_Apu.
		Some code based on/imported from Genesis Plus GX.

	PCE:  Revamped input emulation:
		Individual devices(exluding multitap) are now in their own classes.
		Added incomplete emulation of the Tsushin Keyboard.
		Added setting "pce.input.multitap" to allow for disabling the multitap(enabled by default).

	Fixed a few deprecated const string to char* conversions in:
		v810_cpuD.cpp:188: warning: deprecated conversion from string constant to ‘char*’
		romdb.cpp:21: warning: deprecated conversion from string constant to ‘char*’

	(More driver interface changes)

	GB:  Corrected a lack of address masking in most of the cart RAM emulation code.  Fixes a few Chinese GameBoy
	Color games.

	GBA:  Fixed a buffer overflow in the ROM image loading code.

	NES: (Re?)-added support for mapper 240(it was erroneously listed in the documentation as being supported...).

	PC-FX:  Several variables related to subchannel reading weren't being saved in save states.  Fixed.  (This fixes
	save states made within the BIOS' CD-DA player)

	Changed default key assignments for d-pads on emulated input devices from WASZ style to WASD.

	Altered the save state format and file extensions.  Save states made from previous versions of Mednafen will obviously be
	completely incompatible with this version. (Support for older save states may be readded later...)

        Added setting "osd.state_display_time", to control the length of time, in milliseconds, the save state/movie
        screen is displayed after selecting a save state or movie.

	Added a save state function to the base Z80 emulation code(since the Z80 emulation is now used in 3 places).

	Added <string.h> to the global include list in mednafen.h.

	Moved the multi-byte single-variable decoding/encoding functions from endian.cpp to endian.h as inline functions.

        PC-FX:  Emulated gamepad button presses weren't being decoded from the driver-side data correctly(causing problems on big-endian
        platforms).  Fixed.

	SMS:  SMS pause and 2-player support were erroneously commented out.  Fixed.

	NES:  Fixed CNROM emulation initialization bug.

	PCE:  Added the VDC register select register to the debugger.

	PCE:  Reads from the timer count register the cycle it is set to reload after expiring will now return 0x7F.  Fixes "Battle Royale".

	PCE:  Rewrote arcade card emulation based on information from David Shadoff, and a tip from Exophase.  The ADPCM sound effects
	in Garou Densetsu II work correctly now.

	PCE:  ADPCM:	Combined the two dividers into one.

			Rewrote the ADPCM nybble decoder.

			Fixed an off-by-one-nybble playback bug.

			Altered how the read and write addresses are set.  Fixes the Super CD version of "Tengai Makyou Ziria", and
			"CD Mahjong Bishoujo Chuushinha".
			

	PCE, PC-FX:  Improved PSG LFO emulation.

	PC-FX:  Disassembly of the "nop" instruction will no longer show the virtually meaningless operand.

	PC-FX:  Fixed alignment and prettified the disassembly of LDSR and STSR instructions.

	Added boolean setting "debugger.autostepmode" that, when set to 1, will cause Mednafen to automatically start
	the debugger in step mode after a game is loaded(only if Mednafen has a debugger for the emulated system, of course).

        The most recently-saved save state slot will now be colored differently when selecting a save state slot.
	Increased the brightness of non-empty save state slots.
	Empty save state slots are now black instead of being partially transparent. 

	PCE:  Fixed emulation of a few VDC vertical timing registers when in SuperGrafx mode(this change shouldn't affect the released
	commercial SuperGrafx games at all, but it will fix a few graphical emulation problems when trying to play normal PCE games
	in SuperGrafx mode).

	PCE:  ADPCM software reset was erroneously also resetting the playback frequency.  Fixed.  (Fixes ADPCM voices in Gulliver Boy)

	Added magic testing functions to the MDFNGI structure.

	Added known file extensions to the MDFNGI structure.

        PC-FX:  KING BG and CG offset registers are now emulated as 8-bit instead of 9-bit.  This shouldn't affect emulation at
	all(these registers were write-only to the game code, and the background rendering code already
        effectively masked these to 8-bits when rendering), but it will fix potential confusion when using the debugger's register
	viewer.
	Also, did the same to the soundbox ADPCMControl register(limiting it to 6-bits, in this case).

	PC-FX:  Improved the logging of the ROM font system call in the debugger, to also include the callee address and the size of the
	glyph being requested.

	PCE:  Fixed disassembly of the JMP $(AAAA, X) instruction.

	GBA:  Fixed a startup crashing bug on big-endian platforms.

	Removed unnecessary indirection of sound buffer variables in EmulateSpecStruct.

	Changed many instances of *printf() and *scanf() to their trio equivalents.

	Changed instances of fprintf() in mempatcher.cpp to trio_fprintf() to work around major issues with pre-C99 standard C libraries.

	WonderSwan:  Added rudimentary support for playing back WSR(ripped WonderSwan music) files.

	Cleaned global header files.

	NES:  Replaced the old FIR+Blip_Buffer resampler with an experimental new, all-in-one, polyphase resampler, written with some code and help
	from blargg.  Two new settings were added to control its characteristics:
		nes.soundq - An arbitrary sound quality setting, default of 0.  Higher values will increase sound quality(decreasing
		passband width and increasing stopband attenuation), while lower values will decrease sound quality.  The maximum is 3,
		and the minimum is -3.  Going below sound quality -1 is not recommended

		nes.sound_rate_error - The error tolerance of the polyphase resampler's output rate versus the real output rate.
				       Lower values will cause the resampler's output rate to come closer to the real output rate, at
				       the cost of more memory usage(and possibly cache thrashing), while higher values will do the opposite.
				       The default is 0.00005.  The range is 0.0000001(most accurate) to 0.01(least accurate, will likely
				       cause sound to sound out of tune).
				       Changing this setting is not recommended for normal usage, though it may make sense to set it
				       to its minimum value if you are recording Mednafen's sound output.

	The setting <system>.scanlines now takes the opacity of scanlines directly, in percent(range 0-100), instead of the old totally-fubar
	formula.  
	WARNING:  THIS CHANGE BREAKS BACKWARDS COMPATIBILITY FOR THIS SETTING IN EXISTING CONFIGURATION FILES AND ANY FRONTENDS OR SCRIPTS.

	GBA:  Cleaned up a few benign shadowed-variables.

	GBA:  DMA registers were being saved as 32-bit arrays instead of 16-bit arrays in save states, potentially causing memory
	corruption, and broken save states on big endian platforms.  Fixed.

	Abused C++ function overloading to force the SFARRAY16, SFARRAY32, etc. macros in state.h to force a compiler error if they
	are passed arrays of an unknown/invalid type.  Updated GBA, Lynx, NES... to not save invalid types(usually with a typecast to
	the appropriate type, for union'd types).

	Added support in state.cpp and state.h for saving/loading bool types properly.

	Removed the hackish "bool8" type.

	Changed instances of manual SFORMAT structure creation in a lot of old system emulation code to use the SF* macros instead.

	GB, GBA:  Upgraded Gb_Apu and replaced Gba_Apu(a Mednafen-specific hacked-up ancient version of Gb_Apu) to a newer version 
	provided by blargg, that includes builtin support for GBA's legacy sound channels.  This change breaks save states for GB and GBA
	created in previous versions of Mednafen(though this shouldn't happen again, at least not for updates to the sound code).

	Added a "fullname" member to the MDFNGI struct.

	PCE CD, PC-FX:  Fixed display of CDROM data tracks in the debugger's memory viewer(it was broken sometime between 0.8.2 and 0.8.4).

	GBA:  The Load() function was returning a largeish integer, instead of 1, after successfully loading a ROM image.  Fixed.

	Removed the "fb" variable from the MDFNGI struct.

	Renamed "width" and "height" in the MDFNGI struct to "nominal_width" and "nominal_height", fixed NES and PCE emulation code to set nominal_height
	correctly, and modified save state code to use these variables for generating and displaying save state previews(TODO:  rewrite
	save state preview resize code to resize vertically when DisplayRect.h != nominal_height, though this should never occur at the moment,
	it may if we add support for systems with selectable interlaced video modes).

	Removed the save state preview width variable from the MDFNGI struct.

	Added an fb_height member to the MDFNGI struct.

	Fixed header include order in the JACK audio driver.

	GB:  Corrected loading/saving of MBC3 time values in save files(this will cause incompatibility with MBC3 RTC save games created in previous
	versions of Mednafen, unless they were created running on a 64-bit little-endian system).

	GB:  The setting "filesys.disablesavegz" will now affect GameBoy save files.

	MDFN_DumpToFile() now checks for errors in fclose().	

	Added preliminary movie(audio+video) recording support to a custom format.  A secondary 

0.8.6:
        PCE:  Removed a statement, that was used for debugging, that broke PC Engine multiplayer support in 0.8.5. (I'm not sure
        how it got there in the first place...).

0.8.5:

	Fixed a crashing bug when loading an uncompressed file and using the automatic IPS-patching feature when mmap() is available.

	PCE, PC-FX:  All SCSI CDROM commands are now logged in the debugger's log viewer(when logging is enabled, of course).

	Added group support to the debugger's log viewer.

	PC-FX:  Renamed the type of BIOS ROM font calls in the debugger's log viewer from "BIOS" to "ROMFONT".

	PC-FX:  BIOS filesystem syscall(for backup memory access) calls are now logged in the debugger's log viewer.

	PC-FX:  Added internal backup memory and external backup memory address spaces to the debugger's memory editor.

	PC-FX:  In the 263-line mode, line 262 is now reported as being during blanking time(as on a real PC-FX).  Fixes the annoying transparency layer
	flickering and other weird graphical glitches in Der Langrisser FX.

	Added setting "filesys.disablesavegz", to disable gzip compression when saving save states and backup memory.
	(In the case of backup memory, disabling gzip compression isn't supported for GB yet)

0.8.4:

	PC-FX:  Some RAINBOW registers weren't being reset on emulated system reset.  Fixed.

	PC-FX:  Added dummy support for the external bus reset register.

	PC-FX:  Altered the way garbage data is handled by RAINBOW to fix a graphics bug in the Tengai Makyu options screen.

	PC-FX:  Reworked a large part of the KING SCSI emulation code, and parts of the CDROM device emulation code.  Previously non-working-at-all games 
	"Battle Heat" and "Tengai Makyu" work now.
	The non-anime game mode in "Tyoushin Heiki Zeroigar" works now.  "Der Langrisser FX" no longer locks up if you skip the intro movie.
	"Yuna FX" no longer locks up in one of the intro movies.
	These changes will cause some save state incompatibilities with previous versions of Mednafen.  
	(Some of the SCSI changes also affect the PCE CDROM emulation, which may also result in save-state incompatibility issues, particularly if
	the save state occurred during a CDROM data transfer operation.)

	PC-FX:  Added setting "pcfx.cdspeed".  If you want to change this, read the documentation first!

	Cleaned up the video deinitialization code slightly, and fixed a few bugs in the OpenGL deinitialization code.

	PC-FX:  Reads from the dummy KING register 0x07 will now return 0xFF, per the devkit docs.

	PC-FX:  Reads from KING register 0x0B will now return the "DMA end" bit in D0 set correctly(at least, according to the developer docs).

	Fixed a compilation error after running configure with --disable-nes.

        PC-FX:  Reads from I/O port 0xFC0 will *now* return the current timer counter value.  The switch statement mask value was wrong...

	Removed the warning in the documentation about error correction of raw data track rips, as Mednafen will now perform simple correction
	using the EDC and L-EC data(since 0.8.4-rc3).  This could conceivably cause problems with naive hacks/translations/patches that neglect to update
	the EDC and L-EC data, so it can be disabled by setting the setting "cdrom.lec_eval" to 0.
	L-EC correction is based off code from dvdisaster(http://dvdisaster.net/).

	PCE, PC-FX:  Removed some debug printf()'s that were left in 0.8.4-rc3 by mistake.

0.8.4-rc3:

	PCE:  Added preliminary(it works, but the code needs to be cleaned) ADPCM support for HES rips.

	PCE:  Interrupts will be enabled with a CLI after a HES' init routine is called, to fix rips that neglect to do it themselves.

	PCE:  Added support for HES rips that try to write data where it really shouldn't be written(some CD-ROM game rips do this), though a warning
	will be printed the first time this occurs after loading.

	PCE:  Added sanity checks to the HES loader to prevent crashes if invalid data is present.

	PCE:  Reads from the I/O port will now return D7 as clear when emulating a PCE CD game.

	PCE:  ADPCM RAM is now reset(to 0) on emulated PCE reset.

	PCE:  Sprites trying to pull tile data from $8000-FFFF of VRAM will now be invisible(probably not correct, but trying to emulate indeterminate
	effects is too difficult :b).  Fixes a minor sprite garbage issue in Camp California.

	PCE, PC-FX:  Fixed VRAM DMA source/dest increment/decrement bits(the source and dest were flipped).  Fixes a problem with Fushigi no Yume no Alice.

	Moved some code in the source root directory to appropriate subdirectories.

	Added setting <system>.debugger.disfontsize, valid settings being "xsmall", "small"(default), "medium", and "large", to control the font
	size used to draw the disassembly text.  Note that there may be overlap with other parts of the debugger at font sizes larger than the default.

	Refactored a few address space and register group debugger support functions out of individual system code.

	Fixed various low-impact memory leaks.

	The version of Mednafen last run is now stored in the configuration file as a comment(this will be necessary for changes in 0.8.5 or later
	that will involve proper escaping/unescaping and quoting of strings, to prevent problems with extra whitespace added by manually editing
	the configuration file).

	Fixed state rewinding on big-endian machines, and removed some unnecessary operations from the state rewinding code path.

	Mednafen will now refuse to try to load ROM images larger than 64MiB, as a sanity check.

	mmap() and madvise() will now be used to load ROM images, assuming they're available(UN*X only, generally).

	Errors during automatic IPS patching are now fatal.

	Sped up loading gzip'ed ROM images.

	Removed a global variable from the NES emulation code that had invaded state.cpp.  Though, this makes the error message when trying to use
	save states with authentic Game Genie emulation very unhelpful...

	GBA:  Added support for loading a real GBA BIOS ROM image, using the setting "gba.bios".

	GBA:  Added the ability to specify the backup memory type for games by creating a file with the same name as the ROM image, 
	with the extension replaced with "type", in the "sav" directory under the Mednafen base directory.
	 Example: SexyPlumbers.gba -> SexyPlumbers.type

	One or more of the following strings(on separate lines) may appear in the file:
		sram
		flash
		eeprom
		sensor

	Additionally, the flash size can be specified by specifying the size(real size, or divided by 1024) after the type, like "flash 128" or
	"flash 131072".

	PCE:  Improved noise LFSR and volume emulation, thanks to cgfm2 for the detailed information.

0.8.4-rc2:

	Added meaningful descriptions to the command.* settings.

	PC-FX:  Added an experimental feature to use mmap() to create a virtual 32-bit address space to speed up V810 instruction reads.
	Enable by setting "pcfx.use_mmap" to 1.  Of course, it won't work on 32-bit CPUs!  Please read the documentation, there are caveats!

	PC-FX:  Removed some redundant logic in the KING BG 8x1 drawing functions.

	PC-FX:  FX VCE and VDC port access are now emulated as 16-bit, as in the real PC-FX, instead of 8-bit.

	PC-FX:  Altered the debugger's memory peek and disassembly functions to not read the emulated memory map in the 0x80000000-0xEFFFFFFF region.
	(Reading those addresses can cause side effects, and this is a temporary workaround)

	PC-FX:  Changed the V810 memory read handlers to read RAM faster than BIOS ROM.  This will probably increase host CPU usage while in the BIOS
	loading screen, but decrease it in the actual game.

	PC-FX:  Altered the V810 opcode fetch logic to do 16-bit reads instead of 32-bit, fixing potential crash issues
	when Mednafen is run on CPUs that don't support unaligned memory accesses.

	PC-FX:  Factored-out a few address masks in the memory read and write handlers.

	PC-FX:  Replaced most of the V810 signed-variable bit-size converting code that uses conditional branches to code that uses 2 shifts,
	taking advantage of modern 2's-complement CPU's arithmetic right-shift capabilities.  It reduces generated machine code size slightly,
	and should provide a slight speed boost as well.

	PC-FX:  Optimized V810 address mode decoding by removing an unnecessary conditional jump.

	Added an important warning to the documentation regarding Mednafen's ripped CD image support:

		 Mednafen does *not* correct bit errors in the user data of "raw" data track rips.  It is strongly recommended to use
		 "cooked" data track rips(2048 bytes/sector for mode 1, not counting any subchannel data) with Mednafen.

	PC-FX:  Improved exception handling, and added untested emulation of the TRAP instruction.

	Debugger:  Rewrote the memory load and dump functions to be faster, and also to fix a bug in the load function that would
	trash memory if the user tried to load more data than the specified file contained.

	Debugger:  Using the Goto function will no longer cause memory edit mode to be exited.

	Debugger:  Fixed a bug that occurred when entering a prompt(goto, change charset, etc.) while in editing mode, that caused
	keyboard focus to be misdirected.

	SexyAL:  The ALSA driver will try to set smaller period sizes when lower playback rates are used.
	
	GBA:  Changed the heuristics used to detect SRAM/Flash usage, though they're still not perfect...if a game tries to use flash
	memory improperly, it could be detected as using SRAM instead, or silently corrupt parts of flash memory...

	GB:  Fixed sound register initialization on reset, fixes missing sound in A Boy and His Blob

	GB:  Slightly increased the contrast of GBC colors.

	GB:  Reworked blitting of mono GB colors for future features.

	GB:  Removed a redeclaration of a variable in the same scope in a function in gfx.cpp.

	Debugger:  Fixed PCE VRAM breakpoints to work with block memory transfer instructions.

	Debugger:  Fixed parsing of single-address breakpoints after range breakpoints.

	Mednafen will now print out SDL version information when it starts.

	(The Win32 build will now be distributed with SDL 1.2.12)

	Debugger:  Fixed -/+ opacity adjustment to not be done when entering text(such as in a dialog).

	Debugger:  Fixed null termination of the ASCII string buffer displayed in the memory watch section.

	PCE, PC-FX:  Fixed the frequency of the highest-frequency noise generation register setting, hopefully!

	PCE, PC-FX:  Changed the LFSR to 16-bit, and to use a maximized tap configuration, to make the noise sound a bit closer to a real
	PC Engine's(at least, in my opinion!  It still sounds slightly more bassy than a real PC Engine, but that might be due to filters
	on the PC Engine's sound output...).

	Non-power-of-2-sized-textures will not be used when a pixel shader is selected and enabled, to prevent a severe graphical corruption
	regression introduced in 0.8.3-beta.  I'm not sure if it's a problem with Mednafen's pixel shaders or the graphics card...

	SMS:  Fixed soft reset.

	SexyAL:  Removed smallc.c, and modified the OSS driver to use snprintf() instead of the single function smallc.c provided.

	SexyAL:  "sexyal.h" is now included before all other header files.

	SexyAL:  Revamped parts of the ALSA driver to fix reported lockup issues under certain conditions.

0.8.4-rc1:

	Added preliminary support for inputting text directly into the selected address space in the debugger's memory editor.

	Moved the temporal video blurring code in mednafen.cpp to vblur.cpp

	Added settings "filesys.snap_samedir", "filesys.sav_samedir", "filesys.state_samedir", and "filesys.movie_samedir", default 0, that when
	set to 1, will read/write the respective files from/to the same directory the game was loaded from.  If you want
	to use these, PLEASE read the documentation first, there are caveats!

	PCE CD, PC-FX:  Added support for MS WAV file offsets and lengths in TOC files.

	PCE CD, PC-FX:  Fixed a bug that caused CD-DA playback to be off by one sector(the first sector specified was being skipped).

	Began work to allow settings to be temporarily overridden during netplay and movie playback.

	PCE, PC-FX:  Added settings "pce.disable_softreset" and "pcfx.disable_softreset", default 0, which when set to 1 will disable 
	simultaneous pressing of RUN and SEL.  The current implementation kind of abuses the driver-side code that disallows opposing diagonal buttons
	being pressed at the same time, so if we ever change that (undocumented) feature to go with the last-pressed direction rather than
	clearing both, the description of these settings in the documentation will need to be updated.

	PCE CD, PC-FX:  Read operations and CD-DA playback will now be stopped when the RST signal is asserted(fixes soft reset issues on PCE CD
	games).

0.8.3-beta:

	Fixed an OpenGL function typedef in drivers/opengl.h.

	PC-FX: Writes and reads to the KING and FXVCE chips "mapped" in parts of 0xA0000000 through 0xBFFFFFFF will now go through the respective
	data port write handlers, instead of directly to KRAM or palette RAM.

	If non-power-of-2-sized OpenGL textures are not available, and bilinear interpolation or a pixel shader is enabled, and the emulated
	system resolution changes(such as on the PCE), two lines of black pixels will be written to the texture buffer to prevent the display
	of multi-colored garbage at borders, though the right+bottom borders will still be slightly darker than they should be...

	PC-FX:  Added support for VDC data port writes via writes to 0xB4000000-0xB7FFFFFF and 0xB8000000-0xBBFFFFFF in the V810's
	memory map.  Fixes major graphical problems in "Super Power League FX".

	Updated the srwcompressor description in mednafen.cfg.

	PC-FX:  KING BG1-3 scroll registers are now emulated as 10-bit instead of 11-bit(BG0's are still 11-bit), and BG1-3 virtual
	screen size is now limited to 512x512(BG0 is still 1024x1024), per the official developer documents.

	Non-power-of-2-sized OpenGL textures will now be used if the "GL_ARB_texture_non_power_of_two" extension is detected.

	Fixed a bug that sometimes would cause black screens when using the "sdl"(non-default) video driver(SDL surface per-pixel alpha blending
	was enabled when it shouldn't have been).

	PCE:  Fixed a line clearing bug when BG is disabled that was causing some minor graphical garbage on some games that
	use multiple horizontal resolutions per frame.

	Changed some nonsensical #ifdef statements that were intended to always evaluate as false with "#if 0".

	Renamed SYSTEM_CLOCK to System_Clock in scsicd.cpp to work around a potential macro conflict on OSX.

	PC-FX:  Added partial support for NEC's "scan" SCSI command, used in the BIOS' CD-DA player screen.

	PC-FX, PCE CD:  Revamped parts of the subchannel emulation code.  The PC-FX BIOS CD player screen's time display works now.  Also, an important
	note regarding cdrdao "TOC" files and "RW_RAW" subchannel data was added to the documentation.

	PC-FX:  Fixed a bug in the KING BG0 scrolling+rotation code for 16-color and 4-color backgrounds with BATs that was causing graphical
	corruption in the PC-FX BIOS CD player screen.

	Fixed a compilation error when --disable-debugger was passed to the configure script.

0.8.2-beta:

	Added blargg's experimental blz compressor, for use with state rewinding(change the setting "srwcompressor" to use it).
	(This was added a while back, after 0.8.1, but I forgot to document it)

	SMS,GG:  Added missing default key configurations.

	PC-FX:  Added untested emulation of scaling+rotation in 4-color KING BG mode.

	PC-FX:  Added emulation of scaling+rotation in 16-color KING BG mode.  Fixes a problem with the background in the last stage of Zenki.

	PCE:  Added VRAM size constants to the beginning of vdc.cpp, and modified the code to use them, to allow a certain crazy person to compile
	a custom version of Mednafen which emulates extra VDC VRAM.

	PCE:  Removed 0xEB as SBC immediate in the disassembler(it was left over from the 6502 disassembler).

	Changed setting type of setting "vdriver" to a string, with possible values "opengl" and "sdl"(and "0" and "1" for backwards compatibility,
	of course).
	
	PCE:  Set the default char set in the debugger's memory viewer to shift_jis.

	PCE:  Fixed a missing #include <iconv.h> in debug.cpp.

2007-6-17:

	PC-FX:  Improved VCE<->VDC<->KING scanline timing to fix a lockup issue in Anime Freak Vol 4(polling the FX VCE raster counter register
	vs VDC VBlank IRQs).  Unforunately, this change has caused some 1-line graphical glitches in games that do "raster effects".  This
	may be solved once/if V810 emulation has accurate cycle counts, which would require emulating instruction cache and prefetch logic. -_-;

	Fixed branch traces display in the debugger, it was broken to only display half of them twice sometime since 0.8.1.

	PC-FX:  Optimized RAINBOW JPEG-like decoding by using a static implementation of bit fetching functions(instead of a class).

	PC-FX:  Added untested emulation of the CAXI V810 instruction.

	PC-FX:  The RAINBOW transfer block count register is now emulated as being 5-bits instead of 16-bits, fixes screen issues(blue blue!)
	after defeating the snake monster in Zenki.

	PC-FX:  If a KING BG is set to BAT+CG mode, but is missing a BAT fetch microprogram, it will now be drawn in CG mode(previously, the BAT
	data was simply being forced to 0, which was wrong). It's confirmed on a real system.  Fixes missing graphics in "Tonari Princess no Rolfee".

	PC-FX:  Fixed transparency testing with 16M color KING backgrounds(only 1 Y component of every 2 pixels was being checked, now
	both are checked).

        PC-FX:  Implemented back cellophane support.  Fixes fadeouts in "Lunatic Dawn", fadeins in "Team Innocent", and screen darkening issues
	during dialogue in "Last Imperial Prince"(and also exposes a bug that LIP probably has on a real system too, wherein CCR isn't reset
	to black after the dialogue is over, leaving the upper and lower parts of the screen outside the play area slightly dark greenish).
	The hindmost color when mixing the layers is now set to palette entry #0, except when all layers are disabled(set to black),
        or front cellophane(set to black) or back cellophane(set to value in CCR) is enabled.

	PC-FX:  Added emulation of the expansion backup RAM.  While not particularly necessary since Mednafen already emulated backup memory
	separately for each game, it does give a few extra save slots to some games(such as Miraculum ^_^).

	Added opacity control(-/+) to the debugger.

	Added an always-on zero page view to the CPU debugger for NES and PC Engine.

        Reduced the size of the game thread event queue to a somewhat saner size, and added extra buffering so that its mutex is only locked for
        a minimal amount of time to eliminate the chances of deadlock with this mutex.

	GBA:  Fixed a bug that caused only half of the legacy wave sound channel's sample data to be saved.

	GB:  Updated to Gb_Snd_Emu 0.1.5, fixes hanging note problems on some games, and cleaned up the sound save state code.

2007-5-30:

	Added preliminary Sega Master System and Game Gear emulation based off of SMS Plus.

	Factored the remaining state rewinding code out of the individual systems' code.

	Fixed a minor visual bug when using state rewinding(also with save states, but it's not really visible) with the NTSC blitter.

	Simplified how state rewind requests are passed to the emulation code, and fixed a small bug when using state rewinding with
	frame advance(now, a rewind will only occur if the state rewind button is held down while the frame advance button is pushed).

	Changed a local variable name in selblur.cpp to fix compilation on OS/X(and maybe PPC in general?), thanks to Matt Beaumont
	for pointing out the conflict with a definition in altivec.h.

	PCE:  Fixed cycle counts for BRA and BSR(they were 1 too high).

	PC-FX:  Reads from I/O port 0xFC0 now return the current timer counter value.

	Parameters to MDFNI_Emulate() and the internal system Emulate() functions are now passed through a structure, to allow
	for easier future expansion.

	PCE, PC-FX:  Fixed audio track reading from physical CDs on big-endian platforms.

	NES:  Fixed a bug that caused an emulator crash if Game Genie-style cheats were enabled at the same time as authentic Game Genie
	emulation was enabled.

	Added setting "srwframes", which controls the number of save states to keep when state rewinding is enabled.

	Debugger:  Fixed a bug that caused a crash if a PC breakpoint was triggered while the debugger screen was disabled.

	Added an experimental logging feature to the debugger, currently only used by the PC-FX emulation code, to log CD-ROM read commands
	and calls to the PC-FX BIOS' glyph bitmap address function, both of which should be quite helpful in translation work...

	PCE, PC-FX:  Moved the mouse sensitivity adjustments to the driver side to fix mouse emulation with network play and movies
	when using non-default pce.mouse_sensitivity/pcfx.mouse_sensitivity settings.

	Added a few more entries to the in-emulator help screen.

	PC-FX:  Increased the keyport latch delay, and added emulation of the PC-FX mouse.

	PC-FX:  The keyport data ready flag is now reset only on low reads from the keyport data registers.

	PCE:  Fixed disassembly of the BSR instruction.

	NGP:  Fixed Z80 emulation cycle counts(they were far too low), and fixed emulation of the EI delay.

	GB:  Reworked various things, including Z80 interrupt and HALT emulation.  GameBoy emulation will be a bit more CPU intensive now,
	and save states from older versions won't work with this version(sorry!).  These changes could easily break some games, but...at least
	"A Boy and His Blob" works now!

	GBA:  Changed the file type detection code to reduce the chance of false positives.

	PCE:  Files with the extension "sgx" will now be treated as raw SuperGrafx ROM image files(AKA SuperGrafx emulation will be enabled).

	NES:  Refactored the file type detection code, so that emulation data structures and memory won't be initialized unless it's
	a recognized file type.

	NES:  NSF(but not NSFE) game/album name, artist, and copyright strings are now trimmed of leading and trailing whitespace.

	Added MDFN_trim(), MDFN_rtrim(), and MDFN_ltrim() functions.

	WonderSwan:  Fixed a buffer overflow bug in the sprite drawing code.

	GBA:  Flash and SRAM save games are now stored gzip-compressed.

	PCE:  Fixed raw bytes display of relative branch instructions in the disassembler.

	PC-FX:  Added CD-ROM data tracks to the memory debugger/viewer, read-only, however.

	The selected character set in the memory debugger/viewer will now be saved for that emulated system when exiting.

	Fixed text search in the memory debugger/viewer(iconv() was being called before the variables passed to it were initialized, oopsie).

	Simplified the scrolling code in the memory debugger/viewer, the line containing the cursor will now always be centered vertically
	on the screen.

	PCE:  Fixed an ambiguous if() statement in huc.cpp in the BRAM emulation code.

	GB:  Fixed a semi-ambiguous boolean math statement in the cpu emulation code.

	Fixed an ambiguous else statement in the throttling code in drivers/main.cpp

	NGP:  Neo Geo Pocket emulation code is now compiled with -fno-strict-aliasing to work around issues in the TLCS-900h code.

	GBA:  Removed unused ELF code.

	Fixed some implicit conversions of const char * to char *. (stupid putenv() prototype grumble mumble)

	<stdlib.h> is now included in "mednafen.h", added notes to README about system header files automatically included,
	and removed inclusions of such header files in source code files that include mednafen.h(most do, and should).  This change
	was brought about by gcc 4.3...it may not be the best way in regards to compile-performance wise, but it is more convenient
	and safer than #include'ing the system headers manually(and forgetting to >_>).

	Modified instances of "Makefile.am" to stop including the top directory in the include search path, and removed the symlink of
	config.h to include/config.h, and fixed the references to "config.h" in intl/Makefile.in.

	PCE:  Made hes.cpp use MDFN_de32lsb() and MDFN_de16lsb() from endian.cpp.

	PCE:  Changed some instances of free() to MDFN_free().

	GBA:  Un-inlined the CPUWriteMemory() function.

	GBA:  Rewrote parts of the save-game(flash, eeprom, sram) code to make more sense!  EEPROM data is now stored with a file extension "eep".
	

0.8.1:

	PC-FX:  Added more registers/SetRegister() support to the debugger.

	Trying to edit a register in a debugger register groups with a NULL SetRegister method will no longer crash Mednafen.

	NES:  Fixed a misnamed save state variable in the FME-7 code.

	Mednafen will now be compiled with "-fno-strict-overflow" if the C compiler supports that option, for the upcoming gcc 4.2 release,
	as I'm not sure this optimization is safe with Mednafen's code(it may be, but better safe than somewhat sorry!).

	PCE CD, PC-FX:  Added partial support for cdrdao "TOC" files, including support for rips with subchannel data, but it must be in the "RW_RAW"
	format.  Ripped CD+G CDs can be played back this way in the PCE CD and PC-FX BIOS CD players.

0.8.0-beta:

	PC-FX:  Improved VDC chain/256-color mode emulation.

	PC-FX:  Altered FXVCE->VDC vsync emulation.

	PC-FX:  Revamped RAINBOW code, adding support for JPEG-like encoded content, thanks to David Michel's help.

	WonderSwan:  Fixed a bug in the debugger(HAH) regarding the display of HBTimerPeriod and VBTimerPeriod(they were erroneously listed as 1-byte
	variables, when they should've been listed as 2-byte variables, which caused the values to wrap around to the other side of the screen if they
	were >= 0x100).

	GBA:  Structurized free-floating various variables...there shouldn't be any regressions, aside from save state incompatibility, unless
	typos were made(if so, please tell me!).

	PC-FX:  Added support for scrolling/rotation in 64K color mode.

	PC-FX:  The KING data structure(including KRAM) is now dynamically allocated.

	GB, GBA:  The memory for the color map/filter is now dynamically allocated.

	PC-FX:  Changed the size of the emulated X tile coordinate register when drawing KING BG, affecting in-range calculation when in 
	non-endless scroll mode.  Fixes missing eyes and mouths and other craziness in cutscenes in Chip Chan Kick.

	PC-FX:  Fixed playback of the last 4 samples of an ADPCM playback sequence, fixes crazy volume problems in "Team Innocent".

	PCE:  VDC chip data structures(including emulated VRAM) are now dynamically allocated.

	NES:  FDS and several mappers' larger data structures are now dynamically allocated.

	NES:  NSF write handler info structure is now dynamically allocated, which should reduce memory usage by 1 or 2 MiB(depending on the platform)
	on other games/files.

	PCE:  CDROM-related memory is now dynamically allocated, which should reduce Mednafen's memory usage for non PCE-CD games
	by at least 2.25MiB.

	PCE:  Added untested support for the Tsushin Booster's expansion RAM

	Replaced the hard-coded file extension tests when loading from a ZIP archive in MDFN_fopen() with code that tests extensions passed as
	a double-NULL-terminated(each entry is single-NULL-terminated) string to MDFN_fopen().

	Added QuickLZ to the codebase, and added the setting "srwcompressor" to specify which compressor to use for staterewinding,
	"minilzo" or "quicklz", with "minilzo" as the default.  QuickLZ can be considerably faster at compression than MiniLZO, though QuickLZ is written
	with x86 and x86_64 CPUs in mind, and performance will likely suffer on other platforms, and its compression ratio isn't as good
	as MiniLZO(which itself isn't that great!).

	PCE:  Added the settings "pce.adpcmvolume", "pce.cddavolume", and "pce.cdpsgvolume", for people who like music more than sound effects, or
	vice-versa for some weirdos! ;)

	PCE:  Burst mode will now be tested for when the VDC would enter the active display area.

	PCE:  Altered the relative volume of CDDA vs PSG vs ADPCM with CDROM games, based on tests done on a real system.

	PCE:  ADPCM no longer uses saturated addition for the current output value, instead just wrapping(like apparently occurs on a real system).

	PCE:  Scrapped the old SCSI CDROM code, it now uses code that was previously PC-FX only(and was abstracted to be used for both).
	The Game Express CDROM card image now works, including Game Express CD games(at least Hi-Leg Fantasy ;)).  John Madden Duo CD Football
	works.  Steam Hearts plays stage music now.  3x3 Eyes doesn't seem to have desynchronized audio anymore during cutscenes...

	Updated libmpcdec to 1.2.5(I think it was 1.2.2 previously...).

	PC-FX:  Added VRAM and FXVCE palette RAM to the debugger's memory editor.

	PCE,PC-FX:  Fixed CUE+BIN pregap handling, it was totally borked before.

	PC-FX:  Improved byte writes to KING I/O ports, fixes graphics problems in First Kiss Monogatari and Pia Carrot He Youkoso

	PC-FX:  Changed how reads/writes from/to KING registers 0x09 and 0x0A are handled.

	PC-FX:  All writes to 0x80000000-0x80000FFF are now translated to I/O port writes.

	PC-FX:  Reads from "unmapped" areas in the V810's memory address space will now return 0xFF(or 0xFFFF, or 0xFFFFFFFF).
	This fixes a lockup that could occur
	in Power Dolls FX...the game seems to be trying to use 4MiB of RAM when there's only 2MiB of RAM in a PC-FX!
	Also, while this is probably the correct value to return for unmapped areas < 16MiB, it's not correct for at least some higher addresses...
	more tests are called for, but we can't just dump the entire 4GiB address space...can we?

	PC-FX:  D4 of reads from KING register 0x05 will now be set if a SCSI CD interrupt is pending.

	PC-FX:  Fixed READ TOC SCSI command emulation.  The starting track field is no longer treated as BCD.  Silly me...  Fixes
	"Power Dolls FX" ADPCM sounds, and probably other games that have data tracks numbered 10 or above...

	PC-FX:  D0 of reads from the KING DMA status registers is now the only bit returned.

	PC-FX:  D0 of writes to the KING SCSI DMA length register is now ignored.

	PC-FX:  Started work on initial support for for KING's 1M KRAM chip mode...I need to run tests!

	PC-FX:  Reads from KING register/port 0x05 will now return the ATN and ACK SCSI status bits.

	PC-FX:  Reads from KING register/port 0x04 will now return the SCSI status bits.

	PC-FX:  Changed reads to KING registers/ports 0x01, 0x02, and 0x03 to return the last values written to those registers, rather
	than setting the bits returned corresponding to the current SCSI status bits.

	PC-FX:  Improved keyport emulation, fixes Can Can Bunny Extra DX title-screen "lockup".

	PC-FX:  Added support for negative KRAM increment values on read/write(king register 0xE).

	PC-FX:  Fixed the SCSI bits returned on port $600 reads:  D17 now returns SEL status, and D23 now returns RST status(instead of ATN).

	PCE:  Block memory transfer instructions are now emulated at 6 cycles per byte transfered(+extra if VDC is accessed) instead of 5, to 
	match tests done by malducci.  This does break Wonder Momo, unfortunately...

	Moved the Q-subchannel simulation code to the general CD-ROM reading interfaces, and made PC Engine CD and PC-FX CD emulation both use it.
	Also, the code will now set the index data field to index 0 for pregap areas, but...this is only possible when using disc images, due
	to libcdio(or CD-ROM in general) limitations. :(
	Ideally, on a physical disc, we would read the Q subchannel data directly, but...I'm not sure that all drives can read and return this
	data, and using libcdio's direct MMC functions results in much much more latency(probably because it bypasses the OS's caching
	of CDROM data), which would require an extra CDROM reader thread, which does its own caching and prefetch, in Mednafen.  Maybe later!

	PC-FX:  Fixed cmpf.s emulation, fixes lockups in "Pachio Kun FX".

	PC-FX:  Added a tidy structure to contain SCSI command numbers, CDB lengths, and function pointers.

	PC-FX:  Added support for SCSI command 0x08(READ6), which "Mahjong Gokuu Tenjiku" uses.

	PC-FX:  Removed most of the 32-bit I/O and memory read/write functions, which are now handled by calling the 16-bit functions twice.

	PC-FX:  Modified the KING background rendering code to only draw to one buffer, instead of multiple buffers that are later mixed, 
	to improve speed slightly.

	PC-FX:  The raster counter returned on reads from FX-VCE now returns correct(I hope...at least according to a simple test I did on a real PC-FX!)
	values in vblank.

	PC-FX:  SCDI CD interrupts on end of CD-DA track playback are now emulated.

	PC-FX:  SCSI CD "Test unit ready" command now expects to receive 6 data bytes total(1+5) instead of 1.
	I'm not sure if this is correct with the PC-FX, but it matches the SCSI specs, so I'll keep it this way until shown otherwise.

	PC-FX:  A17 of the effective KING BG CG and BAT addresses are now fixed to the CG and BAT offset settings, respectively, during rendering.

	PC-FX:  Added support for non-endless-scroll in BG0 rotation mode.  Fixes the title screen flipping effect for
	Last Imperial Prince.

	PC-FX:  When a VDC layer has the same VCE priority as a KING BG layer, the VDC layer will now be shown on top.  I don't know if this is correct...
	but it does fix a problem with disappearing sprites when leaving the airship in Miraculum.

	PC-FX:  Added KING BG0 scaling/rotation support, but only for 8bpp backgrounds(direct or indirect) in endless scroll mode for now...
	Fixes graphics in Miraculum(yay!) and Konpeki no Kantai.

	PC-FX:  Fixed direct CG mode width mask, corrects graphics bugs in "Boundary Gate" and others.

	PC-FX:  Added partial microprogram emulation, fixes junk graphics in Megami Paradise II.

	PC-FX:  Combined the different KING background non-endless/endless and direct/indirect rendering codepaths.  This will make it
	a bit slower, but much more maintainable and...changeable!

	SexyAL:  Added support for sound cards that don't support interleaved stereo samples...probably.

	Changed the font glyph cache to use an array of pointers instead of 2-dimensional array.  This reduces resident memory
	usage considerably, even on systems with 64-bit pointers.

	Readded the old 6x13 and 12x13 fonts for future usage in the debugger.

	Fixed the documentation to list the controls for configuring virtual devices as ALT+SHIFT+1, ALT+SHIFT+2, etc. instead of ALT+1.
	Oops.

	PC-FX:  Made fairly invasive minor optimizations/refactoring to the cellophane code...
	I *have* tested it, and hopefully it won't break anything that worked before!

	PC-FX:  Fixed a clipping bug in KING BG non-endless scrolling mode in regards to X scroll wrapping.  Fixes the disappearing boss problem in 
	Stage 2 of Tyoushin Heiki Zeroigar!

	PCE:  The soft reset function(F10 key by default) no longer soft-resets the PCE, as such a button doesn't exist on a real unit, and
	could cause problems with some games, so it causes a hard reset(the same as the F11 key) now.

	PCE:  Added PSG registers to the debugger.

	Enclosed many strings in _() or gettext_noop() for translation purposes.

	Altered po/Makefile.in.in to pass "-N" to msgmerge, to disable fuzzy string matching.  Fuzzy strings are braindead I say!

	Reworked MDFN_malloc(), it now takes a purpose, and on error, will print out the number of bytes attempted to be allocated,
	the purpose of the allocation, and the file and line number in which the allocation was attempted(through macro magic!).

	PC-FX:  Changed the 7.16MHz dot-clock emulation mode to use an internal layer 1024-pixels wide(the least-common multiple of the
	2 different screen resolutions that are mixed by the video chip), rather than having 2 different
	layers that are merged by the video code(which causes problems on edges).  This new method is much slower, unfortunately...
	The overlay code that supported this in the driver code and the interfaces have also been removed, as it is not used, and will not be used.
	ADDITIONALLY, a setting "pcfx.high_dotclock_width" has been added.  The default is, of course, 1024, but other accepted values
	are 341 and 256, though I REALLY don't recommend using 256, as it will cause dropped pixels, whereas 341 will only cause somewhat
	distorted pixels horizontally.  The advantage of using 341 over the default of 1024 is SPEED, and bilinear interpolation(if enabled) will
	work much better as well.

	PC-FX:  Fixed major problems when using more than one breakpoint of a type(read, write, etc.); it also occurred with the PCE debugger,
	but only with Aux breakpoints.

	PC-FX:  Fixed the VDC state restore code to properly recache all the tiles, instead of half of them!

	GB, GBA:  Fixed a few duplicate and misnamed variables in the save state structures.

	PCE, PC-FX:  Fixed a misnamed variable in the VDC save state structures.

	Lynx:  Removed a duplicate variable in the CPU save state structure.

	PC-FX:  Save states are now named so that they can be shared among CDs in recognized multi-disc sets(previously only .sav games were).
	This is intended to emulate "hot-swapping" as far as the game is concerned(though you will need to exit the emulator and load the second
	disc, so it isn't truly hot-swap ;)).
	When a game requests you to change the disc, the procedure is:
		Eject virtual disc(F8 key).
		Save state.
		Exit emulator.
		Load emulator with second CD.
		Load state.
		Wait for the game to load it. :b

	PC-FX:  Implemented virtual CD insert/eject, via the F8 key.

	PC-FX:  Added dummy handling of SCSI command 0x01(rezero unit), Doukyusei II no longer aborts the emulator.

	PC-FX:  Fixed bitstring instructions to fetch from the proper source address, fixes major graphics corruption bugs in "Anime Freak FX Vol. 4"
	and probably some other games as well.

	PC-FX:  Fixed RAINBOW decoding to not begin block decoding until a 0xFF is discovered in the bytestream.  Fixes some graphical problems
	in "Ojousama Sousama".

	PC-FX:  Fixed the CD-DA playback speed calculation to match with tests I performed on my own PC-FX with a pure sine wave(interestingly,
	there was some really weird frequency aliasing at +10% playback speed on a real PC-FX...).

	WonderSwan:  Refactored the SRAM and external EEPROM code, and added support for larger SRAM sizes(Dicing Knight works now!).

	PCE:  Extended the Sherlock Holmes 1 hack to Sherlock Holmes 2 as well.

	The address displayed in the "Cursor position" field in the memory viewer/debugger is now masked properly.

	PC-FX:  Fixed the ADPCM lowpass filter rolloff frequency calculation(forgot to divide by 2!).

	PC-FX:  Changed priority handling of KING background for priorities 5-7, though I don't know if the new way is correct...  fixes
		a graphical bug in "Power Dolls FX".

	PC-FX:  The ADPCM volume control registers are now emulated as logarithmic, instead of linear.

	PC-FX:  Modified 256-color VDC sprite and bg palette index calculation, to fix color problems in the 3/4 view of Ojousama Sousamou.

	PC-FX:  Altered ADPCM address emulation so that the "active" play address is 17 bits instead of 18 bits, fixes problems in several
		games(Anime Freak FX Vol. 1, Tenchi Muyo! FX), hopefully it doesn't cause any new ones. ;)

	PC-FX:	Added support for KING bitstring writes and reads, and changed maximum BGn screen dimension setting from 0x9 to 0xA.  "Boundary Gate" works
		much much better now due to these changes.


	NES:  
		NULL-terminated the debugger's list of MMC1 registers, which was apparently forgotten earlier.  Oops.

		Added MMC3 registers to the debugger.

		Added the current scanline(read-only) to the debugger's list of registers.

0.7.2:

	NES:  Added MMC1 registers to the NES debugger.

	Various cleanups(removing dead code and header declarations).

	Added settings "vblur.accum", enables motion blur accumulation mode, and "vblur.accum.amount".

	Added setting "vblur", when enabled, will (motion) blur adjacent video frames 50/50.

	Added WonderSwan emulation, based on Cygne, but greatly improved, and with a debugger.

	Modified the time base adjustment code used when sound is disabled to fix fast-forwarding when sound is disabled.

	"Fixed" a few instances of mostly harmless variable shadowing.

	Mednafen is now compiled with -Wshadow.

	Modified the save state preview rescaling code to properly(with interpolation instead of nearest-neighbor) rescale PCE games that use the 
	512pixel-width mode, or in other words... the rescaling code will now work where (fb_width / state_preview_width) <= 2 whereas previously 
	it only worked properly where (fb_width / state_preview_width) < 2.

	Errors saving save states are now propagated and reported.

	NGP:  Files with an extension of "npc" are now also treated as Neo Geo Pocket ROM images.

	PC-FX:  Added setting "pcfx.nospritelimit".

	Removed the memory dump and graphics memory dump functionality from the main debugger.  The new memory editor provides the same
	or higher level of functionality.

	Added a new memory editor to the debugger interface, accessible by pressing ALT + 3 in the debugger.

	PCE:  Added support for reduced-bit-depth background mode.

	If the ALSA driver code is unable to set stereo or mono sound, it will try mono or stereo sound instead, respectively.

	PCE:  PSG waveform RAM will now only be updated if the channel is turned off.

	glFinish() will no longer be called every frame in the OpenGL code, which should improve performance(if it causes problems, like
	tearing where there wasn't any before or decreased performance,	please file a bug report!).

	If the "glvsync" setting is 1(the default), and the environment variable "__GL_SYNC_TO_VBLANK" is not set at all(either 0 or any value),
	then it will be set to "1".  This has the effect of forcing vblank synchronization when running under Linux with
	NVidia's drivers.

	Fixed configure script option "--disable-jack".

	Lynx:  Screen rotation now works in non-OpenGL mode(SDL+framebuffer), sans scanlines support.

	Lynx:  Screen rotation now also rotates input sanely, as it did in 0.6.x and earlier versions.

	Fixed a fatal compilation error in the ALSA driver with ALSA versions < 1.0.9.

	Fixed a fatal compilation error on GCC < 3.4 in the PC-FX code.

	Added code to detect the maximum OpenGL texture size, and reworked the OSD code to use tiled drawing if a particular OSD surface is too 
	large to fit in a single texture.  This is particularly relevant to users of old Voodoo cards.  Note that tiled drawing isn't supported for the 
	main game framebuffer, so video cards with severe texture size limitations will still have problems with PC Engine and PC-FX games that use 
	higher resolution modes.

	The help screen, debugger, and cheat search interface now use their own surfaces instead of the generic OSD surface.

	Fixed(hopefully) OSD-clearing in SDL blit mode("-vdriver 1").

	Removed the option "doublebuf".  It is kind of an archaic leftover from when Mednafen did only one blit
	per frame(and had the OSD written to the game's virtual framebuffer).  Double buffering must always be enabled,
	or else screen corruption may occur.  Also, as a note, double buffering does not imply synchronizing to vblank, though
	this does occur in some situations.
	***NOTE:  Please check your scripts and frontends and remove any "-doublebuf" arguments! ***

0.7.1:
	Began work on an experimental stdio interface, see drivers/remote.cpp if you are a frontend author and can read C code, though
	it is disabled for now. :)
	Documentation for it will be written when it is closer to completion.

	Switched to trio_snprintf() from snprintf() in the input configuration code, this should fix problems under Windows(and any
	other OS with a lame snprintf() implementation)	with joystick button configurations not saving properly.

	Fixed parsing of the "sounddevice" setting(it was erroneously being compared to the long, 
	descriptive name of the driver instead of the short name).

	PC-FX:  More changes.

0.7.0:	*** Network play with this release requires Mednafen Server >= 0.3.0 ***

	PCE:  Fixed a timer reload bug.

	Added the following configure script options:
	  --enable-debugger       build with internal debugger [default=yes]
	  --enable-cjk-fonts      build with internal CJK(Chinese, Japanese, Korean)
	                          fonts [default=yes]
	  --enable-gb             build with GameBoy emulation [default=yes]
	  --enable-gba            build with GameBoy Advance emulation [default=yes]
	  --enable-lynx           build with Atari Lynx emulation [default=yes]
	  --enable-nes            build with Nintendo Entertainment System emulation
        	                  [default=yes]
	  --enable-ngp            build with Neo Geo Pocket emulation [default=yes]
	  --enable-pce            build with PC Engine(TurboGrafx 16) emulation
	                          [default=yes]
	  --enable-pcfx           build with PC-FX emulation [default=yes]

	Moved the save states display and info text message display to blit directly to the framebuffer, rather
	than to the general OSD layer(which is now only used for cheat console and debugger).

	Reworked the network play console interface to be more...usable.  It takes up much less space, is centered at the bottom of the screen, 
	the "t" button now activates text input, pressing "Enter" exits netplay console mode, and it will automatically pop 
	up(though without user input possible, unless you press "t" while it's up) for 2.5 seconds when a new message is received.

	Added support for all possible input devices to be used with network play.  

	Command-line arguments can now be prefixed with either "-" or "--".

	Fixed "--help/-help" parsing from command-line.

	PC-FX:  Increased emulation accuracy, most games still don't work correctly, if at all.

	PCE:  Fixed VRAM->VRAM DMA when destination writes occur outside of VRAM space(they're now ignored).  Fixes "Ruin - Kami no Isan".

	OpenGL page flips will now try(it doesn't seem to work with nvidia's binary driver under Linux, so use "nvidia-settings" utility instead)
	to be synchronized to vertical retrace/blanking period if Mednafen is compiled against SDL >= 1.2.10,
	controllable by the setting "glvsync", enabled by default.

	The "sounddriver" setting is now honored.  Values you can try are "default", "oss", "alsa", "dsound", and "jack".

	Added support for JACK and ALSA sound output, ALSA sound output is now preferred over OSS.

	Mednafen will now exit properly if it receives a not-fatal signal, such as SIGTERM or SIGINT.

	NES:  Fixed noise and DMC playback frequencies with PAL emulation.  Thanks to blargg for the information.

	Due to internal changes, and wanting to clean up code, save states created in versions older than 0.6.0 are no longer supported(if you have any 
	old save states you absolutely must have, load them in 0.6.5 and save them, then load them in 0.7.0).

	Added keys to increment(though a predefined list of possible devices) the currently selected device on an 
	input port(CTRL+SHIFT+1 through CTRL+SHIFT+5); note that this WILL change the setting for this port saved in the configuration file.

	PCE:  Added mouse support(use "-pce.input1 mouse").  To use it properly in windowed mode, you will need to press the "Scroll Lock"
	key.

	PCE:  Added 6-button pad support.  By default, the "M" key will switch between 2-button and 6-button modes(this is necessary
	because most non-supporting games will break horribly in 6-button mode, which happens on a real system as well).

	Revamped much of the internal input device handling.  Important user-visible changes:
		Button configuration order is slightly different, with the rapid-fire instances of buttons immediately coming
		after normal instances of the buttons.

		More buttons can now be configured for rapid-fire.

		A virtually unlimited number(instead of 4 in previous versions) of physical buttons may now be assigned to a
		virtual button or command.

		Input button settings are now saved in the text-format mednafen.cfg file.

		Famicom input devices that were previously not configurable, such as the Family Keyboard, now are; however,
		it would be unwieldy to configure the Family Keyboard using the in-emulator configuration process, so edit
		the configuration file instead.

		The NES Zapper and other devices that are emulated using the mouse can now have their buttons configured.

		The setting to manually set an input device on the Famicom expansion port has changed from "nes.fcexp" to
		"nes.input5".

		Gameboy and Gameboy Advance pad button configurations are now independent of each other.

		Save states and movies can't be accessed during HES/NSF/GSF playback anymore(does this hurt anyone?).

		Button configuration hotkey functions are now mapped to ALT+SHIFT+1 through ALT+SHIFT+5(for input ports 1-5) instead of F3, F4, and various
		convoluted combinations of F3 and F4 with CTRL and SHIFT.

	The NSF/HES/GSF player graphical code now all use the same resolution and video settings("player.*").

	Replaced the internal fixed-width 6x13 and 12x13 fonts with 9x18 and 18x18 fonts, respectively, and increased the general OSD layer
	size to 384x336 from 256x224(which has a side effect of allowing more detailed save state previews for NES and PCE).  
	The new fonts provide about 10,000 more glyphs(for a total of about 32,000 glyphs), mostly for east-Asian languages(I think this MIGHT be 
	slightly overkill, but, eh...*flees*).

	PCE:  The timer counter was being updated one instruction too late.  Fixed.  (This problem probably didn't affect
	any games, but it could have resulted in confusion while using the debugger.)

	Remapped the state rewind key to ALT+S, and added a new help screen triggered by pressing "F1".

	PCE:  The disassembler was missing opcode 0x3A, DEC.  Fixed.

	NES:  A few sound variables weren't being saved in the VRC6 and FME7 sound code.  Fixed.

	PCE:  Fixed disassembler decoding of ZP indirect addressing mode.

	NES:  Fixed unofficial opcode 0xE2 cycle timing.

0.6.5:

	PCE:  Made a small optimization to HuC6280 emulation by caching the CPU speed shift-left cycle count adjust value.

	Removed an old kludge for Win32 that worked around an SDL problem in which the window position would be off-screen when
	switching from fullscreen to windowed mode, as I think the problem is fixed in SDL 1.2.10.

	Reworked the signal handling code to be included if HAVE_SIGNAL is defined instead of if WIN32 is not defined, and added #ifdefs around
	each possible signal(as some platforms don't provide #define's for some signals).

	PCE:  Added setting "pce.cdspeed" to set a CD-ROM data transfer speed multiplier.  PLEASE READ THE DOCUMENTATION FOR CAVEATS.

	PCE:  Fixed CD-DA and ADPCM fadeout speed when setting the "pce.ocmultiplier" setting to a value other than 1.

	Cleaned up the multi-res blitting code in drivers/video.cpp to not cause crazy compiler warnings(and not be crazy in general!).

	PCE:  Fixed the ADPCM playback rate formula(the result was off by about 0.27%), thanks to Charles MacDonald for detailed information.

	Began work on implementing several OpenGL pixel shaders, which will be finished in a later release.

	Mednafen no longers directly links to the OpenGL library, instead it uses SDL's OpenGL library loading and function address functions.

	Reverted back to pow() and cos() from powl() and cosl() in Blip_Buffer.cpp, due to some platforms not having long double types per se,
	and adjusted the code activated by setting "pce.adpcmlp" to call Blip_Synth::treble_eq() with a "treble" value of a lower magnitude, which
	might result in a slight difference in the ADPCM frequency spectrum produced when "pce.adpcmlp" is enabled.

	Fixed "Value increased" cheat search method(it was acting the same as "Value decreased", oops -_-).

	Changed the usage of fix-sized filename component arrays in general.cpp with string objects.

	MDFN_printf() and MDFN_PrintError() now use trio_vaprintf() instead of trio_vsnprintf().

	NES:  Added setting "nes.n106bs", which when set, will enable less-accurate, but better sounding, Namco 106(mapper 19) sound emulation.

	NES:  Fixed save states for mapper 69 games(mirroring and prg bank setup wasn't being saved and restored).

	NES:  Added support for multiple expansion sound chips used simultaneously in NSFs, including limiting the address space they
	will respond to when multiple expansion sound chips are used(to prevent collisions between VRC6 and VRC7's address space, for example).

	PCE:  Fixed CD-DA playback speed when setting the "pce.ocmultiplier" setting to a value other than 1.

	NGP:  Changed the default full-screen video settings, so that the scaled image size is no longer larger than the
	display area(oops -_-).

	NES:  Added support for UNIF board "UNL-603-5052"(thanks to CaH4e3).

	NES:  Fixed mapper 115, "Thunderbolt 2" now works(thanks to CaH4e3).

	NGP:  Sound emulation now respects global sound volume setting "soundvol".

	NGP:  Added missing setting "ngp.forcemono".

        PCE:  Physical CDROM device names will now be printed on Mac OS/X on startup again.  Physical CDROM access seems to work,
	but the DarwinPorts libcdio 0.75 package appears to be horribly broken, so please remove it and install 
	libcdio 0.77(or higher) from its source code.

	NGP:  Fixed a few major problems with NGP emulation on big-endian platforms(such as PPC OS/X).

0.6.4:

	Added somewhat experimental Neo Geo Pocket(Color) emulation based off code from NeoPop, heavily modified.

	GB:  Fixed frame rate when sound is disabled.

	Added →, ←, ↑, and ↓ characters to the Lynx, GB, GBA, and PC Engine directional button names used for button configuration, to match the NES button
	names.

	PCE:  Added setting "pce.adpcmlp", default value 0, that when enabled, will cause Mednafen to apply a lowpass filter to ADPCM sound output
	with a rolloff frequency dependent on the current ADPCM playback frequency.  This makes ADPCM voices sound less "harsh", however, the downside
	is that it will cause many ADPCM sound effects to sound a bit muffled.

	PCE:  Moved the OpenGL screen clearing code into the FlipOpenGL() function to fix a problem with some PCE games that use
	multiple resolutions per frame having a partially corrupted screen when the OSD was up.

	PCE:  Fixed save state loading with save states created during a CDROM data transfer.

	Fixed a bug that was causing flickering OSD remnants to remain onscreen in fullscreen mode if the OSD was drawn outside of
	the game screen area.

	Fixed a bug in the resizing code for save state previews that was causing save state previews for the NES, GB, GBA, and Lynx to look absolutely
	horrible.

	Assigned the two keys "-"(not the numpad instance) and "=" to functions "decrement selected save state slot" and "increment selected
	save state slot", respectively.

	Removed the checks preventing save state usage when playing NSFs, since save states may be useful with NSFs in some circumstances.

	Added a new setting "ckdelay", which controls the length of time, in milliseconds, that a button/key corresponding to a 
	"dangerous" command like power, reset, exit, load state, etc. must be pressed before the command is executed.  The default value is 0.

	Input mapping configuration is now saved after argument parsing if there is no game to be loaded, allowing a command like 
	"mednafen -inputcfg pcegamepad1" to work properly.

	The message "Configuration finished." will now be displayed when button mapping for the selected input device is complete when
	using the in-game configuration process.

	PCE:  Fixed a bug in the debugger involving disassembling block memory transfer instructions(effectively, the length was being
	fetched 1 byte too early).

0.6.3:

	SexyAL:  Fixed buffer write memcpy() optimization to also check to make sure the input and output byte orders are the same.

	PCE:  Added setting "pce.forcemono" to force monophonic sound output.

	Added setting "analogthreshold", which is the threshold for detecting a "button" press on analog axis, in percent.  The default
	value is 75(%).

	Worked around a very odd "bug" in gcc that involved muddling of local-scope structure definitions among different object files(
	the structure previously named "BPOINT" in both NES and PCE emulation code), which led to breakpoints with NES emulation being
	totally fubared.

	Added graphics memory dumping capabilities to the debugger.

	PCE, NES: Save states and powers/resets in debugger step mode SHOULD work properly now.

	Fixed a potential deadlock when exiting.

	Various debugger fixes.  I lost the ChangeLog, sorry. -_-

0.6.2:

	PCE:  Physical CDROM device names will no longer be printed on Mac OS/X on startup, due to the code crashing badly(rather than goodly!).

	OpenGL texture heights are now rounded up to the nearest power of 2(texture widths already had this rounding in previous versions),
	which should fix special scalers on video output devices that don't support non-power-of-2 textures(IE most video cards and Mac boxen).

	PCE:  The libcdio sector reading functions are now checked for return values < 0 as errors, rather than != 0, to fix
	problems under Linux and possibly many other OSes where the return value is something like 2048(the number of bytes read, presumably).

	PCE:  Fixed a bug with disassembling block memory transfer instructions on < 64-bit systems(I had forgot to type-cast a variable
	to uint64 before left-shifting it past 32-bits).

	PCE:  Added the implied form of INC to the disassembler.

	NES:  Removed the PRG mask constraint for UNROM/mapper 2, introduced in version 0.2.0, to fix the Japanese "Maniac Mansion" and possibly
	other games.

        PCE:  Fixed debugger write breakpoints.  The code had a logical error in it, with the end effect of preventing stack writes in the IRQ
        sequence, causing games to crash.

0.6.1:

	PCE:  The HuC6280 disassembler now gives @ZP hints for BBR and BBS instructions.

	NES:  Increased the effectiveness of frame-skipping.

	Removed unnecessary sound buffer copying if the source format == device format in SexyAL, which is true most of the time.

	Fixed a bug that was causing a crash in the cheat interface when trying to list cheats, under Win32.

	Fixed a bug in the settings loading code that forced the user to resort to manual creation of ~/.mednafen/mednafen.cfg on 
	some operating systems(*BSD, OS/X).
	It was being caused by 'errno' being modified between the attempt to open the settings file, and the test 'if(errno == ENOENT)'.

	Silent sound will now be outputted when in step mode in the debugger.  Windows users' ears rejoice!

	Added a strtod() replacement that recognizes both "." and "," as valid radix characters, regardless of the current
	locale, and modified settings.cpp to use it.

	Lynx:  Removed some unused code.

0.6.0:
	The internal sound format has been changed to 16-bit from floating-point to improve performance,
	especially on processors without FPUs.  There should be no perceptual nor measurable
  	loss in sound quality.

	Removed fidlib from the source code tree, as it is no longer used.

	Lynx:  Switched over to Blip_Buffer's lowpass("treble") capabilities from fidlib.

	PCE, NES:  Added a debugger of DOOOOOM.

	PCE:  Altered timer emulation slightly.

	PCE:  It is now possible to load CDs simply by specifying the CUE file, or device, as you would with a ROM image, like so:
		mednafen /dev/cdrom
		mednafen /home/sauron/games/Ys/Ys.cue

	Added MusePack CD-DA playback(IE audio tracks encoded as MPC data) support.

	Added legal information to the end of the documentation, though it's likely incomplete.

	Switched over to using an internal copy of the "Tremor" decoder, and dropped dependencies on the ogg and vorbis
	external libraries.

	The CD-DA reading function now provides sound data as 16-bit signed samples in the endian format native to the
	host platform.

	PCE:  Changed two often-used CDROM timing variables from int64 to int32 to try to improve performance slightly on non-64-bit platforms.

	PCE:  Added a hack that changes subtle CDROM unit behaviour when the game "Sherlock Holmes" is loaded, so that the aforementioned game
	will work.  In general, I really, really
	dislike hacks of this nature, but I think it's justified until I have a better understanding of the (complex) PCE CD
	functioning.

	PCE:  Lowered CDROM data transfer rate, and removed the kludgey one-time delay in the sector reading function.

	PCE:  Altered ADPCM write delay to be inversely proportional to the playback frequency selected.

	GB, GBA and Lynx save-state previews are now saved at native resolution, instead of scaling down to 1/4 of the native resolution.

	NES:  Fixed a mapper 96 initialization problem.

	NES:  Implemented blargg's NTSC graphics filtering code(version 0.2.0).

	The setting "sounddevice" will now select which filesystem entry(like "/dev/dsp" or "/dev/adsp") to open when using the OSS output driver.

	NES:  Changed the internal sound channels high-frequency mixing buffer to 16-bit, from 32-bit, to try to increase performance
	on cache-starved processors.

	Added a simple, non-ideal(it increases CPU usage measureably because it dirties the OSD surface and causes it to be redrawn)
	FPS display, toggled with SHIFT+F1.

	PCE:  Added "hes" and "pce" to the file extensions looked for in ZIP archives in the file loader.

	NES:  Added support for iNES mapper 38.

	Lynx:  The lowpass filter can now be optionally disabled by modifying the "lynx.lowpass" setting.

	ROM sizes, MD5 hashes, and CRC32 checksums are now printed out for all systems emulated
	by Mednafen.

	Rearranged the file loader detector to attempt to load the file as a GBA game last, since the GBA cart-detection
	code *could* give false positives if the game isn't a GBA game.

	PCE:  The 2KiB of BRAM is no longer mirrored across the 8KiB segment 0xF7, fixing "RAM is full" problems
	with Exile 2.

	PCE:  Fixed MD5 hash calculation for CD data tracks.

	Added settings "gb.forcemono" and "gba.forcemono".

	Lynx: Cleaned up the code.

	The MD5 hash is now calculated for GBA and Lynx games, and the correct MD5 hash is now used in filenames
	(the nibbles in each byte were swapped previously).
	***NOTE***
	Save states and save games created in previous versions of Mednafen will have different filenames than the current version.
	To do a quick-and-dirty fix, simply remove the MD5 hash component from the filename as such:
		rename somegame.7e74d04f2d147f03061d447310b109ec.sav somegame.sav

	Changed autofire behavior to have the button set on half the frames in the autofire period, rather than just one frame.

	NES:  Changed the background clear color to light blue(from black) when the background is disabled by the user, and
	fixed background and sprite disabling by the user to not lock up some games that depend on sprite hits.

	GBA:  Updates from VBA's CVS:
		- bios.cpp : corrected a bug in registerRamReset.
		- gba.cpp/gbainline.h : corrected the mirroring of Vram.
		- gba.cpp : changed slightly the emulation of gbasavetype.
		- RTC.cpp : vba now ignores rtc command 0x64.

	GBA:  Reduced input latency by one frame.

	PCE:  Reworked the frame/scanline counter loop to run NMI first, and then draw the active frame area, to reduce input
	latency by one frame.  Most games keep the vblank starting line outside of the TV's visible display area, but a few(like Dracula X)
	have vblank occurring on a scanline that the VDC is still outputting a signal to the TV for.  If a game alters its overscan color regularly, 
	and vblank is set to occur rather early, there might be a slight tearing effect at the bottom of the screen.  Note that this is a very minor
	problem, and is more than offset by the reduced input latency, though I thought I should mention it so I won't go crazy in the
	future trying to debug the oddball game. ;)
	Note that this change may cause compatibility problems with PCE save states created in older versions of Mednafen.

	NES:  Fixed several PPU sprite RAM and VRAM read and write operations to pass blargg's tests.

	NES:  Altered how the color to be blitted is decided when screen rendering is disabled to fix blargg's 410 color demo.
 
	Fixed scanlines to be aligned correctly(scanline darkening over the pixels that are interpolated between rows) when bilinear interpolation is 
	used, at least on my nvidia card.

	Floating-point/real number settings are now validated and checked to be in range.

	PCE:  Rewrote SuperGrafx VPC priority evaluation code to work correctly with http://pcedev.net/demos/Sgx3b.zip which was tested
	on real hardware.

	Simplified the OpenGL blitting code.

0.5.2:
	Modified the PCE code to only include header files that are needed.

	Fixed a memory leak in the state saving code.

	PCE:  Closing HES music files will no longer produce battery-backed RAM files. x_x

	Fixed a memory leak in the state loading code.

	Reduced memory slightly in the text rendering code by using all the bits available in the array(instead of the lower bit of each byte)
	that tells if a glyph is available or not.

	Modified the internal message display code to allocate and free space for the message being displayed, rather
	than using a rather small static array.

	PCE:  Fixed a small bug that would cause 1/75 second or less of the old CDDA track to play when switching to a new CDDA track.

	PCE:  Changed how reads from $0000 are handled, and made vblank occur slightly later in the frame, to fix Valis 1.

        PCE:  The CD reset function of $1804 now clears more variables, fixing problems with lockups when using the START+SELECT
        soft reset in the middle of a data read.

        Finally fixed the endian conversion code so that save states(and netplay) are compatible between big-endian and
        little-endian systems.
        **NOTE** Save states created in previous versions of Mednafen on big endian platforms(such as OS/X PPC)
        will no longer work in this version.

	Removed the tech documentation from the source code distribution.

	Truncated the ChangeLog to the first Nintencer release.

0.5.1:
	Fixed a crashy bug with hq2x, hq3x, and hq4x when using big-endian systems, or when the "vdriver" setting is set to "1".

0.5.0:
	Added a frame-advance feature.  Press ALT+A to enter frame-advance mode, and subsequently to advance frames, and ALT+R
	to exit frame-advance mode.

	The current machine state is now saved at the end of movies, to allow for the future implementation
	of the seamless continuation of an already recorded movie.

	PCE:  When loading from a physical disc, auxillary data(save states, movies, etc.) prefixes should now always be "cdrom",
	rather than "cdrom" for the default device and the given name for other devices, because this(previous) behavior
	caused problems under Win32(where colons couldn't be used in filenames).

	NES:  Fixed FDS sound output(it was technically outputting before, but the volume was so low as to be inaudible).

	NES:  The disk system BIOS can now be in iNES format.

	NES:  The Game Genie and FDS ROM image loaders can now load the ROM image from a gzip or zip compressed file.

	Revised the documentation to remove misleading statements(that applied to FCE Ultra) and add some missing information.

	Updated the command-line section of the documentation with warnings and notes regarding settings, network play,
	and movies.

	PCE:  Fixed more bugs with CD reading when sound is disabled.

	Loading a save state while recording a movie will now embed that save state in the movie file.

	PCE:  Save state previews are now generated with correct horizontal linear interpolation, fixing icky
	blockiness.

	NES:  It's now possible to record movies with any virtual input devices(like the Zapper), though the nes.input1,
	nes.input2, and nes.fcexp settings must be set the same as they were at recording time, before playback.

	NES:  All currently used expansion input devices are now saved in save states(before only gamepad data was saved).

	Added a network play setting to merge all local input into one virtual remote input(via inclusive OR on the
	server), to allow for those UTTERLY SILLY games that support multiple players on one gamepad/joystick.

	Worked around an SDL bug(or feature? :b) that was causing events to be processed by SDL
	instead of Mednafen when SDL_JoystickEventState() is called.

	Scrapped the old movie format from FCE Ultra, and replaced it with a simplified version
	that simply writes the joystick inputs to the movie file stream each frame, and
	lets zlib handle the compression and encoding.  This is incompatible with the old
	format, sorry.

	Movies are now stored in the right directory finally(mcm vs mcs).

	Rewrote most of the on-screen display code to work with a separate 256x224 buffer that is scaled and blitted
	independently of the main game's video output buffer.  Note that if you have OpenGL disabled(via "-vdriver 1"),
	the overlay will not be scaled.

	PCE:  Added support for multiple resolutions per frame, as used in such games as "Asuka 120%"
	and "Ryuuko no Ken".

	PCE:  Adjusted the internal resolution(and outputted aspect ratio) slightly when using the ~7MHz dot-clock.

	PCE:  Added movie recording support.

	PCE:  Adjusted ADPCM volume.

	PCE:  Fixed left overscan clearing and disabled background lines clearing.

	The trio code is no longer compiled with -ffast-math.

	Removed netplay divider support(it didn't really work all that well anyway), and removed it from the server as well.

	PCE:  Changes to the IRQ masking register are now delayed by one instruction, thanks to D. Michel
	for the information.

	Status messages are now displayed for 2.5 seconds, rather than 180 frames.

	Changed save state display timing from frames to seconds, and set it to display for 2 seconds
	after a number is pressed(previously it was around 3).

	Added the following settings:  nes.ggrom, path_snap, path_sav, path_state, path_movie, path_cheat, path_palette.

	Changed the data types of "bool" variables that are saved in save states to uint8, to address more
	cross-platform save-state compatibility issues.

	Fixed a problem with save states on big-endian platforms(was dividing by sizeof(uint32) instead of sizeof(uint16)
	in a few places).

	Fixed hq2x, hq3x, and hq4x filters on big-endian platforms.

	PCE:  Pushing the virtual reset or power button during CD reads will no longer cause the emulator to fail on
	subsequent reads(a few variables weren't being reset properly).

0.4.9:

	GB/GBA:  Added configurable rapid fire buttons for virtual buttons A and B.

	NES:  Disabling the background now works properly(it no longer also disables sprites!).

	PCE:  Disabling background layers now replaces that layer with an obnoxious green color that shouldn't be used by any games, 
	to make sprite ripping easier.

	Added settings "fftoggle" and "ffnosound", to make the fast-forwarding button a toggle switch, and to silence
	sound during fast-forwarding, respectively.

	PCE:  CDDA playback interrupt and looping enabled flags are now reset properly, fixing a lockup that occurs when facing a boss
	in Valis 2, and possibly other games.

0.4.8:
	PCE:  Loading a physical CD will now print out a list of available devices.

	NES:  Blip_Buffer's highpass filtering capabilities(for DC-offset removal) are now used instead of a custom function.

	Modified the included libintl so that it will compile on Mac OS/X.

	The "trio" subdirectory should(I can't test it) now be compiled with -mieee on Alpha architectures, 
	fixing a compilation error.

	NES:  Fixed long-standing graphical problems with some sprites in (Mike Tyson's) Punch-Out.

	Removed "#include <samplerate.h>" from cdromif.cpp and cdromfile.cpp, since I forgot to in 0.4.6.

0.4.7:
	Fixed the NES PPC AltiVec resampling code by properly aligning an output array.

	Fixed NES sound emulation on 32-bit platforms(omitting the buffer size to Blip_Buffer::set_sample_rate()
	was causing an assert to go off on <64-bit platforms).

0.4.6:

	Dropped the libsamplerate dependency.

	NES:  Replaced the resampling code from the intermediate frequency after FIR resample with Blip_Buffer.  The only
	audible effect seems to be a slight lowpass filter effect.

	PCE:  Integrated the CDDA playback code into the main PCE CDROM emulation code by using Blip_Buffer.

	PCE:  Removed the compressor and cddaquality settings.

	Updated the Russian PO file, mostly to remove or fix grossly incorrect "fuzzy" entries.
	Added an incomplete Spanish(Spain) PO file.

	PCE:  If a data sector read from a physical disc fails, it will be reattempted continuously until it succeeds,
	or the user presses the exit key(F12 by default). (note that this may appear to lock up Mednafen, but the
	exit key will still work)
	This *should* fix problems with physical PCE CDs under Mac OS/X and MS Windows.

	Merged trio(http://daniel.haxx.se/projects/trio/) into Mednafen to fix format-string problems
	on non-glibc systems(MS Windows for example!).

	GB:  Modified the APU emulation code to silence a gcc warning.

	PCE, Lynx, GB, GBA:  Doubled the size of the Blip_Buffer phase offset table for slightly higher sound quality.

	PCE:  Fixed ADPCM playback code for when sound is disabled(it was ultimately causing a crash in earlier versions).

	Converted the MD5 functions to a class.

	Fixed(hopefully) compilation on non-Apple PowerPC systems.

	Fixed save-state support for saving/loading arrays of 16-bit and 32-bit variables(the hints were already there,
	but the code to handle the hints was nonexistant).  Note that this change will cause incompatibilities between old save states and
	this version on big-endian platforms.

	Removed the included "m4" directory, updated autogen.sh, and reran it to regenerate aclocal.m4 with
	newer(and fixed on AMD64) versions of the gettext autoconf scripts.
	See: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=349845

0.4.5:
	drivers/opengl.cpp now includes the GL header files AFTER the header file that eventually loads config.h is included to fix
	compilation on Mac OS X.

	Redefined SFEND from { 0 } to { 0, 0, 0}, and fixed older code to use the SFEND macro, to fix crashing on OSX and possibly
	other platforms when saving or loading states.

	Reduced SDL's buffer size when using the SDL sound driver(used on MacOSX).

	Restructured and merged some of the sections in the autoconf script.  Note to future self:  I noted that it seems if 
	the first instance of PKG_CHECK_MODULES() is in a statement that doesn't evaluate, any other PKG_CHECK_MODULES() 
	statements will fail.  I don't know if this is a bug in autoconf, or a misunderstanding on my part.

	Removed the largely unused ESD sound driver from compilation, as it is mostly unsuitable for use in Mednafen.
	Also removed the jack driver, as it was unfinished, and couldn't be used anyway.

	PCE:  Fixed CD-DA playback from "WAV" audio files on big-endian platforms.

	Fixed a compilation problem on big-endian CPUs by adding appropriate type-casts in psf.cpp.

0.4.4:
	Modified the GBA code to not use many INLINEd functions in arm.cpp.  This greatly reduces
	RAM and CPU usage during compilation, and should have only a negligible impact on performance(and might
	even improve performance on cache-starved systems).

	Fixed a compilation problem on non-x86 and non-PPC platforms in the NES emulation code.

0.4.3:  (Note:  PCE CD save states created in previous versions will not work very well with this release)

	Fixed a compilation problem in cdromif.cpp regarding NULL on *BSD platforms by including <string.h>.

	Lynx:  Fixed the constructor and destructor declarations of the C65C02 class, which should fix a reported
	compilation error with gcc 4.1.

	GBA:  Added a few missing variables to save states.

	GB:  Lines during which time the screen is turned off are now cleared(fixes flickering problems at the
	start of games, and during transitory blank screens).	

	Fixed the SDL_net.h include statement in drivers/netplay.cpp.

	PCE:  Fixed a bug with CUE+BIN sector size handling with regards to pregaps.  CUE+BIN is still
	officially unsupported. :B

	PCE:  Noise is now rendered at blip_med_quality.

	PCE:  Removed the code that checks to make sure the audio sector to play is non-zero.  Fixes "Crazy Hospital".

	Changed the maximum supported playback rate from 96KHz to 48KHz, to be able to safely extend the temporal precision 
	of Blip_Buffer further.
	Note that this shouldn't be considered a regression, as there are virtuall no benefits to using a sample rate
	above 48KHz in Mednafen(though there may be benefits in other applications).
	***************
	***BIG NOTE:***  
	***************
	If you previously set the playback rate above 48KHz, you will have to manually edit the text configuration
	file(~/.mednafen/mednafen.cfg) to bring the value in range.  This is necessary because of a limitation in the setting
	validation code.


	Updated to Blip_Buffer 0.4.0, which offers improved sound quality over previous versions:
		- Improved sound quality by rewriting library to use 32-bit internal sample
		buffer, higher phase resolution, and a properly windowed filter kernel. Current
		user code should work without changes.

	PCE:  When sprites and background are both disabled, and the VDC is not in burst mode, the scanline is now filled with color 0x000 from the palette
	rather than 0x100.  This fixes the "Hurry Up" water effect in the CD game "Rainbow Islands".

	PCE:  Fixed the CD-DA amplitude calculating(used the BIOS' CD-DA player interface).

	PCE:  Altered VDC line timing slightly.

	PCE:  ADPCM frequency is no longer reset on ADPCM reset, fixes Gulliver Boy's dialogue voices during
	gameplay.

	PCE:  Fixed reading from nonexistant audio sectors(by memset()'ing the audio buffer to zero).

	PCE:  Implemented sector reading delays, games that use FMV like Gulliver Boy work much better now.  It's not implemented 100% correctly,
	and requires a small CPU hack to disable IRQs during a timing-sensitive period of emulation.  I don't like hacks, but...it's still better
	than the giant hack of reading all the sectors at once, which was how it used to be.

	PCE:  Implemented ADPCM read and write delay.  "Record of Lodoss War" no longer locks up at the title screen.

	PCE:  Opcode and operand data reads from VDC register 0x1 will now return 0x40, which fixes
	Dragon Slayer 2.  I doubt this is correct, but it shouldn't break any other game.

	PCE:  CUE+BIN audio playback no longer locks up the emulator, but CUE+BIN is still
	officially unsupported.

0.4.2:
	Fixed sprite hit emulation, fixes problems with VS Duck Hunt and VS Hogan's Alley
	that have existed since Nintencer.

	Modified VS Unisystem light gun emulation slightly to be more accurate.

	Fixed the in-emulator sound(nsf,gsf,hes) player's waveform visualization,
	broken in 0.4.1.

0.4.1:

	Joysticks initialization is now slightly more verbose.

	Fixed hash calculation in the joystick code, and added a workaround for hash
	collisions(which would occur if two extremely similar joysticks are used on 
	the same system).

	Video initialization is now more verbose.

	The -<system>.special command-line arguments for selecting a special scaler now
	take the short name of the scaler, which is found in the documentation, instead of
	arbitrarily-chosen numbers.  However, out of the goodness of my cold, black heart,
	arbitrarily-chosen numbers may still be used, though it should be considered deprecated.
	Example:
		-nes.special 1	(deprecated, but works, selecting hq2x)
		-nes.special hq2x (good!)
		-nes.special wombat (bad!)

	libsndfile is now used for WAVE recording(instead of the old ugly code).

	Altered the internal floating-point format used to represent audio data by changing
	the range to -1.0<=sample<=1.0(previously it was 0.0<=sample<=1.0).

	NES:  Fixed a 1-byte overflow bug in the Barcode World input device emulation
	code by changing a strcpy() to a memcpy().

	Added a "-help" command-line option, which prints out command-line arguments
	and parameters.

	Fixed the configuration file loading code to exit the emulator if
	invalid data is in the configuration file, instead of just ignoring it
	and the rest of the entries, thus trashing the configuration file on exit.

	Changed the default xscale and yscale settings for Lynx to 4.

	Physical mouse buttons can now be assigned to virtual buttons.

	The width and height of the state preview are now saved in save states, fixing a problem with broken
	save states if the -nes.clipsides option is used, and possibly in other situations(note that this 
	won't fix the problem in old save states, only new ones).

	Fixed a garbage(OSD stuff) problem in screen snapshots and save states when they are done after a frame
	that has been skipped(the solution is to delay the snapshot/save state until the next frame, which is
	set to not be skip).

	Fixed a typo that broke the hq3x effect(it had weird graphical glitches).

	Modified more settings to use the new plain-text configuration file format.

0.4.0:
	Various minor code changes I forgot to document.  I hope none of them are of the Mednafen-exploding
	variety. ;)

	Added support for saving and loading settings in a plain-text file format, and moved many
	settings to use this code.  This file is named "mednafen.cfg" in the Mednafen base directory(whereas
	the old binary configuration file is still named "mednafen03x.cfg").

	NES:  Merged RDoPCM() into RDoNoise(), reducing CPU usage slightly.

	NES:  Removed the pedantically high-quality sound mode, and reduced the filter order for downsampling
	from 512 to 256, with a larger transition band and smaller passband, creating a somewhat subtle low-pass filter
	effect on the audible portion of the signal, and decreasing CPU usage.

	NES:  Made optimizations to the CPU and PPU emulation code.

        PCE:  Added -pce.forcesgx, -pce.ocmultiplier, -pce.nospritelimit, -pce.cdbios, -pce.cddaquality, and -pce.compressor
        command-line options

	PCE:  Sound(excluding CDDA in CD emulation mode) is now passed through an audio volume compressor.

	NES:  Zero-page and stack memory accesses now go through the normal read-write function pointer system.
	This will increase CPU usage slightly, but it's important for future plans(readding cheat support,
	and an enhanced sound system through OggVorbis and WAV files).

	Updated to Blip_Buffer and Blip_Synth 0.3.6b1.

	Added special gcc options to configure.ac to get gcc to actually inline many functions
	that are specified to be inlined.  Sometimes I wonder if gcc developers are sane...

	NES:  Fixed a weird typo(with apparently no effect) in the B2005() function in ppu/ppu.cpp

	Fixed scanlines effect when using a special scaler.

	Lynx:  Optimized the sound rendering code slightly.

	PCE:  Added PCE CD emulation.

	NES:  Fixed the AMD64 MMX sound downsampling assembly code.  This bug fix fixes staticy sounds and other problems
	with NES audio on AMD64 platforms(only in 64-bit mode, of course :)).

	Removed MDFND_UTF8fopen() and MDFND_UTF8gzopen(), since they weren't really doing anything useful, and
	the same functionality could be provided more easily with some kind of wrapper library, if it's needed
	in the future.

	Updated the ZIP-file handling code with the newest version available, 1.01e.

	GBA:  Updated most of the GBA emulation code with newer code from VBA's CVS repositoy.

	MDFN_FastU32MemsetM8() no longer tries to use floating-point data types, which was causing very bizarre problems on x86_64
	targets when compiled with gcc 4.0, and was probably an illegal thing to do anyway, as far as
	portability is concerned(or maybe gcc 4.0's autovectorizer is broken).
	This fixes problems with many GBA games when Mednafen is compiled with gcc 4.0.

	Added code to check for SDL_net in configure.ac and error out if it's not found, instead of blindly
	trying to compile.

	A negative result for the JACK test in configure.ac will now print the result "no".

	Removed the argument to AM_GNU_GETTEXT in configure.ac, effectively setting it to "no-libtool".  This will
	force a static library to be made when necessary, instead of a shared library, which should fix problems
	some people have been having with missing shared library error messages(libintl.so.3 and libintl.dll, for example).

0.3.7
	Modified the OpenGL code to use glTexSubImage2D() instead of glTexImage2D() every frame, resulting in a slight
	performance increase.

	Modified the OpenGL code to use smaller texture sizes with most PC Engine games(at least those
	that run at a width of 256 pixels;  exceptions include Aoi Blink, R-Type 1 and 2, Yo Bros., and others).

	Lynx:  Moved CMikie::Update() and C65C02::Update() into c65c02.cpp and mikie.cpp, respectively.

	Fixed pointer-to-integer type casting that was causing compiler errors under Ubuntu Linux AMD64.

	Modified a lot of code to work around/fix various compiler warnings.

	Fixed a few typos in the documentation.

0.3.6:

	NES:  Fixed a bug with the VRC6 sound emulation which was causing heap corruption and one sound channel to not work.  The bug apparently came up
	between Nintencer 0.1.1 and Mednafen 0.2.0.  Why didn't anyone tell me... -_-

	PCE:  Made significant optimizations to CPU emulation.  The code's a bit messier now, but I'll clean it up if/when 0.4.0 is released.

	NES:  Removed the high-level frameskipping code, since frameskipping is automatically used now, and it could easily break some games.

	Removed the "-frameskip" command-line option, as it should not be needed anymore.

	Unified a lot of the driver-side frame-skipping code.

	Fixed a startup bug(MainThreadID was being used before it was set) that was causing the "Starting Mednafen x.x.x" line to be lost.

	Slightly restructured the "features" and "command line" sections of the documentation.

	PCE:  Pressing the "Power" key now resets the internal RAM.

	All:  Altered the shared music player interface, decreasing the brightness of the text, and adding pseudo-shadows.

	PCE:  Added simple HES playback code.

	PCE:  Altered noise emulation slightly, Ninja Ryukenden(and probably other games)'s music sounds more accurate now.

	Fixed alignment of the save state preview and selection box when emulating the PC Engine.

	The status line text and the save state selection message are now drawn with black shadows, to make reading easier.

	Changed the text status line background darkening shape to a rectangle on the NES, and fixed it to display correctly
	with PC Engine emulation.

0.3.5:
	Added code to allow for writing to SDL framebuffers directly, without using OpenGL, controlled with the command-line option "-vdriver".
		-vdriver 0	= OpenGL
		-vdriver 1	= SDL framebuffer(bilinear interpolation and Lynx screen rotation are not available).

	Lynx:  Disabled the crude(as in, non-working) stereo sound support, and added a low-pass filter to make the sound sound much closer to what
	comes out of a real Lynx.

	PCE:  Adjusted the visible horizontal display area, and overscan, in the 7 and 10MHz dot clock modes.

	PCE:  Expanded the visible vertical display area by 8 pixels(4 on top, 4 on bottom).

	PCE:  Altered VDC timing agaaaain.

        PCE:  Block memory transfers now take 5 cycles(read, write, alter source, alter dest, decrement length?) per byte transferred instead of 6.  Fixes
        "Wonder Momo".

        PCE:  Altered HuC6280 instruction timing slightly(removed the tests for indirect indexed and indexed indirect addressing modes to use extra CPU cycles).

        PCE:  Corrected a timer emulation bug, fixes "Dragon Egg"'s tempo.

	PCE:  Increased the number of cpu cycles per scanline from 454 to 455, based on tests I performed.

        GB/GBC:  A sound enable register is now initialized properly on reset, fixing at least one unlicensed game.

        Lynx:  Disabled the superclipping code, as it's buggy(causes bad sprite clipping and invisible mountains(OHNOS) in Steel Talons)
        and doesn't appear to be necessary.

        The mouse cursor is now hidden.

0.3.4:
	Added command-line option "-autofirefreq" for setting the frequency of the configured auto-fire buttons
	when playing NES and PC Engine games.

	PCE:  Fixed Street Fighter 2 HuCard emulation.

	PCE:  Modified PSG waveform writing/DDA emulation, fixes "Fire Pro Wrestling - Combination Tag".

	PCE:  Modified TRB and TSB emulation.  Fixes "Toy Shop Boys".

	PCE:  Implemented VRAM-VRAM DMA direction control bits.

	PCE:  Altered VDC timing, fixing a few games, making a few games more bouncy. ;)
0.3.3:

	PCE:  Fixed sprite clipping on the left side of the screen.

	PCE:  The emulated RCR register is now masked with 0x3FF when being set.  Fixes Niko Niko Pun.

        PCE:  Several CPU cycles are now emulated between setting the in-vblank flag and the vblank IRQ occurring.  This works around an issue that would otherwise
        require timing granularity as small as one cpu cycle.  Interestingly, this same type of problem occurs with NES emulation.

	PCE:  Altered the display rectangle calculation code to take into effect screen areas that may be hidden
	on many television sets(and some games were designed with the assumption that these areas WOULD be hidden).

        PCE:  Modified noise emulation...again. :b

        PCE:  Modified LFO emulation, fixes major sound problems in "Bull Fight".

        PCE:  The sprite DMA completion IRQ now occurs earlier(probably a few cycles too early now, but oh well).  Fixes some graphical issues
        in "Bull Fight".

        PCE:  Sprite bit plane selection is now emulated to a degree.  Fixes "Fighting Run".

        PCE:  Very high-frequency(and probably inaudible) sounds are no longer played, because Blip_Synth
        can't handle them well.  Fixes "Bouken Danshaku Don" and others.

0.3.2:

	GB:  CGB-specific emulated RAM is no longer saved in save-states.

	GB:  Fixed a bug in sound sweep emulation.

	GBC:  The palette is now saved in save states.  This fixes a major problem with save states with most GBC
	games...

	Fixed the SF*N() save state macros to not put quotes around names in
	save state files, and added a workaround for compatibility with old save states.  This
	is an embarrassing bug. :b

	PCE:  Made major optimizations to the VDC emulation code.

	PCE:  Rewrote the PSG emulation to use Blip_Synth and Blip_Buffer.

	PCE:  Altered the noise channel emulation frequency calculation and LFSR emulation.  I'm still not sure
	if it's correct.

	Increased the minimum sound rate supported from 8192 to 22050.  I don't test low rates very often,
	and there may be loss-of-precision issues with such low rates.

0.3.1:
	Fixed a bug that existed since 0.2.0 that was causing a null-pointer deference in stat().
	Interesting, glibc silently ignored the error, but the error caused crashing under Windows.

	PCE:  The HuC6280 timer latch is now loaded with an appropriate value on reset.  Fixes
	"Double Dungeons".

	PCE:  Added generic PC Engine save RAM emulation.

0.3.0
	Added PC Engine and SuperGrafx emulation.

	Save states are now compressed and encapsulated in gzip-format files.

	NES:  Fixed display rectangle setting code that was causing screenshots from PAL games
	to be cut off at the top and bottom.

	NES:  Added an iNES header correction entry for "Gauntlet 2", to clear the four-screen bit.

	NES:  Added support for configuring NES gamepads 3 and 4 from within the emulator(during emulation), mapped
	to key combinations "F4" and "Shift + F4", respectively.

	Fixed virtual input device configuration from the command-line(it was segfaulting before because
	the code was dereferencing a null pointer).

0.2.2:

	Fixed a few problems with '#ifdef's when compiling on an MSB-first platform, though
	I still haven't tested Mednafen on such a platform...

	NES:  Fixed a nasty bug in the iNES loading code(the list of known bad ROM images wasn't
	terminated with a NULL entry) that could cause segmentation faults on startup in
	some situations.

	NES:  A slightly faster version of the sprite priority handling+blitting code is now compiled when
	a 64-bit CPU is "detected" by:
		#if (SIZEOF_LONG == 8)
		(is this the correct way to determine whether or not the cpu has native 64-bit
		 integer support?  I know it works ok on x86 and x86_64, but what about SPARCs? :b)

	NES:  Rewrote portions of the sprite rendering and priority comparison code to use simpler
	logic.

0.2.1:
	GBA:  Converted the DMA registers into arrays, rather than having them as a gazillion different
	variables.

	GBA:  Replaced the if() alpha-blending clamping mechanism with a simple LUT.

	GBA:  Removed some apparently unnecessary if() statements in the graphics rendering code.

	GBA:  Made a few experimental optimizations to the graphics rendering code( >> 24 changed to & 0xFF000000 in
	some of the priority comparison code).

	GBA:  Played around with some optimizations in the "gfxDrawTextScreen" function.

	GBA:  Restructured the CPU emulation code, so I don't have to recompile one giant file when
	I make a small change(and so it doesn't use totally obscene amounts of RAM during compilation).  

	GBA:  The sound flushing routine was returning and setting the wrong values, totally breaking the speed-throttling
	code.  Fixed.

	GB:  Slightly increased the video contrast and brightness of the original GameBoy's emulation.

	GBA:  Extended the BLIP buffer size, fixing a startup emulator crash with "Midway's Greatest Arcade Hits", and
	possibly other games.

	Updated the documentation with better explanations in a few areas, and fixed a few errors.

0.2.0: 
	(Sorry, I lost track of changes, but... 0.2.0 is kind of like an entirely new emulator! :b)

0.1.1:
	SDL_QUIT events are now handled properly.

	Increased the default fast-forward speed to 4x.

	Fast-forwarding will now invoke the emulation frame-skip code, to achieve much higher
	fast-forwarding speeds.  Fast-forwarding with frame skipping code may break some games,
	but I haven't encountered any yet...

	Jitter correction is now done when configuring virtual input devices and command keys, and
	the button pressed is on a physical joystick/gamepad.  This is particularly necessary for
	some(all?) analog joysticks connected via the ancient gameport interface on the PC, at least
	under Windows 98 ;).

	Various code cleanups and subtle usability fixes.

	The "cheats" subdirectory under the Mednafen base directory is now created on startup(broken in 0.1.0).

	Fixed sound code used when expansion channels are used and the internal pre-downsample target format
	is floating-point.

	Added error condition checks and more verbose error messages to various pieces of code.

	Implemented a modified version of the old PPU rendering code that is used when it is
	safe to do so.  This helps to offset the increased CPU requirements of the new code.

	The command-line option "-nothrottle" works again.

	Joysticks are now configured by a unique hash id, instead of by index number.  This should
	help if people install or uninstall joysticks.  It has not been tested, but the code structure
	was copied from the old Win32 port of FCE Ultra, so it should work.  
	Note that this change will break old button configurations in the configuration file from 0.1.0.

	Fixed mapper 19's(Namco 106) expansion sound.  It now actually outputs sound(broken in 0.1.0)!

	Rewrote large parts of the PPU rendering code to be more accurate, and slower. :/
	This fixes Final Fantasy's "orb lighting" effect, and Micro Machines' title screen,
	among others.

	Reads from $2004 will now return something meaningful to the games "Bee 52" and 
	"Micro Machines"(it returned nothing meaningful before, so it shouldn't break anything).
	This, combined with the correct background palette selection used when sprites and background are
	disabled, fixes some graphical issues in Micro Machines and Bee 52.

	Internal text rendering will now truncate strings that are too long to fit on the screen
	(an issue with NSFEs and song titles...).  Is there a better, sane way to deal with this?

	Added support for loading NSFE files, and made changes to the NSF player to display
	more information if it's available.

	file.cpp:  The FCEU_f* wrapper functions will now always load the entire file
	into memory on FCEU_fopen().  I hope people don't do something silly like trying
	to load a 1GB file of garbage. ;)
	I might add mmap() capabilities in the future.

	Reworked the UNIF/FDS/iNES/NSF file loading code.

	Removed the "en" translation from the po directory, since it was a bit...redundant
	or silly.  If you did a "make install" with 0.1.0, you should run a command like:
		 rm /usr/local/share/locale/en/LC_MESSAGES/mednafen.mo

	Fixed a compile-time error in general.cpp when the asprintf() emulation function is used.

	Replaced the SDL WM icon with a scaled image of the Mednafen Beetle.

	Fixed the Super24-in-1 bootleg cart board emulation by removing a line of silly debug(?) code.

	Added FCEU_indent() function, for use with FCEU(I)_printf(), to automatically set indentation
	for newlines, rather than having it in the format strings directly.  This should make strings in the 
	gettext catalogs more manageable.

	config.h is now used instead of passing gobs of defines on the command-line to g++/gcc.

	Added code and an MDFNI_* interface to set the sound speed multiplier from the driver code, and
	modified the driver code to use it.  This is MUCH better than the method used in 0.1.0, which
	was just telling FCE Ultra to reinitialize sound at a different rate whenever fast forwarding
	started and stopped(which caused clicking).

	The sprite hit flag will no longer be set if the sprite hit would occur on pixel column 255, which matches
	behavior on the NES.

0.1.0:
	Miscellaneous things I've forgotten about.

	Command-keys and virtual input devices are now configurable while a game is running.

	gettext is now used to provide message lookup services.

	Implemented crude Unicode rendering of internal in-game text messages, and several fixed-width fonts
	covering most western languages, Japanese, Chinese, and Korean.

	Added 2xSaI, Super2xSaI, and SuperEagle video filters, and reordered the integer->filter mappings(used on the command line).
	Should I parse for a string instead of an integer on the command-line?

	Converted Mednafen to compile with GCC's C++ compiler, though no advanced C++ features are used
	yet.

	Fixed mapper 165 emulation with code from CaH4e3.

	VS Unisystem and Famicom Disk System commands are now saved in recorded movies.

	Video blits and special effects are now done in a thread separate from the game emulation and sound output thread.

	Command keys are now user-configurably(wow, it happened before the 22nd century!).

	Fixed emulation of MMC5's $5130 register.

	Fixed sound sweeping emulation; thanks to blargg.

	Corrected the behavior of mapper 144 to match what the hardware does regarding bus conflicts.

	Removed the low quality sound emulation code, and replaced the old high-quality sound emulation filter code with newer code that
	can output to arbitrary rates and uses SIMD instructions if available.

	Fixed a rather stupid bug that could break loading of certain non-bankswitched NSFs.
