Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

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