レトロゲームは改造してなんぼ

レトロゲーム機をちょっと違った形で遊び倒す

SFCコントローラの仕組みについて覚え書き

SFCコントローラのICを取り外してArduinoを接続する前に、SFCコントローラの仕組みを調べた範囲で記載する。

SFC本体とコントローラとは5本の線で繋がっている。
うち2本は電気(Vcc)とGNDで使用されており、残り3本でボタンを押下したとかいった情報をやりとりしている。
この3本をそれぞれP/S、CLK、DATと名付けるとし、ボタンの押下情報が送信される仕組みは以下の通り。

  1. P/SとCLKがHigh
  2. P/SとCLKがLow
  3. Bボタンが押されていなければDATがHigh、押されていればLow
  4. CLKがHigh
  5. CLKがLow
  6. Yボタンが押されていなければDATがHigh、押されていればLow
  7. 以下残りのボタン(と識別苻4つ)についても4~6を繰り返し
  8. 最後の識別符の処理が終わるとP/SとCLKがHigh
  9. 以後繰り返し

という処理をずっと繰り返しているそう。
ちなみに「識別苻」というなにやら物騒なモノがあるが、実際は4つともHighであればいいらしい。

ちなみにこれはICが載っている状態で、ICがシリアルに信号を送信している状態の話である。
すでにICは取り払っており、ボタンから伝っている12本の回路それぞれとArduinoを直結させるため、Arduinoが取得する信号は常にパラレルである。
実装の際には12個のボタンの情報をそのまま12bitの情報として本体側に飛ばすことを想定している。

ちなみにこれは検証してみないとわからないことだが、信号を送信するタイミングは「随時」で良さそう。
いわゆるクロックを管理する仕組みがなさそうなので、信号を送れる状態になったらじゃんじゃか送っていっていいと思われる。

参考にさせていただいたサイト
SFCコントローラの解析
PIC ROOM・SFCコントローラーをパラレル風の信号に変換