STEAM GROUP
Special K - "Kaldaien's Mod" Special☆K
STEAM GROUP
Special K - "Kaldaien's Mod" Special☆K
219
IN-GAME
1,873
ONLINE
Founded
May 23, 2016
Language
English
All Discussions > Development > Topic Details
 This topic has been pinned, so it's probably important
Kaldaien Apr 29, 2017 @ 3:50pm
Special K - v 0.8.65 [Legacy Release] - (1/15/18)
Release Note History (in lieu of documentation)
I am too busy experimenting to write proper long-term documentation... :pointless:
    You may find useful pseudo-documentation here[gitlab.com]

Releases
    Branch=Latest
      1/15/18
      v 0.8.65[github.com]Improved Startup Performance
      1/14/18
      v 0.8.64[github.com]Fix missing overlay in D3D11
      1/13/18
      v 0.8.62[github.com]DirectInput 7 Support + More OpenGL stuff
      1/9/18
      v 0.8.61[github.com]More OpenGL Improvements
      1/5/18
      v 0.8.60[github.com]Improved OpenGL and Global Injection Support
      1/2/18
      v 0.8.59[github.com]Steam Common Redistributable Disposal
      1/1/18
      v 0.8.58[github.com]Happy New Year
      12/21/17
      v 0.8.57[github.com]Improved Steam Controller Support
      12/19/17
      v 0.8.56[github.com]Fix Handle Leak in Applications Blacklisted from Injection
      12/18/17
      v 0.8.55[github.com]RivaTuner Statistics Server Compatibility
      12/15/17
      v 0.8.54[github.com]Improved OKAMI HD / 大神 絶景版 shader modding
      12/2/17
      v 0.8.52[github.com]32-bit Injection Compat Fix
      11/3/17
      v 0.8.50.4[github.com]Enhanced Framerate Limiter + D3D11 Texture Reload
      10/2/17
      v 0.8.46[github.com]Fix config for Steam games with non-Latin names
      9/29/17
      v 0.8.45[github.com]D3D9 Texture Injection Optimization
      9/23/17
      v 0.8.44[github.com]Denuvo Activation Management (Steamworks only)
      9/18/17
      v 0.8.43[github.com]Divinity: Original Sin 2 Optimizations
      9/5/17
      v 0.8.41[github.com]File | Exit
      9/3/17
      v 0.8.39[github.com]D3D9 Shader Mod Tools + Clothing Optional
      8/31/17
      v 0.8.37[github.com]Preliminary Native Steam Controller Support
      8/27/17
      v 0.8.36[github.com]First Anniversary Release
      8/7/17
      v 0.8.33[github.com]Multi-colored graph widgets
      7/23/17
      v 0.8.26[github.com]G-Sync Status in OSD
      7/20/17
      v 0.8.25[github.com]Many fixes for Mouse Effect: Agh! and ReShade.
      7/15/17
      v 0.8.24.3[github.com]Multi-threaded Rendering / TexCache Fixes
      7/11/17
      v 0.8.24[github.com]Final Fantasy 8 (Preliminary DirectInput 7 Support)
      7/9/17
      v 0.8.23.1[github.com]Streamlined SKIM64 Experience
      7/8/17
      v 0.8.22.8[github.com]Fairy Fencer AD Middleware License Fix
      7/2/17
      v 0.8.21.3[github.com]SKIM Replaces inject.bat / uninject.bat
      7/1/17
      v 0.8.20[github.com]Compatibility Updates
      6/21/17
      v 0.8.19[github.com]Compatibility Updates
      6/21/17
      v 0.8.18[github.com]Improved Version Management
      6/20/17
      v 0.8.17[github.com]Auto-Update
      6/19/17
      v 0.8.16[github.com]In-game fullscreen toggle added to D3D11
      6/18/17
      v 0.8.15[github.com]Compatibility Menu (HOLD Ctrl + Shift at game start)
      6/16/17
      v 0.8.14[github.com]DirectDraw Support + New Injection Menu
      6/11/17
      v 0.8.13[github.com] D3D11 Texture / Shader Modding
      5/16/17
      v 0.8.12[gitlab.com] { No Auto-Update Support Yet }


Test Releases
    Branch=Testing
      12/13/17
      v 0.8.53.6[github.com]Dbghelp.dll changes for League of Legends Compat
      11/29/17
      v 0.8.52.1[github.com]Global Keyboard Macros
      11/23/17
      v 0.8.51[github.com]World of Final Fantasy Compatibility
      10/28/17
      v 0.8.49.2[github.com]Custom ReShade supports wrapper DLLs + Global Injection Whitelist
      10/5/17
      v 0.8.47.5[github.com]D3D11 Shader State Profiles
      9/3/17
      v 0.8.40[github.com]XInput Slot Reassignment
      8/14/17
      v 0.8.35[github.com]Improved D3D11 Texture Mod Support
      8/10/17
      v 0.8.34[github.com]Custom ReShade Support

      8/6/17
      v 0.8.32[github.com]Steam Game Profiles No Longer use <appname.exe>
      8/5/17
      v 0.8.31[github.com]Added Gamepad Input Support to Widgets
      8/2/17
      v 0.8.30[github.com]Fixed DDRAW and D3D8 API Wrapping
      8/1/17
      v 0.8.29[github.com]Improved UI Widgets
      7/29/17
      v 0.8.28[github.com]Increased Log/Config/Startup Performance
      7/27/17
      v 0.8.27[github.com]OSD Widgets
Last edited by Kaldaien; Feb 10, 2018 @ 10:43am
< >
Showing 2,491-2,505 of 8,295 comments
Isolated Rainbow Jul 21, 2017 @ 12:14am 

Originally posted by Kaldaien:
Woo!

I accidentally stumbled onto a way to keep gamepad / keyboard icons from changing in some AAA games when using a Steam controller's mouse / gyro aim + gamepad features.

I'm sure not many people are familiar with this problem, I know that very few developers are... In most AAA games when you try to do this, any time you move the trackpad, button icons change from gamepad to keyboard/mouse. It gets obnoxious in a hurry.

Turns out, I can send an HID Raw Input event at the beginning of each frame and many of them will take that to mean a gamepad did something. Even if the event does not change any actual input state. Kind of hacky, but fun.

My husband would love that. We have a list going on games that is broken on in our library alone. 😊
Aemony Jul 21, 2017 @ 12:48am 
Originally posted by Kaldaien:
Woo!

I accidentally stumbled onto a way to keep gamepad / keyboard icons from changing in some AAA games when using a Steam controller's mouse / gyro aim + gamepad features.

I'm sure not many people are familiar with this problem, I know that very few developers are... In most AAA games when you try to do this, any time you move the trackpad, button icons change from gamepad to keyboard/mouse. It gets obnoxious in a hurry.

Turns out, I can send an HID Raw Input event at the beginning of each frame and many of them will take that to mean a gamepad did something. Even if the event does not change any actual input state. Kind of hacky, but fun.

Plz! My Wooting One[wooting.nl] keyboard have shipped and arrives any day now and I am soon going to transition into using WASD for analog input, so that's right up my alley at the moment.

Edit: Though I guess my use is actually the opposite. Keep the controller buttons as kb+m while using XInput. Damnit.
Last edited by Aemony; Jul 21, 2017 @ 1:15am
maximusZ09 Jul 21, 2017 @ 2:14am 
Use them both
Be the real master race
Kaldaien Jul 21, 2017 @ 2:28am 
ReShade is trying to change its bindings any time I press a button. If I press tab immediately after opening its overlay, it binds tab to toggle every shader. Makes the software pretty much unusable unless I go and fix the config file constantly.

I don't know why it's behaving this way :-\ But it definitely needs better input processing. The menu's not even unsable in a ton of games because it can't keep the cursor from warping back to the center of the screen.

I've admired ReShade for how few lines of code it is, but I think I understand why it's so small now -- it's just the essentials, without the hundreds of thousands of lines of compatibility code that these projects require :)
Kaldaien Jul 21, 2017 @ 2:33am 
And anyway, after looking through its input processing code... what it lacks in compatibility hacks, it makes up for with a simple design that I can modify to hook directly into Special K's input processing layer. I'll write an adapter class to translate all of the ImGui stuff and handle its menus through Special K -- at some point.
Aemony Jul 21, 2017 @ 4:05am 
Following the development of Special K makes it painfully obvious why a ton of these kinds of injectors generally just don't bother with compatibility issues.
😎Macula😎 Jul 21, 2017 @ 4:36am 
Yea, even I would try make code as simple as possible with that kind of issues.
Kaldaien Jul 21, 2017 @ 5:37am 
That ship sailed a long time ago =P

I thoroughly enjoy writing code that's so complicated I don't even remember writing it sometimes, lol. And then there are simple things too, that make me happy... such as this new feature:

http://steamcommunity.com/sharedfiles/filedetails/?id=1084561572

Mass Effect Andromeda was driving me insane, so I took a look at a few games with the same level of mouse warpiness and added a new feature to tone down the anti-warp system.

This system has always been there, but the screen coverage area was not customizable and users were experiencing deadzones in the center of their screen where the UI would behave strangely without me ever explaining what was going on.

This should take care of all of that, probably in the most customizable way anyone's ever attempted for a mod like this -- granted the bar's not very high because I only know of ReShade and it didn't bother to address this issue :)
Last edited by Kaldaien; Jul 21, 2017 @ 5:37am
Kaldaien Jul 21, 2017 @ 8:04am 
I'm getting closer to properly supporting Mirillis Action! in fullscreen mode through regular injection, by the way. Just thought I'd point this out since I know a few people here use it.

This is the biggest problem I've got with it:

07/20/2017 22:49:15.260: [DLL Loader] ( Nahimic2DevProps.dll ) loaded ' C:\Program Files (x86)\Mirillis\Action!\action_x64.dll' < LoadLibraryW > { ' GetHotPatchInfo' } 07/20/2017 22:49:15.353: [DLL Loader] ( KERNEL32.DLL ) loaded ' C:\Program Files (x86)\Mirillis\Action!\action_x64.dll' < LoadLibraryW > { ' BaseThreadInitThunk' } 07/20/2017 22:49:15.353: [DLL Loader] ( KERNEL32.DLL ) loaded ' C:\Program Files (x86)\Mirillis\Action!\action_x64.dll' < LoadLibraryW > { ' BaseThreadInitThunk' } 07/20/2017 22:49:15.876: [ DXGI ] [!] IDXGISwapChain::SetFullscreenState ({ Windowed }, 0000000000000000h) -- [ NieRAutomata.exe , tid=0x6c34 ] 07/20/2017 22:49:15.876: [ DXGI ] [@] Return: S_OK - < SetFullscreenState_Original (This, Fullscreen, pTarget) >

It does some really weird stuff like load itself three times if I try to delay its injection. It's kind of a miracle that design doesn't crash more games. If you can't get your DLL loaded once, maybe try a second time, but three times is a bit much. I've never seen any other software do that.

RivaTuner Statistics Server has probably 5 different injection techniques, but it doesn't sit there and try all 5 of them until the software successfully explodes :) I have code in-place to delay RTSS, and RTSS will happily wait ~15 seconds before concluding that something's wrong. MIrillis can't even wait a couple of milliseconds.
Last edited by Kaldaien; Jul 21, 2017 @ 8:04am
😎Macula😎 Jul 21, 2017 @ 8:12am 
Hmm, I remember I tried to record Guild Wars 2 once and at each damn loading it would stop recording.

I heard this was fixed but maybe it has something to do with that?
Kaldaien Jul 21, 2017 @ 8:39am 
I don't think so. This is just one of the joys of writing a project like this from scratch :)

I have plenty of compatibility issues to address and lessons to learn the hard way. But it's what everyone who starts venturing off into this field encounters. Eventually I'll have a robust injection system capable of dealing with all of these things, but it takes time and effort and is probably the reason there aren't a lot of other crazy people doing this stuff :)

I can name b03b (3Dmigoto), Durante, Boris (ENB) and Crosire and then I start drawing a blank. Nobody else is crazy enough to do this stuff for donations, I think :P
Kaldaien Jul 21, 2017 @ 8:42am 
I want to differentiate myself in the future if I don't completely exhaust myself. After I have all the major render APIs abstracted and a good feel for compatibility issues, I want to turn around and release an API / SDK for other developers to write plug-ins to Special K. This would save them all the brutal growing pains I've gone through and might open the door for some interesting projects.

I already handle more input APIs than just about any other software but the Steam overlay :) I think that alone has a lot to offer projects such as ReShade. I never set out to write a sophisticated input management system, I'm a graphics programmer after all, but if I can patch some problem spots in some other important PC gaming software using what I've learned, I'm happy to do it :)
Last edited by Kaldaien; Jul 21, 2017 @ 8:45am
Aemony Jul 21, 2017 @ 9:40am 
Meanwhile I still can't manage to get Mirillis Action! to even record my games at all, using their 5-15 minute replay functionality.

I have honestly given up hope on ever managing to get that to work at the moment.
JBeckman Jul 21, 2017 @ 10:06am 
Mafia 3 does not seem to like dinput8.dll for some reason, shader previewing occasionally causes the game to shut down as well as of SK version 0.8.25 but it's not a huge concern.
(EDIT: But with the game being almost 100% finished here now it's just about ready for removal anyway if there's no more content coming after this third pack coming out next week.)

Path of Exile turned to function just fine after some fiddling with disabling the option for that 64-bit buffer but the OSD won't appear for whatever reason when called from in-game.
(EDIT: So many compatibility options, so much to read up on and try to get some understanding on but it's fun though some tinkering here and there is needed depending on the game, trial and error but also a interesting learning experience heh failure driven success? Ha ha well that kinda sums up what I've been doing.)


So far though that's the only quirks I've discovered, (EDIT: And it's usually PEBCAK or what it's called so. :D ) some games (Atelier ones for example.) crash on exit but it's probably a config issue on my end and since the rest of the game is stable it's not a problem.

Going to be interesting to see what the newest version of SpecialK will do for ME: Andromeda, seems the FAR version was recently updated with something though I'm probably going to wait and see if EA/Bioware can't squeeze out another patch before resuming that game.


Definitively would be interesting to have a sort of SDK but I wonder how utilized it would be, can't hurt though.
(Awesome as it would be it's a little bit unrealistic for a handful of people to fix everything so it's a good idea.)

Depends on overall popularity and also complexity I'm guessing, ReShade is popular but even with going open source on Git there's not been that much activity as it's a pretty complex software though it's not been completely still either, just takes time. :)


...How many more compatibility issues could there be with the Steam overlay by the way?
(What, four or five releases now solving a couple of them each, did not expect that but it seems it's working fairly OK now, and then Valve tinkers with the code again in some client update.)
Last edited by JBeckman; Jul 21, 2017 @ 10:18am
😎Macula😎 Jul 21, 2017 @ 10:30am 
Originally posted by Kaldaien:
I don't think so. This is just one of the joys of writing a project like this from scratch :)
It's shame you can't use Mirillis trick for excluding programs in this case.

They have method that lets you create simple txt file in which you add exe in it for excluding.
< >
Showing 2,491-2,505 of 8,295 comments
Per page: 15 30 50

All Discussions > Development > Topic Details