6502tinymachines

コンソールの絵の計画

N6 の計画。作業の前に書かれた。

P3 の計画と同じように、コードの前 (2026-09-06) に書いた。スケッチ (docs/nes-end-to-end-v0_2.md、3 節、N6) が求めているのは二つだ。PPU の ラダーの DotFrame を ntsc-crt の NES ソースへ通し、復号は既定でラング C、 CRT の段は入れる。そして、コンソールの絵を実機の絵と、ntsc-crt の M4 が 使うのと同じ捕捉手順を通して比べるゲート。カラーバーのカートリッジを両側 に入れ、許容は測る前に述べる。

何があるか

  • ntsc-crt (v0.2.3) には段がすべて揃っている: ntsc-source-nes は DotFrame をコンポジットの標本へ符号化する。PPU と同じ直接合成だ。 ntsc-decode には NES 固有の重みを持つ三ラインのコム (ラング C) がある。 ntsc-crt にはビーム、走査線、残光、マスク、ジオメトリがある。 ntsc-wasm の NesPipeline はブラウザのページが走らせる素の Rust の 符号化と復号で、副搬送波の位相をパリティで持ち越しながらフレームを次々に 処理する (CompositeFrame::next_origin)。そのブリッジは cfg の後ろで wasm 専用なので、コンソールはネイティブに使う。
  • ntsc-source-cap は捕捉した波形を同じフレーム型へ読み込み (同期、 バーストロック、sinc での再標本化、DC の基準合わせ)、M4 が往復を証明した キャプチャカードの模型を備えている。score-real-region の例は、実物の 捕捉の平らな領域を、同じ色を合成したものに照らして採点する。両側は同一に 復号される。
  • コンソール (N5) は PPU が走らせたパリティ付きで DotFrame を作り、 配管のゲートがその一つずつを単体の PPU のものに照らして押さえる。
  • 手元にある捕捉: 実機から録った Super Mario Bros. と Duck Hunt の記録が 五本 (M4)。バーの捕捉はまだ無く、どちらのゲームの ROM もここには無い。 full_palette.nes (blargg、NROM) はパレットの全項目を帯として描き、 コンソールで走る。240pee.nes には SMPTE のバーがあるが、マッパー 2 な のでコンソールの範囲外だ。

手順

  1. コンソールを通る絵。 nes-console に picture が加わる: コンソールのフレームを順に受け取り、それぞれを前のフレームが残した位相 で NES ソースで符号化し、ラング C で復号し、任意で CRT の段を走らせる Picture だ。ntsc-crt はタグで固定、下は同じ nes-bus。run-rom には パレットのダンプの横に CRT=out.ppm (表示される絵) が加わる。

    ゲート (tests/picture.rs): コンソールのフレームを絵に通したものは、 同じワールドから出た単体の PPU のフレームを同じ絵に通したものと、バイト 単位で一致する (継ぎ目は何も足さない。今回は符号化器の先まで)。そして 絵がコンソールの実際のパリティ列にわたって持ち越す位相は、ntsc-grid の 算術がその列に与えるものと一致する (奇数フレームの短い行が位相を動かす。 コンソールはドットだけでなくパリティを渡さなければならない)。妨害 (パリティを Even に固定する) は後者を赤にしなければならない。

  2. 捕捉の経路、機械側の半分。 capture-score という例が、コンソールで ROM を走らせ、そのフレームを符号化し、そして実物の捕捉を読むか (M4 の 道具が読む .u8/.wav を、記録した機器のレートで)、フレームを ntsc-crt のキャプチャカードの模型に通すか (合成、同じレートで) して、それを M4 と 同じやり方で復元し、名前の付いた平らな領域を、コンソール自身の合成を 同一のデコーダに通したものに照らして採点する: ルマ、色相、彩度。 full_palette.nes と合成の捕捉なら、経路全体がこの機械の上で閉じる。 実機の上で同じ ROM を実物として捕捉することが、ベンチの項目だ。

    許容を、いま述べる。合成の往復 (カードの模型自身の雑音と 5 ppm): 採点する平らな領域すべてで、ルマは合成から 0.01 以内、色相は 1.0 度以内、 彩度は 5 パーセント以内。外したら失敗だ。実物の捕捉: 合成の数字の横に 記録するが、押さえはしない。M4 が採点した実物の領域一つが、すでに 彩度で 28 パーセント高く出ていて、その理由はスケッチの 5 節がベンチに 割り当てているからだ (プローブ 対 DAC)。合成の許容を超える色相やルマの 外れは、名指しする。

  3. 報告 (docs/n6-report.md): 絵、ゲートの数字、捕捉の経路の合成の 数字を領域ごとに、実物の捕捉の状況、そしてベンチに残るもの。

N6 に入らないもの

壁時計に合わせた歩調とドリフト方針 (N8、シェルと一緒に)。CRT のパラメータ は ntsc-crt の書き下ろしのままで、ここでは何一つそれを当てはめ直さない。

ビルド時に nes/docs/n6-plan.md から取り込まれる。写しはリポジトリの一つだけだ。報告は独自の作業用の言葉をいくつか使う: 報告書で使われる言葉。