Load TexMod / uMod texture packs (.tpf) in Dead Space 2 on Linux. 4K suits, HD weapons and more.
Steam · Proton / GE-Proton · DXVK · ReShade · Steam Deck
"Make us whole." Your RIG, now in 4K.
Dead Space 2 has great HD texture mods: 4K suits, weapons, and more. They come as .tpf files made for TexMod or uMod.
TexMod and uMod don't work on Linux. DS2TexInject replaces them. It is a small plugin that runs inside the game, finds the textures your packs replace, and swaps them in. Your existing .tpf files work as they are.
It works on Windows too. See Windows right below. On Linux, skip to Quick start.
On Windows there is an .exe installer that does everything. No Python and no launch options needed.
-
Create a
texmodfolder inside the game folder and put your.tpfand.zippacks there (see Step 3). -
Run the installer in one of these ways:
PowerShell (downloads and runs the latest version):
irm https://raw.githubusercontent.com/sidnei-almeida/dead-space-2-texmod-linux/main/install.ps1 | iex
Command Prompt (curl):
curl -L -o "%TEMP%\DS2TexInject-Setup.exe" https://github.com/sidnei-almeida/dead-space-2-texmod-linux/releases/latest/download/DS2TexInject-Setup.exe && "%TEMP%\DS2TexInject-Setup.exe"
Or download it and double-click:
-
Play as usual from Steam or the EA app. F10 turns the textures on and off.
The installer:
- finds Dead Space 2 (Steam libraries, EA app/Origin, Windows registry). If it can't, it opens a window so you can pick
deadspace2.exe; - offers to download and install MarkerPatch if there is no ASI loader yet;
- installs
plugins\DS2TexInject.asiandDS2TexInject.ini; - prepares every pack in
texmod\intotexmod\_cache\, including big zips such as a multi-GB remaster. If nothing changed since last time, it skips this step.
Added or removed packs? Run the installer again. To redo the textures from scratch: DS2TexInject-Setup.exe --rebuild. To give the game folder yourself: DS2TexInject-Setup.exe "D:\Games\Dead Space 2".
Windows SmartScreen may warn that the
.exeis unsigned. Click More info → Run anyway. The source is insrc/ds2setup.cpp.
| Step | What to do |
|---|---|
| 1 | Install an ASI loader. MarkerPatch is recommended. |
| 2 | Add a Steam launch option. |
| 3 | Put your .tpf packs in a texmod folder. |
| 4 | Run ./install.sh from this repo. |
| 5 | Play. Press F10 to compare before and after. |
Each step is explained in detail below.
DS2TexInject is an .asi plugin. It doesn't run by itself: something has to load it into the game. That is an ASI loader, and you need one of these two:
| Option | Why pick it | |
|---|---|---|
| ⭐ | MarkerPatch (recommended) | Loads the plugin and fixes many Dead Space 2 bugs: high FPS physics, VSync locked to 30 FPS, crashes on CPUs with many cores, raw mouse input, and more. |
| Ultimate ASI Loader | Only loads the plugin. Use it if you don't want MarkerPatch. |
MarkerPatch (recommended):
Extract it into the game folder, next to deadspace2.exe. You should end up with dinput8.dll and MarkerPatch.ini there.
Or Ultimate ASI Loader:
Get the Win32 (32-bit) version and put its dinput8.dll in the game folder, next to deadspace2.exe.
Where is the game folder? In Steam, right-click Dead Space 2 → Manage → Browse local files. It is usually
~/.local/share/Steam/steamapps/common/Dead Space 2.
Proton ignores DLLs placed in the game folder unless you tell it to load them.
- In Steam, right-click Dead Space 2 → Properties → General.
- Paste one of these into Launch Options:
Without ReShade:
WINEDLLOVERRIDES="dinput8=n,b" %command%
With ReShade (your game folder has a d3d9.dll):
WINEDLLOVERRIDES="d3d9,dinput8=n,b" %command%
The texture packs are not included in this repository. They belong to their authors, so download them from the original pages.
These packs were tested and work:
Isaac's suits and face in 2K and 4K, plus sharper weapons.
1-4KMainSuitsnew.tpf
2Kaio.tpf
Lore-friendly skins for suits, weapons and interactables (lockers, supply boxes, node containers).
1WEP_RTTn.tpf
3INTERACTABLES_RTTn.tpf 4INTERACTABLES_RTTn.tpf 5INTERACTABLES_RTTn.tpf
6INTERACTABLES_RTT.tpf 7INTERACTABLES_RTT.tpf 8INTERACTABLES_RTT.tpf
9INTERACTABLES_RTT.tpf
Any other Dead Space 2 .tpf pack should work too.
Create a folder named texmod inside the game folder and put all the .tpf files there:
Dead Space 2/
├── deadspace2.exe
├── dinput8.dll ← ASI loader (MarkerPatch or Ultimate ASI Loader)
└── texmod/
├── 1-4KMainSuitsnew.tpf
├── 2Kaio.tpf
└── ...
Open a terminal and run:
git clone https://github.com/sidnei-almeida/dead-space-2-texmod-linux
cd dead-space-2-texmod-linux
./install.shThe installer does everything for you:
- finds the Dead Space 2 folder in your Steam libraries (if it can't, it asks you where it is),
- offers to download MarkerPatch if there is no ASI loader yet,
- compiles the plugin (the first time, it downloads a compiler; no
sudoneeded), - copies the plugin to
Dead Space 2/plugins/, - unpacks and checks every texture in your
.tpfpacks.
You can also give it the game folder directly:
./install.sh "/path/to/Dead Space 2"At the end you should see:
396 texturas unicas (665 MB) em .../texmod/_cache
Nenhuma textura quebrada encontrada.
The installer's messages are in Portuguese. The last line means "No broken textures found."
Manual install (no compiling)
Launch Dead Space 2 from Steam as usual.
- Press F10 in-game to turn the new textures on and off, so you can see the difference.
- To check that it is working, open
Dead Space 2/DS2TexInject.log. EachMATCHline is a texture being replaced.
Textures are swapped as they appear on screen. Suits and weapons show up once you get them in the game.
None of this is needed for the texture mod. These are extras I personally use and like.
ReShade adds post-processing effects such as color grading and sharpening. On Linux, the easiest way to install it is LeShade, a ReShade manager with a graphical interface:
- Install LeShade and open it.
- Add Dead Space 2 by pointing it to
deadspace2.exe. - Choose DirectX 9 and install. Also install the shader packages listed below.
- Use the Steam launch option for ReShade from Step 2.
In-game, the ReShade menu opens with Home. MarkerPatch also uses Home for its achievement list, so you can change ReShade's key in its settings if you want.
Sprawl Noir is my personal preset for Dead Space 2, made to my taste:
- Horror over action: a cold, sickly green-gray tone, like the Sprawl's stations.
- Desaturated colors and deeper shadows, so the RIG's blue and the red warnings stand out in the dark.
- Vignette and light film grain for a claustrophobic feel.
- Soft bloom, light sharpening and SMAA anti-aliasing.
- No ambient occlusion, so it is light on the GPU.
- Copy
reshade/Sprawl Noir.iniinto the game folder. - In-game, press Home, open the preset list at the top and pick Sprawl Noir.
It uses these shaders. Install their packages in LeShade (or ReShade's installer) if any of them show up in red:
| Shaders | Package |
|---|---|
LUT.fx, Colourfulness.fx, AmbientLight.fx |
Standard / legacy ReShade shaders |
SMAA.fx, LiftGammaGain.fx, Sepia.fx, Curves.fx, Tonemap.fx, Levels.fx, LumaSharpen.fx, Vignette.fx, FilmGrain.fx |
SweetFX |
Artificial Lighting MLUT.fx, Atmospheric Film Affinity Presets MLUT.fx |
MLUT |
Everything is easy to adjust in the ReShade menu if something is too strong for your screen.
- Add or delete
.tpffiles inDead Space 2/texmod/. - Run this again (it rebuilds
texmod/_cache/from scratch, so don't put your own files there):python3 ds2tex.py "/path/to/Dead Space 2/texmod"
When two packs change the same texture, the pack whose name comes first alphabetically wins. To choose the order yourself, create texmod/load_order.txt with one file name per line, most important first.
The file is in the game folder. You can open it with any text editor.
| Setting | Default | What it does |
|---|---|---|
Enabled |
1 |
0 turns texture replacement off. |
ToggleKey |
0x79 |
Key that turns the textures on and off. 0x79 is F10. |
Pool |
managed |
Change to default (experimental) if the game crashes with many 4K packs. It uses less memory. |
LoadBudget |
4 |
Load limit: at most this many ms spent loading new textures per 10 ms of play. Prevents stutters when entering new areas: textures that don't fit show the original for a few frames and pop in right after. 0 loads everything immediately, like older versions. |
LogHashes |
0 |
1 logs every texture the game loads. Useful for debugging. |
DumpTextures |
0 |
1 saves the game's original textures to texmod/_dump/. Useful for making your own packs. |
TextureDir |
texmod\_cache |
Where the unpacked textures are. |
| Problem | Solution |
|---|---|
No DS2TexInject.log file appears |
The plugin isn't loading. Check that dinput8.dll (your ASI loader) is in the game folder, that plugins/DS2TexInject.asi exists, and that the launch option from Step 2 is set. |
The log has no MATCH lines |
Make sure you ran ds2tex.py and that texmod/_cache/ has files in it. Also play a bit: suits and weapons only appear later in the game. |
| The game crashes after playing a while | Dead Space 2 is a 32-bit game and can run out of memory with many 4K textures. Set Pool=default in DS2TexInject.ini, or remove some packs. |
| The game stutters when entering new areas | Make sure you're on v1.3.0 or newer (LoadBudget in DS2TexInject.ini) and that Pillow is installed, then run ds2tex.py again so every texture is game-ready. If it still stutters, lower LoadBudget to 2. Part of the first-visit stutter is DXVK compiling shaders; keep Steam's shader pre-caching on and it fades as you play. |
| Edges still look jagged far away | Some of it is the 2011 engine (thin poles, cables, grates). Rendering at a higher resolution helps: in the gamescope launch option, use 1.5x or 2x your screen size in -w/-h (for example -w 5160 -h 2160 on a 3440x1440 screen) and set the same resolution in the game's video options. |
| A texture looks wrong | Press F10 to confirm the pack causes it, then open an issue and say which pack it is. |
| Something else | Open an issue (button below) and attach DS2TexInject.log. |
You don't need this section to use the mod.
Why TexMod doesn't work on Linux:
- TexMod and uMod inject themselves using Windows tricks that Wine doesn't support.
- They also need to replace
d3d9.dll, a slot that ReShade and DXVK already use. - The game's
.exeis also wrapped in EA's DRM.
What DS2TexInject does instead:
- The ASI loader (MarkerPatch or Ultimate ASI Loader) loads
DS2TexInject.asiwhen the game starts. - The plugin hooks
Direct3DCreate9inside whicheverd3d9.dllthe game uses (ReShade or DXVK). From there it hooks the Direct3D 9 device and texture methods. - When the game uploads a texture, the plugin computes the same CRC32 hash TexMod uses (on the top mip level).
- If
texmod/_cache/0x<hash>.dds(or.png/.bmp) exists, the plugin loads it and draws it instead of the original. Replacements are loaded only when needed and freed when the game stops using them. - Many packs ship DDS files without mipmaps, which makes textures shimmer and look jagged from a distance. The plugin generates the missing mipmaps the first time it loads such a file and saves the fixed file back to
texmod/_cache/. - Loading is rate-limited (
LoadBudget): a token bucket allows a few milliseconds of loading per 10 ms of wall time. Entering a new area used to load dozens of replacements inside a single frame (27 textures, 81 ms in one measured case); now they are spread over a few frames, and the original texture shows until its replacement is ready. Being time-based, it also works on loading screens, where the game may go a long time without finishing a frame.
What ds2tex.py does:
A .tpf file is a zip archive, XOR-encoded and protected with TexMod's fixed password. ds2tex.py decodes it, checks every texture (format, size, damaged files), and writes them to texmod/_cache/ named by hash.
With Pillow installed (sudo pacman -S python-pillow), it also makes every texture game-ready: PNG, BMP, TGA and JPG images become uncompressed DDS at the same quality, and every DDS gets a full mipmap chain. The game no longer has to decode images or build mipmaps on the fly, which caused stutters when entering new areas. Without Pillow, files are copied as they are.
Building yourself:
./build.sh # creates dist/DS2TexInject.asi and dist/DS2TexInject-Setup.exeIt uses mingw-w64-gcc if installed. If not, it downloads llvm-mingw into ~/.local/opt. The plugin is src/ds2texinject.cpp; the Windows installer is src/ds2setup.cpp (a C++ port of ds2tex.py, using stb_image and stb_dxt, public domain).
- Texture packs: their respective authors on Nexus Mods.
- MarkerPatch by Wemino and Ultimate ASI Loader by ThirteenAG, which load the plugin.
- Hash compatibility follows the behavior of TexMod and uMod.
Tested on: Arch Linux, GE-Proton 11, DXVK, ReShade 6.8, MarkerPatch.
MIT. The texture packs are not part of this project and belong to their authors.
