Commodore 64 Game System Joystick
- 公開日: 2020/08/04
- 更新日: 2021/09/13
1990年に発売されたCommodore 64ベースのゲーム機、Commodore 64 Game System(C64GS)に付属していたジョイスティック。C64Wikiによれば、回路及びピンアウトは以下の通り。
pin# |
function |
---|---|
1 |
UP |
2 |
DOWN |
3 |
LEFT |
4 |
RIGHT |
5 |
NC |
6 |
FIRE |
7 |
VCC |
8 |
COMMON |
9 |
2nd Button |
第2ボタンの読み取り方法は1350マウス(ジョイスティックモード)の右ボタンとおそらく同じ。つまり、ボタンが押されていない時はVCCとピン9がつながっていないのでPOTXの読み取り値は$FFのような大きい値となる。一方、ボタンが押された状態ではVCCとピン9との間の抵抗値は充分低い値となるので、POTXの読み取り値は$80よりも確実に小さくなる。
他機種での利用(2021/9/11追記)
このジョイスティック、PC-6001/MSX系やセガ系でも標準2ボタンジョイスティックとして検出できるのでは?と気づいた。つまり、PC-6001やMSXでは9ピンがGNDなので、第2ボタンを押すと7ピンと9ピンが抵抗を介して短絡し、プルアップされている7ピンは電圧降下によりLレベル(ボタン押下)として検出されうる。一方セガのSG-1000/SC-3000/MkIII では7ピンがGNDなのでボタンを押すと9ピンの電圧降下が発生するという仕組み。
問題は降下後の電圧がLレベルとして判断できるか、ということ。R1をプルアップ抵抗値、R2を7-9ピン間の抵抗値、電源電圧をV0とすると、7ピンと9ピンの短絡後の電圧Vは R2/(R1+R2) = V/V0 となる。このVが信号検出用のICにおいてLと判断される範囲内(調べた限りでは0.8V以下)であれば、第2ボタンはMSXやセガのマシンで使用可能ということになる。R2が最大の330Ωだとしても、R1が1732.5Ω以上であれば大丈夫だろう。
V0は通常5Vで、R2は回路図の通り270-300Ω。各機種のプルアップ抵抗値R1は以下の通り。JR-200とTOWNSとPC-9801については、6ピンと9ピンの間の電流から計算した推定値である(使用したテスタの能力上0.1mA程度の誤差あり)。他の機種についてはリンク先からたどれる回路図を参照した。X68000についてはCocoro BooksのX68000サービスマニュアルに記載の回路図を参照したが、解像度が低く抵抗値を正確に読み取れなかった。SMC-777については回路図未入手の為不明。
機種 |
R1 |
---|---|
PC-6001, MSX, PC-9801, JR-200 |
10kΩ |
22kΩ |
|
FM-7, FM TOWNS |
3.3kΩ |
6.8kΩ |
|
4.7kΩ |
|
X68000 |
15kΩ? |
以上調べた範囲ではどの機種もこのジョイスティックを標準2ボタンコントローラとして使用可能と思われる。ただし、JR-200はその仕様上、第1コントローラ端子、第2コントローラ端子のどちらにつないだとしても双方の第2ボタンの同時押し(+キーボード入力)として検出される。