forked from SpecialKO/SpecialK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG.txt
10064 lines (7697 loc) · 369 KB
/
CHANGELOG.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
24.5.1
======
+ Changed default HDR Color Boost to 50%
+ Update various HDR and input management tooltips for clarity
+ Added UI to configure PlayStation special button (e.g. touchpad click)
key bindings.
+ Added "Disable RGB Lighting" option for DualShock 4 / DualSense controllers
+ Added support for environment variable-defined framerate limits
SK_FPS_LIMIT=...
This value will be forcefully applied and immutable, and will not be written
to INI when game exits.
24.4.29.3
=========
+ Added user-configurable XInput deadzone for PlayStation controllers
>> Default: 5% (likely too small if a game actually needs this)
24.4.29.2
=========
+ Extend HDR Gamut Expansion slider to 20%
+ Re-word AVIF encoding disclaimer to reflect recent changes in
Windows support for 4:2:2 and 4:4:4 10- and 12-bpc AV1 images.
24.4.29.1
=========
+ Added 1 frame delay to achievement unlock screenshots
24.4.29
=======
+ Fixed temporary HDR mode not working after the SDR whitepoint option
was added (24.4.19.1).
24.4.28.6
=========
+ Apply Rec 709 clamping whenever Perceptual Boost is enabled
24.4.28.5
=========
+ Set 33% Color Boost in default HDR profiles
+ Clamp non-native scRGB inputs to Rec 709
24.4.28.4
=========
+ Slightly optimized Perceptual Boost by removing Rec 2020 color clamp.
+ Changed Color Boost to a mix between Pure Luminance and Pure Chrominance
implementations of Perceptual Boost.
>> A new slider controls the weighting between Luminance and Chrominance
* 0.0% and 100.0% are highest performance, since they only run PB once
24.4.28.3
=========
+ Apply non-Color Boosted Perceptual Boost in Rec 2020 colorspace
+ Fixed Reset button in HDR widget not using the same default values as
used during initialization on first run.
24.4.28.2
=========
+ Default "Color Boost" to off, and use 112.5% saturation as default now
+ When toggling "Color Boost," raise or lower default saturation if applicable
24.4.28.1
=========
+ Added option to apply Perceptual Boost to Chroma (Default) or Luminance
>> New option is called "Color Boost" when Perceptual Boost HDR is enabled.
24.4.28
=======
+ Moved various Bluetooth settings for DualShock 4 / DualSense controllers to
the "Compatibility Options" section of the gamepad control panel.
>> Functionality SK cannot use while Bluetooth is in Compatibility Mode:
Latency Measurement
Battery Levels
Mute Button (DualSense [Edge])
Paddle Buttons (DualSense Edge)
Function Buttons (DualSense Edge)
LED Color
Rumble
DualShock4 v2 (-ALL- features)
Compatibility mode exists because older DirectInput-based games only work
w/ these controllers in Bluetooth mode if the functionality above is not
used at any time after powering the controller on.
* If you do not require compatibility with very old games or the ancient
joy.cpl control panel that ships with Windows, you are encouraged to
select "Always Enable Full Capabilities in Bluetooth."
+ Changed "Always Enable Full Capabilities in BT" to a global setting.
+ Only take achievement unlock screenshots for actual achievement unlocks
(i.e. ignore percentage updates for Steam achievements with n/m progress).
+ Added support for achievement popups in Epic Game Store games.
+ Fixed width on achievement popups aligned to the left side of the screen.
+ Set the window title of SK's Aspect Ratio Background to match a game's main
window so that Discord does not get confused and display the wrong name.
24.4.26
=======
+ Do not display battery level warnings on DualSense controllers in DualShock 3
mode connected over Bluetooth, because the data is invalid garbage left in
the Windows HID driver from the last time the controller was in full mode.
24.4.25.2
=========
+ Auto-identify SONY PlayStation controllers as the base model in Unity engine
games because they often cannot recognize newer models.
+ Auto-identify DualShock 4 v2 controllers as DualShock 4 to Arkham Knight
+ Added Compatibility Options section to control panel for PlayStation
controllers, where alternate controller identification can be configured.
+ Changed controller identification override INI settings to an integer:
-1=No Preference (Default)
0=Do Not Apply
1=Apply
>> This is necessary so that auto-enabling the feature for specific engines
is possible, and users can reverse the auto-enable decision.
* Auto-enablement only applies if -1 is set.
24.4.25.1
=========
+ Adjust timing on Epic Game Store Achievement screenshots to catch
the EOS unlock graphics
+ Place EOS achievement screenshots in Achievements\ subdirectory as
done with Steam achievement screenshots
24.4.25
=======
+ Added named achievement screenshots for Epic Game Store games
+ Disabled SteamAPI integration in Yakuza 0 by default
24.4.24.5
=========
+ Correctly disable HID output reports for non-Bluetooth devices when
HID hooks are disabled.
24.4.24.4
=========
+ Disable DualShock 4 v2 controllers running in simplified Bluetooth
mode.
24.4.24.3
=========
+ Added option to enable full DualShock4 / DualSense capabilities over
Bluetooth even if a game has not yet put the controller in that mode.
24.4.24.2
=========
+ Added bulletpoint explaining why some DualShock4 / DualSense features
no longer work over Bluetooth.
24.4.24.1
=========
+ Do not use haptics or LEDs on Bluetooth PlayStation controllers until a
game first uses rumble, or if the controller is already in
DualShock4/DualSense mode.
24.4.24
=======
+ Added stupid hack for systems with broken PresentMon running D3D12, where
VRR status cannot be determined. VBlank rate < Reflex rate is assumed
VRR active.
24.4.23.5
=========
+ Prevent setting LED color in DualShock 3 Bluetooth Compatibility mode on
DualShock 4 controllers.
24.4.23.4
=========
+ Slim down NVSDK_NGX_Parameter_GetI_Detour hook, it does not work correctly
for DLSS resolution scaling.
+ Prevent crashing if DLSS text OSD is enabled, but game has not yet
fully initialized DLSS.
24.4.23.3
=========
+ Add option to report v1 DualShock 4s as v2, disabled by default because it
will break games.
24.4.23.2
=========
+ Do not block gamepad/keyboard input (unless set to always disable) during
the first frame drawn.
>> Helps some Unity games w/ HID gamepad initialization.
24.4.23.1
=========
+ Do not hook NVSDK_NGX_D3D12_GetFeatureRequirements or
NVSDK_NGX_D3D11_GetFeatureRequirements unless DLSS feature support
spoofing is enabled, because the APIs will not return correct values
if NGX detects they have been hooked.
24.4.23
=======
+ Added options to identify DualShock 4 v2 and DualSense Edge controllers
to games as DualShock 4 and DualSense respectively, for games that
understand the general DualShock4 / DualSense protocols but are too
old to recognize the newer model.
[Input.libScePad]
IdentifyDualShock4v2AsDualShock4={true|false} Default: true
IdentifyDualSenseEdgeAsDualSense={true|false} Default: true
This feature is enabled by default since the communication protocol
between these different models is the same, and games generally do
not make use of special features like DualSense Edge's paddles.
24.4.21
=======
+ Added hooks on NGX Get/SetULL, GetI, SetD for DLSS completeness
+ Apply analog input deadzone to idle controller determination, even if
deadzone is not being applied to input readings sent to games.
+ Reverted default Forza Horizon 5 settings to workaround anti-debug.
24.4.20.2
=========
+ Fixed AVIF HDR screenshots with content that exceeds 10k nits or
125.0 (scRGB) in a single color channel producing inverted color.
24.4.20.1
=========
+ Fixed rare ImGui color overflow if gamepad capture status changes
in the middle of drawing the control panel's input management tab.
+ Give Windows Media Foundation (HW video acceleration) surfaces a
fast-path that avoids texture caching hooks in D3D11.
+ Added DLSS config parameter to spoof HW feature support for some
broken DLSS implementations (i.e. Harold Halibut's Unity DLSS).
[NVIDIA.DLSS]
SpoofFeatureSupport={true|false} Default: false
* Only works for D3D11/D3D12, SK ignores broken Vulkan stuff :)
24.4.20
=======
+ Merge pull request #165 from audaki:fix-hdr10-gamut-visualizer
* Fix hdr10 gamut visualizer
+ When enabling HDR image processing on native HDR games, processing
will now stay enabled on future launches. Making it easier to
do simple fixes like rescale maximum luminance without ReShade
+ Made Resizable BAR easier to right-click in Display menu
24.4.19.3
=========
+ Add current game's relative executable path to DRS profile on NVIDIA
GPUs if the fully-qualified path is not present when attempting to
read a driver setting DWORD.
24.4.19.2
=========
+ Added Resizable BAR status to Display menu on NVIDIA GPUs
>> Setting can be changed (per-game) by right-clicking it
24.4.19.1
=========
+ Added SDR White Level slider to the control panel's Display menu
>> This sets the OS SDR white level for the current display
+ Automatically apply system SDR white level preference at game start
>> Fixes bug in Windows caused by OpenGL and Vulkan apps setting SDR
white level to 80.0 nits temporarily and never restoring it at exit.
24.4.19
=======
+ Allow XInput emulation setting to apply even for real Xbox controllers
in games that use Windows.Gaming.Input. This allows background input,
which is impossible in the native UWP API.
+ Reduced the strictness of Rec 2020 color clamp and limit FP16 black pixel
fix logic only to -pure- black pixels, not pixels that have one or two
~0.0 color channels.
>> Should improve appearance and gradiation of highly saturated colors
24.4.18
=======
+ Merge pull request #164 from audaki:main
* Fix gamut visualizers
+ Dump textures with actual names to subdirectories honoring their name,
to make working with named textures simpler.
+ Prevent selecting 11-bpc Render Pass Remastering in Tales of Arise
+ Ignore Windows Media Foundation D3D11 devices for video playback in games.
+ Improved support for Windows.Gaming.Input emulation, includes rumble
and secondary trigger rumble (impulse trigger) data is added as
additional mild rumble.
>> Will attempt to simulate the secondary trigger rumble using haptics
waveform stuff in the future, current solution is adequate.
24.4.17.3
=========
+ Added full support for HDR remastering in Harold Halibut, with
the exception of 8-bpc Compute Shader Passes.
24.4.17.2
=========
+ Added OBS's hook caching executables (get-graphics-offsets{32|64}.exe)
to SK's internal injection blacklist.
+ Added support for XInput Emulation for PlayStation controllers in games
that use Windows.Gaming.Input (mostly Microsoft Store games).
>> The Windows.Gaming.Input API is not currently emulated, instead this
causes games to resort to XInput fallback code...
This means a few Windows.Gaming.Input features (i.e. Impulse Triggers)
for real Xbox controllers will not work.
* The plan is to eventually emulate the Windows.Gaming.Input API proper,
and translate Impulse Triggers to DualSense Force Feedback Triggers.
24.4.17.1
=========
+ AutoVRR re-application no longer requires having the control panel open
24.4.17
=======
+ Added feature to reapply AutoVRR optimization if the display device or
its refresh rate change after the framerate limit was originally setup.
+ A global policy controlling whether AutoVRR is reapplied has been added
to the AutoVRR config menu (policy is on by default).
+ If AutoVRR is not set to re-apply, a warning icon will be shown next to
the framerate limit slider to indicate it was set when the display had
different settings.
+ Added a notification toast to indicate when AutoVRR has been applied.
24.4.16
=======
+ Fixed ImGui color stack overflow when displaying Frametime Method tooltip
24.4.15.3
=========
+ Added warning dialog if SK is injected into a D3D10 game; standard Windows
MessageBox, since SK cannot draw anything in D3D10 :)
+ If SK is injected into two or more games at once and one of the games is
currently in the foreground, gamepad input will be blocked to the
games running in the background.
+ Added mechanism to disable VRR while SK is applying a background FPS limit,
so that the game does not cause all applications on the system to run at
a low framerate.
>> It is critical that you never force VSYNC on in driver settings, or
applications that want to opt-out of VRR will be unable to and they
will harm the performance of all other applications on the system.
24.4.15.2
=========
+ Added Auto Exposure to DLSS control panel
+ Hide Auto Exposure and Alpha Upscaling overrides unless the game uses them,
or they were already forced on/off in SK's INI for the current game
24.4.15.1
=========
+ Removed option to force DLSS Alpha Upscaling -On- in DLSS 3.7.0, only
forcing it Off or not overriding it at all are valid options.
+ Added options to use UNORM rather than FLOAT Render Targets for HDR remastering
>> Right-click the HDR widget
24.4.15
=======
+ Removed ImGui nav focus on plot widgets (i.e. Framepacing Graph) when using
keyboard or gamepad in the control panel
+ Condensed Frametime calculation selection in advanced Framerate Limiter view
+ Blacklist openxr_load.dll while SK is injected into games, because it will
deadlock when the game exits. It's optional and for VR, so not a big deal.
24.4.14
=======
+ Fixed incorrect battery level for DualShock 4 Bluetooth controllers
+ Added support for binding DualShock 4 trackpad click to keyboard input
+ Correctly handle DualSense (Edge) / DualShock 4 macro binds when multiple
gamepads are connected or if the same gamepad is connected via USB and Bt
24.4.13.4
=========
+ Fixed unintentional repeated keyboard input if a gamepad button -> key
binding is held for more than a couple of frames
+ Only send KeyUp notifications for bound gamepad buttons when transitioning
from down to up (duh?)
+ Give gamepad -> keyboard input synthesis a dedicated thread in order to
avoid synchronous OS input queue work on render/game-critical threads.
24.4.13.3
=========
+ Added sanity checks for CPU/GPU/Disk update intervals in case INI files
have acquired values of 0.0; Sane Range = [0.125,2.5] (in seconds).
+ Turned XInput deadzone compensation -Off- by default, only a handful of
games actually need this... and it makes those that don't harder.
24.4.13.2
=========
+ Achievement popups no longer steal input focus away from the control panel,
and always raise their popup over top any widgets below them.
+ Fixed several menu items in the Control Panel that might not be selectable
using a gamepad or keyboard (i.e. "File | Exit" and Latency Analysis).
24.4.13.1
=========
+ Improved support for ReShade overlay while SK is blocking keyboard input
+ Improved handling of DualSense Edge macro keybinds
+ Added TouchpadClick macro binding for DualSense + DualSense Edge
24.4.13
=======
+ Removed unnecesary load of dxgidebug.dll when user did not request
SK's D3D11/12 debugger.
24.4.12.4
=========
+ For users using the default Steam Overlay, ReShade and Epic Game Store
overlay activation keybinds (Shift+Tab, Home, Shift+F3), SK always
allows these button combos to pass-through and activate the overlays.
+ Added support for activating gamepad button -> keyboard bindings even when
a user has disabled keyboard input to the game.
>> Gamepad generated kbd input will pass-through the normal input blocking
+ Added implicit Latency Waitable SwapChain support to D3D12 games that do
not use the feature; since it is not possible to control device latency
in D3D12 (only SwapChain latency).
24.4.12.3
=========
+ Disable Mipmap Generation on BC6H or BC7 textures, it's -too damn slow-!
+ Preliminary support for narrowing down the textures shown in the D3D11
Render Mod Toolkit based on resolution, format, mipmaps, usage, etc.
24.4.12.2
=========
+ DualSense Edge users can now bind the Left/Right Function buttons and
Left/Right Paddles to a single button on your keyboard.
(e.g.)
[Input.libScePad]
LeftFunction=F5
RightFunction=F6
LeftPaddle=Tab
RightPaddle=Enter
This applies to individual game INIs, and is not stored in Global/input.ini
* Future versions will allow multiple keys to be bound, or instead of
creating keyboard input, send a command to the command console.
24.4.12.1
=========
+ Added explicit wait for frames drawing an achievement popup to finish
GPU-side before unloading the achievement icon; stability improvement.
24.4.12
=======
+ Disabled redundant mode change skip code if NV's Streamline Interposer
is loaded. (Helps prevent crashes in Horizon: Forbidden West (Steam))
+ Remove code that prevents games that natively use a Latency Waitable
SwapChain from using IDXGISwapChain::ResizeTarget (...).
+ Extended the range of the FPS limit slider to 1.25x Refresh Rate
+ Revert parts of battery level measurement changes from 24.4.11
24.4.11.1
=========
+ Added more logging if achievement statistics are not working because of
server-side problems on https://backend.special-k.info
24.4.11
=======
+ Improved PlayStation controller battery measurement;
Percentage = 3.1 fixed-point instead of Percentage = Level/0xA
+ Made PlayStation controller critical battery level a user-configurable
setting (right-click the Bluetooth PlayStation controller battery).
+ Battery level warnings will go away after plugging the controller in.
24.4.6.1
========
+ Improved fit of Alpha Upscaling override option in control panel, and
add indicator for its current state.
24.4.6
======
+ Changed description of DLSS Preset E from Invalid to (DLSS 3.7.0+)
+ Added option to force alpha upscaling on/off if DLSS 3.7.0 is present
24.3.30.1
=========
+ Permit local injection in Ratchet and Clank, as it no longer crashes the game's
launcher for the CreateDXGIFactory mismatch issue mentioned in 24.3.30.
* Turning HDR on/off using local injection will still crash the game, so it is
not suggested if you have an RTX 4xxx GPU (Streamline issue).
24.3.30
=======
+ Fixed NVIDIA Reflex not working in Ratchet and Clank without an injection
delay because the game uses multiple API versions of CreateDXGIFactory;
all calls will now forward through to CreateDXGIFactory2
+ Permit local injection for Horizon: Forbidden West even if Streamline is not
disabled.
24.3.29.1
=========
+ Fix potentially leftover ReShade.ini files in game's working directory if
ReShade DLL is loaded as a plug-in but does not cleanly unload.
+ Disable NvAPI_Mosaic_GetDisplayViewportsByResolution API calls because they
take 300 ms to return for each monitor installed in Nixxes games and are
called during startup and every time you open graphics settings.
24.3.29
=======
+ Prevent delayed global injection if the 64-bit Epic Overlay is loaded,
because Epic's overlay will deadlock in its LoadLibrary hook.
24.3.28.1
=========
+ Attempt yet more fixes for Nixxes Streamline / DLSS-G problems, if in doubt
always delete sl.dlss_g.dll from a Nixxes game and avoid Frame Generation.
>> 0.01 ms injection delay re-introduced to Nixxes games if sl.dlss_g.dll
is loaded; note that this will cause RTSS to crash Ratchet and Clank.
>> Give user error message if local injection is attempted in a Nixxes
game that uses Streamline and either sl.interposer.dll or sl.dlss_g.dll
have not been deleted.
24.3.28
=======
+ Added DLSS options to text OSD
24.3.27
=======
+ Fixed Plug-In install path tooltip only printing first character in a path
because std::filesystem::path (path).c_str () returns wchar_t*
24.3.26.3
=========
+ Fixed various issues with the keyboard and gamepad control panel directions
in the startup banner depending on the current input devices present
24.3.26.2
=========
+ Added 2 pixel DLAA compat hack default settings for Dragon's Dogma 2
24.3.26.1
=========
+ Fixed Reflex breaking in Horizon Forbidden West and various Nixxes games
24.3.26
=======
+ More fixes for Nixxes Streamline implementation, in particular their launcher
which loads sl.interposer.dll, but does not initialize it and then crashes
24.3.25.2
=========
+ Disabled unfinished Shin Megami Tensei 2 plug-in
24.3.25.1
=========
+ Added warning to DLSS section of control panel if DLSS frame generation may
be b0rked in a game because the Streamline Interposer was loaded before SK
>> Frame Generation generally works in these scenarios, but the reported
framerate will be the real framerate rather than generated framerate,
and SK's UI will be completely screwed up.
* SK HDR (non-native) cannot be used without flickering if this happens
-- Tooltip explains possible solutions...
24.3.25
=======
+ Improved compatibility with some HDR native games using DLSS-G
+ Improved compatibility with Nixxes DLSS3 Frame Generation games
+ Global injection delay no longer necessary in Horizon Forbidden West
+ If HFW crashes when turning on HDR (Epic version), try deleting the
Epic Overlay DLL as instructed in startup notification
24.3.24.1
=========
+ Changed "Frametime Method" setting in Control Panel to "Graph Measurement"
to avoid implying any affect on the behavior of SK's framerate limiter.
+ Freed references to SK's own DLL acquired using GetModuleHandleEx (...) during
CBT hook initialization and shutdown.
24.3.24
=======
+ Added 1 ms global injection delay to Horizon Forbidden West to make it work
with Nixxes' wonky Streamline code if the Epic Overlay is turned off.
24.3.23.3
=========
+ Fixed HDR10 HDR->SDR screenshot tonemapping applying Rec2020 twice in D3D12
+ Corrected hue shift on colors wider than Rec 709 when saving scRGB AVIF
screenshots
* Microsoft Edge now supports AVIF, and Windows can properly decode 4:2:2
and 4:4:4 encoded screenshots w/ appropriate updates to AVIF codec.
Tooltip left unchanged because it is unlikely most users have received
the necessary update to handle 10- and 12-bit 4:2:2 / 4:4:4 content.
-- Eventually, those will be portable high-quality encodings :)
24.3.23.2
=========
+ Load Horizon Forbidden West HDR Fix earlier to workaround Steam DRM
+ Corrected internal DLSS resolution reporting in Nixxes games
24.3.23.1
=========
+ Default Auto VRR Optimization to enabling VRR Optimized Framerate Limiter
>> Before, it would only do so for Ultra Low Latency (not default).
+ Changed Ultra Low Latency to only control Reflex Boost by Latency Markers
+ Changed VRR Bias to: Optimal VRR (Reflex Rate) - 0.5% instead of + 0.1 FPS
+ Clicking VRR Bias in the Framerate Limiter section will now immediately
engage the closest VRR Bias'd rate if framerate limiting is enabled.
+ AutoVRR mode will automatically engage and lower the framerate limit if
the limit is set higher than refresh, even if AutoVRR already triggered
one time.
24.3.23
=======
+ Replaced "Start-to-Start" frametime mode with a frametime method setting
+ Frametime measurement method is now a global setting
+ Added "Frame Pace" to frametime measurement method and made it the default,
to use SK's framerate limiter delay point as the frame interval timing
point.
+ When "Frame Pace" is selected, but the limiter is not enabled, frametime
measurement will implicitly use "Start-to-Start" now.
+ Moved the Frametime Method setting underneath framerate limit in Advanced.
24.3.22
=======
+ Merge pull request #153 from Nustat0:fix-empty-api-name
* Update Active API if its name is empty
+ Integrated Ersh's Horizon Forbidden West HDR fix and updated it for
Steam -and- Epic versions of the game.
24.3.21
=======
+ Fixed implicit frametime sample collection done in framerate limiter wait
function when start-to-start mode is turned off.
>> Sampling is always done in the Present hook now, either before the
real Present function is called, or before the hook returns.
* VRR optimized mode is applied post-present and thus would sample from the
same side of the Present call whether start-to-start was enabled or not
24.3.19
=======
+ Apply fake HID device removal + arrival compat hack only to SDL games
+ Reduce the VRR refresh rate update frequency to make it easier to read
24.3.18.5 ( Rant on Display setting that warrants explanation )
=========
+ Removed unintentional Auto-VRR Optimization on forced G-Sync status check
>> NOTE that Auto-VRR Framerate Limiter optimization does not work on
NVIDIA systems if the "Display G-Sync Status" option is turned off.
* That option exists historically because G-Sync status APIs in NvAPI have
wonky performance overhead because SK is among the only software to
ever use the driver API to check VRR status in D3D9/D3D11.
[ The unpredictable overhead is a non-issue in modern versions of SK... ]
Fun fact: NVIDIA did not even know who was responsible for maintaing
that part of NvAPI when we discussed implementing it for
D3D12/Vulkan/GL.
NV opted to create an entirely new API (rofl) instead of extending the
original one to support D3D12/Vulkan. SK has had enough time working
with their new API to iron out its performance overhead as well,
so the setting is largely irrelevant.
Tl;Dr: "Display G-Sync Status" is somewhat of a misnomer and turns off
various NVIDIA VRR-related functionality as opposed to simply
not showing you this status in the control panel.
24.3.18.4
=========
+ Added current VRR refresh rate to NVIDIA Latency Analysis section.
+ Removed the button to trigger Reflex Latency Analysis flash for displays
that support the feature since it requires GFE overlay integration.
+ Terminate HID Input/Output threads rather than using normal thread exit,
because pending overlapped IO may cause TLS-related crashes on DLL unload.
>> Hacky solution, but these threads live for the entire lifetime of the DLL
and the DLL only unloads at application exit; skipping cleanup to avoid
a crash is harmless.
24.3.18.3
=========
+ Fixed issues with "Continue Rendering" not working in SDL games because hooks
on GetFocus (...), GetForegroundWindow (...), GetActiveWindow (...) and
GetGUIThreadInfo (...) were returning the game's window handle before SK
was fully initialized.
+ Disable DirectInput in Ni No Kuni 2 because it will crash if it encounters a
DualSense controller and attempts to read it using DirectInput.
+ Register the SK_HID_Listener class using a unique window class name per-process
so that it window class registration will never fail.
+ Extend HID input blocking to GetRawInputData
24.3.18.2
=========
+ Fixed potential imaginary numbers in VRR VBlank counter in 32-bit builds on
the first frame drawn, and then compounded into a rolling-average that stays
imaginary.
24.3.18.1
=========
+ Add effective VRR Refresh Rate to text OSD if VRR Compact mode is enabled or
if G-Sync status is enabled and detailed framerate stats are enabled.
24.3.18
=======
+ Support latency measurement on DualShock 4 controllers
+ Improved analog deadzone handling on DualShock 4 controllers
+ Added Gamepad Chord Button tooltip explaining all the default bindings
24.3.17.3
=========
+ Moved the PlayStation battery indicator to polling rate / latency line
>> Power-saving mode (DualSense) is now accessed by right-clicking battery
+ Moved the Guide/PlayStation button options to a single shared setting
+ Xbox and PlayStation controllers can simultaneously share slot 0 now, based
on which controller has had the most recent input.
>> The XInput API activity light will show the PlayStation logo when PS is
overriding Xbox.
24.3.17.2
=========
+ Fixed potential unclean DLL unload caused by HID Input Report Consumer and
Output Report Producer threads sleeping on I/O failure during DLL unload.
24.3.17.1
=========
+ Reset all internal device state after reconnecting PlayStation controllers
+ Gave PlayStation controllers more descriptive names rather than using the
USB/Bluetooth name SONY assigned them
+ Added gamepad serial # tooltip to PlayStation controller list
+ Fixed mute button not working on DualSense controllers
24.3.17
=======
+ Added Gamepad Chord Input (Guide button) support for Xbox controllers
+ Added bullet-point to Protocol / Device Name list to denote the
PlayStation controller with the most recently polled input state.
+ ALL PlayStation controllers will now rumble while XInput Mode is on
+ Control panel is now useable with PlayStation controllers while a real
Xbox controller is plugged-in on slot 0.
>> If a PlayStation controller is connected, PlayStation XInput Mode
will always hide native Xbox controller 0 from the game.
* A mode to fuse Xbox and PlayStation into a single virtual controller
that games read on slot 0 like SK does for its own UI is planned.
24.3.16
=======
+ Added Protocol, Device Name, Latency and Active Report Rate info
to the control panel for supported PlayStation controllers.
24.3.15.2
=========
+ Continue calculating VRR refresh rate even if the Framerate Limiter
heading in the control panel is not expanded.
+ Add preliminary infrastructure for measuring HID device latency on
devices that support Input/Output timestamps (i.e. DualSense).
24.3.15.1
=========
+ Fixed SDL not picking up the first digital input after a deadzone'd
analog input was not translated to XInput.
24.3.15
=======
+ Smooth VRR VBlank rate calculations slightly to avoid unreadable jumps
+ Added XInput deadzone filtering (on by default) to XInput emulation for
PlayStation controllers because some SDL games do not handle deadzone.
24.3.14.2
=========
+ Added VRR scanout rate to Control Panel's GSync Status for NVIDIA users
24.3.14.1
=========
+ Only write HID Output Reports (rumble, lights, powersave mode) when
the data between two consecutive calls to write_output_report (...)
actually have new info to send to a PlayStation controller...
24.3.14
=======
+ Added new option to control the size of HID's input queue to assist
games that use native DualShock/DualSense w/ latency reduction.
>> Reduced circular queue depth to 3 from OS default of 32; missed inputs
are theoretically possible at very low framerates.
DS4Windows already uses a -0- buffer queue by default, so SK will
cause no more dropped inputs than DS4Windows or Steam Input do.
+ New option technically works for all HID devices, but many games do
not use HID and instead use Steam Input; setting does not apply.
* The option -DOES- apply to SK's own XInput Emulation, however.
24.3.13.3
=========
+ Moved the start-of-frame event marker to the very end of Present, after
any driver latency markers, etc.
24.3.13.2
=========
+ Fixed spacing issue on Frame Start-to-Frame Start checkbox if framerate
limiter is not enabled.
+ Added additional tooltip detail to Frame Start-to-Frame Start
+ Added sanity check for games making excessively long calls to Sleep
24.3.13.1
=========
+ Added Frame Start-to-Frame Start frame time measurement to make SK
more consistent with new PresentMon and RTSS methodology.
>> This setting can be found under: Framerate Limiter | Advanced >
* Has not been tested in all combinations of APIs and layered
APIs (GL/Vulkan/D3D9/DXGI) -- Pure D3D11/12 is well-tested.
24.3.13
=======
+ Added support for int64 command console variables
+ Added support for powering-off specific Bluetooth HW Addrs instead
of ALL controllers
+ Improved support for connecting the same gamepad using Bluetooth and
USB simultaneously
24.3.12.1
=========
+ Merge pull request #150 from Nustat0:d3d12-32bit-fixes
* Fixed some checks that prevented 32-bit D3D12
+ Merge pull request #144 from Nustat0:dgvoodoo-interop
* Detect D3D8/DDraw/Glide in SK_dgVoodoo_CheckForInterop (...)
24.3.12
=======
+ Fixed RawInput device registration flags causing no Mouse and Keyboard input
in Planet Coaster
+ Compatibility hack for Wrath: Aeon of Ruin to delay window activation
+ Remove unnecessary synchronous INI write when changing HDR tonemap mode
24.3.11.2
=========
+ Added tooltip text explaining the XInput latency test only applies to
third-party drivers and cannot be used to test SK's own latency
(as it would always be 0).
+ Write HID output reports to (wired) PlayStation controllers if an
RGB / Mute LED override is active instead of waiting for first vibration.
24.3.11.1
=========
+ Fixed LED brightness reverting to Mid when override is turned off and on
+ Clear PlayStation controller rumble when exiting a game so that it does not
sustain the vibration until the controller eventually stops on its own.
24.3.11
=======
+ Remember LED brightness and color settings for DualShock4/DualSense
controllers when toggling the override off.
+ Add support for writing neutral input values when blocking DualShock4 input
to games (wired-only).
(Previously it would reuse the last input data, which often includes
the buttons you used to toggle the control panel)
24.3.10
=======
+ Improved gamepad compatibility with Wrath: Aeon of Ruin
+ Added 15 frame device refresh timer in case SK was injected after a game
setup its HID devices and SK would otherwise not be able to control them
24.3.9.1
========
+ Removed yet more CAPCOM log spam
24.3.9
======
+ Remove assertion on CancelIoEx (...) when responding to HID device removal
+ Added code to prevent logging per-frame HDR support checks (ugh) in CAPCOM
games.
24.3.4.1
========
+ Fixed potential deadlock in Wrath: Aeon of Ruin during window activation
24.3.4
======
+ Added an option to reset NVIDIA driver profile settings to default state
using RunDLL_NvAPI_SetDWORD and a tilde (~) instead of a hex value.
rundll32 "SpecialK64.dll", RunDLL_NvAPI_SetDWORD 0x000F00BA ~ game.exe
* This will reset the reBar Enable driver setting to whatever the driver
was originally intended to do for game.exe.
24.3.3
======
+ Merge pull request #147 from Nustat0/more-refresh-rate-factors
* Add more Refresh Rate Factors
+ Merge pull request #136 from Nustat0/targetfps-factor
* Added ability to specify TargetFPS/BackgroundFPS as refresh rate factor
+ Fixed Yuzu disconnecting controllers after opening SK's control panel in
input exclusive mode caused by 24.3.2.2
24.3.2.3
========
+ Added Reloaded-II.exe and Reloaded-II32.exe to internal injection blacklist
24.3.2.2
========
+ Reduce overhead when blocking HID device read requests made by games using
overlapped I/O (asynchronous).
+ Prevent stale input data from being returned to games when an overlapped I/O
request times-out.
24.3.2.1
========
+ Handle subclassed windows when sending games Device Change Notifications
+ Send one Device Change Notification per-HID controller when blocking HID
24.3.2
======
+ Removed private D3DKMT and D3D11 DLL symbol exports from SK
+ Passthrough D3DKMT proc address queries to the real DLL if SK is
locally injected as d3d11.dll
24.3.1.6
========
+ Added PS+Circle (Switch to Last Application) to complement "Switch to Game"
+ Unminimize application windows when attempting to activate them
24.3.1.5
========
+ Allow PS+Square (Switch to Game) to cycle between multiple running games
+ PS+Square works even if background input is disabled for a game
+ Changing volume using chorded gamepad input will unmute the game
24.3.1.4
========
+ Added logging if a DLL being hooked using SK_CreateDLLHook2 (...) was
not already loaded, to diagnose loader lock contention.
+ Load HID.dll, dinput8.dll and dinput.dll _before_ attempting to hook.
24.3.1.3
========
+ Add 1 ms delay between Device Change Notifications sent to other threads
when enabling / disabling input APIs to keep Unity from crashing...
24.3.1.2
========
+ Bound PS + Square to "Switch to Game" to activate the game window
if is in the background.
>> Requires "Continue Rendering", and Gamepad Input set to "Enabled"
24.3.1.1
========
+ Added console variable: HDR.Luminance , floating-point, 1.0=80 nits
+ Bound PlayStation + Left / Right to HDR +/- 10 nits
>> Changes made this way are temporary
24.3.1
======
+ Reduced ReadFile hook overhead when handling HID device files
24.2.29.2
=========
+ Fixed potential nullptr deference when calling SK_XInput_Enable (...)
24.2.29.1
=========
+ Block USB DualSense input better when opening the control panel,
in games that use native PlayStation HID for input.
24.2.29
=======
+ Added += and -= operators to console command processor
+ Added initial support for PlayStation Button + ... chorded input;
Current defaults: ( Will be configurable in the future )
PS + Share/Create = Screenshot
PS + Triangle = Power-Off (the gamepad)
PS + L3 = Play/Pause Media
PS + R1 = Next Media Track
PS + L1 = Prev Media Track