Files
tdkpin/original/MECHANICS_PROGRESS.md
T
ddidderr e1dc644c76 docs(reverse): restore named mechanism state machines
Transcribe the claw and flipper control flow into an address-mapped readable companion while preserving unresolved fixed-point projection as an explicit boundary.

Correct the reconstruction ledger so the current Rust claw is not described as proven parity.

Test Plan:
- git diff --cached --check
- Review restored constants and branches against TDKPIN_GHIDRA_RAW.c
2026-08-22 18:38:07 +02:00

3.1 KiB

Mechanics reconstruction progress

This ledger scopes the current reverse-engineering pass to the claw and flippers. The preserved executable is the authority; TDKPIN_GHIDRA_RAW.c remains immutable raw evidence, while TDKPIN_MECHANICS_RESTORED.c carries reviewed names and control flow.

Target: TDKPIN.EXE SHA-256 a9022f1894e3e6e21fc42e8f6c932f7c549ca77f63aaa0c488bb9d55d9d0174c.

Function inventory

Address Raw name Restored role Status
1000:638e FUN_1000_638e key-release flag updates reviewed
1000:6bf8 FUN_1000_6bf8 key-press flag updates reviewed
1000:7ed9 FUN_1000_7ed9 flipper collision movement and sound reviewed; inner fixed-point geometry still raw
1000:8b0d FUN_1000_8b0d flipper bitmap/collider movement reviewed; inner fixed-point geometry still raw
1000:99f0 FUN_1000_99f0 binary flipper transition state machine restored
1000:c79c FUN_1000_c79c collision dispatch, including claw object 0x59 claw branch restored
1000:eab1 exported ordinal 10 timer tick, claw release and return claw branch restored
1008:0002 FUN_1008_0002 sound-enabled dispatch restored
1008:0e08 FUN_1008_0e08 claw background restore and sprite slicing restored

Inventory coverage is 9/9 functions inspected for this mechanism pass. This is not a claim that all instructions in the two large physics functions have been renamed.

Proven behavior now available to the Rust port

  • Left Control (scan 0x1d) and keypad Enter (scan 0x1c) set input flags; the timer changes each flipper position only between 0 and 1.
  • Every flipper movement edge, including return, invokes sound number 21, Win16 WAVE resource 2021.
  • Claw collision object 0x59 suspends the ball, zeros its live motion, disables collision records 12 through 20, and selects terminal frame 1, 6, 7, or 18.
  • The claw advances exactly one frame per timer tick to its terminal, releases the ball, then advances one frame per tick back to frame 10 before clearing the overlay and restoring collision records 12 through 20.
  • Resource 900 is sliced into 100x74 frames, nine columns by four rows. The destination is (238,47); closing rows begin at source y=0 and opening rows at source y=148.
  • Claw capture/contact uses sound 2015; release uses sound 2016.

Explicit pending evidence

  • Decode the runtime/FPU conversion used to project the claw's raw 16.16 release coordinates and non-frame-18 velocity into playfield pixels.
  • Recover or differentially measure the timer cadence used for each claw frame.
  • Transcribe the full fixed-point flipper impulse calculation, then compare it with the Rust floating-point collision response.
  • Validate the reconstructed sequences against deterministic Rust traces and captured frames from the original executable.

Those four items are intentionally not counted as semantic parity. The readable C file preserves their raw constants and labels the unresolved conversion so a later implementation cannot silently turn an estimate into claimed evidence.