APPLE II 用 USB ジョイスティック・アダプタ

pic1

NEW

ファームウェアをアップデートしました (9/12)。アップデートご希望の方は西田ラヂオまでご連絡下さい。

初めに

APPLE II にはジョイスティックを接続可能なゲームポートが付いていて、 多くのリアルタイムゲームでジョイスティックが必要でした。 ところが現代では、APPLE II に接続出来るジョイスティックは希少で高価です。 一方、近所の電気店に行ってみると、アナログ入力のジョイスティック、 デジタル入力のゲームパッドが比較的安く売られています。 西田ラヂオでは、これらを APPLE II に接続する実験をして参りましたが、 ようやく成功したため、製品としてラインナップすることにしました。

対応 APPLE II

APPLE II J-plus で動作確認しています。スタンダード、plus でも使えると思われます。

動作例 (QuickTime)

アナログジョイスティックでのゲーム
マウスでのゲーム

対応 USB 機器

西田ラヂオは弱小ゆえに十分な機器をそろえて開発をすることが出来ません。また、通常 PC では USB 機器に記録されたレポートディスクリプタの情報から各コントロールの割り当てをするのですが、小さなマイコンでは厳しいため、ディップスイッチである程度の割り当てを変更可能にするに留まりました。

設計で想定したのは、以下の条件を満たす機器です。

  1. USB 1.1 の HID に対応しており、インタラプト転送の周期が 10ms である。
  2. レポートデータが 8 バイト以下である。 
  3. ジョイスティック、ゲームパッドの場合、X軸、Y軸のレポートデータがそれぞれ 1 バイトであり、最も左 (最も上) が値 0、最も右 (最も下) が値 255 である。マウスの場合は、各軸の変位が 1 バイトの符号付き整数である。
  4. レポートデータにおいて、X 軸のデータの次のバイトが Y 軸のデータである。
  5. 4 つのボタンがレポートデータの 1 つのバイトの上位または下位 4 ビットに対応しており、押されているビットが 1 になる。

現時点で接続を確認した機器を以下に示します。

メーカー型番方式ディップスイッチ設定
サンワサプライJY-P60USアナログ 4 軸 12 ボタン ジョイスティック10010101
サンワサプライJY-P55UCデジタル 2 軸 8 ボタン ゲームパッド00001000
サンワサプライMA-90HUS3 ボタン 1 ホイール マウス10000010
エレコムJC-U912VBKアナログ 4 軸 12 ボタン ジョイスティック10010101
エレコムJC-U2410TWHデジタル 2 軸 10 ボタン ゲームパッド11010101
エレコムM-N1URSV3 ボタン 1 ホイール マウス10000010

性能

本機では USB 通信処理と APPLE II のゲームポートのタイマー処理を一つのマイコンで行っています。 そのため、アナログの分解能は最高でも 85 程度であり、ややブレもあります。通常のゲームでは差し支えないと考えますが、 精密な入力を必要とするアプリケーションには向きません。

APPLE II との接続

ピンクの印のついたコネクタをゲームポートに、青の印のついたコネクタを H13 の位置にある NE558 を抜いて接続します。色の付いた端を手前に向けて差し込みます。足が柔らかく曲がりやすいので、注意して差し込んで下さい。

pic2

ジョイスティック、ゲームパッド、マウスとの接続

必ず、APPLE II の電源を入れる前に接続して下さい。プラグ&プレイは出来ません。

pic3

ディップスイッチの設定

ディップスイッチは、動作中でも切り替えることが出来ますので、色々試しながらセッティング出来ます。

スイッチ 1 - 3 の 3 ビットで、レポートデータにおける X 軸のデータの位置を示します。ビットの並びが通常と逆 (スイッチ 1 が最下位ビット、スイッチ 3 が最上位ビット) なので注意して下さい。例えばスイッチ 1 - 3 が全て OFF であれば、レポートデータの最初のバイトが X 軸のデータとなります。

レポートデータにおいて Y 軸のデータの位置は、X 軸のデータの位置の次のバイトに固定となります。

スイッチ 4 - 6 の 3 ビットで、レポートデータにおけるボタンのデータの位置を示します。ビットの並びが通常と逆 (スイッチ 4 が最下位ビット、スイッチ 6 が最上位ビット) なので注意して下さい。例えばスイッチ 4 - 6 が全て ON であれば、レポートデータの 8 バイト目がボタンのデータとなります。

スイッチ 7 は、ジョイスティック、ゲームパッドを使う場合は OFF、マウスを使用する場合は ON にします。これは、各軸のレポートデータを絶対的な位置と見なすか、前回の位置からの変位と見なすかを切り替えます。

スイッチ 8 は、ボタンのレポートデータのバイトのうちどのビットを使用するかを切り替えます。OFF の場合、下位 4 ビットをボタンデータとして使用します。ON の場合、上位 4 ビットをボタンデータとして使用します。なお、4ビットのデータと APPLE II のゲームポートとの対応は、上位ビットから SW0, SW1, SW1, SW0 となります。

pic4

免責事項

私個人(アマチュア)による手作りです。
不良等の場合は誠実に対応させて頂きますが、
万が一、ご使用で損害が生じた場合、西田ラヂオでは製品以外について保証はできません。
どうか、ご理解のほどお願い致します。

雑談

マイコンのソフトウェアによる USB コントローラの実現は、ホスト、クライアントともいくつか発表されており、 西田ラヂオでも非常に興味を持っていましたが、実力が伴わずになかなか実現しませんでした。
書店で USB について立ち読みで勉強して、 Web で勉強し、機器にビット列を流し込んでは反応を見て実験を繰り返し、 何とかオリジナルのホストもどきが動き出しました。
データの変換や送受信に結構な速度が要求されますし、加えて機器によるクロック周波数の変動に対応するための機構も必要になったため、やむなく 20 MHz のマイコンを 27 MHz にオーバークロックしています。。。が、何とか動く物ができました。
今後も、これを元にした製品を展開していくので、お楽しみにお待ち下さい。