3 Win32: Fixed the behavior of the sound logging function.
\r
5 Fixed a bug that was causing 2xscale/3xscale to be broken
\r
6 when clipping the leftmost and rightmost 8 columns.
\r
8 Added an iNES header correction entry for JustBreed.
\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
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
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
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
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
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
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
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
103 Excitebike (Japanese)
\r
112 Mach Rider (Japanese)
\r
113 Mighty Bomb Jack (Japanese)
\r
114 Ninja Jajamaru Kun (Japanese)
\r
122 Stroke and Match Golf
\r
123 Stroke and Match Golf - Ladies
\r
124 Stroke and Match Golf (Japanese)
\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
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
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
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
203 Fixed a bug in the debugger's disassembler when disassembling
\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
220 Added some JACK audio code to be used by the SDL build. I'll test it and complete
\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
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
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
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
257 Removed the wxWindows GUI code. GTK+ 2 code will take its place,
\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
279 Miscellaneous changes to accommodate new network play plan. It's not close
\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
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
311 Minor SexyAL changes.
\r
313 Updated documentation.
\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
353 Heisei Tensai Bakabon
\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
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
413 Copied over some autoconf/automake stuff from phamicom. It stills needs a bit
\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
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
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
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
637 Fixed the sprite overflow flag(I think I fixed it), that was broken in an earlier
\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
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
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
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
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
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
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
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
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
787 Improved RAMBO-1(mapper 64) emulation. "Skull and Crossbones" is
\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
827 Low-quality sound emulation now uses 32-bit integers for much
\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
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
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
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
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
878 Fixed call to InitUNIXDSPSound in svgalib.c
\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
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
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
916 Some operating systems and environments will hide file extensions.
\r
917 Keep this in mind if you are having trouble.
\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
932 Copied over the 96KHz filter coefficients from Festalon that I forgot
\r
933 to do in 0.92. Oops.
\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
955 Fixed dpcm irq bug that broke Cobra Triangle.
\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
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
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
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
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
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
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
1070 Fixed/Worked around(?) compilation problems on gcc 3.2.x.
\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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
1275 Reverted to .80's FDS sound code.
\r
1277 Modified the time at which the "y scroll" register is updated
\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
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
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
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
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
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
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
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
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
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
1401 Updated Windows interface to support the new Famicom expansion
\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
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
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
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
1473 Fixed return values of FCEU_fseek() and fixed a problem in unif.c
\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
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
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
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
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
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
1629 UNL-Sachen-74LS374N
\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
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
1744 Fixed directories configuration stuff in Windows port(corresponds
\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
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
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
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
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
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
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
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
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
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
1862 Added/Fixed support for iNES mapper 248.
\r
1864 After an NSF file is loaded, information about its header is now
\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
1894 A few optimizations/cleanups in m6502.c.
\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
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
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
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
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
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
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
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
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
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
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
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
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
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
2017 * Speed optimizations in sprite rendering code.
\r
2018 * Screen snapshots are now saved in the PNG format instead of the PCX
\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
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
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
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
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
2083 * Added emulation of the MMC5's raw PCM register.
\r
2084 * Added the ability to save/load save states while network play
\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
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
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
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
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
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
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
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
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