-
Notifications
You must be signed in to change notification settings - Fork 55
/
Copy pathCHANGELOG.txt
12976 lines (10039 loc) · 471 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
25.2.18.2
=========
+ Added pacing option to Alt-Tab for ADHD users with poor impulse control.
+ Added command console variable to control Alt-Tab pacing:
Input.Keyboard.AltTabPace (Milliseconds between Alt-Tab if >= 0)
25.2.18.1
=========
+ Made Windows Key / Alt+Tab block/unblock into a configurable feature in the
new Input Management | Keyboard section of the control panel.
+ Added command console variables to control keyboard special key blocking:
Input.Keyboard.EnableAltTab
Input.Keyboard.EnableWinKey
-1 = Don't Care, 0 = Block, 1 = Allow
25.2.18
=======
+ Fixed (low-level) keyboard/mouse hook function table issues in 32-bit games
+ Prevent games from using low-level keyboard hooks to block Alt+Tab
25.2.17
=======
+ Fixed cursor issues in Kingdom Come Deliverance 2 once and for all.
25.2.16.3
=========
+ Added DontHookWndProc=true to Kingdom Come Deliverance 2 to keep the mouse
cursor from randomly appearing when the game detects modified memory.
+ Enabled drag-n-drop functionality (for INI files) for all graphics APIs;
texture mod drag-n-drop still requires D3D11.
+ Added config profile for Avowed and set "Treat Foreground Window as Active",
because the game is using the wrong test for window activation.
+ Added an INI option to control whether Alt+Tab stuck-key fixes are
applied even for non-background-render scenarios.
[Window.System]
FixStuckAltTabKeys={true|false} Default=true
25.2.16.2
=========
+ Re-enable background rendering mode in Hello Kitty: Island Adventure,
because 25.2.16.1 fixed the original input problem.
25.2.16.1
=========
+ Add 5 millisecond delay between each of the keys listed in 25.2.16;
seems to fix Avowed's menus not working correctly...
25.2.16
=======
+ When "Continue Rendering" is enabled, generate fake key release events for
Tab, Escape, Alt, Ctrl, Shift, Windows after alt-tabbing back into a game
unless keyboard input is set to always block.
* This should help with games that think Alt, etc. are still down after
Alt-Tab when using background render mode.
25.2.15
=======
+ Fix for Kingdom Come Deliverance 2 mouse cursor issues.
25.2.13
=======
+ Added BsSndRpt64.exe to internal injection blacklist; some kind of bs
crash handler for Kingdom Come Deliverance 2.
25.2.11
=======
+ Blacklist "WaitTitleProject.exe" for some weird Square Enix game's launcher.
25.2.10.1
=========
+ Enable the rest of NVIDIA's Reflex stats even for Steam users, since they
are not affected by the overlay.
25.2.10
=======
+ Disable NVIDIA Reflex PC Latency Stats if the Steam Overlay is loaded, or
if SK has not been setup to disable Steam's hooks.
* They hook and place a mutex on PeekMessageW (...), which makes the Reflex
latency stats thread that SK uses block execution of the game's main
thread, and the original solution of throttling PC latency stat
updates only results in inaccurate values reported by NV's overlay.
- Instead of hurting performance, this feature is disabled for Steam users.
25.2.8.3
========
+ Added support for importing settings from an INI file using drag-n-drop
from a URL (i.e. drag the download icon from Discord into the game).
* Currently SK allows importing any INI file named "SpecialK_import.ini",
or "<game_executable_name>.ini" (with the .exe extension removed).
25.2.8.2
========
+ Automatically download the AVIF codec if a user selects AVIF clipboard
format and does not already have the codec.
+ Fixed HDR snipping screenshots when AVIF is the selected clipboard format,
it will use HDR PNG for the snip because it is simpler and lossless.
25.2.8.1
========
+ Apply Xbox analog stick remapping to Windows.Gaming.Input and GameInput
+ Added INI setting to hide Windows.Gaming.Input support from games, which
usually causes them to fallback to XInput.
[Input.Gamepad]
HideWindowsGamingInput={true|false} Default: false
* XInput has a few benefits, such as support for higher polling rates, and
the API allows polling while the game window is in the background.
25.2.8
======
+ Added options to invert X/Y-axes on analog sticks in Xbox mode.
+ Added options to swap left/right analog sticks in Xbox mode.
+ Added command console variables to control the aforementioned options:
Input.Gamepad.InvertLX, Input.Gamepad.InvertLY
Input.Gamepad.InvertRX, Input.Gamepad.InvertRY
Input.Gamepad.SwapSticks
* All variables are booleans
25.2.7.3
========
+ Drag-n-Drop D3D11 .dds texture mods no longer need a game restart, as long
as the texture is the same format and dimensions as the original.
25.2.7.2
========
+ Fixed NieR: Automata and potentially other games processing mouse input
while "Continue Rendering" is turned on and the mouse cursor is failing
hit tests (i.e. another window is between the game and the cursor).
+ FORCEFULLY write the default INI values for Kingdom Come Deliverance 2,
because these issues were fixed a long time ago but users are not
resetting their INI.
+ Disable forced Anisotropic Filtering in Kingdom Come Deliverance 2.
25.2.7.1
========
+ Handle games that run Render and Window on different threads when setting
up drag-n-drop support.
25.2.7
======
+ Added experimental support for dragging and dropping .dds files into D3D11
games to setup texture injection.
* Drag files from Discord with the .dds extension and SK will download the
texture and place it in the right location (game restart required).
This will be extended to support .dll, .asi and .addon{32|64} also, but they
require extra config (i.e. load order and local vs. global ReShade).
25.2.6.8
========
+ Hide the controller reading debug menu under Input Management / Gamepad
unless Xbox debug mode is enabled (right-click the Xbox Deadzone slider),
if you have an Xbox controller this doesn't apply to you.
* That debug menu loads up DirectInput 7 and causes issues with some
overlays, so it's going back to hidden by default...
25.2.6.7
========
+ Added widescreen patch to Ender Lilies.
+ Fixed EOS frame counter in games that use both SteamAPI and EOS SDK.
25.2.6.6
========
+ Fixed some EOS games not triggering EOS SDK hooks for overlay/achievement
features when using Global Injection.
+ Disable Hardware Cursor in Kingdom Come Deliverance 2.
25.2.6.5
========
+ Xbox Guide + Start or PlayStation + Start now triggers HUDless screenshots,
provided d3d11_shaders.ini defines any HUD shaders.
25.2.6.4
========
+ Fixed HUDless screenshots not working in some D3D11 games...
(mostly ones that use fewer than 3 buffers in their SwapChain).
25.2.6.3
========
+ Fixed monochrome JPEG achievement icons showing up as misaligned Red-only
textures in D3D12 achievement popups. (They are converted to RGBA now...).
25.2.6.2
========
+ Fixed Chrono Cross resolution uncap not working after December's D3D11 state
tracking optimization.
+ Pass initialized values for interface count when building stateblocks during
SK_D3D11_BltCopySurface (...) and calling ID3D11DeviceContext::*SGetShader
25.2.6.1
========
+ Change D3D11 hook initialization to avoid "Out of Graphic Memory" jibberish
error in NieR: Automata
25.2.6
======
+ Workaround Steam overlay manipulation of DirectInput 8 that could deadlock
25.2.5.4
========
+ Fixed DirectInput8 related crash in Cyberpunk 2077
25.2.5.3
========
+ Added experimental support for DLSS 310.x presets J and K;
tooltip descriptions have not been updated.
25.2.5.2
========
+ Fix DInput 7/8 hook race that may occur when opening SK's control panel if
Epic's overlay is loaded in a game that uses DirectInput 8.
25.2.5.1
========
+ Avoid endless deathloop of ResizeBuffers (...) in Kingdom Come Deliverance
by lying to it about the format of its SwapChain when it calls GetDesc.
25.2.5
======
+ Enable "continue rendering" by default in Kingdom Come Deliverance 2,
(and 1 because the dummies use the same executable name) to prevent
the game from wigging out on alt-tab.
25.2.4.3
========
+ Disabled D3D10 and DXGI Flip Model in Assassin's Creed Origin and Odyssey
+ Add 3000 frame delay befor enabling visibility hacks for wide aspect ratio
displays in Tales of Graces f, to mask glitches on the title screen.
25.2.4.2
========
+ For shadow scissor rectangles completely within the normal 16:9 area,
in Tales of Graces f, simply rescale and offset the scissor instead
of disabling it.
For shadow scissor rectangles that extend to the left/right of the 16:9
area or top/bottom (i.e. 16:10), extend the rectangle to the edge of
the screen.
* This gets rid of most artifacts without completely disabling scissor
tests on shadows.
25.2.4.1
========
+ Continue auto-disabling texture cache for non-mipmapped textures if
UnityPlayer.dll is from 2020 or older.
25.2.4
======
+ Stop auto-disabling texture cache for textures without mipmaps in
Unity engine games.
+ No longer cache 16-bit or 32-bit single-channel no mipmap textures
25.1.31
=======
+ Disable XInput Emulation in Hello Kitty: Island Adventure.
+ Disabled render in background in Hello Kitty: Island Adventure or it
breaks input and requires you to use keyboard and mouse.
25.1.30.2
=========
+ Enable modified form of scissor rectangle hack for 16:9 users running at
resolution scales != 100% in Tales of Graces f to prevent shadows from
disappearing.
25.1.30.1
=========
+ Restored the proper behavior for the command console command:
D3D11.ShaderMods.ToggleConfig <shader_config.ini>
25.1.30
=======
+ Fixed DisableIfTexture=... condition in d3d11_shaders.ini not actually
enabling texture binding state for vertex, pixel, and geometry shaders.
25.1.29.3
=========
+ Increase allocation size for DEV_BROADCAST_DEVICEINTERFACE_W global
structs to accomodate storing a device path MAX_PATH-many characters.
25.1.29.2
=========
+ Changed Widescreen Visibility Hack and "Smog" (now renamed to "Blur")
settings in Tales of Graces f from unsaved debug test options to
actual settings stored in SK's INI for the game.
+ Added tooltips explaining what the abovementioned things even are :)
+ Disable notification about fixing achievement bugs in Tales of Graces f
after the first one has been unlocked.
25.1.29.1
=========
+ Fixed a SERIOUS screwup in the Tales of Graces f Steam port, where ALL
achievement-related code is contingent upon the end-user having the
Steam overlay enabled!
* Bad Bandai Namco, Bad! Pay me to do your QA next time? :)
25.1.29
=======
+ Detach Mono threads after invoking C# functions on threads that are not
originally part of the Mono runtime to avoid garbage collection on the
render thread in Tales of Graces f.
+ Increased color grading LUT size to reduce banding in Tales of Graces f.
25.1.28
=======
+ Finished porting all of Lyall's Tales of Graces f fix BepInEx mod to C++,
including aspect ratio centering and new code to address object culling.
25.1.27.3
=========
+ Remove Temporal AA option when MSAA is selected in Tales of Graces f.
+ Improve overall UI layout and spacing in Tales of Graces f control panel.
25.1.27.2
=========
+ Boosted default gamepad polling rate up to 1 kHz again after disabling WGI
in favor of XInput for Tales of Graces f.
+ Added options to control anisotropic filtering front and center in
Tales of Graces f's control panel.
25.1.27.1
=========
+ Prevent Tales of Graces f using Windows.Gaming.Input to get it to fallback to
XInput 1.3, which has support for gamepad input polling on -real- Xbox
controllers while the game window is in the background.
* This also reduces overhead on controller rumble and potentially allows for
the use of higher polling rates on devices that SK is not handling the
HID <--> XInput/Windows.Gaming.Input translation for.
25.1.27
=======
+ Add protection against recently changed versions of "Kiero" hook framework,
which changed its window class from "Kiero DirectX Window" to "Kiero".
* This hook system is used by CyberTweakEngine and Overwolf overlays, and
generally causes all kinds of window management problems if special
compatibility code isn't activated...
Renaming the damn window class was much appreciated, Kiero :-\
25.1.26.4
=========
+ Fixed tone-mapped screenshot setting not applying to clipboard screenshots
+ Tweaked ReShade compatibility slightly
25.1.26.3
=========
+ Fixed AVIF screenshots copied to the clipboard _after_ being saved to disk
the normal way not being valid because they had a .jxr file extension in
the clipboard name...
25.1.26.2
=========
+ Added Discord compatible AVIF HDR screenshot encoding, for MUCH more
efficient image sharing than crappy old HDR PNG.
+ Added an option to copy HDR AVIF images to the clipboard instead of
PNG; default remains PNG for now -- eventually AVIF will reign supreme!
25.1.26.1
=========
+ Always clear the camera's background to black in Tales of Graces f,
to avoid random -white- bars in places where the UI has to be
centered in 16:9 for wide/narrow screens.
+ Set the "opaque downsampling" pass in Tales of Graces f to native
resolution when MSAA is used.
25.1.26
=======
+ Fixed scenario where SK wouldn't correctly detect RenoDX in
Tales of Graces f.
25.1.25.1
=========
+ Released new version to get 25.1.25.1 version number
+ Disable HDR in Tales of Graces f without RenoDX
25.1.25
=======
+ Changed default gamepad polling rate to 240 Hz in Tales of Graces f,
because Steam Input and the native Windows.Gaming.Input implementation
do not work reliably at higher rates.
+ Enabled HDR rendering in Tales of Graces f w/o using HDR remasters;
uses R11G11B10 instead of FP16 to improve performance w/ MSAA.
25.1.24.1
=========
+ Reduced D3D11 render state tracking when ReShade is loaded, but there are no
actual ReShade triggers defined in d3d11_shaders.ini that would require
tracking ReShade draw call triggers.
+ Fixed assignment to config variables in refactored Tales of Graces f code
not actually writing a value to the INI file (i.e. Temporal AA not saved).
25.1.24
=======
+ Default Tales of Graces f to 1 kHz input polling rate, since SK's handling
input and the dummies hard-coded 60 Hz input polling rate no matter what
framerate limit you have selected (!!)
+ Added MSAA, Temporal AA and Resolution scaling options to Tales of Graces f.
25.1.23
=======
+ Disable scissor rectangles in Tales of Graces f in order to fix screenspace
shadows being clipped incorrectly on non-16:9 displays
+ Avoid potential recursive hook initialization in DirectInput 7 software
+ Fixed accidentially disabled D3D12 device cleanup between 25.1.22 and .22.1
25.1.22.1
=========
+ Rewrite Tales of Graces f framerate limiter override so that SK's slider now
immediately changes the game's internal limit, and no longer causes
conflicts when trying to use Latent Sync on a fixed-refresh display.
25.1.22
=======
+ Remove VectoredExceptionHandler from SteamAPI_RunCallbacks that was causing
some games (Tales of Vesperia) to randomly fail to run.
+ Improved Mono embedded runtime hook initialization procedure to load various
Unity modules and compile their JIT code ahead of time.
+ Improved compatibility with ReShade/RenoDX in Tales of Graces f -- for best
results load ReShade as a global plug-in using plug-in load order, rather
than using ReShade64.dll installed locally to the game directory.
+ Avoid setting IDXGIDevice1's Device Latency for SwapChains created with
support for Latency Waitable Handles.
25.1.21
=======
+ Added experimental support for hooking Mono (C#) code in order to port
Lyall's TGFFix mod to C++ and integrate directly into Special K.
+ Whenever Special K's framerate limiter is enabled, it will override the
internal framerate limiter in Tales of Graces f, allowing > 120 fps
without any special configuration or third-party software.
25.1.20.1
=========
+ Change name of various Tales of Graces f graphics overrides and add
tooltips explaining when to disable them.
25.1.20
=======
+ Added options to disable Heat Haze and FXAA in Tales of Graces f
25.1.19.1
=========
+ Revert 25.1.19 because uncapped framerate support was added to TGFix 0.0.4.
25.1.19
=======
+ Automatically apply an appropriate maximum framerate limit based on display
refresh rate (i.e. 119.5 for displays >= 120 Hz, 59.95 for 60 Hz displays)
when launching Tales of Graces f for the first time.
25.1.18.2
=========
+ Correctly save settings for "Enable Atmospheric Bloom" in Tales of Graces f.
25.1.18.1
=========
+ Added options to control native PlayStation vs. Xbox emulation in Graces.
+ Added option to sharpen character and object outlines in Tales of Graces.
+ Added options to disable Depth of Field and Bloom to Tales of Graces.
+ Allow monitor management keybinds to work on systems with over 16 monitors
* Most likely, a system does not have 16 attached monitors, but it may have
been assigned \.\\DISPLAY<N> values as high as 128 following repeated
driver restarts / monitor power-cycles.
@ All the more reason to NEVER develop a game that stores user preference
for monitors using the GDI Display Name; always use VidPn DisplayPath!
25.1.18
=======
+ Upgrade games to use IDStorageQueue2 when possible to avoid a bug in
DirectStorage that would prevent querying queue capabilities in some
poorly tested games.
25.1.17
=======
+ Disable Tales of Graces' native DualSense support and translate
DualSense HID to Windows.Gaming.Input in order to add rumble support.
+ Alias the Share and Trackpad Click buttons on DualShock4/DualSense
controllers in Tales of Graces f because various button prompts say to
use the trackpad but it normally maps to Share when SK does API
translation.
* For DualShock4 and DualSense users, download:
https://sk-data.special-k.info/addon/TalesOfGraces/DualShock4.dds
or
https://sk-data.special-k.info/addon/TalesOfGraces/DualSense.dds
and place it in SK_Res\inject\textures\8E9DD816.dds to ensure
button icons are correct.
25.1.13
=======
+ Disable flip model upgrades for FarCry 4 because dxdiagn causes too many
SwapChains to be created on the same window.
* Windows 11 "Optimization for windowed games" can upgrade the game to flip.
25.1.5
======
+ Improved handling of mouse cursor when background render is enabled and
the game window is in the background (for games that use GetCursorPos ()).
25.1.3.1
========
+ Revert 24.12.29.1's optimizations that could cause incorrect game rendering.
25.1.3
======
+ Fixed INI file not saving at exit
+ Revert changes introduced in 25.1.1
25.1.2.2
========
+ Fixed potential crash at exit in D3D12 games.
25.1.2.1
========
+ Re-enable anti-cheat workarounds for various Asian gambling games.
25.1.2
======
+ Add hack to workaround dgVoodoo thread sync wonkiness in 32-bit D3D12.
+ Fixed local injection in D3D11 games not working.
25.1.1.2
========
+ HOTFIX to continue installing queued hooks even if one of them fails due to
anti-cheat memory protection.
25.1.1.1
========
+ HOTFIX to install DXGI/D3D11 hooks immediately rather than deferring them.
25.1.1
======
+ Sped up hook installation a little bit to reduce hook races.
24.12.31.1
==========
+ Fixed the PlayStation/Xbox Button + Right Trigger to minimize game feature
so that it also hides the ADHD Multi-Monitor background window.
+ Organized Display and HDR menus better.
24.12.31
========
+ Optimized SK's Mouse Window Hook to use the hit test code, rather than
performing hit testing of its own to see if the mouse is insie the window.
+ The ADHD background window will now disappear when minimizing a game while
the feature is active.
24.12.29.5
==========
+ Add backup input thread for games that stop processing input on their
message queue for long periods of time (i.e. during FMV playback),
so that SK's keyboard macros and basic mouse input (no scrollwheel)
remain responsive.
* Or, in the worst-case, this backup thread handles all Keyboard & Mouse
because it wasn't possible to hook the game's window thread.
24.12.29.4
==========
+ Removed foreground window HWND caching, the WinEventHookProc does
not order the events it sends coherently.
+ Added extra checks to ensure mouse cursor can activate games when
clicking on the control panel while the window is in the background.
24.12.29.3
==========
+ Change SK_Thread_HybridSpinlock (Critical Section + Spinlock) w/
a recursive SRWLock implementation for testing.
+ Switch to calling GetAsyncKeyState (...) if SK's thread-local
Keyboard Hook does not pickup any input for 5 frames.
24.12.29.2
==========
+ Added option to have ADHD mode disengage when Alt-Tabbing to apps on
the same display as the game.
+ ADHD mode disables Aspect Ratio Stretch now.
+ Fixed PlayStation controller rumble not being cleared at game exit.
24.12.29.1
==========
+ Added a new display mode to blackout secondary monitors while playing
games (Refer to Display | ADHD Multi-Monitor Mode).
+ Added keybind for ADHD Multi-Monitor Mode to Monitor Management keys
in the Display menu.
+ Added command console variable to toggle this mode:
Display.MultiMonitorFocus {true|false} Default: false
+ Various minor optimizations for mouse (cursor) and window management.
24.12.29
========
+ Improved input neutralization for games that use Overlapped IO to read
HID devices (i.e. SDL2) when blocking input to the game.
+ Fixed problems with mouse cursor clipping caused by treading ClipRect
as thread-local instead of global.
24.12.28.5
==========
+ Updated compiler version; anything broken between 24.12.28.4 and now is
probably a compiler bug.
24.12.28.4
==========
+ Disable dynamic spinlocks feature accidentally enabled for all games
in 24.12.28.1.
24.12.28.3
==========
+ Deferred Context Isolation now re-enables the Wrap -AND- Hook codepath
required for some D3D11 games.
+ Fixed NieR: Replicant setting changes not applying immediately.
24.12.28.2
==========
+ Fixed unintentional creation of empty NVIDIA driver profiles for
games whose .exe exists in multiple profiles when checking whether
ReBAR is enabled for a game during initialization.
24.12.28.1
==========
+ Added caching for calls to GetForegroundWindow (...) and
GetWindowThreadProcessId (...)
+ Removed locking code from XInput, it was already mostly lockless
24.12.28
========
+ Fixed some games inheriting SK's hardware cursor after the cursor
moves off of SK's UI.
24.12.27.3
==========
+ Load ReShade Early plug-ins as early as possible (after INI parse)
+ Optimized various state block and UI code
24.12.27.2
==========
+ Slight performance tweak for D3D11_**SetShader_Override (...) and
D3D11_**SetShaderResources_Override (...).
24.12.27.1
==========
+ Fixed incorrect Reflex eligibility checks introduced in 24.12.27
24.12.27
========
+ Optimized D3D11 state tracker to ignore set shader calls, and draw calls unless
specific combinations of render mods that actually need them are active.
+ Optimized control panel's end-of-frame input polling and cursor status checks.
+ Optimized shader tracker to avoid clearing active RTV cache at the end-of-frame
unless render mod tools window is open.
+ Optimized timer queries used by SK's shader profiler and HDR widget to suspend
while render mod toolkit / HDR widget are not active.
+ Optimized D3D11 Stateblock Restore code to bypass invoking SK's state tracking
hooks.
24.12.26.3
==========
+ Added missing draw call information to Reflex latency markers in D3D11 games
24.12.26.2
==========
+ Small optimization to text OSD
+ Optimized D3D11 state tracking for SetShaderResources and removed unnecessary
hooks on SetSamplers.
24.12.26.1
==========
+ Fixed potential deadlock in RenoDX mods, the ones that do not check for
nullptr before dereferencing ptrs will simply have to crash until fixed.
+ Disabled floating-point exception handling when ResizeTargets is called,
because it causes all CryTek games to crash.
24.12.26
========
+ Added internal settings to control D3D11 state tracking for map/unmap and
set shader resources API calls, and disabled them for a few high overhead
games.
+ Disabled wrapping of D3D11 device contexts for all games except for
Tales of Vesperia.
24.12.25.2
==========
+ Improved compatibility with RenoDX mods, even the ones that do not check for
nullptr :grimacing:
+ Slightly sped-up initialization in some D3D games.
24.12.25.1
==========
+ Create an IDXGIFactory2 rather than IDXGIFactory when initializing hooks to
avoid complications from ReShade calling QueryInterface to upgrade an
interface that SK has not yet wrapped.
24.12.25
========
+ Reduced performance overhead of the Steam and battery management sections of
the control panel (battery overhead applies to framepacing widget too...)
+ Ignore D3D11DeviceContext Set*Resource state tracking unless the render mod
tools window is open.
24.12.24.2
==========
+ Further reduce performance overhead in D3D11 across the board for CPU-bound
scenarios in games that make a lot of draw calls.
+ Optimized Get/SetMute to avoid constructing a temporary ISimpleAudioVolume
COM object every time it is called.
24.12.24.1
==========
+ Lowered CPU overhead in D3D11 games related to third-party overlay color
correction shader replacement when an HDR display is attached.
>> State tracking for them will only occur during Present (...) calls now.
24.12.24
========
+ Avoid destroying the SwapChain that Special K creates during initialization
to setup D3D11 hooks, because poorly written ReShade addons may crash.
+ The option to disable the Steam overlay's rendering now also blocks it from
installing input hooks, making it finally inert.
+ Automatically apply anti-cheat bypass to all Hoyo games according to their
digital certificate, so I no longer have to manually do this when they
release a new game.
24.12.23
========
+ When ReShade is used as dxgi.dll in D3D12 games, SK no longer gives warnings
about compatibility problems.
+ Avoid using explicitly constructed ReShade effect runtimes as much as
possible when SK is not running in Hookless ReShade (compatibility) mode,
to avoid confusing AddOns that think these are normal ReShade runtimes.
+ Added checks to detect ReShade's incorrectly reported D3D11 immediate device
context reference counts that may cause deadlock during game exit or when
temporary D3D11 devices are constructed and destroyed (ie. overlay init)
24.12.22
========
+ Fixed absent custom resolutions caused by a typo in the Display menu a few
years ago...
+ Restored missing audio devices in the list of pairable display/audio output
mappings, lost about a moth ago.
+ Fixed CPU affinity mask potentially overflowing and not working in 32-bit.
( Whether you have one of those mythical 64-core CPUs or not, chances are
affinity mask settings were not working in 32-bit games ).
24.12.21.4
==========
+ Revert scheduler changes related to Sleep (0) behavior in 24.12.15 that cause
Silent Hill 2 to crash.
24.12.21.3
==========
+ Fixed recent change that would cause the control panel to crash in Steam games
if Steam cloud is disabled or SteamAPI integration is turned off.
24.12.21.2
==========
+ Fixed typo that has been preventing SK's D3D11 texture cache from evaluating
the list of freeable textures when cache capacity exceeds user-defined
limit for several years... oops?
+ Fixed various other small issues, nothing as serious as the one above.
24.12.21.1
==========
+ Fixed cursor auto-hide changes accidentally introduced in 24.12.21
24.12.21
========
+ Re-aranged the window management and mouse cursor section of the control
panel slightly.
+ Opted the majority of the codebase into the non-commerical open source
license of PVS Studio; by placing comments above the license disclaimer
in most source files.
24.12.20.2
==========
+ HOTFIX for NVIDIA Vulkan/DXGI interop issues introduced in 24.12.20.
24.12.20.1
==========
+ Eliminate unnecessary load of Windows.Gaming.Input.dll in games that do not
actually use the API.
+ Fixed various minor issues discovered using static analysis with PVS-Studio.
24.12.20
========
+ Fixed EOS crash in games using extremely old versions of EOS SDK lacking
support for EOS_UI_AddNotifyDisplaySettingsUpdated (i.e. Path of Exile 2).
+ Add mutex to SK_IWrapD3D11DeviceContext::Release (...) to handle recursion
during deferred destruction of D3D11 Immediate Device Context singleton.
24.12.19.4
==========
+ Fix DualShock 4 Bluetooth analog stick problems caused by typo in 24.12.19.2
24.12.19.3
==========
+ Correctly show PlayStation icon in GameInput games only when PlayStation
input/output is active, for native GameInput remove the icon.
+ Allow DualSense users (non-Edge version) to access the Impulse Trigger
strength slider.
24.12.19.2
==========
+ Add logarithmic scaling to deadzone compensation on PlayStation controllers
and extend the option to native Xbox controllers also.
+ Fixed off-by-one issue when quantizing the x-axis in some PlayStation device
configurations.
24.12.19.1
==========
+ Added system to ensure XInputGetState{Ex} (...) packet counts are always
monotonic increasing in mixed-native/translated hot-swap scenarios.
(i.e. Xbox and PlayStation controller are both connected and SK's
auto-switch-on-new-input causes the game to start reading the other)
DOOM Eternal only responds to sequential packet numbers, so exposing the
_real_ device packet numbers would cause it to stop responding to input.
+ Clear the state of the PlayStation button when all PlayStation controllers
disconnect, so that SK doesn't block all other buttons because it thinks
the user is trying to input a PlayStation + <...> button combo.
24.12.19
========
+ Overhauled Windows.Gaming.Input implementation to support hot-plugging
PlayStation controllers and enabling "Xbox Mode" without requiring a
complete game restart.
+ Add 7.5 second delay before announcing virtual PlayStation controllers
to games using Windows.Gaming.Input
+ Added logging for games that try to create IID_IRawGameControllerStatics.
24.12.18
========
+ Correctly implement AVIF screenshot encoder quality; quantizer was set to
lossless at all quality levels before!
+ When holding Xbox Guide / PlayStation / Nintendo Home button, ImGui menu
navigation is now temporarily blocked (if chords are enabled).
24.12.17.2
==========
+ Reduce latency on HID output reports (i.e. rumble, lighting changes, etc.)
for DualShock 4 and DualSense{Edge} controllers.
24.12.17.1
==========
+ Revert ResizeTarget optimization from 24.12.15.4, because it only works as
intended in D3D11 games.
24.12.17
========
+ Reduced default Impulse Trigger strength in Forza Horizon 5 to 33%
+ Added PlayStation controller latency readings back to the control panel
24.12.16.1
==========
+ Fixed beeping when pressing keyboard input in some games after using chords:
PlayStation + R2 / PlayStation + L2 to minimize and restore a game.
24.12.16
========
+ Improve HID->XInput timestamp management when threads are updating the state
concurrently.
+ Fix potential crash while games poll keyboard input from multiple threads
and SK's primary render context is not active.
+ Speed up render context re-initialization following a window resize.
24.12.15.4
==========
+ Revert recent changes to Sleepless Window Thread that could hurt framerate.
+ Unset most hooked window management trampoline functions during shutdown.
+ Use ShowWindowAsync (...) in all cases where synchronous state change is
unnecessary, in order to minimize window management wait-chains.
+ Do not show Windows.Gaming.Input warnings to PlayStation controller users
if theey have deliberately blocked a game from using XInput-derived APIs.
+ Avoid IDXGISwapChain::ResizeTarget (...) when appropriate, in favor of
the simpler and much more likely to succeed without disrupting MPOs,
IDXGISwapChain::ResizeBuffers (...).
24.12.15.3
==========
+ Add hacky workaround for Indiana Jones' Vulkan window not properly releasing
topmost status on alt-tab.
24.12.15.2
==========
+ Removed unnecessary Windows.Gaming.Input warning messages in SDL2 and Nixxes
games if they initialize input before creating a game window.
24.12.15.1
==========
+ Apply/reset trigger resistance for DualSense controllers every time they
connect/reconnect, and do not wait for vibration data to be written first.
24.12.15
========
+ Added configurable constant trigger resistance for DualSense controlelrs...
[Input.Gamepad]
{Left|Right}TriggerResistance={-1.0,[0.0,1.0]} Default=-1.0 (not applied)
{Left|Right}TriggerResistsAt={-1.0,[0.0,1.0]} Default=-1.0 (not applied)
TriggerResistsAt defines the ratio of trigger pull (1.0 = full pull)
before any resistance is applied; set to 1.0 or -1.0 to disable.
NOTE: 0.0 resistance actually has slight (minimum supported) resistance.
* This is a per-game setting, not currently exposed in the control panel.
+ Added command console variables to control the settings listed above:
Input.Gamepad.DualSense.ResistStr{L|R}={-1.0f,[0.0,1.0]}
Input.Gamepad.DualSense.ResistPos{L|R}={-1.0f,[0.0,1.0]}
+ Added command console variables to control Xbox Impulse Trigger strength:
Input.Gamepad.DualSense.ImpulseStr{L|R}=[0.0,1.0]
24.12.12
========
+ Disabled anisotropic filtering optimizations in Metaphor: ReFantazio because
most textures are not mipmap-complete.
24.12.8
=======
+ Uncommented checks for PlayStation controllers when a game uses
Windows.Gaming.Input warning about potential incompatibility.
24.12.3
=======
+ Various changes to ensure GameInput games do not read from the same memory
that SK's input I/O threads are actively writing to, lockless of course.
24.12.2.1
=========
+ Fixed internal deadzone on PlayStation controller input used to determine
which gamepad has the most recent input (i.e. if the same controller is
attached to USB and Bluetooth simultaneously), being applied to the
readings sent to games.
* This was causing stick drift.
24.12.2
=======
+ Added a trigger deadzone applied during trigger force feedback to keep
games from registering the small force feedback movement as actual user
input (i.e. pulling and releasing a gun's trigger rapidly).
24.12.1.4
=========
+ Support native GameInput implementations when Xbox Emulation is turned off.
24.12.1.3
=========
+ XInput emulation now bypasses GameInput.dll for systems that do not have
this DLL.
24.12.1.2
=========
+ Enable Impulse Trigger strength sliders in Windows.Gaming.Input games
24.12.1.1
=========
+ Allow Starfield to read Windows.Gaming.Input and write XInput
24.12.1
=======
+ Fixed issues with games that poll XInput multiple times per-frame from more
than one thread.
+ Implemented support for reading XInput and writing Windows.Gaming.Input in
the same game (Forza Horizon 5's Impulse Triggers now work on DualSense).
24.11.30.4
==========
+ Added Xbox Impulse Trigger->PlayStation Adaptive Trigger emulation for games
using Windows.Gaming.Input (99.99% of games that support the feature).