Commit Graph

65 Commits

Author SHA1 Message Date
gamer147
f5b986e9f1 Decode CCINIT class change rules 2026-07-23 12:40:42 -04:00
gamer147
ec349ea461 Fix EBINIT overlapping field ownership 2026-07-23 12:20:35 -04:00
gamer147
1b0c2a6a74 Resolve final STINIT object payloads 2026-07-23 09:56:18 -04:00
gamer147
1a9989b3ce Decode STINIT initial object states 2026-07-23 09:47:22 -04:00
gamer147
9c05451369 Join STINIT object definitions 2026-07-23 09:34:23 -04:00
gamer147
9e5fa94073 Decode STINIT tagged object payloads 2026-07-23 09:07:58 -04:00
gamer147
643a462af4 Decode STINIT enemy spawn semantics 2026-07-23 08:40:22 -04:00
gamer147
3fb3d3cfd8 Decode STINIT map and object placement data 2026-07-23 00:22:03 -04:00
gamer147
86a7cb1750 Extract and profile STINIT stage records 2026-07-22 23:50:43 -04:00
gamer147
00640696dc Expose semantic INIT column names 2026-07-22 23:15:33 -04:00
gamer147
511895fc05 Join item and skill message semantics 2026-07-22 23:04:24 -04:00
gamer147
7f2a81885a Recover signed INIT data semantics 2026-07-22 21:05:48 -04:00
gamer147
5f743275bf Model linked INIT record tables 2026-07-22 16:57:59 -04:00
gamer147
d6a69ba9b4 Correct INIT extraction and profile item fields 2026-07-22 16:44:53 -04:00
gamer147
197adf2e1a Adopt GPU retained renderer 2026-07-22 15:37:42 -04:00
gamer147
4ea352e45d Profile and optimize retained rendering 2026-07-22 14:19:20 -04:00
gamer147
4c9719c5dc Document performance baselines and native animation cadence 2026-07-22 12:06:54 -04:00
gamer147
4f5137a98f Harden movie playback lifecycle and diagnostics 2026-07-22 09:44:57 -04:00
gamer147
816673cf6a Enable paced FFmpeg movie playback 2026-07-22 08:39:27 -04:00
gamer147
760f84e218 Add isolated FFmpeg movie decoder shim 2026-07-22 00:17:27 -04:00
gamer147
cca7d3d82e Correct native packed resource addressing docs 2026-07-21 20:14:07 -04:00
gamer147
e86abfbf65 Capture natural Game Start diagnostics 2026-07-21 01:20:07 -04:00
gamer147
0dfba316f1 Add hidden title debug mode and pace menu polls 2026-07-20 23:38:19 -04:00
gamer147
f21a4c06bf Implement root reload and title debug launcher 2026-07-20 22:32:49 -04:00
gamer147
bfdefb1c35 Document SYSTEM4 launcher defaults 2026-07-20 18:17:04 -04:00
gamer147
097473fe16 Land SYSTEM4-rooted Godot boot 2026-07-20 18:13:32 -04:00
gamer147
7250de7fea Document B0 natural boot control spine 2026-07-20 17:29:38 -04:00
gamer147
26b6c2137c Reverse opcode 0x1ad save resume boundary 2026-07-20 12:06:02 -04:00
gamer147
56f8adfa2d Correct ADV Hide Window restore behavior 2026-07-18 22:23:06 -04:00
gamer147
fb3a7206ce feat: add runtime ADV page locator 2026-07-11 22:52:26 -04:00
gamer147
233f791c10 Migrate audio payloads onto asset VFS 2026-07-11 11:01:11 -04:00
gamer147
a1f6d0ab51 Decode AGF textures through the asset store 2026-07-11 09:55:58 -04:00
gamer147
b6c3b1660d Implement base SYS4 asset store 2026-07-11 09:14:14 -04:00
gamer147
99ce351041 Implement native-backed SC0000 SFX lifecycle 2026-07-11 02:15:17 -04:00
gamer147
9d5a1c2b09 Document native asset VFS roadmap 2026-07-10 23:25:31 -04:00
gamer147
34db35903b Implement native ADV retained text 2026-07-10 22:46:27 -04:00
gamer147
8bee45f483 Refresh retained presentation references 2026-07-10 21:56:57 -04:00
gamer147
82afcf5506 Fix native retained presentation batching 2026-07-10 21:37:42 -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
54bd9a7006 docs: scene-entry state snapshot (capture_global_writes + --state)
engine-re.md: the write-log method, plaintext-value insight (store is obfuscated),
vm_operand_write ABI, the packer poll-until-unpacked fix, and the validation
(34k-global capture seeds the VM to match the engine's whole opening). Plus the
resync-tolerant align() / operand-hook blind-spot notes. tools-reference: the new
tool + trace --state.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 13:32:52 -04:00
gamer147
d2e9cc5a99 re: record differential oracle outcome + first divergence
engine-re.md: the offset-path diff method, the working capture (operand hook
0x41b940; tick 0x410fb0 sees ecx!=ctx), the two capture caveats (hook-before-load
gating + operand-mode argc>=1 filter), SC0000 codebase id, and the first
divergence found (op 0xa0 jcc @ 0x8d on uninitialized G[0x6c1], the ADV-chrome
enable — a two-boot-gap state hole, not the predicted coroutine yield).
tools-reference.md: trace_engine_ops.py, diff_optrace.py, --trace-json.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 12:00:12 -04:00
gamer147
1b151f6e17 re: apply EngineCtx struct to /v2 handlers; doc + canonical-map wiring
Created the EngineCtx Ghidra struct (35 fields, 0xa1000) and retyped all
419 dispatch handlers' this -> EngineCtx* (CUSTOM_STORAGE, ctx in ECX).
Handlers now decompile ctx->cur_ctx_index / ctx->run_state_flags etc.
Validated: sleep_op_0xc8, gfx_op_0x215. tools-reference + engine-re.md
wired; CLAUDE.md canonical-map updated (root, outside repo).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 10:08:06 -04:00
gamer147
e166cab2d5 re(frida): import-map applied to /v2 — 248 Win32 APIs named; validated
Labeled the module-resident IAT at RVA 0x16f000 (imp_<dll>_<func> x248,
0 clobbers). Validated in decomp: FUN_0044f390 -> imp_kernel32_CreateFileA
/ SetFilePointer; sleep_timer_arm -> imp_winmm_timeGetTime (pins
DAT_0056f3d4). d3d9/heap-resolved DLLs unlabeled by design.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 09:26:19 -04:00
gamer147
ace8ddf8eb re: auto-label all opcode dispatch handlers from FUN_00413860
Extract op->real-handler map (handler(op)=ctx[0x26c93+op]) from the
registration routine's override stores; ghidra_handler_map.py +
build/op-handler-map.json (420 overrides). Cross-check vs opcodes.toml
found 0 real drift. One-shot Ghidra pass then labeled the /v2 image:
281 raw FUN_/LAB_ handlers -> op_0xNN_handler, 107 bare VAs -> functions,
31 hand-named preserved, opcode plate comment on every handler.

Includes the Task A spec + plan and the two-program (/v2 vs SMM) gotcha.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 08:32:01 -04:00
gamer147
9dd96bbc84 docs: grey-BG root cause (color-op alpha=tint-strength; slot-0 collision) + --gfx-log tool
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 23:42:20 -04:00
gamer147
1f9bde3739 docs+godot: finish frame-cadence RE notes + headless shot null-guard
Prior-session WIP: RE findings on the engine frame cadence (engine-re.md,
phase-a-slice-plan.md, tools-reference.md) and a null-guard so headless
--shot-sequence advances without a rendered viewport texture.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 17:26:27 -04:00