Commit Graph

55 Commits

Author SHA1 Message Date
gamer147
8fe610b66d Implement numbered save pair lifecycle 2026-07-24 15:32:55 -04:00
gamer147
838f6d4245 Profile and optimize retained rendering 2026-07-22 14:19:20 -04:00
gamer147
740e10c550 Harden movie playback lifecycle and diagnostics 2026-07-22 09:44:57 -04:00
gamer147
5b66cb2cd2 Enable paced FFmpeg movie playback 2026-07-22 08:39:27 -04:00
gamer147
633e3b3085 Prevent failed combat movies from blocking 2026-07-21 20:46:10 -04:00
gamer147
88f2f65bda Use universal packed resource resolution 2026-07-21 20:23:32 -04:00
gamer147
7a957a318d Implement DEBUGMAP combat frontier 2026-07-21 19:30:56 -04:00
gamer147
8c0e19ceb6 fix: avoid AGF decode during movie preroll 2026-07-21 15:15:23 -04:00
gamer147
274744e9b6 Implement movie surface stop-time queries 2026-07-21 14:43:24 -04:00
gamer147
471cb51c50 Implement held ADV fast-forward input 2026-07-21 10:45:46 -04:00
gamer147
6243ceff64 Implement ADV layout cursor and bounds 2026-07-21 09:48:25 -04:00
gamer147
cffc75c64d Implement ROOM fades and character voices 2026-07-21 00:47:29 -04:00
gamer147
2fa42b085a Add hidden title debug mode and pace menu polls 2026-07-20 23:38:19 -04:00
gamer147
c84952e7d7 Implement root reload and title debug launcher 2026-07-20 22:32:49 -04:00
gamer147
a82f25230c Implement modal startup movies 2026-07-20 20:23:15 -04:00
gamer147
e472c0c371 Fix packed raw menu sound effects 2026-07-20 18:39:38 -04:00
gamer147
d4510242d6 Land SYSTEM4-rooted Godot boot 2026-07-20 18:13:32 -04:00
gamer147
ae157da04c Implement retained graphics lifecycle ops 2026-07-20 14:29:41 -04:00
gamer147
4179d90b8f Implement deferred SFX and voice duck control 2026-07-20 11:29:12 -04:00
gamer147
3fa07c0ae5 Implement ADV text publication service 2026-07-20 10:18:10 -04:00
gamer147
d3698a0612 Implement ADV History voice replay 2026-07-19 14:11:49 -04:00
gamer147
eee9022cfb Clear ADV History presentation on exit 2026-07-19 11:32:36 -04:00
gamer147
fef61323b1 Implement visible ADV History presentation 2026-07-18 23:59:26 -04:00
gamer147
66b13315f2 Correct ADV Hide Window restore behavior 2026-07-18 22:23:06 -04:00
gamer147
ad022ace51 Implement native ADV Hide Window path 2026-07-18 21:14:06 -04:00
gamer147
7f5b88117b Pace ADV message skip by engine ticks 2026-07-18 19:04:15 -04:00
gamer147
dc50acaa9b Implement native ADV message skip 2026-07-18 17:32:12 -04:00
gamer147
4bf98cc7af Implement ADV controls and native Auto timing 2026-07-18 17:16:06 -04:00
gamer147
8c7c7158a7 Fix retained background lifecycle 2026-07-12 00:00:45 -04:00
gamer147
3aca514497 feat: add runtime ADV page locator 2026-07-11 22:52:26 -04:00
gamer147
5614fc7631 Restore ADV wait indicator 2026-07-11 21:12:24 -04:00
gamer147
9f1fcb5602 Optimize static wait presentation 2026-07-11 13:56:30 -04:00
gamer147
e8c9e1c6a7 Fix movie compositor publication 2026-07-11 12:41:37 -04:00
gamer147
36960d4118 Implement SC0000 movie playback lifecycle 2026-07-11 12:27:51 -04:00
gamer147
0d3078de03 Migrate audio payloads onto asset VFS 2026-07-11 11:01:11 -04:00
gamer147
ec07c76721 Decode AGF textures through the asset store 2026-07-11 09:55:58 -04:00
gamer147
2232216832 Implement native-backed SC0000 SFX lifecycle 2026-07-11 02:15:17 -04:00
gamer147
921c91474f Implement native ADV retained text 2026-07-10 22:46:27 -04:00
gamer147
f94bca4ba5 Refresh retained presentation references 2026-07-10 21:56:57 -04:00
gamer147
85a66afe20 Fix native retained presentation batching 2026-07-10 21:37:42 -04:00
gamer147
d6d1be984e Implement ADV foreground transition lifecycle 2026-07-10 18:49:53 -04:00
gamer147
768863b48e feat: add affine rotation rendering and timeline diagnostics 2026-07-10 17:54:33 -04:00
gamer147
4d225618f9 fix: align animation pacing and transforms with native 2026-07-10 15:41:17 -04:00
gamer147
f3f1314848 feat(godot): tint-strength lerp blend + --gfx-log compositor/op diagnostic
Compositor applies TintStrength as a texel->tint LERP (0=keep texel) with object
opacity independent. New --gfx-log <file>: per-frame per-object draw/skip CHANGE
log + set-texture/create-texture slot trace — the tool that root-caused the grey
background (everything collapsing into slot 0).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 23:41:03 -04:00
gamer147
9efebc7489 feat: throttle Godot VM to a per-frame op budget on FrameClock (fixes opening speed-through)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 17:32:29 -04:00
gamer147
a256b8e6d8 feat(diag): aggregating + filtered trace sinks (histogram, op-filter, per-script)
The existing trace framework only had a flat text formatter, so every question
became 'dump millions of lines, then grep'. This session that cost a long wrong
detour. Add, all observe-only (parity preserved):

- HistogramTraceSink: execution counts per opcode AND per call-site (script:pc)
  with a sample operand. Dumped sorted after the run. This is what instantly
  showed the 493k headless 'sleep's are INPUTNAME.BIN:0x1c3 (a name-entry poll
  loop), not the opening.
- TraceSinkBase: tracks the frame stack -> attributes each step to its REAL
  script (nested call-script frames included) = the 'which script is this pc in?'
  answer a bare step trace can't give.
- TextTraceSink: op-filter (--trace-ops sleep,draw-texture,...) + script:pc tags.
- CompositeTraceSink: fan-out (text + histogram + Godot's call-script queue).
- OpcodeTable.ByLabel: mnemonic -> opcode for --trace-ops.
- CLI: --trace-histogram, --trace-ops, robust --trace-file (mkdir -p).
- Godot: --trace-histogram <file> profiles the REAL run (headless flow diverges:
  real run to page 1 is 562 steps / 0 sleeps vs headless 2M steps / 493k sleeps).
- Also: --sleep-scale <f> debug knob to slow the paced opening for inspection.

Engine 56/56 (4 new); sweep parity 284/13; Godot builds + dogfooded end-to-end.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 09:50:07 -04:00
gamer147
0ed6ff130d feat(godot): Sleep blocks the VM thread so the compositor presents paced frames
op 0xc8 -> Thread.Sleep(duration ms) on the VM background thread (capped 10s);
main thread keeps compositing -> the sleep-paced opening burst gets frames to show.
Unit = ms (RE-confirmed). Selftest OK (plumbing parity; synthetic scene has no sleep).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 09:02:01 -04:00
gamer147
eeaeabd5cc feat(gfx): Godot per-frame compositor on the surface/object model + restore --boot
Main._Process composites visible objects in ascending-handle order from their live
surface (resId->BMP); GodotAdvHost.DrawTexture no-op'd (retained), ResolveResIdTexture
added. Restored the --boot system-boot handling that the revert had dropped (Main.cs
was running cold, which is why nothing matched the oracle). Verified: booted opening
event CG renders correctly. Selftest green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 20:38:07 -04:00
gamer147
2b078e1eb8 refactor(godot): report subroutines via GodotTraceSink, not the IHost queue
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 15:23:25 -04:00
gamer147
5e5968f43b Add subroutine-execution diagnostics + Godot --scene
- CLI run: report call-script dispatch count + distinct source scripts per run.
- Godot --scene <NAME>: play any scene (not just SC0000).
- Godot reports the call-scripts executed as nested frames at scene end (collected
  thread-safely; Godot drops GD.Print from the VM background thread).

Demonstrated live: SC0240 in Godot executes 29 call-scripts (RESETLAND, SETEN,
ADDEN, RENDERMAP, SETOBJ, DRAWOBJ, CALCREVISE, LOOK) as nested subroutine frames.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 14:10:55 -04:00