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

Note

この投稿は追記だらけの上きちんと整理されていないため見づらく、また間違いもあるかと思うので、全面的に書き直しました。 アタリ仕様ジョイスティック研究となります。

一般に「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のフォーラムのトピック(1)に貼られていた回路図をみると、パドル内部では5・9番ピンと7番ピン(Vcc)との間に可変抵抗が設けられている。つまり5・9番ピンはアナログ入力ということになる。上記回路図には、数字キーパッド(12キー)やハンドル型コントローラの回路も記載されており興味深い。(追記終わり)

(2017/10/7追記、2017/10/15さらに追記)上記の回路図によれば1~4番ピンは双方向端子である。また、Atariage.comのフォーラムのトピック(2)にリンクが張られている、コレコ社(ゲーム機コレコビジョンでも知られる企業だが他社のゲーム機用のソフト開発も行っていた)によるプログラミングガイドによれば、1~4番ピンの入出力の向きはピン毎に設定可能である。また同プログラミングガイドによれば5、9番ピンはアナログ入力とデジタル入力を切り替え可能であり、また6番ピンについては(1~4番ピンと同様の)レベル検出モードとエッジ検出モードとを切り替え可能である。上で挙げた数字キーパッドは1~4番ピンを出力(本体からキーパッドに信号送出)として、入力専用端子である5、6、9番ピン(5、9番ピンについてはデジタル入力に設定し且つプルアップ回路をキーパッド内で構成した上で)との間でキーマトリックスを構成することによって実現されている。(追記終わり)

この構成はATARIの8ビットパソコンにもそのまま引き継がれている。また、コモドール64は5番、9番ピンがパソコンのアナログ入力端子に接続されており、アナログジョイスティックを接続することが可能となっている(たぶんAMIGAも同じ)。(2017/10/7追記)C64の前身であるVIC-20(日本ではVIC-1001)はC64と同じ仕様のジョイスティックポートを1つ備えている。(追記終わり)

(2018/5/11追記)1984年に登場したAtari 7800は2トリガのジョイスティックに対応している。Retronic DesignのAtari7800のページに記載のジョイスティックまわりの回路図によれば、2トリガモードの時は6番ピンがVccとなり、5、9番ピンが6番と8番ピン(GND)との間でプルダウン回路を形成する(トリガが押されると5、9番ピンがHighになる)構成となっている。この様な回路構成とすると、6番ピンにVccが供給されていない時は2トリガのどちらを押しても6番ピンがLowとなる(1トリガとして処理される)。しかしこの回路構成だと、1トリガのジョイスティックが接続された状態で2トリガモードにすると、トリガONでVccとGNDがショートしてしまうように見えるのだが、何らかの予防措置があるのだろうか?(追記終わり)

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

(2017/10/15追記)'Visual Transistor-level Simulation of the 6502 CPU'にあるATARI Pokeyチップの説明書によれば、ATARIの8ビットパソコンの5、9番ポートはAtari2600とは異なりアナログ入力専門のようだ。またCommodore VIC-20/1001やCommodore64の5、9番ポートについてもアナログ入力専門のようだ(後述)。なお、VIC-20/1001は6番ピンをライトペン入力として利用可能である。(追記終わり)

(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コネクタと同じやつ)に変更(2018/5/3追記:変更ではなく追加の模様)されこちらにはアナログ入力も含まれている。一方で、STだとジョイスティックを使うときはマウスをポートから抜く必要があり(そしてジョイスティックを使い終わったらまたマウスに戻す)不便だったためか、STEではマウスは別のシリアルコネクタに接続するようになっている。(追記終わり)

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

(2017/10/7追記)回路図を確認したところ、ここで挙げたアメリカのゲーム機又はコンピュータのジョイスティック端子は入力端子、Vcc及びGNDの仕様については概ね同じであるが出力端子(双方向端子)の仕様については異なっていることが分かった。前述のようにATARI2600は1~4番ピンが双方向端子。ATARIの8ビットコンピュータも同様。Commodore VIC-1001/VIC-20/Commodore64は1~4番ピンに加えて6番ピンも双方向性で、入力/出力をピン毎に設定可能。Amiga、ATARI STについてははっきりとは分からなかったがマウスの回路等を見るかぎり双方向端子はなさそう。しかしマウスの仕様ってATARI ST、Amiga、MSXで違うんだ。コネクタ形状が同じなので混乱しそう(追記終わり)

(2017/10/15追記)'AmigaOS 3.5 Developer Docs'に含まれるジョイスティックポート関連の資料によれば、AmigaにおいてはATARI2600とは逆に5、6、9番ピンが双方向端子となっている。5、9番ピンはレジスタの設定により「アナログ入力モード」と「デジタル入出力モード」を切り替え可能であり、例えばマウスを接続する際は5、9番ピンをデジタル入出力モードとして中、右ボタンに割り当てている。(追記終わり)

3. システムフォーミュレート BUBCOM80(1981)(2018/5/3追記)

当記事のコメント欄で@morian氏に教えていただいたもの。探検コムの記事によれば、システムフォーミュレート社はマツダ→富士通出身の渡辺昭雄氏(マツダ時代に王シフトを考案したとのこと!)が立ち上げたベンチャー企業とのこと。BUBCOM80はその名の通りバブルカセットシステムを採用したパソコンで、Z80を採用したCP/Mマシン。製造を富士通に委託したため、ケースのデザインは同年に登場したFM-8と非常に似通っている。

@morian氏のサイト「パピコニアンの倉庫-整頓中」のBUBCOM80の記事(「BUBCOM80の解析」「BUBCOM80のDSUBコネクタ」)に記載されているように、BUBCOM80の本体全面には2つのDSUB9ピン端子があり、これは少なくともATARIのジョイスティックが接続・使用可能であるとのこと。

当該記事にリンクされている基板の写真から判断する限り、キーボードのキーととまとめてキーマトリックスを構成しているようだ。他機種とは異なり、1~4、6番ピンが一種のセレクト端子(読み取る端子のみをLowにする)で、8ピンを介して読み取りを行うようだ。1~4、6番ピンと8番ピンとの短絡でジョイステック入力を行うという点は他機種と同様だが、その際の電流の流れる方向は逆となる。そのため、単純なスイッチ式のジョイスティック以外ではうまく動作しない可能性がある(例えばTOWNSパッドのように入力端子にダイオードを入れているもの。尤もTOWNSパッドは9番ピンとの短絡なのでダイオードが無くてもBUBCOM80では動作しないが)

1

UP(select)

2

DOWN(select)

3

LEFT(select)

4

RIGHT(select)

5

not connected

6

TRIGGER (select)

7

not connected

8

READ

9

not connected

4. 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互換ジョイスティックポート」より)。

(2017/10/7追記)上記のように双方向端子自体はATARI2600にもあるため別にユニークというわけでもなかった。(追記終わり)

富士通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端子のみである。(追記終わり)

(2018/7/14追記)間違い。↑のリンク先の内容を読み違えていた。PC-8801mkIISRは1〜4、6、7ピンの全てが双方向性端子で、1〜4番ピンのグループと6、7番ピンのグループ毎に入出力を切り替え可能。(追記終わり)

(2018/6/30追記)MZ-800はシャープMZ-700の海外向け後継機種(MZ-700自体も海外で販売されていた)で、CP/MをOSとして使用するビジネス機である。チェコのサイトSCAVにアップロードされているMZ-800のサービスマニュアルによれば、1~4、6、7番ピンが入力、8番ピンが出力、5番ピンがVcc、9番ピンがGNDで6、7番ピンは双方向性端子で無く入力専用とのこと。(追記終わり)

(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がショートしてしまうため外国のパソコンで使用するのは危険ということになる。

5. Coleco ColecoVison(1982)(2018/5/9追記)

ColecoVisionはZ80をCPUとして採用した据置ゲーム機である。機体前面に拡張コネクタがありそこに"Atari Converter"というユニットを接続することでATARI 2600のソフトを実行することも可能である。ColecoVisionの資料はColecoVision.dkに非常によくまとめられており、この記事もそこを参考にしている。

ColecoVisionの標準のコントローラはMattele社のIntellivisionに似た、8方向2トリガ(Fire、Arm)のジョイスティックと12ボタンキーパッドの一体型のコントローラである。後に純正オプションとして登場したSuper Action Controllerでは2つのトリガ(Purple、Blue)とローラが追加された。トラックボールやハンドル型のコントローラも提供されている。

コントローラの制御はやや複雑だ。上記ColecoVision.dkに記載の標準コントローラの回路図と、Retronic Designに記載のSuper Action Controllerの説明から推定されるピンアサインは以下の通り。

1

UP / Keypad&Purple,Blue buttons Select

2

DOWN / Keypad&Purple,Blue buttons Select

3

LEFT / Keypad&Purple,Blue buttons Select

4

RIGHT / Keypad&Purple,Blue buttons Select

5

Keypad&Purple,Blue buttons / Arm Common

6

Fire / Arm

7

Roller

8

UP,DOWN,LEFT,RIGHT&Fire Commom

9

Roller

少なくとも1、2、3、4、5、8番ピンは一種の双方向端子であり本体側でHigh(プルアップ)とLowを切り替えることができる。8番ピンがLowかつ1~4番ピンがHighの時は1~4番ピンで方向の読み取りが可能である。また、5番ピンがHigh、8番ピンがLowの時は6番ピンでFireボタンの読み取りが可能である。逆に5番ピンがLow、8番ピンがHighの時は6番ピンでArmボタンを読みとることができる。

キーパッド及びPurple、Blueボタンは8番ピンをHighに、1~4番ピンのいずれか一つをLow、他をHighにした上で5番ピンで読みとる。Lowにするピンを順次切り替えることで、押されているボタンの状態を4ビットの情報として読みとる。その性格上、キーパッド及びPurple、Blueボタンの複数ボタン同時押しは正しく検出されないものと思われる。

ローラはロータリーエンコーダの出力を7、9番ピンで読みとるものである。

(2018/5/12追記)上記のジョイスティックの回路図とEnri's Home PAGE(COLECO VISION) に記載されているコレコビジョンのI/Oポートの説明との整合性がとれない。Enri's Home PAGEの記載だとキーパッドは5番ピンをLowにして1~4番ピンで検出するように見える。この場合、回路図のダイオードの方向が逆なら整合性がとれる。よく分からないのでSuper Action Controllerを入手することにした。(追記終わり)

(2018/6/4追記)入手したSuper Action Controllerを分解して回路を確認したり、ブレッドボードで検出回路を組んでチェックしてみたところ、ColecoVision.dkに記載の回路図のキーパッド回りのダイオードの方向が逆であることが分かった。基本的に1~4、6、7、9番ピンはプルアップされており、5、8番ピンの一方をLow、他方をHighとすることで2系統(14入力)の入力を検出可能となっているようだ。Super Action Controllerのローラはロータリーエンコーダの出力をそのまま引き出しており、7、9番ピンのLow/Highの切り替わりの順番から回転方向を検出するもののようだ。なお、ローラは5番ピンがHigh、8番ピンがLowの時のみ検出可能である。

ということでピンアサインは以下の通り。

1

UP / Keypad&Purple,Blue buttons

2

DOWN / Keypad&Purple,Blue buttons

3

LEFT / Keypad&Purple,Blue buttons

4

RIGHT / Keypad&Purple,Blue buttons

5

Common for Keypad&Arm, Purple, Blue buttons

6

Fire / Arm

7

Roller

8

Common for UP,DOWN,LEFT,RIGHT,Fire&Roller

9

Roller

(追記終わり)

6. Spectravideo SV-318/328(1983)(2018/5/10追記)

Spectravideo社は元々SpectraVisionという名前で、その頃はQuickShotというAtari互換用のジョイスティックで知られていた。QuickShotは国内ではアスキーが自社ブランドで展開しており(オリジナルのQuickshotはボディカラーが黒だが日本向けのものはベージュ)、例えば富士通FM-7用としてプリンタポートに接続するための変換アダプタとセットで販売されていた。ちなみに漫画「べーしっ君」の主人公が肩からかけているジョイステックはこのQuickshotの国内版をモデルにしたものと思われる。

SpectraVision社は社名変更と前後して8ビットパソコンであるSV-318と328を開発、販売開始している。両機種についてはRoger's Spectravideo pageに詳しく解説されており、本記事もこのページに基づいている。SV-318、328は共にZ80を採用しており、318がメモリ16kB、テンキーなしゴムキーボードのエントリーモデル、328がメモリ64kB、テンキーつきプラスチックキーボードの高級モデルである。nIGHTFALL Blogにあるサービステクニカルマニュアルによれば、ジョイスティック端子はパラレルI/Fコントローラの8255とPSGチップAY-3-8910のI/Oを組み合わせて実装されている。具体的にはAY-3-8910のPort Aでジョイスティックの方向を、8255のPort Aでジョイスティックのトリガとパドル/タッチパネルの入力を検出するようになっている。

同ブログに記載の基板の写真を見るかぎり、8255のPortAのパドル/タッチパネル入力用のピン(D0~D3)はジョイスティックポートの5番、9番ピンと直結しているようである。従って、5/9番ピンはATARI2600とは異なりプルアップされた純粋なデジタル入力ポートと思われる(8255のPortAはプルアップ機能あり)。5、9番ピンをパドルとして使うにはワンショットタイマ回路なりロータリーエンコーダなりをパドル側に設ける必要がありそうだ。で、パドルを駆動するための電源も必要となるため残った7番ピンがVccとなるのだろう。

以上を踏まえるとピンアサインは以下の通りとなる。

1

UP

2

DOWN

3

LEFT

4

RIGHT

5

PADDLE/PAD 1

6

TRIGGER

7

VCC

8

GND

9

PADDLE/PAD 2

前述の通り1~4番ピンはAY-3-8910と接続されているので双方向端子であり、一方8255のPortAは読み込み専用として設定(Z80のI/Oボートにマッピング)されているので5、6、9番ピンコントローラ側からの入力のみと言うことになる。なのでATARI2600のキーパッドは利用可能ということになる。

なお、SV-318/328にはオプションとしてコレコゲームアダプタ、MSXゲームアダプタというものがあり、これらのアダプタを取り付けるとコレコビジョンやMSXのソフトを実行させることができる。これらのアダプタにはジョイスティックポートが用意されており、コレコビジョン用、MSX用のコントローラはアダプタ側のジョイスティックポートに接続して使用する。

7. 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番に繋いでいるようだ。(2017/10/11追記)回路図を見る限り信号ピンは入力専用であり双方向端子等は付いていないようだ。(追記終わり)

(2018/5/11追記)Enri's Home PAGEには様々な機種のハードウェアの解析記事があり、SG-1000/3000の後継機種についての記事もある。それによれば、セガマークIIIは5番ピンにVccを追加したもので、マスターシステムはさらに7、9番ピンを双方向端子にしたものとのこと。(追記終わり)

(2018/9/8追記)上記のピン配置はSG-1000のもので、SC-3000はジョイスティックインターフェースがキーボードと共通となっており、7番ピンが無接続で8番ピンが一種のキーマトリクス出力(Lレベルの時のみジョイスティックの読み取りができる)となっている。マークIII以降のゲーム機はSG-1000ベースで拡張を施したものとなっている。(追記終わり)

8. 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に記載されている回路図(オリジナルのhttp://www.grimware.org/doku.php/documentations/hardware/amstrad.cpc464は閉鎖したようなのでリンク先はミラー)によれば、8、9番ピンはPC-6001の8番ピンと同様のコモン端子である。さらに、5番ピンの入力も受け付けることが可能である。つまり、入力7ビット、出力2ビットのポートということになる。(追記終わり)

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

(2017/10/7追記)上記Grimwareに掲載の回路図から判断する限り、1~7番ピンは双方向端子と考えられる。(追記終わり)

9. 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を押すと過電流でメガドライブ側の故障が発生する可能性がある、んじゃないかと思う。

(2017/10/11追記)emudocs.orgに記載の回路図(mega1.png)及びそこに記載のパラレルポートLSIの仕様の解説(Mega Drive Wikiより)によれば、全ての信号ピン(1~4、6、7、9番ピン)は双方向端子でありピン毎に入出力を設定可能である。(追記終わり)

10. 各機種のジョイスティック端子の実装(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ポートに接続されている。トリガについてはプルアップ回路を別途入れている。

(2017/10/7追記、2017/10/15さらに追記) MOS6532のI/Oポートは双方向、TIAのI/Oポートは入力のみなので、1~4番ピンが双方向端子、5、6、9番ピンが入力のみということになる。

ATARI400/800は、1~4番ピンをCO14795チップ(MOS 6520相当)のI/Oポートに、6番ピンをCO12295チップ(CTIA、ビデオコントローラの一つ)の入力ポートに接続している。また、アナログ入力である5、9番ピンについてはCO12294チップ(POKEY、キーボードI/Oと可変抵抗センサ)に接続されている。6520はポートA、Bの2つの8ビットI/Oポートを持っているがポートBはプルアップ回路を内蔵していないためポートBには別途プルアップ回路を入れている。

Museo del Computerに記載の回路図によれば、Commodore VIC-1001及びVIC-20は、ジョイスティック、カセット制御、キーボード、ユーザポートの為に8ビット2chのI/OコントローラのMOS 6522を2つ使用している。ジョイスティックについては1~4、6番ピンをMOS 6522のI/Oポートに接続している。なお、4番ピンのみがキーボードと共用となっている。5、9番ピンについてはビデオ回路(VIC)であるCommodore/MOS 6560(NTSC)又は6562(PAL)のアナログ入力ポートに接続されている(上記回路図及び6502.orgにある6560のデータシートによればアナログ入力専門のようである)。

Bo Zimmerman氏のサイトに記載の回路図によれば、Commodore64のジョイスティックポートの1~4、6番ピンは8ビット2chのI/OコントローラのMOS 6526のI/Oポートに接続されている。6526はVIC-20に使用されている6522と同様、ピン毎に入出力を設定可能である。アナログ入力である5、9番ピンはアナログスイッチを介してSID音源チップ(Commodore/MOS 6581)のアナログ入力端子に接続されている。6502.orgにある6581のデータシートによれば、5、9番ピンはアナログ入力専門のようである。

Atari ST Interfaces & Connectorsによれば、ATARI STのキーボード及びジョイスティックの端子は日立のHD6301コントローラのI/Oポートに接続されている。6301はROMやRAMを内蔵しているコントローラで、STのメインCPU(MC68000)から細かく制御できるかはちょっと分からなかった。

(2017/10/7追記終わり)

前述の仕様書や回路図によれば、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ではプルアップ回路を別途入れている。(2017/10/7追記: よく考えたら音源チップとジョイスティック端子の間にセレクタICが入っているからセレクタICとジョイスティック端子の間にプルアップ回路を入れるのは当然だった。FM-7や26音源ボードでもプルアップ回路は追加されているはず)

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用のタッチパネルである)のようだ。(追記終わり)

(2019/5/26追記)`X1センター <http://x1center.org/index.html>`_さんの所に載っているSMC-777のI/Oポート説明によれば、SMC-777のポート2は、ピン2-4、6-8が双方向端子、ピン1が入力のみとなっており、ポート2についていえば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トリガタイプの模様。(追記終わり)(2018/5/11追記)Enri's Home PAGE(JR-200)にJR-200のハードウェアの詳細な解説記事があり、それによれば、6、7番ピンが双方向性でない点を除きPC-6001互換となっている。(追記終わり)

(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なのかもしれない。(追記終わり)

(2018/6/4追記)勝つ快感:プリント基板作成に記載のPAC2コンボカード(同人ハード)の回路図や、TAKEDA, toshiya's HOME PAGEに記載のパソピア7エミュレータのソースコードから判断する限り、2つめのトリガボタンは7番ピンにアサインされており、また、7つめ以降の入力端子は無いようだ(PAC2コンボカードではデータバスの2ビット分は常にHighとなるような回路となっている)。無論実際はX1のようにGND以外の全てが入力端となっている可能性もあり、正確には純正品のJoystickアダプタの回路を見てみないことには分からない。(追記終わり)

(2018/6/30追記)シャープMZ-800の場合は、入力ピン(1~4、6、7)はバスドライバを介してI/OポートF0(ジョイスティック端子1)、F1(端子2)にアサインされている。8番ピンについてはPPIコントローラの8255を介して出力するようになっている(PA4が端子1、PA5が端子2)。(追記終わり)

(2017/10/11追記)上記回路図やパラレルポートLSIの仕様によれば、メガドライブのジョイスティックポートは7ビット(3チャンネル)のパラレルポートLSIであるSEGA 315-5309に接続されている。メガドライブはDサブ9ピンのジョイスティックポートを2つ、拡張コントロール端子を1つ備えており、315-5309の各チャンネルのそれぞれにジョイスティックポート(あるいは拡張コントロール端子)が割り当てられている。なお、315-5309のパラレルポートはピン単位で入出力を設定可能である。(追記終わり)

11. 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系では未使用。(2018/5/3追記: Apple][のジョイスティックポートはATARIとはオスメス逆)

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 *

(2018/5/9追記)1980年に登場したMattel社のIntelliVisionのコントローラは、当初は本体と直結されていたが後のモデルではDサブ9ピンコネクタ経由で接続する構成となった。コントローラは方向入力用(16方向を検出可能)のディスクと4つ(うち2つは等価なので実質3つ)のサイドボタン、12キーのキーパッドが一体となった独特のものである。Joe's Zbiciak's Messに記載の回路図及びDeathskull Laboratories!に記載のピン対応表によれば、端子は5番ピンがGND、それ以外がPSGチップのI/Oポートと接続されている(GNDピンの位置以外はシャープX1に類似)。

上記のピン対応表によれば、ディスクが指す方向、キー、ボタンの入力に応じたコードが8ビットの信号として出力される構成のようである。その性格上、方向指示及びボタンとキー入力とは同時入力できない(方向指示とボタンの同時入力は可能)。また、キーパッドの複数のキー及び複数のボタンの同時入力もできない。(追記終わり)

(2018/6/30追記)90年代にパナソニック等が販売していたゲーム機3DOもDサブ9ピンのコネクタを使用している。かしまのHPに記載の説明によれば、下記のピンアサインを持つシリアル端子とのことである(ヘッドホン出力端子もある)。

1

GND

2

VCC

3

Audio1

4

Audio2

5

VCC

6

P/S

7

CLOCK

8

GND

9

DATA

6番ピンのP/SにLowを供給するとシリアルデータの出力が始まり、Clock(125kHz)の立ち下がりごとに出力するビットが切り替わる、というもののようだ。ATARIジョイスティックポートとはまったく互換性が無く、2番ピンにVCCが出力されておりATARI形式のジョイスティックを3DOにつなぐのは危険。海外の掲示板では3DOにメガドライブのコントローラをつないで壊してしまったという報告もあった。(追記終わり)

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

コメント(7)

  • 投稿者: @morian
  • 投稿日時: 2018/04/16(月) 22:03[JST]

(投稿者URL: http://www.retropc.net/mm/archives/1802)

はじめまして。
最近、BUBCOM80というマイコンのジョイスティック端子について調べましたので、URL欄記載のページに情報をまとめてみました。
こちらもいわゆるATARI規格のようです。
また、BUBCOM80の発売時期は1981年9月のようですので、1981年11月発売のPC-6001よりも先ということになるようです。

  • 投稿者: KtJ
  • 投稿日時: 2018/05/03(木) 11:27[JST]

コメントありがとうございました。返事が遅くなりすみません。

@morianさんのサイトやそこにある写真を参考に記事を更新しました。

  • 投稿者: daiki
  • 投稿日時: 2018/11/01(木) 16:00[JST]

(投稿者URL: https://shop.1983.jp/shop/shop.cgi?order=&class=all&keyword=%83%8C%83g%83%8D%83r%83b%83g%81%40%83Z%83K&FF=0&price_sort=4&pic_only=)

はじめまして。
12月にメガドライブ用のBluetoothレシーバーが発売するそうですね。
チェルノブアダプタやCPSF-PCを使えばATARI9ピンを備えたレトロPCでも使えそうなので
なかなか便利かも知れません。

メガドライブパッドで東方旧作(CPSF-PCアダプタ)
http://j02.nobody.jp/jto98/n_desk_joystick/cpsfpca.htm

  • 投稿者: KtJ
  • 投稿日時: 2018/11/03(土) 13:23[JST]

はじめまして。メガドライブ実機対応のBluetoothパッドが今になって出るというのは興味ぶかいです(ブラジルでは現役だからでしょうか)。

無線対応のジョイパッドをレトロPCで使う為のものとしてはこのようなものもあるようです。
http://park7.wakwak.com/~huye/kaihatsu/usb_ctrl_cnv.html

CPSF-PCの仕様って単に7→9、8→NOT→7、9→8なんでしょうか。だったら変換回路を簡単に作れそうなので暇な時に検証してみたいところです。

  • 投稿者: KtJ
  • 投稿日時: 2018/11/11(日) 11:58[JST]

7→9、8→NOT→7、9→8の回路作ってみましたけど動きませんでした(CPSF-PCに対応しているTOWNS版スーパースト2で確認)。普通のメガドライブパッドはMSXジョイスティックとして動作しているようですが…

  • 投稿者: Anonymous User
  • 投稿日時: 2019/05/23(木) 16:49[JST]

SMC-777はMSXと同じ規格のようです、SMC-777/MSX用のジョイスティックが出品されていた模様。

  • 投稿者: KtJ
  • 投稿日時: 2019/05/26(日) 08:57[JST]

ジョイスティックとはソニー純正のJS-55のことでしょうか(https://www.msx.org/wiki/Sony_JS-55)?確かに両対応と明記されていますね。

http://x1center.org/ さんのI/Oポート解説を見ると、SMC-777はポート2のみMSX上位互換となっているようです。(ポート1は1ボタン)



Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。