Hello, i am not sure if this is related to compatibility or something else, so i put it under the support category.
I am using SpecialK v25.12.2.5 on Star Wars Republic Commando with D3D8to9 v1.15.1, and it boots correctly and sees the textures. Though only when put in the textures\streaming\ folder, anywhere else and it will be marked as blocked.
But my issue is that the injected texture loads correctly on startup, though reverts to the old texture when loading a level or by clicking reloading all textures via SpecialK. The specific textures are font textures, since replacing them engine level with high resolution ones is very hard. Is there any way to get SpecialK to keep the high resolution textures injected? I’m not sure if i mentioned all useful info, so please tell me if i missed something important. Thanks!
are you actually using dgvoodoo ? the title of your thread here says “DGVoodoo2 + SpecialK issues…”
but I don’t see you mentioning dgvoodoo2 anywhere else. you go on to say that you’re using special k with d3d8to9. isn’t that something else (not dgvoodoo2) ?
it sounds to me like you’re not actually using dgvoodoo2, but you’re using d3d8to9 to basically convert that star wars game from d3d8 to d3d9 and then you’re trying to use sk’s texture injection system for d3d9 games.
that said, sk’s texture injection with d3d9 is not really supported nowadays. it might work with some older versions of sk, but your mileage may vary… it may depend on the game etc.
the behavior you’ve described (texture loading on startup but reverting after loading a level… is something that has been seen at least with some d3d9 games using sk texture’s injection system for d3d9 games…)
for d3d9 texture injection, you may want to try sk version 22.3.11-NOCEGUI, which apparently worked for at least someone else some time ago with their d3d9 game. apparently it didn’t work for someone else though with a different game… and it also didn’t work properly for me with another game… but you could try with your game and see. that version of sk could be found in the special k discord server here:
beyond that, you could try an even older version of sk (i don’t know which…) or another option could be actually using dgvoodoo2 to make your game use d3d11.
i was able to use sk’s texture injection to replace textures in ff13 (d3d9 game) after using dgvoodoo2 to basically make the game use d3d11.
to use dgvoodoo2 to convert that d3d9 (or in your case d3d8) game’s calls to d3d11, you can see this:
basically you’d convert the d3d9 (or in your case d3d8) game’s calls to d3d11, use the recommended dgvoodoo2 config settings mentioned in those sk wiki pages (ignore the hdr parts if you’re not doing hdr), then you’ll inject special k with special k’s global injection (launch the game from the special k injection frontend app), and try sk’s texture injection like you would for a d3d11 game (might need to set sk’s live textures view to all textures if you’re looking to also dump textures. also, you may want to confirm the hash/file name of the .dds texture you’re replacing by dumping the original again after switching the game to d3d11).
sk’s texture injection system is mainly for d3d11 these days. your game not being native d3d11 could also make things more tricky (for example, sk may not see all textures…), but the latest or a recent version of sk might work for you with dgvoodoo2.
in short:
if your game is using d3d9 and you’re trying to use sk’s d3d9 texture injection system, you may want to try an older version of sk (the version 22.3.11-NOCEGUI that i linked above might work for you)
or you may want to make your game use d3d11 with dgvoodoo2 and try sk’s d3d11 texture injection system; the latest or a recent version of sk could work.
Thanks for the very detailed response! And the heads up on discord.
Sorry i meant to type d3d8to9 in the title. I had already tried DGVoodoo but not with much success. D3D8to9 is currently the only way i got it working consistently.
I have tried 22.3.11-NOCEGUI, and it doesn’'t seem to inject anything into the game as far as i can see. The textures get reverted on any of these occasions:
window switch, like from fullscreen to windowed or vice versa
when reload all textures is clicked
when loading in a level in game
- Both streaming and blocking get reverted back to the original, and happens with any texture after any of these.
- Textures are the same format, the dumped texture is BC3 and the imported .dds is BC3. Only difference is resolution.
And for DGVoodoo (DX8>DX11 11.0), i got texture injection to work (after a while) but i wasn’'t able to replace it with higher resolution textures. All textures in the live viewer are also marked as unused for some reason, but injection only works if the resolution stays the same.
Setting presentation mode to flip discard in DGVoodoo makes the game crash on boot, and so far i only got it to work setting DGVoodoo to automatic and having flip model enabled in SpecialK.
I uploaded the logs of me booting up the game, and loading in a new level. After that i quit immediately, so the timespan is short. The textures revert in the loading screen, so its somewhere midway.
ah so you got it working with dgvoodoo now but can’t inject/display the higher resolution textures. i never tried injecting higher resolution textures while using dgvoodoo (just same resolution); maybe that’s a limitation while using dgvoodoo.
whether or not higher resolution textures can be injected/displayed can also depend on the game. nier replicant is a d3d11 game where sk’s texture injection works but the game doesn’t display injected higher resolution textures. you gotta match the resolution of the originals. there are other d3d11 games where injected higher resolution textures work though (nier automata is one example)
anyway, sorry, i’m not sure why it’s not working… and i don’t have other suggestions at this point beyond what i mentioned earlier. sk’s d3d9 texture injection system is probably never going to be improved. you could ask kaldaien/catgpt in the sk discord; however, besides the project being on hold for now (development will resume eventually…), d3d9 can be a bigger pain since apparently we can’t use the d3d9 debug layer in modern versions of windows… apparently it needs windows 7
So far i narrowed it down to probably texture caching. Using any version that’s 21.x or older injects correctly with disabled cache, but anything after does not even inject with disabled cache so the later versions are not compatible i guess.
Is there any way to disable cache on a modern SpecialK version running in D3D9 mode? As with DGVoodoo im not able to import higher resolution textures. Thanks in advance.