Extract VM audio opcode handler

This commit is contained in:
gamer147
2026-08-02 22:25:06 -04:00
parent 96a878e6b3
commit 738129faa1
4 changed files with 179 additions and 127 deletions

View File

@@ -172,6 +172,11 @@ the interpolation helpers consumed by retained-scene sampling. `engine/Age.Engin
owns surface/movie transition queues, presentation activity and click-skip logic, diagnostics and dirty-reason
accounting, and visible retained-scene snapshots.
`engine/Age.Engine/Vm/VirtualMachine.cs` retains VM lifecycle, cross-domain state, and the proven top-level
opcode dispatcher. Its partial-class companion `engine/Age.Engine/Vm/VirtualMachine.Audio.cs` owns VM audio
state, BGM restart semantics, and the BGM/voice/SFX/mixer opcode handler; `Step` retains the audio labels and
routes that family into the handler.
The disposable `build/page-map-<SCENE>.jsonl` files are produced by editor/development Godot runs and map
runtime ADV page ordinals to their authoritative script offsets for `tools/locate_page.py`. Packaged exports
have no repository output tree and write their automatic maps below `user://diagnostics/page-maps` instead.

View File

@@ -624,6 +624,12 @@ do not mix mechanical moves with semantic changes.
accounting, scene reset, persistence, and locking. The planned `GfxState` decomposition is complete; runtime
validation remains green.
The first bounded `VirtualMachine.Step` extraction converted the sealed VM type to a sealed partial class and
moved VM-owned audio state, BGM restart semantics, and the existing BGM/voice/SFX/mixer case bodies into
`engine/Age.Engine/Vm/VirtualMachine.Audio.cs`. The top-level dispatcher retains the exact opcode labels and
routes only that family through `StepAudio`; public VM behavior and case-body logic remain unchanged. Runtime
validation remains green.
**Gate:** no externally visible behavior or command changes; generated artifacts are byte-identical where
deterministic, and the corresponding engine, Python, Godot, and corpus validations remain green after
each domain move.
@@ -995,7 +1001,8 @@ layer's rendering diverges from ADV; save layout.
## 8. Immediate next step
Continue step 2 of the **codebase consolidation** maintenance slice: behavior-neutral physical splits backed
by the tracked launcher and layered validation driver. With the planned `Main`, `GodotAdvHost`, and `GfxState`
domains isolated, begin thinning `VirtualMachine.Step` through existing domain handler methods without replacing
the proven dispatcher or changing public types, commands, and generated output.
domains isolated and the first `VirtualMachine.Step` family routed through a domain handler, extract the movie
opcode family next without replacing the proven dispatcher or changing public types, commands, and generated
output.
Concrete playthrough blockers may still preempt this bounded maintenance work; the consolidation effort does
not replace Phase B gameplay validation or the open cross-platform gates.