diff --git a/docs/port/f6-what-starts-the-sweep.md b/docs/port/f6-what-starts-the-sweep.md new file mode 100644 index 00000000..c39109d7 --- /dev/null +++ b/docs/port/f6-what-starts-the-sweep.md @@ -0,0 +1,72 @@ +# F6 unit a — what the port currently uses to start the title sweep + +**Status:** ✅ answered. **No behaviour changed** — this unit exists so that when +the Decoder says *when* the glow should start, the edit is one line. +Port at `937f055`, 2026-09-02. + +## The answer, in one line + +`port/scripts/screen_view.gd:684` + +```gdscript +var t := leaf_time_units if leaf_time_units >= 0.0 else time_units +``` + +**That is the whole start mechanism, and it is not a start mechanism.** +`leaf_time_units` is set in exactly one place — `boot.gd:359`, the `--leaf-time` +diagnostic flag — and is `-1.0` on every real boot. So the travelling glow runs +on `view.time_units`, the title screen's own clock, which `_advance` sets to +`0.0` when the title is raised. **Zero offset, no gate.** + +## 🔴 And the obvious gate does not exist + +The natural reading — mine, before checking — is that the parents gate it: +`ptloop01`/`ptloop02` declare `0:0 70:0 100:255 238:255 250:0`, invisible until +t=70. **That is not what happens**, because what reaches the screen is the LEAF, +and `screen_view.gd` records as decoded that *"the leaf runs on its OWN timeline +and the parent's alpha is NOT multiplied in"*. The parent ramp gates nothing. + +The leaves' own declarations: + +| leaf | alpha | x position | +|---|---|---| +| `pteff03` | **`0:255`** 150:128 540:255 600:255 | −639 → −39 (t=150) → 1521 (t=540) | +| `pteff03a` | 0:0 150:128 630:255 720:255 | 1721 → 1111 (t=150) → −839 (t=630) | + +**`pteff03` is at full alpha from title t=0** and is travelling from t=0. It +clears the left edge (sprite is 399 wide) at around t≈60 and is well inside the +frame by t=150. + +The plate arrives at **t=214–236**. So the port starts the sweep roughly +**150+ units ≈ 2.5 s early** — which is the size and the direction of what the +human reported. + +## Corroborated on a film, not only read + +Filmed a real boot at 0.05 s and measured frame-to-frame change in the title art +band `1280x420+0+90`, which **excludes the plate's own rectangle** (y 550–600) so +the plate cannot be what registers: + +``` +view_units 22 54 69 86 118 134 214 341 406 +delta 31.8 39.9 30.8 9.4 12.6 0.2 0.2 0.1 0.4 +``` + +Motion is heavy through the build-in and the band is quiet by t≈134 — consistent +with `pteff03` having already crossed the measured band and with the coarse +resize washing a thin glow out. **The film neither adds to nor contradicts the +declaration; the declaration is the evidence here.** + +## What changes when the answer lands + +A start time is an **offset**, and `leaf_time_units` is an absolute override — +they are not the same field. The one-line edit at 684 becomes a subtraction, fed +by one authored value. Nothing else moves. + +## What this does NOT do + +* **It does not choose a start time.** That is the Decoder's, and this unit was + scoped to exclude it deliberately. +* It does not touch the glow. A boot looks exactly as it did. +* It says nothing about whether the *speed* or the *path* is right — only when it + begins.