Subversion Repositories Kolibri OS


Blame | Last modification | View Log | Download | RSS feed

  1. 0.98.12:
  3.         Win32:  Fixed the behavior of the sound logging function.
  5.         Fixed a bug that was causing 2xscale/3xscale to be broken
  6.         when clipping the leftmost and rightmost 8 columns.
  8.         Added an iNES header correction entry for JustBreed.
  10.         Modified the MMC5 "ELROM" board emulation to not emulate WRAM.
  12.         Corrected various pieces of code that were causing compiler warnings.
  14.         Win32:  Scaling settings(x, y, stretch to fill screen) are now respected while
  15.         using a special scaler in full screen mode, though if x or y scale is
  16.         less than what is needed for a particular scaler, it will be
  17.         adjusted.
  19.         Win32:  The window will be reblitted when it becomes invalidated while
  20.         a game is loaded(such as when you're resizing the window).
  22.         When the PPU is in a "dead" state after starting up, the graphics
  23.         buffer is now cleared.  Previously, particularly in the Windows port, when
  24.         a game was closed, and a new game was loaded, the last image from
  25.         the previous game would be displayed for a short time.
  27.         Win32:  Blit skipping will now occur when sound is disabled and FCE Ultra is
  28.         running behind the desired frame rate.
  30.         Win32:  Blit-skipping behavior can now be configured to some extent in the "Timing" configuration
  31.         window.
  33.         Win32: Added a "Recent Directories" submenu to the "File" menu.
  35.         Removed some debugging code that shouldn't have been enabled in 0.98.11.
  37. 0.98.11:
  39.         Win32:  Special scalers are now also supported in windowed mode.  For Scale2x/Scale3x,
  40.         the fastest "desktop" bit depth is 16bpp.  For hq2x/hq3x, it is 32bpp.
  42.         The shared video blitting code(drivers/common/vidblit.c) can now blit using Scale2x
  43.         and Scale3x to any target bit depth(8bpp, 16bpp, 24bpp, and 32bpp) instead of just
  44.         8bpp, as it was before.
  45.         HQ2x  and HQ3x can now blit to 16bpp, 24bpp(untested), and 32bpp.  The 16bpp and
  46.         24bpp targets are done doing post-processing conversion, after HQ2x/HQ3x, which
  47.         really does hurt speed.
  49.         Changed a few names in the credits section of the documentation to their
  50.         aliases.  Names you didn't get to pick to have are so troublesome. :b
  51.         I also made various fixes/updates to the documentation.
  53.         Updated the FAQ with some information regard video mode bit depths and speed.
  55.         SDL:  Disabled the fast-forward-key speed-limiting code.  I thought I had
  56.         done this before...
  58.         Fixed a major bug in the movie recording code, and added some code to automatically detect
  59.         and fix playback of broken movies from earlier versions.
  61.         Did a little swapping thing with mapper 90 and 209.  I moved back Mortal Kombat 3
  62.         to mapper 90, and moved Shin Samurai Spirits 2 to mapper 209.  Sorry for any confusion.
  63.         Mapper 90 should be considered as having the fancy nametable select mode disabled, with
  64.         mapper 209 having it enabled.
  66.         Added support for mapper 160, which turns out to be the same hardware as mapper
  67.         90.  Joy.
  69.         Improved mapper 90 emulation.  This mapper really needs low-level
  70.         emulation for IRQs to work right, though. :/  
  72.         Win32:  Fixed the "hide left/right 8 video columns" feature.
  74.         Since FCE Ultra is ending(or has already exceeded? :b) its actively-updated life,
  75.         I've gone ahead and added per-game hacks for "Kick Master" and the PAL version
  76.         of "Star Wars".  See the documentation for more details.
  78.         Minor optimizations to the high-quality sound emulation code.  The FIR filter
  79.         code is the bottleneck, though, so these changes won't have much of an effect
  80.         on overall speed.
  82.         Altered MMC3 IRQ emulation(and the hooks in ppu.c for it).
  84.         Fixed a rather major typo in the VRC7-emulation code.
  86. 0.98.10:
  88.         Reimplemented network play.  It now requires a standalone network play server, which
  89.         will be released as a later time.  For fun, "" is running this server,
  90.         which is publicly accessible.
  91.         I also made various code fixes/improvements to allow for network play, particularly
  92.         with the command handling code.
  94.         Reworked much of the VS Unisystem emulation code, partially based on information from
  95.         MAME.  The following games are now supported:
  97.          Battle City
  98.          Castlevania
  99.          Clu Clu Land
  100.          Dr. Mario
  101.          Duck Hunt
  102.          Excitebike
  103.          Excitebike (Japanese)
  104.          Freedom Force
  105.          Goonies, The
  106.          Gradius
  107.          Gumshoe
  108.          Hogan's Alley
  109.          Ice Climber
  110.          Ladies Golf
  111.          Mach Rider
  112.          Mach Rider (Japanese)
  113.          Mighty Bomb Jack (Japanese)
  114.          Ninja Jajamaru Kun (Japanese)
  115.          Pinball
  116.          Pinball (Japanese)
  117.          Platoon
  118.          RBI Baseball
  119.          Slalom
  120.          Soccer
  121.          Star Luster
  122.          Stroke and Match Golf
  123.          Stroke and Match Golf - Ladies
  124.          Stroke and Match Golf (Japanese)
  125.          Super Mario Bros.
  126.          Super Sky Kid
  127.          Super Xevious
  128.          Tetris  
  129.          TKO Boxing
  130.          Top Gun  
  132.         Win32-native:  Fixed a bug in the debugger's breakpoint list that appeared when
  133.         one tried to delete a breakpoint(the control accidentally had auto-sort enabled,
  134.         causing a discrepancy between what was displayed and what was contained in internal
  135.         data structures).
  137.         The current disk image XOR original disk image is now stored in save states.  This
  138.         should greatly increase compressability(important for network play), and make
  139.         it a little more legal to distribute such save states now.
  141.         Modified the save state format to allow for more precise and larger version numbers.
  143.         Various minor code changes.
  145.         Fixed initialization of the FCEUGameInfo structure, which previously led
  146.         to problems with sound output on the SexyAL-using ports(Linux).
  148.         Apparently I added support for mapper 255 a while back.  Documentation updated.
  150.         Added iNES header correction information for Armored Scrum Object and Alpha Mission.
  152.         Merged banksw.h into ines.c, fixed some of its prototypes in ines.h.
  154. 0.98.9:
  156.         Win32-native:  Fixed the speed throttling used when sound is disabled.  In previous
  157.         0.98.x Win32-native releases, emulation was running at 1/2 the speed it should
  158.         have been when sound was disabled.
  160.         Win32-native:  Moved settings in the "Miscellaneous" configuration window
  161.         to where they should have been in the first place, and added "GUI" and "Timing"
  162.         configuration windows to accommodate some.
  164.         Win32-native:  Fixed the handling of the "Scroll Lock" key used to disable and
  165.         enable Family BASIC Keyboard input.
  167.         Updated documentation to handle some slight differences in the Win32-native
  168.         port("Win32-native" is what the Win32 port using native APIs, as opposed to something
  169.         like GTK+ and SDL, will be referred to in documentation now).  I also made
  170.         some other minor wording adjustments to the documentation.
  172.         Added an iNES header correction for Dragonball.
  174. 0.98.8:
  176.         Fixed a typo in sound.c that caused only part of the sound registers
  177.         to be saved in save states.
  179.         Win32: Switched over to the DirectDraw7 interface, from DirectDraw4's.
  180.         The surface Flip() method will now block, which results in somewhat
  181.         smoother animation/scrolling, especially when combined with the
  182.         auto blit-skip implemented in 0.98.6 when sound is enabled.
  184.         Win32: Undid a change made in the last release that limited the
  185.         speed of fast-forwarding when using the tilde key.  I really do
  186.         need to implement some sort of unified timing/blit skip system...
  188.         Win32: Added an option, disabled by default, to ask for confirmation
  189.         before exiting FCE Ultra.
  191.         Win32:  Added an option, enabled by default, to disable the system
  192.         screen saver while a game is loaded.
  194.         Win32:  Added a new video synchronization mode, a "lazy" wait for
  195.         vblank/vertical retrace.  It calls Sleep(0) in its wait loop.  This
  196.         still uses all available cpu cycles, but it is much more friendly
  197.         to other processes than the old-style wait for vblank.
  199.         Win32:  Added support for joystick POV hats.
  201. 0.98.7:
  203.         Fixed a bug in the debugger's disassembler when disassembling
  204.         opcode 0xBC.
  206.         Fixed the behavior of the right mouse button with zapper emulation, to
  207.         correspond with what it is documented as doing.
  209.         Win32:  Added proper support for maximizing the window.
  211.         Win32:  Rewrote most of the input and input configuration code.
  213.         Win32:  Changed the configurable aspect ratio to something sensical, the current
  214.         display's pixel aspect ratio, default of 1:1(square pixels).
  216.         Win32:  Made the default full-screen video mode the custom video mode.  I should have
  217.         done this a long time ago to make custom video mode configuration more straighforward
  218.         for users...
  220.         Added some JACK audio code to be used by the SDL build.  I'll test it and complete
  221.         it later.
  223. 0.98.6: Made several code modifications to work with older versions of gcc.
  225.         Fixed more header file network play #ifdef-age.
  227.         Fixed a typo in cart.h.
  229.         Fixed some funky code in FCEU_memmove().
  231.         Fixed some source code causing compiler warnings.
  233.         Fixed SexyAL's format conversion code to not rely on deprecated casting semantics.
  235.         Readded the native Win32 code, and made many improvements.  The major thing
  236.         that needs to be done now with it is to rewrite the input handling code and input
  237.         configuration code.
  239. 0.98.5:
  240.         Added LL to the 64-bit integer constants in ines.c
  242.         Fixed OpenGL support under Mac OS X.
  244.         Added the ability to hide background and/or sprites with the F4 key.
  246. 0.98.4:
  247.         Moved NETWORK #ifdef's to netplay.c to simplify things.
  249.         Fixed gzip file loading code(I think).  I'm still a bit unsure about the semantics
  250.         of dup() and close(), though.
  252.         Corrected FDS code to try loading the FDS image before loading the BIOS.
  254.         Readded "native" SDL sound code, used for Mac OS X(and maybe BeOS).
  256. 0.98.3:
  257.         Removed the wxWindows GUI code.  GTK+ 2 code will take its place,
  258.         once it is ready.
  260.         Added reset and power commands to the movie format.  More commands(such as insert
  261.         disk, eject disk, flip dip switch, etc.) will be added simultaneously as work
  262.         on network play continues.
  264.         Modified SexyAL OSS code to not adjust the number of fragments to a power of 2.
  265.         It works fine on my card, allowing finer-grained buffer size control,
  266.         but I'm not sure it will work with all chips.
  268.         Fixed parsing of the "-specialfs" command-line argument.
  270.         Added the hq3x scaler.
  272.         Updated to the latest Scale2x code.  I also added the Scale3x scaler.
  274.         Changed the keyboard assignments for toggling full screen to "Alt" + "Enter".
  276.         FCEUI_SaveState() and FCEUI_LoadState() changed.  Porters should read
  277.         driver.h.
  279.         Miscellaneous changes to accommodate new network play plan.  It's not close
  280.         to being finished.
  282.         Altered RTI emulation.  In Paris Dakar Rally's NMI handler, it does "CLI ; RTI".  
  283.         Previously, FCE Ultra would generate an interrupt right after RTI occured, due to the
  284.         presumed latency that RTI had with the I flag.  I changed it so there is no latency, so
  285.         no interrupt will occur in this case(interrupts kill this game).  The interrupt source
  286.         is the "frame IRQ", which it never disables, if anyone cares.
  287.         This change does break the "Stars SE" demo, though.  Hmm.
  289.         "FCEUGameInfo" is now a pointer, rather than just a statically-allocated structure.
  290.         This may cause some null-dereferencing-related crashes, but it should help keep
  291.         code a little cleaner(maybe?).
  293.         Played around with the FDS FM code some more.  It's still not right.  Bah.
  295.         Hacked in support for entering Datach/Barcode World barcodes without a GUI, using the
  296.         F8 key and the numeric keys.
  298.         Added code to save/load movies.  Movie support will only record/play back the
  299.         states of the four emulated gamepads.
  301.         Modified the sound code to use timestamp/timestampbase differently.  In addition,
  302.         timestampbase is now saved in save states("timestamp" doesn't need to be saved, since
  303.         it's reset to 0 at the end of each emulated frame).
  305. 0.98.2:
  306.         Fixed a few problems with the SDL command-line build code
  307.         for Win32.  Also, SDL 1.2.7 seems to have a bug that breaks FCE Ultra's
  308.         full-screen/windowed switching capabilities(at least under Win32).
  309.         Stupid everything.
  311.         Minor SexyAL changes.
  313.         Updated documentation.
  315. 0.98.1:
  317.         Increased the volume of the FME07 sound channels.
  319.         Fixed a bug in the SexyAL endian conversion code.
  321.         Made the SexyAL chunk conversion loop work.
  323.         Replaced the old OPL2 emulator with a modified version of
  324.         Mitsutaka Okazaki's YM2413 emulator for the VRC7 sound emulation.
  326.         Decreased the pitch of the FME 07 expansion sound channels by one octave.
  328.         Decreased volume of output of $5011 in MMC5 emulation code.
  331. 0.98.0: Some changes I made aren't listed below.  Ah well.  The magnitude
  332.         of the changes was too great...
  335.         Default sound volume is 100(%), which makes a lot more sense than 75%, but not much.
  336.         It's multiplied by 3/4 internally now.
  338.         Added support for the Datach barcode reader(GUI interface only).  The emulation code
  339.         was adapted from the VirtuaNES source code.
  341.         Reassigned the Datach games to mapper 157, from 16, with CRC32 checks.
  343.         Increased the maximum number of screen snapshots in the snapshots directory
  344.         to 99999(from 999).
  346.         Reassigned the following games to mapper 210, using CRC32 checks:
  347.                 Chibi Maruko Chan
  348.                 Dream Master
  349.                 Family Circuit '91
  350.                 Famista '92
  351.                 Famista '93
  352.                 Famista '94
  353.                 Heisei Tensai Bakabon
  354.                 Top Striker
  355.                 Wagyan Land 2
  356.                 Wagyan Land 3
  357.         If you use a hack/translation of one or more of these games, you will of course
  358.         need to manually change the mapper number in the header for it to work properly in
  359.         FCE Ultra.  Family Circuit '91 still may not fit in with the rest of these games,
  360.         but it's definitely not a "stock" mapper 19 setup.
  362.         Fixed an OpenGL palette bug when using scanlines(previously, I think it was
  363.         setting the palette of the scanlines overlay texture instead of the actual image
  364.         texture in some instances).  The bug showed up on games that make use of the color
  365.         deemphasis bits.
  367.         Rewrote a lot of the PPU background rendering code to be more accurate(and
  368.         obfuscated!).  This eliminates the X-offset hack I made earlier.
  370.         Removed some of the NSF visualization code, and altered the look of the NSF
  371.         display slightly.  The NSF waveform visualization code will now take into
  372.         account the current volume setting.
  374.         Changed the default key bindings for the standard emulated gamepad
  375.         to something more compatible with window managers.  I may change it back, but probably
  376.         not, since it is easily configurable now.
  378.         Updated the MMC5, VRC6, and FME07 low-quality sound emulation code
  379.         with the compatible parts of the high-quality sound emulation code for those chips.
  381.         Adjusted timing of horizontal scroll update(near the beginning of hblank.  I made
  382.         it occur sooner).  I also added a hack to allow X-offset(fine X scroll) changes mid
  383.         scanline, however, it is extremely ugly, and may not work correctly for everything
  384.         (doing it correctly would probably kill speed).
  385.         I mainly did it to fix games like F-1 Race and Mach Rider, and other racing
  386.         games that are extremely sensitive to horizontal scrolling timing.
  388.         Some FDS IRQ emulation changes to fix some screen corruption problems
  389.         in "Kaettekita Mario Bros".
  391.         Removed zlib(the code, not support).
  392.         I also removed support for compiling without zlib(it's small, simple, provides
  393.         very useful functions, and may provide critical features for fceu in the future).
  395.         *undone, breaks debugger, FIXME.* Replaced some inline functions with macros in x6502.c.
  397.         Increased the speed of Namco 106 sound emulation in HQ sound mode.
  399.         Many many sound emulation changes and adjustments based on blargg's tests.
  400.         The default sound volume is about 150% what it was before, because the sound range
  401.         has changed(now -soundvol 100 is like -soundvol 200 on older builds), and the
  402.         default "soundvol" setting is 75.  100 clips on some Namco games, and 200 clips
  403.         on many games, so I'll probably have the configurable volume range as [0:125].
  404.         What exactly is "%" supposed to mean in this case....  100% of what?!
  406.         When using low-quality sound emulation mode, total emulation speed is about 10%
  407.         less than previous builds.  The change in speed for high-quality sound emulation
  408.         mode is significantly less.
  410.         Added beginnings of SexyAL to source code tree, removed SDL sound support, and
  411.         old OSS code.
  413.         Copied over some autoconf/automake stuff from phamicom.  It stills needs a bit
  414.         of work...
  416.         Fixed DMC IRQ emulation.  Fixes many CodeMasters games.  Finally. ^_^
  418.         Restructured a lot of files, changed the interface between driver and
  419.         emulator code slightly.
  421.         * Insert stuff here *
  423. November 28, 2003       -       Snapshot
  425.         Removed the DOS, Linux SVGAlib, and Win32 targets.  *GASP*
  426.         Win32 support will return(eventually), using SDL + wxWindows.
  427.         SDL can use svgalib or GGI anyway, so it shouldn't be a huge loss.
  428.         DOS support will only return if someone ports SDL to DOS. ^_^
  429.         It would be nice if SDL could accept modelines.  Maybe in SDL 2.0...
  431.         Merged fce.c and svga.c into fceu.c, and fce.h and svga.h into fceu.h.
  433.         Reassigned "Mortal Kombat 3 - Special 56 Peoples" to mapper 209.
  435.         Added emulation of the "Oeka Kids" tablet.
  437.         Added emulation of the Family Trainer.
  439.         Added emulation of the "Ultimate Quiz King" buzzers.
  441.         Added emulation of the Mahjong controller.
  443.         Added emulation of HyperShot controllers.
  445.         Fixed loading of NSFs with load addresses below $8000.
  447.         Cleaned and simplified some of the NES APU code.
  449.         Altered mapper 65 emulation.  Fixes Kaiketsu Yanchamaru 3.  Does it break anything?
  451.         Wrote a small FAQ file.
  453.         Fixed displaying of garbage and other unpleasantness on the first scanline.  I need
  454.         to clean up that code, though.
  456.         Fixed color deemphasis emulation when all bits are set.  For some
  457.         reason, I had commented out the code.  Bleh.
  459.         NSF player now writes $C0 to $4017 if the FDS is being used(the FDS
  460.         BIOS writes $C0 to $4017).  $40 for all other NSFs.
  462.         Added support for iNES mapper 58(nnnesterj).
  464.         Added support for iNES mapper 208.
  466.         Reassigned "Fudou Myouou Den" to mapper 207(CRC32 checks).
  468.         Reassigned "Karnov" to mapper 206(CRC32 checks).
  470.         Fixed the mapper 95 code, which was horribly broken.
  472.         Differentiated between mappers 33 and 48.  Added CRC checks to assign
  473.         some games to mapper 48.  "Flintstones 2" and "Don Doko Don 2" are
  474.         the games that need to be assigned to 48.  Are there others?
  476.         Replaced usage of TriggerIRQ to X6502_IRQBegin/X6502_IRQEnd combos in
  477.         various mapper emulation files.  67, 33/48, 40, 73, 42, 65, 6, 182
  478.         Removed function TriggerIRQ() from x6502.c
  480.         Fixed the sound volume of the VRC7 emulation in high-quality sound mode.  
  481.         Decreased(slightly) the volume of VRC7 emulation in both high-quality sound modes.
  483.         Decreased the volume of the MMC5 expansion sound channels.
  485.         Decreased the volume of the FME-7/mapper 69 expansion sound channels.
  487.         Added FCEU_gmalloc(), which will call exit() if memory allocation fails,
  488.         otherwise it is guaranteed to return a memory block.
  489.         This will be used in the mapper code mainly.  It should only
  490.         be used for small memory chunks.  The reasoning is that if 64 some like KB of
  491.         RAM or less can't be allocated, for example, it'd probably be best to
  492.         exit the emulator ASAP.  It also helps to simplify code logic, and
  493.         help (me) with modularization.
  494.         The behavior of this may change in the future.  I still need to think about it.
  495.         I should probably save the configuration file regularly(or much better,
  496.         use the registry) on the Windows port, though.
  498.         Cleaned up the save-state saving/loading code a bit, and added
  499.         support for linked save state structures for better modularity and
  500.         less code duplication.
  502.         Merged the iNES and UNIF MMC1, MMC3, and MMC5 code more completely.
  503.         I may need to sanify CHR RAM and WRAM allocation for pedanticness,
  504.         though.  Also worked on Tengen RAMBO-1 emulation, and mapper 90 emulation.
  506.         WITH PREVIOUS VERSIONS***
  507.         I plan on doing the same thing with other mappers/boards in the future, though.
  508.         Always on the quest for 1.0...
  510. November 12, 2003       -       0.97.5 Release
  512.         Windows:  Added limited support for arguments that change configuration
  513.         to be passed to FCE Ultra.  Example:  fceu -pal 1 c:\streetgangs.nes
  514.         It may be useful in frontends.
  516.         Fixed filename generation for automatic IPS patching when a file
  517.         with no extension is loaded.  Before this change, FCEU would
  518.         look for "game..ips" with a file named "game".
  520.         Converted and updated the cheat guide in(to) HTML.
  522.         Added support for iNES mappers 202,203,231 from info from cah4e3.
  523.         Fixed support for mappers 60, 200.
  525.         Fixed various major bugs in the breakpoint deletion code.
  527.         UN*X:  Added support for OSS(/dev/dsp) devices that don't support mono
  528.         sound.
  530.         Increased PPU startup idle time to 2 frames.  Fixes that
  531.         unlicensed "Earthworm Jim 3" game.  Does it break anything?
  533. November 9, 2003        -       0.97.4 Release
  535.         Fixed another obscure PPU emulation screen corruption bug.
  537.         Added support for Game Genie cheats in the cheat interface.
  539.         Windows:  Reworked the cheat interface, merging the cheat search
  540.         and cheat list windows into one.
  542.         Windows:  Greatly improved the CPU debugger.
  543.         The code still needs a lot of cleaning, though.
  545.         Readjusted VRC6 IRQ emulation timing.
  547.         Added support for the UNIF MMC3 board TEROM.  The maximum PRG/CHR sizes
  548.         may not be correct in this implementation, though.
  550. November 8, 2003        -       0.97.3 Release
  552.         Added a control to set the highest quality sound mode in Windows.
  553.         This change requires that any users who previously set
  554.         "high quality sound" to set it again.
  556.         Fixed the volume of high-quality sound mode again.  The changes
  557.         I made earlier didn't affect all the filter coefficients.
  559. November 8, 2003        -       0.97.2 Release
  561.         Made a minor optimization to writes to palette memory.
  563.         Altered VRC6 IRQ emulation timing slightly.
  565.         Fixed a weirdo PPU emulation bug that could cause garbage on the right
  566.         side of the screen in certain situations.  Thanks to FrenziedPanda for
  567.         bugging me enough to make me look into the problem and fix it.
  568.         I should be on the lookout to see if the fix breaks anything, though.
  570.         Fixed the volume of high-quality sound mode(-soundq 1).  It was
  571.         at 1/4 the volume it should have been.  I compensated by increasing
  572.         the precision of the filter coefficients, which increased the sound
  573.         quality of that mode slightly without hurting performance.
  575. November 7, 2003        -       0.97.1 Release
  577.         Fixed mapper 105 emulation.  I had begun merging it into the
  578.         rest of the MMC1 code for 0.97, but I hadn't finished it.
  580.         Changed things like RdMem(_PC++); to RdMem(_PC); _PC++;
  581.         Darn evil global variables.  I need to fix them.  Screw speed.
  583.         Expanded checks for the global variable "fceuindbg"(used in debug
  584.         mode to prevent reads in the debugger from altering any registers).
  586. November 6, 2003        -       0.97 Release
  587.         * Note:  I still had much more I had wanted to get done for 0.97,
  588.         but I lost even more interest.  The Windows port still doesn't
  589.         have a way to enable the "highest" sound emulation mode, nor the
  590.         low pass filter code, not to mention that the lowpass filter code
  591.         isn't complete(I would need to design a high-order FIR filter from an IIR
  592.         filter to work properly-have the correct rolloff, among other
  593.         things-at finite playback rates).
  595.         Fixed a bug in the IPS patcher.  The recorded size wasn't being updated
  596.         after a successful realloc() was made, which could lead to corrupted patch
  597.         data from some patches.
  599.         Added support for mappers 200, 201 from submitted code.
  601.         Rewrote mapper 15 support to make more sense(well, depending
  602.         on your point of view...).
  604.         Fixed 256KB CHR select support for mapper 115.
  606.         Added support for mapper 12 from code from cah4e3.
  608. October 16, 2003        -       Snapshot
  610.         Fixed support for mapper 245(for nonencrypted/non-smynes-screwed up
  611.         ROM images only.  Fixes "Yong Zhe Dou E Long [...] Dragon Quest 7".
  613.         Added support for mappers 60, 62, 230, 244 from submitted code.
  615.         Modified mapper 90 emulation to allow game-select on reset
  616.         for "Final Fight 3".
  618.         Modified mapper 45 emulation to allow "Super 8-in-1" to work.
  620.         Added a low-pass filter, and an option to enable it(CLI ports).
  622.         0x00 is now written to $4011 in the NSF player code instead of 0x40.
  623.         Fixed some other similar sound register init problems that I had fixed
  624.         in Festalon but forgot to fix in FCEU.  Grrr.
  626.         Removed some unnecessary 64-bit integer usage from FIR sound filtering
  627.         code.
  629.         Added a new sound quality mode.  Higher than high, it's highest(in
  630.         FCE Ultra, for now).  Still need to fix the interface to allow
  631.         enabling it in the Windows port.
  633.         Added some code for lower-level MMC3 IRQ emulation.  It isn't completed
  634.         , and will not work properly as-is.  I'm still playing around with
  635.         it occasionally.
  637.         Fixed the sprite overflow flag(I think I fixed it), that was broken in an earlier
  638.         pre-0.97 release.
  640.         Fixed support for iNES mapper 193.
  642.         Command line arguments "-pal" and "-gg" now take extra arguments(1/0)
  643.         and are remembered in the configuration file.
  645. September 27, 2003      -       Snapshot
  647.         Added support for iNES mapper 50.
  649.         Modified the UNIF board initialization code.  Hopefully, this
  650.         new interface will eventually be used with the iNES code.
  652.         Miscellaneous code cleanups.
  654.         /dev/dsp is now set to 8(previously 9) buffers of 128 samples in length
  655.         in the SDL code.
  657.         Tried to make the save state code more expandable and modular.
  659.         Moved a lot of the PPU code into ppu.c.
  661.         Added more extensive debugging code to the 6502 emulator, to allow
  662.         for memory read/write hooks(including zero page addressing modes).
  664.         Readadjusted DMC timings when PAL emulation is enabled.  It looks
  665.         like it was correct before I had made the August 2 change.  Thanks
  666.         to Bananmos for the information.  I think. :/
  668.         Added support for iNES mapper 193 from information from virtuanes.
  669.         I think my dump of it is "bad", though.  PRG and CHR pages look  
  670.         like they are in the wrong order(logical vs physical?  Who's to say
  671.         what's physical?).
  673. September 1, 2003       -       Snapshot
  675.         Fixed some minor initialization issues with iNES mappers 7 and 34.
  677.         Added support for UNIF board NES-GNROM.
  679.         Removed support for save states created with versions of FCE Ultra
  680.         less than 0.56.
  682.         Replaced SDL sound buffering code with a lock-free FIFO implementation
  683.         written by David Olofson, with a few modifications by myself.
  685.         Fixed a VRC7 NSF bug(it showed up under the reworked driver/file
  686.         loading order in the cli code).
  688.         The board in "Rolling Thunder" has "RAMBO 1" on it, not "RAMBO-1".
  690. August 9, 2003  -       Snapshot
  692.         Removed the old plain text documentation and replaced it with
  693.         a new document in HTML.  It is not completed yet, though.
  695.         Rewrote the SDL-native audio code to be less wacky and more
  696.         thread-safe(hopefully).  I'm still waiting for a new SDL audio
  697.         API...
  699.         Altered the MMC5 IRQ timing.  Fixes minor graphical glitches
  700.         in Castlevania 3.  Does it break anything?
  702.         Removed some debugging code that got into the last snapshot.
  704. August 5, 2003  - Snapshot
  706.         Added some code in the IPS patcher to allow for expanding the size of files.
  708.         Fixed a double free() bug with a mapper 51 game(in ines.c).
  710.         Added support for "Alien Syndrome" (US release) as iNES mapper 158.
  711.         It looks like a derivative of the normal RAMBO-1 board(or is that
  712.         the name of the chip?), similar to TKSROM/TLSROM(mapper 118).
  714.         Improved the "native" SDL sound code.  It will now call SDL_Delay(),
  715.         among other nice things.  The code could probably be improved more,
  716.         though.
  718.         Added support for decimal components in xscale/yscale in the SDL
  719.         port.  Set the default xscale for windowed mode to 2.40(to get a
  720.         more correct aspect ratio, assuming the display is currently at
  721.         a 4:3 aspect ratio).
  723.         Modified args.c to handle floating-point numbers.
  725. August 2, 2003  -       Snapshot.
  727.         Disabled texture wrapping with OpenGL(there were problems at the edges
  728.         of the screen with linear interpolation).  Bah.  Now the edges
  729.         are too bright...
  731.         Improved the accuracy of the DMC timing when PAL emulation is enabled.
  732.         I still don't think it's totally correct, though.
  734.         Changed the default settings for the SDL code.  Full screen
  735.         is now 640x480x8bpp by default, xscale and yscale are 2 for both full
  736.         screen and windowed, opengl support is enabled, linear interpolation
  737.         for OpenGL is enabled, and X-axis stretching is
  738.         enabled(in full screen).
  740.         "Scanlines" were enabled in 8bpp to 8bpp blits in
  741.         drivers/common/vidblit.c when they shouldn't have been.  Fixed.
  743.         Fixed OpenGL code under big-endian platforms.
  745. August 1, 2003  -       Snapshot.
  747.         Various code clean-ups.
  749.         Played around with adding a GTK+ GUI to the SDL code.
  751.         Rewrote part of the hq sound rectangle wave code.
  753.         Replaced the high-quality sound inline assembly filter code with
  754.         slightly faster C code.
  756.         Hacked around with GP32 support.  I don't know if the GP32 would
  757.         be fast enough, though.
  759.         Skipped frames will now have D5 of $2002 set at the beginning
  760.         of the frame.  Fixes "Bee 52".  I must see if it breaks anything.
  762.         Added OpenGL support to the SDL code.
  764.         Removed the PPU drawing inline assembly code, replacing it with a faster
  765.         algorithm written in C.
  767.         "Disabling" the 8-sprite limitation will no longer cause
  768.         "Bee 52" to break.  However, the "Solstice" wizard will still
  769.         have the weird thing growing out of his face in the introduction,
  770.         since it depends on no more sprites to be rendered.
  772.         Added entry for that Black Bass game for header corrections in
  773.         ines.c
  775.         Strip color burst bit(D0 of $2001) is only "emulated" if bg or
  776.         sprite rendering are turned on, at the end of the scanline.
  777.         Doing it with pixel/tile granularity would require modifying
  778.         the sprite graphics data copying routine, which I don't
  779.         feel like doing.  Fixes that crazy Sayoonara demo by Chris Covell.
  780.         I also modified the NES RAM initialization code.
  782.         Adjusted VRC7 IRQ emulation for better Lagrange Point goodness.
  784.         Added support for iNES mapper 91. (VirtuaNES)
  786. 0.96:
  787.         Improved RAMBO-1(mapper 64) emulation.  "Skull and Crossbones" is
  788.         now playable.
  790. 0.95:
  792.         timestamp and timestampbase are no longer saved/loaded to/from
  793.         save states.  They were causing too many problems I didn't
  794.         want to fix, and I never intended them to be saved in save states
  795.         when I wrote the code that uses them.
  796.         I think the reason they were being saved was that I wanted to make it
  797.         possible to add movie support and network play save state loading
  798.         (distributing the save state over the network).  So if someone in
  799.         the future wants to add these features, the issues(primarily with
  800.         zapper emulation and sound emulation) with saving the time stamp will
  801.         need to be resolved.
  803.         Fixed some crashing bugs when save states are loaded when
  804.         high-quality sound emulation is enabled.  It is like patching
  805.         holes in a swiss-cheese boat.  All the holes may be patched, but
  806.         it looks ugly.  At least it tastes good...
  807.         TODO:  Look into saving more data in the save states, especially
  808.         data that is based off of "timestamp" and "timestampbase".  Also
  809.         look into validating this data.  Right now, corrupt save state data
  810.         might cause memory corruption in FCE Ultra.
  812.         Fixed some bugs in the NSF player.
  814.         Cleaned up more code.
  816.         Reduced the usage of TriggerIRQ().
  818.         Split the palette code into a new file, palette.c, from svga.c
  820.         Low-G-Man(NTSC and PAL versions) are now recognized by CRC32 value,
  821.         and WRAM will be disabled if they are loaded.  A warning/status message
  822.         will also be printed regarding this issue.
  824.         Decreased the volume of the DMC/PCM channel in low-quality sound
  825.         emulation.
  827.         Low-quality sound emulation now uses 32-bit integers for much
  828.         better speed.
  830.         FCEUI_CRC32() wasn't returning anything.  D'oh.  Fixed.
  832.         Added somewhat crude support for games that switch background CHR data
  833.         mid-scanline (this is needed in games such as Mother, Pirates!,
  834.         Business Wars, and Marble Madness).
  836.         Altered NMI, IRQ, and BRK emulation again.  Fixes some games,
  837.         like Bases Loaded 2 and Dynamite Bowling, and maybe some others.
  838.         I had to increase the size of the IRQlow variable for delayed
  839.         NMI execution...  I also had to add a delay between PPU reset
  840.         and the PPU actually doing anything, to fix "Knight Rider".
  842.         Fixed a mapper 90 save state bug.
  844.         /dev/dsp code now searches for /dev/dsp before /dev/dspX (where X is
  845.         a non-negative integer).
  847.         SDL joystick axes configuration is now done from the joystick.
  849.         Tweaked various Konami mappers' IRQ counter emulation.
  851.         Added custom SDL throttle code that gives up time slices instead of
  852.         using 100% cpu.
  854.         Fixed an issue with sprite priorities on MSB-first platforms.
  856.         Modified powerpad.c to avoid a symbol conflict when compiling on the
  857.         Power PC architecture.
  859. 0.94r3:
  860.         sound.c:
  861.                 Fixed a divide-by-zero bug that occurred when a virtual
  862.                 reset(like by pressing F10) occurred when sound emulation was
  863.                 disabled.
  865. 0.94r2:
  866.         drivers/common/vidblit.c:
  867.                 Fixed code for 32bpp blur effect.
  869.         drivers/cli/sdl-video.c:  
  870.                 Added error message for unsupported bit depths.
  872.         mappers/simple.c, ines.c:
  873.                 Used this bug fix pseudo-release as an excuse to add
  874.                 support for mapper 107.  Information taken from virtuanes.
  876. 0.94(fixed release)
  877. ---
  878.         Fixed call to InitUNIXDSPSound in svgalib.c
  880.         Added man pages.
  882. 0.94
  883. ---
  884.         Added support for rapid fire A/B buttons on physical joysticks
  885.         in SDL/svgalib/DOS code.
  887.         Implemented "high-quality" Namco 106 emulation(used for hq sound mode).
  888.           In this case, "high-quality" means sounding more like it should,
  889.          not necessarily cleaner.  I'm not certain that it's totally correct,
  890.          but it's in the right direction.
  892.         RAM cheats should no longer affect Game Genie emulation.  I still
  893.         need to completely verify this.  There may be some sort of race
  894.         condition.
  896.         Removed various minor speed hacks in the name of style and
  897.         correctness(and to make maintaining FCE Ultra easier for those
  898.         people who are not me). :)
  900.         Removed NSF cpu hacks, as I changed code to make them unnecessary.
  902.         Fixed another FDS IRQ emulation bug.  "Famicom Grand Prix II" works
  903.         now.
  905.         Fixed a memory leak and a heap corruption bug in "file.c".
  907.         Added support for on-the-fly IPS patching.  
  908.         Place the IPS file in the same directory as the file to load,
  909.         and name it filename.ips.
  911.         Examples:       Boat.nes - Boat.nes.ips
  912.                -
  913.                         Boat.nes.gz - Boat.nes.gz.ips
  914.                         Boat     - Boat.ips
  916.         Some operating systems and environments will hide file extensions.
  917.         Keep this in mind if you are having trouble.
  919.         Patching is supported for all supported formats(iNES, FDS, UNIF, and
  920.         NSF), but it will probably only be useful for the iNES format.  It
  921.         can be used with the FDS format, but be warned that it will permanently
  922.         patch your disk image, as the disk image is written back to disk
  923.         when the game is unloaded(unless the disk image is in a zip file, in
  924.         which case it isn't written back to disk).  UNIF files can't be
  925.         patched well with the IPS format because they are chunk-based with no
  926.         fixed offsets.  Support for a UNIF patching format may be added
  927.         in the future(probably by someone else.).
  929.         Added more games to the list in ines.c for having battery-backed
  930.         WRAM, for header corrections.
  932.         Copied over the 96KHz filter coefficients from Festalon that I forgot
  933.         to do in 0.92.  Oops.
  936. 0.93
  937. ---
  939.         Reduced the volume of the FDS sound channel.
  941.         Fixed a bug in the FDS IRQ emulation code that caused "Lutter" to not work.
  943.         Fixed a bug in unif.c that would cause a crash if a unif file were
  944.         loaded without a board name being specified(as could happen
  945.         with a corrupted nsf).
  947.         Fixed a bug in general.c relating to relative filenames(running
  948.         fce ultra like "./fceu ../big.nes" would work, but "./fceu ../big"
  949.         would not work- it crashed).
  953. 0.92r2
  954. ---
  955.         Fixed dpcm irq bug that broke Cobra Triangle.
  957. .92
  958. ---
  960.         Removed NSF player background, and added some special effects goodies.
  962.         Changed the NSF player to use the emulated gamepad as input instead
  963.         of having special NSF-player-only keys.
  965.         Added support for mapper 249(using nonencrypted games), thanks to SARO
  966.         for info.  SMYNES sucks.  
  968.         Updated video blitting library-thing(vidblit.c) with more special
  969.         effects, and removed 24bpp support.
  971.         SDL cleanupification.
  973.         Added support for mapper 61.
  975.         nnnesterj:  Added support for mapper 57.
  977.         Fixed mapper number for "Golden Game 150 in 1".  Changed it to 235
  978.         from 43.
  980.         DDraw back buffer surfaces are now created in system memory if the
  981.         hardware blitter can't do stretching.
  983.         Restructured file wrapping code.
  985.         Added new cheat search methods.
  987.         Fixed a major cheat unloading memory bug(and memory leak).
  989.         Emulated that funky nonlinear DAC effect for hi-quality sound.
  991.         More fixes/cleanups to FDS emulation code.
  993.         Tweaked PPU timing a bit.
  995.         Improved network play.
  997.         Holding the enter key down will no longer do fun stuff to the nsf
  998.         player.
  1000.         Improved NSF player.  It should support streaming pcm nsfs now...
  1002.         Changed FDS keyboard keys around a bit.  F6 is the disk select key,
  1003.         and F8 is the disk insert/eject key.
  1004.         F8 to insert VS Unisystem coin, F6 to view/toggle dip switches.
  1005.         Hopefully people won't complain after blindly hitting the save state
  1006.         buttons. :)
  1008.         Many fixes and improvements to the Windows port.  No more cpu-consuming
  1009.         wait loops(specifically, sound).  Added a message window.
  1011.         FDS sound emulation improvements.
  1013.         FDS disks are now auto-inserted on power on(or was it loading a new
  1014.         game...).
  1016.         Changed the default last rendered scanline to 231.
  1018.         ines header corrections are now printed as status messages, not errors.
  1020.         Rearranged input updating code.
  1022.         Fixed a sprite transfer bug.  Fixes PAL version of Rainbow Islands.
  1024.         Debugger hooks added.
  1026.         Small optimizations in Refreshline and FetchSpriteData to hopefully
  1027.         offset the slight slowdown in the cpu core.
  1029.         MapperHBIRQHook is now called differently(depending on hi/low bg/spr
  1030.         addresses).
  1032.         Added support for unif board UNL-8237.
  1034.         Added support for mapper 144(death race).
  1036.         Added partial support for mapper 74.
  1038.         Fixed a cpu emulation bug in GETIYWR.  It would sometimes set "target"
  1039.         to 0x10000, which was a BAD THING(overflow; now it wraps).
  1041.         Tried to add support for mapper 241.  Needs special keyboard emulation.
  1042.         I think.
  1044.         Internal RAM is now initialized to something other than 0.  Fixes
  1045.         Minna no Taabou no Nakayoshi Dai Sakusen.
  1047.         Reassigned "The Money Game" to mapper 155.  It doesn't seem to
  1048.         respect the WRAM enable/disable bits.  Silly game.  And
  1049.         Tatakae!! Rahmen Man.
  1051.         Added support for mapper 115(still needs 256KB CHR select), 241, 114,88.
  1053.         Attempted to add support for mappers 91, 187.
  1055.         Modified frame IRQ to not break so many damn games.
  1057.         Fixed sprite hit detection loop.
  1059.         Improved support for mappers 80, 90,117,154, 189.  
  1060.         nnnester and virtuanes.
  1062.         Reassigned "Devil Man" to mapper 154.
  1064.         Removed bogus Trojan header fix in ines.c.
  1068. .81-post:
  1069. ----
  1070.         Fixed/Worked around(?) compilation problems on gcc 3.2.x.
  1072. .81:
  1073. ----
  1075.         More SDL goodies.
  1077.         Renamed "Makefile.olinuxsdl" to "Makefile.unixsdl"
  1079.         More SDL fixes and cleanups.
  1081.         BeOS port is now compiled with the "-no-fpic" flag, which allows
  1082.         me to use my inline assembly.  The executable work fine as far as
  1083.         I can tell.
  1085.         Added "Makefile.beos".  gcc doesn't like my inline assembly
  1086.         used in RefreshLine(),so this port will likely be slightly slower than
  1087.         other x86 ports.
  1089.         Added a check to make sure SIGBUS is not equal to SIGSEGV in
  1090.         drivers/cli/main.c.  Needed for compiling under BeOS.
  1092.         Renamed the "PI" member of the X6502 structure due to conflicts with
  1093.         a defined symbol with some math header files.
  1095.         Merged fcelineasm.h into fceline.h
  1097.         Fixed(possibly) a possible problem in fcelineasm.h with input register
  1098.         clobbering.
  1100.         More SDL changes.
  1102.         Added speed throttling code to the CLI code, and added a command
  1103.         line switch "-nothrottle".
  1105.         Lots of restructuring/rewriting/merging of the MMC3 code.
  1107.         Updated DOS code to use the generic CLI wrapper.
  1109.         Reads from $4090 and $4092 now return the current envelope setting
  1110.         in FDS sound emulation.  I'm not sure if this is correct...  Affects
  1111.         "Ai Senshi Nicole" and "Bio Miracle Bokutte Upa".
  1113.         Added native SDL sound support to the SDL code.  the "olinuxsdl"
  1114.         now uses this code by default instead of the unixdsp sound code.
  1116.         Modified MMC3 IRQ counter emulation.  I'll need to watch out to see
  1117.         if it breaks any games.  Fixes:  MegaMan 3, Gun Nac, Klax(Japanese).
  1119.         Changed a few memory reads in x6502.c to use RdRAM instead of RdMem,
  1120.         resulting in a slight speed increase.
  1122.         Cleaned up mapper 250 emulation code.
  1124.         Added support for iNES mapper 51(thanks to Kevin Horton for the
  1125.         information).
  1127.         Merged some iNES mappers corresponding to bootleg multicarts
  1128.         based on MMC3s with mbshare/mmc3.c.
  1130.         Added support for iNES mapper 52(thanks to Kevin Horton for the
  1131.         information).
  1133.         Made some hacks to the MMC3 emulation code so that I can add support
  1134.         for pirate MMC3 multicarts more easily.  I should clean it up later.
  1135.         Moved mapper 44 emulation code to mbshare/mmc3.c.
  1137.         Saving screen snapshots will no longer corrupt the frame buffer
  1138.         for one frame(unless memory couldn't be allocated).
  1140.         Fixed screen snapshot saving(it was sort of broken due to the
  1141.         changes made to the driver<->emulator interface code; status
  1142.         messages were being saved to the image).  FCEUI_SaveSnapshot()
  1143.         no longer returns a value(the request to save a screen snapshot is
  1144.         serviced before status information would be written in the next frame).
  1146.         nosprites is now set to 0 before RefreshSprite() returns, to prevent
  1147.         problems if a game turns off the bg and sprites when FetchSpriteData()
  1148.         for the next scanline is called but then turns on sprites when
  1149.         the actual scanline is drawn.
  1151.         PPU_hook() is now called more often if PPU_hook is non-null.
  1152.         Made changes to mappers 118, 95, 9, and 10 to compensate.
  1153.         No games seem to be broken, and I added support for mapper 96
  1154.         (though the games aren't very playable because the special controller
  1155.         isn't emulated).
  1157.         Romance of the 3 Kingdoms is now recognized to use 16KB ex-WRAM.
  1159.         Added support for mapper 185...sort of.  I think this is another
  1160.         instance of incompatible hardware being lumped onto one mapper number.
  1161.         Sigh.
  1163.         Added support for "Famicom Jump 2" as iNES mapper 153.
  1164.         If a good(as far as I can tell) dump is loaded, FCE Ultra will
  1165.         automatically fix the mapper number.
  1166.         I also made some changes to the mapper 16 IRQ emulation code.
  1168.         BRK now sets the I flag.
  1170.         Reads from $4015 no longer reset DPCM IRQ.
  1172.         Changed emulation of RTI instruction slightly.
  1174.         X.IRQlow is now set to 0 in PowerNES().
  1176.         The VS Unisystem bit in the iNES header is no longer looked at(
  1177.         I was having too many problems with this bit being set when it
  1178.         shouldn't have been).  Now, VS Unisystem emulation is enabled
  1179.         when a known VS Unisystem game is loaded.  I also rewrote the VS
  1180.         Unisystem detection function.
  1182.         iNES mapper 1 now supports pageable CHR RAM if no CHR ROM is present.
  1183.         Fixes "Family School".
  1185.         Mapper 70 no longer has a mirroring control emulated, and I extended
  1186.         the number of 8KB CHR pages supported to 16.
  1188.         Cleaned up iNES MMC5 save RAM loading/saving code and added
  1189.         support for MMC1 games with 16KB of RAM(the second 8KB are saved),
  1190.         via CRC32s(currently only Genghis Khan(USA) and Nobunaga's Ambition(
  1191.         USA and Japan) are recognized).
  1193.         Added support for the MMC5 Koei game "Ishin no Arashi", in the iNES
  1194.         format(I added an entry with its CRC32 value and the number of 8KB
  1195.         WRAM banks it needs).
  1197.         Better iNES mapper 33/48 IRQ counter emulation.
  1199.         Added the game "Uchuusen - Cosmo Carrier" to this list.  I'm
  1200.         beginning to hate the iNES format more and more...or maybe
  1201.         just Fanwen. :)
  1203.         Added the mapper 32 game "Major League" to the list of games
  1204.         that usually need iNES header correction...but in this case, the
  1205.         iNES header cannot specify that this game needs to have one-screen
  1206.         mirroring.
  1208.         iNES header information is now printed before any header corrections
  1209.         are made based on a database.
  1211.         Fixed a bug in mapper 32 emulation.  "Ai Sensei no Oshiete"
  1212.         works now.
  1214.         Tried to add support for iNES mappers 245 and 249.
  1216.         Fixed the MMC5 read handler to return the data last on the data
  1217.         bus instead of 0xFF when a read was made to an unmapped address.
  1218.         This seems to fix the lockup problems in "Bandit Kings of Ancient
  1219.         China".
  1221.         Reversed "Modified the time at which the "y scroll" register is updated
  1222.         during hblank."  The changes broke Klax.
  1224.         Added an unsigned 64-bit base timestamp variable "timestampbase".
  1225.         Adding this to the 32-bit variable "timestamp" will return
  1226.         the number of cycles executed since emulation started(in the future
  1227.         I'll probably change it to since reset or power toggle).
  1228.         This allowed me to replace "lastn" hack in the MMC1 code with
  1229.         something better.
  1231.         Changed my mind and undid the removal of support for old save states.
  1233.         Removed support for old save states and in general I won't
  1234.         try to support save states made with previous versions.
  1236.         MMC1:  Writes to $8000-$FFFF with D7 set will now cause
  1237.         the first MMC1 register to be OR'ed with 0x0C.  I'm not sure
  1238.         if this is correct, but it doesn't seem to break anything
  1239.         and it fixes Robocop 3.  I'll see if anyone reports games
  1240.         not working in .81 that worked in .80.
  1242.         Worked on a generic driver interface wrapper very similar
  1243.         to the driver interface FCE Ultra used to use(I'm getting
  1244.         tired of all of the duplicated driver code).  Eventually,
  1245.         the DOS, SVGAlib, and SDL ports will use this wrapper.
  1247.         Similar change to the argument parsing code.
  1249.         Changed configuration file saving-loading routines and the
  1250.         configuration structure to allow for linking config structures
  1251.         to each other).
  1253.         Small fix to the emulation of the MMC5 split screen mode.
  1255.         Made Linux SDL code compilable again.
  1257.         Changes to MMC5 EXRAM emulation(read/write).
  1259.         Fixes to the emulation of the MMC5's split screen mode, based on
  1260.         observations while using CastleVania 3 and a Game Genie(on a real
  1261.         NES).
  1263.         Fixed a bug in ines.c that caused any calls to AddExState() from
  1264.         a mapper initialization function to be effectively "erased"(ResetExState()
  1265.         was called after the mapper was initialized).  Fixes the VRC7 sound
  1266.         state saving/loading stuff.
  1268.         Finished adding support for the MMC5's split screen mode(this does
  1269.         not mean that the support is complete, but at least the intro in
  1270.         "Uchuu Keibitai SDF" works correctly now).
  1272.         Worked on adding support for the MMC5's split screen mode.  Not
  1273.         completed.
  1275.         Reverted to .80's FDS sound code.
  1277.         Modified the time at which the "y scroll" register is updated
  1278.         during hblank.
  1280.         NSF playing code will now disable FDS sound output on song init
  1281.         (fixes some problems with the Zelda no Densetsu NSF rip).
  1283.         Increased the emulated clock speed of the FDS sound emulation code
  1284.         to give better quality output.
  1286.         Modified NMI to occur a few cycles later.  Fixes BattleToads...but
  1287.         it may have broken other games.  Also modified the way NMI's are
  1288.         handled in x6502.c.
  1290.         Modified ines.c to memset() GameMemBlock to 0 on virtual power toggle.
  1291.         Also, trainers are now loaded into their own buffer instead of
  1292.         directly into emulated WRAM and copied into emulated WRAM on
  1293.         power toggle; I've been meaning to do this for quite some time.
  1295.         Changes to the way the zapper cursor is drawn on the screen.
  1297.         FCEUD_WriteSoundData(), FCEUD_BlitScreen(), and FCEUD_UpdateInput()
  1298.         have been combined into one function: FCEUD_Update().
  1300.         More fixes to the network play code, and a fix to the Windows network
  1301.         play driver code that fixes(hopefully) a rather evil bug that caused
  1302.         lockups when the remote stopped network play.
  1304.         Added code to set the battery-backed bit in RAM if a game needs it,
  1305.         based on CRC32.
  1307.         Added more games to the list of games that commonly have bad iNES
  1308.         headers, in ines.c
  1310.         Updated docs and usage.h for DOS and Linux regarding the new video
  1311.         mode and the new refresh rates.
  1313.         Linux:  Fixed a bug with video mode 6(a few upper scanlines were being
  1314.         cut off).  Increased the refresh rate of video mode 3 to 120hz.
  1316.         Increased the refresh rate of video mode 2 to 65 hz in the Linux port.
  1318.         Screen snapshots can now be taken while playing an NSF.
  1320.         Added a new sexy tweaked vga mode that I created to the Linux svgalib
  1321.         port.  It's 256x224 at a refresh rate of 103hz.  Hopefully it won't
  1322.         blow up anyone's monitor. ;)
  1323.         DOS port will follow eventually.
  1325.         Modified Makefile.base to produce an executable named "fceu" instead
  1326.         of "fce".
  1328.         The plans(cycle-accurate ppu emulation) for .90 were a bit ambitious,
  1329.         and I still need to make other fixes before then.
  1331.         Fixed some minor(usually) bugs with setting 256x240 tweaked VGA mode
  1332.         in DOS and Linux ports.
  1334. .80:
  1335. ----
  1337.         Cleaned/fixed a few things in the mapper 19 emulation code.
  1338.         Family Circuit '91 still doesn't work quite right...  I wonder if
  1339.         it's a bad dump.
  1341.         Added input override code to Windows port.
  1343.         Added code to fix iNES header information in RAM and suggest
  1344.         changes to the user.
  1346.         Added support for iNES mapper 152(to be used with games set to
  1347.         mapper 70, that use one-screen mirroring instead of h/v mirroring).
  1349.         Blits using the DirectX blitting function(method?) to the primary
  1350.         surface are now done with the asynchronous flag set(if that
  1351.         fails, a "normal" blit is tried).
  1353.         The DirectX blit buffer(secondary surface that FCE Ultra writes to
  1354.         directly and then uses the DirectDraw blit function on to blit
  1355.         to the primary buffer) is now created without specifying it
  1356.         should be in system memory or video memory, except in the case
  1357.         when no hardware blitting is available, and then DDraw is explicitly
  1358.         told to create the surface in system memory.
  1360.         Added Family Keyboard support to the DOS port.
  1362.         Cleaned up the VRC7 sound emulation code.  I need to find a way
  1363.         to save the current sound state in a save state.
  1365.         Found out the real name of the "Space Shadow" gun; it's
  1366.         called the "Hyper Shot".  I'm still not sure who made it, though.
  1367.         Possibly Bandai did.  The interesting thing is that Konami
  1368.         also made a Famicom accessory(dual square boxy things with two buttons
  1369.         on each) with the same name(though there might not be a space in the
  1370.         name).
  1372.         Only the upper two bits read from $4016/$4017 are undefined.
  1373.         Bit5 is always 0, though.  Fixed the bug in "input.c".
  1374.         Silly kevtris' old documents.  New kevtris' brain is always good.
  1376.         Family Keyboard support for the Windows port.
  1378.         Added support for the Family Basic Keyboard to the Linux port, other
  1379.         ports todo.
  1380.         Might want to add support for the tape recorder at some time.
  1381.         Also mapped the "Scroll Lock" key to disable/enable command keys
  1382.         so that the FBK is more useable.  It doesn't disable CTRL C,
  1383.         though...
  1385.         Changed a lot of inlined functions in x6502.c to macros so that
  1386.         I could test out some optimization ideas.
  1388.         DOS code updates for game input override support.
  1390.         Small optimzation to opcode $4c, and relative jumps.
  1392.         Added some code to ines.c to set controller information in
  1393.         FCEUGameInfo(returned by FCEUI_LoadGame()) based on crc32 values.
  1395.         Updated user documentation and usage.h for DOS and SVGAlib input
  1396.         command-line changes.
  1398.         Added an option to disable the four-score(to Windows and Linux ports
  1399.         so far).
  1401.         Updated Windows interface to support the new Famicom expansion
  1402.         devices.
  1404.         (Re)Added support for the Famicom 4-player device.
  1406.         Improved Zapper emulation...sort of.  It still needs a lot of work. :/
  1408.         Added *partial* support for the "Space Shadow" gun.
  1410.         Added support for the Arkanoid controller(both NES and Famicom style). 
  1412.         Added code to support the extension Famicom input devices.
  1414.         Added PAL scanline start/end drawing settings to Windows port.
  1416.         Added pause emulation key(F2) to Windows port.
  1418.         In the process of rewriting/fixing up input code stuff.
  1420.         Minor bug fix to Power Pad emulation code.
  1422.         VS Hogan's Alley and VS Duck Hunt automatically select the zapper
  1423.         now(though it only works on the SVGAlib port).
  1425.         Undid some FDS sound code changes introduced in 0.76 that totally
  1426.         screwed up sound.  Oops.
  1428.         Added code to allow different settings for first/last scanline
  1429.         drawn while in PAL emulation mode, to the Linux and DOS ports.
  1431.         Added convenience(it's not necessary, but it reduces redundant and
  1432.         confusing code in the driver code) function
  1433.         FCEUI_GetCurrentVidSystem(int *slstart, int *slend).
  1435.         Updated file "TODO".
  1437.         Changed #include <unzip.h> to #include "zlib/unzip.h"
  1438.         in file.c.
  1440.         NSF 6502 player now initialized the stack pointer on reset.
  1442.         Worked on de-emphasis emulation code quite a bit.  
  1443.         The deemphasized palette calculated at the end of the frame is now
  1444.         based on what deemphasis bits were set for the longest during
  1445.         the screen(sampling interval is a scanline) update loop.
  1446.         Added a "static" deemphasized palette at $40-$7F in the palette table.
  1447.         This corresponds to the colors when all of the deemphasis bits are set.
  1448.         I did this to fix the PAL game "Noah's Ark", without breaking
  1449.         anything else.  The only downside is a slight speed loss(~2% on
  1450.         my system when sound is disabled), but this is acceptable to me,
  1451.         at least.
  1452.         Maybe it's time to write hi/true-color ppu drawing code...
  1455.         Fixed an out of bounds array access in svga.c in SetNESDeemph().
  1456.         The variable "lastd" in svga.c was being initialized to the wrong value.
  1457.         Thanks to "Jarod CANAL" for pointing this out.
  1459.         Removed FCEUI_SetFirstRenderedLine or whatever it was called and
  1460.         the function to set the last line.  Replaced with:
  1461.          void FCEUI_SetRenderedLines(int ntscf, int ntscl, int palf, int pall);
  1463.         Changed SetVidSys(int w) to ResetVidSys() in fce.c.  Reenabled
  1464.         PAL/NTSC emulation overrides based on game loaded(really only useful
  1465.         for NSFs and UNIFs now).  
  1467.         UNIF loading code now recognizes the chunk "CTRL" and tries
  1468.         to use it.  Only the svgalib code supports overriding of input
  1469.         settings based on game loaded, now, though...
  1470.         The user is still going to have to configure powerpad settings
  1471.         on his/her own.
  1473.         Fixed return values of FCEU_fseek() and fixed a problem in unif.c
  1474.         related to it.
  1476.         Changed mechanism for how FCE Ultra tells the driver
  1477.         code what type of system is being emulated.  A structure of
  1478.         type "FCEUGI" is returned from FCEUI_LoadGame().
  1480.         Fixed a major mapper 64 emulation bug introduced in 0.76.
  1482.         Modified BlitVidHi() in drivers/win/video.c to speed it up.
  1484.         Added support for loading the iNES-format Game Genie ROM image.
  1486.         Removed ggrom.h and added code to load the Game Genie ROM
  1487.         image from a file.
  1489.         Added Windows netplay.c.  (new: the user exiting the emulator
  1490.         while stuck in a blocking recv() or send() loop now works.)
  1492.         Fixed a vram address register bug in fce.c that I created when I got
  1493.         rid of the pair/dpair data types.
  1495.         Added new mappers/92.c
  1497.         Removed mappers/92.c until I can contact LULU or rewrite it.
  1499.         drivers/win changes.  Removed netplay.c until I can rewrite it.
  1501.         Got rid of pair/dpair data types.
  1503.         Got rid of silly "TempArray" thing.
  1505.         Began adding GPL headers to files.  FCE Ultra is going to be in
  1506.         a state of legal limbo for the next few days...
  1508.         Replaced crc32.c and crc32.h, and added some #ifdef's and #defines
  1509.         to use the crc32 code in zlib instead if zlib is linked with
  1510.         FCE Ultra.
  1512.         More fixes to sb.c.
  1514.         Cleaned up drawing.h and ggrom.h(even though ggrom.h will *probably*
  1515.         be removed before the next release).
  1517.         Redid frameskip code.
  1519.         Rewrote necessary pieces of sb.c and sb.h and fixed quite a few
  1520.         bugs.  I still need to test it on various other sound cards, though.
  1522.         Rewrote(more like "recreated in my own image") DOS keyboard driver.
  1523.         Removed unused "keyscan.h" from drivers/svgalib
  1525.         Rewrote part of(the parts that Marat wrote - the connection and
  1526.         closing parts) the Linux TCP/IP network play code.  I guess it works,
  1527.         but I haven't tested it very much.  In any case, it's still dangerous
  1528.         to use network play in FCE Ultra with SVGAlib, since recv() or send()
  1529.         might block and since the keyboard is in raw mode, you have a problem.
  1530.         Maybe a future SVGAlib will fix the general problem of lockups if
  1531.         keyboard_update() isn't called, though it is only partly SVGAlib's
  1532.         problem...
  1534.         Fixed FCEU_fseek() when used with a compressed file in the PKZIP
  1535.         format that has been loaded.  Fixes a UNIF loading problem.
  1536.         Also added a check to the return value of FCEU_fseek() in unif.c.
  1538.         Replaced Marat's 6502 emulation core with my own.  
  1539.         It should be fully functional, but as always, I don't know if
  1540.         I implemented the undocumented instructions correctly.
  1541.         Several things are correct in this new core that were not in
  1542.         Marat's(D flag is no longer cleared by interrupts, for example).
  1544.         Altered mapper 16 irq counter emulation slightly.
  1546.         Fixed the behavior of the SXA, SYA, and XAS opcodes based on the
  1547.         documentation I have.  I'm not sure what happens when page crossing
  1548.         occurs with those instructions on a real NES, though.
  1549.         Also CHANGED(not fixed) emulation of opcode $8B("XAA").
  1551.         Changed some of the M* functions(absolute indexed and maybe some others)
  1552.         to perform dummy reads.
  1554.         Changed some of the macros in m6502.c to inlined functions so
  1555.         that I can modify and examine them more easily.
  1557. .77:
  1558. ----
  1560.         Fixed a silly network play bug(in the global network play code)
  1561.         that caused excessive lag.
  1563.         Added a "niceness" setting to the sound configuration dialog.
  1564.         Removed obsolete information from the dialog.
  1566.         Fixed speed throttling code in Windows port when PAL emulation is
  1567.         disabled/enabled and a new game hasn't been loaded yet.
  1569.         Commented out a printf() to debug stuff in fds.c(oops).
  1571.         Applied PK's joystick patch to the osdl code.  It allows the user
  1572.         to map axes and it fixes a joystick button mapping configuration saving
  1573.         bug.
  1575.         Added two command line options new to Linux port to DOS port.
  1576.         Just need to test them...
  1578.         Added some stuff to unif.c to allow for boards that can support
  1579.         CHR RAM instead of CHR ROM(darn Sachen boards...).  Fixes UNIF
  1580.         version of "Q-Boy".
  1582.         Added command line option "-snapname" to Linux port.  I'll add it
  1583.         to the Windows port as well, but probably not to the DOS port.
  1585.         Added clip option to Linux port.
  1587.         Fixed sound logging(in Windows port) so that multiple recording
  1588.         sessions now work.
  1590.         Added an option to clip the leftmost and rightmost 8 columns
  1591.         of graphics in the Windows port.
  1593.         Added a submenu that lists recently opened files, in the Windows
  1594.         port.
  1596. .76:
  1597. ----   
  1599.         Updated porting.txt.
  1601.         Added speed throttling code to Windows port that's used when sound is
  1602.         disabled(and an option in the "Miscellaneous"
  1603.         configuration window to disable it).
  1605.         Added cheat interface to DOS build.  
  1607.         A few tweaks to the text cheat interface code in the cheat listing code.
  1608.         Added a command to quickly toggle the status of the cheat(though a
  1609.         cheat can still be disabled/enabled by (M)odifying the cheat).
  1611.         Support for UNIF UNL-TC-U01-1.5M board added. Same credits as below.
  1613.         Rewrote mapper 228 code just for the heck of it(actually, I couldn't
  1614.         figure out why some(about two) of the games in the Action 52 cart
  1615.         weren't working in .75(and .76).  I traced it back to .71, where an apparent bug in
  1616.         the undocumented 6502 opcode emulation allowed it to work, which
  1617.         was later fixed for the .72 release(opcode 0x7C)).  I'm thinking       
  1618.         that the dump is bad...
  1620.         Added a few crc32 checks to ines.c to check for and report when
  1621.         a known(by me) bad(hacked or bad dump) game is loaded.
  1623.         Added support for the following UNIF boards.  Thanks to Quietust
  1624.         and Kevin Horton for the information.  Some problems still exist
  1625.         with a few games that use these boards, though...
  1627.                 UNL-Sachen-8259B
  1628.                 UNL-Sachen-8259A
  1629.                 UNL-Sachen-74LS374N
  1630.                 UNL-SA-016-1M
  1631.                 UNL-SA-72007
  1632.                 UNL-SA-72008
  1633.                 UNL-SA-0036
  1634.                 UNL-SA-0037
  1636.         Fixes to some stuff in cart.c(for example, calling setprg32() when
  1637.         only 16kb of prg data is present now works).
  1639.         Added support for iNES mapper 189.
  1641.         Tried to add support for the UNIF board "UNL-H2288".  Failed.
  1643.         Updated "cheat.txt" to fix a few typos and added an example of finding
  1644.         and adding a cheat using the Linux port's text interface.  The actual
  1645.         section on the Linux cheat interface still needs to be written, however.
  1647.         Changed network play code in the Windows port and fixed a bug.
  1648.         Fixed a similar bug in the Linux netplay code....sort of.
  1650.         A few cosmetic changes to the dialogs in the Windows port.
  1652.         Fixed sound initialization on the Windows port(it was being initialized
  1653.         when FCE Ultra started even if it was disabled by the user.  Oops.).
  1655.         Joystick button configuration code in Windows port changed slightly
  1656.         to be more useable.
  1658.         Changed reference to video mode 5 in the linux port to "1 per 4".
  1659.         It may not be very meaningful, but it is certainly better
  1660.         than "TV Emulation".  I'll change the Windows port reference later.
  1662.         Documented video mode 7(320x240) for the Linux port.  Also added
  1663.         a check for the FBDev driver in order to use this mode instead
  1664.         of a tweaked vga mode if that driver is being used.
  1666.         Added/Fixed cheat interface for Linux port.  It's still not perfect,
  1667.         though.  The code is ugly...
  1669.         Callback function for FCEUI_ListCheats() now receives
  1670.         status information(enabled/disabled).
  1672.         Callback functions for cheat functions now must return 0 to
  1673.         stop listing cheats or 1 to continue.  
  1675.         Fixed a problem(the cheat code was reading in cheats
  1676.         for address $0000 from cheat files if any blank lines were present).
  1678.         SDL port zlib changes(linked dynamically to zlib now).
  1680.         More changes to envelope decay + looping on code.  No longer
  1681.         depends on value @ $4017.  It now sounds correct based on some
  1682.         tests I did with SMB3 and a GG, but Goonies 2 doesn't sound right(
  1683.         based on a sound file sent to me by another person).
  1685.         Added support for iNES mapper 140.  Thanks to Quietust for the
  1686.         information.
  1688.         I need to figure out how to deal with the problem of so many
  1689.         bad NSFs that most people consider good...
  1691.         Changed envelope decays a bit.  Their behavior now depends on bit
  1692.         7 of $4017.  I don't know if this is right...
  1694.         Addition of debug.c for some debugging stuff.
  1696.         Updated zlib to 1.1.4.
  1698.         Modified code in various files to allow UNIF games to override
  1699.         current selected video system emulation(NTSC or PAL).  Need to
  1700.         make sure this really works.
  1702.         Changed sound.c to prevent desynchronization during network play.
  1703.         This might slow down sound emulation slightly, especially when
  1704.         sound emulation is disabled.  I really don't care...
  1706.         Updating network play code.  More info later...
  1708.         Moved the sound/video/etc output code in EmLoop() to the top of the
  1709.         for(;;) loop so that initialization prior to calling EmLoop() will
  1710.         be the same as initialization done during a call to a FCEUD_* function.
  1712.         A few very small changes to sound emulation in fds.c.
  1714.         Changed unlink() to remove() in cheat.c and removed the including
  1715.         of the header file unistd.h.
  1717.         Split up the cc=... statement in RefreshLine() to make it easier
  1718.         to read and not ambiguous(to Borland's C compiler).
  1720.         Changed a lot of the function declarations in cheat.c.  I'll need
  1721.         to verify that cheat searching still works ok and that cheats still work
  1722.         ok.  I'll also need to update the Windows(and Linux console) cheat code
  1723.         to prevent compiler warnings.
  1725.         Fixed various minor code problems(not minor if you want to use a
  1726.         compiler besides gcc).   This is an ongoing process...  
  1728.         Removed bit fields after reading about and thinking about possible
  1729.         portability problems, though I kept some optimizations in fceline.h
  1731.         Minor code simplification in drivers/win/joystick.c(replaced
  1732.         "case 200 ... 207" and "case 208 ... 215".
  1734.         Modified some code to use bit-fields in the graphics rendering code
  1735.         in fce.c and fceline.h.  gcc seems to be able to optimize the new
  1736.         code to run faster.
  1738.         Fixed m6502.c and fce.c to initialize variables on virtual power
  1739.         toggle.  This should fix network play on the Windows port.
  1740.         I'm also in the process of cleaning up fce.c.
  1742. .75:
  1743. ----
  1744.         Fixed directories configuration stuff in Windows port(corresponds
  1745.         to .75r2).
  1747.         More changes to square wave channel envelope/volume emulation...
  1748.         Changes described in the large paragraph some lines down have been
  1749.         abandoned.
  1751.         Added a command line switch to set the volume in the dos port.
  1753.         Changed Windows sound configuration dialog.  Now buffer length is
  1754.         specified in time, not samples.  I also added a volume control.
  1756.         Reduced the volume on 8-bit sound output on all ports by 1/2.
  1758.         Added a function FCEUI_SetSoundVolume().  Added support for setting
  1759.         the volume via the command line in the Linux port, other ports coming
  1760.         soon.
  1762.         Changed FCEUD_WriteSoundData() again.  No longer has a "Check"
  1763.         argument.  All clipping(ugh) is done internally now.
  1765.         Added a directories configuration dialog to the Windows port.  I worked
  1766.         on it too long and I became a zombie, so it might have a few bugs.
  1767.         That's what guine...err...users are for. ;)  Don't expect me to do
  1768.         anything like this for any other port, though.  I don't feel like
  1769.         doing it on the DOS port, and the Linux and other UNIXy ports shouldn't
  1770.         really need it.
  1772.         Made some changes to the rectangle/square wave channel emulation to
  1773.         fix the pops in SMB.  I have no idea if what I did is correct.  To
  1774.         be honest, I'm not sure I know EXACTLY what I did, but it's something
  1775.         like this:  Writes to $4003/$4007 now reset the duty cycle count
  1776.         and reload the cycle counter with the current wavelength.  Writes to
  1777.         $4003/$4007 now do not update the amplitude output of the channels; they
  1778.         will be updated after the cycle counter hits 0(or below).
  1780.         More information in iNES informational output.
  1782.         Minor changes to mappers/16.c.
  1784.         Increased the volume of the VRC6's sawtooth wave channel.
  1786.         Added more information to the RAM cheat guide.
  1788.         Changed the triangle wave generation code slightly.  I decided
  1789.         to remove support for the higher-frequency triangle waves, as they
  1790.         are too cpu-costly to create and are probably not very audible on a
  1791.         real NES anyway.
  1793.         Major changes to how sound is mixed.  This necessitated a high pass
  1794.         DC-offset removing filter, and a low-pass filter just to make things
  1795.         sound better. ^_^
  1796.         Note:  FCEUD_WriteSoundData() no longer needs to clear the waveform
  1797.         data referenced by the passed pointer; it's done internally now.
  1799.         Fixed JMP ($xxxx) - now handles wrapping like it occurs on a real 6502
  1800.         (hopefully; I'm assuming that the same holds true for the NES' cpu).
  1802.         Added the ability to load a custom global palette in the DOS port.
  1804.         Fixed bug in drivers/common/unixdsp.c(wrong return value if sample
  1805.         rate was out of range).
  1807.         Many sound fixes...     - Frequency sweeps, length counter stuff,...
  1809.         Changed Windows port to use IDirectInput7 and IDirectInputDevice7
  1810.         interfaces.
  1812.         Fixed a Game Genie bug in the core emulation code.  It only appeared
  1813.         in the Windows port, though.  (Enabling gg emulation, loading a game,
  1814.         and then disabling gg emulation and loading a new game while in the
  1815.         gg code entry screen would cause the new loaded game to not work
  1816.         correctly).
  1818.         Modified windows port to use the config saving/loading stuff in
  1819.         drivers/common/config.c
  1821.         Mapper 45 cleanups/fixes.
  1823.         Added the ability to load a custom global palette in the Linux port.
  1824.         Yay.
  1826.         Fixed a large number of overcomplicated code and silly bugs in
  1827.         drivers/common/config.c.  This changes the format of the configuration
  1828.         structure, too.  Also added support for saving/loading strings with
  1829.         automatic memory allocation when strings are loaded.
  1831.         Minor change in InitNetplay().
  1833.         Fixed bad type conversions for pointers to functions and fixed
  1834.         some bad declarations of functions.
  1836.         Reenabled zlib support for the sdl build.  I need to pay attention
  1837.         to patches that modify lines than don't fit on my screen.
  1839.         Fixed vidblit.c to not emit so many warnings when compiling.
  1841. .74:
  1842. ----
  1844.         Stop sound in Windows port when user clicks l/m/r mouse buttons
  1845.         in the non-client area of the window.
  1847.         Added "Drag and drop" file open support to Windows port.
  1849.         Various code cleanups.
  1851.         mappers/33.c optimization.
  1853.         Rewrote the function "FCEU_MakeFName()".
  1855.         Removed crc32.h from mappers directory.
  1857.         Modified some of the window resizing code in the Windows port.
  1859.         Added support for waiting for vblank/double buffering to the Windows
  1860.         port.
  1862.         Added/Fixed support for iNES mapper 248.
  1864.         After an NSF file is loaded, information about its header is now
  1865.         displayed.
  1867.         Fixed a typo in the Namco 106 extra ram handling code.
  1869.         Improved the quality of the Namco 106's extra sound channels.
  1870.         - Thank Mamiya and Applepie(real name?) for info.
  1872.         When an NSF file is being played, FCE Ultra will no longer go through
  1873.         its scanline rendering loop.  This speeds up NSF playback considerably.
  1875.         Updated "porting.txt".
  1877.         Moved some stuff from DriverInterface() to their own functions.
  1879.         Fixed some iNES mapper 18 IRQ counter emulation bugs.  "Ninja Jajamaru -
  1880.         Ginga Dai Sakusen" now works.
  1882.         Rewrote large pieces of the mapper 64 code.  "Skull and Crossbones"
  1883.         still doesn't work, though.
  1885.         Changed format of iNES header information output, added "ROM CRC32" info.      
  1887.         Modified the way cycle timing is done slightly.  No change
  1888.         for NTSC emulation, but PAL emulation is a little more accurate.
  1890.         Changed the behavior of indirect indexed(I hope I got that right ;))
  1891.         instructions to behave more like a real 6502(junk reads are now
  1892.         performed).
  1894.         A few optimizations/cleanups in m6502.c.
  1896. 0.73
  1897. ----
  1899.         *  Fixed several bugs with sprite emulation.  Several games(such
  1900.            as "Trojan" and "VS Duck Hunt") that were broken in .71 and .72 now
  1901.            work ok.
  1902.         *  Added support for iNES mapper 82.  Thanks to those who work on
  1903.            "unofficial nester".
  1904.         *  Added support for iNES mapper 250(used by "Time Diver Avenger").
  1905.         *  Fixed the documentation to show that iNES mappers 48, 83, and 232
  1906.            are supported.
  1907.         *  Removed various pieces of stale code and fixed a few minor bugs.
  1908.         *  Fixed a triangle wave channel bug(the channel was sometimes enabled
  1909.            when it shouldn't have been).
  1910.         *  Writing to $4010 with the upper bit clear now acknowledges the DPCM
  1911.            IRQ.  This appears to fix "Stunt Buggies".
  1912.         *  Rewrote pieces of the Zapper emulation code to be cleaner and more
  1913.            accurate.
  1914.         *  Rewrote the VS Unisystem dip switch drawing code.
  1915.         *  Simplified the setting of VS Unisystem dip switches.  The "V" key
  1916.            now toggles viewing AND editing of dip switches.
  1918. 0.72
  1919. ----
  1921.         *  Various minor bug fixes.
  1922.         *  Various code cleanups and size and speed optimizations.
  1923.         *  Removed some (apparently) unused MMC5 sound emulation code.
  1924.         *  Changed the behavior of $2003 and $4014 to better simulate what occurs
  1925.            in a real NES.
  1926.         *  Fixed a few bugs in the undocumented 6502 opcode emulation code.
  1927.            The Game Genie code "NUTANT" for SMB 3 works correctly now, at
  1928.            least(previously it caused the game to lock up at the end of levels).
  1929.         *  Rewrote large pieces of the 6502 memory fetching code, resulting
  1930.            in a slight slowdown in the speed of emulation.  Benefits include:
  1931.            Game Genie emulation now works(again) and 6502 emulation is more
  1932.            accurate.
  1933.         *  Added support for iNES mapper 72.  Thanks to rinao for the information.
  1934.         *  Fixed support for iNES mapper 77(used by Napoleon Senki).
  1935.         *  Fixed/Added support for iNES mapper 226.  Apparently I made a mistake
  1936.            in the documentation.  Thanks to Mark K. for the information.
  1937.         *  Added support for iNES mapper 227.  Thanks to Mark K. for the
  1938.            information.
  1939.         *  Added support for iNES mapper 234(used by the Maxi-15).  Thanks
  1940.            to Mark K. for the information.  Note that many of the Maxi-15
  1941.            ROM images on the Internet have corrupt CHR data(graphics), or the
  1942.            mapper number is set incorrectly(usually to 11).  Use a utility to
  1943.            fix the mapper number.
  1944.         *  Added support for the following UNIF boards(prefixes omitted):
  1945.                 - EKROM (and fixed the reference to "Gemfire" in the documentation).
  1946.                 - HKROM
  1947.         *  Added the ability to enable and disable individual RAM cheats.
  1948.         *  Fixed some problems with the cheat search code(the NES' internal
  1949.            RAM was being searched differently than any external RAM, which
  1950.            was being search incorrectly).
  1952. 0.71
  1953. ----
  1955.         *  Fixed a 6502 emulation bug that was causing some Koei games
  1956.            (ex: Nobunaga's Ambition, Genghis Khan) to not work.
  1957.         *  Extensive PPU/CPU timing adjustments.
  1958.         *  Fixed support for iNES mapper 40.
  1959.         *  Added support for the following UNIF boards(prefixes omitted):
  1960.                 - ETROM
  1961.                 - ELROM
  1962.                 - EWROM
  1963.         *  Fixed a few bugs in the UNIF code.
  1964.         *  Added support for loading and saving cheat files and an interface
  1965.            to search for/add/delete/list cheats(no interface yet on Linux/DOS).
  1966.         *  Fixed a few minor bugs in the Windows DX code.
  1967.         *  Command line options to control the number of sound fragments
  1968.            and the fragment size have been added(Linux).
  1970. 0.70
  1971. ----
  1973.         *  Adjusted PPU/CPU timing.
  1974.         *  Removed(until I understand the problem) a hack to get one of the
  1975.            games in the Caltron 6-in-1 to work.
  1976.         *  Fixed an MMC3 IRQ emulation bug("Project Q" works better now).
  1977.         *  Fixed a problem/misunderstanding regarding the upper scanline.  
  1978.            It can now be displayed again.
  1979.         *  More accurate sprite hit emulation(fixes the title screen of
  1980.            "Ultimate Stuntman").
  1981.         *  VRAM bank switching for iNES mapper 4 is now possible(and enabled
  1982.            for all mapper 4 games without CHR ROM).  Fixes "Tenchi o Kurau 2".
  1983.         *  Added support for the Famicom's four-player adapter and the ability
  1984.            to enable it(it is disabled by default to prevent compatibility
  1985.            problems).
  1986.         *  Added an option(under miscellaneous configuration) to automatically
  1987.            open the "File Open" dialog box when FCE Ultra is started.
  1988.         *  Sound sampling rate is now configurable.
  1989.         *  Fixed some bugs in the DirectSound code.
  1990.         *  Joystick button configuration is a little more user friendly(and
  1991.            stable, hopefully) (Linux).
  1993. 0.62
  1994. ----
  1996.         *  Added support for the Famicom Disk System's extra sound channel.
  1997.         *  Updated the version of Tatsuyuki Satoh's OPL2 emulator used in
  1998.            FCE Ultra from .36f to .37a.  The sound quality in "Lagrange Point"
  1999.            seems to have improved.
  2000.         *  Added support for iNES mapper 242(used by "Wai Xing Zhan Shi").
  2001.         *  Fixed a network play bug that could cause desynchronizations
  2002.            if more than one network play session occured since FCE Ultra
  2003.            was started.  This bug only showed up on the Windows port, though.
  2004.         *  Increased the volume of the noise and triangle sound channels.
  2005.         *  Fixed a save state loading bug.
  2006.         *  Fixed a small memory leak that was being caused by the VRC7
  2007.            state loading code.
  2008.         *  Fixed a bug that could cause FCE Ultra to crash if a virtual disk
  2009.            was being read and the user ejected the virtual disk.
  2010.         *  Various minor bug fixes/code cleanups.
  2011.         *  NTSC color "emulation" can now be enabled again(the code to
  2012.            enable it was broken in the last version). (Linux)
  2014. 0.61
  2015. ----
  2017.         *  Speed optimizations in sprite rendering code.
  2018.         *  Screen snapshots are now saved in the PNG format instead of the PCX
  2019.            format.
  2020.         *  Fixed Game Genie emulation(it wasn't working in the last release).  
  2021.            Also added support for Game Genie emulation to the UNIF code.
  2022.         *  Rewrote command line option parsing code.
  2023.         *  Fixed a problem(if FCE Ultra was configured to connect to a remote
  2024.            host and the remote host was given as an IP address, and the IP
  2025.            address couldn't be reverse resolved, which is commonly the case
  2026.            on home LANs, the connection attempt would fail) in the network
  2027.            play code.  I had misinterpreted the Winsock API documentation
  2028.            when I wrote the code.  (Windows)
  2030. 0.60
  2031. ----
  2033.         *  Various speed optimizations.
  2034.         *  Sound is no longer messed up when a JAM/KIL opcode is emulated.
  2035.         *  Fixed an overflow bug that occured when $4014 was written to
  2036.            during certain(rare) conditions.
  2037.         *  Fixed a few save state bugs.
  2038.         *  Fixed a MMC1 CHR bank switching bug.
  2039.         *  Added emulation of the MMC5's WRAM write-enable/disable registers.
  2040.         *  Fixed a sound frame IRQ emulation bug.  "Qix" works now.
  2041.         *  Added UNIF support.  Some of the board emulation is still a bit
  2042.            buggy, though.  Look at the documentation for a list of supported
  2043.            boards.
  2044.         *  Updated the "Palette Notes" section of the documentation.  Also
  2045.            fixed a few other problems with the documentation.
  2046.         *  Added support for loading files in the PKZIP and gzip
  2047.            compressed file formats via zlib.
  2048.         *  Added the ability to configure the first scanline and the last
  2049.            scanline to draw to the screen.  Enabling PAL emulation no longer
  2050.            will cause all 239 scanlines to be displayed, though an option
  2051.            to override these settings for when PAL emulation is enabled may
  2052.            be in the next version.
  2053.         *  Fixed a bug that would cause the emulated D-pad of virtual gamepads
  2054.            emulated through the keyboard to be duplicated through "higher"
  2055.            virtual gamepads(gamepad 1 would affect 2,3,4; gamepad 2 would
  2056.            affect 3,4; etc.). (Windows)
  2058. 0.55
  2059. ----
  2060.         *  Rewrote window resizing code.  The window will now resize itself
  2061.            to a multiple of the NES' screen dimensions nearest to the user
  2062.            selected dimensions. (Windows)
  2063.         *  Added an option to use buttons instead of axes on physical joysticks
  2064.            for the emulated D-Pad.  This is useful for some digital joysticks. (Windows)
  2065.         *  Fixed a bug that would cause FCE Ultra to crash if sound were
  2066.            disabled during emulation.           (Windows)
  2067.         *  Added the ability to "fast forward" emulation.
  2068.         *  Added an option to allow more than 8 sprites per scanline to be
  2069.            displayed.
  2070.         *  Added an option to save all extra non-volatile game data
  2071.            (such as battery-backed RAM) in a directory under FCE Ultra's
  2072.            base directory(as opposed to the directory the game is located in).
  2073.         *  Added an option to allow the emulator to change to a full screen
  2074.            video mode once a new game is loaded. (Windows)
  2075.         *  Rewrote pieces of DirectInput joystick handling code.  Hopefully
  2076.            it should increase compatibility. (Windows)
  2077.         *  Added the ability to automatically obtain button numbers when
  2078.            configuring joysticks, by pressing buttons on the joystick.
  2079.         *  Added the ability to close the current game(decreases CPU usage). (windows)
  2080.         *  Increased the speed of various function calls by passing
  2081.            arguments to functions through registers instead of through the
  2082.            stack.
  2083.         *  Added emulation of the MMC5's raw PCM register.
  2084.         *  Added the ability to save/load save states while network play
  2085.            is occuring.
  2086.         *  Having PAL emulation enabled will no longer override the
  2087.            NTSC/PAL settings in NSF headers.
  2088.         *  Fixed a bug that got into the .54 release.  Extraneous data was
  2089.            being returned on reads from $2002, which caused problems
  2090.            with some games(such as "Choujin Sentai Jetman").
  2092. 0.54
  2093. ----
  2094.         *  Fixed a bug that would cause a wrong battery-backed WRAM file
  2095.            name to be produced if FCE Ultra was passed a file name without
  2096.            any directory component(such as "fceu SuperBlah.nes").
  2097.         *  Fixed an iNES mapper 118 emulation bug that got into the code
  2098.            in a recent code cleanup.  "Armadillo" is playable again.
  2099.         *  Fixed a typo(and bug) in the MMC5 emulation code.
  2100.         *  Data returned from emulated reads to "unmapped" areas or
  2101.            memory locations where bits are undefined should now be correct.
  2102.         *  Fixed emulation of the sprite memory transfer register $4014.
  2103.            It now takes into account the last value written to $2003 and
  2104.            starts the transfer to that location in sprite memory(like on
  2105.            a real NES).
  2106.         *  Added a video configuration dialog box. (Windows)
  2107.         *  Added the ability to configure a custom video mode.  Aspects
  2108.            that are configurable include width, height, bits per pixel,
  2109.            and size transforming(stretching and scaling). (Windows)
  2111. 0.53
  2112. ----
  2114.         *  Fixed a bug with joysticks that occured on systems with multiple
  2115.            joysticks. (Windows)
  2116.         *  Added support for iNES mappers 77 and 92(thanks to LULU for the code for both).
  2117.         *  Added partial(timer is non-configurable) support for iNES mapper 105.
  2118.         *  Changed save state format again.  Save states made with previous
  2119.            versions should still be compatible, though this may change in
  2120.            future versions.
  2121.         *  Small optimization to sprite emulation code.
  2122.         *  Rewrote color-deemphasis code to use integer math instead of
  2123.            floating-point math.
  2124.         *  Rewrote and restructured input code. (Linux)
  2125.         *  Added command line option "-f8bit" to force 8-bit sound. (Linux)
  2126.         *  Rewrote and restructured input code.  Among other new features,
  2127.            keyboard keys are now somewhat configurable. (Windows)
  2128.         *  Writes to $4003/$4007 will now reset the emulated square wave
  2129.            duty cycle generator.
  2130.         *  Added emulation of the Power Pad.
  2131.         *  Rewrote joystick device reading code to use the event-driven
  2132.            interface.  This should fix various problems regarding support
  2133.            for joysticks with many buttons. (linux)
  2135. 0.52
  2136. ----        
  2138.         *  Fixed a PCM emulation bug(digitized voices in "Ikari Warriors 2"
  2139.            and "The Immortal", among others, work now).
  2140.         *  Fixed noise channel's LSFR update frequencies(hopefully).
  2141.         *  Various minor bug fixes.
  2143. 0.51
  2144. ----
  2146.         *  Added support for iNES mappers 86 and 89.
  2147.         *  Reduced byte size of the NSF player's background.
  2148.         *  Adjusted CPU/PPU timing.
  2149.         *  Fixed sound channel frequency calculations for when PAL emulation is enabled.
  2150.         *  Rewrote large pieces of the sound code and got rid of the sound queue. Sound quality should be slightly better now.
  2151.         *  Various minor bug fixes.
  2153.          Windows:
  2155.         *  Fixed an FDS side reset bug when a new game is loaded.
  2156.         *  Screen width/depth/height changes while FCE Ultra is in windowed mode are handled now.
  2157.         *  Changed the configuration file format.
  2158.         *  Added a palette configuration dialog.
  2159.         *  Added the ability to load a custom NES palette.
  2160.         *  Added an option to double 16-bit sound volume.
  2161.         *  Added an option to force 8-bit sound.
  2162.         *  Added an option to use a secondary sound buffer(versus the primary).
  2163.         *  Added an option to wait for vertical blank if sound is disabled.
  2164.         *  Added an option to run while focus is lost.
  2166. 0.50
  2167. ----
  2169.         *  Many bug fixes.
  2170.         *  Sound code partially rewritten to improve quality(near-perfect
  2171.            raw PCM now) and eliminate the need for a separate thread.
  2172.            This created a small problem with network play, though, so read
  2173.            the network play notes section.  Also, synchronizing to
  2174.            vertical blank has been removed.
  2175.         *  Rewrote other pieces of sound code.  No more "buzzing" in MegaMan 2,
  2176.            Codemasters games' intros, etc.
  2177.         *  Added support for the NES Zapper and the VS Unisystem's light
  2178.            gun.  Be sure to read "Light Gun Notes".
  2179.         *  Changed save state format.  Save states should now be much
  2180.            smaller for most games.  Most(not all) save states created with
  2181.            an older version should work.
  2182.         *  Added support for VS Duck Hunt and VS Hogan's Alley.