From 34fb1ddf1ed844ca60e542c8e4c94c0a29cfda3a Mon Sep 17 00:00:00 2001 From: sylph-decoder Date: Sat, 12 Sep 2026 12:40:34 +0000 Subject: [PATCH] re: F3 sting half closed -- no sting, measured with a working positive control Continues the static lead from two iterations ago (f3-title-sting-mechanism-found-not-value.md) with the dynamic half it named as the next step. Booted with --xma_param_probe=true (the same census menu-audio-cues.md used for the menu's SE cues), no pad input, recording continuously from window-open: a glyph time series (not a threshold trigger) and every newly-seen XMA-PARAM stream, stamped on arrival since Xenia's own log carries no timestamps. Positive control, and a real one: the probe caught the title's two BGM stems starting at t=147.6s, matching f3-title-plays-bgm-102-and-103.md's already-established finding exactly -- the instrument finds a real stream before being asked to find nothing. From the plate's first visible activity through 68 seconds of build-in plus fully-settled pulsing (killed at t=220.1s), zero new XMA streams appeared beyond the two BGM stems and three unidentified early ones (boot splash, not this question). No SE-range stream, no second BGM, nothing -- measured, not the prior static reach limit. Refutation attempt this iteration, recorded either way: my first read of the fine-grained glyph series said BGM and the plate's build-in start at "essentially the same moment". Checking the raw per-sample data instead of a coarse table refutes that -- first non-zero glyph reading is ~0.67s after BGM onset, and immediately noisy rather than a clean climb. Corrected in the doc rather than left as an overclaim for someone chasing frame-accurate sync later. Reference data: docs/re/data/f3-sting-{glyph-timeseries,xma-param-arrivals}.tsv -- derived numeric/log-line data, not a capture of rendered game content. --- docs/port/HANDOFF.md | 21 + docs/re/data/f3-sting-glyph-timeseries.tsv | 1321 ++++++++++++++++++ docs/re/data/f3-sting-xma-param-arrivals.tsv | 6 + docs/re/f3-sting-measured-no-new-stream.md | 94 ++ tools/re-capture/f3_sting_probe.py | 151 ++ 5 files changed, 1593 insertions(+) create mode 100644 docs/re/data/f3-sting-glyph-timeseries.tsv create mode 100644 docs/re/data/f3-sting-xma-param-arrivals.tsv create mode 100644 docs/re/f3-sting-measured-no-new-stream.md create mode 100644 tools/re-capture/f3_sting_probe.py diff --git a/docs/port/HANDOFF.md b/docs/port/HANDOFF.md index 1c9c82a2..c554fad8 100644 --- a/docs/port/HANDOFF.md +++ b/docs/port/HANDOFF.md @@ -6663,3 +6663,24 @@ the closest thing to that oracle available in a container with no physical pad. One run only; the corpus's two-run minimum isn't met, and the 3-vs-4-frame split in the interval is itself worth a second look. Good enough to stop authoring `-1.0` against, not yet good enough to call final. + +## ✅ F3's sting half closed — no sting, measured, not inferred + +[`docs/re/f3-sting-measured-no-new-stream.md`](../re/f3-sting-measured-no-new-stream.md). +The BGM half was already yours (cues 1102/1103); this is the "does the +Ⓐ-plate play a one-shot sound when it appears" half. + +**No, and it's a controlled negative, not silence from a broken +instrument.** Booted with the same `--xma_param_probe` census +`menu-audio-cues.md` used for the menu's SE cues, no pad input at all, +watched continuously from window-open. The probe's own positive control +landed for free: it caught the title's two BGM stems starting exactly when +`f3-title-plays-bgm-102-and-103.md` already says they should, proving the +instrument finds real streams before it's asked to find nothing. From the +plate's first visible activity through **68 seconds** of build-in plus +fully-settled pulsing, **zero new audio streams appeared** — no SE, no +second BGM, nothing. + +**For the port:** no automatic sound on the plate appearing. If something +still feels like it's missing there, it's the same "author the mix" +situation F2 already handed you, not a hidden cue. diff --git a/docs/re/data/f3-sting-glyph-timeseries.tsv b/docs/re/data/f3-sting-glyph-timeseries.tsv new file mode 100644 index 00000000..d9376b1c --- /dev/null +++ b/docs/re/data/f3-sting-glyph-timeseries.tsv @@ -0,0 +1,1321 @@ +# t_s glyph +1.01 0 +1.14 0 +1.23 0 +1.40 0 +1.56 0 +1.73 0 +1.90 0 +2.06 0 +2.23 0 +2.40 0 +2.56 0 +2.73 0 +2.90 0 +3.06 0 +3.23 0 +3.40 0 +3.56 0 +3.73 0 +3.90 0 +4.06 0 +4.23 0 +4.40 0 +4.57 0 +4.73 0 +4.90 0 +5.07 0 +5.23 0 +5.40 0 +5.57 0 +5.73 0 +5.90 0 +6.07 0 +6.23 0 +6.40 0 +6.57 0 +6.73 0 +6.90 0 +7.07 0 +7.23 0 +7.40 0 +7.57 0 +7.74 0 +7.90 0 +8.07 0 +8.24 0 +8.40 0 +8.57 0 +8.74 0 +8.90 0 +9.07 0 +9.24 0 +9.40 0 +9.57 0 +9.74 0 +9.90 0 +10.07 0 +10.24 0 +10.40 0 +10.57 0 +10.74 0 +10.90 0 +11.07 0 +11.24 0 +11.41 0 +11.57 0 +11.74 0 +11.91 0 +12.07 0 +12.24 0 +12.41 0 +12.57 0 +12.74 0 +12.91 0 +13.07 0 +13.24 0 +13.41 0 +13.57 0 +13.74 0 +13.91 0 +14.07 0 +14.24 0 +14.41 0 +14.58 0 +14.74 0 +14.91 0 +15.08 0 +15.24 0 +15.41 0 +15.58 0 +15.74 0 +15.91 0 +16.08 0 +16.24 0 +16.41 0 +16.58 0 +16.74 0 +16.91 0 +17.08 0 +17.24 0 +17.41 0 +17.58 0 +17.71 0 +17.88 0 +18.05 0 +18.21 0 +18.38 0 +18.55 0 +18.71 0 +18.88 0 +19.05 0 +19.21 0 +19.38 0 +19.55 0 +19.71 0 +19.88 0 +20.05 0 +20.21 0 +20.38 0 +20.55 0 +20.71 0 +20.88 0 +21.05 0 +21.22 0 +21.38 0 +21.55 0 +21.72 0 +21.88 0 +22.05 0 +22.22 0 +22.38 0 +22.55 0 +22.72 0 +22.88 0 +23.05 0 +23.22 0 +23.38 0 +23.55 0 +23.72 0 +23.88 0 +24.05 0 +24.22 0 +24.38 0 +24.55 0 +24.72 0 +24.88 0 +25.05 0 +25.22 0 +25.39 0 +25.55 0 +25.72 0 +25.89 0 +26.05 0 +26.22 0 +26.39 0 +26.55 0 +26.72 0 +26.89 0 +27.05 0 +27.22 0 +27.39 0 +27.55 0 +27.72 0 +27.89 0 +28.05 0 +28.22 0 +28.39 0 +28.56 0 +28.72 0 +28.89 0 +29.06 0 +29.22 0 +29.39 0 +29.56 0 +29.72 0 +29.89 0 +30.06 0 +30.22 0 +30.39 0 +30.56 0 +30.73 0 +30.89 0 +31.06 0 +31.19 0 +31.28 0 +31.44 0 +31.61 0 +31.78 0 +31.95 0 +32.11 0 +32.28 0 +32.45 0 +32.61 0 +32.78 0 +32.95 0 +33.11 0 +33.28 0 +33.45 0 +33.61 0 +33.78 0 +33.95 0 +34.11 0 +34.28 0 +34.45 0 +34.61 0 +34.78 0 +34.95 0 +35.12 0 +35.28 0 +35.45 0 +35.62 0 +35.78 0 +35.95 0 +36.12 0 +36.28 0 +36.45 0 +36.62 0 +36.78 0 +36.95 0 +37.12 0 +37.29 0 +37.45 0 +37.62 0 +37.79 0 +37.95 0 +38.12 0 +38.29 0 +38.45 0 +38.62 0 +38.79 0 +38.95 0 +39.12 0 +39.29 0 +39.45 0 +39.62 0 +39.79 0 +39.96 0 +40.12 0 +40.29 0 +40.45 0 +40.62 0 +40.79 0 +40.95 0 +41.12 0 +41.29 0 +41.45 0 +41.62 0 +41.79 0 +41.96 0 +42.12 0 +42.29 0 +42.46 0 +42.62 0 +42.79 0 +42.96 0 +43.12 0 +43.29 0 +43.46 0 +43.62 0 +43.79 0 +43.96 0 +44.13 0 +44.29 0 +44.46 0 +44.63 0 +44.79 0 +44.96 0 +45.13 0 +45.29 0 +45.46 0 +45.63 0 +45.79 0 +45.96 0 +46.13 0 +46.29 0 +46.46 0 +46.63 0 +46.80 0 +46.96 0 +47.13 0 +47.30 0 +47.46 0 +47.63 0 +47.76 0 +47.93 0 +48.10 0 +48.26 0 +48.43 0 +48.60 0 +48.76 0 +48.93 0 +49.10 0 +49.26 0 +49.43 0 +49.60 0 +49.76 0 +49.93 0 +50.10 0 +50.27 0 +50.43 0 +50.60 0 +50.76 0 +50.93 0 +51.10 0 +51.27 0 +51.43 0 +51.60 0 +51.77 0 +51.93 0 +52.10 0 +52.27 0 +52.43 0 +52.60 0 +52.77 0 +52.93 0 +53.10 0 +53.27 0 +53.43 0 +53.60 0 +53.77 0 +53.94 0 +54.10 0 +54.27 0 +54.43 0 +54.60 0 +54.77 0 +54.94 0 +55.10 0 +55.27 0 +55.44 0 +55.60 0 +55.77 0 +55.94 0 +56.10 0 +56.27 0 +56.44 0 +56.60 0 +56.77 0 +56.94 0 +57.10 0 +57.27 0 +57.44 0 +57.61 0 +57.77 0 +57.94 0 +58.11 0 +58.27 0 +58.44 0 +58.61 0 +58.77 0 +58.94 0 +59.11 0 +59.27 0 +59.44 0 +59.61 0 +59.77 0 +59.94 0 +60.11 0 +60.27 0 +60.44 0 +60.61 0 +60.78 0 +60.94 0 +61.11 0 +61.24 0 +61.33 0 +61.49 0 +61.66 0 +61.83 0 +61.99 0 +62.16 0 +62.33 0 +62.49 0 +62.66 0 +62.83 0 +62.99 0 +63.16 0 +63.33 88 +63.50 1575 +63.66 5508 +63.83 3334 +64.00 86 +64.16 83 +64.33 92 +64.50 88 +64.66 171 +64.83 43 +65.00 41 +65.16 21 +65.33 117 +65.50 44 +65.66 46 +65.83 116 +66.00 74 +66.16 90 +66.33 196 +66.50 25 +66.66 5092 +66.83 4576 +67.00 2389 +67.16 391 +67.33 0 +67.50 0 +67.67 0 +67.83 0 +68.00 0 +68.17 0 +68.33 0 +68.50 0 +68.67 0 +68.83 0 +69.00 0 +69.17 0 +69.33 0 +69.50 0 +69.67 0 +69.83 0 +70.00 0 +70.17 0 +70.33 0 +70.50 0 +70.67 0 +70.83 0 +71.00 0 +71.17 0 +71.34 0 +71.50 0 +71.67 0 +71.84 0 +72.00 0 +72.17 0 +72.34 0 +72.50 0 +72.67 0 +72.84 0 +73.00 0 +73.17 0 +73.34 0 +73.50 0 +73.67 0 +73.84 0 +74.01 0 +74.17 0 +74.34 0 +74.51 0 +74.67 0 +74.84 0 +75.01 126 +75.17 78 +75.34 68 +75.51 80 +75.67 78 +75.84 80 +76.01 58 +76.17 87 +76.34 11 +76.51 0 +76.67 0 +76.84 0 +77.01 0 +77.18 0 +77.34 2 +77.51 0 +77.68 0 +77.81 0 +77.98 0 +78.14 0 +78.31 0 +78.48 0 +78.64 0 +78.81 0 +78.98 0 +79.14 0 +79.31 111 +79.48 556 +79.65 155 +79.81 203 +79.98 64 +80.14 0 +80.31 0 +80.48 0 +80.64 0 +80.81 0 +80.98 0 +81.15 0 +81.31 0 +81.48 0 +81.65 0 +81.81 0 +81.98 0 +82.15 88 +82.31 0 +82.48 522 +82.65 0 +82.82 39 +82.98 0 +83.15 0 +83.31 0 +83.48 0 +83.65 0 +83.82 0 +83.98 0 +84.15 0 +84.32 0 +84.48 0 +84.65 0 +84.82 0 +84.98 0 +85.15 0 +85.32 0 +85.48 0 +85.65 0 +85.82 0 +85.98 0 +86.15 0 +86.32 0 +86.48 0 +86.65 0 +86.82 0 +86.99 0 +87.15 0 +87.32 0 +87.49 0 +87.65 0 +87.82 0 +87.99 0 +88.15 0 +88.32 0 +88.49 0 +88.65 0 +88.82 0 +88.99 0 +89.15 0 +89.32 0 +89.49 0 +89.66 0 +89.82 0 +89.99 0 +90.15 0 +90.32 0 +90.49 0 +90.66 0 +90.82 0 +90.99 11 +91.16 40 +91.28 38 +91.37 61 +91.54 115 +91.71 118 +91.87 128 +92.04 120 +92.21 122 +92.37 42 +92.54 5 +92.71 13 +92.87 31 +93.04 23 +93.21 8 +93.37 0 +93.54 0 +93.71 0 +93.88 0 +94.04 0 +94.21 0 +94.38 0 +94.54 0 +94.71 0 +94.88 0 +95.05 0 +95.21 0 +95.38 0 +95.55 0 +95.71 0 +95.88 0 +96.04 0 +96.21 0 +96.38 0 +96.55 0 +96.71 0 +96.88 0 +97.05 0 +97.21 0 +97.38 0 +97.55 0 +97.71 0 +97.88 2 +98.05 0 +98.21 3 +98.38 0 +98.55 0 +98.71 2 +98.88 2 +99.05 8 +99.21 1 +99.38 0 +99.55 1 +99.71 37 +99.88 18 +100.05 0 +100.22 0 +100.38 0 +100.55 0 +100.72 0 +100.88 0 +101.05 0 +101.22 0 +101.38 0 +101.55 0 +101.72 0 +101.88 0 +102.05 0 +102.22 0 +102.38 0 +102.55 0 +102.72 0 +102.89 0 +103.05 0 +103.22 0 +103.39 0 +103.55 0 +103.72 0 +103.89 0 +104.05 0 +104.22 0 +104.39 0 +104.55 0 +104.72 0 +104.89 0 +105.05 0 +105.22 0 +105.39 0 +105.55 0 +105.72 0 +105.89 0 +106.06 0 +106.22 0 +106.39 0 +106.56 0 +106.72 0 +106.89 0 +107.06 0 +107.22 0 +107.39 0 +107.56 0 +107.72 0 +107.86 0 +108.02 0 +108.19 0 +108.36 0 +108.52 0 +108.69 0 +108.86 125 +109.03 0 +109.19 2 +109.36 16 +109.53 107 +109.69 19 +109.86 46 +110.03 66 +110.19 82 +110.36 0 +110.53 0 +110.69 0 +110.86 0 +111.03 0 +111.19 0 +111.36 0 +111.53 0 +111.69 0 +111.86 0 +112.03 452 +112.19 479 +112.36 449 +112.53 466 +112.69 467 +112.86 420 +113.03 385 +113.20 377 +113.36 447 +113.53 0 +113.70 0 +113.86 0 +114.03 0 +114.20 0 +114.36 0 +114.53 0 +114.70 0 +114.86 0 +115.03 0 +115.20 0 +115.36 0 +115.53 0 +115.70 0 +115.86 0 +116.03 0 +116.20 0 +116.36 0 +116.53 0 +116.70 0 +116.87 0 +117.03 0 +117.20 0 +117.37 0 +117.53 0 +117.70 0 +117.87 0 +118.03 0 +118.20 0 +118.37 0 +118.53 0 +118.70 0 +118.87 74 +119.04 73 +119.20 44 +119.37 57 +119.53 73 +119.70 0 +119.87 0 +120.03 0 +120.20 0 +120.37 0 +120.54 0 +120.70 0 +120.87 42 +121.04 0 +121.20 59 +121.33 54 +121.42 0 +121.59 0 +121.76 0 +121.92 0 +122.09 0 +122.26 0 +122.42 0 +122.59 0 +122.76 0 +122.92 0 +123.09 0 +123.26 0 +123.42 0 +123.59 0 +123.76 0 +123.92 0 +124.09 0 +124.26 0 +124.42 0 +124.59 0 +124.76 0 +124.93 0 +125.09 0 +125.26 0 +125.43 0 +125.59 0 +125.76 0 +125.93 0 +126.09 0 +126.26 0 +126.43 0 +126.59 0 +126.76 0 +126.93 0 +127.09 0 +127.26 0 +127.43 0 +127.59 0 +127.76 0 +127.93 0 +128.09 0 +128.26 0 +128.43 0 +128.60 0 +128.76 0 +128.93 0 +129.10 0 +129.26 0 +129.43 0 +129.60 23 +129.76 3 +129.93 0 +130.10 0 +130.26 0 +130.43 0 +130.60 0 +130.76 0 +130.93 0 +131.10 0 +131.27 0 +131.43 0 +131.60 0 +131.77 0 +131.93 0 +132.10 0 +132.27 0 +132.43 0 +132.60 0 +132.77 0 +132.93 0 +133.10 0 +133.27 0 +133.43 0 +133.60 0 +133.77 0 +133.94 0 +134.10 0 +134.27 0 +134.44 0 +134.60 0 +134.77 0 +134.93 0 +135.10 0 +135.27 0 +135.44 0 +135.60 0 +135.77 0 +135.94 0 +136.10 0 +136.27 0 +136.44 0 +136.60 0 +136.77 0 +136.94 0 +137.10 0 +137.27 0 +137.44 0 +137.60 0 +137.77 0 +137.90 0 +138.07 1 +138.24 1 +138.40 1 +138.57 0 +138.74 0 +138.91 0 +139.07 0 +139.24 0 +139.41 0 +139.57 0 +139.74 0 +139.91 0 +140.07 0 +140.24 0 +140.41 0 +140.57 0 +140.74 0 +140.91 0 +141.07 0 +141.24 0 +141.41 0 +141.58 0 +141.74 0 +141.91 0 +142.08 0 +142.24 0 +142.41 0 +142.58 0 +142.74 0 +142.91 0 +143.08 0 +143.24 0 +143.41 0 +143.58 0 +143.74 0 +143.91 0 +144.08 0 +144.24 0 +144.41 0 +144.58 0 +144.74 0 +144.91 0 +145.08 0 +145.25 0 +145.41 0 +145.58 0 +145.75 0 +145.91 0 +146.08 0 +146.25 0 +146.41 0 +146.58 0 +146.75 0 +146.91 0 +147.08 0 +147.25 0 +147.41 0 +147.58 0 +147.75 0 +147.91 0 +148.08 0 +148.25 107 +148.41 40 +148.58 0 +148.75 0 +148.92 0 +149.08 0 +149.25 0 +149.42 17 +149.58 149 +149.75 154 +149.92 154 +150.08 154 +150.25 154 +150.42 154 +150.58 154 +150.75 154 +150.92 154 +151.08 154 +151.25 154 +151.38 154 +151.47 154 +151.64 758 +151.80 979 +151.97 1443 +152.14 1518 +152.30 1518 +152.47 1499 +152.64 1447 +152.81 1368 +152.97 977 +153.14 839 +153.30 712 +153.47 712 +153.64 758 +153.81 979 +153.97 1443 +154.14 1518 +154.30 1518 +154.47 1499 +154.64 1447 +154.81 1368 +154.97 977 +155.14 839 +155.31 712 +155.47 712 +155.64 758 +155.81 979 +155.97 1443 +156.14 1518 +156.31 1518 +156.47 1499 +156.64 1447 +156.81 1368 +156.97 977 +157.14 839 +157.31 712 +157.47 712 +157.64 758 +157.81 979 +157.98 1443 +158.14 1518 +158.31 1518 +158.48 1499 +158.64 1447 +158.81 1375 +158.98 984 +159.14 863 +159.31 731 +159.48 712 +159.64 754 +159.81 979 +159.98 1432 +160.14 1504 +160.31 1518 +160.48 1512 +160.65 1464 +160.81 1375 +160.98 984 +161.15 839 +161.31 731 +161.48 712 +161.65 754 +161.81 970 +161.98 1440 +162.15 1512 +162.31 1518 +162.48 1512 +162.65 1464 +162.81 1375 +162.98 977 +163.15 897 +163.32 740 +163.48 712 +163.65 740 +163.82 959 +163.98 1432 +164.15 1512 +164.32 1518 +164.48 1512 +164.65 1464 +164.82 1400 +164.98 997 +165.15 897 +165.32 740 +165.48 712 +165.65 740 +165.82 959 +165.98 1432 +166.15 1504 +166.32 1518 +166.49 1512 +166.65 1454 +166.82 1400 +166.98 1004 +167.15 914 +167.32 740 +167.49 712 +167.65 740 +167.82 959 +167.96 1418 +168.12 1499 +168.29 1518 +168.46 1518 +168.62 1480 +168.79 1434 +168.96 1213 +169.12 951 +169.29 758 +169.46 712 +169.62 712 +169.79 839 +169.96 1274 +170.12 1486 +170.29 1518 +170.45 1518 +170.62 1493 +170.79 1440 +170.96 1044 +171.12 939 +171.29 758 +171.46 712 +171.62 712 +171.79 928 +171.96 1332 +172.12 1495 +172.29 1518 +172.46 1518 +172.62 1491 +172.79 1434 +172.96 1213 +173.12 937 +173.29 758 +173.46 712 +173.63 712 +173.79 897 +173.96 1188 +174.13 1470 +174.29 1518 +174.46 1518 +174.63 1495 +174.79 1443 +174.96 1240 +175.13 959 +175.29 771 +175.46 712 +175.63 712 +175.79 806 +175.96 1274 +176.13 1495 +176.29 1518 +176.46 1518 +176.63 1493 +176.79 1440 +176.96 1240 +177.13 959 +177.29 758 +177.46 712 +177.63 712 +177.79 839 +177.97 1188 +178.13 1470 +178.30 1518 +178.46 1518 +178.63 1497 +178.80 1442 +178.97 1290 +179.13 967 +179.30 799 +179.47 712 +179.63 712 +179.80 778 +179.97 1044 +180.13 1454 +180.30 1518 +180.47 1518 +180.63 1493 +180.80 1440 +180.97 1240 +181.13 951 +181.30 740 +181.42 731 +181.52 712 +181.68 712 +181.85 897 +182.02 1418 +182.18 1497 +182.35 1518 +182.52 1518 +182.68 1464 +182.85 1434 +183.02 1166 +183.18 937 +183.35 754 +183.52 712 +183.68 712 +183.85 897 +184.02 1332 +184.18 1495 +184.35 1518 +184.52 1518 +184.69 1491 +184.85 1440 +185.02 1213 +185.19 951 +185.35 200 +185.52 322 +185.69 0 +185.85 0 +186.02 0 +186.19 0 +186.35 0 +186.52 0 +186.70 0 +186.86 0 +187.02 0 +187.19 0 +187.36 0 +187.52 0 +187.69 0 +187.86 0 +188.02 0 +188.19 0 +188.36 0 +188.52 0 +188.69 0 +188.86 0 +189.02 0 +189.19 0 +189.36 0 +189.52 0 +189.69 0 +189.86 0 +190.02 0 +190.19 0 +190.36 0 +190.52 0 +190.69 0 +190.86 0 +191.03 0 +191.19 0 +191.36 0 +191.53 0 +191.69 0 +191.86 0 +192.03 0 +192.19 0 +192.36 0 +192.53 0 +192.69 0 +192.86 0 +193.03 0 +193.19 0 +193.36 0 +193.53 0 +193.69 0 +193.86 0 +194.03 0 +194.20 0 +194.36 0 +194.53 0 +194.70 0 +194.86 0 +195.03 0 +195.20 0 +195.36 0 +195.53 0 +195.70 0 +195.86 0 +196.03 0 +196.20 0 +196.37 0 +196.53 0 +196.70 0 +196.86 0 +197.03 0 +197.20 0 +197.36 0 +197.53 0 +197.70 0 +197.86 0 +198.00 0 +198.17 0 +198.33 0 +198.50 0 +198.67 0 +198.83 0 +199.00 0 +199.17 0 +199.33 0 +199.50 0 +199.67 0 +199.83 0 +200.00 0 +200.17 0 +200.33 0 +200.50 0 +200.67 0 +200.84 0 +201.00 0 +201.17 0 +201.34 0 +201.50 0 +201.67 0 +201.84 0 +202.00 0 +202.17 0 +202.34 0 +202.50 0 +202.67 0 +202.84 0 +203.00 0 +203.17 0 +203.34 0 +203.50 0 +203.67 0 +203.84 0 +204.01 0 +204.17 0 +204.34 0 +204.51 0 +204.67 0 +204.84 0 +205.01 0 +205.17 0 +205.34 0 +205.51 0 +205.67 0 +205.84 0 +206.01 0 +206.17 0 +206.34 0 +206.51 0 +206.67 0 +206.84 0 +207.01 0 +207.18 0 +207.34 0 +207.51 0 +207.67 0 +207.84 0 +208.01 0 +208.18 0 +208.34 0 +208.51 0 +208.68 0 +208.84 0 +209.01 0 +209.18 0 +209.34 0 +209.51 0 +209.68 0 +209.85 0 +210.01 0 +210.18 0 +210.35 0 +210.51 0 +210.68 0 +210.85 0 +211.01 0 +211.18 0 +211.35 0 +211.47 0 +211.56 0 +211.73 0 +211.90 0 +212.06 0 +212.23 0 +212.40 0 +212.56 0 +212.73 0 +212.90 0 +213.06 0 +213.23 0 +213.40 0 +213.56 0 +213.73 0 +213.90 0 +214.07 0 +214.23 0 +214.40 0 +214.57 0 +214.73 0 +214.90 0 +215.07 0 +215.23 0 +215.40 0 +215.57 0 +215.73 0 +215.90 0 +216.07 0 +216.24 0 +216.40 0 +216.57 0 +216.74 0 +216.90 0 +217.07 0 +217.24 0 +217.40 0 +217.57 0 +217.74 0 +217.91 0 +218.07 0 +218.26 0 +218.41 0 +218.57 0 +218.74 0 +218.90 0 +219.07 0 +219.24 0 +219.40 0 +219.57 0 +219.74 0 +219.90 0 diff --git a/docs/re/data/f3-sting-xma-param-arrivals.tsv b/docs/re/data/f3-sting-xma-param-arrivals.tsv new file mode 100644 index 00000000..1be8ce7f --- /dev/null +++ b/docs/re/data/f3-sting-xma-param-arrivals.tsv @@ -0,0 +1,6 @@ +# t_s line +9.07 w> 01000014 XMA-PARAM ctx=0 buf=0 ptr=0x13544000 read_off=32 stereo=1 channels=2 rate_id=3 rate=48000 packets=632 byte_size=1294336 sig_off=1024 head=080000000095fc01c001020408c01f7f0004081023007dfc001020408c01f7f0 sig=004081023007dfc001020408c01f7f0004081023007dfc001020408c01f7f0004081023007dfc001020408c01f7f0004 +9.07 w> 01000014 XMA-PARAM ctx=1 buf=0 ptr=0x13682000 read_off=32 stereo=1 channels=2 rate_id=3 rate=48000 packets=546 byte_size=1118208 sig_off=1024 head=080000000095fc01c001020408c01f7f0004081023007dfc001020408c01f7f0 sig=004081023007dfc001020408c01f7f0004081023007dfc001020408c01f7f0004081023007dfc001020408c01f7f0004 +9.07 w> 01000014 XMA-PARAM ctx=2 buf=0 ptr=0x13795000 read_off=32 stereo=1 channels=2 rate_id=3 rate=48000 packets=572 byte_size=1171456 sig_off=1024 head=080000000095fc01c001020408c01f7f0004081023007dfc001020408c01f7f0 sig=004081023007dfc001020408c01f7f0004081023007dfc001020408c01f7f0004081023007dfc001020408c01f7f0004 +147.58 w> 01000014 XMA-PARAM ctx=0 buf=0 ptr=0x13544000 read_off=32 stereo=1 channels=2 rate_id=3 rate=48000 packets=562 byte_size=1150976 sig_off=1024 head=080000000095fc01c001020408c01f7f0004081023007dfc001020408c01f7f0 sig=eea5129f23100850080bc576b79c758974d9ffcca9615260a24be18daef20908a481041104f41552d6140844424032ff +147.58 w> 01000014 XMA-PARAM ctx=1 buf=0 ptr=0x1365f000 read_off=32 stereo=1 channels=2 rate_id=3 rate=48000 packets=620 byte_size=1269760 sig_off=1024 head=080000000095fc01c001020408c01f7f0004081023007dfc001020408c01f7f0 sig=7816dbaeb9bf43712000b033c2b62d5b356090922211020ccc80672c18605914ac3a0900f8319c70f50ced6a1724a039 diff --git a/docs/re/f3-sting-measured-no-new-stream.md b/docs/re/f3-sting-measured-no-new-stream.md new file mode 100644 index 00000000..948d104f --- /dev/null +++ b/docs/re/f3-sting-measured-no-new-stream.md @@ -0,0 +1,94 @@ +# F3, the sting half, closed — no sting: zero new XMA streams across build-in and 68 s of settled pulsing + +**Status:** ✅ measured (⟨capture⟩). Answers the dynamic half +[`f3-title-sting-mechanism-found-not-value.md`](f3-title-sting-mechanism-found-not-value.md) +left open, using exactly the instrument and method that page named. +2026-09-12. Instrument: +[`tools/re-capture/f3_sting_probe.py`](../../tools/re-capture/f3_sting_probe.py). + +## Method + +Booted with `--xma_param_probe=true` (the same cvar `menu-audio-cues.md` +used for the menu's SE census) and **no pad input at all** — the question +is what plays automatically, not what a press triggers. Two things recorded +continuously from the moment Canary's window exists, not from a threshold +trigger: a glyph (green-pixel) count every ~0.5 s over the whole run, and +every *newly-seen* `XMA-PARAM` log line (Xenia dedupes these itself, one per +distinct stream, keyed on ptr+packet-count) stamped with wall-clock arrival +time — the same "stamp on arrival" technique +[`xma_readoff_trace.py`](../../tools/re-capture/xma_readoff_trace.py) +already uses for a log with no timestamps of its own. + +**Positive control (R4), and it's a real one, not a synthetic one:** the +probe found three streams at `t≈9.1 s`, sharing one head but distinct +packet counts and signatures — unidentified, and not this question's +concern; not asserting what they are without checking — and, at +`t≈147.6 s`, **exactly two stereo streams** +starting together — matching `f3-title-plays-bgm-102-and-103.md` and +`bgm-two-stems.md`'s already-established finding that the title's BGM is +two XMA stems played in sync. A probe that reproduces an already-known +positive from a live run is doing its job, not merely configured correctly. + +## The plate's timeline, from the glyph series (not assumed) + +[`data/f3-sting-glyph-timeseries.tsv`](data/f3-sting-glyph-timeseries.tsv): + +| t (s) | glyph | reading | +|---|---|---| +| 0 – 147.9 | 0 | attract movie, no plate | +| 148.4 – 151.4 | 17 – 154 | **build-in**: rising, not yet at the pulse plateau | +| 151.8 onward | 712 – 1518, cycling | **settled**, pulsing at its established ~2 s period | + +**Refutation attempt, recorded either way:** my first read of this was "BGM +and build-in start at essentially the same moment." Checking the raw +per-sample series instead of the coarse table above refutes that: the first +non-zero glyph reading is `148.25 s` — **~0.67 s after** BGM onset +(`147.58 s`), not simultaneous, and the values immediately after are noisy +(`107, 40, 0, 0, 0, 17…`) rather than a clean climb, so even "build-in +starts at 148.25 s" is a looser statement than "the plate is visible from +about 148.4 s onward." Both clocks are anchored to the same +title-appearance event, but they are not one event — worth stating +precisely since a later reader chasing frame-accurate sync between title +BGM and title art would otherwise inherit an overclaim. + +## The result + +[`data/f3-sting-xma-param-arrivals.tsv`](data/f3-sting-xma-param-arrivals.tsv) — +**five distinct streams for the whole 220 s run, and none after `t=147.6 s`.** +From the plate's first visible rise (`148.4 s`) through **68 seconds** of +build-in plus fully-settled pulsing (killed at `220.1 s`), the probe — which +just finished proving it can catch a new stream the instant one starts — +caught **nothing new**. No SE-range stream, no additional BGM-range one, +nothing. + +**No sting plays when the plate appears, and none plays for over a minute +of it sitting there pulsing.** This is the measured answer to the half of +F3 the BGM census couldn't reach: not "SE goes through a different call" (a +scope limit) and not "the mechanism exists but its value is unreachable" +(the static finding), but a direct negative from watching the actual +sound-decode path with the game doing nothing else. + +## What this does not cover + +* **Only the boot title**, no input, one run. Whether Ⓐ itself plays a + confirm sting is already answered elsewhere + (`menu-audio-cues.md`: the `0x5d6c0` wave on the title→menu transition). + This page is specifically the *unprompted* plate-appearance question. +* The static mechanism found last iteration — a dispatch-table call chain + from `GamePart_Title` into the generic play primitive with a non-literal + cue id — is not contradicted by this. The likeliest reading, unchanged: + that slot's cue value is the `-1` "don't play" sentinel for this + GamePart, or the emitter it configures is never triggered on this + particular event. Either way, nothing plays, which is what both pages + now agree on from different instruments (⟨canary-source⟩ then ⟨capture⟩). +* One run, ⟨capture⟩. A second boot repeating the null would be the + standard reproducibility bar this corpus otherwise holds to; not run here + given the length of this single window (68 s past first appearance) and + the working positive control already in the same run. + +## Reach + +⟨capture⟩, one boot, no input. Covers the plate's entire build-in and 68 s +of settled state. Does not cover the attract-loop title (a different, +harder-to-reach state per this corpus's own capture-harness history) or any +input-triggered event other than the already-decoded confirm cue. diff --git a/tools/re-capture/f3_sting_probe.py b/tools/re-capture/f3_sting_probe.py new file mode 100644 index 00000000..e64ff8fa --- /dev/null +++ b/tools/re-capture/f3_sting_probe.py @@ -0,0 +1,151 @@ +#!/usr/bin/env python3 +"""F3, the sting half -- watch for a NEW XMA stream during the title's +build-in, with NO input, aligned against a continuous glyph time series so +"when did the plate reach full alpha" is measured, not assumed from a +threshold crossing. + +Why continuous, not a threshold trigger: this container's own boot gate +(nav_repeat_and_b.py, f1_hold_capture.py) waits for the glyph count to HOLD +in [500,2500] for 12 samples before calling it "TITLE" -- which could +already be past the build-in's interesting part. This script starts +recording both streams (glyph count, XMA-PARAM arrivals) from the moment +Canary's window exists, so the whole rise from 0 can be read back, not just +the plateau. + +Positive control, per R4: BGM cues 1102/1103 are already known to play on +the title (f3-title-plays-bgm-102-and-103.md) via this exact probe +mechanism (menu-audio-cues.md). If this run logs zero XMA-PARAM lines at +all, the probe found nothing INCLUDING the thing it's supposed to find, and +the run is void -- not a negative about a sting. + + f3_sting_probe.py OUTDIR [duration_s] +""" +import os +import re +import subprocess +import sys +import time + +import numpy as np + +OUT = sys.argv[1] +DURATION = float(sys.argv[2]) if len(sys.argv) > 2 else 200.0 +os.makedirs(OUT, exist_ok=True) +W, H = 1280, 720 + +env = dict(os.environ) +env["HOME"] = "/sylph-home/re" +env["SDL_AUDIODRIVER"] = "dummy" +env["DISPLAY"] = ":98" +env["XENIA_PAD_FILE"] = os.path.join(OUT, "pad.txt") + + +def glyph(a): + r, g, b = a[:, :, 0], a[:, :, 1], a[:, :, 2] + return int(((g > 130) & (g - r > 45) & (g - b > 45)).sum()) + + +def _open(): + return subprocess.Popen( + ["ffmpeg", "-loglevel", "error", "-f", "x11grab", "-draw_mouse", "0", + "-video_size", f"{W}x{H}", "-i", ":98", "-r", "6", + "-f", "rawvideo", "-pix_fmt", "rgb24", "-"], + stdout=subprocess.PIPE, bufsize=W * H * 3 * 4) + + +def grab(p, n): + buf = p.stdout.read(n) + if len(buf) < n: + return None + return np.frombuffer(buf, np.uint8).reshape(H, W, 3).astype(float) + + +def main(): + with open(env["XENIA_PAD_FILE"], "w"): + pass + subprocess.run(["xsetroot", "-solid", "black"], env=env, check=False) + + xuid = os.environ.get("SYLPH_XUID", "") + if not xuid: + content = "/sylph-home/re/.local/share/Xenia/content" + entries = os.listdir(content) if os.path.isdir(content) else [] + xuid = entries[0] if entries else "" + if not xuid: + print("FATAL: no profile signed in -- run: run-canary " + "--create_profile_if_none=Tag, wait ~5s, kill it", flush=True) + return + + canary_log_path = os.path.join(OUT, "canary.stdout") + canary_log = open(canary_log_path, "w") + proc = subprocess.Popen( + ["run-canary", f"--logged_profile_slot_0_xuid={xuid}", + "--xma_param_probe=true", "--log_level=2"], + cwd=OUT, env=env, stdout=canary_log, stderr=subprocess.STDOUT) + print(f"canary pid={proc.pid}, xma_param_probe=true, waiting for window", + flush=True) + + T0 = time.time() + while not subprocess.run( + ["xdotool", "search", "--name", "Xenia-canary"], + capture_output=True, text=True).stdout.strip(): + if time.time() - T0 > 60: + print("FATAL: no window after 60s", flush=True) + return + time.sleep(1) + print(f"[{time.time()-T0:6.1f}s] window exists, recording", flush=True) + + glyph_out = open(os.path.join(OUT, "glyph-timeseries.tsv"), "w") + glyph_out.write("# t_s\tglyph\n") + xma_seen = set() + xma_out = open(os.path.join(OUT, "xma-param-arrivals.tsv"), "w") + xma_out.write("# t_s\tline\n") + XMA_RE = re.compile(rb"XMA-PARAM.*") + + p, n = _open(), W * H * 3 + seg = time.time() + log_pos = 0 + while time.time() - T0 < DURATION: + el = time.time() - T0 + if time.time() - seg > 30: + p.kill(); p = _open(); seg = time.time() + a = grab(p, n) + if a is not None: + g = glyph(a) + glyph_out.write(f"{el:.2f}\t{g}\n") + glyph_out.flush() + else: + p.kill(); p = _open(); seg = time.time() + # Drain any new XMA-PARAM lines that arrived since last check -- + # stamped on ARRIVAL (Xenia's own log lines carry no timestamp), + # same technique xma_readoff_trace.py already uses. + try: + with open(canary_log_path, "rb") as f: + f.seek(log_pos) + chunk = f.read() + log_pos = f.tell() + except FileNotFoundError: + chunk = b"" + for line in chunk.splitlines(): + if XMA_RE.search(line): + key = line + if key not in xma_seen: + xma_seen.add(key) + xma_out.write(f"{el:.2f}\t{line.decode('utf-8','replace')}\n") + xma_out.flush() + print(f"[{el:7.1f}s] NEW {line.decode('utf-8','replace')}", + flush=True) + p.kill() + glyph_out.close() + xma_out.close() + print(f"[{time.time()-T0:7.1f}s] killing emulator, " + f"{len(xma_seen)} distinct XMA-PARAM lines seen", flush=True) + proc.terminate() + try: + proc.wait(timeout=10) + except subprocess.TimeoutExpired: + proc.kill() + canary_log.close() + + +if __name__ == "__main__": + main()