-
Notifications
You must be signed in to change notification settings - Fork 269
/
Copy pathchangelog
1674 lines (1200 loc) · 61.7 KB
/
changelog
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
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).
Fixed a bug in general.c relating to relative filenames(running
fce ultra like "./fceu ../big.nes" would work, but "./fceu ../big"
would not work- it crashed).
0.92r2
---
Fixed dpcm irq bug that broke Cobra Triangle.
.92
---
Removed NSF player background, and added some special effects goodies.
Changed the NSF player to use the emulated gamepad as input instead
of having special NSF-player-only keys.
Added support for mapper 249(using nonencrypted games), thanks to SARO
for info. SMYNES sucks.
Updated video blitting library-thing(vidblit.c) with more special
effects, and removed 24bpp support.
SDL cleanupification.
Added support for mapper 61.
nnnesterj: Added support for mapper 57.
Fixed mapper number for "Golden Game 150 in 1". Changed it to 235
from 43.
DDraw back buffer surfaces are now created in system memory if the
hardware blitter can't do stretching.
Restructured file wrapping code.
Added new cheat search methods.
Fixed a major cheat unloading memory bug(and memory leak).
Emulated that funky nonlinear DAC effect for hi-quality sound.
More fixes/cleanups to FDS emulation code.
Tweaked PPU timing a bit.
Improved network play.
Holding the enter key down will no longer do fun stuff to the nsf
player.
Improved NSF player. It should support streaming pcm nsfs now...
Changed FDS keyboard keys around a bit. F6 is the disk select key,
and F8 is the disk insert/eject key.
F8 to insert VS Unisystem coin, F6 to view/toggle dip switches.
Hopefully people won't complain after blindly hitting the save state
buttons. :)
Many fixes and improvements to the Windows port. No more cpu-consuming
wait loops(specifically, sound). Added a message window.
FDS sound emulation improvements.
FDS disks are now auto-inserted on power on(or was it loading a new
game...).
Changed the default last rendered scanline to 231.
ines header corrections are now printed as status messages, not errors.
Rearranged input updating code.
Fixed a sprite transfer bug. Fixes PAL version of Rainbow Islands.
Debugger hooks added.
Small optimizations in Refreshline and FetchSpriteData to hopefully
offset the slight slowdown in the cpu core.
MapperHBIRQHook is now called differently(depending on hi/low bg/spr
addresses).
Added support for unif board UNL-8237.
Added support for mapper 144(death race).
Added partial support for mapper 74.
Fixed a cpu emulation bug in GETIYWR. It would sometimes set "target"
to 0x10000, which was a BAD THING(overflow; now it wraps).
Tried to add support for mapper 241. Needs special keyboard emulation.
I think.
Internal RAM is now initialized to something other than 0. Fixes
Minna no Taabou no Nakayoshi Dai Sakusen.
Reassigned "The Money Game" to mapper 155. It doesn't seem to
respect the WRAM enable/disable bits. Silly game. And
Tatakae!! Rahmen Man.
Added support for mapper 115(still needs 256KB CHR select), 241, 114,88.
Attempted to add support for mappers 91, 187.
Modified frame IRQ to not break so many damn games.
Fixed sprite hit detection loop.
Improved support for mappers 80, 90,117,154, 189.
nnnester and virtuanes.
Reassigned "Devil Man" to mapper 154.
Removed bogus Trojan header fix in ines.c.
.81-post:
----
Fixed/Worked around(?) compilation problems on gcc 3.2.x.
.81:
----
More SDL goodies.
Renamed "Makefile.olinuxsdl" to "Makefile.unixsdl"
More SDL fixes and cleanups.
BeOS port is now compiled with the "-no-fpic" flag, which allows
me to use my inline assembly. The executable work fine as far as
I can tell.
Added "Makefile.beos". gcc doesn't like my inline assembly
used in RefreshLine(),so this port will likely be slightly slower than
other x86 ports.
Added a check to make sure SIGBUS is not equal to SIGSEGV in
drivers/cli/main.c. Needed for compiling under BeOS.
Renamed the "PI" member of the X6502 structure due to conflicts with
a defined symbol with some math header files.
Merged fcelineasm.h into fceline.h
Fixed(possibly) a possible problem in fcelineasm.h with input register
clobbering.
More SDL changes.
Added speed throttling code to the CLI code, and added a command
line switch "-nothrottle".
Lots of restructuring/rewriting/merging of the MMC3 code.
Updated DOS code to use the generic CLI wrapper.
Reads from $4090 and $4092 now return the current envelope setting
in FDS sound emulation. I'm not sure if this is correct... Affects
"Ai Senshi Nicole" and "Bio Miracle Bokutte Upa".
Added native SDL sound support to the SDL code. the "olinuxsdl"
now uses this code by default instead of the unixdsp sound code.
Modified MMC3 IRQ counter emulation. I'll need to watch out to see
if it breaks any games. Fixes: MegaMan 3, Gun Nac, Klax(Japanese).
Changed a few memory reads in x6502.c to use RdRAM instead of RdMem,
resulting in a slight speed increase.
Cleaned up mapper 250 emulation code.
Added support for iNES mapper 51(thanks to Kevin Horton for the
information).
Merged some iNES mappers corresponding to bootleg multicarts
based on MMC3s with mbshare/mmc3.c.
Added support for iNES mapper 52(thanks to Kevin Horton for the
information).
Made some hacks to the MMC3 emulation code so that I can add support
for pirate MMC3 multicarts more easily. I should clean it up later.
Moved mapper 44 emulation code to mbshare/mmc3.c.
Saving screen snapshots will no longer corrupt the frame buffer
for one frame(unless memory couldn't be allocated).
Fixed screen snapshot saving(it was sort of broken due to the
changes made to the driver<->emulator interface code; status
messages were being saved to the image). FCEUI_SaveSnapshot()
no longer returns a value(the request to save a screen snapshot is
serviced before status information would be written in the next frame).
nosprites is now set to 0 before RefreshSprite() returns, to prevent
problems if a game turns off the bg and sprites when FetchSpriteData()
for the next scanline is called but then turns on sprites when
the actual scanline is drawn.
PPU_hook() is now called more often if PPU_hook is non-null.
Made changes to mappers 118, 95, 9, and 10 to compensate.
No games seem to be broken, and I added support for mapper 96
(though the games aren't very playable because the special controller
isn't emulated).
Romance of the 3 Kingdoms is now recognized to use 16KB ex-WRAM.
Added support for mapper 185...sort of. I think this is another
instance of incompatible hardware being lumped onto one mapper number.
Sigh.
Added support for "Famicom Jump 2" as iNES mapper 153.
If a good(as far as I can tell) dump is loaded, FCE Ultra will
automatically fix the mapper number.
I also made some changes to the mapper 16 IRQ emulation code.
BRK now sets the I flag.
Reads from $4015 no longer reset DPCM IRQ.
Changed emulation of RTI instruction slightly.
X.IRQlow is now set to 0 in PowerNES().
The VS Unisystem bit in the iNES header is no longer looked at(
I was having too many problems with this bit being set when it
shouldn't have been). Now, VS Unisystem emulation is enabled
when a known VS Unisystem game is loaded. I also rewrote the VS
Unisystem detection function.
iNES mapper 1 now supports pageable CHR RAM if no CHR ROM is present.
Fixes "Family School".
Mapper 70 no longer has a mirroring control emulated, and I extended
the number of 8KB CHR pages supported to 16.
Cleaned up iNES MMC5 save RAM loading/saving code and added
support for MMC1 games with 16KB of RAM(the second 8KB are saved),
via CRC32s(currently only Genghis Khan(USA) and Nobunaga's Ambition(
USA and Japan) are recognized).
Added support for the MMC5 Koei game "Ishin no Arashi", in the iNES
format(I added an entry with its CRC32 value and the number of 8KB
WRAM banks it needs).
Better iNES mapper 33/48 IRQ counter emulation.
Added the game "Uchuusen - Cosmo Carrier" to this list. I'm
beginning to hate the iNES format more and more...or maybe
just Fanwen. :)
Added the mapper 32 game "Major League" to the list of games
that usually need iNES header correction...but in this case, the
iNES header cannot specify that this game needs to have one-screen
mirroring.
iNES header information is now printed before any header corrections
are made based on a database.
Fixed a bug in mapper 32 emulation. "Ai Sensei no Oshiete"
works now.
Tried to add support for iNES mappers 245 and 249.
Fixed the MMC5 read handler to return the data last on the data
bus instead of 0xFF when a read was made to an unmapped address.
This seems to fix the lockup problems in "Bandit Kings of Ancient
China".
Reversed "Modified the time at which the "y scroll" register is updated
during hblank." The changes broke Klax.
Added an unsigned 64-bit base timestamp variable "timestampbase".
Adding this to the 32-bit variable "timestamp" will return
the number of cycles executed since emulation started(in the future
I'll probably change it to since reset or power toggle).
This allowed me to replace "lastn" hack in the MMC1 code with
something better.
Changed my mind and undid the removal of support for old save states.
Removed support for old save states and in general I won't
try to support save states made with previous versions.
MMC1: Writes to $8000-$FFFF with D7 set will now cause
the first MMC1 register to be OR'ed with 0x0C. I'm not sure
if this is correct, but it doesn't seem to break anything
and it fixes Robocop 3. I'll see if anyone reports games
not working in .81 that worked in .80.
Worked on a generic driver interface wrapper very similar
to the driver interface FCE Ultra used to use(I'm getting
tired of all of the duplicated driver code). Eventually,
the DOS, SVGAlib, and SDL ports will use this wrapper.
Similar change to the argument parsing code.
Changed configuration file saving-loading routines and the
configuration structure to allow for linking config structures
to each other).
Small fix to the emulation of the MMC5 split screen mode.
Made Linux SDL code compilable again.
Changes to MMC5 EXRAM emulation(read/write).
Fixes to the emulation of the MMC5's split screen mode, based on
observations while using CastleVania 3 and a Game Genie(on a real
NES).
Fixed a bug in ines.c that caused any calls to AddExState() from
a mapper initialization function to be effectively "erased"(ResetExState()
was called after the mapper was initialized). Fixes the VRC7 sound
state saving/loading stuff.
Finished adding support for the MMC5's split screen mode(this does
not mean that the support is complete, but at least the intro in
"Uchuu Keibitai SDF" works correctly now).
Worked on adding support for the MMC5's split screen mode. Not
completed.
Reverted to .80's FDS sound code.
Modified the time at which the "y scroll" register is updated
during hblank.
NSF playing code will now disable FDS sound output on song init
(fixes some problems with the Zelda no Densetsu NSF rip).
Increased the emulated clock speed of the FDS sound emulation code
to give better quality output.
Modified NMI to occur a few cycles later. Fixes BattleToads...but
it may have broken other games. Also modified the way NMI's are
handled in x6502.c.
Modified ines.c to memset() GameMemBlock to 0 on virtual power toggle.
Also, trainers are now loaded into their own buffer instead of
directly into emulated WRAM and copied into emulated WRAM on
power toggle; I've been meaning to do this for quite some time.
Changes to the way the zapper cursor is drawn on the screen.
FCEUD_WriteSoundData(), FCEUD_BlitScreen(), and FCEUD_UpdateInput()
have been combined into one function: FCEUD_Update().
More fixes to the network play code, and a fix to the Windows network
play driver code that fixes(hopefully) a rather evil bug that caused
lockups when the remote stopped network play.
Added code to set the battery-backed bit in RAM if a game needs it,
based on CRC32.
Added more games to the list of games that commonly have bad iNES
headers, in ines.c
Updated docs and usage.h for DOS and Linux regarding the new video
mode and the new refresh rates.
Linux: Fixed a bug with video mode 6(a few upper scanlines were being
cut off). Increased the refresh rate of video mode 3 to 120hz.
Increased the refresh rate of video mode 2 to 65 hz in the Linux port.
Screen snapshots can now be taken while playing an NSF.
Added a new sexy tweaked vga mode that I created to the Linux svgalib
port. It's 256x224 at a refresh rate of 103hz. Hopefully it won't
blow up anyone's monitor. ;)
DOS port will follow eventually.
Modified Makefile.base to produce an executable named "fceu" instead
of "fce".
The plans(cycle-accurate ppu emulation) for .90 were a bit ambitious,
and I still need to make other fixes before then.
Fixed some minor(usually) bugs with setting 256x240 tweaked VGA mode
in DOS and Linux ports.
.80:
----
Cleaned/fixed a few things in the mapper 19 emulation code.
Family Circuit '91 still doesn't work quite right... I wonder if
it's a bad dump.
Added input override code to Windows port.
Added code to fix iNES header information in RAM and suggest
changes to the user.
Added support for iNES mapper 152(to be used with games set to
mapper 70, that use one-screen mirroring instead of h/v mirroring).
Blits using the DirectX blitting function(method?) to the primary
surface are now done with the asynchronous flag set(if that
fails, a "normal" blit is tried).
The DirectX blit buffer(secondary surface that FCE Ultra writes to
directly and then uses the DirectDraw blit function on to blit
to the primary buffer) is now created without specifying it
should be in system memory or video memory, except in the case
when no hardware blitting is available, and then DDraw is explicitly
told to create the surface in system memory.
Added Family Keyboard support to the DOS port.
Cleaned up the VRC7 sound emulation code. I need to find a way
to save the current sound state in a save state.
Found out the real name of the "Space Shadow" gun; it's
called the "Hyper Shot". I'm still not sure who made it, though.
Possibly Bandai did. The interesting thing is that Konami
also made a Famicom accessory(dual square boxy things with two buttons
on each) with the same name(though there might not be a space in the
name).
Only the upper two bits read from $4016/$4017 are undefined.
Bit5 is always 0, though. Fixed the bug in "input.c".
Silly kevtris' old documents. New kevtris' brain is always good.
Family Keyboard support for the Windows port.
Added support for the Family Basic Keyboard to the Linux port, other
ports todo.
Might want to add support for the tape recorder at some time.
Also mapped the "Scroll Lock" key to disable/enable command keys
so that the FBK is more useable. It doesn't disable CTRL C,
though...
Changed a lot of inlined functions in x6502.c to macros so that
I could test out some optimization ideas.
DOS code updates for game input override support.
Small optimzation to opcode $4c, and relative jumps.
Added some code to ines.c to set controller information in
FCEUGameInfo(returned by FCEUI_LoadGame()) based on crc32 values.
Updated user documentation and usage.h for DOS and SVGAlib input
command-line changes.
Added an option to disable the four-score(to Windows and Linux ports
so far).
Updated Windows interface to support the new Famicom expansion
devices.
(Re)Added support for the Famicom 4-player device.
Improved Zapper emulation...sort of. It still needs a lot of work. :/
Added *partial* support for the "Space Shadow" gun.
Added support for the Arkanoid controller(both NES and Famicom style).
Added code to support the extension Famicom input devices.
Added PAL scanline start/end drawing settings to Windows port.
Added pause emulation key(F2) to Windows port.
In the process of rewriting/fixing up input code stuff.
Minor bug fix to Power Pad emulation code.
VS Hogan's Alley and VS Duck Hunt automatically select the zapper
now(though it only works on the SVGAlib port).
Undid some FDS sound code changes introduced in 0.76 that totally
screwed up sound. Oops.
Added code to allow different settings for first/last scanline
drawn while in PAL emulation mode, to the Linux and DOS ports.
Added convenience(it's not necessary, but it reduces redundant and
confusing code in the driver code) function
FCEUI_GetCurrentVidSystem(int *slstart, int *slend).
Updated file "TODO".
Changed #include <unzip.h> to #include "zlib/unzip.h"
in file.c.
NSF 6502 player now initialized the stack pointer on reset.
Worked on de-emphasis emulation code quite a bit.
The deemphasized palette calculated at the end of the frame is now
based on what deemphasis bits were set for the longest during
the screen(sampling interval is a scanline) update loop.
Added a "static" deemphasized palette at $40-$7F in the palette table.
This corresponds to the colors when all of the deemphasis bits are set.
I did this to fix the PAL game "Noah's Ark", without breaking
anything else. The only downside is a slight speed loss(~2% on
my system when sound is disabled), but this is acceptable to me,
at least.
Maybe it's time to write hi/true-color ppu drawing code...
Fixed an out of bounds array access in svga.c in SetNESDeemph().
The variable "lastd" in svga.c was being initialized to the wrong value.
Thanks to "Jarod CANAL" for pointing this out.
Removed FCEUI_SetFirstRenderedLine or whatever it was called and
the function to set the last line. Replaced with:
void FCEUI_SetRenderedLines(int ntscf, int ntscl, int palf, int pall);
Changed SetVidSys(int w) to ResetVidSys() in fce.c. Reenabled
PAL/NTSC emulation overrides based on game loaded(really only useful
for NSFs and UNIFs now).
UNIF loading code now recognizes the chunk "CTRL" and tries
to use it. Only the svgalib code supports overriding of input
settings based on game loaded, now, though...
The user is still going to have to configure powerpad settings
on his/her own.
Fixed return values of FCEU_fseek() and fixed a problem in unif.c
related to it.
Changed mechanism for how FCE Ultra tells the driver
code what type of system is being emulated. A structure of
type "FCEUGI" is returned from FCEUI_LoadGame().
Fixed a major mapper 64 emulation bug introduced in 0.76.
Modified BlitVidHi() in drivers/win/video.c to speed it up.
Added support for loading the iNES-format Game Genie ROM image.
Removed ggrom.h and added code to load the Game Genie ROM
image from a file.
Added Windows netplay.c. (new: the user exiting the emulator
while stuck in a blocking recv() or send() loop now works.)
Fixed a vram address register bug in fce.c that I created when I got
rid of the pair/dpair data types.
Added new mappers/92.c
Removed mappers/92.c until I can contact LULU or rewrite it.
drivers/win changes. Removed netplay.c until I can rewrite it.
Got rid of pair/dpair data types.
Got rid of silly "TempArray" thing.
Began adding GPL headers to files. FCE Ultra is going to be in
a state of legal limbo for the next few days...
Replaced crc32.c and crc32.h, and added some #ifdef's and #defines
to use the crc32 code in zlib instead if zlib is linked with