port: a static overlay advances instead of freezing; and their pulse floor is unreproducible
--screen=X animates X but froze an overlaid Y -- my earlier fix overshooting, replacing a frozen-too-early overlay with a frozen-at-arrival one. The plate pulse made it visible: oscillating on the boot path, flat here. Now offset, not pinned: the overlay starts at its settle and takes the main view's delta. Static path now pulses 95.85 -> 115.41 against the boot's 95.68 -> 115.52; still frames unaffected and title_plate holds at 0.00%. Both halves were mine a week apart, and the over-correction was invisible until a third change gave it something to be wrong about. Refutation attempt on their pulse floor: 159/714/1520 is NOT reproducible from the published description. My counts on the same capture are 3-5x theirs at every threshold, so their region must be a tighter crop; neither region nor threshold is stated. The RATIO survives robustly -- 1:10.4-10.9 across a wide band, bracketing their 1:9.6 -- so 'steady base plus pulsing glow' stands, which is all the port's implementation rests on. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
@@ -1036,6 +1036,9 @@ func _exit_tree() -> void:
|
||||
|
||||
## The overlay the current boot step owes, if it has not been raised yet.
|
||||
var _overlay_spec: Dictionary = {}
|
||||
## Where a STATIC overlay's own clock starts, and the main view's clock then.
|
||||
var _overlay_t0 := 0.0
|
||||
var _overlay_view_t0 := 0.0
|
||||
## Wall-clock second at which it is raised, measured from the screen's settle.
|
||||
var _overlay_due: float = 0.0
|
||||
|
||||
@@ -1065,7 +1068,20 @@ func _overlay_process(delta: float) -> void:
|
||||
# units between build 4's last ramp and the plate's a=255 is a fixed
|
||||
# interval on ONE timeline -- so that path is untouched.
|
||||
if _sequence.is_empty():
|
||||
overlay.time_units = overlay.settle_time()
|
||||
# 🔴 A static overlay STARTS at its arrival and then ADVANCES. It used
|
||||
# to be pinned there on every frame, which was this fix overshooting.
|
||||
#
|
||||
# Pinning fixed the original defect -- `--screen=X --overlay=Y` pushed
|
||||
# the raw elapsed clock in, 9 units at capture, and `press_start` drew
|
||||
# nothing -- but it replaced a frozen-too-early overlay with a
|
||||
# frozen-at-arrival one. `--screen=X` animates X; freezing Y while
|
||||
# animating X is an inconsistency in one command, and the plate pulse
|
||||
# is what made it visible: the plate oscillates on the boot path and
|
||||
# sat flat here, which reads as a regression and is not one.
|
||||
#
|
||||
# Offset, not pinned: the overlay begins at its own settle and takes
|
||||
# the same delta the main view takes.
|
||||
overlay.time_units = _overlay_t0 + (view.time_units - _overlay_view_t0)
|
||||
else:
|
||||
overlay.time_units = view.time_units
|
||||
overlay.queue_redraw()
|
||||
@@ -1111,6 +1127,8 @@ func _raise_overlay(name: String) -> void:
|
||||
# After `view`, so it draws over it: Node2D siblings paint in tree order and
|
||||
# the export's own `paint_order` only orders WITHIN a build.
|
||||
viewport.add_child(overlay)
|
||||
_overlay_t0 = overlay.settle_time()
|
||||
_overlay_view_t0 = view.time_units
|
||||
print(" overlay %s raised at %.2f s, %d element(s), settles at t=%d"
|
||||
% [name, _elapsed, overlay.screen.get("elements", []).size(), int(overlay.settle_time())])
|
||||
# A boot with no menu to hand over to has now finished: it was held open for
|
||||
|
||||
Reference in New Issue
Block a user