USB ジョイスティック・アダプタはオープンプロジェクトになりました。ファームウェアのソースコードをダウンロードできます。
APPLE II にはジョイスティックを接続可能なゲームポートが付いていて、 多くのリアルタイムゲームでジョイスティックが必要でした。 ところが現代では、APPLE II に接続出来るジョイスティックは希少で高価です。 一方、近所の電気店に行ってみると、アナログ入力のジョイスティック、 デジタル入力のゲームパッドが比較的安く売られています。 そこで、これらの機器を APPLE II で使用する方法を考えました。
APPLE II J-plus で動作確認しています。スタンダード、plus も回路が同じなので使えると思われます。
IIe に対応しました。
既にお求めのお客様で、IIe でご使用される方は、サポートをご依頼下さい。
DB-9 タイプのコネクタのタイプもございます。
設計で想定したのは、以下の条件を満たす機器です。
現時点で接続を確認した機器を以下に示します。
メーカー | 型番 | 方式 | ディップスイッチ設定 |
サンワサプライ | JY-P60US | アナログ 4 軸 12 ボタン ジョイスティック | 10010101 |
サンワサプライ | JY-P55UC | デジタル 2 軸 8 ボタン ゲームパッド | 00001000 |
サンワサプライ | MA-90HUS | 3 ボタン 1 ホイール マウス | 10000010 |
エレコム | JC-U912VBK | アナログ 4 軸 12 ボタン ジョイスティック | 10010101 |
エレコム | JC-U2410TWH | デジタル 2 軸 10 ボタン ゲームパッド | 11010101 |
エレコム | M-N1URSV | 3 ボタン 1 ホイール マウス | 10000010 |
Saitek | P220 | デジタル 2 軸 8 ボタン ゲームパッド | 00011000 |
本機では USB 通信処理と APPLE II のゲームポートのタイマー処理を一つのマイコンで行っています。 そのため、アナログの分解能は最高でも 85 程度であり、ややブレもあります。通常のゲームでは差し支えないと考えますが、 精密な入力を必要とするアプリケーションには向きません。
コネクタをゲームポートに差し込んで下さい。 ソケットの切り欠きを APPLE II の手前にして差し込みます。 足が曲がりやすいので、まっすぐにして差し込んで下さい。
必ず、APPLE II の電源を入れる前に接続して下さい。プラグ&プレイは出来ません。
ディップスイッチは、動作中でも切り替えることが出来ますので、色々試しながらセッティング出来ます。
スイッチ 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 となります。
基盤がむき出しですので、ショート事故には十分、注意してください。
こちらをご覧下さい。
本製品をよりご活用頂くため、マイコンのファームェアのソースコードを公開します。 ライセンスは GNU GPL3 としますのでご活用下さい。
こちらからダウンロード出来ます。
私個人(アマチュア)による手作りです。
不良等の場合は誠実に対応させて頂きますが、
万が一、ご使用で損害が生じた場合、西田ラヂオでは製品以外について保証はできません。
どうか、ご理解のほどお願い致します。
Drew さんに、Saitek のゲームパッドをご提供頂きました。ありがとうございました。
マイコンのソフトウェアによる USB コントローラの実現は、ホスト、クライアントともいくつか発表されており、
西田ラヂオでも非常に興味を持っていましたが、実力が伴わずになかなか実現しませんでした。
書店で USB について立ち読みで勉強して、 Web で勉強し、機器にビット列を流し込んでは反応を見て実験を繰り返し、
何とかオリジナルのホストもどきが動き出しました。
データの変換や送受信に結構な速度が要求されますし、加えて機器によるクロック周波数の変動に対応するための機構も必要になったため、やむなく 20 MHz のマイコンを 27 MHz にオーバークロックしています。。。が、何とか動く物ができました。
バージョンアップ版では、NE558 のタイミング電圧をマイコンで制御するためのアナログ回路を新たに設計し、NE558 を抜かずにゲームポートに接続するだけで使用出来るようにしました。