- Default render size is 768 high and as wide as the monitor aspect
(1835x768 on 3440x1440), scaled up: everything keeps the size players
know and the view only grows sideways. Height=0 keeps native 1:1.
- Ground: 818/888 clip limits, screen centre floats and integer
immediates, ground quad list (capped at 1749) moved with the tile list.
- 3D: cGranny ortho (+-512 x +-384, incl. HUD items) scaled; inverse
projection 0x623a20 (1/1024, 1/768) follows the render size, which fixes
the camera following the player ("outside world") and the missing
player / ESC menu.
- tools: game-input.ps1 + autotest-load.ps1 drive the game (load the first
save game, screenshots in-game and with the ESC menu).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1.7 KiB
1.7 KiB
tools
Node tools need npm install here once (iced-x86). Paths to sacred.exe are
passed explicitly.
| Tool | Purpose |
|---|---|
disasm.mjs <exe> <va> [n] |
disassemble at an address, ignoring Ghidra's function boundaries |
find-imm.mjs <exe> <value...> |
every instruction using an immediate value (e.g. 1024 768) |
find-imm.mjs <exe> /regex/ |
every instruction whose text matches (e.g. /96AB0h\]/) |
rtti.mjs <exe> <Class> |
vtables of an MSVC class via RTTI |
decompile.ps1 <addr...> |
decompile from the persistent Ghidra project ghidra/ |
Persistent Ghidra project (ghidra/, not in git)
Created once (about 7 minutes):
$env:GHIDRA_HEADLESS_MAXMEM = "8G"
& "$env:GHIDRA_INSTALL_DIR\support\analyzeHeadless.bat" ghidra sacred -import "<Sacred Gold>\sacred.exe"
& "$env:GHIDRA_INSTALL_DIR\support\analyzeHeadless.bat" ghidra sacred -process sacred.exe -scriptPath tools\ghidra -postScript ApplyRtti.java
ApplyRtti.java recovers the MSVC 6 RTTI that Ghidra's own script misses:
410 vtables, ~1200 extra functions, methods named Class::vfNN.
Automated in-game test
autotest-load.ps1 starts the game through the launcher, clicks
"Spiel laden" -> "Laden" -> "Ok" (first save game), takes screenshots in-game
and with the ESC menu open, and stops the game. -Ini appends temporary
settings to build\x86-debug\sacred_re.ini (restored afterwards), e.g.
.\tools\autotest-load.ps1 -Name ws_off -Ini "[widescreen]`r`nEnabled=0"
Click positions assume the classic menu layout scaled onto a 3440x1440
monitor. game-input.ps1 has the building blocks (start, click, key,
screenshot). Don't touch mouse/keyboard while a test runs.