STEAM GROUP
Special K - "Kaldaien's Mod" Special☆K
STEAM GROUP
Special K - "Kaldaien's Mod" Special☆K
270
IN-GAME
2,575
ONLINE
Founded
May 23, 2016
Language
English
All Discussions > Development > Topic Details
 This topic has been pinned, so it's probably important
Kaldaien Sep 9, 2016 @ 11:53am
Special K - v 0.6.34 [Injector] - (10/28/16)
Preliminary Support for System-Wide Injection

This will walk you through getting Special K to work automatically when a game starts up, rather than dropping a DLL into a directory and renaming it. This serves primarily as a convenience, but is actually required by some games (e.g. STEINS;GATE).

    Secure Boot needs to be disabled for this to work; it uses the same approach as GeDoSaTo does.


Step 0: Installation

    Download
      Grab SKIM.exe or SKIM64.exe here[github.com]
    Install
      Run SKIM.exe
        (SKIM64.exe may give you less anti-virus problems, but hasn't been tested as well)
    Uninstall
      Run SKIM.exe

Step 1: Opting-in to global injection (for non-Steam games)

    For the global injector to work in a non-Steam game, create an empty file in the game's directory and give it one of the following names:

    1. SpecialK.d3d9
      • If the game uses D3D9
    2. SpecialK.dxgi
      • If the game uses D3D10/11/12
    3. SpecialK.OpenGL32
      • If the game uses OpenGL

    Special K is automatically injected into Steam games and you do not have to concern yourself with graphics API.

Location of Configuration and Log Files

Games using the global injector will store their configuration and log files per-exe under %USERPROFILE%\Documents\My Mods\SpecialK\Profiles\<EXENAME>\....

    If you run the game manually as administrator, a symlink called SpecialK will be created in the game's directory to make accessing the config files easier.
Last edited by Kaldaien; Nov 17, 2016 @ 11:46am
< >
Showing 1-15 of 754 comments
HolyDeath3000 Sep 9, 2016 @ 12:06pm 
How you add path? Example in registry edit would be awesome. :)
Kaldaien Sep 9, 2016 @ 2:19pm 
I assume you figured it out by now? :)

There will be a tool to configure all of this stuff eventually. I also intend to make some settings use a global default such as mouse cursor hiding, achievement sound, etc. For now it's a lot of editing stuff by hand while I work out a long-term design for this.
Last edited by Kaldaien; Sep 25, 2016 @ 1:26am
HolyDeath3000 Sep 9, 2016 @ 3:40pm 
Originally posted by Kaldaien:
I assume you figured it out by now? :)

There will be a tool to configure all of this stuff eventually. I also intend to make some settings use a global default such as mouse cursor hiding, achievement sound, etc. For now it's a lot of editing stuff by hand while I work out a long-term design for this.
Yeah, I did thanks for the heads up on it. Definitely doesn't work with DX11 games but just out of curiosity. Would it work for Rise of the Tomb Raider? Or some other games that have DX12 in them? Like Quantum Break?

Oh side note the newest Official Released SpecialK dll works wonders. It now fully catches crashes unlike before it rarely did. Now everytime I exit FO4 I hear the sound from MGSV TPP game lol. And seems to work better too in some ways. Once I figured out that swapchain buffer count can't be higher than 2 I was able to stop crashes on bootup of the game. Other settings too have to be done carefully. :)
Last edited by HolyDeath3000; Sep 9, 2016 @ 3:42pm
Kaldaien Sep 12, 2016 @ 5:04am 
I have updated the injector with A LOT of features. The injected DLL can now load the plug-in DLLs used by my more elaborate mods (e.g. Final Fantasy X / X-2, Dragon's Dogma, Disgaea PC, Tales of Zestiria, Tales of Symphonia).

Various other compatibility fixes are included and best of all, the OpenGL32 injector works.

Startup time may be excessive in OpenGL; it has a set of 358 functions in OpenGL32.dll, most software uses 1% of them, but for now I have to hook all of those functions. I'll work on speeding that up in the future (the DLL can be renamed OpenGL32.dll and placed in the game's directory to avoid this bottleneck).


---

This is the first release in .7z format. I will be releasing all future versions in .7z because I wrote some code for Tales of Symphonia to handle .7z files. My auto-update system will be based on .7z compressed archives.


---

These DLLs are universal. They work as system-wide injected DLLs or as DLLs you drop-in the game directory with the appropriate DLL name. Some games work better one way than the other, so I will continue to support both methods.
Last edited by Kaldaien; Sep 12, 2016 @ 5:05am
Kaldaien Sep 12, 2016 @ 5:08am 
Work will start later this week on Special K Injection Manager (SKIM) ;)

That tool will let you setup the AppInit_DLLs stuff without putzing around in RegEdit. It will also be the basis for my auto-update system. I haven't written one of those in ~20 years, so this will be fun :)
HolyDeath3000 Sep 12, 2016 @ 6:09am 
Originally posted by Kaldaien:
Work will start later this week on Special K Injection Manager (SKIM) ;)

That tool will let you setup the AppInit_DLLs stuff without putzing around in RegEdit. It will also be the basis for my auto-update system. I haven't written one of those in ~20 years, so this will be fun :)
OMG I am stoked man :D !!!! Love your work btw :).
Kaldaien Sep 13, 2016 @ 3:29am 
WOO!

09/13/2016 06:24:21.986: [] Additional OpenGL Initialization 09/13/2016 06:24:21.986: [] ================================ 09/13/2016 06:24:21.986: [] Hooking OpenGL 09/13/2016 06:24:22.028: [] @ 355 functions hooked

That took ~15 seconds yesterday, now it takes less than 1 ms per-function.

I think OpenGL support (for the global injector) is more or less finished finally.

I only have one project that needs all 355 of those functions, for most games there's a total of 4 or 5 functions for texture dumping/injection and framerate control that matter. The fact that I can load all of them in under 1/3 of a second is reason enough to just leave that stuff enabled all the time.
Last edited by Kaldaien; Sep 13, 2016 @ 3:29am
Kaldaien Sep 13, 2016 @ 5:27am 
Added support for automatic API detection too, like pretty much every other piece of software that does what mine does supports :P

You won't nee to know if the game is 32-bit or 64-bit or if it's OpenGL, D3D9, 11/12. If you DO know these things ahead of time, you do get a few extra low-level options for each of those APIs. Most people don't need that stuff, so I'm happy to default to auto-detection.

Auto-API detection is live:

https://github.com/Kaldaien/SpecialK/releases/tag/sk_appinit

SpecialK_0_6_2.7z
Last edited by Kaldaien; Sep 13, 2016 @ 5:38am
HolyDeath3000 Sep 13, 2016 @ 7:02am 
Okay cool and when I tried the newest app init version it didn't work with the OpenGL ReShade and I had to use 0.6.0 to manually do it. I will try this latest version and see if it works :).
HolyDeath3000 Sep 13, 2016 @ 7:09am 
Tried booting up Farming Simulator 15 and the following crash.log came up.

Crash Log: http://pastebin.com/eqXWCyEk
OpenGL32 Log: http://pastebin.com/cFTp91m1
Kaldaien Sep 13, 2016 @ 7:12am 
Do you have the SpecialK64.pdb file in the same location as the DLL? It should be giving line numbers in the errors.
Kaldaien Sep 13, 2016 @ 7:13am 
I really don't think that game uses OpenGL. The log suggests it's actually D3D9 based.
HolyDeath3000 Sep 13, 2016 @ 7:14am 
It has OpenAL.dll in the game location. Let me try changing it :)
Last edited by HolyDeath3000; Sep 13, 2016 @ 7:14am
HolyDeath3000 Sep 13, 2016 @ 7:20am 
Hmm crashed when I took out the reshade. I am quite sure the game is openGL. The older version non app_init version 0.6.0 boots it fine.

I have the dll / pdb files in one location in same folder.
Last edited by HolyDeath3000; Sep 13, 2016 @ 7:21am
Kaldaien Sep 13, 2016 @ 7:21am 
OpenAL is for audio.

It doesn't create an OpenGL device according to the logs, but it DOES create a D3D9 device.
< >
Showing 1-15 of 754 comments
Per page: 1530 50

All Discussions > Development > Topic Details