(57)【特許請求の範囲】
【請求項１】
有線または無線にて接続されている接続コントローラの各々に対して、当該接続コントローラを識別するために用いる固有の内部識別子を割り当てる割り当て手段と、
前記接続コントローラの各々に割り当てられた内部識別子を表示する内部識別子表示手段と、
前記接続コントローラの各々のうち、ユーザによって所定要求操作が行われた接続コントローラの一つを選択的に注目コントローラとし、当該注目コントローラに対するユーザによる内部識別子の割り当て変更指示を受け入れる変更受け入れ手段と、
前記受け入れた割り当て変更指示に応じて、前記注目コントローラに対して前記割り当て手段により割り当て済みの内部識別子を新たな内部識別子に変更する割り当て変更手段と、を備え、
前記接続コントローラの各々に割り当てた内部識別子が、当該接続コントローラを通じた操作の受け入れの処理に供される
ことを特徴とする装置。
【請求項２】
請求項１に記載の装置において、
前記注目コントローラに対して、前記所定要求操作によって注目コントローラとして選択された旨を報知することを特徴とする装置。
【請求項３】
請求項１又は２に記載の装置において、
前記割り当て変更手段は、前記注目コントローラに対する内部識別子を新たな内部識別子で上書きする際に、当該新たな内部識別子に対応する他のコントローラが存在する場合、当該他のコントローラに対する内部識別子を、いずれのコントローラにも対応づけられていない内部識別子で上書きする
ことを特徴とする装置。
【請求項４】
請求項１又は２に記載の装置において、
前記割り当て変更手段は、前記注目コントローラに対する内部識別子を新たな内部識別子で上書きする際に、当該新たな内部識別子に対応する他のコントローラが存在する場合、当該他のコントローラに対して内部識別子を割り当てない
ことを特徴とする装置。
【請求項５】
請求項１又は２に記載の装置において、
前記変更受け入れ手段は、前記受け入れた変更後の内部識別子を既に割り当て済みの接続コントローラが存在する場合、当該割り当て済みの接続コントローラに対して割り当てが変更される可能性があることを報知させる
ことを特徴とする装置。
【請求項６】
請求項１から５のいずれか一項に記載の装置において、
前記変更受け入れ手段は、前記注目コントローラに対する内部識別子の割り当て変更を指示する操作を、前記注目コントローラから選択的に受け入れる
ことを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントローラから操作を受け入れる装置に関する。
【背景技術】
【０００２】
近年では、プロセッサなどコンピュータ資源の高性能化により、旧来の情報処理装置（ターゲット）の動作を模して、旧来の情報処理装置にて実行可能であったプログラムなどを利用できるようにする技術（エミュレーション技術）が広く利用されるようになっている。
【０００３】
エミュレーション装置は、例えば特許文献１等に開示がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１９０３１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
こうしたエミュレーション装置では、エミュレーション装置が備えている入力デバイス（コントローラ）と、エミュレーションのターゲットとなる情報処理装置の入力デバイスとに相違があるのが一般的である。
【０００６】
また、ターゲットとなる情報処理装置のうちには、例えばコントローラを接続するコネクタに複数のコントローラの接続を可能とするための分岐装置を接続すると、一つのコネクタを介して複数のコントローラを接続できるようになるものもある。このような装置においては、当該分岐装置の特定の端子に接続されるコントローラでなければ、特定の操作の入力を受け付けないプログラムが開発されている場合もある。
【０００７】
本発明は上記実情に鑑みて為されたもので、かかる分岐装置のように、コントローラ接続ポートを複数のコントローラ接続ポートに拡張する拡張機器が接続可能な装置をターゲットとすることのできるエミュレーション装置を提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００８】
上記従来例の問題点を解決するための本発明は、複数のコントローラが接続可能な、少なくとも一つのコントローラ接続ポートを備え、前記コントローラ接続ポートを複数のコントローラ接続ポートに拡張する拡張機器が接続可能な装置をターゲットとして、当該ターゲットとなった装置の動作をエミュレートするエミュレーション装置であって、有線または無線にて接続されるコントローラの各々に対して、前記ターゲットとなった装置が備えるコントローラ接続ポート、または当該装置に接続される拡張機器のコントローラ接続ポートのいずれに接続されているものとするかを規定するポート識別情報を割り当て、前記割り当てたポート識別情報が、前記コントローラを通じた操作の受け入れの処理に供されることとしたものである。
【０００９】
ここで、前記コントローラの各々に割り当てられたポート識別情報を表示する手段と、注目コントローラに対するポート識別情報の割り当て変更を受け入れる手段と、前記受け入れた割り当て変更に応じて、注目コントローラに対するポート識別情報の割り当てを変更する手段と、を備えてもよい。
【００１０】
この場合に、前記有線または無線にて接続されるコントローラの各々のうち、所定要求操作が行われたコントローラの一つを選択的に注目コントローラとし、当該注目コントローラに対して選択された旨を報知することとしてもよい。
【００１１】
また、前記ターゲットとなり得る装置ごとに予め割り当て可能なポート識別情報を記録したテーブル情報を保持し、前記ポート識別情報を割り当てる際に、ターゲットとなった装置に対応する前記テーブル情報を選択的に利用して、ポート識別情報を割り当てることとしてもよい。
【００１２】
さらに、指示により、前記テーブル情報を保持する手段を備え、当該保持されたテーブル情報が、後のエミュレーション処理に供されるようにしてもよい。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態に係るエミュレーション装置の構成ブロック図である。
【図２】本発明の実施の形態に係るエミュレーション装置に接続されるコントローラの一例の外観図である。
【図３】本発明の実施の形態に係るエミュレーション装置の機能ブロック図である。
【図４】本発明の実施の形態に係るエミュレーション装置が保持するアサインテーブルの例を表す説明図である。
【図５】本発明の実施の形態に係るエミュレーション装置が表示するインタフェース画面の例を表す説明図である。
【発明を実施するための形態】
【００１４】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係るエミュレーション装置は、図１に示すように、制御ユニット１１と、記憶部１２と、インタフェースユニット１３と、表示制御部１４と、コントローラインタフェース部１５と、音声出力部１６と、ディスクドライブ１７とを含んで構成され、少なくとも一つのコントローラ２に、有線または無線にて接続される。
【００１５】
制御ユニット１１は、少なくとも一つのプロセッサを含む。この制御ユニット１１のプロセッサは、記憶部１２や、ディスクドライブ１７にセットされたディスクに格納されているプログラムに従って動作する。本実施の形態においては、制御ユニット１１に含まれる少なくとも一つのプロセッサが、他の情報処理装置の動作を模擬する、エミュレーションの処理を実行する。このエミュレーションの処理については後に述べる。
【００１６】
記憶部１２は、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）等の記憶素子を含んで構成される。また、この記憶部１２は、ハードディスク等の磁気的または光学的に情報を記憶する記録媒体及びドライブを含んでもよい。この記憶部１２には、制御ユニット１１のプロセッサが実行するプログラムが格納される。また記憶部１２は、プロセッサのワークメモリとしても動作する。
【００１７】
インタフェースユニット１３は、制御ユニット１１と、コントローラインタフェース部１５と、音声出力部１６と、ディスクドライブ１７とに接続されている。このインタフェースユニット１３は、制御ユニット１１のプロセッサが出力する指示やデータを、その宛先としてプロセッサが指定した、コントローラインタフェース部１５、音声出力部１６、またはディスクドライブ１７に出力する。また、このインタフェースユニット１３は、コントローラインタフェース部１５や、音声出力部１６、ディスクドライブ１７から入力されるデータ等を制御ユニット１１に出力する。
【００１８】
表示制御部１４は、制御ユニット１１に接続されており、制御ユニット１１から入力される指示に従って、描画処理を実行する。また、この表示制御部１４は、描画処理の結果、得られた画像の情報を、ディスプレイや家庭用テレビジョン等に出力する。
【００１９】
コントローラインタフェース部１５は、少なくとも一つの有線ポート１５ａと、無線ポート１５ｂとを含んで構成されている。この有線ポート１５ａには、少なくとも一つのコントローラ２が有線にて接続される。また、有線ポート１５ａは、接続されたコントローラ２にて行われた操作の内容を表す情報、及び当該コントローラ２に固有に割り当てられているコントローラ識別子を制御ユニット１１のプロセッサへ出力する。さらに有線ポート１５ａは、制御ユニット１１のプロセッサから入力される指示に従い、コントローラ識別子と当該コントローラ識別子で識別されるコントローラ２への情報とを、接続されているコントローラ２へ送出する。
【００２０】
無線ポート１５ｂは、コントローラ２と無線にて通信する。この無線ポート１５ｂは、通信先となったコントローラ２の各々にて行われた操作の内容を表す情報、及び当該操作が行われたコントローラ２に固有に割り当てられているコントローラ識別子を制御ユニット１１のプロセッサへ出力する。さらに無線ポート１５ｂは、制御ユニット１１のプロセッサから入力される指示に従い、コントローラ識別子と当該コントローラ識別子で識別されるコントローラ２への情報とを、通信先のコントローラ２へ送出する。
【００２１】
音声出力部１６は、指定された波形の音源を鳴動するサウンドプロセッサなどであり、制御ユニット１１のプロセッサからの指示に従って、指示された音声を鳴動する。ディスクドライブ１７は、ブルーレイ（登録商標）ディスクや、ＤＶＤディスクなどからデータを読み出し、制御ユニット１１のプロセッサに出力する。
【００２２】
コントローラ２は、ここでは例えばゲーム用のコントローラであり、ユーザの操作を受け入れて、当該操作の内容をエミュレーション装置に送信する。このコントローラ２は、図２に示すように、把持部２０Ｒ，２０Ｌを有している。ユーザは、これら把持部２０をそれぞれ左右の手で把持することになる。ユーザが把持部２０を把持した状態で、左右の手の親指にて操作可能な位置には、第１，第２の操作部２１，２２と、アナログ操作部２３Ｒ，２３Ｌとがそれぞれ設けられている。また、このコントローラ２には、所定の機能が割り当てられる機能ボタン２４と、識別子表示器２５とが設けられている。
【００２３】
コントローラ２は、図示しない記憶部を備え、この記憶部に、予め設定されている、固有なコントローラ識別子を格納している。コントローラ２は、第１、第２の操作部２１，２２や、アナログ操作部２３Ｒ，２３Ｌ、さらには機能ボタン２４の操作などが行われると、有線または無線にて接続されたエミュレーション装置に対して、記憶部に格納されているコントローラ識別子と、操作の内容を表す情報とを送出する。また、このコントローラ２は、エミュレーション装置から、自己宛の情報（自己のコントローラ識別子を宛先として含む情報）を受信する。
【００２４】
なお、本実施の形態では、エミュレーション装置側でこのコントローラ識別子ごとに固有の内部識別子を割り当てて、各コントローラ２を識別する。このためコントローラ２は、エミュレーション装置との通信が可能となると、コントローラ識別子をエミュレーション装置へ送信し、エミュレーション装置側で内部識別子の割り当て（当初アサイン）を行わせる。
【００２５】
エミュレーション装置側では、コントローラ２に対する固有の内部識別子として、例えば所定の順で、連番を割り当ててもよい。ここで所定の順は、例えばコントローラ２とエミュレーション装置との間の通信が行われた順序としてもよいし、所定の操作（例えば機能ボタン２４の押下操作）が行われた順序としてもよい。エミュレーション装置は、各コントローラ２に対してコントローラ識別子と、割り当てた内部識別子とを送出する。
【００２６】
そして、コントローラ２は、当該割り当てられた内部識別子を受信して、識別子表示器２５を用いて、当該内部識別子に対応する情報を表示する。ここで識別子表示器２５は、例えば複数個のＬＥＤ（発光ダイオード）で構わない。そしてコントローラ２側では、この複数個のＬＥＤのどれを点灯させ、どれを消灯させるかによって内部識別子を表すこととすればよい。
【００２７】
また、ここで機能ボタン２４は、光線を透過する、半透明ないし透明なカバーと、当該カバーによって覆われる内部にＬＥＤなどの発光体とを備えて、当該発光体の発光態様（消灯、点滅、点灯、点灯色などの態様）を、エミュレーション装置からの指示に従って変更できるようにしておいてもよい。
【００２８】
本実施の形態のエミュレーション装置は、例えば、家庭用ゲーム機をエミュレーションのターゲットとして、ディスクドライブ１７にセットされた、ターゲット用のゲームソフトウエアを読み出して、当該ゲームソフトウエアに対応した処理を実行する。
【００２９】
本実施の形態のエミュレーション装置は、このターゲットとしての処理が開始されると、ターゲットのコントローラ接続ポートに応じて、各コントローラ２に割り当てた内部識別子を更新する。
【００３０】
例えば、本実施の形態のエミュレーション装置がターゲットの一つとする家庭用ゲーム機では、少なくとも一つのコントローラ接続ポートを備えており、各コントローラ接続ポートには、通常、一つのコントローラが接続される。また、このコントローラ接続ポートに、一つのコントローラ接続ポートを複数のコントローラ接続ポートに拡張する拡張機器（分岐装置）を接続すると、この分岐装置を介して複数のコントローラが接続できるようになる。ターゲットとなる家庭用ゲーム機では、各コントローラ接続ポートに接続されたコントローラを、家庭用ゲーム機側に備えられているコントローラ接続ポートに割り振られた番号（１，２…）を識別子として識別し、また、拡張機器を介して接続されているコントローラについては、当該分岐装置が接続されているコントローラ接続ポートの番号（１，２…）と、コントローラが接続されている、分岐装置のコントローラ接続ポートの識別符号（Ａ，Ｂ，Ｃ，…）とを用い、「１Ａ」、「２Ａ」…というような識別子（ポート識別情報）を割り当てて識別する。
【００３１】
さらに、本実施の形態のエミュレーション装置はまた、別の家庭用ゲーム機等をターゲットとしてもよい。一般にコントローラ接続ポートの数や、分岐装置の接続可能性などは、ターゲットとなる家庭用ゲーム機等ごとに異なるので、ターゲットごとに割り当てる識別子（ポート識別符号）を異ならせてもよい。
【００３２】
このようにコントローラ２に対して割り当てる内部識別子を変更したときには、エミュレーション装置は、当該変更後の内部識別子を、各コントローラ２へ送信してもよい。この場合コントローラ２は、変更後の内部識別子の通知を受けて、識別子表示器２５での識別子の表示を更新する。
【００３３】
例えば、当初アサインにおいて、内部識別子「１」が割り当てられていたコントローラ２では、識別子表示器２５が「１」が割り当てられていることを表す表示を行っている。しかしターゲットのエミュレーションの処理が開始され、割り当てが変更がされて、当該コントローラ２に内部識別子「２」が割り当てられることとなると、識別子表示器２５が「２」が割り当てられていることを表す表示となってもよい。
【００３４】
本実施の形態のエミュレーション装置は、入力デバイスたるコントローラに関係して行われる、制御ユニット１１のプロセッサのソフトウエア的な処理により、図３に示すように、有線または無線にて接続されたコントローラ２とのデータの送受を制御するドライバ部３１と、コントローラ入力受入部３２と、エミュレーション実行部３３と、表示処理部３４と、アサイン切替部３５とを含んで構成される。
【００３５】
ドライバ部３１は、有線または無線で接続されたコントローラ２から、コントローラ識別子と、当該コントローラ２における操作の内容を表す情報とを受信すると、これらの情報をコントローラ入力受入部３２に出力する。またドライバ部３１は、コントローラ２において、機能ボタン２４が押下されると、予め定められた処理を開始する。ここでは、機能ボタン２４が押下されたときには、当該操作が行われたコントローラ２のコントローラ識別子とともに、その旨を表す信号をアサイン切替部３５に出力し、その後、復帰の指示がされるまでは、コントローラ２にて行われた操作を表す情報を、コントローラ入力受入部３２に代えてアサイン切替部３５に出力する。復帰の指示がされたときには、ドライバ部３１はまた、コントローラ識別子と、当該コントローラ２における操作の内容を表す情報とを受信したときに、これらの情報をコントローラ入力受入部３２に出力するようになる。
【００３６】
コントローラ入力受入部３２は、ターゲットとなる家庭用ゲーム機に対応した内部識別子を予め記録しているアサインテーブルを読み出す。このアサインテーブルは、各ターゲットに対応する内部識別子に対して、コントローラ識別子を関連づけるテーブルであるが、当初は、各内部識別子に対応するコントローラ識別子は空欄（何も設定されていない状態）となっている。
【００３７】
コントローラ入力受入部３２は、ドライバ部３１を介してデータの送受が可能となっているコントローラ２の各々に対して、内部識別子を割り当てると、対応するコントローラ２のコントローラ識別子と、内部識別子とを関連づけてアサインテーブルに記録し、記憶部１２に格納する（図４）。
【００３８】
既に述べたように、一般にコントローラ接続ポートの数や、分岐装置の接続可能性などは、ターゲットとなる家庭用ゲーム機等ごとに異なるので、このアサインテーブルは、ターゲットとなり得る家庭用ゲーム機ごとの内部識別子を列挙して記録したテーブルとして予め、記憶部１２に格納される。コントローラ入力受入部３２は、実行の指示がされたターゲットに対応するアサインテーブルを読み出して、ドライバ部３１を介してデータの送受が可能となっているコントローラ２の各々に対して、内部識別子を割り当て、対応するコントローラ２のコントローラ識別子と、内部識別子とを関連づけて、当該読み出したアサインテーブルの内容を更新する。
【００３９】
ここで内部識別子は、ターゲットとなる家庭用ゲーム機におけるポート識別子と同様でよく、処理開始後、通信が行われた順、または機能ボタン２４が押下された順に、所定の順序、例えば（分岐装置にＡからＤの４つのコントローラ接続ポートが備えられているものとして）１Ａ，１Ｂ，１Ｃ，１Ｄ，２Ａ…というように内部識別子を発行して割り当てればよい。
【００４０】
また、このコントローラ入力受入部３２は、ドライバ部３１がコントローラ２から受け入れた、コントローラ識別子と操作の内容を表す情報との入力を受けて、このコントローラ識別子に対応する内部識別子を記憶部１２のアサインテーブルから読み出し、当該読み出した内部識別子と、入力された操作の内容を表す情報とをエミュレーション実行部３３に出力する。
【００４１】
さらにコントローラ入力受入部３２は、アサイン切替部３５からアサイン切替の処理に伴う画面表示を行うべき旨の指示を受けて、当該指示された画像を、後に説明するエミュレーション実行部３３が出力する画像（ゲームの画像）に半透明合成（背景となるゲームの画像の明度を低下させ、そのゲーム画像に対して、指示された画像のうち有意な画素に係る部分を上書きして描画することで、背景となるゲーム画像が視認可能な状態で、操作用の画像を描画する合成方式）する。
【００４２】
コントローラ入力受入部３２は、さらに、アサイン切替部３５から、コントローラ識別子と、内部識別子との入力を受けて、当該入力されたコントローラ識別子に対応してアサインテーブルに格納している内部識別子を、入力された内部識別子で上書きする。このとき、当該入力された内部識別子に対応している他のコントローラ識別子がアサインテーブル上にある場合は、当該他のコントローラ識別子に対応する内部識別子を、空いている（他に対応づけられていない）内部識別子で上書きしてもよい。また、空いている内部識別子を割り当てる代わりに、内部識別子を割り当てないこととしてもよい。内部識別子を割り当てない場合、当該他のコントローラ２における操作の内容を表す情報は、エミュレーション実行部３３へ出力しないように制御してもよい。
【００４３】
エミュレーション実行部３３は、コントローラ入力受入部３２から、コントローラの操作として、内部識別子と、操作の内容を表す情報との入力を受けて、当該内部識別子によって識別されるコントローラ接続ポートに仮想的に接続されているコントローラからの操作として、当該操作の内容を表す情報を受け入れ、ゲームなどの処理を実行する。
【００４４】
表示処理部３４は、エミュレーション実行部３３から入力される描画指示を、表示制御部１４に出力して、ディスプレイなどへの表示を行わせる。
【００４５】
アサイン切替部３５は、ドライバ部３１から、コントローラ識別子とともに、当該コントローラ識別子で識別されるコントローラ２において機能ボタン２４が押下された旨の信号の入力を受けると、当該入力されたコントローラ識別子によって識別されるコントローラ２を注目コントローラとして、以下の処理を実行する。
【００４６】
まず、アサイン切替部３５は、図５に示すような「コントローラ割り当て」のインタフェース画面を描画する指示をコントローラ入力受入部３２に出力し、このインタフェース画面をエミュレーション実行部３３が出力する描画指示による画像に半透明合成させる。このインタフェース画面では、注目コントローラ２を識別する情報（Ａ）とともに、現在関連づけられている内部識別子をコントローラ入力受入部３２から取得して表示する（Ｂ）。
【００４７】
アサイン切替部３５は、ドライバ部３１から入力される、コントローラ２にて行われた操作を表す情報のうち、注目コントローラ２のコントローラ識別子とともに入力される情報を選択的に受け入れる。
【００４８】
アサイン切替部３５は、注目コントローラ２にて例えば上下方向を選択する操作が行われると、図５に示すインタフェース画面で、注目コントローラ２を割り当てる内部識別子を当該操作に応じて変更する（Ｃ）。そして注目コントローラ２にて「決定」を表すボタン操作がされると、当該「決定」のボタン操作が行われた時点で選択されていた内部識別子を、注目コントローラ２のコントローラ識別子に関連づけて記憶するよう、コントローラ入力受入部３２に指示し、また、ドライバ部３１に対して復帰の指示を行う。
【００４９】
なお、アサイン切替部３５は、この間に注目コントローラ２以外のコントローラ２から入力された、コントローラ識別子と、操作を表す情報とについては、そのままコントローラ入力受入部３２に出力することとしてもよい。この場合、他のコントローラ２を利用しているプレイヤは、半透明合成された画面を通じて、ゲームを続行できるようになる。
【００５０】
ここまでの説明では、コントローラ２に対する内部識別子の割り当て変更のインタフェース画面は、アサイン切替部３５からではなく、エミュレーションの実行に関係するコントローラ入力受入部３２から間接的に表示処理部３４に出力されるようにしていたが、本実施の形態はこれに限られず、アサイン切替部３５から直接的に当該インタフェース画面の描画指示を表示処理部３４に出力して、エミュレーション処理部３３が出力する描画指示による画像に半透明合成させてもよい。
【００５１】
またアサイン切替部３５に代えて、メニュー表示を行う機能を実行し、エミュレーション実行部３３が出力する描画指示による画像に、予め定めたメニュー画面を表示してもよい。このメニュー画面には、注目コントローラ２を識別する情報を表示してもよい。具体的な例としてこのメニュー画面では、ゲームの処理を終了させるメニュー項目などと並んで、アサイン切替部３５としての処理を開始するためのメニュー項目を表示し、注目コントローラ２にて、アサイン切替部３５としての処理を開始するためのメニュー項目が選択されたときに、アサイン切替部３５の機能を実行してもよい。
【００５２】
本実施の形態によると、エミュレーション装置において、ターゲットとなった家庭用ゲーム機でのゲームが実行される際に、予め所定の順に、ターゲットとなった家庭用ゲーム機で識別可能な情報（内部識別子）が各コントローラ２に割り当てられる。
【００５３】
既に述べたように、所定の順は、例えばコントローラ２とエミュレーション装置との間の通信が行われた順序としてもよいし、所定の操作（例えば機能ボタン２４の押下操作）が行われた順序としてもよい。  
【００５４】
プレイヤの一人が、ターゲットである家庭用ゲーム機用のゲームの実行中に、使用しているコントローラ２の機能ボタン２４を押下すると、ゲーム画面にアサイン切替のインタフェースがスーパーインポーズされる。このとき、当該機能ボタン２４が押下されたコントローラ２を識別する情報が表示され、プレイヤは、誰が内部識別子を変更しようとしているのかを認識できる。
【００５５】
プレイヤが内部識別子の変更を完了する操作を行うと、以後は、当該プレイヤの使用するコントローラ２が、変更された内部識別子で識別されたコントローラとして、ゲームソフトウエア側に認識されるようになる。
【００５６】
これにより、例えば分岐装置の特定の端子に接続されるコントローラでなければ、特定の操作の入力を受け付けないプログラムを実行している場面であっても、プレイヤは、当該特定の端子に接続されているコントローラによるものと、コントローラ２での操作を認識させることができるようになる。
【００５７】
このことで、本実施の形態では、分岐装置のように、コントローラ接続ポートを複数のコントローラ接続ポートに拡張する拡張機器が接続可能な装置をターゲットとすることができる。
【００５８】
なお、機能ボタン２４が発光素子を含んで、エミュレーション装置からの指示に従い、その発光態様を変更できるようにしている場合は、アサイン切替部３５は、ドライバ部３１から内部識別子のアサインの切替を要求する操作（機能ボタン２４を押下する操作など）があった旨が入力されたときに、アサイン切替を受け入れた旨を、当該操作が行われた、注目コントローラ２へ報知するよう指示してもよい。
【００５９】
この場合、ドライバ部３１は、指示に従い、注目コントローラ２のコントローラ識別子とともに、機能ボタン２４の発光態様を、他のコントローラ２の機能ボタン２４の発光態様と異ならせる（例えば点滅させる、色を変更するなど）指示を出力する。また、注目コントローラ２とは異なる他のコントローラ２の機能ボタン２４の発光態様を、注目コントローラ２とは異なる態様とする（消灯など）指示を出力してもよい。
【００６０】
このようにすると、注目コントローラ２となったコントローラ２を使用するプレイヤが、自己の行った、内部識別子のアサイン変更要求が受け入れられたことが容易に理解できるようになる。
【００６１】
さらに、本実施の形態のエミュレーション装置は、ターゲットとなる装置でのプログラムの実行が指示されたときに、当該実行するべきプログラムが、分岐装置に対応していないプログラムであるか否かを判断し、分岐装置に対応していないプログラムであれば、アサインテーブルにおける内部識別子を変更してもよい。また、この場合に、分岐装置が接続可能なターゲットについては、ターゲットに対応するアサインテーブルとして、分岐装置が接続されている際に利用されるアサインテーブル（分岐装置に対応する内部識別子が設定されているもの）と、分岐装置が接続されていない場合に利用されるアサインテーブル（分岐装置を含まない内部識別子が設定されているもの）とを予め保持しておき、実行するプログラムに応じて、いずれかを選択的に読み出して利用することとしてもよい。
【００６２】
具体的な例として、分岐装置に対応しているプログラムの一覧を記憶部１２に予め保持しておき、実行の対象となったプログラムが、当該一覧に含まれるプログラムであるか否かを判断することなどにより、分岐装置に対応していないプログラムであるか否かを判断すればよい。
【００６３】
またここまでの説明では、各コントローラ２への内部識別子の割り当て順は、予め定められているものとしたが、ターゲットとなる装置で実行されるべきプログラムの少なくとも一部について、各プログラムに対応づけて、プリセットとして割り当て順を記憶部１２に格納しておき、このプリセットが対応づけられているプログラムの実行時には、このプリセットで表される割り当て順で、各コントローラ２への内部識別子を割り当ててもよい。
【００６４】
さらに、プログラム別にプリセットを割り当てる代わりに、プリセット候補として、コントローラ識別子と、内部識別子とを関連づけたテーブルを複数、記憶部１２に格納しておき、当該プリセット候補の一つが選択されたときには、アサインテーブルを、当該選択されたテーブルで上書きすることとしてもよい。
【００６５】
また、プレイヤの操作により、アサインテーブルを変更した場合は、プレイヤからさらに当該アサインテーブルを保存する旨の指示を受けて、アサインテーブルを、登録テーブルとして記憶部１２に保持してもよい。この記憶部１２に保持した登録テーブルは、デフォルトのアサインテーブルとして利用されるか、またはプレイヤの操作などによって呼び出されて、アサインテーブルとして利用されてもよい。
【００６６】
さらにこのとき、保存指示があったときに接続されていたコントローラ２の数と、呼び出しが行われたときに接続されているコントローラ２の数とが異なる場合があることに配慮して、登録テーブルに対して、保存の指示があったときに接続されていたコントローラ２の数を表す情報を、利用条件として関連づけて保持してもよい。
【００６７】
そして、この登録テーブルを、デフォルトのアサインテーブルとして利用するときには、登録テーブルを呼び出す時点で、接続されているコントローラ２の数をカウントし、このカウントの結果が、登録テーブルに関連づけて保持されている利用条件に含まれるコントローラ２の数に合致するか否かを調べる。ここでカウントした数と、利用条件に含まれる数とが合致していれば、当該登録テーブルをアサインテーブルに上書きして用いる。
【００６８】
プレイヤの操作によって呼び出される場合も同様に、呼び出しの操作が行われたときに、接続されているコントローラ２の数をカウントし、このカウントの結果が、登録テーブルに関連づけて保持されている利用条件に含まれるコントローラ２の数に合致するか否かを調べる。そしてカウントした数と、利用条件に含まれる数とが合致していれば、当該登録テーブルをアサインテーブルに上書きして用いることとすればよい。
【００６９】
さらに、この登録テーブルは、プログラムごとに保存されてもよい。すなわち、保存の操作が行われたとき、その時点で実行されているプログラムを特定する情報（例えばプログラム名や、プログラムごとに割り当てられた識別符号など）に関連づけて、アサインテーブルを登録テーブルとして、記憶部１２に保持してもよい。この場合、エミュレーション装置は、次回以降にターゲットとなる装置用のプログラムの実行を開始する際に、当該プログラムを特定する情報に関連づけられた登録テーブルが記憶部１２に保持されているか否かを調べ、保持されていれば、当該登録テーブルを呼び出して、アサインテーブルに上書きして用いる。
【００７０】
またこの場合も、登録テーブルに、プログラムを特定する情報だけでなく、保存の指示があったときに接続されていたコントローラ２の数など、利用条件の情報が関連づけられていれば、登録テーブルを呼び出す際に、当該利用条件が満足されているか（例えば、登録テーブルを呼び出す時点で、接続されているコントローラ２の数をカウントし、このカウントの結果が、登録テーブルに関連づけて保持されている利用条件に含まれるコントローラ２の数に合致するか）を調べ、利用条件が満足されているときに、当該登録テーブルをアサインテーブルに上書きし、アサインテーブルとして用いることとしてもよい。
【００７１】
なお、登録テーブルの利用条件は、ここで述べたようなコントローラ２の数だけでなく、コントローラ２の種別や、種別ごとの数、コントローラ２の機能、プレイヤの数、その他の情報であってもよい。このようにプレイヤが設定したアサインテーブルを後の利用に供することを可能としたことで、利便性を向上できる。また、アサインテーブルの設定時の条件を併せて記録することで、後の利用の際での利用条件の相違に配慮した処理を行うことを可能としている。
【００７２】
さらに、アサイン切替のインタフェースでは、アサインテーブルにおいて内部識別子が割り当てられていないコントローラ識別子（未アサインコントローラ）があれば、当該未アサインコントローラのコントローラ識別子の一覧を併せて表示してもよい。
【００７３】
さらに、本実施の形態のエミュレーション装置は、アサイン切替の操作が行われている間、注目コントローラ２からの操作によって選択された内部識別子に、その時点でアサインテーブル上で対応づけられているコントローラ２があれば、当該コントローラ２の機能ボタン２４の発光態様を所定の態様（例えば赤色に点滅させるなど）とするよう指示してもよい。これにより、当該コントローラ２を使用しているプレイヤが意図していないのに、割り当てが変更される可能性があることを当該プレイヤに報知できる。
【符号の説明】
【００７４】
２  コントローラ、１１  制御ユニット、１２  記憶部、１３  インタフェースユニット、１４  表示制御部、１５  コントローラインタフェース部、１６  音声出力部、１７  ディスクドライブ、２０  把持部、２１  第１の操作部、２２  第２の操作部、２３  アナログ操作部、２４  機能ボタン、２５  識別子表示器、３１  ドライバ部、３２  コントローラ入力受入部、３３  エミュレーション実行部、３４  表示処理部、３５  アサイン切替部。
【図１】
0005368544.tif 000002
【図２】
0005368544.tif 000003
【図３】
0005368544.tif 000004
【図４】
0005368544.tif 000005
【図５】
0005368544.tif 000006