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