Commit Graph

69 Commits

Author SHA1 Message Date
gamer147
0dfba316f1 Add hidden title debug mode and pace menu polls 2026-07-20 23:38:19 -04:00
gamer147
b8cf21245a Implement native exit request control flow 2026-07-20 23:02:27 -04:00
gamer147
f21a4c06bf Implement root reload and title debug launcher 2026-07-20 22:32:49 -04:00
gamer147
df17747f63 Implement modal startup movies 2026-07-20 20:23:15 -04:00
gamer147
097473fe16 Land SYSTEM4-rooted Godot boot 2026-07-20 18:13:32 -04:00
gamer147
7d438a7574 Implement ADV skip lifecycle 2026-07-20 16:41:44 -04:00
gamer147
6aede1e525 Implement detached object animation control 2026-07-20 14:53:34 -04:00
gamer147
d740c27b4a Implement retained graphics lifecycle ops 2026-07-20 14:29:41 -04:00
gamer147
458b65aee6 Reverse shared SAVE.DAT integer opcodes 2026-07-20 13:33:27 -04:00
gamer147
e3b2cbed83 Implement deferred SFX and voice duck control 2026-07-20 11:29:12 -04:00
gamer147
0fb608c35e Implement ADV text publication service 2026-07-20 10:18:10 -04:00
gamer147
e0aae05f32 Implement AGE text line spacing 2026-07-19 23:32:38 -04:00
gamer147
b8928ec7b8 Implement History mouse wheel navigation 2026-07-19 21:38:34 -04:00
gamer147
5ba16505d6 Implement History timed callback scrolling 2026-07-19 21:15:15 -04:00
gamer147
3fa09b8b42 Correct ADV History metadata ordering 2026-07-19 20:55:16 -04:00
gamer147
8f94ef86ac Implement ADV History voice replay 2026-07-19 14:11:49 -04:00
gamer147
538e87d368 Clear ADV History presentation on exit 2026-07-19 11:32:36 -04:00
gamer147
c30cf6cb08 Restore multi-row ADV History display 2026-07-19 10:57:58 -04:00
gamer147
280705d69c Correct ADV History layout addressing 2026-07-19 10:43:52 -04:00
gamer147
1fdedfb41f Implement ADV History interaction 2026-07-19 00:13:47 -04:00
gamer147
32a67b88de Implement visible ADV History presentation 2026-07-18 23:59:26 -04:00
gamer147
ac5437c5cf Implement ADV History data navigation 2026-07-18 23:41:23 -04:00
gamer147
b7ea16b54c Implement retained ADV History writers 2026-07-18 23:28:26 -04:00
gamer147
56f8adfa2d Correct ADV Hide Window restore behavior 2026-07-18 22:23:06 -04:00
gamer147
d8ead3da6e Implement native ADV Hide Window path 2026-07-18 21:14:06 -04:00
gamer147
d52e5b4725 Implement native ADV message skip 2026-07-18 17:32:12 -04:00
gamer147
05518a200f Implement ADV controls and native Auto timing 2026-07-18 17:16:06 -04:00
gamer147
96e5306148 Fix retained background lifecycle 2026-07-12 00:00:45 -04:00
gamer147
b41ae36168 Fix AE001H cyclic color blending 2026-07-11 22:21:10 -04:00
gamer147
f195934324 Fix AE001H translation target query 2026-07-11 21:40:16 -04:00
gamer147
5275ec5f4f Restore ADV wait indicator 2026-07-11 21:12:24 -04:00
gamer147
0bf6b43a32 Fix AE001H spritesheet animation 2026-07-11 20:37:26 -04:00
gamer147
593a24b510 fix(gfx): restore third CG glow 2026-07-11 20:05:51 -04:00
gamer147
024accd8d1 Implement SC0000 movie playback lifecycle 2026-07-11 12:27:51 -04:00
gamer147
99ce351041 Implement native-backed SC0000 SFX lifecycle 2026-07-11 02:15:17 -04:00
gamer147
34db35903b Implement native ADV retained text 2026-07-10 22:46:27 -04:00
gamer147
992215cc48 Implement native 0x202 color interpolation 2026-07-10 20:49:28 -04:00
gamer147
7f900c8fc6 Implement ADV foreground transition lifecycle 2026-07-10 18:49:53 -04:00
gamer147
bb16a5496a feat: add affine rotation rendering and timeline diagnostics 2026-07-10 17:54:33 -04:00
gamer147
014d128ccd fix: align animation pacing and transforms with native 2026-07-10 15:41:17 -04:00
gamer147
c14c7fdced feat: split native scale and translation channels 2026-07-10 10:28:11 -04:00
gamer147
d9611a03b1 feat: model ADV coroutines and retained effect teardown 2026-07-10 09:45:43 -04:00
gamer147
ac481b4002 diag+docs: confirm grey-BG root cause = unfilled slot-table (label_125bd via stubbed coroutine op 0x140)
Traced end-to-end (AGE_DIAG_SETTEX): set-texture slot=G[0x62452] <- query-gfx-object?
(-1 for unregistered CG handles) -> fallback lookup-array-2d(rec[s3]=G[0x3239])=0
because the slot table is never filled: label_125bd (SC0000 0x50f, slots 4..13) is
gated behind the scene-coroutine framework (0x140 coroutine-yield, stubbed). Adds
env-gated VM set-texture/query slot diagnostics + GfxState.IsRegistered.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 23:55:50 -04:00
gamer147
a014b90189 feat: wire SC0000 anim cluster ops (0x22f/0x229 pos, 0x239/0x231 sheet, 0x232 glow, 0x228/0x23f query)
Coverage 67->74/129; parity held (79/79, sweep 284/13).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 22:07:51 -04:00
gamer147
143fe8258c feat: resolve per-object alpha/tint/blend into RenderObject (colorkey retained)
0x202/0x203 now route through GfxState.SetObjectColor (sets HasColor);
SnapshotVisibleObjects resolves Alpha/Tint/BlendKind. Drops the stale
'alpha deferred' trace stub — alpha/tint is now consumed by the compositor.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 19:06:34 -04:00
gamer147
cd93ebae2e feat: add IHost.FrameYield per-opcode hook (no-op headless, parity held)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 17:29:50 -04:00
gamer147
791ea2ca0f fix(vm): faithful headless — halt at wait-for-input instead of plowing
The headless divergence that sent us chasing a phantom 'sleep' spin: op 0x72
wait-for-input was a no-op headless, so a run plowed past all 166 of a scene's
prompts into code no real playthrough reaches (SC0000 -> the name-entry poll
loop, spinning sleep 1 493k x to STEP-LIMIT). That path is a fiction.

Fix: VmOptions.HaltAtWaitForInput -> the VM halts (reason 'wait-for-input') at
0x72. run/play default to faithful (SC0000 now halts at ~402 steps, 0 sleeps,
matching the real run's path to the first prompt); --plow opts into the old
walk-every-page coverage. sweep stays plow by default (dialogue oracle, 284/13
unchanged); --halt-at-wait makes all 297 scenes halt cleanly at their first
prompt (0 STEP-LIMIT). Godot unaffected (really blocks on input; flag false).

Engine 58/58 (2 new); sweep default 284/13 unchanged; Godot selftest OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 10:45:32 -04:00
gamer147
5f245d4cf4 feat(vm): IHost.Sleep seam + dispatch 0xc8 (headless hosts no-op; parity held)
- IHost.Sleep(long duration); VM case "sleep" forwards the raw operand.
- 8 non-Godot hosts no-op Sleep; RecordingHost records it.
- SleepDispatchTests (51 green); sweep unchanged 284 exit / 13 STEP-LIMIT.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 08:59:52 -04:00
gamer147
0495628b99 feat(gfx): dispatch anim-start 0x234 + set-anim-clock 0x238 (revised global-clock model)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 23:38:15 -04:00
gamer147
328c25bc56 feat(gfx): label + dispatch set-anim-transform 0x21e/0x220 into GfxState
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 23:37:28 -04:00