ファミコン版ジョイボールの回路

Youtube動画『メーカーの公称値に全く届かない連射機能付きコントローラーたちの真相「ホリ電機の嘘つき!1秒間に40発なんて出来ないぞ!」』にて、ジョイボール[1]が秒間250射という超高速な連射速度を出していることが報告されている。この計測はファミコンのコントローラをUSB変換アダプタを介してPCにつなぎ、Shwatch++というソフトで測定した結果で、同作者の他のYoutube動画によればファミコン本体での計測ではぴったり秒間15射とのこと。

通常、連射機能は発振回路によって行うが、誤作動のリスクが大きいため秒間30射の数倍のオーダーで発振させているとは考えにくい[2]。ファミコンの場合、コントローラからのデータはシリアル送信で行われる。このため、コントローラ入力の読み取りを行う度に本体側からパルスを出力している 。このパルスをカウントして、2回パルスを受信する度にボタンのオンオフを切り替えるような仕組みになっていれば、ファミコン本体では秒間15射、PC接続においてはサンプリングレートに応じた連射速度になる。この推測が正しいかどうかを確認するため、実際にジョイボールを入手して確認した次第。

なお、ジョイボールには色違いのMSX版もあるが、こちらは(コントローラ側で本体がいつ読み取りを行っているかを判別できないため)おそらく発振回路で連射させているものと思われる。

/static/images/blog/joyball.png

回路は上図のとおり。コントローラの各キーは30kΩの抵抗でプルアップされているがプルアップ回路については省略している。使用されているICは三菱電機のM60001-0103Pというもの。NesDevによれば、M60001シリーズはカスタムICとのことで、仕様などは不明。

各端子の拡張コネクタ上でのピン配置は以下の通り。Out0というのは、読み取りを開始する際に発せられるパルスを送るための端子。/OEは、シリアル信号を読み取る際に、次のデータを要求するためのパルスを送るための端子。つまり、ファミコン実機であれば1/60秒毎にOut0にパルスが送られ、その後8回/OEからパルスが送られるという仕組みである。J1-D1及びJ2-D1はそれぞれ(拡張コネクタに接続した)コントローラ1とコントローラ2の信号線[3]。J2-D2は通常のコントローラでは使用しない(NesDevによればファミリーベーシックのキーボードで使われているとのこと)。

pin#

Name

1

GND

6

J2-D2

7

J2-D1

12

Out0

13

J1-D1

14

/OE

15

Vcc

ジョイボールには連射の有無を切り替えるためのスライドスイッチがついており、スイッチを奥側に上げた時に連射あり、手前側に下げた時に連射なしとなっている。スイッチを下げた時に上図中のSwDがオンになり、ICの右側、下から2番めのピンがGNDに落ちる。

このスイッチ、どうやら上下のみでなく中位も検出するようになっており、中位ではSwMがオンになる(SwDはオフ。スイッチを上げた状態ではSwD、SwM共にオフになると思われる)。SwMがオンになると、ICの右側、下から3番めのピンがJ2-D1につながる。また、Bボタンの出力をJ2-D2から送るようになっている。

このスイッチ中位、同時期に発売されたハイパーオリンピックで使えるとのことだ。ハイパーオリンピックは公式には同梱の専用コントローラであるハイパーショット専用となっているが、NesDevによれば、ハイパーショットの1コンはRunがJ2-D1、JumpがJ2-D2にアサインされており、ジョイボールでスライドスイッチを中位に設定すればハイパーショットの1コン相当となるようだ。つまり、ICの右側、下から3番めのピンはボタンAの入力に応じて連射信号を出力しているのではないかと予想される。

ファミコン版のハイパーオリンピックは1985年6月21日発売、一方ジョイボールは1985年8月10日発売。もしこのスイッチ中位がハイパーオリンピックを狙ったものだとすると、相当早い時期(ICの設計変更・量産指定が間に合うように)にハイパーショットの仕様を入手し、それにあわせてジョイボールに隠し機能をつけたということになるが、どうだろうか。あるいは、(シリアル変換で多重化されていない)連射信号そのものを出力する機能はデバッグ用としてハイパーオリンピック発売前にICに実装されており、ハイパーオリンピック発売後にやっつけでハイパーショット互換となるよう実装したのかもしれない。

さて、肝心の連射機能の原理だが、カスタムチップを使っているため発振回路方式なのか、Out0(又は/OE)同期なのかは分からなかった。これを確認するためにはOut0(又は/OE0)のパルス間隔を変更させるような回路を組んで、オシロスコープでピン13の入力を取得する、ということをする必要がある。

(2021/7/26追記: なお、ハイパーオリンピックはハイパーショット専用だが、ゲーム開始メニューの操作とゲーム中のポーズ操作(スタートボタン)に限り標準コントローラの入力を受け付けている。従ってハイパーオリンピックにおいてもOut0は定期的に出力されている)

(2021/7/24追記)

今回の調査では裏付けは取れなかったが、ジョイボールの連射機構がOut0又は/OE同期である可能性は高い。一方で、上述の動画を見る限り他のメーカーの連射コントローラはこの方式を採用せず通常の発振回路を用いているようだ。なぜ他社は追従しなかったのだろうか?もしかして特許で保護されていたのだろうか?ということで独立行政法人工業所有権情報・研修館の検索サービス、J-PlatPatでハル研究所の国内特許出願を検索してみた。

ジョイボールに関する特許(特願昭60−123510/特開昭61−292734)はあったものの、これは方向入力のためのスイッチ部分に関する特許出願であり連射に関しては言及されていない。なお、この特許出願は審査請求(特許が成立するかを特許庁に審査してもらうための手続)を行わないまま7年(現在の特許だと3年以内だがこの当時は7年)が経過したため自動的に特許不成立となっている。ちなみにドイツでこの特許の権利化が行われている。

ということで、同期式連射回路についてはハル研究所の特許があったわけではなく、他社も利用可能だったものと思われるが採用されなかったのは、ABボタン別々に連射のオンオフができるようにしたり連射速度を切り替えられるようにしようとする際に汎用ロジックICでやると部品点数が多くなりコスト上難がある、といっか事情なのだろうか?

コメント(0)



Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。