-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
7990 lines (5213 loc) · 390 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
-- 1.21.3: --
April 29, 2018:
SNES: Fixed an off-by-1 bug in the PPU code that would cause writing past the end of the OAM tile list array.
April 24, 2018:
SS: Added "House of the Dead (Japan)" to internal database of games to use the data cache read
bypass kludge with, to fix a game crash on the gun calibration screen.
SS: Added "Virtua Fighter Kids (Java Tea Original)" and "World Series Baseball" to internal database of games to use the data cache read
bypass kludge with, to fix gameplay glitches.
April 22, 2018:
Removed some unnecessary memory allocations in the old settings to argument parsing glue code.
Fixed a crash bug with 2xSaI-family scalers during initialization(regression introduced in 1.21.0-UNSTABLE).
Create the Mednafen base directory(e.g. ~/.mednafen) before opening the lockfile to fix a startup error when the directory does not already exist(regression
introduced in 1.21.0-UNSTABLE).
April 21, 2018:
SS: Added kludge to fix layer offset problem in "Alien Trilogy".
SS: Added "WipEout" to internal database of games to use the data cache read bypass kludge with, to fix a hang that occurred when trying to exit gameplay
back to the main menu.
-- 1.21.2: --
April 2, 2018:
Updated bundled copy of Tremor to address a security vulnerability.
SS: Improved emulation of SCU DSP DMA to program RAM, per tests on a SS(still nowhere near perfect, the way it's implemented on hardware is kind of
horrible, but it should work ok if games use it how it's meant to be used); fixes graphical glitches in "Shining Force III - Scenario 2", and perhaps
in the other "Shining Force III" games as well.
SS: Flush the prefetched SCU DSP instruction when PC is set via PPAF, instead of when END/ENDI executes or when execution is forcibly stopped, per tests on a SS.
SS: Disallow SCU DSP LOP from being written in a looped single instruction unless it's the final iteration, per tests on a SS.
SS: Allow SCU DSP LOP to underflow to 0xFFF with LPS and BTM, per tests on a SS.
-- 1.21.1: --
March 9, 2018:
Enabling the automatic save state loading/saving feature will no longer cause an error to be outputted on game load if the save state does not exist.
March 3, 2018:
Added support for compiling and linking with external LZO instead of the bundled miniLZO.
A CD image loading hint will now be appended to the ROM image too large error message in certain circumstances.
February 25, 2018:
PC-FX: Added a missing variable to save states.
(Re)Added backwards-compatibility "video.driver" setting value aliases.
February 24, 2018:
NES: Misc minor fixes for a few bootleg mappers.
NES: Added missing data to VS Unisystem save states.
NES: Added missing variable to mapper 64 save states.
NES: Added missing save state support to the mapper 22 code.
NES: Fixed improper handling of an MMC1 variable in save states.
February 22, 2018:
Fixed handling of the "osd.state_display_time" setting to allow a value of "0" to work as expected.
-- 1.21.0-UNSTABLE: --
February 19, 2018:
An attempt to run an instance of Mednafen while another instance is already running with the same base directory is now blocked during startup, via
a lock file; note that this check occurs after stdout and stderr are potentially redirected to stdout.txt and stderr.txt on Windows.
February 15, 2018:
Changed the default value of setting "video.driver" from "opengl" to "default", removed the old "0" and "1" backwards-compatibility value aliases,
renamed the "sdl" driver to "softfb"(without backwards-compat aliases), and made it so the setting's value will be reset to "default" after
automatically importing settings from "mednafen-09x.cfg".
On Windows, no longer exit on ALT+F4 while input is grabbed.
Added settings "fps.autoenable", "fps.position", "fps.textcolor", and "fps.bgcolor".
February 11, 2018:
Removed reliance on malloc(), realloc(), and calloc() setting errno to ENOMEM on failure, since it's not the case on Windows XP, and possibly other
platforms/operating systems too.
February 9, 2018:
ZIP files are now recognized by file extension instead of by magic(wizards).
Replaced old minizip code with newly-written ZIP archive reading code.
Replaced MDFN_PrintError() and MDFN_DispMessage() with MDFN_Notify().
February 6, 2018:
Use versionsort() instead of alphasort() when scanning for js* joystick devices on Linux.
February 1, 2018:
Added settings "fps.scale" and "fps.font".
January 31, 2018:
On Windows, in-memory conversion of M3U and CUE files to UTF-8 will be attempted if they lack a UTF-8 BOM and contain byte sequences that are not
valid UTF-8.
On Windows, path/filename settings loaded from the old mednafen-09x.cfg(before being saved to mednafen.cfg on exit) will now be converted to UTF-8.
January 29, 2018:
Added support for pasting text into the cheat and netplay consoles.
January 28, 2018:
SS: Added Japanese keyboard emulation.
SS: Improved VDP2 window Y coordinate evaluation emulation; fixes at least one background layer graphical glitch
in "Radiant Silvergun"(at the start of stage 2C), and the graphical glitch near the end of the intro in "Snatcher".
January 20, 2018:
Altered calculations involving *.xscale(fs)/*.yscale(fs) settings to be more predictable given floating point nuances; any user using non-integer scaling values
for these settings may need to adjust them to get the same result as in previous versions of Mednafen, however.
Added setting "video.fs.display".
January 18, 2018:
SDL2(2.0.5+) is now used and required.
Removed the "overlay" video driver.
On Windows, error messages during startup will now be displayed in a popup message box.
On Windows, Mednafen will now output text to a console if it's started from a console(e.g. cmd.exe or Cygwin), and if not, write
to stdout.txt and stderr.txt like before.
On Windows, Mednafen now uses Unicode variants of CRT and Win32 functions; this may require the user to convert their CUE sheets to UTF-8 if filenames use
exotic(e.g. not directly typable on a standard US-layout keyboard) characters.
For key bindings relating to the debugger and cheat management interface, the Right ALT key modifier will no longer be respected(only the Left ALT has
any effect now), for internationalization reasons.
The configuration file is back to "mednafen.cfg" instead of "mednafen-09x.cfg". If a 0.8.x "mednafen.cfg" is in the way, it will be renamed. If "mednafen.cfg"
does not exist, or is from an old version of Mednafen, settings will initially be loaded from "mednafen-09x.cfg", but still saved to "mednafen.cfg" on exit(and
loaded from "mednafen.cfg" from that point on).
Reworked the input mapping setting format to be more human-readable(and editable). Details are in the documentation, in the "Advanced Usage" section. Old
input mappings will be translated internally, except for keyboard mappings, due to incompatibilities between how SDL 1.2 and 2 handle keyboards.
Added support for mapping joystick axes and buttons, mouse buttons, and keyboard keys to emulated mouse device relative motion for testing purposes(via
manually editing the configuration file, as the in-emulator configuration process currently won't create such mappings).
Added support for digital button input mappings that mix AND, ANDNOT, and OR-style operations together(previously it was either just AND or OR); refer to the
documentation for more details. Note that the in-emulator configuration process won't create complex mappings that mix different boolean operations,
but you can map combinations using simpler logic in-emulator, and then edit the configuration file to adjust the boolean operations used.
January 15, 2018:
SS: Fixed a bug that caused a crash if an error occurred early in the process of loading a game.
Updated the configure script to disable gcc's mitigations for Spectre, in the event distributions configure their compilers to enable them by default.
Stopped (erroneously) memset()'ing some MDFN_PixelFormat objects.
January 12, 2018:
Cleaned up the handling and reduced the size of axis-related inputs as communicated from the driver-side code to core Mednafen.
PCE_FAST: Fixed fubared mouse emulation.
December 28, 2017:
Replaced usage of strcasecmp() and strncasecmp() with MDFN_strazicmp(), for consistent behavior across locales.
Added MDFN_strazlower(), MDFN_strazupper(), MDFN_memazicmp(), and MDFN_strazicmp() functions.
December 14, 2017:
SS: Fixed a logic error in the BIOS sanity check code that caused it to throw a less helpful error message than intended in certain circumstances, and
made the error messages related to BIOS file misconfiguration more verbose(and hopefully more helpful...).
December 6, 2017:
Fixed broken cheat file saving on MS Windows.
November 12, 2017:
Changed how some multidimensional arrays and arrays of structs are accessed, to try to avoid behavior that's probably undefined and may be a problem
in the future.
PC-FX: Fixed integer overflows that caused fatal division by zero when Mednafen's cheat functionality was used(a regression introduced around 0.9.39).
SS: Stuck SCU DMA table arrays in a struct to avoid unspecified behavior in the SCU save state code.
-- 0.9.48: --
September 16, 2017:
Set cheat's default endianness to that preferred by the system being emulated when manually adding a cheat that's not
a cheat device code nor the result of a cheat search.
September 15, 2017:
SS: Fixed SCU DSP DMA from B-bus; fixes the periodic loud popping in Grandia's FMV.
September 12, 2017:
SS: Added a hack/kludge to allow bypassing of data cache on reads(such that the timing benefits of partial cache emulation are preserved, without cache
coherency problems that partial cache emulation sometimes leads to with poorly programmed games), and added an internal database to enable it on select games;
fixes graphical glitches and/or hangs in "Area 51 (USA and Europe)", "Clockwork Knight 2 (USA)", "DeJig - Lassen Art Collection", "Father Christmas",
"Golden Axe The Duel", "Sega Saturn Choice Cuts", "Spot Goes to Hollywood (USA and Japan)", "Street Fighter Zero", "Street Fighter Zero 3",
"Super Puzzle Fighter II Turbo", and "Virtual Volleyball".
SS: Full cache emulation is now enabled for "Whizz"(by using an internal database), to resolve(or at least reduce) quasi-random hanging issues during startup.
September 11, 2017:
SS: Corrected an inaccuracy with CDB play repeat handling; fixes hang when trying to resume a suspended game in "Tactics Ogre".
SS: Initialize VDP1 clipping and local coordinate registers only on power-on, and not on reset.
September 7, 2017:
SS: Fixed side-effect inaccuracies in the CDB Put Sector Data, Copy Sector Data, and Move Sector Data command emulation.
September 6, 2017:
Added configure option "--with-external-trio", for distribution packagers.
SS: Added partial emulation of SH-2 external bus open bus behavior; fixes messed up colors in "Discworld 2".
September 4, 2017:
SS: Improved CDB Initialize command emulation; fixes crash in "Tenchi Muyou! Ryououki Gokuraku" when it tries to play an opening movie during startup.
August 28, 2017:
SS: Made CD seek overhead calculation less completely wrong; fixes graphics corruption in intro of "Batman Forever", and fixes hang in "Jung Rhythm" when
trying to retry a failed stage.
-- 0.9.47: --
August 25, 2017:
Lynx, MD, NGP, SMS: Added a few missing variables to save states.
August 24, 2017:
SS: Added save state support.
Revamped save state helper macros and functions, to allow save-stating of variables in arrays of structs to be simpler.
August 22, 2017:
SS: Fixed BCR1 write protect, and added stub emulation of the other BSC registers.
SS: Added incomplete stub Action Replay 4M Plus emulation(for experimentation); proper Action Replay support would require SH-2 UBC emulation, and that
may be too costly performance wise.
August 21, 2017:
SS: Implemented very rough approximation of bus timing side effects when master SH-2 DMA is active(accurate handling of bus priorities and sharing would increase
CPU requirements noticeably, but it may ultimately be necessary as a database-driven option for some stubborn games in the future). Fixes startup hangs in
"Device Reign", "Real Sound", "Resident Evil", "SD Gundam G Century S", "Super Tempo", "Tennis Arena", "Tilk", "Yuukyuu Gensoukyoku",
"Yuukyuu Gensoukyoku 2nd Album", "Yuukyuu Gensoukyoku ensemble", "Yuukyuu Gensoukyoku ensemble 2", "Yuukyuu no Kobako Official Collection", and "Zero4 Champ".
-- 0.9.46: --
August 10, 2017:
Compile with explicit -fstrict-aliasing, for distributions/OSes that have configured gcc to not enable strict aliasing at -O2(and possibly other levels).
Fixed a bug that could, under certain conditions, cause emulator OSD elements to not be updated in the time after entering frame advance mode
and before a frame advance.
August 7, 2017:
Use a sorted std::vector instead of std::multimap to store current settings, to reduce memory usage.
August 6, 2017:
SS: Added ss.input.port*.3dpad.mode.defpos settings to control the default position of the digital/analog mode switch.
August 5, 2017:
Allow addresses above FFFF to be entered as the logical watch address in the debugger.
August 4, 2017:
SS: Added kludge to fix layer offset problem in "Daytona USA CCE".
NES: The functionality controlled by setting "nes.fnscan" now recognizes "(F)" and "(France)" as PAL.
NES: Added support for iNES mapper 40.
July 11, 2017:
Utilize _byteswap_*() functions in endian.h when compiling with Microsoft's C++ compiler.
June 22, 2017:
Fixed a couple of minor issues(log header formatting, and skipped logging of first instruction in step mode) with the debugger's undocumented trace log feature.
NES: Corrected the period of PAL noise channel frequency setting 0x1.
June 21, 2017:
NES: Fixed a few square wave sound channel emulation bugs(wrong phase for duty setting 3, and failing to clock the period counter when the channel is silenced).
-- 0.9.45.1: --
June 5, 2017:
SNES: Fixed an instance of possibly-undefined behavior.
Silenced dumb warning spam relating to endian.h emitted by newer versions of gcc.
June 4, 2017:
Fixed garbled audio with the exclusive-mode WASAPI sound driver on some higher-end sound cards(regression introduced in 0.9.45 due to a mistake in changing
the meaning of a macro field during development); may also fix garbled audio when using the new OpenBSD sound driver with certain sound cards.
-- 0.9.45: --
May 29, 2017:
Tweaked netplay sound buffer underrun kludge code.
The netplay server host and port being connected to are now printed to the netplay console at the beginning of a connection attempt.
Netplay connection attempts to servers are now non-blocking.
May 25, 2017:
SS: Synchronize end of SMPC clock change commands to beginning of vsync instead of beginning of vblank, per tests on a SS.
May 23, 2017:
SS: Reworked how the VDP2 rendering thread waits, to make Saturn emulation usable with the default OpenBSD kernel.
SS: Added emulation of the light gun("Stunner"/"Virtua Gun").
April 28, 2017:
#include'd many commonly-used C and C++ standard library headers in types.h(and removed redundant #include statements from various header and source files), to
reduce the probability of portability problems(due to neglecting to explicitly include a header file) when different standard C/C++ libraries
behave differently in regards to what header files include what other header files.
Added a sound output driver for OpenBSD's /dev/audio.
Reworked the sound output format conversion code to be more versatile,
April 25, 2017:
NES: Wrote new "Barcode Battler II" emulation code to replace the old "Barcode World" code, based on quick testing with actual hardware(albeit the English version).
April 24, 2017:
SSFPlay: Added save state support.
-- 0.9.44.1: --
April 21, 2017:
MD: Added a missing MDFN_FASTCALL, the absence of which broke 32-bit x86 builds(either at link time or run time).
-- 0.9.44: --
April 19, 2017:
PSX: Restructured the GPU emulation code and data a bit to get a minor performance boost.
April 18, 2017:
VB, PCE, WonderSwan, MD, GBA: Use fastcall calling convention(on 32-bit x86) in a few (more) places where it makes sense.
April 16, 2017:
SNES-Faust: Added setting "snes_faust.correct_aspect", default value of "1".
SNES-Faust: Added PAL support.
April 14, 2017:
SNES-Faust: Made minor optimizations to the BG rendering code.
April 9, 2017:
Added command-line option "-which_medium", to specify which CD to start with when using multi-CD M3U sets.
April 5, 2017:
SNES: Fixed emulator hang when saving state in "Panic Bomber W".
April 3, 2017:
Added some simple scripts to cross-compile and package Mednafen for Windows.
Added Windows cross-compiler toolchain setup notes.
32-bit Windows builds are now compiled with -march=i686 instead of -march=i586(shouldn't affect compatibility for official builds, since the toolchain
and libraries were already effectively being compiled with -march=i686, which was not intended, but since nobody apparently complained... ;p).
March 25, 2017:
VB: Added support for custom palettes.
VB: Reworked how LED on-state duration is translated into RGB values and added setting "vb.ledonscale"; the default value of "vb.ledonscale" is
set such that the overall brightness will be lower than in previous versions of Mednafen, to reduce white crush, but the user can set it
to a value of "1.9921875" to approximate the old brightness level.
March 20, 2017:
SNES: Made a couple of SDD1 registers readable; fixes "Tractor Beam" spell graphical glitches in "Star Ocean"(thanks to orbea).
March 17, 2017:
SS: Added support for a 16MiB RAM cart mapped into the A-bus CS1 area(for "Heart of Darkness" and homebrew).
March 15, 2017:
WonderSwan: Removed setting "wswan.rotateinput", and added a new device("gamepadraa") that can be selected on virtual input port 1 to
automatically rotate inputs when the display is rotated.
March 14, 2017:
Reworked text drawing to not use an excessive number of potentially-large VLAs.
Moved statements with important side effects outside of assert()s in settings.cpp.
Replaced ancient Unicode conversion code with newly-developed code.
March 7, 2017:
SS: Prioritize SMPC command execution over VBlank handler execution, per (limited) tests on a SS. Fixes broken input in "Primal Rage"(a 0.9.43 regression).
-- 0.9.43: --
February 24, 2017:
Reworked how input grabbing is handled. The new way uses only one key combo(CTRL+SHIFT+Menu), and will adapt its behavior based on any keyboards
being selected on any virtual input ports or not(refer to the documentation for full details). A new setting is added, "command.toggle_grab", and
two settings were removed, "command.toggle_grab_input" and "command.toggle_cidisable".
Emulated keyboard(FKB, Tsushin, Saturn) key state is now only updated when input grabbing is toggled on.
February 22, 2017:
SS: Fixed SMPC read handling of an empty input port.
SS: Implemented emulation of SMPC 0-byte port read mode.
PSX: Reduced rumble latency by 1 frame.
February 20, 2017:
Reworked how keyboard key state is handled, to prevent extremely short button presses from being lost(like what can happen with the Pause key, or
other keys when slow-forwarding is active).
SS: Added 101-key US keyboard emulation.
February 17, 2017:
SS: Allow SMPC commands to be dual-issued; fixes hang in "F1 Challenge", and hangs/missing sound in "Magic Knight Rayearth".
SS: Added emulation of the 6-Player Adaptor(multitap).
February 15, 2017:
SS: Added emulation of the Mission Stick and Dual Mission Sticks.
February 13, 2017:
SS: Added emulation of the steering wheel("Arcade Racer"), for use with "Virtua Racing", "High Velocity - Mountain Racing Challenge",
"The Need for Speed", and other Saturn racing games that apparently lack 3D pad support.
-- 0.9.42: --
February 7, 2017:
SS: Ignore lower bit of VDP1 sprite draw command texture base address when drawing using color mode 5, per tests on a SS; fixes some of the
graphical glitches in "All-Star Baseball 97".
February 6, 2017:
SS: Ignore writes to VDP1 registers via SCU DMA under certain conditions to approximate what happens on a SS; fixes hang in "GunBlaze-S".
SS: Fixed handling of RSTCSR WOVF clearing, per tests on a SS. Also changed the semantics of RSTCSRM a bit to simplify things, might want to change
WTCSRM, FTCSRM, etc. semantics too in the future for consistency...
SS: Fixed handling of WTCSR OVF clearing, per tests on a SS.
Updated tremor to revision 19427.
Updated libogg to version 1.3.2.
Fixed a bug that caused a crash if the user tried to select(via CTRL+SHIFT+[n]) a device on a non-existent virtual input port.
February 5, 2017:
SNES-Faust: Added multitap support.
February 3, 2017:
SS: Fixed a bug in the handling of M68K level 7 interrupts; fixes missing sound in "Arcade's Greatest Hits".
February 1, 2017:
SS: Suspend VDP1 command processing while an SCU DMA from SDRAM to VDP1 VRAM is active, to approximate how a SS behaves. Fixes FMV tearing
in "Johnny Bazookatone", and fubared graphics in "Virtua Cop" and "Virtua Cop 2".
January 31, 2017:
SS: Fixed handling of clearing FTCSR bits, per tests on a SS.
January 30, 2017:
SS: Improved instruction timing(though still far from perfect); fixes speed problems in "Pocket Fighter", reduces the size of the flickering
area in "Lunar"'s FMV, and fixes the crash that occurs immediately after gameplay starts in "Virtua Fighter" and "Virtua Fighter Remix".
January 26, 2017:
NES: Added support for iNES mapper 190.
January 25, 2017:
SS: Clear SCU internal pending interrupt bit upon the SCU's acceptance of the IRQ to send to the SH-2, instead of when the SH-2 fetches the vector, per
tests on a SS.
-- 0.9.41: --
January 21, 2017:
SS: Implemented disc change IRQ on disc eject.
January 20, 2017:
Replaced usage of trio_snprintf() to a fixed-size buffer for path construction in general.cpp with manual concatenation of std::string strings.
January 18, 2017:
Use _beginthreadex() instead of CreateThread() on Windows, to avoid a small memory leak.
Now explicitly use 64-bit walltime functions on 32-bit Windows builds.
January 17, 2017:
PCE, PCE_FAST: Added a missing sound emulation variable to save states.
January 16, 2017:
SNES: Added setting "snes.h_blend", default value of "0", that when set to "1" will enable a horizontal blend/blur filter.
January 15, 2017:
PCE: Improved SuperGrafx window handling in 10MHz dot clock modes.
GBA: Modified RTC emulation to not use standard C library walltime functions during emulation.
Wrapped various time functions, and dropped the dependencies on SDL time functions, in Time.cpp/Time.h.
January 14, 2017:
WonderSwan: Fixed off-by-1 bugs in window coordinate evaluation, per tip from trap15.
WonderSwan: Fixed copyright notice headers to not allow distribution under versions of the GPL other than version 2(an oversight from
back when the Cygne code was added to Mednafen).
WonderSwan: Applied sound and DMA emulation fixes from trap15; fixes rain sound effect in "Star Hearts". The changes did necessitate lowering
the overall WonderSwan sound emulation volume a bit to prevent excessive clipping, however.
January 12, 2017:
SS: Fixed a logic error in the VDP2 rendering code; fixes battle scenes in "Grandia".
January 10, 2017:
SS: Removed a few bad entries in the internal region-correction database that were breaking the Korean releases of some games.
January 9, 2017:
PCE, PCE_FAST: Added support for auto-enabling SuperGrafx emulation with CDs when a mode 1 data track has the 16-byte magic
"4D 65 64 6E 61 66 65 6E 74 AB 90 19 42 62 7D E6" at offset 0x86A(assuming 2048 bytes per sector), for homebrew and translations.
January 7, 2017:
SS: Added emulation of the SCSP 18-bit DAC enable bit; fixes low volume problem in "Daytona USA".
SS: Fixed some bugs that broke emulation on big-endian platforms.
January 5, 2017:
Fixed an off-by-1 memory corruption bug in the debugger's memory editor relative bytestring search code.
VB: Finally commented out some debug printf()s.
January 1, 2017:
Cleaned up code that passes video data from the game thread to the main thread, and replaced some volatile usage with atomics.
December 31, 2016:
Fixed a large memory leak that occurred when saving screenshots with SHIFT+F9.
VB: Fixed a regression introduced in 0.9.39.2 that caused transient sound/note distortion on save state load.
December 27, 2016:
Moved TCP/IP networking code into the core of Mednafen, and added support for non-blocking connects, so the Saturn emulation module can eventually use
it for modem emulation.
December 25, 2016:
Modified configure script to (hopefully) compile in the Saturn emulation module when building for PPC64 and AArch64 architectures(in addition to x86_64).
December 21, 2016:
Allow emulated digital button mappings to be used in AND mode(like command keys configured with SHIFT+F2) if the user manually
prefixes the "/&&\ " magic string to the mapping setting string in the configuration file. Can be useful with emulated switches and mode toggle buttons,
but the in-emulator input configuration process will need to be revamped before enabling this mode for a mapping can be done in a sane and
more user-friendly manner.
Rewrote round_up_pow2() in math_ops.h to use MDFN_log2, which in turn uses MDFN_lzcount*(), since the major CPUs that Mednafen is going
to run on should have dedicated instructions to (at least indirectly) count leading zeroes. Also changed the semantics to return 0 on overflow instead of 1.
December 20, 2016:
SS: Now use leading-zero counting function from math_ops.h in the VDP2 rendering code, instead of using inline assembly.
Reorganized the leading/trailing bit counting functions in math_ops.h, added 32-bit and 64-bit trailing-bit counting functions, and added faster
variants where passing a 0 results in an undefined result.
December 19, 2016:
Print out the game key used after a connection is established with netplay, when the game key is not empty.
SMS: Added settings "sms.slstart", "sms.slend", "sms.slstartp", and "sms.slendp".
Added some checks to help prevent a black screen when the scanlines effect is enabled via a <system>.scanlines setting and the effective Y scale is
too small(by forcing negative-value behavior in the case of interlaced video, or temporarily disabling the effect otherwise).
December 18, 2016:
PSX: The functionality controlled by the "psx.input.analog_mode_ct" setting no longer interferes with netplay.
PSX: Added "psx.input.analog_mode_ct.compare" setting to control the combination of buttons used when the functionality controlled by the
"psx.input.analog_mode_ct" setting is enabled.
Modified build system to use $(localedir) instead of $(datadir)/locale for LOCALEDIR define.
Updated miniLZO to version 2.09.
December 14, 2016:
SS: Added setting "ss.h_blend", default value of "0", that when set to "1" will enable a horizontal blend/blur filter(with a much noticeable effect on the
Saturn video modes with a higher horizontal resolution).
December 10, 2016:
SS: Added setting "ss.h_overscan", default value of "1", to allow the user to show less of the screen on the left and right sides by setting it to "0".
December 9, 2016:
SS: Added setting "ss.correct_aspect", default value of "1", to allow the user to disable aspect ratio correction(not recommended, but whatever~).
Added simple TV CRT-approximating OpenGL shader, "goat".
December 8, 2016:
Renamed settings "*.pixshader" to "*.shader".
December 7, 2016:
Check for and use -no-pie instead of just -nopie in the configure script, to fix build failures on at least one platform.
December 6, 2016:
Fixed half-source-pixel image offset bug in the "autoip", "ipxnoty", and "ipynotx" pixel shaders.
Fixed altivec.h header detection regression in 0.9.39.
October 7, 2016:
Fixed a bug that caused input movie recording to produce broken recordings when done during netplay with an emulation module
that uses mid-frame sync functionality.
-- 0.9.39.2: --
September 19, 2016:
SMS: Sanitize some previously-missed variables in the save state loading code.
September 18, 2016:
MD: Fixed a bug that caused some YM2612 state to not be restored properly on save state load.
MD, SMS, NGP: Fixed an old Z80 emulation bug with interrupt handling.
Make an index of save state sections on save state load, to detect sections in a save state that are unused by the state loading code(for debugging).
MD, PCE, PCE_FAST: Sanitize some previously-missed variables in the save state loading code.
September 16, 2016:
SS: Added PAL support.
SS: Fixed vertical positioning brokenness with custom "ss.slstart" setting values with interlaced video.
September 15, 2016:
PC-FX, WonderSwan, NES, VB, PSX: Sanitize some previously-missed variables in the save state loading code.
Fixed a use-after-free bug in the SDL sound output driver.
NGP: Fixed several off-by-1 bugs in the address to ROM data translation function.
September 11, 2016:
Removed nonsensical unused frame advance loop in drivers/main.cpp leftover from 0.5.x.
PCE_FAST: Fixed a bug that could cause a crash with large "pce_fast.ocmultiplier" setting values when running CD games.
September 10, 2016:
PCE_FAST: Skip 512-byte copier header if detected when loading a ROM image.
PCE_FAST: Made some minor optimizations.
PCE, PSX, PCE_FAST: Avoid UB by biasing uintptr_t values instead of pointers directly in the CPU core.
September 1, 2016:
GB: Corrected the layer names used with the layer toggling feature.
August 26, 2016:
SS: Fixed a potential problem with SH-2 DMA event rescheduling when bus lock is held, that probably wouldn't ever happen in practice.
NES: Fixed several instances of missing initialization of on-cart WRAM.
August 24, 2016:
SS: Marked more functions with MDFN_COLD hint, and marked a few functions to be forcibly-inlined where it makes sense.
August 23, 2016:
SNES: Fixed an issue causing a compilation error on Mac OS X.
-- 0.9.39.1: --
August 22, 2016:
SS: Settings "ss.dbg_mask" and "ss.dbg_exe_cdpath", and the functionality they control, are no longer available unless Mednafen has been compiled with
"MDFN_SS_DEV_BUILD" defined(such as with -DMDFN_SS_DEV_BUILD=1 in CPPFLAGS env var passed to configure).
SS: Replaced some instances of case ranges with more portable constructs.
August 20, 2016:
SS: Run VDP1 vblank erase at end of vblank, so we know how much time we have and thus how many entries in the framebuffer we'll be able
to erase. Currently, the available time calculations are generous, allowing for a bit more erase than what's possible on a Saturn, but we can tighten
it up in the future once it's fairly certain there aren't any more event scheduling accuracy issues. Fixes FMV subtitle text in "Panzer Dragoon".
SS: Fixed a bug that caused VDP2 frames to be short by 1 to 3 CPU cycles.
SS: Reschedule the SH-2 DMA event handler as necessary to prevent it from running when the SH-2 bus is locked.
SS: Force the SH-2 DMA and SCU DMA event handlers to be rescheduled to SH7095_mem_timestamp time when necessary.
SS: Check for pending events right before calling VDP1, VDP2, SMPC, and SCU regs read/write handlers, which may then call their own event update
functions.
August 17, 2016:
Fixed an old bug that could cause a startup crash on Windows systems without XInput DLLs installed(e.g. some Windows XP systems).
NES: Fixed a very old bug triggered when disabling(via CTRL+1) the background layer, that would cause sprite pixels to also be visually disabled too under certain
circumstances.
August 16, 2016:
MD, PC-FX: Fixed several instances of left-shifting negative values.
August 15, 2016:
SS: Fixed a compilation error when compiling with the debugger disabled("--disable-debugger" passed to configure).
Added configure options "--with-external-mpcdec" and "--with-external-tremor", for distribution packagers.
SS, SNES-Faust: Fixed a few issues causing compilation errors on clang.
SS: Tweaked how seek command pause works; fixes a lockup issue in "Astal".
August 11, 2016:
WonderSwan: Fixed a bad usage of "char" without an unsigned/signed qualifier.
SS: Slow down SCU DMA to VDP2 VRAM under certain conditions.
August 10, 2016:
SS: Adjusted VDP1 polygon and line draw commands to behave as if SPD=1, ECD=1 when color mode >= 6; fixes missing graphics problem in "Hi-Octane".
August 8, 2016:
SS: Reworked SCU DMA's timekeeping and scheduling code to be more accurate; reduces the size of the flickering section of the FMV in "Lunar".
SS: Fixed handling of CPU<->SMPC open bus.
August 7, 2016:
Relaxed the CloneCD Q subchannel sanity checks to allow a track number of 0xAA(leadout).
August 6, 2016:
SS: Implemented kludgy(incomplete) support for quasi-illegal window X start position values; fixes ground layer issues in the forest stage of
Panzer Dragoon 2.
-- 0.9.39-UNSTABLE: --
August 4, 2016:
Put "official" -mtune and -march build flags for Windows targets into configure.ac.
July 27, 2016:
The version is now displayed in the upper right-hand corner of the F1 help screen.
June 28, 2016:
PSX: Modified GTE emulation to inline instruction-handling functions, to not unroll large loops, and to use MDFN_lzcount32() for LZCS/LZCR register
calculation.
June 27, 2016:
SNES: Modified libco to use __attribute__((section(".text"))) on the libco swap function data arrays, instead of calling
mprotect()/VirtualProtect().
June 24, 2016:
PSX: Rearranged CPU structure layout to improve performance a little on ARM CPUs.
June 20, 2016:
PSX: Don't specially compile the code with -mmx -msse -msse2 on 32-bit x86, to avoid potential ODR violations.
June 19, 2016:
NES: Added ARM NEON support to the resampler.
June 18, 2016:
NES: Enabled SSE2 support in the resampler, though only enabled(through rough heuristics) when likely to have a performance benefit over MMX.
June 17, 2016:
NES: Made resampler's coefficient memory layout more optimal.
PCE, PC-FX: Added ARM NEON support to the resampler(though it's only compiled in when the compiler is setup to use NEON, such as by passing -mfpu=neon).
June 16, 2016:
PCE, PC-FX: Added AVX support to the resampler.
PCE, PC-FX: Made resampler's coefficient memory layout more optimal.
June 14, 2016:
PCE: Allocate HuC6280 objects statically instead of dynamically, and removed a layer of indirection for the event handler
pointer.
PCE: Moved HuC6280 CPU emulator back into the "pce" directory, since no other emulated systems use it and there are no plans
for emulating any such systems(and if there were, new, cleaner HuC6280 emulation code should probably be written).
June 13, 2016:
PSX: Enabled CDC periodic-report maximum level calculation code that was written a while back, to fix a
lockup in "Fantastic Pinball Kyutenkai".
Added setting "netplay.console.lines".
When a console is scrolled, a green indicator arrow will now be drawn in the lower right corner.
Scrolling in the console(netplay, cheat) is now done in visible line units, rather than in internal line units.
June 12, 2016:
Removed setting "netplay.smallfont", and added settings "netplay.console.scale" and "netplay.console.font".
Somewhat revamped the layout of the debugger's memory editor.
Removed 4x5 font(it's too small to be of much real use), and added 6x9 and 6x12 fonts(mostly for debugger use).
Code points outside the BMP are no longer drawn as being truncated to 16-bits.
In the text drawing routines, a character missing from the chosen font is now drawn as the Unicode replacement character instead
of a question mark.
June 11, 2016:
Made some minor visual and positioning tweaks to the debugger's memory editor.
Revamped the text drawing routines to not take naked pointers, instead taking an MDFN_Surface*, optionally an MDFN_Rect for specifying
a clipping rectangle, and x and y positions within the surface.
June 10, 2016:
Replaced MDFN_FastU32MemsetM8() with a set of MDFN_FastArraySet() functions, which don't require minimum alignments beyond natural alignment, but
will perform faster with them.
June 9, 2016:
PSX: Brought MDEC emulation decode timing closer to the timing of a PS1.
VB: Replaced endian-handling functions local to vip.cpp with new code in endian.h derived from code written for Saturn emulation.
June 8, 2016:
Fixed long-broken MDFN_en24msb() function.
June 7, 2016:
Fixed a bug that could cause a crash if a gzip-compressed file whose uncompressed size is 0 bytes is loaded.
June 6, 2016:
SNES: Updated libco to the copy included with higan v098, for x86_64 Windows fixes and ARM support.
June 4, 2016:
Added support for CUE sheet "INDEX" directives for indexes 2-99.
May 31, 2016:
NES: Extended the mapper 184 emulation to support "Fantasy Zone"'s board.
May 30, 2016:
Replaced various redundant C-string-utilizing file path decomposition functions/code with usage of the newer MDFN_GetFilePathComponents().
May 29, 2016:
Replaced usage of MDFN_calloc*()/MDFN_malloc*()/MDFN_free() with new/delete.
Replaced MDFN_IsFIROPSafe() with MDFN_CheckFIROPSafe(), which throws an exception instead of relying on the caller to do it.
May 5, 2016:
SNES: Removed unused disassembler code.
Fixed code causing a compilation error on gcc 6.
April 10, 2016:
Cleaned up cheat code a little, and added support for RAM cheats to be applied via function call instead of through direct data pointer access.
March 29, 2016:
MD, NGP, PC-FX: Encapsulated code in namespaces.
March 28, 2016:
NES: Implemented kludge to fix a minor Zelda 2 title screen glitch, a status bar glitch in Burai Fighter, and scrolling in the second stage of The Young Indiana
Jones Chronicles.
October 23, 2015:
PSX: Reworked how branch delay slots are handled to be simpler and slightly more efficient.
October 12, 2015:
PSX: Improved emulation of the instruction cache management features of the PS1's CPU core; probably won't affect any games, but could be of
use in homebrew.
-- 0.9.38.7: --
September 30, 2015:
Fixed several malformed trio_sscanf() format strings in regards to field width, that could cause stack buffer overflows in certain cases.
September 29, 2015:
PSX: Added skeleton BCzF/BCzT instruction emulation, and fixed handling of illegal CP0 instructions.
September 25, 2015:
PSX: Added emulation of CPU exception-handling bad address register.
PSX: Implemented emulation of the Coprocessor Error field in the CAUSE register.
PSX: Added emulation of CPU exception-handling branch target register.
PSX: Fixed handling of CAUSE bits 30 and 31 when an exception occurs immediately after a branch instruction is executed.
PSX: Fixed link address calculation for JAL, JALR, and B*AL instructions when they're executed in a branch delay slot.
PSX: Corrected emulation of the quasi-illegal mirrors of the BGEZ*/BLTZ* type instructions.
PSX: Added emulation of a pipeline quirk that occurs with back-to-back load instructions to the same register(previously only emulated with LWL and LWR).
September 22, 2015:
Fixed a bug in the debugger's disassembler that could break disassembly when a disassembled instruction wraps around the end of the CPU's program address
space to the beginning.
September 18, 2015:
PCE: Removed experimental and unfinished hypothetical subtitle hardware emulation which had a few security-related problems.
September 16, 2015:
MD: Fixed registration of main RAM in the cheat engine to be mirrored properly.
PCE: Fixed a bug that caused the debugger's disassembly and memory view to show a wrong value for the HES bootstrap register
at $1D00.
PCE: Fixed a bug that sometimes caused the "TIMV" register in the debugger to display "FFFFFFFF" instead of "FF".
The date and time of the compilation of qtrecord.cpp are no longer written to recorded QuickTime movie files, to solve
a minor privacy issue and a build reproducibility issue.
PSX: Rewrote parts of the timer emulation code to fix several issues; fixes wrong music playback speed problem
in "RPG Tsukuru 4".
-- 0.9.38.6: --
August 9, 2015:
PSX: Fixed a bug in the calculation of time taken by some GPU commands while in interlaced mode; fixes graphical glitches in
"Mr. Driller G".
PCE, PCE_FAST: Added more delay to CD Read command's returning of sector data, to fix a lockup in "Mirai Shonen Conan",
and a stuck note problem in "4 in 1 Super CD".
-- 0.9.38.5: --
June 26, 2015:
PSX: Generate a seek error when trying to read audio sectors(when the appropriate Mode bit isn't set), and generate a bad command error
when executing ReadN/ReadS with a non-PS1 disc. Fixes a lockup in "Vib Ribbon" when trying to play with audio CDs.
June 20, 2015:
Altered SHA-1 and SHA-256 test code to work around a preprocessor-related bug in gcc.
NES: Fixed a mapper 19 sound emulation bug; fixes music issues in the Japanese release of "Rolling Thunder".
PSX: Replaced a GPU debug puts() with code that respects the psx.dbg_level setting.
June 18, 2015:
PC-FX: Corrected handling of width/height of 0xA for KING BG1-3, per tests on a PC-FX. Fixes a graphical glitch in "Sakuraigar Mode" in
"Tyoushin Heiki Zeroigar".
May 5, 2015:
PSX: Added some debug messages to the memory card emulation code, outputted when setting psx.dbg_level is set to certain values.
April 29, 2015:
PCE, PCE_FAST: Corrected decimal-mode ADC and SBC behavior(especially for "illegal" input values), per tests on a HuC6280.
April 22, 2015:
Added a test to tests.cpp for gcc bug #60196(triggered with non-default optimization flags).
April 19, 2015:
Added a missing dependency statement to configure.ac, whose absence broke compilation with --disable-pce --enable-pcfx
April 16, 2015:
WonderSwan: Removed erroneous constraints that were preventing opposing X* and Y* buttons from being pressed simultaneously, and changed the
names of the the X* and Y* buttons used during input configuration, per tip from trap15.
-- 0.9.38.4: --
April 12, 2015:
PC-FX: Reorganized the debugger's register view to be slightly more space-efficient horizontally.
NES: Migrated the rest of the *GetRegister() and *SetRegister() debugger functions over to the newer-style interface.
PC-FX: Migrated the rest of the *GetRegister() and *SetRegister() debugger functions over to the newer-style interface.
April 11, 2015:
PC-FX: Migrated debugger functions PCFXDBG_GetRegister() and PCFXDBG_SetRegister() over to the newer-style interface that takes integer IDs instead
of std::string.
VB: Migrated debugger functions VBDBG_GetRegister() and VBDBG_SetRegister() over to the newer-style interface that takes integer IDs instead
of std::string.
WonderSwan: Migrated debugger functions WSwan_GfxGetRegister() and WSwan_GfxSetRegister() over to the newer-style interface that takes integer IDs instead
of std::string.
PC-FX: Added support for setting breakpoints on writes to specific VDC registers, by setting an Aux Write Breakpoint on an
address ranging from A0000-A001F(VDC-A) or B0000-B001F(VDC-B).
April 10, 2015:
Debugger: Relaxed most maximum string length restrictions on user-inputted addresses(to allow for lazily leaving an excessive number of 0s at the
beginning of an address, for example).
Debugger: "Goto Address" prompt in the memory editor can now be activated by pressing "ENTER"(in addition to "G"), and "Disassembly Address" prompt in the main debugger
view can now be activated by pressing the "G" key(in addition to "ENTER").
April 9, 2015:
NES: Added sprite RAM to the debugger's memory editor.
NES: Fixed some issues with the debugger's graphics/tileset viewer.
April 8, 2015:
PSX: Improved GPU texture cache emulation accuracy per tests on a PS1; fixes graphical glitches in the menus of "Tigershark".
April 5, 2015:
PCE: Added support for setting breakpoints on writes to specific VDC registers(like MAWR, BXR, BYR, etc.), by setting an Aux Write Breakpoint on an address
ranging from 20000-2001f(hexadecimal).
April 4, 2015:
Avoid left-shifting negative values in hw_sound/pce_psg/pce_psg.cpp
Added a couple more tests regarding left shift of signed integers to tests.cpp.
April 2, 2015:
Debugger: Fixed half-broken re-activation of the debug screen when a breakpoint triggers and the user was last on a debug screen other than the
main one.
Debugger: Fixed a rounding issue that could cause insufficient disassembly lines with some *.debugger.disfontsize setting values.
PSX: Hooked up writing(editing) in the debugger's memory editor for "CPU Main RAM".
March 29, 2015:
PCE: Removed old leftover debug puts() in HuC6280 emulation code.
Debugger: Fixed a bug that could cause breakpoints to be skipped if the 'R' key was pressed(or auto-repeated) while outside of step mode.
NES: Fixed highpass filter coefficient calculation.
SNES: Fixed a bug that was breaking input after triggering a virtual Reset/Power Toggle event when a non-gamepad controller(e.g. mouse) is currently
selected for a port.
March 23, 2015:
NES: Fixed a minor sound emulation bug.
March 15, 2015:
GBA: Fixed several instances of left-shifting negative values in thumb.cpp.
PC-FX, VB: Fixed an instance of left-shifting uint64 by 64 in the FPU emulation code.
March 14, 2015:
GBA: Fixed a few instances of technically undefined behavior(shifting 32-bit int by >= 32, and left-shifting negative values) in arm.cpp.
March 11, 2015:
Reworked a test in tests.cpp to better reflect the requirements of certain undefined behavior some code still (unfortunately) relies on, to avoid
triggering an assert() during startup when compiled with llvm/clang 3.6.
March 6, 2015:
PCE: Fixed a major VRAM DMA emulation regression introduced around version 0.9.16-WIP, that breaks some homebrew software.