This is a DSO decompiler for the Torque Game Engine. It takes .dso
files and decompiles them back into TorqueScript!
This project supports the following games and engines:
- Torque Game Engine 1.0-1.3 (e.g. Marble Blast Gold, Blockland v0002, Blockland Retail Beta, Age of Time)
- Torque Game Engine 1.4
- Tribes 2
- The Forgettable Dungeon
- Blockland v1
- Blockland v20
- Blockland v21
Years ago, I made dso.js, a DSO decompiler for Blockland v21. The code was absolutely atrocious and used no computer science concepts whatsoever. However, it (mostly) worked, and was the only (mostly) working, publicly-available DSO decompiler for Blockland, so it was okay for the time.
I tried off and on for a few years to write a better DSO decompiler using actual computer science concepts. Unfortunately, I struggled to do so and burned out multiple times, so I eventually gave up.
But I still really wanted decompiled scripts for other games, so I decided to just rewrite the program using similar techniques in dso.js, but better. After all, a shoddily-coded decompiler is better than no decompiler at all!
And so, here it finally is.
There are two ways to use this program: either as a typical console program, or as a command-line interface.
To use it normally, just drag a .dso
file or a directory full of .dso
files onto the program. It will try to automatically detect and decompile the file(s) that were passed in.
You can also use it as a command-line interface: usage: dso-sharp path1[, path2[, ...]] [-h] [-q] [-g game] [-d | -D] [-X]
Flag | Description |
---|---|
-h |
Displays help. |
-q |
Disables all messages (except command-line argument errors). |
-g |
Specifies which game's scripts we are decompiling (default: auto ). |
-d |
Writes a .disasm file containing the disassembly. |
-D |
Writes only the disassembly file and nothing else. |
-X |
Makes the program operate as a command-line interface that takes no keyboard input and closes immediately upon completion or failure. |
Value | Game |
---|---|
auto |
Automatically determines the game from script file (defaults to this if --game flag is not set). |
tge10 |
Torque Game Engine 1.0-1.3 |
tge14 |
Torque Game Engine 1.4 |
t2 |
Tribes 2 |
tfd |
The Forgettable Dungeon |
blv1 |
Blockland v1 |
blv20 |
Blockland v20 |
blv21 |
Blockland v21 |
To build for Windows:
- Open in Visual Studio 2022 (or later)
- Right-click on the
DSO
project and click "Publish" - Create a new profile with the "Folder" target
- Set the "Target Runtime" to
win-x64
- Click "Show all settings" and set "Deployment mode" to
Self-contained
- Click "Save" and then click the large "Publish" button in the top right corner
To build for Linux:
- Install the .NET 8.0 SDK with
sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0
- Navigate to the repo folder
- Build the project:
dotnet publish -a x64 --os linux -c Release --sc