コンソールの絵の計画
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 な のでコンソールの範囲外だ。
手順
-
コンソールを通る絵。
nes-consoleにpictureが加わる: コンソールのフレームを順に受け取り、それぞれを前のフレームが残した位相 で NES ソースで符号化し、ラング C で復号し、任意で CRT の段を走らせるPictureだ。ntsc-crt はタグで固定、下は同じ nes-bus。run-romには パレットのダンプの横にCRT=out.ppm(表示される絵) が加わる。ゲート (
tests/picture.rs): コンソールのフレームを絵に通したものは、 同じワールドから出た単体の PPU のフレームを同じ絵に通したものと、バイト 単位で一致する (継ぎ目は何も足さない。今回は符号化器の先まで)。そして 絵がコンソールの実際のパリティ列にわたって持ち越す位相は、ntsc-grid の 算術がその列に与えるものと一致する (奇数フレームの短い行が位相を動かす。 コンソールはドットだけでなくパリティを渡さなければならない)。妨害 (パリティを Even に固定する) は後者を赤にしなければならない。 -
捕捉の経路、機械側の半分。
capture-scoreという例が、コンソールで ROM を走らせ、そのフレームを符号化し、そして実物の捕捉を読むか (M4 の 道具が読む.u8/.wavを、記録した機器のレートで)、フレームを ntsc-crt のキャプチャカードの模型に通すか (合成、同じレートで) して、それを M4 と 同じやり方で復元し、名前の付いた平らな領域を、コンソール自身の合成を 同一のデコーダに通したものに照らして採点する: ルマ、色相、彩度。full_palette.nesと合成の捕捉なら、経路全体がこの機械の上で閉じる。 実機の上で同じ ROM を実物として捕捉することが、ベンチの項目だ。許容を、いま述べる。合成の往復 (カードの模型自身の雑音と 5 ppm): 採点する平らな領域すべてで、ルマは合成から 0.01 以内、色相は 1.0 度以内、 彩度は 5 パーセント以内。外したら失敗だ。実物の捕捉: 合成の数字の横に 記録するが、押さえはしない。M4 が採点した実物の領域一つが、すでに 彩度で 28 パーセント高く出ていて、その理由はスケッチの 5 節がベンチに 割り当てているからだ (プローブ 対 DAC)。合成の許容を超える色相やルマの 外れは、名指しする。
-
報告 (
docs/n6-report.md): 絵、ゲートの数字、捕捉の経路の合成の 数字を領域ごとに、実物の捕捉の状況、そしてベンチに残るもの。
N6 に入らないもの
壁時計に合わせた歩調とドリフト方針 (N8、シェルと一緒に)。CRT のパラメータ は ntsc-crt の書き下ろしのままで、ここでは何一つそれを当てはめ直さない。
ビルド時に nes/docs/n6-plan.md から取り込まれる。写しはリポジトリの一つだけだ。報告は独自の作業用の言葉をいくつか使う: 報告書で使われる言葉。