シャープ サイバースティック
- 公開日: 2020/08/21
- 更新日: 2022/07/18
1989年に、対応ゲームであるX68000版アフターバーナーと同時にシャープによって開発・販売されれたアナログジョイスティック。型番はCZ-8NJ2。開発に協力した[1]電波新聞社からもXE-1AJという型番で販売された。二軸スティックと一軸スロットルの計3軸のアナログ入力と、10ボタン入力[2]が可能である。後に電波新聞社からメガドライブにも対応したアナログジョイパッドのXE-1AP(通称・カブトガニ)が登場している[3]。
本ジョイスティックはスティックやスロットルの傾きを256段階で検出するアナログモードと、スティックやスロットルを傾けた方向のみを検出する(つまり、従来のデジタルジョイスティックと互換性のある)デジタルモードとを切り替えることが可能である。なお、デジタルモードでは検出可能なボタン数が8に減少する[4]。
加えて、8ボタンのうちSTART、SELECTは、スティックの左右、スティックやスロットルの上下同時入力として検出されるため、ボタンを押している間はスティックやスロットルの操作ができなくなるという制約がある。
以下の説明は、X68000版アフターバーナーに同梱のドライバのソースコード及びドキュメントに基づく。ピンアウトは以下の通りである。
pin# |
Analog Mode |
Digital Mode |
|
---|---|---|---|
pin8=L |
pin8=H |
||
1(in) |
Data Bit0 |
Stick UP |
Throttle UP |
2(in) |
Data Bit1 |
Stick DOWN |
Throttle DOWN |
3(in) |
Data Bit2 |
Stick LEFT |
Trigger C |
4(in) |
Data Bit3 |
Stick RIGHT |
Trigger D |
5 |
VCC |
||
6(in) |
L/H |
Trigger A |
Trigger E1 |
7(in) |
ACK |
Trigger B |
Trigger E2 |
8(out) |
REQ |
L |
H |
9 |
GND |
なお、デジタルモードにおいては、SELECTボタンはピン1とピン2が同時にLになった状態を、STARTボタンはピン3とピン4が同時にLになった状態を出力する(TOWNSパッドと同じ)。 (2022/5/20追記: SELECT、STARTが上下・左右の同時押しになるのはオリジナルのサイバースティックにはなく電波新聞社XE-1APで追加された実装 出典:ファニィ氏による2022/5/15 0:21JSTのTweet)
アナログモードにおいては、以下の手順でスティックからのデータを読み取る。
割込を禁止する
ピン8をHにする
ピン8をLにする
ピン6がLになるまで待つ
ピン7がLになるまで待つ
ピン1〜4を読み取る
ピン6がHになるまで待つ
ピン7がLになるまで待つ
ピン1〜4を読み取る
ピン6がLになるまで待つ
ピン7がLになるまで待つ
ピン1〜4を読み取る
6.〜12.を4回繰り返し、計44ビットのデータを得る
割込を許可する
44ビットのデータの内容は以下の通り
Read # |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
---|---|---|---|---|
1 |
Btn A or A' |
Btn B or B' |
Btn C |
Btn D |
2 |
Btn E1 |
Btn E2 |
START |
SELECT |
3 |
Channel 0 High |
|||
4 |
Channel 1 High |
|||
5 |
Channel 2 High |
|||
6 |
Channel 3 High |
|||
7 |
Channel 0 Low |
|||
8 |
Channel 1 Low |
|||
9 |
Channel 2 Low |
|||
10 |
Channel 3 Low |
|||
11 |
Btn A |
Btn B |
Btn A' |
Btn B' |
ボタンA、BとA'、B'が台座、スティックどちらのボタンなのかは不明[5]だったが、上述のファニィ氏より台座側がA', B'であると教えていただいた(2022/7/18追記)。チャンネル0はスティックの上下、チャンネル1はスティックの左右、チャンネル2はスロットルのデータである(HighとLowを合わせて8ビット256段階のデータにする)。スティック・スロットルをセンターに合わさたときのデータは$7F又は$80で、左又は上に傾けると値は小さくなり、右又は下に傾けると値は大きくなる。(2022/7/18追記)なお、スティックやスロットルの傾き検出においてはL:0、H:1として解釈し、ボタンについては押されたときに対応するビットが0(つまりL)となる。
サイバースティックとX68000実機か、サイバースティック+ドライバ自作でしか確認できないのでつらい