port: the plate pulses -- restore the looping record, over the base rather than instead of it

Ask #1 measured: held at the title with no input the plate oscillates ~23 cycles
per window with no decay and NEVER goes off -- floor 159 thresholded pixels,
pulse bottoming at 714. A glow alone cannot do that (0 -> 80 -> 0); a steady base
plus a pulsing glow can, and 714/1520 are base-only and base-plus-glow.

The port already had the base right: ptbtn00's fade to 0 at t=244 is its EXIT
ramp, and while held the base sits at alpha 255. The glow was missing.

The defect was in the renderer, not the entry I deleted on 2026-08-29. _draw
treated a looping record like a focused one -- drawn INSTEAD of the base, which
is right for a focused button and wrong here. I deleted the right thing for the
wrong reason. A looping record now draws OVER the base and the entry is restored.

Rendered: 95.68 base only, 115.52 at peak, period 1.980 s against a declared 120
units = 2.000 s, ratio 0.990. Visible on the boot path; not under --screen
--overlay, where a static overlay poses at its arrival by design.

Authored in UNITS on their instruction, with their three limits verbatim: one
boot, does not distinguish boot from attract title, and 714/1520 is not an alpha
ratio so no duty cycle is inferred.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
Sylpheed port agent
2026-08-30 07:51:11 +00:00
parent 10ae0bd464
commit aa6be8e809
3 changed files with 124 additions and 36 deletions

View File

@@ -73,37 +73,50 @@
],
"looping_focus_records": {
"_": [
"WHICH focus records the port draws unconditionally, and loops.",
"WHICH focus records the port draws, unconditionally and on a loop, OVER the",
"element's own sprite rather than instead of it.",
"",
"🔴 EMPTY AS OF 2026-08-30, and the deletion is the finding.",
"",
"The one entry here -- `press_start/ptbtn00`, period 120 -- was AUTHORED to",
"give the PRESS (A) plate a glow on a screen that has no buttons and focuses",
"nothing. Measured, it did the opposite: it made the plate INVISIBLE.",
"",
"`_draw` treats a looping focus record the way it treats a focused button --",
"it draws the focus record INSTEAD of the base sprite and moves on. For a",
"focused button that is right and measured (the focused sprite covers the",
"base at 100.0 % of base-visible pixels). For the plate it substituted a dim",
"glow at the wrong phase for the element's own bright sprite:",
"",
" with the entry without it",
" press_start t=236 max 0 max 252.5",
" press_start t=240 max 0 max 252.5",
" press_start t=250 max 15.3 max 252.5",
"",
"So the plate could not be seen at any instant, on the screen whose entire",
"content is the plate. The element's own fade is DECODED -- alpha 255 at",
"t=236-238 -- and this authored guess was overriding decoded data with a",
"worse answer. That is the wrong way round, and an authored entry that",
"suppresses a decode is deleted rather than tuned.",
"",
"⚠️ What is NOT claimed: that the plate has no glow. The focus record",
"`ptbtn00f.rat` exists and may well be drawn ON TOP of the base in the real",
"game. Drawing both would be a rendering rule nobody has measured, so the",
"port draws what the disc's own fade says and leaves the glow out. See",
"docs/port/BLOCKED.md -- a capture of the idle title settles it."
]
"RESTORED 2026-08-30 on a MEASUREMENT, having been deleted on 2026-08-29 for",
"a real defect that was in the RENDERER, not in this table. The old entry made",
"`_draw` substitute the glow for the plate's own bright sprite, so the plate",
"was invisible at every instant (max 0 against max 252.5). `ScreenView` now",
"draws the base and the record over it, and the entry comes back."
],
"press_start/ptbtn00": {
"record_element": "ptbtn00f",
"period_units": 120,
"kind": "measured",
"source": "docs/re/structures/plate-pulse-measured.md, RE agent 2026-08-30",
"why": [
"MEASURED off the running game, held at the title with NO INPUT: the plate",
"oscillates continuously -- two windows in one boot of 58 s and 57 s, about",
"23 cycles each, with no decay and no settling.",
"",
"🔴 IT NEVER GOES OFF. The plate-absent floor is 159 thresholded green",
"pixels -- the title art's own, measured on live-title-build4-no-plate.png --",
"and the pulse bottoms at 714, four and a half times that. So `ptbtn00`",
"going transparent at t=244 is not the end of the plate; that is its EXIT",
"ramp, which plays when the screen leaves. While the screen is held the base",
"sits at its own hold (alpha 255 at t=238) and `ptbtn00f`'s cycle runs over",
"it. Base-only and base-plus-glow are what the 714 and the 1520 are.",
"",
"⚠️ 120 UNITS, NOT SECONDS, and that is the RE agent's own instruction. Their",
"run measured 2.530 and 2.540 s; an earlier corpus run measured 2.24 s. Same",
"declared number, different emulator pacing -- x1.27 and x1.12 against a",
"nominal 2.000 s, which IS 120 units at 60 units/s. Hardcoding 2.5 s would",
"author one loaded container's clock."
],
"limits": [
"ONE BOOT. Two windows inside it are not two boots.",
"It does NOT distinguish the boot title from an attract-loop title: run 1",
"opens at t~255 s against Q9's ~193 s no-input baseline, so it may already",
"be the attract title. Both are 'the title, held, no input' -- which is what",
"was asked -- but it is not proof about the first appearance.",
"🔴 714/1520 IS NOT AN ALPHA RATIO. The counter is thresholded pixels, so dim",
"pixels drop out first. No duty cycle and no ramp shape may be read off it;",
"the port draws the record's own declared alpha ramp and infers nothing."
]
}
},
"exit_ramp_deleted_why": [
"DELETED 2026-08-29, and the deletion is the point.",