ゲームポートのソースを表示
←
ゲームポート
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[ファイル:DA15 Diagram.svg|thumb|right|DA-15コネクタ]] [[ファイル:Da-15 port.PNG|thumb|right|サウンドカード上の<br />ゲームポート]] [[ファイル:DB 15 gameport.svg|thumb|right]] [[ファイル:Gameport midi cable.jpg|thumb|right|ゲームポート用MIDIケーブル]] '''ゲームポート'''({{Lang-en-short|game port}})は[[x86]]ベースの[[パーソナルコンピュータ]](パソコン)にビデオゲーム用の入力デバイス(ゲームコントローラ)を接続する[[レガシーインターフェース]]である。通常の場合、[[Industry Standard Architecture|ISA]]または[[Peripheral Component Interconnect|PCI]]のI/Oカードや[[サウンドカード]]、いくつかの[[マザーボード]]ではオンボード上に実装している。 == 概要 == ゲームポートは[[D-subminiature|D-sub]]のDA-15コネクタ(DB-15と誤って呼ばれている場合もある)を採用しており、1コネクタにつきアナログ入力、デジタル入力をそれぞれ4系統備えている。当初想定されていた利用方法はアナログ2軸+1トリガボタンの[[ジョイスティック]]を2つ、あるいは[[パドルコントローラ]]を4つ接続するというものであった<ref name=":0">IBM 5150 Technical Reference, 2-117~2-122</ref>。1980年代に日本のパソコンで利用されていたいわゆる[[アタリ仕様ジョイスティック|アタリ仕様のジョイスティック端子]]においては方向入力がデジタル端子によって行っており基本的に「どの方向にスティックが傾いているか」のみを読み取るものであったが<ref>ただし、この仕様が最初に採用された[[Atari 2600]]ではゲームポートと同様のアナログ入力端子も備えられている (国内のパソコンや[[Atari ST]]ではアナログ端子は削除されている)</ref>、ゲームポートにおいてはスティックの傾きの程度も読み取り可能である。 === MIDIポート === ゲームポート (特にサウンドカードに実装されているもの) のコネクタの余剰・重複端子には[[MIDI]]信号も配線されていることが多い(Pin15にMIDI IN、Pin12にMIDI OUT)。これはゲームの[[BGM]]再生にMIDIが用いられた経緯による{{要出典|date=2016年12月}}。 MIDI規格では入出力端子に5ピンDINコネクタが規定されており、また信号を電流値として渡すようになっている。一方ゲームポートは上記のようにDA-15コネクタであり、かつ信号は電圧値として渡すようになっている。そのため、ゲームポートにMIDI機器(MIDIケーブル)を直接接続することはできず、電圧-電流変換回路を備えた<ref>[http://www.cryogenius.com/hardware/sbmidi/ Build a MIDI cable for your Sound Blaster], 2016年12月31日閲覧</ref>変換コネクタや変換ケーブルを必要とする。ゲームコントローラの利用と[[音源モジュール]]によるBGM再生を同時に行うためにはゲームポートとMIDI OUTポートを併用する必要があり、そのような目的のために左記のコネクタ変換を兼ねた分岐ケーブル(オスとメスのDA-15と2つのオスの5ピンDINコネクタを備える)が用意されている。 MIDIポート用のハードウェアとデバイスドライバは、[[ローランド]]のMPU-401 MIDI インタフェース(UARTモードのみ)を基本としており、WindowsやMS-DOS用の多くのMPU-401用アプリケーションをサポートしている<ref>MPU-401は (CPUから見て) シンプルなシリアルポートとして機能するUARTモードと、データ送受信のタイミング制御等をMPU-401側で行うインテリジェンスモードを備えている。DOS用のゲームにはCPUの負担の小さいインテリジェンスモードが利用される場合が多かった。</ref>。MIDIポートの公式な設計は[[MIDI Manufacturers Association|MMA]]がウェブサイト上で公開している[http://www.midi.org/about-midi/electrical.shtml]。 == 歴史 == ゲームポートは初代[[IBM PC]] (model 5150) が登場した時点で純正のオプションカードとして提供されていた<ref name=":0" />。IBM自身が純正のジョイスティックを提供しなかったこともあり<ref>家庭向け製品の[[IBM PCjr|PCjr]]向けに純正のジョイスティックが提供されたが、ゲームポートとは異なる形状のコネクタが用いられた (ソフトウェア的にはゲームポート互換)</ref>普及は進まなかったが、デファクトスタンダードとなったサウンドカードである[[Sound Blaster]]に標準採用されたことにより標準的なジョイスティック端子として幅広く利用されるようになった<ref>[[:en:Game_port|英語版Wikipedia]](2016年12月31日閲覧)より</ref>。以前から[[パラレルポート]]、[[シリアルポート]]、[[PS/2コネクタ]]などをゲームコントローラ用のポートとして使用する試みもあったが、最終的には上記のようにゲームポートに取って代わられることになった。 後にSound Blaster互換の音源がマザーボードに搭載されるようになり、それとともにゲームポートも搭載されるようになった。このようなマザーボードにおいてはMIDIポートやゲームポートの設定 (I/Oアドレス等) をBIOS上で設定が可能になっている。 その後1990年代後半には[[プラグアンドプレイ]]性に優れた[[ユニバーサル・シリアル・バス|USB]]が登場し、標準的なゲームコントローラコネクタとして定着していった。しかし、機器側にインテリジェントなコントローラを必要とせず機器を安価に製造可能であるという利点もあり、ゲームポート接続のアナログジョイスティックやゲームパッドは選択肢の一つだった。 USBが普及した2000年代以降ではゲームポートをマザーボードに内蔵したPCはほとんど見られなくなった。また、サウンドカードからもゲームポートが省略されるようになった<ref>例えばSound Blasterにおいては、2004年に登場したSound Blaster Audigy 4以降のカードにはゲームポートは付属していない。一世代前のAudigy 2においては基板上にゲームポート用のピンヘッダが設けられておりオプションでゲームポートを増設可能である (廉価版のカードの中にはこのピンヘッダが省略されているものもある)</ref>。 また、[[Radio Shack]]のような小売業者はUSB上で古いゲームコントローラを使うためのアダプタを販売していた。 == ゲームポートの詳細 == === 回路 (コントローラ側) === スティック等のアナログ入力は電源 (Vcc、5V) と各アナログ端子 (3、6、11、13ピン) との間に100k[[オーム|Ω]]の[[可変抵抗器|可変抵抗]]を接続することが推奨されている。また、デジタル入力は各端子 (2、7、10、14ピン) とGNDの間にトリガボタン等のスイッチを接続する。 === 回路 (インターフェース側) === デジタル入力に関しては (アタリ仕様のものと同様) 各入力端子を電源電圧でプルアップすることでGNDとの短絡が発生したか (=機器側のスイッチが操作されたか) を検出するようになっている。 一方、アナログ入力に関してはワンショットタイマ回路を用いて可変抵抗の値をパルス生成時間に変換することによって、CPUが可変抵抗の値を間接的に読み取れるようになっている。IBMの純正カードにおいては可変抵抗の値rとパルス生成時間Timeとの間には下記の式が成り立つ<ref name=":0" />。 <math>Time = 24.2 + 0.011r [\mu sec]</math> === データ取得とプログラミング === CPUはゲームポートのデジタル、アナログ各入力端子の状態をI/Oアドレス (典型的にはx201) を介して読み取ることが可能である。より具体的には当該アドレスのBit0~3が各アナログ端子のパルスの状態、Bit4~7が各デジタル入力端子の状態を示している<ref name=":0" />。 アナログ入力端子の抵抗値の値は典型的には下記の手順によって取得される。 # ゲームポートにアサインされたI/Oアドレスに書き込みを行う。これによって可変抵抗の値に応じたパルスの出力が開始される (Bit0~3が0となる) # 周期的にI/Oアドレスを読み取り、Bit0~3の各々が0である状態を何回検出されたかをカウントする # Bit0~3のすべてが1となるか手順1から十分な時間が経過するまで、手順2を繰り返す いわゆるアタリ仕様や[[任天堂]]のジョイスティックのようなデジタル入力のみのインタフェースはプログラマが扱うのが容易であるのに対して、上記のようにゲームポートは入力を読むためにタイミングよく[[割り込み (コンピュータ)|ソフトウェア割り込み]]等でトリガをかける必要がある (例えば、256段階の分解能を得るためには約4.4マイクロ秒間隔でI/Oアドレスに数百回アクセスする必要がある)。このた'''通常の'''デジタル ([[Transistor-transistor logic|TTL]]) ジョイスティックポートを比較すると、ゲームポートは読み出しに著しくCPU時間を消費するものでありパフォーマンス問題を引き起こしうる。 === キャリブレーション === 可変抵抗の値とコントローラの入力状態との関係 (例えばスティックを中位にした時や最大限傾けたときの可変抵抗の値) は定められておらず、また可変抵抗の値とワンショットタイマのパルス出力時間はインターフェースカードの回路構成 (ワンショットタイマ回路を構成する抵抗の大きさ及びキャパシタの容量、及びタイマICの仕様) によって変化しうることから、ゲームポートのアナログ入力を使用するすべての種類のコントローラは[[キャリブレーション]]を必要とする。ゲームポートに接続される機器がジョイスティックである場合は、典型的にはスティックが中位の時と最大限傾けたときのパルス出力時間を計測することによってキャリブレーションは行われる。 [[MS-DOS]]では、ゲームポートを使うゲーム毎に、ゲームプログラム自身でキャリブレーションを行わなければならなかった。このキャリブレーションはゲーム開始時に行われ、いくつかの貧弱なキャリブレーションコードによって、ゲームコントローラを適切に動作させることに失敗することもあり、一部のゲームではゲームコントローラが使用できなくなることもある。 [[Microsoft Windows XP|Windows XP]]等の後世代の[[オペレーティングシステム|OS]]ではゲームソフト自身ではキャリブレーションを行わず、OSのコントロールパネルからキャリブレーションを行うようになっている。 == ゲームポートの機能の拡張 == 本来、4つまでのボタンしかサポートできない仕様上、5つ以上のボタンをもつゲームコントローラでは専用ドライバが必要になる。例えば、hatスイッチと呼ばれる小型の十字ボタンをスティック先端に設けた操縦桿型ジョイスティックがあるが、3つ以上のボタンを有するジョイスティックにhatスイッチを追加する場合は、hatスイッチによる入力方向をアナログ値として出力する、或いはボタン出力の同時押しとして出力する等の手段が用いられた。<ref>"[https://davenunez.wordpress.com/2014/02/22/reading-hat-switches-on-pc-gameport-joysticks/ Reading hat switches on PC gameport joysticks]", 2018年8月12日閲覧</ref> {{仮リンク|Microsoft SideWinder|en|Microsoft SideWinder}}のようなゲームポートを使った[[ハイエンド]]ゲームコントローラは、4つの標準ボタン入力や未使用ピンに独自のデータストリームを[[多重化]]して流すことによって、複数のジョイスティックを[[デイジーチェーン]]接続したり、いくつかの条件下でジョイスティックをプログラミングできたりする一方で、16個や20個など多くのボタンを完全にサポートしている<ref>マイクロソフトを出願人とする米国特許第5,628,686号 "APPARATUS AND METHOD FOR BIDIRECTIONAL DATA COMMUNICATION IN A GAME PORT"には、最大4軸、12ボタンの入力を、4つのボタン入力のうちの3つ (残り1つはクロック) を用いて64ビットのパケットとしてゲームポートに出力する構成が示されている</ref>。また、制御信号をMIDIメッセージとしてPC側から受信して内蔵のモータを駆動させる、フォースフィードバック機能を実現したコントローラも発売されている<ref>"[https://github.com/tloimu/adapt-ffb-joy/blob/wiki/SidewinderFFBMIDI.md Controlling Force Feedback of Microsoft Sidewinder Force Feedback Pro Joystick]"、2018年8月12日閲覧</ref>。 しかし、専用ドライバを必要とするゲームコントローラは、より多くのCPU時間を消費したり、使用できる環境がドライバが対応しているOSやゲームに依存するなどの欠点が挙げられる。 何人かのハードウェアもしくは[[DIY]]愛好家は、電圧や電流測定、単純なインタフェースやデータ取得方法などを組み合わせることにより、ゲームポートに接続する入力デバイスを複数接続し、他のアプリケーションからそれらを扱う方法を発見している。 == IBM PC互換機以外での利用 == NECの[[PC-9800シリーズ]]用のSound Blasterや、NEC純正のPC-9801-118サウンドカードはゲームポートを備えており、ゲームポート対応のDOS用ソフトやWindows上でゲームポート対応のコントローラを使用することができた。 == 脚注 == {{脚注ヘルプ}} {{reflist}} == 関連項目 == * [[レガシーインターフェース]] * [[ゲームパッド]] == 外部リンク == * [http://www.technick.net/public/code/cp_dpage.php?aiocp_dp=pinconjoy_pc_game PC Gameport pinout] * [http://pinouts.ru/Inputs/GameportPC_pinout.shtml Fairly detailed gameport pinouts and specs] * [http://www.epanorama.net/documents/joystick/pc_circuits.html Page with extensive info and a lot of experimental/DIY material on gameports] {{DEFAULTSORT:けえむほおと}} [[Category:インタフェース規格]] [[Category:コネクタ]] [[Category:入力機器]] [[Category:レガシーシステム]]
このページで使用されているテンプレート:
テンプレート:Lang-en-short
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
テンプレート:要出典
(
ソースを閲覧
)
ゲームポート
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報