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

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

1

1985年にハル研究所より発売された、ファミコン初の連射機能付きジョイスティック。スティック部分が直径8センチほどのボールとなっており、手のひらで包むようにして操作する。

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

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

2

多くのゲームではコントローラの入力に応じて画面を書き換えるものであるため、画面書き換えのタイミングに同期してコントローラの読み取りを行う。日本のテレビのアナログビデオ信号は1/60秒で1画面の描画を行うものであるため、連射速度の理論上の最高値は秒間30射である。コントローラ側でそれ以上の速度で連射させることは無意味であるばかりか、連射しなかったりボタン入力そのものを検出しないおそれがある。

/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

3

内蔵コントローラとは別の信号線である。I/Oアドレスは同じ(1コンが$4016、2コンが$4017)だが内蔵コントローラはBit0、拡張コネクタ経由のコントローラはBit1。ソフト側でBit0、Bit1のORをとることで、内蔵・外付けどちらのコントローラにも反応できるようになっている。逆に、ソフト側で内蔵、外付けを別のコントローラとして認識させることも可能である。なお、アドレス$4016で3入力(D0〜D2、但しD0は内蔵1コンのデータ専用、D2は内蔵2コンのマイク入力専用)、$4017で5入力(D0〜D4、D0は2コンのデータ専用)となっており、本記事では$4016をJ1、$4017をJ2と称している。また、海外版のNESでは$4016も5入力ある。

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

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

このスイッチ中位、同時期に発売されたハイパーオリンピックで使えるとのことだ。ハイパーオリンピックは公式には同梱の専用コントローラであるハイパーショット専用となっているが、NesDevによれば、ハイパーショットの1コンはRunがJ2-D1、JumpがJ2-D2にアサインされており、ジョイボールでスライドスイッチを中位に設定すればハイパーショットの1コン相当となる。

ファミコン版のハイパーオリンピックは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の内容に基づいてサイトの表示を変更する以外の用途には用いておりません。