dumpVar: only available in dev mode
Table of Contents
To be fleshed out, for now this is just me dumping steps as I do them
Currently stuck at the fact that breakpoints don't seem to work
Basic setup
-
Open the
darktide_launcher.log
and find the arguments to run the executable with.At the time of writing:
-eac-untrusted --bundle-dir ../bundle --ini settings --backend-auth-service-url https://bsp-auth-prod.atoma.cloud --backend-title-service-url https://bsp-td-prod.atoma.cloud -game -launcher_verification_passed_crashify_property false
-
Find the necessary env variables and commands to run Proton from CLI. At the time of writing:
STEAM_COMPAT_CLIENT_INSTALL_PATH=/usr/bin/steam
# `1361210` is the Steam AppID for Darktide. It's in the same library as the game, so through "Browse files" in the UI works as starting point
STEAM_COMPAT_DATA_PATH=/path/to/SteamLibrary/steamapps/compatdata/1361210
# Any Proton version could be used, if it works with the game.
# And it's fine if this is installed in a different `SteamLibrary` than the game
/path/to/SteamLibrary/steamapps/common/Proton\ 8.0/proton run <cmd>
-
Add
PROTON_DUMP_DEBUG_COMMANDS=1
, then look in/tmp/proton_$(whoami)
-
Copy
gdb_run
, and alter thewinedbg
command withs/--dbg/--dbg --no-start --port 2159/
(or a port of your choosing). Worthwhile to have it as separate filegdb_start
, so thatgdb_run
stays available.--no-start
will make gdb wait for the frontend to send the firstcontinue
command, which gives time to attach Ghidra and have it set up its breakpoints -
Run the script in a terminal, it will echo
target remote <host>:<port>
-
In Ghidra, for the debugger configuration, choose "remote gdb", enter the port and run. Breakpoints should become available
-
Run
continue
(or justc
) in the gdb terminal to start the game, or any other gdb command.
Observations
- Ghidra doesn't seem to set breakpoints automatically. Instead, the "Debug Console" window will talk about "there are breakpoints to place" and a button to do that
- multi-process mode, e.g. when Ghidra attaches as
extended-remote
, or the gdbserver is started with--multi
, should allow restarting the
Wiki
Building the source code
Obtaining the Oodle library
DTMM
Installing mods
Register DTMM as handler for Nexus downloads
DTMT
CLI Reference
Building your first mod
Migrating from loose files
dtmt.cfg
Reference
Murmur hashes and dictionaries
Reverse Engineering
Getting Started
Sound
Textures
File Types
Status
Bundle
Bundle Database
Texture
Material
Strings
Package
Wwise Event
Wwise Stream
Wwise Bank