Personal tools
You are here: Home KtJ's Blog いわゆる「ATARIジョイスティックポート」の変遷についてまとめてみる
« April 2017 »
Su Mo Tu We Th Fr Sa
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
 

いわゆる「ATARIジョイスティックポート」の変遷についてまとめてみる

by ktj posted at 2015-05-03 15:47 last modified 2017-01-04 11:49

一般に「ATARI仕様ジョイスティック」とよばれるものは、よく調べると方言が結構あるようなのでまとめてみた。海外のポートについてはePanorama.netのコンテンツdeskthority wikiのコンテンツを参考にした。

1. 基本

/img/atari-pins.jpg

ATARIジョイスティックのコネクタはDサブの9ピンを使用しており、パソコン本体側がオス、ジョイスティック側がメスコネクタとなっている(PCのシリアルポートとオスメス逆)。

2. ATARI 2600 (1977)

このコネクタを用いるジョイスティックポートがATARI社の家庭用ゲーム機であるATARI2600に実装された。そのピン配置は以下の通り4方向+1トリガである。上下左右及びトリガ信号検出ピン(1-4、6)はプルアップされており、ジョイスティックを倒す、或いはトリガボタンが押されると対応するピンが8番のGNDにショートされるようになっている。要するに、このジョイスティックは電気的には5chのオンオフスイッチであり、ジョイスティック自身は(連射機能等を追加しない限り)VCCを使うことはない。

1 UP
2 DOWN
3 LEFT / PADDLE BUTTON 1
4 RIGHT / PADDLE BUTTON 2
5 PADDLE RIGHT
6 TRIGGER 1
7 VCC(5V)
8 GND
9 PADDLE LEFT

また、PONGやブロック崩しで名を馳せたATARIらしく、このコネクタにはパドルも接続可能となっている。パドルに連結されたロータリーエンコーダの出力を5番及び9番ピンに出力するようになっている(追記: ここの記載は間違い。後述)。また、ロータリーエンコーダは電源供給が必要なので7番ピンにVCCが割り当てられている。また、パドルにはトリガボタンがついているが、なぜか6番ピンは使用されず、代わりにジョイスティックでは左右に割り当てられている3、4番ピンをトリガボタンの為に使用している。

(2016/5/19追記)ぐぐってみたことろ、Atari2600のパドルは1つのコネクタから二股ケーブルで2つのパドルを接続できるようになっていた。また、AtariAge.comのフォーラムに貼られていた回路図をみると、パドル内部では5・9番ピンと7番ピン(Vcc)との間に可変抵抗が設けられている。つまり5・9番ピンはアナログ入力ということになる。上記回路図には、数字キーパッド(12キー)やハンドル型コントローラの回路も記載されており興味深い。(追記終わり)

この構成はATARIの8ビットパソコンにもそのまま引き継がれている。また、コモドール64は5番、9番ピンがパソコンのアナログ入力端子に接続されており、アナログジョイスティックを接続することが可能となっている(たぶんAMIGAも同じ)。

(2016/5/19追記)上記の通り5・9番ピンはAtari2600時代からアナログ入力なのでC64はAtari2600と基本的に同じということになる。また、English Amiga Boardに貼られたピン対応表からは、Amigaでは9番ピンをアナログ入力とTRIGGER2で兼用できるようになっているようだ。(追記終わり)

(2016/8/9追記)上記deskthority wiki及びそこからリンクされているAtari ST Interfaces & Connectorsによれば、ATARIの8ビットPC及びSTのジョイスティックポートはアナログポート無しのデジタル1トリガポート(まあ最初のATARI 8bitはジョイスティックポート4つ付いてたし)。STについてはマウスポートとして使えるよう、1番目のジョイスティックポートのみ9番ピンにマウス右ボタン(内部的には2番目のジョイスティックポートのトリガ=6番ピンと等価)がアサインされている。なお、後継機のATARI STEではATARI Jaguarと同じ15ピンのポート(VGAコネクタと同じやつ)に変更されこちらにはアナログ入力も含まれている。一方で、STだとジョイスティックを使うときはマウスをポートから抜く必要があり(そしてジョイスティックを使い終わったらまたマウスに戻す)不便だったためか、STEではマウスは別のシリアルコネクタに接続するようになっている。(追記終わり)

(2017/1/4追記)↑一部間違い。Atariage.comのフォーラム(2)に記載の回路図によれば、8ビット機であるATARI 800のジョイスティック端子にはアナログ入力端子が含まれておりATARI2600と同仕様であると思われる。(追記終わり)

3. NEC PC-6001(1981)

PC-6001はATARI2600のポートの内、ジョイスティック部分のみを取り出してこれを拡張して2トリガにしたもの。パドル機能は削除されている。iP6 for Windows support pageの「ジョイスティックポートでRS-232C送受信」という記事に記載の回路図によれば、このジョイスティックポートはAY-3-8910(PSG音源チップ)のI/Oポートを使って実装されている。2番目のトリガは7番ピンに接続されるようになっている。また、GNDが9番ピンに移動し、8番ピンはCOM(コモン、らしい)ポートとなっている。このCOMポートは、パソコン本体側からジョイスティックに信号を送るためのものである。

GNDは9番ピンに移動したが、ジョイスティックの各方向キーやトリガスイッチはATARI2600と同様、8番ピンに一端が接続される。つまり、8番ピンがLowの時に限り、本体側はジョイスティックの状態を検知できるようになっている。

1 UP
2 DOWN
3 LEFT
4 RIGHT
5 VCC(5V)
6 TRIGGER 1 / OUT 1
7 TRIGGER 2 / OUT 2
8 COM
9 GND

この端子のユニークなところは、6、7番ピンが双方向端子となっておりパソコン本体側から信号を送ることができるようになっていること。ジョイスティックに限定されない、汎用のポートとして使うことも想定していたのだろうか。うまく使うと入力6ビット出力3ビットのI/Oとして使うことができる(と思う)。この双方向性端子も含め、PC-6001用ジョイスティックポートの仕様はMSXやX68000でも採用されているらしい(クレア工房「MSX互換ジョイスティックポート」より)。

富士通FM-7シリーズも同じ仕様のジョイスティックを採用。当初はFM音源カードにジョイスティック端子がついてくる構成でありFM-77L2以降標準となった。FMシリーズの場合はYM2203のIOポート(8bit2ch)にジョイスティックポートを割り当てている。6、7番ピンが双方向性になっているかは不明(YM2203のIOポートは双方向性だから対応してるかもしれない)。シャープX1は標準でジョイスティックポートを備えているが、VCCは供給されていない(なのでX1対応の連射ジョイスティックは要電池)。双方向性端子は時期的に対応してなさそう。

富士通のFM TOWNSもPC-6001と同じ形式。双方向性端子があるかどうかは不明。端子の構成に関しては他のPCと同じだが、富士通純正のパッドは上下左右+トリガABの各々の一端が8番のCOMではなく9番のGNDに接続されている点が異なる。このため、ソフト側でCOMをHighにしていると「TOWNSパッドでは動作するが8ビット用のジョイスティックでは動作しない」という現象が起こりうる。また、SELECT、RUNを追加した4ボタン構成となっているのも特徴(SELECTは上下、RUNは左右同時押しと等価な信号となる。このため、SELECTやRUNを押している間は方向キーを検出できない)。

(2016/5/19追記)FM-7エミュレータ"EM7"の開発者のサイトであるなべちゃんのホームページに掲載されているFM77AVの回路図によれば、FMシリーズもPC-6001と同仕様の双方向性端子を持っている。(追記終わり)

(2016/5/22追記)シャープが公開しているX68000のサービスマニュアルによれば、X68000はジョイスティックポート1、2のうちポート1のみが双方向性端子となっている。シャープX1については、X1 Centerで公開されている回路図によると双方向性端子は採用されていなさそう。

PC-9800シリーズ テクニカルデータブック HARDWARE編によれば、NECのPC-9801用の純正FM音源ボードPC-9801-26、26K及び86に実装されているジョイスティックポートも双方向性端子含めPC-6001と同じである(ただしPC-9801-86は1ポートのみ)。また、FM TOWNSテクニカルデータブックによればFM TOWNSは6、7番ピンのみならず8番ピンも双方向性端子となっている。

NEC PC-8801mkIISRは大 深 海 水 淵 亭に載っているI/Oマップによると双方向性端子はない。また、1端子のみである。(追記終わり)

(2016/7/9追記)いやX1は回路図によるとAY-3-8910のIOポートをそのままジョイスティックポートに引き出しているだけだから全端子双方向性だともいえるのかな。機器側ではコンピュータがデータの送信モードなのか受信モードなのかを知る術が無さそうなので使いどころが難しそうだけど(追記終わり)

(2016/6/8追記)シャープMZ-2500のジョイスティックポートもPC-6001と同仕様。詳細は後述(追記終わり)

このように、国内で使用されていたジョイスティック端子の仕様はPC-6001がオリジナルで他のメーカーがパクったわけだが「ATARI仕様ジョイスティック」とか「MSXジョイスティック」とか一般に呼ばれ、「PC-6001用ジョイスティック」とは呼ばれないのが悲しい。

以上のように、国内で普及した仕様はオリジナルのATARI仕様と微妙に異なり、互換性は限られたものとなっている。つまり、ATARIの1ボタンジョイスティック(連射機能無し)を国内PCに接続することは可能だが、国内仕様の2ボタンジョイスティックは第二トリガ押下でVCCとGNDがショートしてしまうため外国のパソコンで使用するのは危険ということになる。

4. SEGA SG-1000/SC-3000(1983)

Enri's Home PAGEのコンテンツに記載の回路図によれば、ピンアサインは以下の通り。

1 UP
2 DOWN
3 LEFT
4 RIGHT
5 not connected
6 TRIGGER 1
7 GND
8 GND
9 TRIGGER 2

オリジナルのATARIジョイスティックの機能に加え、9番ピンに第2トリガを追加したものとなっている。本体の内部では7番・8番がショートしているが、ジョイスティック側では各キーの一端をを8番に繋いでいるようだ。

5. Amstrad CPC(1984)

Amstrad社のCPCシリーズは英国を中心とした欧州で普及していた8ビット機。ピン配置としてはATARI仕様とPC-6001仕様の中間で、X1に近い。

1 UP
2 DOWN
3 LEFT
4 RIGHT
5 not connected
6 TRIGGER 2
7 TRIGGER 1
8 GND
9 not connected

(2016/5/22追記) ジョイスティックポートは1つのみである。また、Grimwareに記載されている回路図によれば、8、9番ピンはPC-6001の8番ピンと同様のコモン端子である。さらに、5番ピンの入力も受け付けることが可能である。つまり、入力7ビット、出力2ビットのポートということになる。(追記終わり)

(2016/8/8追記)上記Grimwareによれば、9番ポートは「2台目のジョイスティック用のGND」とされている。つまり、CPCはジョイスティックを数珠つなぎにするなり分岐タップを使うなりすることで2台のジョイスティックを接続可能ということか。8番ピンをLow、9番ピンをHighにしておけば1番目のジョイスティックのみの入力を受け付けることになり、逆にすると2番目のジョイスティックのみの入力を受け付けるという実装かな?(追記終わり)

6. SEGA メガドライブ(1988)

P6つくろうブログの記事に記載の回路図によれば、メガドライブのジョイスティックのピン配列は以下の通り。7番ピンのSELECTは本体からジョイスティックに送られる信号で、ジョイスティックはこの信号を元にどのキーの情報を本体に送るかを選択する(TOWNSの6ボタンパッドのCOM端子の使い方といっしょ)。3、4、6、9番ピンは7番ピンがHighの時は左、右、Bボタン、Cボタンとなり、Lowの時はGND、GND、Aボタン、STARTボタンとなる。

1 UP
2 DOWN
3 LEFT / GND
4 RIGHT / GND
5 VCC(5V)
6 TRIGGER B / TRIGGER A
7 SELECT
8 GND
9 TRIGGER C / START

SG-1000/SC-3000とあまり互換性が無い。SG-1000/SC-3000は7/8番ピンがGNDなので、SG-1000/SC-3000のジョイスティックをメガドライブにつないだ場合、方向キーは検出できる。トリガ1はトリガAとBの、トリガ2はトリガCとSTARTとの同時押しとして検出される。一方、メガドライブのジョイスティックをSG-1000/SC-3000に接続した場合は、SELECTが常にLOWなのでトリガ1はトリガAとして、トリガ2はSTARTとして検出され、左右は検出できないということになる。

メガドライブ仕様のジョイスティックをMSX等に接続した場合、1ボタンジョイスティック(方向キーとトリガBのみ有効)として認識されるはず。逆にPC-6001仕様のジョイスティックをメガドライブに接続した場合はトリガCとSTARTボタンが押しっぱなしと判断され、トリガ1を押すとトリガABの同時押しと認識され、トリガ2を押すと過電流でメガドライブ側の故障が発生する可能性がある、んじゃないかと思う。

7. 各機種のジョイスティック端子の実装(2016/5/22追記)

(注: 下記は別途記載がなければ本記事中で言及されている資料に基づいて記載したものである)

ATARI 2600の回路図によれば、ATARI 2600のジョイスティックポートのうち方向キー(1~4番ピン)はMOS 6532のI/Oポートに接続されている。一方、アナログ入力端子(5・9番ピン)及びトリガ(6番ピン)はカスタムチップであるTIA(Television Interface Adapter、CO10444)のI/Oポートに接続されている。なお、MOS 6532はプルアップ回路を内蔵しているためジョイスティックポートのピンはそのままI/Oポートに接続されている。トリガについてはプルアップ回路を別途入れている。

前述の仕様書や回路図によれば、PC-6001、MSX、FM-7、そしてPC-9801の26音源ボード及び86音源ボードのジョイスティックポートはほとんど同じ実装となっている。すなわち、PSG音源チップのAY-3-8910及びFM音源チップのYM2203(OPN)、YM2608(OPNA)はA、B二つの8ビットI/Oポートを持っていて、これらの実装ではAを入力専用に、Bを出力専用に設定している。ポートA0~A5はそれぞれセレクタICを介して両ジョイスティックの1~4、6、7番ピンに接続されている。セレクタICのセレクト入力端子はポートB6と接続されており、これによって読み取りを行うジョイスティックポートを選択するようになっている。ポートB0~B5はそれぞれ順番にジョイスティック端子1の6番、7番、ジョイスティック端子2の6番、7番、ジョイスティック端子1の8番、ジョイスティック端子2の8番ピンに接続されている。なお、AY-3-8910、YM2203(たぶんYM2608も)はデータシートを見る限りプルアップ回路を内蔵している(のでI/Oポートとジョイスティック端子をプルアップ回路無しで直接接続すれば機能するはず)が、PC-6001やMSXではプルアップ回路を別途入れている。

X1もAY-3-8910のI/Oポートを使用しているが、A01~08をジョイスティック端子1に、B01~08をジョイスティック端子2にそのままつなげている。つまり、X1ではGNDである8番ピン以外は全て入力端子であり4ボタンまで可能ということになる。

PC-8801mkIISR(及び後継機種)はちょっと変わっている。YM2203のI/OポートA0~A3が上下左右というのはPC-6001等と同じだが、トリガはポートB0、B1にアサインされている。でもって前述の通りジョイスティック端子は1つのみしか想定されていないのでセレクト用のI/Oポートは無い。COM端子(8番ピン)にはYM2203ではなくZ80のI/O(アドレス40hのビット6)から直接信号を出力するようになっている。

X68000及びFM TOWNSは音源にI/Oポートはついていない(はず)ので、別途パラレルインターフェースを追加してジョイスティックポートを実装している。X68000の場合はインテルi8255(8ビット3チャンネルのパラレルI/O。PC-8801のFDインターフェースとかにも使われている)を使用し、ポートPA0~3、5、6をジョイスティック端子1の1~4、6、7番ピンに、ポートPB0~3、5、6をジョイスティック端子2の1~4、6、7番ピンに、ポートPC4~7をそれぞれジョイスティック端子1の8番ピン、ジョイスティック端子2の8番ピン、ジョイスティック端子1の6、7番ピンに割り当てている。

FM TOWNSの場合はI/Oアドレスの04D0H及び04D2Hがそれぞれジョイスティック端子1、2の入力用I/Oとなっており、それぞれの0~6ビットがジョイスティック端子1の1~4、6~8番ピンに対応している。ジョイスティックの6~8番ピンへの出力用I/Oアドレスは04D6Hであり、ビット0~5がそれぞれジョイスティック端子1の6番、7番、ジョイスティック端子2の6番、7番、ジョイスティック端子1の8番、ジョイスティック端子2の8番ピンに対応している。

SG-1000の場合はZ80のI/Oアドレス0DCH、0DDHにジョイスティックポートがアサインされている。0DCHがジョイスティック端子の1~4、6、9番ピン、ジョイスティック端子2の1、2番ピンで、0DDHがジョイスティック端子2の下位4ビットがジョイスティック端子2の3、4、6、9番ピンに対応している。

Amstrad CPCのジョイスティック端子はPSG音源のAY-3-8912のI/Oポートを用いている。8912はPC-6001等に使用されている8910と違ってI/Oポートは8ビット1系統(A0~A7)しか持っていない(ちなみにFM-7の内蔵PSGはI/Oポート無しのAY-3-8913)。ポートA0~A6をジョイスティック端子の1~4、6、7、5番ピンに割り当てている。出力端子である8、9番ピンは(デコーダICである74LS145を介して)インテルi8255で制御するようになっている。

(2016/6/7追記)↑ではFM-7の内蔵音源をAY-3-8913としていた。本体に付属のマニュアル(ユーザーズマニュアル システム仕様)やなべちゃんのホームページに記載の図面では確かにAY-3-8913となっているのだが、はにはにのヴィンテージPC再生ブログutsに掲載されている写真によれば、実際にはAY-3-8910が使われていたようだ。何かもったいないような気がするが調達の都合だろうか。(追記終わり)

(2016/5/27追記)シャープMZ-2500/2800シリーズやソニーSMC-777もこの系統のジョイスティックポートを備えていたことに気づいた。

MZ-2500については、様々なエミュレータを開発されているTAKEDA, toshiya's HOME PAGEに記載のMZ-2800解析資料やエミュレータのソースコードを見る限り、YM-2203のI/Oポートを使わずに実装されている(YM-2203のポートはRS-232C用等として使われているっぽい)。ジョイスティックの制御に使うI/OアドレスはEFHであり、ここの7ビット目に書き込むことでジョイスティックポート選択、1~6ビット目の読み取りでジョイスティック(2トリガ)の入力内容を取得を行うもののようだ。COM端子やトリガの双方向性端子が実装されているかは不明。書き込みの1~4ビット目はトリガマスク?というものらしく、ここに値をセットすると対応するトリガが常にオンとして読み取られるようになっている。

SMC-777は上記ソースコードを見る限りでは1トリガタイプのジョイスティックである。SMC-777のPSGはTIのSN76489ANでこれにはI/Oポートはついていないので、別のペリフェラルコントローラを使っているのだろう。SMC-777はMSXより前のマシンなのでたぶんPC-6001仕様とは互換性がなく、したがってCOM端子等の出力端子は実装されていないと見た。

いずれにせよこの両機種については資料を当たって見ないとなんとも。MZは図書館で資料を当たってみれば何とかなりそうだけどSMCは本体付属のマニュアルに載っているI/Oアドレスマップや回路図を参照しないと無理っぽい。(追記終わり)

(2016/6/25追記)本日開催されたマイコン・インフィニット☆PRO-68K前田尋之氏のブースでSMC-777Cが展示されており、マニュアルを見せていただいた。それによると、SMC-777のジョイスティックポートは1トリガのみであり、5ピンがVcc、7ピンはトリガのアサインなし、8ピンが9ピン同様のGNDという、ちょうどPC-6001の1トリガ版という仕様になっていた。また、双方向端子はジョイスティックポート2のみ対応(マニュアルには「NECのPC-6051をジョイスティックポート2に接続することができる」との記載があった。PC-6051はPC-6001用のタッチパネルである)のようだ。(追記終わり)

(2016/6/8追記)工学社「MZ-2500テクニカルマニュアル」に記載の回路図や上記エミュレータのソースコードから類推すると、I/OアドレスEFHの1〜4ビットがそれぞれジョイスティックポート1の6、7番ピン、ジョイスティックポート2の6、7番ピンへの信号出力に対応している。EFHの5、6ビットはジョイスティックポート1、2の8番ピンへの信号出力。上記のトリガマスクというのは信号出力を行っているときの挙動を再現したものということだろうか。(追記終わり)

(2016/5/29追記)松下電器JR-200にもジョイスティックポートがついている。.Markku Reunanen.に記載の情報(TINY野郎氏のTwitter投稿経由)によれば、4ビットコントローラのMN1544CJRの下に構成されており、1トリガタイプの模様(追記終わり)

(2016/6/4追記)東芝パソピアシリーズには拡張スロット(ファミコンのようなカートリッジ形式)に取り付けるタイプのATARI互換ジョイスティックアダプタがあり、BASICでもサポートされていた模様(勝つ快感:Joystickアダプタより)。BASICでサポートされていたのは上下左右1トリガのジョイスティックだが、I/Oポートレベルでは2トリガまで読み取り可能とのこと。ジョイスティックポートは1カートリッジあたり2ポートで最大14ポート(!)まで拡張できたとのこと(パソピアは拡張スロットに拡張ユニットをつないでスロット数を7まで増やすことができるということなので、全てのスロットにジョイスティックアダプタを取り付ければ14、ということかな)。トリガ2がどのピンにアサインされていたのかが気になる。

「笑いっ子のホームページ」のコラムによれば、初代パソピアの発売は1981年9月、一方PC-6001はWikipediaによれば同年11月なのでATARIジョイスティックを最初にサポートした国産PCは初代パソピアということになるのだろうか。(追記終わり)

(2016/6/8追記)上記は間違い。BASICでジョイスティックがサポートされたのはパソピア7から。アスキー出版「パソピアの内部構造」によれば無印パソピアのT-BASICにはジョイスティック関連の命令は含まれていない。同所によればパソピアの拡張スロットはアドレスバス2ビット、データバス8ビットであり(言い換えれば8ビット4chのパラレル)拡張カートリッジ内にさらにI/Oコントローラを入れてより複雑な制御を行うとのこと。そうすると、パソピアにジョイスティックが実装されたのはパソピア7の頃で、ATARIジョイスティックを国内で最初にサポートしたのはやっぱりPC-6001なのかもしれない。(追記終わり)

8. ATARI互換ではないもの(2016/5/29追記)

トミーのぴゅう太はATARI仕様と同じDサブ9ピンのコネクタを使用しているが、Floodgap Systems' websiteに載っている資料によればピン配置は下記の通りである。

1 SELECT CONTROLLER 1
2 SELECT CONTROLLER 2
3 SL(TRIGGER)
4 SR(TRIGGER)
5 DOWN
6 LEFT
7 UP
8 RIGHT
9 NOT CONNECTED

ぴゅう太はATARIのパドルのように1つのコネクタで2つのコントローラを接続できるようになっている。各コントローラの上下左右+2トリガは(ダイオードを介して)1番ピン又は2番ピンに接続されており、ぴゅう太側で1番ピンと2番ピンのいずれかをLレベルにして各コントローラの読み取りを行っているようだ(3~8番ピンは全てデジタル端子)。ジョイスティックについては1番ピンと2番ピンがショートしているとのこと。

Apple][もDサブ9ピンコネクタを使用しているが、wiki.icomp.deに記載の資料によれば、4チャンネルのアナログ入力と3トリガ(Apple//c系はアナログ2ch+2トリガ)の端子とのこと。下の表で"*"がついている端子はApple//c系では未使用。

1 BUTTON 1
2 VCC
3 GND
4 JOYSTICK2-X *
5 JOYSTICK1-X
6 BUTTON 2 *
7 BUTTON 0
8 JOYSTICK1-Y
9 JOYSTICK2-Y *

なお、80年代初頭の国内PCにおいて、ジョイスティックコネクタを備えたものはソードM5、バンダイRX-78、カシオPV-2000があるが、コネクタ形状はDサブ9ピンではない。

The URL to Trackback this entry is:
http://www.ktjdragon.com/ktj/ktjs-blog/3044308f3086308b300catari30e730a430b930c630a330c330af30fc30c8300d306e59099077306b306430443066307e306830813066307f308b/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
(Required)


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: