2.コントローラとコントロールポート
今回、Dreamcastでは、コントローラをID管理しておりません。代わりに、キーボード(系)であるか、ガン(系)であるか、コントローラ(系)であるかの情報とともに、そのコントローラが、どのキー(orボタン)を有しているかの情報が返されるようになっています。
IDで管理を行わず、キー(orボタン)で管理することで、将来、別種のコントローラ発売の際も、既存のアプリケーションで、動作に必要なボタンさえ実装されていれば動作可能にできるような柔軟な対応を考えています。
以下で、対応したコントローラという場合、アプリケーション動作に必要なキー(orボタン)を有しているコントローラのことを示します。
注:コントローラの最低限の機能として保証されるのは、A・B・スタートのボタンとデジタル十字キーの機能です。標準コントローラにあるX・Yのボタンと、L・Rトリガー、アナログ十字キーは保証されておりません。
注:アプリケーションを標準コントローラにて操作する際に、最低限必要なキー(orボタン)をディスクのIP情報の中に16ビットのデータとして格納します。(ソフトリセットに使用する A,B,X,Y,START も含めてください)
また、キーコンフィグの変更で上記の最低限必要なキーの組み合わせが異なる場合は、初期設定内容を元にしてください。
注:今回、ハードキーボードはコントローラ(系)ではないため、サターンの時のような『標準コントローラのAボタンがキーボードのZのキーにアサインされる』といった仕様はありません。ハードキーボードでの操作は、キー入力に限定されるような形になりますので、それ以外の操作は別に挿したコントローラで行う必要があります。
■必須:未対応コントローラーがコントロールポートに挿さっている場合、ゲームをハングさせてはならない。
従来作成基準では、「スタート」または、操作させてはならないと規定していましたが、今回より、…ハングさえしなければ操作できてしまってもよい…と改訂しました。
上記変更に伴い、全てのアプリケーションの取扱説明書に『対応していないコントローラーでの動作は保証されません』等と表記して下さい
□推奨:未対応コントローラーが操作可能となる場合、不足しているキー(orボタン)を、コントローラにあるボタン、または機能で代用するなどで、なるべく正常動作するようにしてください。
2.1 コントロールポートの使用
アプリケーションごとに該当している◎Aか◎B覧を参照し、対応してください。
◎A:ユーザー1人が、1つのコントローラを使用するアプリケーション。(2.1.1)へ
◎B:ユーザー1人が、複数のコントローラを同時使用するアプリケーション。(2.1.2)へ
(1Pがハンドル+キーボードを使用する場合など)
2.1.1 ユーザー1人が、1つのコントローラを使用するアプリケーション
■必須:本体のポートAを1P、ポートBを2P、以下同様と規定する。ゲームスタート時において、ポートAからポートDでコントローラが挿さっているポートをスタートまたは操作可能としてください。
■必須:対応プレイヤー数を超えるポートについてはそのポートからスタートまたは操作可能としてはならない。
15.2メモリーカード(ビジュアルメモリ)選択で、拡張ソケットを使用する場合は、対応プレイヤー数を超えるポートを使用してもかまいません。
たとえば、1P2Pポートでしか操作できないアプリケーションで、メモリーカードにセーブを行うとき、4Pポートに挿さっているコントローラーの拡張ソケットを選択させ、セーブしても問題ありません。
対応例1。1Pのみまたは2P対戦の可能な格闘ゲーム(3P以上のゲームは不可)において、ポートA、ポートB、ポートDのそれぞれに標準コントローラが挿さっていた場合、ポートA(1Pとして)、ポートB(2Pとして)をスタートまたは操作可能とする。ポートDからはスタートまたは操作は不可とする。
対応例2。4P格闘の場合であれば、対応プレイヤー数を越えるポートはないので(対応プレイヤー数=4、ポート数=4なので)、対応コントローラの挿さっているポートすべてから操作可能とする。
■必須:ゲームスタート時において、ポートAからポートDまでのうち、対応コントローラが挿さっているポートを全て(同時に)使用可能としてください。いずれのポートからでもスタートまたは操作可能としてください。
例:Internet Explorerなどの場合、標準コントローラによる画面操作とキーボードによる文字入力を想定しています。但し、標準コントローラをポートA、キーボードをポートDといったポート固定の規定は設けません。
2.2 コントロールポートのチェック
■必須:電源ON時に対応コントローラが挿さっていなかったポートでも、ゲームスタート前に対応コントローラが挿された場合、きちんと認識されスタートまたは操作可能とならなければならない。
ゲームスタート前のタイトルループで、頻繁にチェックを行ってください。
■必須:途中参加可能なアプリケーションの場合、ゲーム中も頻繁にチェックを行い、ポートに対応コントローラが挿されればそのポートから操作可能にする。
□推奨:対応が非常に困難な場合を除き、アプリケーションのスタート後に、使用していたポートからコントローラーが抜かれた場合は、ポーズをかけた上で、「コントローラーが抜けているかまたはメモリーカードの認識中です」と画面に警告表示をしてください。
対応が非常に困難な場合…とは、12.ポーズでポーズ対応していないアプリケーションや、12.4ポーズの制限でポーズをかけない仕様とした画面、または、技術的・容量的にどうしてもポーズがかけられない、警告文が表示できない場合をさします。
コントローラが抜けた場合だけでなく、メモリーカードをアプリケーションの実行中に挿した場合も、一定時間抜けたのと同じ状態になります。(認識するまで0.5秒程度、ビジュアルメモリの電池が消耗していた場合3秒位)
アプリケーション側では、コントローラが抜けたのか、VMが挿されたのかを判断できないので、ユーザーがコントローラの暴走等と勘違いしないように、上記警告表示を行う時は「コントローラが抜けているかまたはメモリーカードの認識中」と記述してください。なお、これはVM挿入時であって、抜いた場合には上記遅延は発生しません。
2.4 コントローラがポートから抜かれた後に同じポートに挿し直された場合
■必須:それまで使用していたポートからコントローラが抜かれ、対応するコントローラが挿し戻された場合、挿した時点でその入力を再開する。
対応するコントローラであれば、違うコントローラでもかまいません。
コントローラに外部メモリーが挿してあった場合は、外部メモリーについても注意が必要です。15.バックアップを参照してください
2.5 ゲーム中、抜かれた以外のコントロールポートにコントローラが挿し直された場合
■必須:2.1.1ユーザー1人が、1つのコントローラを使用するアプリケーションの場合、入力を再開しない。
□推奨:2.1.2ユーザー1人が、複数のコントローラを同時使用するアプリケーションの場合には、抜かれた以外のポートでも対応するコントローラであれば入力を再開するようにしてください。
各種ペリフェラルに対応する場合、18.各種ペリフェラルの作成基準に従って下さい。