6502tinymachines

テレビの絵の段

M3 報告、作業の後に書かれたもの。

走行スタンプ: 2026-09-01、このリポジトリの 4 番目のコミット、rustc 1.97.1、 cargo test --workspace 53 テスト緑、clippy 綺麗、MUTATE=1 で 30 が赤になる。 M5 はこれらの計数を check-self-counts の走査の下に置く。

閉じたもの

ntsc-crt: LinearRgbFrame から DisplayFrame へ、規格が定めた順序で五つの 段、それぞれ省略可能: ビーム、走査線、蛍光体の残光、マスク、ジオメトリ。この クレートは模型であり、そう述べている: 数値パラメータはすべて書き下ろしで (CrtParams::authored、そう札が付いている)、どれ一つもどこかの管の実測として 示されていない。格子がピクセルになるのはビームの段で、フレームは自分の再標本化 比を述べる (samples_per_pixel)。出力は 256 x 240 の整数倍、これはシェルの 規則だ。NES の 8/7 のピクセルアスペクトは意図的に適用せず、そう記録してある。

各段の事実、それぞれ解析的なテストが押さえている (規格: 模型には外部のオラクル が存在しないので、各段は自分が宣言した数式に照らして押さえられ、その宣言は対象 から読み返すのではなくテストに打ち込まれる):

  • ビーム: インパルスを通すと、宣言どおりのガウシアン (sigma 4.0 標本) が 列ごとに 1e-5 の内側で出てくる。フレーム上の比は 2048 / (256 x scale)。
  • 走査線: 各列の垂直方向の断面は、宣言どおりの sigma(v) = 0.30 x scale x (1 + 0.6 v) のガウシアン、v はそのピクセルの輝度だ: ブルームと電流の関係は 模型のパラメータであり、明るい列は測れるだけ幅が広い。
  • 残光: チャンネルごとに max(励起, 前の値 x 減衰)、減衰は exp(-dt/tau)、 tau は書き下ろし (12, 20, 8 ms: P22 に近い順序、青が一番速い)、dt は元の フレーム周期で、決して壁時計ではない。下向きの段差は宣言された定数で 4 フレームかけて 1e-6 まで減衰する。上向きの段差は即時。リセットで消える。
  • マスク: アパーチャグリルの三つ組を整数ピッチで敷き詰める。正確な値を 2 周期にわたって主張する。ピッチ 0 は名指しで拒む。
  • ジオメトリ: 樽型 (source = centre + d(1 + k r^2)) と角の丸め、既定では 切ってある。書き下ろしの k = 0.03 では、フレーム全体の角は管から外れて曲がり、 中央の 224 x 224 の窓は点いたままだ (window_visible、シェルの「必ず見える」 不変条件は、ゲートが再利用するライブラリ関数だ)。

ゲート

tests/gate.rs: 記録済みのドットストリームのゴールデン (規格が名付けた Even/OddShort の色循環の組) を、符号化、ラング A の復号、scale 2 での五段 すべてに通す。マスクとジオメトリは入れる: 整数の寸法を主張し、224 x 224 の窓が どのフレームでも点いていること、ドリフト統計を数えること (60.0988 Hz の元に 対する 60 Hz の刻み二つは綺麗な統計を示す。長時間のうなり周波数の計数は ntsc-wasm の歩調のテストの側だ)、そして二フレームの走行全体が蛍光体のリセット 後の再生でビット単位で決定的であること。これが「残光は元の周期で進む」が 買うものだ。

examples/play-golden.rs は、連れ合いのシェルの代わりに立つリファレンスの プレイヤーだ: ゴールデン (色循環の組と縞) を走行スタンプ付きで goldens/dotstream-m3.bin に記録し、記録されたバイト列から再生し、四枚の 表示フレームをその横に PPM として書き、ドリフト統計を印字する。フレームは規格の とおり説明用であって検証ではない。一枚を 768 x 720 (scale 3、マスクピッチ 1、 樽型オン) で目で見たところ、曲がって角が丸められ走査線の入った管の中で、十二本の 色相の帯が色相環を巡って進んでいた。

MUTATE

規格はこのマイルストーンの妨害を名指ししている: ビーム幅と、時定数一つ。 MUTATE=1 は対象 (tests/stages.rs) にその両方を当て、ビームのインパルスの テストと減衰のテストが赤になる。対象を自分自身のパラメータと構成上比べるだけの テスト (ブルーム、マスク) は、緑のままだと名指しされている。

持ち越し

  • M4: 捕捉の側 (同期とバーストのロック、再標本化、合成捕捉の往復): 規格自身の 順序のゲートは満たしてあり、復号は M1/M2 以来ほかの二つの源に対しても通って いる。
  • M5: 文書化と、docs/ 内のすべての数字のセルフカウント。
  • 規格 v0.3 の待ち行列は変わらず: 全フレームのレート、ラング D、7.2 節の equiband の引用。
  • 実時間での復号は名指しされた最適化のまま (M2 の表)。CRT の各段は scale 3 で 五段すべてを入れてネイティブのリリースビルドで 52.7 ms/フレームを計測して いるので (examples/crt-bench.rs、同じ Ryzen 5 5600X)、表示のスケールでは 復号と並んで最適化の一覧に入る。どちらも、正しさのマイルストーンの非目標だ。

ビルド時に ntsc-crt/docs/m3-report.md から取り込んだもの。リポジトリが唯一の写しだ。報告は独自の作業用の言葉をいくつか使う: 報告書で使われる言葉。