Code Monkey home page Code Monkey logo

specialk's People

Contributors

aemony avatar banz99 avatar bburky avatar braasileiro avatar cathyjf avatar kaldaien avatar maplehinata avatar nustat0 avatar trass3r avatar wallsogb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

specialk's Issues

Issues with GPU statistics on multi-GPU systems

i'm running a system with a Nvidia GPU (GTX 1070) and a AMD GPU (RX 6950 XT). When I'm playing a game on the RX 6950 XT i'm getting statistics for the GTX 1070 instead of the RX 6950 XT (which is rendering the game)

[dgVoodoo v2.78] HDR retrofit needs resolution override to work

Set up everything with the instructions here and version 2.77 and it works.
Replace the d3d9.dll with 2.78, and you get a black screen (SDR has no problems).
Tested on W10 21H2 with a 3060 and forceware 512.15.

Then, for all I know it may not even be a problem with SK (22.5.30), but Dege didn't particularly seem to care about this niche case, so...

[Suggestion] ability to disable all SK UI elements per-game

Special K version: 22.7.29-NOCEGUI and above

API: ANY

Summary: There are two components to the issue:

  1. Windowed games with a forced small size (800x600). RPG Maker games such as Pokemon Uranium serve as a case example of this. In this situation, the overlay items are oversized, especially the SK GUI, where none of the right side or the bottom is visible or clickable. This can be obstruct the visibility of crucial game elements.

  2. Games that have important information scattered all around the screen. With some games, this cannot be helped. Putting the SK overlays in any position will still obstruct the information that a player may need in relation to specific games. There is no known pattern of this, and pixel art games are especially affected by this issue.

Expected Behavior: Users being given an option to hide all and any display element of SK, set per individual game. It can be toggled with one button or INI config, but has to be a saved setting for each separate game.

Final Thoughts: Having OSD and widgets will be a very detrimental experience in these situations. It is much more ideal to have a set-it-and-forget-it solution over having to manually toggle it per game.

[OpenGL and possibly other games] Title bar being obscured in windowed games

Special K version: 22.7.29-NOCEGUI and above

API: OpenGL-IK and likely also OpenGL and other API's

Game Engine: RPG Maker (MZ, MV, XP, etc)

Summary: When you start up the affected games, there is a bar of white (or any colour, really) that goes over the title bar. It looks like the top section of the game has been digitally marked with a white highlighter. This also obscures the top portion of the games which often presents vital game data such as health, ammo, progress information, etc.

Expected Behavior: For the title bar to show as it is normally for any window program what is windowed.

Final Thoughts: I have no clue as to what is going on there. It is possible for a setting or combination of settings in SK to cause this issue, but I have no way to verify this at the moment.

[OpenGL games] Forced mouse priority

Special K version: 22.7.29-NOCEGUI and above

API: OpenGL-IK and likely also OpenGL

Game Engine: RPG Maker (MZ, MV, XP, etc)

Summary: Basically, the mouse stays focused on the game itself, no matter what is happening in overlays such as the SK GUI. For example, with the SK GUI open, the mouse will always stay focused on the game itself.

Expected Behavior: For things like the SK GUI to have the appropriate focus context when it is open or when it is closed.

Final Thoughts: This is a problem that is commonly cited as being caused by Steam Chords and SteamInput. However, in my test cases, Steam is not involved, which makes this issue a bit puzzling.

[NieR: Automata] [Linux/WINE] Crash during launch, unless I enable NvAPI

I know this makes no sense at all considering NvAPI doesn't even work on Linux, but that's what I concluded.

If I launch with NvAPI disabled (by setting UsingWINE=true), it fails to launch:

dinput8.log

It seems to be related to audio.

However, when I set UsingWINE=false and keep NvAPI enabled, it does launch and shows some dialog boxes complaining about NvAPI. After clicking on "ok" a few times everything seems to work just fine:

dinput8.log

It's almost as if the NvAPI error dialogs delay the loading of SpecialK enough for it to not trigger this problem, since SpecialK only continues loading after I dismiss those dialogs.

Toggling NVIDIA.API.Disable while leaving UsingWINE=false also allows me to trigger this issue, so I'm reasonably certain it is related to NvAPI (although in a very weird and most likely unintended way). I am also using dinput8 injection right now, but dxgi injection has the same results, so it doesn't matter.

I was hoping I would be able to simulate such loading delay without enabling NvAPI, such that I could enable UsingWINE. I tried setting GlobalInjectDelay, but it didn't work as I had hoped.

[Rise of the Tomb Raider] sRGB Bypass needs Apply

Special K needs to use the sRGB Bypass Apply mode for Direct3D 11 in this game as otherwise it results in a much too dark image.

Special K defaults (sRGB Passthrough)
20221217105245_1

W/o Special K or sRGB Apply
20221217105325_1

The D3D12 mode of the game is unaffected and works properly.

[D3D9Ex] Native D3D9Ex BitBlt Discard games has black screen when FlipEx is forced without texture modding enabled

UPDATE: Seems if I enable texture modding, the issue goes away.

So for d3d9ex games to work, 3 of these have to be enabled:

[Render.D3D9]
ForceD3D9Ex=true
EnableFlipEx=true
EnableTextureMods=true
UseD3D9On12=false

Maybe a popup for future users that they need texture modding enabled when on d3d9ex native games? Or some sort of ini override that will force the setting on if ForceD3D9Ex=true?


**Special K Version**: _Above_ 22.5.30-NOCEGUI

**Game**: Native d3d9ex games. (Tested Blazblue Centralfiction, and FF13 lightning returns)

**Summary**: New versions of SK are unable to get hardware flip in native d3d9ex games without corrupting the output image.

Setting ForceD3D9Ex=true will result in the game's output image to be corrupted. Inputs and audio still work.  

For some weird reason, 22.5.30-NOCEGUI has no issues, and is able to engage d3d9ex + hardware [composed]: Independent Flip while the game is set to windowed/borderless. This version works perfectly. 

Here is an example of the corrupted image the latest SK versions produce:
![test](https://user-images.githubusercontent.com/7017110/189781259-26a51015-dbad-4904-b451-4ce3ff1f62b2.png)

The SK GUI works, the game does not crash, audio works, and hardware flip itself is initialized; just the image is well curropted.

**How to reproduce**: Inject a version of SK (local or global, does not matter) above the mentioned version into a d3d9ex game, and set ForceD3D9Ex=true and EnableFlipEx=true. Just enabling ForceD3D9Ex just has SK "do nothing," since the game is d3d9ex already.

**Final thoughts**: I came across this yesterday talking to Gias, who was aware of the issue; and figured I'd document this as a ticket. I'm hopeful that the fix will not be too complicated, since d3d9ex hardware flip works in older vesrsions.

Thank you!

Steam Deck support?

Hello,
I have used SpecialK for a long time, mostly for both NieR:Automata and NieR:Replicant. I recently bought a steam deck, and because of its compatibility with games that natively run on Windows I was wondering if there was any way to apply SpecialK to a game within the Steam Deck's filesystem and get it to work so that I could reduce issues and improve performance and possibly battery life.

I have tried to do a manual install of SpecialK to NieR:Replicant, replacing the .exe with the older version as stated in the wiki and replacing dxgi.dll with SpecialK following the instructions in the wiki, except the .dll was not found in the game folder under /home/.local/share/Steam/steamapps/common/<gamefolder>/dxgi.dll and instead under /home/.local/share/Steam/steamapps/compatdata/1113560/pfx/drive_c/windows/system32/dxgi.dll, where 1113560 is the Steam ID for NieR:Replicant.

This proved to not work, even though it did boot correctly without Steam reporting that it had pulled the correct versions of the files. SpecialK did not appear whatsoever. Is there anything that can be done to make SpecialK work on a Steam Deck through Proton? If not, would there be anything in the works to maybe get it running? Thank you all for your time and assistance.

Edit: I have taken a closer look at the README and noticed that SpecialK does run through Wine and DXVK, which I believe Proton uses, so I have a feeling this might have just been a matter of where the files are at.

Dungeon Keeper 2

I got SpecialK+dgVoodoo basically working with DK2 (though it easily crashes inside d3d11.dll when you pan around).

   D3D11.DLL >            D3D11CoreCreateLayeredDevice
   D3D11.DLL >            D3D11CoreCreateLayeredDevice
 dinput8.dll >           D3D11_RSSetViewports_Override
 dinput8.dll >       D3D11Dev_CreateTexture2D_Override
 dinput8.dll >       D3D11Dev_CreateTexture2D_Override
 dinput8.dll >                   SK_ImGui_ControlPanel
 dinput8.dll >       SK_ImGui_InstallOpenCloseCallback
 dinput8.dll >                      SK_ImGui_DrawFrame
 dinput8.dll >                 ImGui_ImplDX11_NewFrame

In the live texture view when selecting 'All Textures' I even see some but DumpOnFirstLoad=true doesn't save anything but a single useless 1x1:

Dumped Name:    Uncompressed_E51A1896.dds
Texture:        e51a1896::e51a1896
Dimensions:     (1x1)
Format:         028 (DXGI_FORMAT_R8G8B8A8_UNORM)
MipLODs:        01
----------------
BindFlags:      0x0008
Usage:          0x0000
CPUAccessFlags: 0x00
Misc:           0x00
ArraySize:      01

AllowStaging is on.

The logs show lots of

[DX11TexMgr] Impossible to cache texture (Code Origin: 'DDRAW.dll') -- Misc Flags: 0, MipLevels: 1, ArraySize: 1, CPUAccess: 0, BindFlags: Shader Resource, Render Target, Usage: Default, pInitialData: 00000000 (00000000)
[  D3D 11  ] CreateRTV, Format: DXGI_FORMAT_R8G8B8A8_UNORM

Probably cause of this line:

pInitialData != nullptr &&

Technical possibility of eliminating scanline sync lag completely

SK_D3DKMT_WaitForVBlank ();

Is it possible to call the wait after the present, not before? That would eliminate the lag and make scanline sync basically equal to adaptive sync.

Obvious problems are:

  1. the wait time should predict how long the next frame creation will take on CPU (now only the GPU processing time is an unknown variable and it's adjusted only manually if understand it correctly)
  2. if wait time is predicted incorrectly there will be a lag or a tear depending on what's the direction of miss

How does it sound to you?

Support for RTX Remix

Just by glancing at the code I assumed SpecialK uses Vulkan as the rendering backend. It would be nice to have an option to enable RTX via DXVK-remix (if that's even possible).

[Feature Request] Support for AVIF screenshots with HDR metadata

There are a lot of reasons to drop JXR in favor of AVIF:

  • JPEG-XR (JXR) has essentially been deprecated and superseded by AVIF (and JPEG-XL, but Google dropped support recently).
  • No current web browser and no image viewer except Windows Photos can show HDR content in JXR files, which is very unfortunate.
  • AVIF has standardized HDR support and is usable in most major web browsers and more software than JXR.
  • AVIF has much better compression than any other HDR image format (tested with libaom-av1)

Yes, it's me again, I asked about this format in Discord and Reddit already. I would try to implement it myself, but I have zero experience with DirectX/OpenGL/Vulkan.

Warped screenshots at horizontal resolutions not divisible by 32

Description:
Recently it seems that capturing screenshots using Special K at horizontal resolutions not divisible by 32 creates warped screenshots in D3D9 and D3D12.

  • OpenGL (both vanilla and IK) as well as D3D11 is not affected by the issue.
  • It affects both 32-bit and 64-bit games as well.
  • No error messages are logged in Special K's logs, nor is any indicator of an issue shown either beyond the warped result of the screenshot capture.
  • This affects both the saved screenshot file on the drive as well as the clipboard that gets generated.
  • As long as the horizontal resolution is divisible by 32 the issue won't occur regardless of the vertical resolution.

Steps to reproduce:

  1. Launch a D3D12 or D3D9 game and configure it to run in a 1680x1050 window using the in-game settings screen.
    • Other common resolutions that triggers the issue are 1360x768, 1366x768, 3440x1440.
    • Do not rely on SK's overrides as those might affect the end result.
  2. Restart the game to ensure there's no traces of the previous resolution remaining in the game session.
  3. Wait until the main menu of the game has booted up.
  4. Use F8 or F9 to capture a screenshot using Special K (or any other relevant hotkey).
  5. Inspect the warped screenshot that's produced.

Affected APIs:

  • D3D9
  • D3D12

Unaffected APIs:

  • D3D11
  • OpenGL
  • OpenGL-IK

Affected resolutions:
Any horizontal resolution not divisible by 32 seems to be affected by it.

  • 1680x1050 (16:10)
  • 1360x768, 1366x768 (16:9)
  • 3440x1440 (21:9)
  • 3240x2160 (3:2)
  • etc

[Assassin's Creed Odyssey] Negative "Budget Left" for VRAM

Been using SpecialK for this game for a while now and for some reason, after having played for a few hours straight, the VRAM seems to run out of my 3070 (8GB).

If I restart the game at this point, the memory is back to a normal 6-7GB level (which it hold almost always otherwise). The GPU usage also goes to 100% at this point for some reason (with the core clock being max). I have not idea how GPUs handle the scenario of reaching max VRAM, but this behavior of reaching 100% usage is perhaps normal?

I was simply wondering if there is a way to use SpecialK to investigate this more, and also if this is a known issue for this game.

image

[Assassin's Creed Odyssey] cant launch game?

program crashes or keep loading in splashing image no matter which version (high, med or low or custom) i use, in the newest game v1.5.3 v1.5.6

while if i launch SpecialK 10.3 it runs well, though no obvious change happened :O

[Genshin Impact] sRGB Bypass does not work in newer versions of SK

  • Special K version: 22.6.30.1

  • Game: Genshin Impact 2.8.0

  • Problem Description:
    After using special k, the display is abnormal, the viewport seems to be covered with a layer of fog, and the brighter tones.

  • appendix:
    Abnormal display effect:
    Abnormal



    Normal display effect:
    Normal

  • Hope for help:
    How to set it to display normally or how to reset default configuration to display normally.

Benchmarking hooks / External API to set frame rate cap / or scanline number during Latent Sync

Hello,

API Requirements

For an automated benchmarking app, doing separate tasks, and sometimes in combination

  1. API to set scanline number during Latent Sync.
    ARGS (1): Raster scan line number (integer)
    Not timing critical as long as I eventually have timestamp of eventual first frame that this executes upon

  2. API to set frame rate cap (non Latent Sync)
    ARGS (1): Frame rate cap number (float)
    Not timing critical as long as I eventually have timestamp of eventual first frame that this executes upon

  3. API to enable/disable always doing Flush() after Present(), this stabilizes tearlines.
    ARGS (1): true or false (boolean)
    Not timing critical as long as I eventually have timestamp of eventual first frame that this executes upon

  4. API to set flag to trigger a white flash (or specified color flash) in the SK's next scheduled frame presentation. Should be at one edge of screen, either left or right edge, enough room for a photodiode tester
    ARGS (2):
    ...edge color of frame flash in RGB value (integer)
    ...whether I want that frame to Flush() even if I didn't do step four (boolean)
    Not timing critical as long as I eventually have two timestamps: (A) of time of flag-set, and (B) of post-Present()

  5. API to set a callback function to send me RTDSC/QPC timestamps of all the various timestamps above.
    ARGS (1): Callback function. SK would call my callback to give me a timestamp and what it was for (you could use enums such as TIMESTAMP_CAP_CHANGE, TIMESTAMP_FLUSH_CHANGE, TIMESTAMP_POST_PRESENT, etc)
    Not timing critical for API call timing or callback timing

  6. API to set a non-flash color (prevent false alarms with in-app/in-game content)
    ARGS (1): Edge RGB color to draw for frames that are not flashed, or -1 to disable (signed integer)
    Not timing critical as long as I eventually have timestamp of eventual first frame that this executes upon

Immediacy of Item 4

The goal is I need item 4 to be able to tell SK's next frame presentation event (whenever it may be, at its existing schedule) to do a "draw flash + Present() + Flush() + immediately timestamp".

As long as a boolean flag in Item 4 can be set anytime randomly during the previous frametime, right up to roughly ~0.1ms (100us) prior SK's next scheduled frame presentation event -- I am happy. Timestamps provide the data that I need for my mathematics. It just simply needs to be a thread-safe boolean variable that the frame-presentation thread can check. And the same thread will also draw the white rectangle immediately before Present()+Flush().

SK does not need to touch/modify frame timing AT ALL. I was able to figure out I can use timestamps to solve my problem.

Flush() is important for certain things like stabilizing tearlines. It kills GPU performance, but it improves lag-test numbers for the purposes of determining display-only latency (GPU-port-to-photons) by nigh completely filtering the computer out of the lag number.

Timestamps Requirement

To eliminate timing-precision requirements from API calling, I have worked very hard to eliminate timing-precision requirements for SK, by simply requiring timestamps. Timestamps should be of a microsecond counter such as QueryPerformanceCounter() or RTDSC.

Except where additional timestamps are specified, timestamps are grabbed immediately after the Present() event, or immediately after the Present()+Flush() event corresponding to the said frame in item 1/2/3/4

I just want to be signalled of the timestamps, so I know to mathout/validate/invalidate my test results based on the stream of timestamps.

Goal: Beamracing to filter display lag from GPU/software lag

With all of this data, I have Blur Busters invented algorithms to successfully filter display lag away from GPU/software lag, during lag testing too. (This is called the "Blur Busters beam raced display latency filter algorithm").

"beam raced latency measurements" is an algorithm we've invented to be able to filter display latency separately of GPU/software latency). I would just lag-test all scanline numbers one by one (or binary search towards). After algorithming it all out (on the timestamps), the lowest lag number would be the display-latency only.

Blur Busters plans to open-source this algorithm for all photodiode testers, but we are successfully doing this with our in-house photodiode tester to filter display lag numbers away from GPU/software lag. (IMPORTANT: Credit to Blur Busters is mandatory,

Open to alternatives

I'm open to using RTSS or SpecialK, just need programmatic control of the scanline number from a background analyzer app if possible -- this won't be used in production gaming, but only during benchmarking sessions.

I realize RTSS might be "Right Tool For Right Job" since it currently has more API capabilities (at the moment) but I like SK's superior scanline sync, so, kind of trying to figure out how to have cake and eat it too.

If SK can do something like this, even as an undocumented setting, I'd be happy! I realize that this might be a big ask, but I bet this will be a big help to a ton of websites including ourselves.

Free Blur Busters Invention

If any lagtest vendors such as OSRTT, LDAT, etc implements beamracing in latency testing, as a method of filtering display lag from GPU/software lag, then please credit Blur Busters. If implementing this algorithm in your photodiode tester software or whatever open source Arduino tester you've homebrew'd. Thank you!

Alternatively, wait for us to publish a white paper on this (preferred), but this is revolutionary for a PC to be able to self-filter its own latencies completely, isolating GPU-output-to-photons latency (aka display lag), for certain kinds of benchmarking, or to colorcode latency bars, or other future visualizations (like framerate-vs-lag graphs for testing all VRR framerates, etc).

Disabling mouse input prevents hiding the mouse

Special K version: 22.7.19

Game: Any compatible game/api

Problem: If enabling "Disable Mouse Input to Game" along with "Hide When Not Moved", the default windows pointer will either stay on screen or just "park" itself in the middle. Apparently the functionality worked fine before, but "broke" around the time Replicant was released.

The cursor sticks out like a sore thumb, and sadly makes the "Disable Mouse Input" option unusable.

How to replicate:

  1. Enable "Disable Mouse Input to game"

  2. Enable "Hide When Not Moved" (Set to 0.00 for instant results)

image

Desired results: When enabling "Hide When Not Moved" along with "Disable Mouse Input", no mouse cursor would be visible in the game window; unless opening the SK GUI.

[Enhancement] Using lower resolutions with fullscreen borderless only games.

Special K allows the user to play the game at any resolution they want.
Even FSB only games are supported except when the game loses focus/is closed, the display resolution isn't restored to native.

But actually a simple fix can be implemented to mitigate this.

If possible check if the game window has focus or not periodically, in case if the game window has focus switch the resolution else switch back to native.

Problems with UI

Hi! There are some problems with GUI in my system. Launch:
Снимок экрана_2022-08-23_11-43-07
Choose a game in a list from my steam library
Снимок экрана_2022-08-23_11-43-31

Used software: Ubuntu 22.04, Proton GE 7.30. I tried also Steam Proton 7.0, but result is the same, list of games is invisible and after launching a windows/linux game SKIF interface is absent. Log:

2022-08-23 11:11:48.336 INFO  [316] [SKIF_Initialize@3082] Special K Injection Frontend (SKIF) v 0.9.8
2022-08-23 11:11:48.337 INFO  [316] [SKIF_Initialize@3083] Built 21:31:21, May 30 2022
2022-08-23 11:11:48.337 INFO  [316] [SKIF_Initialize@3084] ----------------------------
2022-08-23 11:11:48.337 INFO  [316] [SKIF_Initialize@3085] Working directory:
2022-08-23 11:11:48.337 INFO  [316] [SKIF_Initialize@3086] Old: Z:\home\~\.local\share\Steam\steamapps\compatdata\3755445415\pfx\drive_c\users\steamuser\Documents\My Mods\SpecialK
2022-08-23 11:11:48.337 INFO  [316] [SKIF_Initialize@3087] New: Z:\home\~\.local\share\Steam\steamapps\compatdata\3755445415\pfx\drive_c\users\steamuser\Documents\My Mods\SpecialK
2022-08-23 11:11:48.739 INFO  [316] [SKIF_UI_Tab_DrawLibrary@918] Populating library list...
2022-08-23 11:11:48.739 INFO  [316] [SK_Steam_GetInstalledAppIDs@173] Detecting Steam games...
2022-08-23 11:11:48.741 INFO  [316] [SKIF_GOG_GetInstalledAppIDs@43] Detecting GOG games...
2022-08-23 11:11:48.741 INFO  [316] [SKIF_EGS_GetInstalledAppIDs@50] Detecting Epic games...
2022-08-23 11:11:48.741 WARN  [316] [SKIF_EGS_GetInstalledAppIDs@75] Failed to read Epic manifest location from the registry!
2022-08-23 11:11:48.741 INFO  [316] [SKIF_EGS_GetInstalledAppIDs@79] Epic manifest location: C:\ProgramData\Epic\EpicGamesLauncher\Data\Manifests\
2022-08-23 11:11:48.741 WARN  [316] [SKIF_EGS_GetInstalledAppIDs@84] Folder does not exist!
2022-08-23 11:11:48.741 INFO  [316] [SKIF_Xbox_GetInstalledAppIDs@28] Detecting Xbox games...
2022-08-23 11:11:48.741 INFO  [316] [SKIF_GetCustomAppIDs@220] Detecting custom SKIF games...
2022-08-23 11:11:48.741 INFO  [316] [SKIF_UI_Tab_DrawLibrary@969] Finished populating the library list.
2022-08-23 11:11:48.743 INFO  [424] [SKIF_UI_Tab_DrawLibrary::<lambda_5>::operator ()@976] Begin streaming game icons and names...
2022-08-23 11:11:48.770 INFO  [424] [SKIF_UI_Tab_DrawLibrary::<lambda_5>::operator ()@983] Loaded the embedded Patreon texture.
2022-08-23 11:11:48.782 INFO  [424] [SKIF_UI_Tab_DrawLibrary::<lambda_5>::operator ()@1169] Finished streaming game icons and names...
2022-08-23 11:16:35.060 INFO  [316] [wWinMain@6376] Writing last selected game to registry: 337000

[Mass Effect] Overly bright or dark surfaces when forcing D3D9Ex

Save file (set m_bIgnoreDLCRequirements=TRUE if loading returns an error)
Incredibly enough, if you just turn the camera 180° from the precise exact spot where you get the infamous AMD black blob issue, you have darkened texture in D3D9Ex (and some very overbright reflection, if you just drive 40 meters till the end of the slope).

D3D9.jpg
D3D9Ex.jpg

I have some very random feeling this may relate to some gamma voodoo, but of course it's not like I'm the one educated here.

[Dying Light 2] Can't launch game.

log shows this.
[DLL Loader] ( sl.common.dll ) loaded ' C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispig.inf_amd64_805ccc89d82a60a4_nvngx.dll' { 'NVSDK_NGX_D3D11_Shutdown1' }

ReShade64 local import broken

Currently the work around is to rename existing
Reshade64.dll to dxgi.dll and SpecialK64.dll to d3d11.dll
or
Reshade64.dll to d3d11.dll and SpecialK.dll to dxgi.dll

effectively enabling reshade to handle it's own hooking
instead of reshade importing anything.

This work around is good so far for everyone except those
who are experimenting with the Windows DXGI to DXVK swapchain.

As we are all looking forward to newer graphics being better implemented
I hope this long known SK bug is revisited.

[MotherGunShip] "Reload All Injected Textures" causes future injection not to be injected

Problem: If a texture that should be injected has not been loaded yet and "Reload All Injected Textures" is executed, the texture will not be injected when loaded by the game.

Step by step:

  1. Test injection normaly. HINT: The texture has to be converted to UNORM_SRGB as decribed here: #12 (comment)
    Or use the file in this zip:
    99E85597.zip
    grafik
  2. Restart the game.
  3. See that 99E85597 has not been loaded yet:
    grafik
  4. Press "Reload All Injected Textures"
  5. Load Mission Room and see that the texture is not injected
    grafik

Highlight achievement screenshots

Special K version: 22.8.17.2-D3D9-IK and above

Game: Any compatible API

Summary: The current behavior of screenshots taken when an achievement is obtained stores the image as if it was any ordinary screenshot taken with F9. This makes the image hard to find among dozens or hundreds of other screenshots in the folder.

Here is my Dragon Quest 11 folder, while there aren't many image files yet; I still can't see which screenshot is related to an achievement at a glance.

ss example

Suggested Behavior: Screenshots of Achievements that are automatically taken via TakeScreenshot=true will either:

A) The filename of the image will be achievement_name.png . For example if a player obtains the Enkindle achievement in Dark Souls 3, and a screenshot is taken, said image will be stored as Enkindle.png

B) Achievement Screenshots will not only be renamed, but also exist in their own folder. One that comes to mind would be /Special k/Profiles/[game]/screenshots/achievements/ .

Using the "Enkindle" example from A ,the image would be stored in /Special k/Profiles/Dark Souls 3/screenshots/achievements/Enkindle.png

This would be the ideal implementation.

Final Thoughts: This change might be small, but will result in creating photo albums of memories we've had playing games; all in one convenient folder.

Thank you!

[OpenGL-IK] Two bugs: Instant freeze + OpenGL gets disabled

Description
There is two bugs related to OpenGL-IK and the Compatibility section of Special K:

  • When using OpenGL-IK, pressing Disable All But The Active API disables OpenGL as well and only leaves Direct3D 11 enabled, causing SK to not go active on the next start of the game.
  • When not using OpenGL-IK in an OpenGL game, enabling Direct3D 11 instantly freezes the game entirely.

Reproduce No. 1:

  1. Launch an OpenGL game.
  2. Open SK's control panel and go to Compatibility section.
  3. Click Disable All But The Active API.
  4. Note that the OpenGL option also got disabled.

Reproduce No. 2:

  1. Disable all APIs other than OpenGL in the config file of Special K.
  2. Launch the OpenGL game.
  3. Open SK's control panel and go to Compatibility section.
  4. Enable Direct3D 11.
  5. Note that the game froze up.

[Mega Man Battle Network Legacy Collection] Dimming issues

Special K version: Any

Game: Mega Man Battle Network Legacy Collection Vol. 1 + Mega Man Battle Network Legacy Collection Vol. 2

Summary: For whatever reason, the game dims after gameplay with third party software injected into it; to the point where it becomes a black screen after ~20 minutes

Suggested Behavior: A fix has been found. For MMBN_LC1.exe and MMBN_LC2.exe either have the compatibility profile as default to be 100% safe, or just these 4 lines would do as well.

[Input.XInput]
Enable=false

[Textures.D3D11]
Cache=false

[Steam.Log]
Silent=true

[Window.System]
DontHookWndProc=true

Note: The compatibility profile does not have DontHookWndProc=true -- so technically it would need to be the compatibility profile plus that setting

Conclusion: Multiple users hop in the discord for the first time asking for help, only to be sent to change those settings. Having them as part of SpecialK's default would mitigate said user's issues, and they'd be able to enjoy the new legacy collection with SK!

[Back to Bed] HDR retrofit causes a black screen

Enabing HDR in this Unity 5 title results in a black screen in game but not in the menus.
No remastering options used.
SK version: 22.7.19

Menus (hdr working correctly):
Back to Bed 23_07_2022 14_08_08

In-game HDR:
Back to Bed 23_07_2022 14_08_36

In-game SDR:
🔆hdr - Discord 23_07_2022 14_17_43

Directive on the last line of `custom_SpecialK.ini` is set to false unconditionally in a particular scenario

As noted on Discord, if custom_SpecialK.ini has Unix line endings, and there's a newline at the end of the file, the directive on the last line gets set to false no matter what. Presumably it's being read as "true\n", which isn't a valid boolean value, so Special K just sets it to false. If there isn't a newline at the end of the file or you switch to Windows line endings, the overrides work as expected. Because many editors default to Unix line endings and adding a newline at EOF, this is an edge case worth looking at with, presumably, a very simple solution since the bug doesn't affect default_ and master_ files.

[D3D9-IK] Games don't work at all in fullscreen with ForceD3D9Ex

Verified in both mass effect, and HL2 (in an inception of flags to avoid the game itself from starting natively with 9Ex). When crashing on start the latter told me:

Error 0x8876086C: D3DERR_INVALIDCALL: The device or the device driver may not support Direct3D or may not support the resolution or color depth specified.

[Ghostrunner] Crash during texture injection (_TYPELESS / _UNORM)

Hi,
when launching and dumping textures of Ghostrunner everything works fine.
But when injecting the original textures, even without modifications, the game crashes when loading these textures.

grafik

Sadly the logs do not give much more info:

07/20/2022 18:30:02.041: D:\Steam Games\steamapps\common\Ghostrunner\Ghostrunner\Binaries\Win64\Ghostrunner-Win64-Shipping.exe:  LowLevelFatalError [File:Unknown] [Line: 258] 
Direct3DDevice->CreateShaderResourceView(TextureResource,&SRVDesc,ShaderResourceView.GetInitReference()) failed 
 at E:/UnrealEngineOML_Source/Engine/Source/Runtime/Windows/D3D11RHI/Private/D3D11Texture.cpp:1315 
 with error E_INVALIDARG
07/20/2022 18:30:26.099: D:\Steam Games\steamapps\common\Ghostrunner\Ghostrunner\Binaries\Win64\Ghostrunner-Win64-Shipping.exe:  LowLevelFatalError [File:Unknown] [Line: 907] 
Rendering thread exception:

LowLevelFatalError [File:Unknown] [Line: 258] 
Direct3DDevice->CreateShaderResourceView(TextureResource,&SRVDesc,ShaderResourceView.GetInitReference()) failed 
 at E:/UnrealEngineOML_Source/Engine/Source/Runtime/Windows/D3D11RHI/Private/D3D11Texture.cpp:1315 
 with error E_INVALIDARG

I am using the pretty much the default settings for SpecialK with activated injection as for other games where these settings work fine.

Am I missing some settings that need to be set or is this game just not compatible with SpecialK Injections?

Best regards

Mount and Blade 2: Bannerlord - SpecialK won't launch when using launcher

Hi,
SpecialK doesn't seem to hook properly if the game is launched using the default native game launcher (TaleWorlds.MountAndBlade.Launcher.exe).
It appears to only work if the game is launched directly through using the Bannerlord.exe or Bannerlord.Native.exe file instead.

Using a custom launcher also does not appear to let SpecialK to hook properly:
https://www.nexusmods.com/mountandblade2bannerlord/mods/1?tab=description
(Using BSLE is preferred because of the numerous advantages it has when running Bannerlord. i.e. Bugfixes, Load Order Sorting, etc.)

Here's the following log files if it's run through a launcher.
d3d11.log
modules.log
crash.log

Here's the log files that get generated if using Bannerlord.exe directly instead.
d3d11.log
steam_api.log
game_output.log
modules.log
dxgi_budget.log

[Final Fantasy XIV] Does not deactivate when other window gets focus

I have been using Special K version 22.3.11.3 with FFXIV for a couple months now with zero issues. I'm not doing anything fancy, just using it as a frame limiter and for getting g-sync in a borderless window.

Today I tried upgrading Special K, and now when I alt-tab out of FFXIV the window doesn't actually lose focus, so it keeps running at full FPS and with all sounds on. I tested with versions 22.5.30, 22.6.22 and 22.6.30, and the behavior was the same. I know there's a way to limit FPS and mute sound of an inactive window with Special K, and those do still work with FFXIV. However, I'd prefer to do those things from the game because the game lets you configure certain sounds to come through even when not in focus.

In Special K, "Continue Rendering" is disabled, and I don't have anything else enabled that looks like it would cause this. If I switch back to 22.3.11.3 alt-tab starts working normally again with the same config.

The only set-up that I could find to make it work as expected was to have SK force the game into a window (i.e., with title bar, etc.) and then it would deactivate properly. But obviously this kind of defeats the purpose.

I tried the following troubleshooting steps suggested on Discord but they didn't fix the issue:

  • Tried both local and global injection (I normally use local, but global behaved the same in all tests below)
  • Resetting my SK ini file by deleting it
  • Confirmed the in-game config is still set to Borderless Window
  • Tested with another game (Diablo 3) and confirmed it properly loses focus when another window gets focus (so this problem seems exclusive to FFXIV)
  • Tried adjusting my SK ini to several suggested alternatives:

(1)
[Display.Output]
ForceWindowed=true

[Window.System]
Borderless=true
Center=true
RenderInBackground=false
AlwaysOnTop=2

(2)
[Display.Output]
ForceWindowed=true

[Window.System]
Borderless=true
Center=true
RenderInBackground=false
AlwaysOnTop=-1

(3)
[Display.Output]
ForceWindowed=true

[Window.System]
Borderless=true
Center=true
RenderInBackground=false
AlwaysOnTop=0

How does Special K exactly spoof CPU cores?

I am interested to know how Special K can spoof CPU cores.
I have checked diagnostics\cpu.cpp, but I can't find any function that sets the Spoofed CPU core amount.

Am I missing something?

Replacing Textures

I'm using a tool for Sims 2 that infers vertex and pixel shaders. In a specific scene, I can see a list of vertex shaders, and when I click on a vertex shader, I can see the textures it uses. I'm wondering if it's possible to replace these textures. Is it possible to infer the dimension of the texture so we can replace it with the exact same dimensions? The format of the texture is available, so it should be easy to convert the new textures to that format.

image

Star Ocean Last Hope 4K Remaster Steam

I am using Special K to mimic borderless fullscreen. After using Alt-Tab to move away from the game and then coming back, it is impossible to select any other character except Edge for changing either Tactics or BEAT. I tested to see if this was an issue without Special K active, and didn't have the same issue come up. The error doesn't always happen, but seems to be fairly consistent as I was able to reproduce it after Alt-Tabing, playing for a bit, Alt-Tab again. Seems most reliably reproduced when using Alt-Tab from the camp menu.

Edit: Reloading a save does not correct the problem, only completely shutting the game down and restarting it seems to correct it. Until it triggers again.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.