55 lines
4.4 KiB
Markdown
55 lines
4.4 KiB
Markdown
# SE2 Revival
|
|
|
|
GPG's **Siege Editor 2** (Dungeon Siege II Tool Kit 1.1, 2005) on the Steam release of Dungeon Siege II - and,
|
|
for the first time, with **Broken World**. Nothing is installed into the registry, the game or the tool kit: an ASI
|
|
plugin answers the editor's lookups in memory, and an extension DLL lets it read Broken World's scripts.
|
|
|
|
## Install
|
|
|
|
Full guide, settings and troubleshooting: [INSTALL.md](INSTALL.md) (also in the release zip as `README.txt`).
|
|
|
|
1. You need Dungeon Siege II from **Steam** and GPG's free tool kit, **`DS2TK-1.1.zip`**, from siegetheday.org
|
|
(not part of this project). Broken World is optional: put its files in a `Broken World` folder inside the game
|
|
folder.
|
|
2. Unpack the tool kit's installer without running it (it refuses the Steam game):
|
|
`innoextract DS2TK-1.1.exe` ([innoextract](https://constexpr.org/innoextract/)), and copy the `app` folder's
|
|
contents to a folder you can write to, e.g. `C:\Games\DS2Toolkit`.
|
|
3. Download **`SE2-Revival.zip`** from [Releases](https://git.dsii.uk/dsii/SE2Revival/releases) and
|
|
extract it into the same folder: `version.dll` next to `SiegeEditor2.exe`, plus the `scripts` and `bw` folders.
|
|
4. Start `SiegeEditor2.exe`. With Broken World installed it asks which game to edit (hold Shift at start-up to be
|
|
asked again). First time per game: File > Convert .ds2map to files, `Maps\World.ds2map` for Dungeon Siege II,
|
|
`Broken World\Maps\xDS2XWorld.ds2map` for Broken World.
|
|
|
|
Settings: `scripts\DS2Toolkit.ini` (game and Broken World folders, which game, `QuietErrors`, `SkipArchives`, and
|
|
`[Settings]` for any Siege Editor 2 setting). Uninstall: delete `version.dll`, `scripts` and `bw`.
|
|
|
|
## What is here
|
|
|
|
| Path | What it is |
|
|
|---|---|
|
|
| `mods/toolkit/` | `DS2Toolkit.asi`: loaded by Ultimate ASI Loader (`version.dll`) next to `SiegeEditor2.exe`. Serves, when missing, `HKLM\Software\Microsoft\Microsoft Games\DungeonSiege2` (`InstallationDirectory`: the game, found through Steam), `HKLM\Software\Gas Powered Games\DS2TK` (the tool kit folder) and the editor's settings key `HKLM\Software\Gas Powered Games\SiegeEditor2`. Broken World mode serves `res_paths` / `map_paths` with both games' folders, `ds2dll_path`, `skrit_retry=false`, and teaches the editor Broken World's new enum names (`bwenums.h`). A start-up question picks the game. Also keeps the `clothmap_rollover` lines the editor drops when it saves `start_positions.gas`, and hides archives listed in `SkipArchives`. |
|
|
| `mods/bwcompat/` | `BWCompat.ds2dll`, generated by `tools/bwcompat_gen.py`: the editor's FuBi imports `*.ds2dll` exports as script functions; this DLL exports, as stubs with the right calling convention and stack cleanup, the 772 functions Broken World's exe added (`GoMind::GetHomeLeashDistance`, ...). Functions differing from the editor's only in return type are left out (the editor would reject the whole DLL). |
|
|
| `tools/pe_rename_exports.py` | writes the decorated C++ export names after linking (the linker cuts aliased export names at the first `@`). |
|
|
| `tools/package_toolkit.py` | builds `dist/SE2-Revival.zip` (README.txt is `INSTALL.md` as plain text). |
|
|
| `tools/siegelet.py`, `tools/tank.py` | pack an edited region (the editor's Bits folder) into a playable `.ds2map`. |
|
|
| `tools/ci_build.py`, `tools/ci_release.py`, `.forgejo/` | the release build (below). |
|
|
|
|
## Build
|
|
|
|
Windows, Visual Studio 2022 or newer (Desktop C++), Python 3.10+:
|
|
|
|
1. `python mods/build.py --only DS2Toolkit,BWCompat`
|
|
2. Ultimate ASI Loader x86 `dinput8.dll` at `build/asiloader/dinput8.dll`
|
|
3. `python tools/package_toolkit.py` writes `dist/SE2-Revival.zip`
|
|
|
|
Linux (what CI runs), Python 3, clang and lld 19 or newer: `python3 tools/ci_build.py --project se2`. It fetches the
|
|
MSVC CRT and Windows SDK with [xwin](https://github.com/Jake-Shadle/xwin) (pinned versions; running it accepts
|
|
Microsoft's license for those build tools) and Ultimate ASI Loader (pinned, SHA-256 checked), cross-compiles both
|
|
plugins with clang-cl + lld-link with the same flags as the MSVC build, checks them (x86 DLLs, static CRT) and writes
|
|
`dist/SE2-Revival.zip` and its `.sha256`.
|
|
|
|
Releases are built by CI (`.forgejo/workflows/build.yml`): every push to `main` builds the zip as a workflow
|
|
artifact; a `v*` tag (e.g. `v1.0.0`; `v1.1.0-rc1` makes a prerelease) also publishes it as a release with the notes
|
|
in `.forgejo/release-notes.md`.
|
|
|
|
To regenerate the Broken World stubs: `python tools/bwcompat_gen.py <Broken World DungeonSiege2.exe> <SiegeEditor2.exe>`.
|