Special K

From PCGamingWiki, the wiki about fixing PC games
Special K
Developers
Kaldaien
Release dates
Windows August 27, 2016

Key points

Extensive game modifying framework allowing for various in-depth tweaking of a game. The focus is primarily on the graphics pipeline but it also includes various features such as input device blocking/configuring, etc.
As with other third-party stuff, Special K can have an adverse effect if used in multiplayer titles where anti-cheat protection exist.
Includes a number of game-specific changes and optimizations, although minor ones are not exposed.
Supports multiple graphics APIs as well as injection methods, making it compatible with a lot of games.
Does not support DirectX 12, 10, 7, or older. Vulkan is partially supported, although as rendering is not available all changes must be performed through the config files.
Causes performance issues on Windows 7, when the Desktop Window Manager (DWM) is disabled.

General information

Official Steam Group
Unofficial Guide
Releases
Changelog
Source code

Contents

Installation[edit]

Global (system-wide)[edit]

Launcher for the global injector of Special K.
Launcher for the global injector of Special K.
Allows Special K to inject automatically in all Steam games/applications it detects, as well as non-Steam games the user manually allows.
Stop the global injection before playing a multiplayer game where Special K might have an adverse effect.
Install the global injector of Special K:
  1. Download the latest version available, refer to the Steam Group discussions board for details.
  2. Extract the archive at a location of your choice.
  3. Run the Special K Install Manager using either SKIM.exe (32-bit) or SKIM64.exe (64-bit) located within the extracted files.
  4. Select Special K (Global Injector) in the product list.
  5. Click Install.
  6. After the global injector have been installed injection should automatically have started. To stop the injection, click on Stop Injecting in SKIM.
  7. Use Ctrl+ Shift+← Backspace to access the control panel while in-game.
  8. Use the Special K Install Manager (aka SKIM) icon in the notification area of Windows to start/stop the global injector. A shortcut on the start menu should've also been created during the installation. Global injection is only enabled while SKIM is running and injection have been started.

Notes

Antivirus/Internet Security Suites can cause the installer to fail.
Enable for non-Steam games:
  1. Start the global injection.
  2. Navigate to <path-to-game> and the appropriate subfolder containing the game executable.
  3. Look up what API the game uses. Refer to game-specific articles for details.
  4. Create a new empty file based on what API the game uses out of these:
    • OpenGL: SpecialK.OpenGL32
    • DirectX 11.x: SpecialK.dxgi or SpecialK.d3d11
    • DirectX 9: SpecialK.d3d9
    • DirectX 8: SpecialK.d3d8 - Requires the dgVoodoo plugin installed for Special K.
    • DirectDraw: SpecialK.ddraw - Requires the dgVoodoo plugin installed for Special K.
    • DirectInput 8: SpecialK.DInput8 - Alternative injection method for titles that supports DirectInput 8.
  5. Launch the game. Special K should now detect and hook it.
  6. Use Ctrl+ Shift+← Backspace to access the control panel while in-game.

Local (game-specific)[edit]

Installs Special K for a specific game, making it possible to use with said game without having global injection enabled.
Use at own risk in multiplayer games where Special K might have an adverse effect.
Does not support automatic updates.
Convert global injection to local wrapper DLLs:
  1. Enable global injection.
  2. Launch the game.
  3. Use Ctrl+ Shift+← Backspace to access the control panel while in-game.
  4. Click on File > Install wrapper DLL for this game.
  5. Exit the game, disable global injection and then start the game again. Local injection should now occur instead.
Manually install local wrapper DLLs:
  1. Download the latest version available, refer to the Steam Group discussions board for details.
  2. Extract the archive at a temporary location of your choice.
  3. Navigate to <path-to-game> and the appropriate subfolder containing the game executable.
  4. Look up if the game uses a 32-bit or 64-bit executable, as well as what API is used. Refer to game-specific articles for details.
  5. Move the appropriate Special K DLL file to the folder where the executable were located: SpecialK32.dll for 32-bit, and SpecialK64.dll for 64-bit.
  6. Rename the DLL file to match the API used by the game:
    • OpenGL: opengl32.dll
    • DirectX 11.x: dxgi.dll or d3d11.dll
    • DirectX 9: d3d9.dll
    • DirectX 8: d3d8.dll - Requires the dgVoodoo plugin installed for Special K.
    • DirectDraw: ddraw.dll - Requires the dgVoodoo plugin installed for Special K.
    • DirectInput 8: dinput8.dll - Alternative injection method for titles that supports DirectInput 8.
  7. Launch the game.
  8. Use Ctrl+ Shift+← Backspace to access the control panel while in-game.

Custom game-specific mods[edit]

There are also custom versions available of Special K tailored to certain games. These often features more in-depth changes or fixes that might not exist in the main branch, or are essentially "frozen" versions of Special K guaranteed to have the highest compatibility with their respective game. All game-specific mods are usually also embedded into the main Special K project, although future compatibility can suffer as the main project evolves.
Some of these mods supports automatic updates despite being a local install of Special K; although as the update channel is separate from the main release channel these mods might not be frequently updated, if ever.
In the below table, Manual refers to a game-specific mod that requires the user to manually download, install, and update the mod. Automatic (SKIM) refers to a game-specific mod that supports automatic installation through the Special K Install Manager (see instructions below the table) as well as auto-updates post-install.
Game Install Type Comment
.hack//G.U. Last Recode Automatic (SKIM) Fixes texture shimmering, performance issues, and over-powered bloom lightning.
Assassin's Creed Odyssey Manual Thread scheduling changes.
Dark Souls III Automatic (SKIM) Focuses on render and usability enhancements.
Disgaea PC Automatic (SKIM) Focuses on render, usability, performance, and stability enhancements.
Dragon's Dogma: Dark Arisen Manual Fixes UI/aspect ratio scaling for ultra-widescreen resolutions.
Fallout 4 Automatic (SKIM) Improves frame pacing.
Final Fantasy X/X-2 HD Remaster Automatic (SKIM) A ton of changes, improvements, and features.
Final Fantasy XV Manual Improves frame pacing.
Lego City Undercover Manual Solves issues with fullscreen mode, uncap the framerate and fixes multi-threading performance problems.
Monster Hunter: World Manual Enables HDR10/scRGB output, improves frame pacing and CPU utilization.
Ni no Kuni II: Revenant Kingdom Automatic (SKIM) Fixes timing issues and frame pacing. Not fully functional with v1.03 of the game.
Nier: Automata Automatic (SKIM) Increases performance, fixes cutscene stuttering, and various other improvements.
Shenmue I & II Manual Anisotropic filtering, mipmap generation, pillarbox remover for cutscenes.
Tales of Berseria Automatic (SKIM) A ton of stuff.
Tales of Symphonia Automatic (SKIM) A ton of stuff.
Tales of Zestiria Automatic (SKIM) A ton of stuff.
Yakuza 0 Manual Toggles for disabling blur, depth of field, ambient occlusion. Allows HUD-less screenshots.
Install a "Manual" game-specific mod:
  1. Download the latest version available, refer to the mod link in the table above.
  2. Extract the archive to <path-to-game> where the executable resides.
  3. Launch the game.
  4. Use Ctrl+ Shift+← Backspace to access the control panel while in-game.
  5. Refer to the game-specific article here on PCGW or the mod-specific thread for instructions about features included in the mod.
Install an "Automatic (SKIM)" game-specific mod:
  1. Download the latest version available, refer to the Steam Group discussions board for details.
  2. Extract the archive at a location of your choice.
  3. Run the Special K Install Manager using either SKIM.exe (32-bit) or SKIM64.exe (64-bit) located within the extracted files.
  4. Select the appropriate game-specific mod in the product list:
  5. Click Install to install the selected mod.
  6. Use Ctrl+ Shift+← Backspace to access the control panel while in-game.
  7. Refer to the game-specific article here on PCGW or the mod-specific thread for instructions about features included in the mod.

Notes

Antivirus/Internet Security Suites can cause the installer to fail.

Disable for specific executables[edit]

Disable injection for a specific executable if it is found to cause issues.
Do either of the following:
  • Hold down Ctrl+ Shift while the process is starting up. This should open the Special K Injection Compatibility Options where you can disable the auto-injection.
  • Create an empty file called SpecialK.deny.[executable_name] in the same folder as the executable file you want to disable injection for.

Game data[edit]

game-specific in the below tables refers to either the title of the game (Steam releases) or the executable filename of the game (other platforms).

Configuration file(s) location[edit]

Some game-specific mods use a separate *.ini file to store the configuration for game-specific tweaks, such as FAR.ini for the "FAR" (Fix Automata Res.) mod for Nier: Automata.
Configuration for some modules (e.g. achievements, macros, on-screen display) are stored in %USERPROFILE%\Documents\My Mods\SpecialK\Global\*.ini
Type of install Location
Global
Local (converted from global)
%USERPROFILE%\Documents\My Mods\SpecialK\Profiles\game-specific\SpecialK.ini
Local
(manual / game-specific mod)
<path-to-game>; in the game executable folder. Filename mirrors DLL file, e.g. dxgi.ini.

Log file(s) location[edit]

The crash handler of Special K will move all logs related to a crash to a time-specific <path-to-game>\logs\crash\<timestamp>\*.log folder if it manages to capture data about the crash.
Type of install Location
Global
Local (converted from global)
%USERPROFILE%\Documents\My Mods\SpecialK\Profiles\game-specific\logs\*.log
Local
(manual / game-specific mod)
<path-to-game>\logs\*.log

List of log files and what they capture:

Log files marked with bold formatting are generally more important.
  • CEGUI.log - Stores logs related to the Crazy Eddie's GUI System component used for custom achievement popups and the on-screen display monitoring.
  • crash.log - Stores captured crash data if the crash handler of Special K were able to capture data related to the crash.
  • SpecialK.log or <wrapper-DLL>.log - Main log file for Special K, stores injection, render pipeline, and other related events.
  • dxgi_budget.log - Stores DXGI memory statistics at shutdown.
  • game_output.log - Stores everything the game outputs to the standard output stream of the operating system.
  • modules.log - Stores DLL files loaded by the game that Special K was able to detect and log.
    • Note that tools or applications using more obscure ways of injecting themselves to avoid detection will not listed in this log file.
  • ReShade.log - Stores logs related to the custom ReShade plug-in of Special K, if used.
  • steam_api.log - Stores logs related to the Steam API and enhancements.

Video settings[edit]

Compatibility for features varies for games; most usually works, but at times a game might not function properly with some. Hold down Ctrl+ Shift while launching a game if you need to reset the config file of Special K.

Windowed[edit]

Force window mode for games that do not natively support it:
  1. Launch the game with Special K enabled and confirmed working for the game.
  2. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  3. Open the Display menu on the top.
  4. Change Fullscreen Mode to Windowed Mode.
    • The Force Override option might be required as well for some titles and automatically applying the override on next launch.
  5. Restart the game to confirm everything works. See Mouse locking if the cursor is not locked to the game window.

Borderless fullscreen windowed[edit]

Force borderless fullscreen windowed for games that do not natively support it:
  1. Launch the game with Special K enabled and confirmed working for the game.
  2. Configure the in-game options to window mode and the resolution of the monitor.
    • See Windowed for how to force window mode for games that do not expose it.
  3. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  4. Open the Display menu on the top.
  5. Change Window style to Borderless Fullscreen.
    • The Force Override option might be required as well for some titles and automatically applying the override on next launch.
  6. Restart the game to confirm everything works. See Mouse locking if the cursor is not locked to the game window.

Refresh rate (Hz)[edit]

Force a custom refresh rate:
  1. Install Special K for the game, either globally or locally.
  2. Launch and close the game once to allow the Special K config file to be created.
  3. Open the game-specific config file, see Configuration file(s) location for details.
  4. Find and change the parameter RefreshRate to the desired refresh rate (e.g. "RefreshRate=120").
  5. Save and close the file.

Notes

RefreshRate=0 will automatically use the highest available refresh rate.
RefreshRate=-1 will disable the override and use whatever the game requests.

Scan type[edit]

Controls if the game outputs in progressive or interlaced scanning. This is normally more relevant for a television than a computer monitor, as typically computer monitors only support progressive display modes.
This override should only be used if the game does not properly output to the correct scan mode.
Force a custom scanning method:
  1. Install Special K for the game, either globally or locally.
  2. Launch and close the game once to allow the Special K config file to be created.
  3. Open the game-specific config file, see Configuration file(s) location for details.
  4. Find and change the parameter ScanlineOrder to one of the below values:
    • Progressive for progressive scan.
    • UpperFieldFirst for interlaced even scan.
    • LowerFieldFirst for interlaced odd scan.
    • DontCare to retain the game default.
  5. Save and close the file.

Limit resolution[edit]

Limits the minimum and maximum reported resolution to a game. In some games, this can be used to override the resolution to one not supported by the game.
DirectX 11 only.
Limit the minimum and maximum reported resolution for a DirectX 11 game:
  1. Launch the game with Special K enabled and confirmed working for the game.
  2. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  3. Expand DirectX 11 Settings > Resolution Limiting.
  4. Change Minimum/Maximum Resolution to the desired resolution(s).
  5. Restart the game to evaluate whether the resolution limiting is effective or not.

Notes

Remove the resolution limit by changing the Minimum/Maximum Resolution values to 0, followed by a game restart.

Override resolution[edit]

Overrides the framebuffer resolution in windowed modes, forcing games to render at a higher resolution than what they might natively support.
Force an override resolution in windowed modes for games that do not natively support it:
  1. Launch the game with Special K enabled and confirmed working for the game.
  2. Configure the in-game options to window mode.
    • See Windowed for how to force window mode for games that do not expose it.
  3. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  4. Expand Window Management > Style and Position.
  5. Enable Borderless and Center.
    • Do not enable Fullscreen (Borderless Upscale) as this will disable the override resolution.
  6. Change Override Resolution to the desired resolution.
  7. Restart the game to confirm everything works. See Mouse locking if the cursor is not locked to the game window.

Notes

Remove the override resolution by changing the Override Resolution values to 0, followed by a game restart.

Continue rendering[edit]

Prevents games from pausing when they lose focus.
Instructions
  1. Launch the game with Special K enabled.
  2. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  3. Expand Window Management > Input/Output Behavior.
  4. Enable Continue Rendering.
  5. Press Ctrl+ Shift+← Backspace to close the control panel of Special K.

Frame rate limiter[edit]

Limits the FPS of a game to the desired value, potentially improving frame pacing and timing consistency at the loss of a somewhat lower averaged FPS.
Instructions
  1. Launch the game with Special K enabled.
  2. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  3. Expand Framerate Limiter.
  4. Enable Framerate Limit and configure a desired value (Ctrl+MouseClick to type in an exact value).
  5. Press Ctrl+ Shift+← Backspace to close the control panel of Special K.
  6. (Optional) Clicking on Advanced to the right side of the Framerate Limit slider exposes in-depth configuration of the limiter:
    • Use Multimedia Class Scheduling enables MCMCSS to ensure the limiter receives prioritized access to CPU resources.
    • Busy-Wait Limiter spins the render thread to 100% load to improve frame time consistency.
    • Reduce Input Latency optimizes input latency in games which process input, rendering, and window events in the same thread.
    • When Busy-Wait Limiter is disabled:
      • Sleep Once, then Spin sleeps the limiter for the configured duration, then uses busy-waiting the rest of the timing window until it is time for the next frame.
      • Burn CPU Cycles for Better Timing starts to burn CPU cycles when the timing is within the specified value of the next frame.
      • Sleep Duration specified how long the limiter should sleep at a time.

Notes

Limit the FPS to 3 below the maximum refresh rate if using a variable refresh rate monitor such as G-Sync/FreeSync.

Flip model presentation[edit]

Flip model is a presentation model designed to make windowed mode effectively equivalent or better when compared to the classic "fullscreen exclusive" mode.[1]
Windows 10's fullscreen optimizations for DirectX 9-11 tries to automatically convert some games configured to use "fullscreen exclusive" mode into using flip model presentation in a maximized borderless window instead.
Allows the use of variable refresh rate (VRR, G-Sync/FreeSync) in borderless maximized windows even without the display driver configured to allow VRR in windowed mode.
Special K only supports forcing flip model presentation for games using DirectX 11, and even then it might not function properly for all games.
Force a game to use flip model presentation:
  1. Install Special K for the game, either globally or locally.
  2. Launch the game.
  3. Configure the in-game options to borderless fullscreen windowed mode (it is often called just borderless mode).
  4. Restart the game and verify that the borderless fullscreen windowed mode works as expected.
  5. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  6. Expand the Direct3D 11 Settings section and the subsection called SwapChain Management.
  7. Enable Use Flip Model Presentation.
  8. Close the control panel and then restart the game to confirm everything works.
    • If everything works the popup shown while hovering over Window/Fullscreen Resolution at the top of the Special K control panel should show Discard (flip).
    • If the game does not launch properly, open the game-specific config file and change UseFlipDiscard to false.

Input settings[edit]

Mouse locking[edit]

Lock the mouse to the game window for games that do not natively support it:
  1. Launch the game with Special K enabled.
  2. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  3. Expand Window Management > Input/Output Behavior and set Cursor Boundaries to Keep Inside Window.
  4. Restart the game to confirm everything is working as intended.

Haptic feedback[edit]

The control panel of Special K uses haptic UI feedback; this can cause a controller to rumble even if the keyboard/mouse is being used to navigate the UI.
Toggle haptic feedback:
  1. Launch the game with Special K enabled.
  2. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  3. Expand Input Management > Gamepad and toggle the following settings as desired:
    • Haptic UI Feedback affects only the built-in UI feedback of Special K.
    • Disable ALL Rumble affects all haptic feedback.
  4. Press Ctrl+ Shift+← Backspace to close the control panel of Special K.

Disable type(s) of input[edit]

This will block the game from receiving input of the blocked type. It can be used to e.g. prevent input devices from messing with the game. The block only affects the game itself and not Special K.
Instructions
  1. Launch the game with Special K enabled.
  2. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  3. Expand Input Management > Enable / Disable Devices and disable the desired type of input:
    • Disable Mouse Input to Game
    • Disable Keyboard Input to Game
    • Disable Gamepad Input to Game
  4. Press Ctrl+ Shift+← Backspace to close the control panel of Special K.

Audio settings[edit]

Audio options Native Notes
Separate volume controls
Customize individual speaker volume in games, see Separate volume controls.
Surround sound
Subtitles
Closed captions
Mute on focus lost
For games without native support, see Mute on focus lost.

Localizations

Language UI Audio Sub Notes
English

Separate volume controls[edit]

Special K allows muting or changing the volume per individual speakers for a game.
While using a 7.1 audio output device (virtual or physical) this can be helpful to determine what surround sound a game supports.
Instructions
  1. Launch the game with Special K enabled.
  2. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  3. Expand Volume Management.
  4. All speakers used by the game will be listed, and the volume through each can be controlled or muted individually.
  5. Press Ctrl+ Shift+← Backspace to close the control panel of Special K.

Mute on focus lost[edit]

This will mute the game when it does not have focus.
Instructions
  1. Launch the game with Special K enabled.
  2. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  3. Expand Window Management > Input/Output Behavior.
  4. Enable Mute Game.
  5. Press Ctrl+ Shift+← Backspace to close the control panel of Special K.

Steam enhancements[edit]

Special K makes heavy use of the Steam API to enhance the experience of Steam players with various features, including custom notifications for unlocked achievement, smarter screenshot capturing, real-time player count, and various other enhancements.
Due to the nature of these enhancements, third-party Steam API emulators is known to cause conflicts and crashes unless the enhancements are disabled.

Change position of Steam Overlay notifications[edit]

This allows changing what corner the default Steam Overlay notifications appear in.
There is no way to disable or hide the notifications, as this option is not exposed through the Steam API.
Instructions
  1. Launch the game with Special K enabled.
  2. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  3. Expand Steam Enhancements > Overlay Notifications.
  4. Configure the setting appropriately.
  5. Press Ctrl+ Shift+← Backspace to close the control panel of Special K.

Customize achievement enhancements[edit]

Instructions
  1. Launch the game with Special K enabled.
  2. Press Ctrl+ Shift+← Backspace to open the control panel of Special K.
  3. Expand Steam Enhancements > Achievements, as well as the Enhanced Popup section.
  4. Configure the settings appropriately.
  5. Press Ctrl+ Shift+← Backspace to close the control panel of Special K.

Notes

Use the Test Unlock button to test the current settings.
Set Draw Mode to Disabled to disable the custom notification from appearing.

Throttle Steam API callbacks[edit]

Some games might not be limiting the number of callbacks performed to the Steam API, which can have an adverse effect on other parts of the game.
The effect of throttling the callbacks differ between games. Some might not see a difference at all, while other games might see a noticeable improvement. For example, in Final Fantasy XV throttling the Steam API callbacks saw a decrease in loading times and minor improvements to frame pacing when data were streamed from the drive.
Throttle the Steam API callbacks for a game:
  1. Install Special K for the game, either globally or locally.
  2. Launch and close the game once to allow the Special K config file to be created.
  3. Open the game-specific config file, see Configuration file(s) location for details.
  4. Find the [Steam.System] section and change the parameter CallbackThrottle to a value between 8 and 30.
  5. Save and close the file.

Notes

Set the parameter to -1 to disable the throttling.
Do not use a lower value than 8, as this can affect achievement unlocks.
The change can be observed on the SteamAPI Frame value at the bottom of the in-game control panel of Special K.

Disable all enhancements[edit]

The Steam enhancements can be disabled if troubleshooting compatibility issues with a game, or if not desired.
Note that this also prevents game-specific fixes that rely on the enhancements from being applied, such as the Steam API callback throttling for Final Fantasy XV.
Disable Steam enhancements for a game:
  1. Install Special K for the game, either globally or locally.
  2. Launch and close the game once to allow the Special K config file to be created.
  3. Open the game-specific config file, see Configuration file(s) location for details.
  4. Find the [Steam.Log] section and change the parameter Silent to true:
  5. [Steam.Log]
    Silent=true
  6. Save and close the file.

Issues fixed[edit]

Game crashes with Special K injected[edit]

Occurs most commonly at launch of a game, and is usually caused by conflict(s) with other running third-party tool(s) or application(s).
Note that the crash handler of Special K is capable of capturing data for crashes that occurred unrelated to the mod itself.
Disable FRAPS if it is being used! FRAPS is known to conflict with Special K, and the nature of the crash prevents Special K from properly logging its presence (modules.log will be partially incomplete).
Troubleshoot the issue:
  1. Temporarily disable/remove Special K from the game (either disable global injection or rename the local <wrapper-DLL>.dll) and see if the issue reoccurs. If it does then the crash was unrelated to Special K and there is no reason to troubleshoot further using the below instructions.
  2. Navigate to the game-specific log files, see Log file(s) location for details.
  3. Consult the crash.log, SpecialK.log/<wrapper-DLL>.log and the modules.log to find more information related to the crash.
    • Does crash.log indicate that the crash was related to a Special K related function (SK_*)?
      • If a Special K related function were involved then it could be a bug in Special K itself.
      • If no Special K related function was involved then it is possible the game crashed completely independent of Special K.
    • Does modules.log indicate that non-Special K, non-Windows, non-driver, non-game, and non-Steam (or other platforms) related DLLs were injected into the game?
      • C:\Windows\system32\*.dll typically indicates a DLL file related to either Windows or a display drivers. These can typically be ignored, however do note that apphelp.dll, AcLayers.dll, or AcGenral.dll indicates that the application compatibility engine of Windows is influencing the game in some way, which can cause conflicts for Special K as well.
      • <path-to-game>\*.dll are safe to ignore, unless using other non-Special K related third-party mods located in the game folder which can cause conflicts as well.
      • Other locations (such as inside the Program Files folder(s)) indicates the presence of a third-party DLL file that might be causing the conflict.
    • Does SpecialK.log/<wrapper-DLL>.log list additional third-party DLL files injected into the game that matches the list of things to look out for? Or does the log file indicate that the crash seemingly occurred at a specific point (i.e. what is the last thing logged)?
  4. Use the name of the DLL file(s) found in the previous step, their path, and/or search online to locate what application or tool the DLL file is related to. Then proceed to exit/disable those applications/tools one by one until either the issue is fixed, or all of the third-part DLL files are excluded from the new logs that are generated from Special K.
  5. When all third-party DLL files have been excluded, various Special K components and modules can be disabled for troubleshooting purposes. Start by opening the game-specific config file, see Configuration file(s) location for details.
    1. General:
    • Disable Steam enhancements by changing the parameter Silent to true in the the Steam.Log section. See Disable all enhancements for details.
    • Disable the On-Screen Display and custom achievement popups by changing the parameter EnableCEGUI to false in the the SpecialK.System section.
    • Disable all unrelated API hooks by changing <API> to false in the the API.Hook section.
    1. DirectX 11 related:
    • Disable the texture cache by changing the parameter Cache to false in the the Textures.D3D11 section.
    • Disable the hooks cache by setting EnableGlobalCache and EnableLocalCache to false in the the D3D11.Hooks and DXGI.Hooks sections. Also remove all existing hooks in those sections (basically everything else beneath both sections).
  6. If the above did not solve the issue, upload the latest logs to Pastebin and link them over on the Steam Group discussions board or the relevant game-specific forum thread to request further help from the community.

The Alert (!) sound from Metal Gear Solid plays when the game crashed[edit]

The crash handler of Special K plays the iconic Alert (!) sound from Metal Gear Solid if it managed to capture data related to a crash.
This does not mean that Special K was involved in the crash; it just means a crash occurred and Special K was able to capture data related to it.
Troubleshoot according to Game crashes with Special K injected.

Problematic XInput software detected (infinite haptic feedback loop)[edit]

Special K throws this warning if it detects a circular dependency issue involving different versions of XInput.[2]
Restart all applications drawing an overlay (e.g. Steam, Origin, Uplay) and/or disable said overlays.
Disable the use of XInput in Special K (does not affect the game):
  1. Open the game-specific config file, see Configuration file(s) location for details.
  2. Find the [Input.XInput] section and add a new line below that says Enable=false:
  3. [Input.XInput]
    Enable=false
    Rehook=false
    PlaceholderMask=0
    UISlot=0
    SlotReassignment=0,1,2,3
  4. Save and close the file.

Issues unresolved[edit]

Direct3D 9 issues[edit]

Injecting Special K caps the frame rate to the refresh rate[edit]

Injecting Special K globally (including delayed) or locally into a DirectX 9 game will cause the frame rate to cap to the refresh rate of the monitor.[3]
A workaround is to use Disable fullscreen optimizations and configure the game to exclusive fullscreen mode.

Windows 10 v1803 and 'Disable fullscreen optimizations' issues[edit]

Using d3d9.dll prevents games from launching[edit]

Underlying cause of the issue seems to be a change in how Windows 10 handles the Disable fullscreen optimizations option in the application compatibility engine.[4]
A workaround is to uncheck Disable fullscreen optimizations or use another <wrapper-DLL>.dll as injection point.
This issue also affects ReShade, although SweetFX is not affected.

Using dxgi.dll prevents fullscreen optimizations from being disabled[edit]

Underlying cause of the issue seems to be a change in how Windows 10 handles the Disable fullscreen optimizations option in the application compatibility engine.[5]
A workaround is to uncheck Disable fullscreen optimizations or use another <wrapper-DLL>.dll as injection point.
This issue also affects ReShade.

Windows 7 issues[edit]

Special K causes performance issues when used with DWM disabled[edit]

Using Special K with a game when DWM is disabled on Windows 7 causes immense performance issues.[3]

Other information[edit]

API[edit]

This refers to the APIs supported by and compatible with Special K as an injection point.
DirectInput 8 is also supported as an injection point.
Technical specs Supported Notes
Direct3D 8, 9, 11 D3D8 requires dgVoodoo plugin.
DirectDraw 7 Requires dgVoodoo plugin.
OpenGL 1, 2, 3, 4
Vulkan 1.0 Rendering is not available; manual edit of the config file is required.
64-bit executable
32-bit also available.

Configuration file(s) parameters[edit]

See config.cpp for a list of all parameters that can be used, as well as their section and configuration file.
Below is a table of what the tab-based columns of the source code correspond to.
Column Comment
1 Internal parameter name.
2 Description of what the parameter does.
3 Lists what configuration file the parameter resides in (e.g. dll_ini for dxgi.ini/dinput8.ini/etc).
4 Lists the section of said configuration file (e.g. [Input.Cursor]).
5 Lists the key for the parameter used in the configuration file (e.g. UseHardwareCursor)

Keybindings[edit]

General[edit]

Keyboard Controller Function
Ctrl+ Shift+← Backspace Back/Select+Start Toggle the control panel
Ctrl+ Shift+O N/A Toggle the on-screen display (OSD)
Hold Ctrl+ Shift while launching game N/A Opens the injection compatibility options

Control Panel[edit]

Keyboard Controller Function
Caps Lock Hold Back/Select for 0.5 seconds Toggle exclusive input mode (game vs. control panel)
+++ +++ Cycle through UI items
Enter A / × Activate selected item
Ctrl+ Shift+← Backspace B / ○ Exit control panel
Ctrl+Alt++++
(exclusive keyboard mode only)
X / □+Left Analog Stick Move the control panel window

On-Screen Display (OSD)[edit]

Color and scale config is stored in %USERPROFILE%\Documents\My Mods\SpecialK\Global\osd.ini
Keyboard Controller Function
Ctrl+ Shift+O N/A Toggle the on-screen display (OSD)
Ctrl+ Shift++ / - N/A Resize the on-screen display (OSD)
Ctrl+ Shift+F N/A Toggle framerate counter
Ctrl+ Shift+T N/A Toogle clock / version
Ctrl+ Shift+G N/A Toggle GPU monitor
Ctrl+ Shift+C N/A Toggle CPU monitor
Ctrl+ Shift+M N/A Toggle memory monitor
Ctrl+ Shift+I N/A Toggle I/O monitor
Ctrl+ Shift+D N/A Toggle disk monitor
Ctrl+ Shift+P N/A Toggle page file monitor
Ctrl+ Shift+R N/A Toggle D3D11 shader analytics

Advanced[edit]

Keyboard Controller Function
Ctrl+ Shift+Tab N/A Toggle the command console. See the console documentation for more information.

System requirements[edit]

Requires Visual C++ 2017 Redistributables (32-bit, 64-bit) and the DirectX End-User Runtime.
Windows 7 also requires KB2670838 and KB2533623, although one/both might be superseeded by another already installed update(s).
Windows
Minimum Recommended
Operating system (OS) 7 8.1, 10
Processor (CPU)
System memory (RAM)
Hard disk drive (HDD) 150 MB
Video card (GPU) DirectX 11 compatible

References