原題: NES / Famicom Architecture
著者: Rodrigo Copetti
公開日: 2019年(継続的に更新、本文中に2024年8月の取材記述あり)
ソースURL: https://www.copetti.org/writings/consoles/nes/
アーカイブ日: 2026-06-04
Rodrigo Copettiの「Architecture of Consoles」シリーズの一篇。任天堂のファミリーコンピュータ(ファミコン)/NESを題材に、「一見ただの6502コンピュータに見えるこの機械の中心は、実はCPUではない」という主張を軸に、ハードウェアの設計判断とその背後にあるコスト・歴史的文脈を解剖していく。
任天堂は同一アーキテクチャの筐体を世界中で多数のバリエーションとして出荷した。本稿は代表的な2種に絞る。
NESの国際的な意匠が、当時のBetamaxレコーダーのような家電を意識して作られた点に、Copetti自身がケンブリッジのThe Centre for Computing Historyで撮影した実機写真を添えている。
NESのCPUはMOS 6502をベースにしたRicoh 2A03で、1.79MHz(PALでは1.66MHz)で動作する。Copettiはまず1970年代後半〜80年代初頭のCPU市場の多様さ(Intel 8080、Zilog Z80、Motorola 6800)を整理する。MOS 6502は、Motorolaの方針に不満を抱いた6800の技術者たちがMOSへ移って作った再設計版であり、互換性を犠牲にする代わりに圧倒的に安価だった。これがCommodore、Apple、Atari、Acornらに採用され、任天堂もこの「安くて馴染みのある」石を選んだ。Ricohはその6502互換クローンの製造に成功する。
6502の設計上の要点として、8ビットデータバス/16ビットアドレスバス、汎用レジスタが3本(X・Y・A)しかないこと、8ビットALU、そしてスタックポインタを8ビットに半減して固定メモリ領域に押し込んだコスト削減策、さらに2つのインデックスレジスタによる13種ものアドレッシングモードを挙げる。レジスタやスタックを切り詰めた設計は、開発者に効率的なプログラミングを強いる代わりにコストを下げた、という「制約が設計を駆動する」構図が一貫している。
本稿で最も独自性が光るのが、Ricohがどうやって6502をクローンしたのかという未解明の問いを掘り下げる箇所だ。MOSがRicohに設計をライセンスしたという文書は見つかっておらず、Ricoh版は同一レイアウトながら一部バスが切断(機能無効化)されている。2008年の日経トレンディ記事はRockwell経由のライセンスだと述べるが、第三者へのIP提供が成立しうるかは疑わしい。Copettiは、Donkey Kongのコード帰属をめぐるイケガミ通信機対任天堂の判例を引きつつ、任天堂がIP上のグレーゾーンをすり抜けた前例として並べている。
Ricoh 2A03は6502にあったBCD(2進化10進)モードを、制御線を物理的に切断して無効化している。これはMOSが保有するBCD特許のロイヤリティ回避が目的と見られる(集積回路レイアウトの著作権保護法が米国で成立するのは1984年)。
2A03は最大64KBのメモリ空間を持つ。マザーボード上の2KB SRAM(Work RAM)に加え、PPU・APU・コントローラ・カートリッジがすべてメモリマップされる。未マップ領域を読むと直前の値が返る「Open Bus」という挙動も、MOS設計から受け継いだ特性として紹介される。
カートリッジから実際にアクセスできるのは約49.97KB(49120バイト)に過ぎない。ではゲームはこの制約に縛られたのか——否。答えはマッパーだった。カートリッジ側に載せた追加チップがアドレス線とメモリチップの間に入り、バンク切り替えでアドレス空間を拡張する。CPUは同じ量のメモリしか見ないが、ゲーム側がバンクを操作することで大容量を扱える。スーパーマリオブラザーズの単純なNROM構成(PRG 32KB+CHR 8KB)に対し、マリオ3はMMC3マッパーでPRG最大512KB・CHR最大256KBを使えた——両者の質的な差はここに由来する。コストを本体からカートリッジへ転嫁する設計思想が、世代を超えた拡張性を生んだ。
「誰でも店で6502を買えるのに、なぜNESはApple IIやC64と違うのか?」——その答えがCPUを取り囲む独自チップ、PPU(Picture Processing Unit)とAPUだ、とCopettiは核心を示す。PPUはタイルを基本素材にスプライトと背景の2Dグラフィックスを生成する。グラフィックデータはカートリッジのCharacter memory(パターンテーブル)から、配置情報はマザーボードの2KB VRAM(ネームテーブル)から、スプライト属性は256バイトのOAMから引かれる。
フレームバッファは持たず、CRTのビーム走査に同期してその場で描画する設計。解像度は256x240ピクセル固定だが、NTSC/PALの差で上下が切れたり黒帯が出たりするため、開発者は画面端を「危険地帯」として避けた。
このシリーズの価値は、スペックの羅列ではなく「なぜその設計になったのか」を当時の産業状況とコスト構造から説明する点にある。NES編の通奏低音は「中心はCPUではない」という一点で、6502という汎用チップそのものよりも、それを取り巻くPPU/APUとカートリッジ側のマッパーこそがこの機械の個性を作った、という論旨が全体を貫いている。
とりわけRicohのライセンスの謎やBCDモードの物理的切断といった挿話は、単なるトリビアではなく「制約とコストが設計を駆動する」という普遍的なエンジニアリングの教訓として読める。マッパーによるバンク切り替えで本体コストをカートリッジに転嫁し、結果として世代を超えた拡張性を確保した判断は、現代のプラットフォーム設計にも通じる。著者が実機を分解し、博物館で一次資料を撮影し、判例や当時の記事まで当たって書いている点で、ハードウェア考古学として長期参照に値する。
タグ: #ハードウェア #レトロゲーム #コンピュータアーキテクチャ #6502 #任天堂