Files
sacred_k/tools
khallaandClaude Opus 5.5 1fd89524d3 Skills, auto-attack, aura and chain lightning rework, Esc, cache fix
- Skill bar: no art selection; slot 0 is the right-click art, keys 0-6 cast
  slots directly; cooldown labels in exact seconds; slot 0 set apart.
- Arts regenerate on their own (casting no longer refills the group).
- Auto-attack after targeting or casting at a hostile creature, at the speed
  of a held button.
- Auras can be recast while active (renew, no second visual).
- Blicke wie Klingen hits every enemy in range, physical, with life leech.
- Blitzschlag steers the game's own chain: 3 + level/5 hits, 1 + level/10
  chains, re-hits a lone enemy.
- Weapon sets: click selects, drag only from the selected set; the leftmost
  set is clickable (signed hit tests).
- Esc closes open windows before opening the game menu.
- HUD: standalone buttons and texts are centred.
- Record cache sized for widened views (town lag while walking).
- Shared game code: orders, fx events, text drawing, cooldowns, effects.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-16 00:11:38 +02:00
..

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/
rename.ps1 apply the function names in names.txt to the Ghidra project (add names there as functions are identified)

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, hold key, screenshot). Don't touch mouse/keyboard while a test runs.