-
Notifications
You must be signed in to change notification settings - Fork 2
/
ChangeLog
8403 lines (5481 loc) · 410 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.24.3: --
May 1, 2020:
SS: Implemented more complete emulation of the SCSP short waveform mode, after running further tests; fixes excessive distortion in a
sound effect in "Sega Ages: OutRun", a regression introduced in Mednafen 1.24.2.
-- 1.24.2: --
April 25, 2020:
Fixed broken support for systems without any usable OpenGL implementation available.
April 24, 2020:
Apple2: Adjust disk angle variable upon disk change, partially sanitize the disk angle variable on state load, and print out a debug error
message instead of triggering an assert() in the disk reading code, to prevent Mednafen from aborting out in certain circumstances involving disk
changing and state loading.
April 21, 2020:
Apple2: Added missing keyboard reading variable to save states.
April 7, 2020:
SS: Fixed a few inaccuracies with the SCSP waveform loop handling.
April 6, 2020:
SS: Added emulation of SCSP slot short waveform mode bit.
April 5, 2020:
SS: Implemented the buggy linear interpolation that occurs on the SCSP when FM is used.
April 3, 2020:
SS: Added emulation of SCSP slot EG bypass bit.
SS: Implemented SCSP register mirroring.
-- 1.24.1: --
February 27, 2020:
NES: Changed some macros in the CPU emulation code to not have leading underscores.
February 25, 2020:
Use sem_clockwait() or sem_clockwait_np() when available, instead of sem_timedwait().
NES: Don't memset() MDFN_PixelFormat object.
February 23, 2020:
Fixed build errors on FreeBSD relating to the multithreading code.
February 22, 2020:
Fixed broken semaphore emulation code used on non-Windows platforms when sem_timedwait() is not available(1.24.0-UNSTABLE regression).
February 15, 2020:
Altered Linux joystick API detection in the configure script, to avoid compiling with Linux joystick support in lieu of SDL joystick support on *BSD systems
with Linux header files installed.
February 11, 2020:
Fixed AltiVec-related build errors on 64-bit POWER/PPC.
SS: Added kludges to fix NBG2/NBG3 background layer offset problems in "Fighters Megamix".
February 2, 2020:
SNES-Faust: Replaced assert() in the DSP-1 emulation code with a SNES_DBG()
January 23, 2020:
PSX: Implemented a partial fix for missing notes/instruments in the music of "Dragon Ball GT: Final Bout".
December 30, 2019:
PSX: Don't ignore the sample loop address set via ADPCM header when the loop address register was written only before the end of voice on startup delay.
Fixes sound effect glitches in "Re-Loaded: The Hardcore Sequel".
-- 1.24.0-UNSTABLE: --
December 19, 2019:
PSX: Handle SPU CD volume as signed 16-bit instead of unsigned; fixes lowest volume setting in "Star Wars Dark Forces".
December 18, 2019:
PSX: Tweaked PAL pixel aspect ratio, tweaked nominal FPS values, added setting "psx.correct_aspect", and fixed light gun Y positioning with PAL games.
December 16, 2019:
SNES-Faust: Added SDD-1 emulation.
November 26, 2019:
SNES-Faust: Allow emulation to switch away from the SPC700 during execution of opcode 0xFA, between the read and write, to fix bonkers
audio that leads to a hang in the "Tenshi no Uta" game.
SNES-Faust: Extended DMA NMI delay kludge to cover 8-bit LDX #imm to fix hang in "Frisky Tom" in "Nichibutsu Arcade Classics".
SNES-Faust: Added DSP-2 emulation.
November 19, 2019:
SNES-Faust: Added MSU1 support.
SNES-Faust: Added a multithreaded PPU renderer, controlled via the new "snes_faust.renderer" setting, disabled by default.
SNES-Faust: Added SuperFX overclocking support, controlled via setting "snes_faust.superfx.clock_rate".
SNES-Faust: Added SuperFX instruction cache emulation support, controlled via setting "snes_faust.superfx.icache", disabled by default.
SNES-Faust: Added support for Game Genie cheats(entered via Mednafen's cheat system).
SNES-Faust: Added setting "snes_faust.region" to allow for overriding the automatic region detection and emulating one region while reporting the different region to the game.
November 17, 2019:
On Windows, call CoInitializeEx() with COINIT_MULTITHREADED before calling SDL_Init(), to prevent potential initialization errors with Mednafen's
WASAPI sound code.
November 16, 2019:
Using drive-relative paths on Windows should no longer make a mess due to Mednafen looking for and putting files in the wrong place.
November 14, 2019:
SS: Removed "ss.midsync" setting; the functionality it controlled is now always enabled.
Added settings "affinity.cd", "affinity.emu", "affinity.video", and "ss.affinity.vdp2" to specify CPU thread affinity masks for the CD read threads,
main emulation thread, video blitting thread, and Saturn VDP2 rendering thread, respectively. Setting thread affinities properly can improve
Saturn emulation performance on a dual-core CPU with hyperthreading.
Cleaned up multithreading code and API.
November 10, 2019:
Removed "using namespace Mednafen;" from types.h, and related changes.
October 25, 2019:
SNES-Faust: Ignore frameskip if interlace mode is enabled, to avoid feeding uninitialized data into the deinterlacer which leads to a crash.
September 18, 2019:
Implemented workaround in OwlResampler_neon.inc for a C++ parsing bug in gcc 9.x.
September 13, 2019:
Apple2: Renamed(with backwards-compatibility aliases) video mode "rgb_alt1" to "rgb_alt" and "rgb_alt2" to "rgb_alt_tfr", and added new video mode "rgb_tfr".
Apple2: Added support for 32-color custom palettes(will automatically enable a text fringe reduction RGB mode if used).
-- 1.23.0-UNSTABLE: --
August 26, 2019:
Apple2: Added support for an RGB-style video mode, selectable with the new setting "apple2.video.mode".
SS: Added "Shunsai" to the internal database of games to use the data cache read bypass kludge with, to fix various graphical glitches.
August 25, 2019:
Expanded and harmonized the accepted value ranges for settings "sfspeed" and "ffspeed" to 0.25 through 15, for greater versatility.
NGP: Added very incomplete emulation of BIOS system call "VECT_FLASHERS", per tip from stellarporter. Fixes eventual hang in "The Last Blade".
NGP: Fixed TLCS-900H new IFF calculation when taking an interrupt, per tip from trinemark. Fixes broken voice playback in
"Densetsu no Ogre Battle Gaiden".
NGP: Fixed potential division by zero in the TLCS-900H MINC* and MDEC* instructions emulation(the emulation of the instructions is still almost certainly wrong,
though), per tip from byuu.
August 24, 2019:
PCE: Changed the Super CD-ROM^2 memory identification signature to match a Duo instead of a PCE with a system card, to fix compatibility
issues with some US Super CD-ROM^2 games when using a US system card image, per tip from elmer.
August 22, 2019:
SS: Added "Ronde" to the internal database of games to use the data cache read bypass kludge with, to fix missing graphics
on the title screen and main menu.
August 20, 2019:
SS: Added "Thunder Force Gold Pack 1" to the internal database of games to use the data cache read bypass kludge with,
to fix explosion graphic glitches in "Thunder Force III".
SS: Fixed a bug that could cause erroneous VDP1 framebuffer erasure when the lower Y coordinate for the erase window was too large.
August 12, 2019:
SS: Added "Thunder Force Gold Pack 2" to the internal database of games to use the data cache read bypass kludge with,
to fix quasi-random hangs when pausing the game in "Thunder Force AC".
SS: Corrected the value the SCU DMA mode registers are initialized to on reset.
June 18, 2019:
SS: Added "Formula Grand Prix - Team Unei Simulation" to the internal database of games to use the data cache read bypass kludge with,
to fix a hang after the title screen.
SS: Added "Virtual Mahjong" to the internal database of games to use the data cache read bypass kludge with, to fix graphical glitches on the character
select screen.
June 16, 2019:
SS: Slowed down SCU DMA from SDRAM/SH-2 bus slightly, though I'm not sure what is the origin of the measured overhead/slowdown on a Saturn.
Fixes FMV flickering in "Lunar".
SS: Added partial emulation(CS0 and CS1, SH-2 non-DMA accesses and SCU DMA accesses) of the timing effects of the SCU A-bus configuration registers.
SS: Added "Tech Saturn 1997.6" to the internal database of games for which 1MiB RAM cart emulation is enabled, for its "Groove on Fight" demo.
SS: Implemented a crude simulation of the VDP1 command execution slowdown that occurs when an SH-2 CPU writes to VDP1 RAM or registers, activated
via the horrible hacks mechanism; fixes text flickering in "Arcade's Greatest Hits", most rescue text flickering in "Burning Rangers"(at least on the first stage),
graphical glitches in "Whizz", and some of the graphical glitches in "All-Star Baseball 97".
SS: Added a horrible hack to fix the hang in "Fighters Megamix" that occurred after the intro FMV played(or was interrupted).
SS: Added a horrible hack to fix the hang at the end of disc 1 of "Grandia".
SS: Added a per-game horrible hacks mechanism.
SS: Added "Albert Odyssey" to the internal database of games to use full cache emulation with, to fix battle text truncation.
SS: Added "Die Hard Trilogy", "GeGeGe no Kitarou", "Nobunaga no Yabou Shouseiroku", "Space Jam" to the internal database of games to use full
cache emulation with, to fix hangs/crashes.
SS: Added "Gex" and "Slam 'n Jam 96" to the internal database of games to use full cache emulation with, to fix minor FMV glitches.
SS: Added "Policenauts" to the internal database of games to use full cache emulation with, to fix screen flickering on disc 2.
SS: Full cache emulation(enabled via database) now also enables emulation of SH-2 WB/EX pipeline stalls.
SS: Tweaked the kludgey CPU instruction read/write penalty during SH-2 DMA to be higher in some circumstances; fixes major graphical glitches in the
later stages of "Shienryu" when on arcade mode.
SS: Added "Dragon Force II" to the internal database of games to use the data cache read bypass kludge with, to fix major game logic errors
during battles.
March 15, 2019:
SNES-Faust: Added CX4, SuperFX, and SA-1 emulation.
SNES-Faust: Made various changes to try to improve game compatibility.
-- 1.22.2: --
April 23, 2019:
PSX: Fixed a regression introduced in 1.22.0-UNSTABLE that broke a few PS1 games(e.g. SimCity 2000 and Rise 2).
Fixed issues with inline functions in the QuickLZ code that could cause linker errors when compiling with optimizations disabled.
April 14, 2019:
Apple2: Added basic WOZ 2.0 disk image support.
April 13, 2019:
NGP: Fixed a sequence point rule violation that could cause "Gals' Fighters" to malfunction when Mednafen was compiled with clang,
per tip from stellarporter.
SS: Added the European release of "Theme Park" to the internal database of games to use the data cache read bypass kludge with,
to fix a crash/hang during the intro FMV.
Lynx: Fixed an old heap buffer overflow bug that could be triggered if the emulated game set up registers and RAM in a
certain way.
March 18, 2019:
PCE: Fixed an old bug(looks like from around a decade ago) in the HES playback code; it caused periodic high IRQ latency,
which resulted in timer IRQ-driven DDA playback sounding rougher than it should have.
-- 1.22.1: --
January 27, 2019:
Changed the default sound device for the OpenBSD sound driver from "/dev/audio" to "/dev/audio0".
January 26, 2019:
Semaphores are now implemented with condition variables and mutexes when compiling against a POSIX threads implementation without sem_timedwait().
January 23, 2019:
PC-FX: Replaced old RAINBOW IDCT code with newly-written code.
January 20, 2019:
Some hotkeys in the debugger's memory editor weren't being ignored properly when in text entry mode; fixed. (Regression introduced in 1.21.0-UNSTABLE)
January 1, 2019:
Apple2: Corrected minimum allowed value for the "apple2.video.mono_lumafilter" setting(was -2 when it should have been -3).
SS: Corrected line-scroll handling in double-density interlaced mode with non-zero LSS; fixes broken background graphics effect in Dural's stage in "Virtua Fighter 2".
SS: Added "Linkle Liver Story" to the internal database of games to use the data cache read bypass kludge with, to fix a crash/hang when going to the world map.
-- 1.22.0-UNSTABLE: --
December 11, 2018:
SS: Added support for directly loading <= 1MiB bootable cart ROM images, with the expected file extension being "ss", for debugging and testing
purposes.
December 2, 2018:
SS: Added "Fighting Vipers" to the internal database of games to use the data cache read bypass kludge with, to fix the problem of the
computer-controlled opponent sometimes losing the will to not be a statue.
December 1, 2018:
PSX: Memory cards are now backed up on startup(maximum number of backup copies kept for each memory card is 5).
November 30, 2018:
PCE: Increased CD read startup delay per tip from dshadoff. Fixes ADPCM voice playback issues in "Downtown Nekketsu Monogatari" when text
speed is set to fast.
MD: Fixed a few errors in the internal automatic multitap database, per tip from clobber.
SS: Added setting "ss.cart.auto_default".
NES: Removed apparently erroneous iNES header correction database entry for "Dragon Quest II" that was breaking the game.
November 6, 2018:
VB: Added the ability to toggle the state of the low battery sensor bit; configure the device on virtual input port 2(e.g. ALT+SHIFT+2) to assign a
key/button to this function.
November 4, 2018:
PSX: Added a pseudorandom component to Pause command timing to address loading-related hangs in "Colony Wars - Vengeance (Europe)"
and "Army Men - Air Attack (Europe)".
PSX: Generate a seek error if the tray is opened while the CD drive is not stopped; fixes broken disc switching in "Arc the Lad III".
November 3, 2018:
PSX: Improved emulation of the behavior of CDC command 0x0A per tests on a PS1; fixes hang in "Goryuujin Electro".
November 2, 2018:
PSX: Don't set the autopause track test value unless autopause is enabled; fixes missing music in "Pitball".
PSX: Delay first CD-DA report after playback begins, per tests on a PS1; fixes missing music in "Roswell Conspiracies - Aliens, Myths & Legends".
October 31, 2018:
PSX: Improved timing of CDC command 0x0A per tests on a PS1; fixes missing music and hangs in "Grind Session".
PSX: Altered seek and pause timing and behavior per tests on a PS1; fixes hangs in "Incredible Crisis", "Ballerburg - Castle Chaos", "Transformers - Beast Wars Transmetals",
and "Simple 1500 Series Vol. 057 - The Maze".
October 28, 2018:
The settings management code will now throw an exception if a floating-point setting is NaN.
Fixed a crash that occurred when "debugger.autostepmode" was set to "1" and a game was loaded for a system for which debugger functionality was not implemented.
NativeVFS, FileStream, and GZFileStream methods taking a path will now throw an error when the path contains a null character.
October 23, 2018:
SNES-Faust: Added recognition of files with "fig" and "swc" file extensions as SNES ROM images.
October 9, 2018:
Altered the variants of MDFN_rtrim(), MDFN_ltrim(), MDFN_trim(), MDFN_zapctrlchars(), MDFN_strazlower(), MDFN_strazupper(), and UTF8_sanitize()
that operate on a mutable std::string to take a pointer to the std::string instead of a non-const reference, and added variants that take a const std::string
reference and return a std::string result.
October 8, 2018:
Dropped support for "game set" hashes used to change the naming of save state and save game files. The feature was mostly broken by changes made years ago,
and is redundant now with M3U support. Save game files for multi-disc PC-FX games created in previous versions of Mednafen will need to be renamed to be
seen by this and newer versions of Mednafen. Other files, including save states, should generally be unaffected, unless the user has changed filesys.fname_*
settings to use the %F specifier where they wouldn't by default.
Removed usage of the deprecated "register" keyword in some old code.
October 7, 2018:
Adjusted placement of MDFN_FASTCALL and NO_INLINE to fix some compilation errors with MSVC.
In addition to nonvolatile memory backup files as before, any missing directories in the file path for input-recording movies, save states, screen snapshots, and
nonvolatile memory files are now created as necessary, to increase the versatility of the filesys.fname_* settings.
October 6, 2018:
Implemented partial virtual filesystem support via classes VirtualFS, NativeVFS, and ZIPReader.
Emulation modules' loading of files referenced from the main file being loaded is now done through its associated VFS. This does create a
small backwards-compatibility issue with PSF-family(PSF, SSF, GSF, etc.) files, in that previously a ZIP'd PSF-family file that referenced
a library file would have the referenced file loaded from the directory containing the ZIP file, but now will
have it loaded from within the same ZIP file.
October 4, 2018:
NGP: Replaced min/max macros with usage of std::min/std::max.
September 30, 2018:
Modified usage of std::swap in OwlResampler.cpp to not explicitly(and unnecessarily) specify the template argument, to fix a compilation error on MSVC.
Reworked FileStream.cpp to fix some issues causing errors on MSVC.
GBA: Fixed a regression introduced in 0.9.47 that partially broke compatibility with save states created in previous versions(< 0.9.47), while
preserving compatibility for save states created in versions between and including 0.9.47 and 1.21.3.
September 29, 2018:
SNES-Faust: Added RAM cheat support(main WRAM only for now).
SNES-Faust: Added emulation of PPU-area open bus/bus read latches; fixes missing sprites in the water stage of "Mario's Time Machine".
SNES-Faust: Corrected H/V latch reading to use two separate high/low byte toggles.
September 24, 2018:
SNES-Faust: Made minor changes to the CPU emulation core to not require computed goto support in the compiler.
September 23, 2018:
Added "blend" and "blend_rg" deinterlacers.
Moved multithreading management code into the core.
Encapsulated most(ish) core Mednafen code in the "Mednafen" namespace.
Slightly improved the quality of audio output by SwiftResampler when running at the higher quality settings.
September 22, 2018:
Moved NES audio resampler so it can be used by any emulation module, and renamed it to "SwiftResampler".
Added an SSE intrinsics-utilizing MAC loop to OwlResampler as a fallback(for the inline assembly) when compiling with MSVC.
Added an SSE2 intrinsics-utilizing MAC loop to SwiftResampler as a fallback(for the inline assembly) when compiling with MSVC.
September 21, 2018:
Wrote new Kaiser-windowed sinc generation code, and modified OwlResampler and the NES resampler to use it. It shouldn't have any particularly noticeable end-user
effects, other than slightly different startup performance(assuming no mistakes were made :p).
September 11, 2018:
SS: Emulated input devices' internal states were not being reset on virtual power toggle; fixed.
September 5, 2018:
SS: Reorganized SCSP DSP emulation code to make the lifetime of variables clearer, for a possible x86_64 dynarec in the future.
August 30, 2018:
Modified SHA-256 hashing code to allow for piecemeal hashing of data, instead of requiring the hash to be generated from one contiguous
chunk of memory.
August 8, 2018:
PSX: Fixed a startup crash that could occur with a malformed or corrupted SYSTEM.CNF file.
July 31, 2018:
Replaced MD5 hashing code with newly-written code.
July 29, 2018:
Replaced SDL threading code with new code that uses pthreads directly.
July 28, 2018:
Replaced Q subchannel CRC16 calculation code from cdrdao with newly-written code.
July 24, 2018:
gzip-compressed ROM/disk image files are now recognized by file extension instead of header magic.
June 13, 2018:
SS: Fixed an emulation inaccuracy with the handling of the SH-2 "mac.l" instruction when saturation is enabled, per tests on a SS.
-- 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.