gamer147
10f6656c2d
feat(a2b): first-pass texture render — full-screen event-CG layer
...
Wire asset resolution into a live Godot render. VM executes set-texture ->
ResourceMap resolves (scene,resId) -> files[section_base+resId] across all
archives -> pre-converted BMP -> composite behind the dialogue. The full-screen
event-CG layer (EV052*) renders end-to-end from the executed bytecode.
- Age.Engine/Sys4/ResourceMap.cs: Resolve + BMP TexturePath; Paths: asset JSONs
- GodotAdvHost: create/set/draw-texture -> TextureRect in a _stage layer
- IHost.DrawTexture + VM dispatch extended with dst x/y (draw-texture args 7/8)
- project.godot 800x600; convert_agf.py all-archive + --scene batch
- engine 8/8, C# --selftest still byte-matches vm0 trace (VM behaviour unchanged)
Known limitations (next chunk = graphics geometry/blend subsystem):
- sprites + BG* via the CG-load subroutine get garbage dst/size — native ops
stubbed (0x208 get-texture-size + sprite position/anim chain)
- AE* fades draw opaque/instant (no alpha); no chromakey
- slot model approximates the game's immediate-mode blit-onto-slot-0 canvas
- AGF pre-converted to BMP offline (runtime decoder deferred)
See docs/phase-a-slice-plan.md (A2b section).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-06 21:22:42 -04:00
gamer147
d2d798bbac
feat(a2b): promote create/set/draw-texture to IHost methods (trace parity kept)
...
Runtime finding: SC0000's bg is a slot-0 full-screen slideshow (res 0x23 first), not the
static-path res 0x21. Target corrected to 0x23. CaptureHost/CountHost no-op the new methods.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-06 15:49:07 -04:00
gamer147
b668c83de4
feat(a2a): add IHost.WaitForInput hook (wait-for-input 0x72); trace parity preserved
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-06 14:48:46 -04:00
gamer147
a8a91e48f6
feat(a1): CLI (run/trace) + vm0.py --trace + per-scene differential test (A1 green)
...
C# VM is byte-identical to vm0.py across all 297 SC/SP scenes (offsets+halt+steps);
RECOVER passes; SC0000 = 27994 steps / 186 lines matching the Python prototype.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-06 13:55:11 -04:00
gamer147
121686fbb1
feat(a1): VM core (operands+pointer semantics, handlers, emit-cap) + RECOVER
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-06 13:53:03 -04:00
gamer147
0cb83fcb62
feat(a1): SYS4 container parser (header + code decode + data_array_end shrink)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-06 13:51:32 -04:00
gamer147
f3fe8ffe58
feat(a1): SYS4 XOR-FF cp932 string codec
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-06 13:50:35 -04:00
gamer147
a704765ea0
feat(a1): .NET 8 solution scaffold + Model + OpcodeTable loader
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-06 13:49:02 -04:00