NTSCtinymachines

ntsc ベンチ

リポジトリのパイプラインが、このページの中で走る: NES のドットをここで生成し、コンポジット波形にエンコードし、選んだフィルタで引き剥がし、復調して行列を掛け、デコード済みフレームを描く。テストスイートが押さえているのと同じ信号経路を、記録済みコミットから WebAssembly にコンパイルしたものだ。

これは実験器具で、いまや信号自身のレート近くで走る: 1 スレッドでノッチフィルタが毎秒 41.5 フレーム以上、3 ラインコムが 44.4perf-report run 2026-09-02, wasm+simd128 (the shipped bundle), node v24, Ryzen 5 5600X, low end of the spread over three fresh processes)。リポジトリの性能レポートが記録する高速化の後の数字だ。「1 フレーム進める」はソースを 1 フレーム進める。「走らせる」は本物のフリーランで、ソースは壁時計に対して自身の正確なレートで進み、ページはできる分だけエンコードし、実際のディスプレイなら重複・欠落させたはずの分をドリフトカウンタが表示する。リポジトリのペーシング規則そのままに。

まだフレームが無い。1 フレーム進めるか、走らせる。

パターンは三つ、文書化されたドット配置(341 x 262 ドット、色と強調の面、パリティは Even と OddShort の交互)からページ内で生成する。色相帯はランディングのブラウン管写真の元になったフレーム。ストライプはすべてをドット周波数に置き、コムがノッチに差を付ける場所。単色は一面ひと色のフレームで、二つのフィルタが一致するべき場所であり、実際に一致する。

フィルタが二つなのは、NES で意味を持つのが二つだけだからだ: ノッチと、NES 本来の 3 ラインコム。2 ラインコムが無いのはランディングの述べる理由による: この信号では原理的に働けず、コードは黙って劣化した絵にする代わりに、理由を明記してきっぱり拒む。

バンドルはうちのビルドスクリプトが bb310f5 からビルドし、記録がファイルのハッシュを持つ。このページが走らせるものは、リポジトリのスイートが実測したものそのままだ。

実測報告へ戻る