-
Notifications
You must be signed in to change notification settings - Fork 10
/
changelog.txt
2237 lines (1591 loc) · 82.9 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
0.98.13:
SDL: Fixed button configuration when using joystick hats. Thanks to
ShaolinMan for pointing out the code errors.
Readded checks in ines.c for some common bad dumps and non-working hacked
games.
Sprite hit emulation is more precise(as it was in 0.97.5).
Fixed mapper 185 emulation to work properly with the Japanese
version of "Spy vs Spy", and hopefully with the GOOD dump
of Banana(I don't think one exists).
Added per-game hacks for Shougi Meikan '92 and Shougi Meikan '93.
Fixed a bug in SetupCartMirroring() that could cause some games to have corrupted
mirroring if loaded in a certain order. This was a rather major, long-standing
bug. :/
Added many iNES header corrections.
Fixed emulation of the "ISB" and "DCP" invalid opcodes.
Optimized the PPU background drawing code with inline assembly. Older/some(?) versions
of gcc may produce bad code(from previous experience with inline
assembly in gcc), but 3.4.1 seems to do ok.
Optimized some of the low-quality sound emulation code.
Added a command-line option to the configure script to enable the FCE Ultra
debugger(disabled by default). It reduces executable size, and may increase speed
of execution slightly.
In unix-netplay.c, replaced the ioctl() on a socket to read the number of bytes available to read
with a select(). I've also added some "BEOS" #ifdefs. I don't know if they will
work properly.
Replaced archaic include of "malloc.h" in unix-netplay.c with "stdlib.h".
Also in unix-netplay.c, I've added:
#ifndef SOL_TCP
#define SOL_TCP IPPROTO_TCP
#endif
Fixed a bug in sdl-sound.c that would prevent FCE Ultra from being compiled
on certain platforms(Mac OS X).
Fixed variable declarations in the following files to be compatible
with C compilers that don't adhere to C99(or was it C98...):
movie.c
drivers/sexyal/convertgen.c and drivers/sexyal/convert.inc
drivers/pc/unix-netplay.c
0.98.12:
Win32: Fixed the behavior of the sound logging function.
Fixed a bug that was causing 2xscale/3xscale to be broken
when clipping the leftmost and rightmost 8 columns.
Added an iNES header correction entry for JustBreed.
Modified the MMC5 "ELROM" board emulation to not emulate WRAM.
Corrected various pieces of code that were causing compiler warnings.
Win32: Scaling settings(x, y, stretch to fill screen) are now respected while
using a special scaler in full screen mode, though if x or y scale is
less than what is needed for a particular scaler, it will be
adjusted.
Win32: The window will be reblitted when it becomes invalidated while
a game is loaded(such as when you're resizing the window).
When the PPU is in a "dead" state after starting up, the graphics
buffer is now cleared. Previously, particularly in the Windows port, when
a game was closed, and a new game was loaded, the last image from
the previous game would be displayed for a short time.
Win32: Blit skipping will now occur when sound is disabled and FCE Ultra is
running behind the desired frame rate.
Win32: Blit-skipping behavior can now be configured to some extent in the "Timing" configuration
window.
Win32: Added a "Recent Directories" submenu to the "File" menu.
Removed some debugging code that shouldn't have been enabled in 0.98.11.
0.98.11:
Win32: Special scalers are now also supported in windowed mode. For Scale2x/Scale3x,
the fastest "desktop" bit depth is 16bpp. For hq2x/hq3x, it is 32bpp.
The shared video blitting code(drivers/common/vidblit.c) can now blit using Scale2x
and Scale3x to any target bit depth(8bpp, 16bpp, 24bpp, and 32bpp) instead of just
8bpp, as it was before.
HQ2x and HQ3x can now blit to 16bpp, 24bpp(untested), and 32bpp. The 16bpp and
24bpp targets are done doing post-processing conversion, after HQ2x/HQ3x, which
really does hurt speed.
Changed a few names in the credits section of the documentation to their
aliases. Names you didn't get to pick to have are so troublesome. :b
I also made various fixes/updates to the documentation.
Updated the FAQ with some information regard video mode bit depths and speed.
SDL: Disabled the fast-forward-key speed-limiting code. I thought I had
done this before...
Fixed a major bug in the movie recording code, and added some code to automatically detect
and fix playback of broken movies from earlier versions.
Did a little swapping thing with mapper 90 and 209. I moved back Mortal Kombat 3
to mapper 90, and moved Shin Samurai Spirits 2 to mapper 209. Sorry for any confusion.
Mapper 90 should be considered as having the fancy nametable select mode disabled, with
mapper 209 having it enabled.
Added support for mapper 160, which turns out to be the same hardware as mapper
90. Joy.
Improved mapper 90 emulation. This mapper really needs low-level
emulation for IRQs to work right, though. :/
Win32: Fixed the "hide left/right 8 video columns" feature.
Since FCE Ultra is ending(or has already exceeded? :b) its actively-updated life,
I've gone ahead and added per-game hacks for "Kick Master" and the PAL version
of "Star Wars". See the documentation for more details.
Minor optimizations to the high-quality sound emulation code. The FIR filter
code is the bottleneck, though, so these changes won't have much of an effect
on overall speed.
Altered MMC3 IRQ emulation(and the hooks in ppu.c for it).
Fixed a rather major typo in the VRC7-emulation code.
0.98.10:
Reimplemented network play. It now requires a standalone network play server, which
will be released as a later time. For fun, "starmen.net" is running this server,
which is publicly accessible.
I also made various code fixes/improvements to allow for network play, particularly
with the command handling code.
Reworked much of the VS Unisystem emulation code, partially based on information from
MAME. The following games are now supported:
Battle City
Castlevania
Clu Clu Land
Dr. Mario
Duck Hunt
Excitebike
Excitebike (Japanese)
Freedom Force
Goonies, The
Gradius
Gumshoe
Hogan's Alley
Ice Climber
Ladies Golf
Mach Rider
Mach Rider (Japanese)
Mighty Bomb Jack (Japanese)
Ninja Jajamaru Kun (Japanese)
Pinball
Pinball (Japanese)
Platoon
RBI Baseball
Slalom
Soccer
Star Luster
Stroke and Match Golf
Stroke and Match Golf - Ladies
Stroke and Match Golf (Japanese)
Super Mario Bros.
Super Sky Kid
Super Xevious
Tetris
TKO Boxing
Top Gun
Win32-native: Fixed a bug in the debugger's breakpoint list that appeared when
one tried to delete a breakpoint(the control accidentally had auto-sort enabled,
causing a discrepancy between what was displayed and what was contained in internal
data structures).
The current disk image XOR original disk image is now stored in save states. This
should greatly increase compressability(important for network play), and make
it a little more legal to distribute such save states now.
Modified the save state format to allow for more precise and larger version numbers.
Various minor code changes.
Fixed initialization of the FCEUGameInfo structure, which previously led
to problems with sound output on the SexyAL-using ports(Linux).
Apparently I added support for mapper 255 a while back. Documentation updated.
Added iNES header correction information for Armored Scrum Object and Alpha Mission.
Merged banksw.h into ines.c, fixed some of its prototypes in ines.h.
0.98.9:
Win32-native: Fixed the speed throttling used when sound is disabled. In previous
0.98.x Win32-native releases, emulation was running at 1/2 the speed it should
have been when sound was disabled.
Win32-native: Moved settings in the "Miscellaneous" configuration window
to where they should have been in the first place, and added "GUI" and "Timing"
configuration windows to accommodate some.
Win32-native: Fixed the handling of the "Scroll Lock" key used to disable and
enable Family BASIC Keyboard input.
Updated documentation to handle some slight differences in the Win32-native
port("Win32-native" is what the Win32 port using native APIs, as opposed to something
like GTK+ and SDL, will be referred to in documentation now). I also made
some other minor wording adjustments to the documentation.
Added an iNES header correction for Dragonball.
0.98.8:
Fixed a typo in sound.c that caused only part of the sound registers
to be saved in save states.
Win32: Switched over to the DirectDraw7 interface, from DirectDraw4's.
The surface Flip() method will now block, which results in somewhat
smoother animation/scrolling, especially when combined with the
auto blit-skip implemented in 0.98.6 when sound is enabled.
Win32: Undid a change made in the last release that limited the
speed of fast-forwarding when using the tilde key. I really do
need to implement some sort of unified timing/blit skip system...
Win32: Added an option, disabled by default, to ask for confirmation
before exiting FCE Ultra.
Win32: Added an option, enabled by default, to disable the system
screen saver while a game is loaded.
Win32: Added a new video synchronization mode, a "lazy" wait for
vblank/vertical retrace. It calls Sleep(0) in its wait loop. This
still uses all available cpu cycles, but it is much more friendly
to other processes than the old-style wait for vblank.
Win32: Added support for joystick POV hats.
0.98.7:
Fixed a bug in the debugger's disassembler when disassembling
opcode 0xBC.
Fixed the behavior of the right mouse button with zapper emulation, to
correspond with what it is documented as doing.
Win32: Added proper support for maximizing the window.
Win32: Rewrote most of the input and input configuration code.
Win32: Changed the configurable aspect ratio to something sensical, the current
display's pixel aspect ratio, default of 1:1(square pixels).
Win32: Made the default full-screen video mode the custom video mode. I should have
done this a long time ago to make custom video mode configuration more straighforward
for users...
Added some JACK audio code to be used by the SDL build. I'll test it and complete
it later.
0.98.6: Made several code modifications to work with older versions of gcc.
Fixed more header file network play #ifdef-age.
Fixed a typo in cart.h.
Fixed some funky code in FCEU_memmove().
Fixed some source code causing compiler warnings.
Fixed SexyAL's format conversion code to not rely on deprecated casting semantics.
Readded the native Win32 code, and made many improvements. The major thing
that needs to be done now with it is to rewrite the input handling code and input
configuration code.
0.98.5:
Added LL to the 64-bit integer constants in ines.c
Fixed OpenGL support under Mac OS X.
Added the ability to hide background and/or sprites with the F4 key.
0.98.4:
Moved NETWORK #ifdef's to netplay.c to simplify things.
Fixed gzip file loading code(I think). I'm still a bit unsure about the semantics
of dup() and close(), though.
Corrected FDS code to try loading the FDS image before loading the BIOS.
Readded "native" SDL sound code, used for Mac OS X(and maybe BeOS).
0.98.3:
Removed the wxWindows GUI code. GTK+ 2 code will take its place,
once it is ready.
Added reset and power commands to the movie format. More commands(such as insert
disk, eject disk, flip dip switch, etc.) will be added simultaneously as work
on network play continues.
Modified SexyAL OSS code to not adjust the number of fragments to a power of 2.
It works fine on my card, allowing finer-grained buffer size control,
but I'm not sure it will work with all chips.
Fixed parsing of the "-specialfs" command-line argument.
Added the hq3x scaler.
Updated to the latest Scale2x code. I also added the Scale3x scaler.
Changed the keyboard assignments for toggling full screen to "Alt" + "Enter".
FCEUI_SaveState() and FCEUI_LoadState() changed. Porters should read
driver.h.
Miscellaneous changes to accommodate new network play plan. It's not close
to being finished.
Altered RTI emulation. In Paris Dakar Rally's NMI handler, it does "CLI ; RTI".
Previously, FCE Ultra would generate an interrupt right after RTI occured, due to the
presumed latency that RTI had with the I flag. I changed it so there is no latency, so
no interrupt will occur in this case(interrupts kill this game). The interrupt source
is the "frame IRQ", which it never disables, if anyone cares.
This change does break the "Stars SE" demo, though. Hmm.
"FCEUGameInfo" is now a pointer, rather than just a statically-allocated structure.
This may cause some null-dereferencing-related crashes, but it should help keep
code a little cleaner(maybe?).
Played around with the FDS FM code some more. It's still not right. Bah.
Hacked in support for entering Datach/Barcode World barcodes without a GUI, using the
F8 key and the numeric keys.
Added code to save/load movies. Movie support will only record/play back the
states of the four emulated gamepads.
Modified the sound code to use timestamp/timestampbase differently. In addition,
timestampbase is now saved in save states("timestamp" doesn't need to be saved, since
it's reset to 0 at the end of each emulated frame).
0.98.2:
Fixed a few problems with the SDL command-line build code
for Win32. Also, SDL 1.2.7 seems to have a bug that breaks FCE Ultra's
full-screen/windowed switching capabilities(at least under Win32).
Stupid everything.
Minor SexyAL changes.
Updated documentation.
0.98.1:
Increased the volume of the FME07 sound channels.
Fixed a bug in the SexyAL endian conversion code.
Made the SexyAL chunk conversion loop work.
Replaced the old OPL2 emulator with a modified version of
Mitsutaka Okazaki's YM2413 emulator for the VRC7 sound emulation.
Decreased the pitch of the FME 07 expansion sound channels by one octave.
Decreased volume of output of $5011 in MMC5 emulation code.
0.98.0: Some changes I made aren't listed below. Ah well. The magnitude
of the changes was too great...
Default sound volume is 100(%), which makes a lot more sense than 75%, but not much.
It's multiplied by 3/4 internally now.
Added support for the Datach barcode reader(GUI interface only). The emulation code
was adapted from the VirtuaNES source code.
Reassigned the Datach games to mapper 157, from 16, with CRC32 checks.
Increased the maximum number of screen snapshots in the snapshots directory
to 99999(from 999).
Reassigned the following games to mapper 210, using CRC32 checks:
Chibi Maruko Chan
Dream Master
Family Circuit '91
Famista '92
Famista '93
Famista '94
Heisei Tensai Bakabon
Top Striker
Wagyan Land 2
Wagyan Land 3
If you use a hack/translation of one or more of these games, you will of course
need to manually change the mapper number in the header for it to work properly in
FCE Ultra. Family Circuit '91 still may not fit in with the rest of these games,
but it's definitely not a "stock" mapper 19 setup.
Fixed an OpenGL palette bug when using scanlines(previously, I think it was
setting the palette of the scanlines overlay texture instead of the actual image
texture in some instances). The bug showed up on games that make use of the color
deemphasis bits.
Rewrote a lot of the PPU background rendering code to be more accurate(and
obfuscated!). This eliminates the X-offset hack I made earlier.
Removed some of the NSF visualization code, and altered the look of the NSF
display slightly. The NSF waveform visualization code will now take into
account the current volume setting.
Changed the default key bindings for the standard emulated gamepad
to something more compatible with window managers. I may change it back, but probably
not, since it is easily configurable now.
Updated the MMC5, VRC6, and FME07 low-quality sound emulation code
with the compatible parts of the high-quality sound emulation code for those chips.
Adjusted timing of horizontal scroll update(near the beginning of hblank. I made
it occur sooner). I also added a hack to allow X-offset(fine X scroll) changes mid
scanline, however, it is extremely ugly, and may not work correctly for everything
(doing it correctly would probably kill speed).
I mainly did it to fix games like F-1 Race and Mach Rider, and other racing
games that are extremely sensitive to horizontal scrolling timing.
Some FDS IRQ emulation changes to fix some screen corruption problems
in "Kaettekita Mario Bros".
Removed zlib(the code, not support).
I also removed support for compiling without zlib(it's small, simple, provides
very useful functions, and may provide critical features for fceu in the future).
*undone, breaks debugger, FIXME.* Replaced some inline functions with macros in x6502.c.
Increased the speed of Namco 106 sound emulation in HQ sound mode.
Many many sound emulation changes and adjustments based on blargg's tests.
The default sound volume is about 150% what it was before, because the sound range
has changed(now -soundvol 100 is like -soundvol 200 on older builds), and the
default "soundvol" setting is 75. 100 clips on some Namco games, and 200 clips
on many games, so I'll probably have the configurable volume range as [0:125].
What exactly is "%" supposed to mean in this case.... 100% of what?!
When using low-quality sound emulation mode, total emulation speed is about 10%
less than previous builds. The change in speed for high-quality sound emulation
mode is significantly less.
Added beginnings of SexyAL to source code tree, removed SDL sound support, and
old OSS code.
Copied over some autoconf/automake stuff from phamicom. It stills needs a bit
of work...
Fixed DMC IRQ emulation. Fixes many CodeMasters games. Finally. ^_^
Restructured a lot of files, changed the interface between driver and
emulator code slightly.
* Insert stuff here *
November 28, 2003 - Snapshot
Removed the DOS, Linux SVGAlib, and Win32 targets. *GASP*
Win32 support will return(eventually), using SDL + wxWindows.
SDL can use svgalib or GGI anyway, so it shouldn't be a huge loss.
DOS support will only return if someone ports SDL to DOS. ^_^
It would be nice if SDL could accept modelines. Maybe in SDL 2.0...
Merged fce.c and svga.c into fceu.c, and fce.h and svga.h into fceu.h.
Reassigned "Mortal Kombat 3 - Special 56 Peoples" to mapper 209.
Added emulation of the "Oeka Kids" tablet.
Added emulation of the Family Trainer.
Added emulation of the "Ultimate Quiz King" buzzers.
Added emulation of the Mahjong controller.
Added emulation of HyperShot controllers.
Fixed loading of NSFs with load addresses below $8000.
Cleaned and simplified some of the NES APU code.
Altered mapper 65 emulation. Fixes Kaiketsu Yanchamaru 3. Does it break anything?
Wrote a small FAQ file.
Fixed displaying of garbage and other unpleasantness on the first scanline. I need
to clean up that code, though.
Fixed color deemphasis emulation when all bits are set. For some
reason, I had commented out the code. Bleh.
NSF player now writes $C0 to $4017 if the FDS is being used(the FDS
BIOS writes $C0 to $4017). $40 for all other NSFs.
Added support for iNES mapper 58(nnnesterj).
Added support for iNES mapper 208.
Reassigned "Fudou Myouou Den" to mapper 207(CRC32 checks).
Reassigned "Karnov" to mapper 206(CRC32 checks).
Fixed the mapper 95 code, which was horribly broken.
Differentiated between mappers 33 and 48. Added CRC checks to assign
some games to mapper 48. "Flintstones 2" and "Don Doko Don 2" are
the games that need to be assigned to 48. Are there others?
Replaced usage of TriggerIRQ to X6502_IRQBegin/X6502_IRQEnd combos in
various mapper emulation files. 67, 33/48, 40, 73, 42, 65, 6, 182
Removed function TriggerIRQ() from x6502.c
Fixed the sound volume of the VRC7 emulation in high-quality sound mode.
Decreased(slightly) the volume of VRC7 emulation in both high-quality sound modes.
Decreased the volume of the MMC5 expansion sound channels.
Decreased the volume of the FME-7/mapper 69 expansion sound channels.
Added FCEU_gmalloc(), which will call exit() if memory allocation fails,
otherwise it is guaranteed to return a memory block.
This will be used in the mapper code mainly. It should only
be used for small memory chunks. The reasoning is that if 64 some like KB of
RAM or less can't be allocated, for example, it'd probably be best to
exit the emulator ASAP. It also helps to simplify code logic, and
help (me) with modularization.
The behavior of this may change in the future. I still need to think about it.
I should probably save the configuration file regularly(or much better,
use the registry) on the Windows port, though.
Cleaned up the save-state saving/loading code a bit, and added
support for linked save state structures for better modularity and
less code duplication.
Merged the iNES and UNIF MMC1, MMC3, and MMC5 code more completely.
I may need to sanify CHR RAM and WRAM allocation for pedanticness,
though. Also worked on Tengen RAMBO-1 emulation, and mapper 90 emulation.
***THIS MAKES SAVE STATES FOR GAMES THAT USE THESE EXPANSION CHIPS INCOMPATIBLE
WITH PREVIOUS VERSIONS***
I plan on doing the same thing with other mappers/boards in the future, though.
Always on the quest for 1.0...
November 12, 2003 - 0.97.5 Release
Windows: Added limited support for arguments that change configuration
to be passed to FCE Ultra. Example: fceu -pal 1 c:\streetgangs.nes
It may be useful in frontends.
Fixed filename generation for automatic IPS patching when a file
with no extension is loaded. Before this change, FCEU would
look for "game..ips" with a file named "game".
Converted and updated the cheat guide in(to) HTML.
Added support for iNES mappers 202,203,231 from info from cah4e3.
Fixed support for mappers 60, 200.
Fixed various major bugs in the breakpoint deletion code.
UN*X: Added support for OSS(/dev/dsp) devices that don't support mono
sound.
Increased PPU startup idle time to 2 frames. Fixes that
unlicensed "Earthworm Jim 3" game. Does it break anything?
November 9, 2003 - 0.97.4 Release
Fixed another obscure PPU emulation screen corruption bug.
Added support for Game Genie cheats in the cheat interface.
Windows: Reworked the cheat interface, merging the cheat search
and cheat list windows into one.
Windows: Greatly improved the CPU debugger.
The code still needs a lot of cleaning, though.
Readjusted VRC6 IRQ emulation timing.
Added support for the UNIF MMC3 board TEROM. The maximum PRG/CHR sizes
may not be correct in this implementation, though.
November 8, 2003 - 0.97.3 Release
Added a control to set the highest quality sound mode in Windows.
This change requires that any users who previously set
"high quality sound" to set it again.
Fixed the volume of high-quality sound mode again. The changes
I made earlier didn't affect all the filter coefficients.
November 8, 2003 - 0.97.2 Release
Made a minor optimization to writes to palette memory.
Altered VRC6 IRQ emulation timing slightly.
Fixed a weirdo PPU emulation bug that could cause garbage on the right
side of the screen in certain situations. Thanks to FrenziedPanda for
bugging me enough to make me look into the problem and fix it.
I should be on the lookout to see if the fix breaks anything, though.
Fixed the volume of high-quality sound mode(-soundq 1). It was
at 1/4 the volume it should have been. I compensated by increasing
the precision of the filter coefficients, which increased the sound
quality of that mode slightly without hurting performance.
November 7, 2003 - 0.97.1 Release
Fixed mapper 105 emulation. I had begun merging it into the
rest of the MMC1 code for 0.97, but I hadn't finished it.
Changed things like RdMem(_PC++); to RdMem(_PC); _PC++;
Darn evil global variables. I need to fix them. Screw speed.
Expanded checks for the global variable "fceuindbg"(used in debug
mode to prevent reads in the debugger from altering any registers).
November 6, 2003 - 0.97 Release
* Note: I still had much more I had wanted to get done for 0.97,
but I lost even more interest. The Windows port still doesn't
have a way to enable the "highest" sound emulation mode, nor the
low pass filter code, not to mention that the lowpass filter code
isn't complete(I would need to design a high-order FIR filter from an IIR
filter to work properly-have the correct rolloff, among other
things-at finite playback rates).
Fixed a bug in the IPS patcher. The recorded size wasn't being updated
after a successful realloc() was made, which could lead to corrupted patch
data from some patches.
Added support for mappers 200, 201 from submitted code.
Rewrote mapper 15 support to make more sense(well, depending
on your point of view...).
Fixed 256KB CHR select support for mapper 115.
Added support for mapper 12 from code from cah4e3.
October 16, 2003 - Snapshot
Fixed support for mapper 245(for nonencrypted/non-smynes-screwed up
ROM images only. Fixes "Yong Zhe Dou E Long [...] Dragon Quest 7".
Added support for mappers 60, 62, 230, 244 from submitted code.
Modified mapper 90 emulation to allow game-select on reset
for "Final Fight 3".
Modified mapper 45 emulation to allow "Super 8-in-1" to work.
Added a low-pass filter, and an option to enable it(CLI ports).
0x00 is now written to $4011 in the NSF player code instead of 0x40.
Fixed some other similar sound register init problems that I had fixed
in Festalon but forgot to fix in FCEU. Grrr.
Removed some unnecessary 64-bit integer usage from FIR sound filtering
code.
Added a new sound quality mode. Higher than high, it's highest(in
FCE Ultra, for now). Still need to fix the interface to allow
enabling it in the Windows port.
Added some code for lower-level MMC3 IRQ emulation. It isn't completed
, and will not work properly as-is. I'm still playing around with
it occasionally.
Fixed the sprite overflow flag(I think I fixed it), that was broken in an earlier
pre-0.97 release.
Fixed support for iNES mapper 193.
Command line arguments "-pal" and "-gg" now take extra arguments(1/0)
and are remembered in the configuration file.
September 27, 2003 - Snapshot
Added support for iNES mapper 50.
Modified the UNIF board initialization code. Hopefully, this
new interface will eventually be used with the iNES code.
Miscellaneous code cleanups.
/dev/dsp is now set to 8(previously 9) buffers of 128 samples in length
in the SDL code.
Tried to make the save state code more expandable and modular.
Moved a lot of the PPU code into ppu.c.
Added more extensive debugging code to the 6502 emulator, to allow
for memory read/write hooks(including zero page addressing modes).
Readadjusted DMC timings when PAL emulation is enabled. It looks
like it was correct before I had made the August 2 change. Thanks
to Bananmos for the information. I think. :/
Added support for iNES mapper 193 from information from virtuanes.
I think my dump of it is "bad", though. PRG and CHR pages look
like they are in the wrong order(logical vs physical? Who's to say
what's physical?).
September 1, 2003 - Snapshot
Fixed some minor initialization issues with iNES mappers 7 and 34.
Added support for UNIF board NES-GNROM.
Removed support for save states created with versions of FCE Ultra
less than 0.56.
Replaced SDL sound buffering code with a lock-free FIFO implementation
written by David Olofson, with a few modifications by myself.
Fixed a VRC7 NSF bug(it showed up under the reworked driver/file
loading order in the cli code).
The board in "Rolling Thunder" has "RAMBO 1" on it, not "RAMBO-1".
August 9, 2003 - Snapshot
Removed the old plain text documentation and replaced it with
a new document in HTML. It is not completed yet, though.
Rewrote the SDL-native audio code to be less wacky and more
thread-safe(hopefully). I'm still waiting for a new SDL audio
API...
Altered the MMC5 IRQ timing. Fixes minor graphical glitches
in Castlevania 3. Does it break anything?
Removed some debugging code that got into the last snapshot.
August 5, 2003 - Snapshot
Added some code in the IPS patcher to allow for expanding the size of files.
Fixed a double free() bug with a mapper 51 game(in ines.c).
Added support for "Alien Syndrome" (US release) as iNES mapper 158.
It looks like a derivative of the normal RAMBO-1 board(or is that
the name of the chip?), similar to TKSROM/TLSROM(mapper 118).
Improved the "native" SDL sound code. It will now call SDL_Delay(),
among other nice things. The code could probably be improved more,
though.
Added support for decimal components in xscale/yscale in the SDL
port. Set the default xscale for windowed mode to 2.40(to get a
more correct aspect ratio, assuming the display is currently at
a 4:3 aspect ratio).
Modified args.c to handle floating-point numbers.
August 2, 2003 - Snapshot.
Disabled texture wrapping with OpenGL(there were problems at the edges
of the screen with linear interpolation). Bah. Now the edges
are too bright...
Improved the accuracy of the DMC timing when PAL emulation is enabled.
I still don't think it's totally correct, though.
Changed the default settings for the SDL code. Full screen
is now 640x480x8bpp by default, xscale and yscale are 2 for both full
screen and windowed, opengl support is enabled, linear interpolation
for OpenGL is enabled, and X-axis stretching is
enabled(in full screen).
"Scanlines" were enabled in 8bpp to 8bpp blits in
drivers/common/vidblit.c when they shouldn't have been. Fixed.
Fixed OpenGL code under big-endian platforms.
August 1, 2003 - Snapshot.
Various code clean-ups.
Played around with adding a GTK+ GUI to the SDL code.
Rewrote part of the hq sound rectangle wave code.
Replaced the high-quality sound inline assembly filter code with
slightly faster C code.
Hacked around with GP32 support. I don't know if the GP32 would
be fast enough, though.
Skipped frames will now have D5 of $2002 set at the beginning
of the frame. Fixes "Bee 52". I must see if it breaks anything.
Added OpenGL support to the SDL code.
Removed the PPU drawing inline assembly code, replacing it with a faster
algorithm written in C.
"Disabling" the 8-sprite limitation will no longer cause
"Bee 52" to break. However, the "Solstice" wizard will still
have the weird thing growing out of his face in the introduction,
since it depends on no more sprites to be rendered.
Added entry for that Black Bass game for header corrections in
ines.c
Strip color burst bit(D0 of $2001) is only "emulated" if bg or
sprite rendering are turned on, at the end of the scanline.
Doing it with pixel/tile granularity would require modifying
the sprite graphics data copying routine, which I don't
feel like doing. Fixes that crazy Sayoonara demo by Chris Covell.
I also modified the NES RAM initialization code.
Adjusted VRC7 IRQ emulation for better Lagrange Point goodness.
Added support for iNES mapper 91. (VirtuaNES)
0.96:
Improved RAMBO-1(mapper 64) emulation. "Skull and Crossbones" is
now playable.
0.95:
timestamp and timestampbase are no longer saved/loaded to/from
save states. They were causing too many problems I didn't
want to fix, and I never intended them to be saved in save states
when I wrote the code that uses them.
I think the reason they were being saved was that I wanted to make it
possible to add movie support and network play save state loading
(distributing the save state over the network). So if someone in
the future wants to add these features, the issues(primarily with
zapper emulation and sound emulation) with saving the time stamp will
need to be resolved.
Fixed some crashing bugs when save states are loaded when
high-quality sound emulation is enabled. It is like patching
holes in a swiss-cheese boat. All the holes may be patched, but
it looks ugly. At least it tastes good...
TODO: Look into saving more data in the save states, especially
data that is based off of "timestamp" and "timestampbase". Also
look into validating this data. Right now, corrupt save state data
might cause memory corruption in FCE Ultra.
Fixed some bugs in the NSF player.
Cleaned up more code.
Reduced the usage of TriggerIRQ().
Split the palette code into a new file, palette.c, from svga.c
Low-G-Man(NTSC and PAL versions) are now recognized by CRC32 value,
and WRAM will be disabled if they are loaded. A warning/status message
will also be printed regarding this issue.
Decreased the volume of the DMC/PCM channel in low-quality sound
emulation.
Low-quality sound emulation now uses 32-bit integers for much
better speed.
FCEUI_CRC32() wasn't returning anything. D'oh. Fixed.
Added somewhat crude support for games that switch background CHR data
mid-scanline (this is needed in games such as Mother, Pirates!,
Business Wars, and Marble Madness).
Altered NMI, IRQ, and BRK emulation again. Fixes some games,
like Bases Loaded 2 and Dynamite Bowling, and maybe some others.
I had to increase the size of the IRQlow variable for delayed
NMI execution... I also had to add a delay between PPU reset
and the PPU actually doing anything, to fix "Knight Rider".
Fixed a mapper 90 save state bug.
/dev/dsp code now searches for /dev/dsp before /dev/dspX (where X is
a non-negative integer).
SDL joystick axes configuration is now done from the joystick.
Tweaked various Konami mappers' IRQ counter emulation.
Added custom SDL throttle code that gives up time slices instead of
using 100% cpu.
Fixed an issue with sprite priorities on MSB-first platforms.
Modified powerpad.c to avoid a symbol conflict when compiling on the
Power PC architecture.
0.94r3:
sound.c:
Fixed a divide-by-zero bug that occurred when a virtual
reset(like by pressing F10) occurred when sound emulation was
disabled.
0.94r2:
drivers/common/vidblit.c:
Fixed code for 32bpp blur effect.
drivers/cli/sdl-video.c:
Added error message for unsupported bit depths.
mappers/simple.c, ines.c:
Used this bug fix pseudo-release as an excuse to add
support for mapper 107. Information taken from virtuanes.
0.94(fixed release)
---
Fixed call to InitUNIXDSPSound in svgalib.c
Added man pages.
0.94
---
Added support for rapid fire A/B buttons on physical joysticks
in SDL/svgalib/DOS code.
Implemented "high-quality" Namco 106 emulation(used for hq sound mode).
In this case, "high-quality" means sounding more like it should,
not necessarily cleaner. I'm not certain that it's totally correct,
but it's in the right direction.
RAM cheats should no longer affect Game Genie emulation. I still
need to completely verify this. There may be some sort of race
condition.
Removed various minor speed hacks in the name of style and
correctness(and to make maintaining FCE Ultra easier for those
people who are not me). :)
Removed NSF cpu hacks, as I changed code to make them unnecessary.
Fixed another FDS IRQ emulation bug. "Famicom Grand Prix II" works
now.
Fixed a memory leak and a heap corruption bug in "file.c".
Added support for on-the-fly IPS patching.
Place the IPS file in the same directory as the file to load,
and name it filename.ips.
Examples: Boat.nes - Boat.nes.ips
Boat.zip - Boat.zip.ips
Boat.nes.gz - Boat.nes.gz.ips
Boat - Boat.ips
Some operating systems and environments will hide file extensions.
Keep this in mind if you are having trouble.
Patching is supported for all supported formats(iNES, FDS, UNIF, and
NSF), but it will probably only be useful for the iNES format. It
can be used with the FDS format, but be warned that it will permanently
patch your disk image, as the disk image is written back to disk
when the game is unloaded(unless the disk image is in a zip file, in
which case it isn't written back to disk). UNIF files can't be
patched well with the IPS format because they are chunk-based with no
fixed offsets. Support for a UNIF patching format may be added
in the future(probably by someone else.).
Added more games to the list in ines.c for having battery-backed
WRAM, for header corrections.
Copied over the 96KHz filter coefficients from Festalon that I forgot
to do in 0.92. Oops.
0.93
---
Reduced the volume of the FDS sound channel.
Fixed a bug in the FDS IRQ emulation code that caused "Lutter" to not work.
Fixed a bug in unif.c that would cause a crash if a unif file were
loaded without a board name being specified(as could happen
with a corrupted nsf).