一覧へ戻る
小ネタゲームレトロファミコンスーパーファミコンシフトレジスタ

ファミコンのボタンはなぜ8個なのか?コントローラーとシフトレジスタの話

ファミコンのコントローラーのボタンの数が8個であり、スーパーファミコンが12個なのには理由がある。「8bit機だから8個」という誤解を解きながら、コントローラーの中のシフトレジスタ(4021)が読み取るビットの仕組みを、初心者向けにわかりやすく解説する。

ファミコンのコントローラーのボタンは8個

ファミコンのコントローラーを思い浮かべてほしい。

ファミコンのコントローラー(ストックマテリアル https://stockmaterial.net/game/380/ より引用)
ファミコンのコントローラー(ストックマテリアル https://stockmaterial.net/game/380/ より引用)

ボタンの数を数えてみてほしい。十字キーの上下左右で4つ、SELECT・START、そして A・B。合わせて8つだ。

スーパーファミコンのコントローラーは12個

次に、スーパーファミコンのコントローラーを思い浮かべてほしい。

スーパーファミコンのコントローラー(任天堂パーツ販売 https://onlineshop.nintendo.co.jp/item-detail/1230101 より引用)
スーパーファミコンのコントローラー(任天堂パーツ販売 https://onlineshop.nintendo.co.jp/item-detail/1230101 より引用)

こちらも数えてみると、十字キーの上下左右で4つ、SELECT・START、A・B・X・Y、肩の L・R。合わせて12個になっている。

なぜファミコンは8個で、スーパーファミコンは12個なのか。実はこの数には、コントローラーの中身の事情がしっかり関係している。

「8bit機だから8個」ではない

ファミコンは「8bit機」、スーパーファミコンは「16bit機」と呼ばれる。

そのため、こう考えたくなる。

ファミコンは8bit機だからボタンは8個、スーパーファミコンは16bit機だから16個まで置けるのでは?

数字がきれいに揃うので、いかにもそれっぽい話である。実際、私自身も勘違いしていた時期がある。

しかし、これは間違いである。

「8bit機」「16bit機」というのは、本体に載っている CPU が一度に扱えるデータの幅を表している。ファミコンのCPU(6502系)が8bit、スーパーファミコンのCPU(65C816)が16bitなのは事実だが、それとコントローラーのボタンの数には直接の因果関係はない

bit(ビット)そのものについては、こちらの記事で詳しく解説している。

bitとは? 4bit/8bit/16bit/32bit/64bitの違いをわかりやすく解説

では、ボタンの数を本当に決めているのは何なのか。

本当の主役は「シフトレジスタ」

ファミコンの本体とコントローラーは、太いケーブルでつながっているように見えて、ボタン1個ごとに線が伸びているわけではない。実際に情報やり取りに使われている信号線はクロック線・ラッチ線・データ線の3本のみである。

ここで活躍するのが、コントローラーの中に入っている 4021 という IC(シフトレジスタ だ。4021は 8bit分の入力をまとめて受け取ることができる。

仕組みは以下のとおりである。

  1. 本体が「今のボタンの状態を覚えろ」という信号(ラッチ)を送る
  2. 4021が8個のボタンの押し/離しを一度に取り込む
  3. 本体がクロック信号を8回送る
  4. 4021はそのたびに、ボタンの状態を1bitずつ順番に1本のデータ線へ送り出す

つまり、8個のボタンを8本の線で同時に送るのではなく、1本の線に1bitずつ並べて流す。これを「シリアル転送」と言う。本体は8回読み取れば、8個ぶんのボタンの状態を揃えることが出来る。

ここがポイントである。

ファミコンのボタンが8個なのは、使っている[シフトレジスタ](/dict/shift-register)4021が「8bit」だからであって、CPUが8bitだからではない。たまたま両方とも「8」という数字が出てくるので混同されやすいが、別々の話だ。

スーパーファミコンが12個なのも同じ理屈

スーパーファミコンのコントローラーは、シフトレジスタを16bit分読み取れる構成になっている(8bitのレジスタを2段つないでいる)。本体はクロックを16回送って、16bitぶんを順番に読み出す。

つまり、スーパーファミコンは理論上16個までボタンを読み取れる

ところが、実際に配置されたボタンは12個。読み取れる16bitのうち、12bitがボタンに割り当てられ、残りの4bitは未使用になっている。

なぜ16個フルに使わなかったのか。

理由は単純に、そんなにボタンは要らなかったからである。ボタンは多ければ良いというものではない。十字キー+A・B・X・Y+L・Rという12個の配置は、増やしすぎず・足りなさすぎずの、ちょうどいい落としどころだったわけだ。

では現代のゲーム機は「64個」置けるのか?

ここまで読むと、こう言いたくなるかもしれない。

現代のゲーム機は64bitだから、ボタンも64個まで置けるのでは?

残念ながら、この理屈はもう通用しない。

そもそも現代のコントローラーは、ファミコンのようにシフトレジスタでボタンを1bitずつ読む方式ではないUSBやBluetoothを通じて、ボタンの状態をデジタル通信のデータとしてまとめて送っている。だから「nビットだからnボタン」という対応関係そのものが存在しない。

通信のデータ量から言えば、64個どころか何百個でも理屈の上では送れてしまう。しかし、当然そのようなコントローラーを誰も作らないであろう。音ゲー専用コントローラーのような特殊な用途ならともかく、普通に遊ぶ分には指が足りない。

おわりに

「8bit機だからボタンは8個」

このような、いかにもそれっぽい話は、実はコントローラーの中のシフトレジスタが何bit読むかという、もう一段階深い話であった。

CPUのbit数とボタンの数がたまたま近い数字で並んでいたせいで生まれた、ちょっとした勘違い。でもその勘違いをほどいていくと、たった数本の線でボタンの状態を順番に送り出すという、昔のコントローラーの素朴で巧妙な仕組みが見えてくる。

普段なにげなく握っているコントローラーの中にも、巧妙な工夫や技術がぎっしりと詰まっていることを意識してみると、また一段と違った世界が見えてくるのかもしれない。

関連記事
記事一覧に戻る