6502tinymachines

コンソールの弧のノート

私たちは節目を二度書き留める。コードの前に書く計画は、何をどれだけ近く 検査するかを述べる。作業の後に書く報告では、どの数値も、それを印字した 走行付きの実測だ。これらの文書はそれぞれのリポジトリにある。このページは サイトがビルドされるたびにそれらを取り込み、コンソールのどの部分について のものかで並べ替える。だから一箇所に集まっていて、写しはリポジトリの一つ だけのままだ。報告が数字を出しているなら、それは走行が印字したものだ。 報告が何かを書き下ろしと呼んでいるなら、それは私たちがした選択で、そう札 を付けてある。報告には私たちの間で使う作業用の言葉が残っていて、 報告書で使われる言葉がそれを説明する。較正カートリッジ にはそれ自身の節がある。

どこから始まったか

コンソール全体がその上に建っているスケッチ。コードを一行も書く前に書かれた。

コンソール全体の計画スケッチ v0.2。 動くコンソールとは何を意味するか、部品はどう噛み合うか、N0 から N8 までの節目、そして道すがら下した決定。

チップ

どのチップも話す規約、それから NES の二つのチップをスイッチのところで (2A03 は CPU と音、2C02 は絵のチップ)、そしてそこから作られた高速版。

チップが共有する規約N0 の報告。 ピンの表、ドットのフレーム、カートリッジのエッジを、依存の無い一つの小さなクレートにまとめ、記録済みのリファレンス走行に照らして検査した。
2A03 をスイッチのところで、リファレンスと厳密に一致A0 の報告。 NES の CPU と音のチップをトランジスタごとに模擬し、例外の一覧なしでリファレンスとビット単位で一致させた。
2A03 から出た最初の音A3 の報告。 プログラムの音をチップ自身の出力から読み取り、ミキサーはまだ実測していない主張として書き留めた。
高速 2A03 の計画N3 の計画。 10 進補正を切った 6502 の高速コアと、チップから実測した表としての音のユニット。
高速 2A03、作って検査したN3 の報告。 高速チップをピンのところでトランジスタレベルのものに照らして検査し、音の表はチップから実測し、バスの停止はフレームごとに合わせた。
2C02 をスイッチのところでP0 の報告。 絵のチップをトランジスタごとに模擬し、そのリファレンス走行を再生し、電源が入っているときにしか働かないトランジスタを見つけた。
2C02 の最初の絵P1 の報告。 絵のチップを模擬したバス越しに駆動し、色の出力を表に一致させ、電源投入時に定まらないラッチを名指しした。
2C02 の難所P2 の報告。 スプライト 0、vblank の読み出し競合、OAM の破壊。どれも、リファレンスも答えを知らないまま走らせる小さなレジスタのプログラムで決着させた。
高速 2C02 の計画P3 の計画。 一度に一ドットずつ進む絵のチップを、トランジスタレベルのチップから実測した予定表で駆動する。
高速 2C02、チップとドット単位で一致P3 の報告。 高速の絵のチップが、三つのテスト場面、レジスタの書き込み、そして描画を切ったときの絵で、トランジスタレベルのものと一致した。

信号

コンソールとテレビの間のコンポジット映像: 仕様、ntsc-crt の各節目、そしてリファレンスから意図して離れる箇所。

信号経路の仕様仕様 v0.3。 NTSC 信号について合意された計画: ソース、デコーダのフィルタ、テレビの絵の段、そして捕捉。
すべてが立っているタイミングの格子M0 の報告。 標本の格子、各段で残る位相、そして後のすべての段が頼るデータ。
NES の符号化器と最初のデコーダM1 の報告。 符号化器をそのリファレンスに、最初の復号フィルタを blargg のものに照らして検査した。
コムフィルタ、RGB の符号化器、そして速さM2 の報告。 デコーダのノッチとコムのフィルタを、リファレンスに照らし、また互いに照らして検査し、どれだけ速く走るかを測った。
信号のベンチを速くする信号経路が何倍も速くなり、ブラウザでそのまま走るだけの速さになった経緯: 作る前に名指しした三つの変更、コムのテストが間違いを捕まえたフィルタの近道、そして前後の速度。
テレビの絵の段M3 の報告。 復号された信号からブラウン管の絵までの各段。私たちが選んだ設定にはすべて、選択だと札を付けてある。
実機を捕捉するM4 の報告。 捕捉のソース、自分たちの模型を通る往復、そして実機の最初の録音を自分たちの合成に照らして採点した結果。
文書の主張を検査するM5 の報告。 文書が述べる数字をすべて見つけて確かめ直すスキャナ、リファレンスからの既知の離れ、そして合意された仕様。
信号経路がリファレンスから離れる箇所信号経路が公開されたリファレンスと意図して異なる箇所それぞれと、その理由。

コンソール

二つのチップを一枚の基板に: 糊、テスト ROM を走らせる機械、そしてその絵、その音、それが遊ばれる窓。

メインボードの糊N4 の報告。 NES-001 基板のチップの間にある数点の部品。それぞれデータシートに照らして検査し、私たちが書いたものだと札を付けた。
二つのチップを一つのクロックでN5 の報告。 走るコンソール: 二つの高速チップを一つのクロックに乗せ、その間のタイミングをトランジスタレベルのチップに照らして検査し、blargg のテスト ROM を端から端まで走らせた。
コンソールの絵の計画N6 の計画。 信号経路を通る絵と、捕捉したフレームをどう比べるか。許容は先に書き留めた。
コンソールの絵N6 の報告。 信号経路を通る絵、描画を切ったときの画面をチップの上で実測したもの、そして採点した捕捉フレーム。数値は記録されたもので、当てはめたものではない。
コンソールの音の計画N7 の計画。 基板の音声段を通る音を、回路図から読み取る。
コンソールの音N7 の報告。 基板の音声段を通る音、打ち消し合う blargg のミキサーのテスト ROM、そして彼が実機を録った音源をこちらのものと並べた。
コンソールの窓の計画N8 の計画。 コンソールが遊ばれる窓、GPU の上の絵、歩調、そしてブラウザという二つ目の目標。
窓の中のコンソールN8 の報告。 画面なしで作って検査した窓、CPU のものと一致する GPU の絵、そして実測したブラウザのビルド。

机

ブラウザの中のコンソールと、その周りの道具: 各ウィンドウが何を受け取り、何を作り、何を保存するか、そしてリポジトリがどうページになるか。

机の竣工図版 1、2026-09-28 にコードから読み取った: 七つのリポジトリがどうやってブラウザの中の一台のコンソールになるか、各ウィンドウが何を受け取り、何を作り、何を保存するか、ページと機械の間の継ぎ目、そして場面、記録、カートリッジがどこへ行くか。

ベンチの計画

ベンチは実機と模型を、同じコントローラの入力の下に置く。以下は先に書かれたものだ。

ベンチの計画実機と模型を同じコントローラの入力の下に: コントローラポートに載せるブリッジ、一つの台本の下のリレーとスコープ、そして各ステップの検査。
ブリッジの配線パッドの代わりを務めるシフトレジスタ、レベルシフタ、マイコンのピン、リレー、そして電源を入れる前にやるテスターの検査。
ベンチの台本ベンチと模型の両方が読む一つのファイル: ポーリングごとのパッドのバイト、アーム、トリガ、そして捕捉。

ベンチを組む

図に描かれたブリッジと、組み上がったブリッジ: 回路図、部品、ピンごとの早見表、そして組み立ての手引き。

ブリッジの回路図と部品回路図としてのブリッジ (v1 と v1b)、拡張したブリッジ (v2)、タイミングの帯として描いたコントローラのポーリング一回、電話のパッドとしての純正パッド。部品表と組み立ての順序。
Arduino UNO 上の v1b ブリッジ最初に組んだ版、すべて 5 ボルト: レベルシフタが消える理由、ピンの表、そしてファームウェアを書いて分かった、計画が間違えていた四つのこと。
組み立ての手引き、五回の作業でピンごとに何を配線するか、それからコマンドが何を測るか、どの写真を撮るか、そして各回がどこまで進んでいるか。組み立てを進める道具から生成される。
ベンチの部品表回路図の葉ごとに一つの表と、集めるものすべての一覧。回路図を描くファイルから生成されるので、二つが食い違うことはできない。
ベンチの早見表二つのブレークアウトをピンごとに、ハーネスの色付きで。四本のジャンパ、そしてすべてのチップのすべてのピンを、何をするかとどこへ行くか付きで。回路図と実験ログから生成される。
ヘッドの手の早見表v1b パッケージの三葉目を表にしたもの: Pi の四本のジャンパをヘッダの位置で、電源とリセットのブレークアウト、すべての線、そして PC817 とリレーのモジュールの各ピンを、何をするかとどこへ行くか付きで。回路図から生成される。
組み上がった v1b 基板写真から読み取ったもの: チップがどこに座りどちらを向いているか、レール、UNO のリボン、そしてジャンパを短く保つためにヘッダをどこへ動かすべきか。
QA のリグフレームに載ったカメラと基板を、インチと画素で: 各カメラの役目、取り付け、縮尺、背板とブレッドボードの寸法、撮影されたベンチ、そして何かが動いたときに何を走らせるか。
純正パッドを USB か Bluetooth のキーボードに単体のアダプタ。組むために描き、そして組んだ: 部品はそのシルクから読み、ヘッダは測り、図面、組み立てが二度向きを変えた理由 (C6 が書き込みを受け付けず P4 モジュールへ、それからモジュールの無線リンクが落ちて Bluetooth から USB へ)、そして純正パッドのすべてのボタンが USB 越しに Linux のホストへ届いたこと。
ボタンからキー入力まで、層ごとにパッドが USB キーボードであるとき、純正パッドと電話の間を何が行き来するか: パッドのシフトレジスタ、キーのレポートとしてのバイト、ホストにその読み方を教えるディスクリプタ、USB そのもの、それからブラウザの keydown。ブートキーボードではない理由と、一層ずつ確かめる七段階の計画、七段階すべてが通った、最後は電話の上で。
どの ESP32 がどの仕事をするかEspressif のどのチップが Bluetooth のキーボードになれ、どれが USB のキーボードになれ、どれが両方か。八つについて、記憶ではなくベンダ自身のヘッダから読んだもの。パッドを P4 モジュールへ移した比較。
手持ちの山にあるもの新しい計画のために手元にある機材を、写真から読み取ったもの: ESP32 の基板、フォトカプラの基板、HP-16C の電卓。それぞれについて、部品から読み取ったもの、部品の系列の資料から来るもの、そして合う仕事。

ベンチで起きたこと

写真付きで一歩ずつ進む組み立てと、各道具が何を示したかの、進行中の報告。

リグが固定され、ブリッジが正しく読めたベンチでの三日間: v1b のブリッジはコンソールへバイトを渡し、その一つずつを読み返す。トリガはスコープを止め、カメラはフレームに載った。計画が間違えていたこと、目に見えないもの、そして次に来るもの。
ベンチの道具が示したもの各道具が合成の走行で働き、それぞれに失敗しなければならない妨害の走行が付く。最初の問いには実機より先にチップが答え、模型はそれに合わせて変わった。
ラボノート一歩ずつ配線されていくベンチ。失敗も含めてすべての試行を残し、各ステップは測定で終わる。組み立ての道具のログから生成される。
まだ開いているもの道すがら気づいて、まだ終わっていないものすべて: 較正カートの実機側、模型の色相がコンソールのものと違う箇所、グラバー、ベンチ、カートリッジのリーダー。それぞれに、なぜ大事かと何が閉じるかを添えて。

ベンチでの実験

実機の絵と模型の絵、そして両方が同じバイトを走らせられるように模型が生やしたカートリッジ。

オシロスコープの使い方、ソフトウェア開発者のために配線のためのデバッガとしてのスコープを、本物の故障で教える: カチカチ鳴っているのにファームウェアが何も数えなかったガイガーカウンター。グラウンドクリップ、ブレークポイントとしてのトリガ、信号の連鎖の二分探索、SCPI でスコープをスクリプトから操ること、そして計器そのものが間違えたいくつものやり方。
目 対 スコープコンソールの映像をスコープと USB グラバーへ分け、グラバーを動かすまで、そしてグラバーの絵を、スコープの記録を自分たちで復号したものに照らして採点した結果。
模型の中の実物のカートリッジリーダーが違うゲームを推測した理由、検証済みのダンプ、そして絵の比較のために同じバイトを両側で走らせられるよう模型が生やしたマッパー 66 の基板。
机の上のカートリッジには、どれも基板がある模型が備えた七つのカートリッジ基板、周りにコンソールが無ければ試せなかった二つ、一本の線になるのに割り込みを要した画面の分割、そして 20 本目のダンプ。それはマルチカートの最初のバンクを単独で読んだものだ。

ベンチを運動させる

二つのスタックを一段ずつ強く追い込む段取りと、それが自動化に教える言葉: 実機に合わせて調整される模型、パッドから学ばれるゲーム、そしてゲームのコードのレントゲン。

ベンチを運動させる二つのスタックを、すべての流れに型を付けた一枚の論理図として。層ごとの方言、それぞれにゲートを持つ六段の段取り、そしてその上に載る三つの計画: 実機の上で実測される模型のつまみ、パッドから絵まで学ばれるゲーム、そしてコードの模様の百科事典の裏にあるレントゲン。
Super Mario Bros. を一面ずつ、実機の上でベンチが本物のコンソールで、電源投入から Super Mario Bros. を遊ぶ。1-1 から一面ずつ、模型の上で見つけたボタンの押し方の一本のスケジュールで: それぞれの面をどう探し、どう通しで再生し、どう実機で遊んだか、数字だけから描いた面ごとの図、そしてそれぞれが教えたこと。
コードの模様の百科事典レントゲンを足し合わせると何になるか: NES のコードの模様それぞれに、模型の上で実測した署名、ダイのページへの窓、そしてそれが教える仕組み。コードは出所が私たちのものであるカートリッジからだけ
Super Mario Bros. を解剖する模型の上で分解した最初のゲーム: 割り込みの中のループ、走査線ごとのフレーム、ジャンプエンジンを通るルーチンの木、VRAM のパイプライン、そしてジャンプへ向かうパッドのバイト。形だけで、コードは決して出さない

印刷用

ベンチの図面パッケージ。デプロイのたびに、コミット済みの回路図から作られる:

図面一式「NES controller-port bridge, v1b」TM-NESB-001 版 P (PDF、英語)、図面一式「NES controller-port bridge, v2b」TM-NESB-002 版 A (PDF、英語)、図面一式「Original pad to a USB or Bluetooth keyboard, pad-ble v1」TM-NESB-003 版 M (PDF、英語)、図面一式「Geiger TRNG emitter: the detector and an ESP32-C6 in a box」TM-TRNG-001 版 F (PDF、英語)、オシロスコープの使い方、ソフトウェア開発者のために (PDF、英語)、v2b 基板、表面の銅 (SVG)、組み上がった v1b、写真の上に検査箇所を書き出したもの (PNG)。