Files
khallaandClaude Opus 5.5 8a7bdfd99f Framework for Sacred 2 Gold, game log mirror, borderless fullscreen
Ported from sacredK with module-relative addresses, hooks by exported
name and a SHA-256 check of the six game modules (Community Patch
2.65.1). Borderless windowed at monitor size replaces exclusive
fullscreen, whose focus loss during loading made the game quit and
crash on exit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:39:44 +01:00
..

tools

Node tools need npm install here once (iced-x86). Module paths are passed explicitly (<Sacred 2 Gold>\system\s2logic.dll, ...); VAs are at the module's preferred base, as in Ghidra. In Git Bash, arguments starting with / are rewritten as paths: set MSYS_NO_PATHCONV=1 for /regex/ and pass module paths as D:/....

Tool Purpose
exports.mjs <module> [regex] exported functions/data with VAs, by decorated name (exports.mjs s2logic.dll "@cQuestMgr@@")
exports.mjs <module> 0xVA the nearest export at or before a VA
disasm.mjs <module> <va> [n] disassemble at an address, ignoring Ghidra's function boundaries
find-imm.mjs <module> <value...> every instruction using an immediate value (e.g. 1024 768)
find-imm.mjs <module> /regex/ every instruction whose text matches
rtti.mjs <module> <Class> vtables of an MSVC class via RTTI
decompile.ps1 <module> <addr|symbol...> decompile from the persistent Ghidra project ghidra/
rename.ps1 apply names.txt (module 0xADDR Name) to the Ghidra project
game-input.ps1 dot-source: Start-Sacred2, Focus-Sacred2, Get-GameWindows, clicks, keys, Save-Screen, Stop-Sacred2

Driving the game

Started from a background process, the game window doesn't get the foreground; Focus-Sacred2 (synthetic Alt + SetForegroundWindow) brings it up. The intro videos run ~50 s before the main menu. Synthetic clicks reach the menu only sometimes (2026-10-31: "Beenden" opened its dialog once, the dialog's "Ja" never reacted); $game.CloseMainWindow() quits the game cleanly. Don't touch mouse/keyboard while a script drives the game.

Persistent Ghidra project (ghidra/, not in git)

One project sacred2 with a program per module, created once (Ghidra's own analysis; exports give most functions their names and MSVC 8 RTTI is recognised):

$env:GHIDRA_HEADLESS_MAXMEM = "12G"
$sys = "<Sacred 2 Gold>\system"
& "$env:GHIDRA_INSTALL_DIR\support\analyzeHeadless.bat" ghidra sacred2 -import "$sys\sacred2.exe" "$sys\orcSystem.dll" "$sys\s2core.dll" "$sys\s2logic.dll" "$sys\s2logicai.dll" "$sys\s2render.dll" -analysisTimeoutPerFile 7200
.\tools\decompile.ps1 orcSystem.dll 0x10018c60 -ReadOnly
.\tools\decompile.ps1 s2logic.dll "?advanceTime@cQuestMgr@@QAEXM@Z" -ReadOnly