acdream/tools
Erik 132395e6f7 fix #425: pack resident budget is a 1080p ceiling that scales with pixel count; an explicit Apply retries a failed selection
Live Holtburg at 2560x1440: the Low preset needed 67,368,164 resident bytes
(screen-sized HDR/depth/ray targets are 44 MB of that) against an absolute
64 MiB ceiling that had only been validated at 1080p, so Options -> Apply
fell back to the default path; every later Apply was then refused by the
controller's failure memo, which treated the user's deliberate choice like
automatic re-activation.

RenderPackResidentBudget.Effective scales the declared 1080p figure by the
viewport's pixel-count ratio (never below 1), still capped by the hardware
MaxPackResidentBytes; both pack graphs use it and the performance-matrix
tool judges its resident column by the same rule (contract test updated).
RenderPackController.Request gains explicitUserChoice, which clears the
memo for that selection; RenderPackSelectionBinding passes it on every
display edge (Apply, including resolution changes) and keeps the memo for
the startup request.

Tests: RenderPackResidentBudgetTests (1080p/720p keep the declared
ceiling, 1440p = 16/9x, 4K = 4x, hardware cap wins, zero extent rejected);
controller explicit-retry; the binding test now proves the user's next
Apply activates once the cause is gone. App hermetic lane 6,068/0 (Release).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 10:00:11 +02:00
..
A8CellAudit build: make release restore reproducible 2026-08-18 10:29:00 +02:00
AnimHookScan fix(world): honour SetOmega — the birds and butterflies fly again 2026-08-21 05:42:59 +02:00
cdb tools(gate): -ExeOverride and -DebuggerScript for the offline pixel gate; #422 characterised over 40 instrumented runs (Campaign VM VM7) 2026-08-23 04:32:27 +02:00
cdb-scripts fix(motion): full queue reset on locomotion-cycle direct transitions 2026-05-03 17:00:55 +02:00
diag-logs diag(motion): instrumentation for remote walk↔run leg-cycle bug (Commit A) 2026-05-03 20:38:47 +02:00
dump-keymap build: make release restore reproducible 2026-08-18 10:29:00 +02:00
ghidra_project feat(core): port decompiled AC client physics — CollisionPrimitives + PhysicsBody 2026-04-12 23:54:51 +02:00
i422 tools(i422): parameterised debug-heap loop + plain rate loop; #422 re-characterised after it fired on the retail matrix row 2026-08-23 05:19:18 +02:00
IconForge fix(IconForge): point the texture path at the real dump directory 2026-08-20 14:43:37 +02:00
InspectCoatTex docs(issues): #37 — Investigation 2 narrows bug to SubPalette coverage gaps 2026-05-05 14:45:50 +02:00
jsonl test(phys): A6.P5 fixture — 3 ticks from live door-stuck capture 2026-05-25 12:43:51 +02:00
LayoutDump fix(ui): button property 0x0D was never "disabled", and it killed every Journal button 2026-08-21 15:58:03 +02:00
MosswartArt feat: mosswart client icon and Asheron's Call-inspired launcher icon 2026-08-20 14:42:10 +02:00
pdb-extract fix(chat): Campaign CH user-gate round 2 -- portal notice rerouted to SpewBox, verbatim /help extraction, jump-in-air evidence 2026-08-10 08:40:24 +02:00
PesChainAudit build: make release restore reproducible 2026-08-18 10:29:00 +02:00
ProjectileVfxAudit build: make release restore reproducible 2026-08-18 10:29:00 +02:00
RainMeshProbe build: make release restore reproducible 2026-08-18 10:29:00 +02:00
RenderPackValidator feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
RetailTimeProbe build: make release restore reproducible 2026-08-18 10:29:00 +02:00
SetupInspect build: make release restore reproducible 2026-08-18 10:29:00 +02:00
ShaderCompiler feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
SkyObjectInspect build: make release restore reproducible 2026-08-18 10:29:00 +02:00
SpellDump fix(magic): the foci map never loaded — casts demanded full components a focus should waive 2026-08-20 21:28:22 +02:00
StarsProbe build: make release restore reproducible 2026-08-18 10:29:00 +02:00
TextureDump build: make release restore reproducible 2026-08-18 10:29:00 +02:00
vm0 research(vm0): Campaign AR's pack-off path IS the pre-campaign renderer - PASS 2026-08-22 21:40:40 +02:00
vm6 docs(render): VM6 code-complete — foliage-wind pixel proof, repeat-floor apparatus, ledger (Campaign VM) 2026-08-23 04:01:18 +02:00
WeatherEnumerator build: make release restore reproducible 2026-08-18 10:29:00 +02:00
WeatherSetupProbe build: make release restore reproducible 2026-08-18 10:29:00 +02:00
analyze_265_steep_slope_capture.py test(physics): #265 mining tool + real-trajectory replay harness for the steep-slope response family 2026-07-30 17:55:49 +02:00
analyze_269_slope_stop_capture.py fix(physics): port retail slope landing stop 2026-07-31 09:10:53 +02:00
analyze_resolve_capture.py tools+plan(#182): resolve-capture histogram classifier + verbatim player-physics rebuild plan 2026-07-07 13:37:15 +02:00
atmospheric-performance-matrix-common.ps1 feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
audit-test-inventory.ps1 test: audit helper-mediated source reads 2026-08-18 14:18:00 +02:00
CampaignLaProcessCorrelation.ps1 fix(launcher): harden LA11 gate evidence 2026-08-15 01:45:15 +02:00
capture-campaign-la-session-process.ps1 fix(launcher): harden LA11 gate evidence 2026-08-15 01:45:15 +02:00
compile-shaders.ps1 feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
connected-atmospheric-exposure-comparison.route.txt feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
connected-dense-town.route.txt fix(diag): bind stationary samples to route checkpoints 2026-07-24 12:54:57 +02:00
connected-r6-soak.route.txt fix(diag): bind stationary samples to route checkpoints 2026-07-24 12:54:57 +02:00
connected-render-pack-gate-common.ps1 test(render): add connected package lifecycle gate 2026-08-22 13:53:29 +02:00
connected-render-pack-package-lifecycle.route.txt test(render): add connected package lifecycle gate 2026-08-22 13:53:29 +02:00
connected-render-pack-remote-observer.route.txt test(gates): sequence the two-client remote-shadow gate with harness signals 2026-08-22 17:44:13 +02:00
connected-render-pack-remote-primary.route.txt test(gates): sequence the two-client remote-shadow gate with harness signals 2026-08-22 17:44:13 +02:00
connected-render-pack-transitions.route.txt feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
connected-world-lifecycle.route.txt test(runtime): add connected lifecycle gate 2026-07-20 22:39:34 +02:00
connected-world-reconnect.route.txt test(runtime): add connected lifecycle gate 2026-07-20 22:39:34 +02:00
decompile_acclient.py research: decompile acclient.exe terrain/physics via Ghidra headless 2026-04-12 23:18:27 +02:00
decompile_full.py research: full acclient.exe decompilation — 22,225 functions, 688K lines 2026-04-12 23:25:51 +02:00
DecompileTargets.java research: decompile acclient.exe terrain/physics via Ghidra headless 2026-04-12 23:18:27 +02:00
ghidra_decompile.py research: decompile acclient.exe terrain/physics via Ghidra headless 2026-04-12 23:18:27 +02:00
launch-atmospheric-preview.ps1 feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
new-campaign-la-update-fixture.ps1 fix(launcher): harden LA11 gate evidence 2026-08-15 01:45:15 +02:00
publish-bin.ps1 ci: put the launcher's update pointer in a release, and delete the dist branch 2026-08-19 14:40:41 +02:00
README.md build: make release restore reproducible 2026-08-18 10:29:00 +02:00
run-atmospheric-performance-matrix.ps1 fix #425: pack resident budget is a 1080p ceiling that scales with pixel count; an explicit Apply retries a failed selection 2026-08-23 10:00:11 +02:00
run-blank-world-ab-probe.ps1 docs(render): the occlusion-query verdict on the V4c blank world, and the options 2026-07-28 01:44:34 +02:00
run-blank-world-surface-probe.ps1 test(render): add blank-world attribution apparatus and a post-world GL sample 2026-07-28 00:08:10 +02:00
run-campaign-la-preflight.ps1 fix(launcher): harden Campaign LA11 gate evidence 2026-08-15 01:08:41 +02:00
run-connected-loss-gate.ps1 docs(net): N5 accepted - Opus review PASS; loss gate strengthened per review 2026-07-29 16:40:55 +02:00
run-connected-r6-soak.ps1 fix(gates): initialize connected soak artifacts before isolation 2026-08-22 13:34:36 +02:00
run-connected-render-pack-package-lifecycle.ps1 test(render): add connected package lifecycle gate 2026-08-22 13:53:29 +02:00
run-connected-render-pack-remote-player-gate.ps1 test(gates): sequence the two-client remote-shadow gate with harness signals 2026-08-22 17:44:13 +02:00
run-connected-world-lifecycle-gate.ps1 fix(gates): select a character in connected graphical runs 2026-08-22 13:24:39 +02:00
run-offline-pixel-gate.ps1 tools(gate): -ExeOverride and -DebuggerScript for the offline pixel gate; #422 characterised over 40 instrumented runs (Campaign VM VM7) 2026-08-23 04:32:27 +02:00
run-offline-vulkan-capture.ps1 feat(render): Vulkan campaign V11 step 4 — retire GL from CI and gate scripts 2026-07-29 03:06:45 +02:00
run-portal-churn-soak.ps1 feat(render): Vulkan campaign V11 step 4 — retire GL from CI and gate scripts 2026-07-29 03:06:45 +02:00
run-release-gate.ps1 test: introduce Lane=Timing for load-sensitive tests, and stop chasing them individually 2026-08-19 15:29:10 +02:00
run-repeat-connected-gate.ps1 feat(render): Vulkan campaign V11 step 4 — retire GL from CI and gate scripts 2026-07-29 03:06:45 +02:00
test-campaign-la-gate-helpers.ps1 fix(launcher): harden LA11 gate evidence 2026-08-15 01:45:15 +02:00
test-campaign-la-script-safety.ps1 fix(launcher): harden LA11 gate evidence 2026-08-15 01:45:15 +02:00
test-campaign-la-session-status.ps1 fix(launcher): harden LA11 gate evidence 2026-08-15 01:45:15 +02:00
update-package-locks.ps1 build: make release restore reproducible 2026-08-18 10:29:00 +02:00
verify_un2_fmul.py UN-2 RESOLVED: GetMaxSpeed x4 is byte-verified retail; doc-comment was the misread 2026-06-12 13:17:50 +02:00

Maintained .NET tools

Every .csproj under tools/ is part of AcDream.slnx. The complete Release gate restores and builds these tools, so a missing personal checkout or an API change cannot leave a tracked tool silently broken. They are diagnostic/manual programs: the gate builds them but does not run data-dependent investigations.

Tool Purpose Runtime prerequisite
A8CellAudit Inspect landblock, EnvCell, portal, and collision topology. Installed AC DAT files / the arguments documented by the program.
dump-keymap Extract the retail master input maps and decoded actions. Installed client_portal.dat.
PesChainAudit Walk weather PES call chains and particle emitters. Installed AC DAT files.
ProjectileVfxAudit Audit projectile physics-script and particle-emitter VFX mappings. Installed AC DAT files.
RainMeshProbe Inspect rain surfaces, polygon sidedness, and generated mesh counts. Installed AC DAT files.
RetailTimeProbe Read retail time-of-day and sky state for comparison. Windows, a running retail client, and process-read access.
SetupInspect Dump Setup parts, placement poses, and animation frames. Installed AC DAT files and a Setup ID.
ShaderCompiler Compile the Vulkan GLSL shader set to committed SPIR-V. Source and output directory arguments.
SkyObjectInspect Inspect Dereth sky/day-group objects and texture data. Installed AC DAT files.
StarsProbe Audit sky-object geometry, UV ranges, and surfaces. Installed AC DAT files.
TextureDump Dump render-surface statistics and texture images. Installed AC DAT files.
WeatherEnumerator Enumerate weather sky objects and their bounds. Installed AC DAT files.
WeatherSetupProbe Inspect the parts and surfaces of weather Setups. Installed AC DAT files.

Build the complete maintained graph with:

dotnet restore AcDream.slnx --locked-mode --force-evaluate
dotnet build AcDream.slnx -c Release --no-restore

Use pwsh ./tools/run-release-gate.ps1 for the authoritative bounded gate. Package versions and lock-file maintenance are documented in docs/release-gate.md.