(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムに含まれる命令を実行する命令実行手段と、
第２の通信方式により送受信する通信手段と、
前記アプリケーションプログラム内の命令であって前記第２の通信方式と異なる第１の通信方式による通信を開始することを示す命令が前記命令実行手段により実行された場合に、前記通信手段が前記第２の通信方式で受信する他の通信手段と接続するよう制御する接続制御手段と、
前記通信手段で受信され、かつ予め定められた単位期間において前記第１の通信方式により送信される信号を示す信号データを取得し、当該信号データが示す信号を前記命令実行手段に処理させる受信エミュレート手段と、
を含むことを特徴とする情報処理装置。
【請求項２】
前記接続制御手段は、前記アプリケーションプログラム内の命令であって第１の通信方式による通信を開始することを示す命令が前記命令実行手段により実行された場合に、接続先となる情報処理装置の候補を提示し、前記提示された候補のうちユーザにより選択された情報処理装置を接続先として決定し、前記通信手段が前記決定された情報処理装置に含まれる通信手段と接続するよう制御する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記信号データは前記単位期間における時間に応じた信号の状態を示すデータであり、
前記命令実行手段は、エミュレーションにより前記アプリケーションプログラムに含まれる命令を実行し、
前記受信エミュレート手段は、前記エミュレーションの対象における内部的な時間に応じた信号であって当該信号データが示す信号を前記命令実行手段に処理させる、
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記受信エミュレート手段は、前記信号データから前記内部的な時間における前記第１の通信方式の信号の状態を取得し、前記取得された状態に応じて受信レジスタに値を設定し、
前記命令実行手段は、前記アプリケーションプログラム内の命令に応じて、前記受信レジスタに設定された値を取得し受信データを復調する、
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記受信エミュレート手段は、前記単位期間に続く単位期間における前記第１の通信方式による信号を示す次の信号データが送信されかつ前記次の信号データを受信しない場合には、前記次の信号データを受信するまで前記命令実行手段が命令を実行することを停止する、
ことを特徴とする請求項１から４のいずれかに記載の情報処理装置。
【請求項６】
前記受信エミュレート手段は、前記取得された信号データが、前記命令実行手段が受信を開始することを示す命令を実行する前に前記第１の通信方式による信号が存在することを示す場合に、前記命令実行手段が当該信号データが示す信号を処理しないよう制御する、
ことを特徴とする請求項１から５のいずれかに記載の情報処理装置。
【請求項７】
前記受信エミュレート手段は、前記命令実行手段が受信を開始することを示す命令を実行する前に前記第１の通信方式による信号を示す前記信号データを受信し、かつ前記信号データが受信されたタイミングと前記受信を開始することを示す命令が実行されるタイミングとの差が所与の範囲内の場合に、前記命令実行手段が前記受信を開始することを示す命令を実行した後に前記命令実行手段が当該信号データが示す信号を処理するよう制御する、
ことを特徴とする請求項１から６のいずれかに記載の情報処理装置。
【請求項８】
前記受信エミュレート手段は、前記命令実行手段が受信を開始することを示す命令を実行してから前記信号データが受信されるまでは、前記命令実行手段が命令を実行することを停止する、
ことを特徴とする請求項１から７のいずれかに記載の情報処理装置。
【請求項９】
アプリケーションプログラムに含まれる命令を実行する命令実行手段と、
第２の通信方式により送受信する通信手段と、
前記アプリケーションプログラム内の命令であって、前記第２の通信方式と異なる第１の通信方式による通信を開始することを示す命令が前記命令実行手段により実行された場合に、前記通信手段が前記第２の通信方式で受信する他の通信手段と接続するよう制御する接続制御手段と、
予め定められた単位期間において前記第１の通信方式により送信される信号を示す信号データを生成し、当該信号データを受信する通信手段に向けて送信する送信エミュレート手段、
をさらに含むことを特徴とする情報処理装置。
【請求項１０】
前記命令実行手段は、エミュレーションにより前記アプリケーションプログラムに含まれる命令を実行し、
前記送信エミュレート手段は、前記単位期間において、前記エミュレートの対象における内部的な時間と当該時間における信号の状態とを関連づける信号データを生成する、
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記送信エミュレート手段は、前記単位期間に続く単位期間において前記第１の通信方式による信号が送信されるか否かを示す情報を含む信号データを生成する、
ことを特徴とする請求項９または１０に記載の情報処理装置。
【請求項１２】
アプリケーションプログラムに含まれる命令を実行する命令実行ステップと、
前記アプリケーションプログラム内の命令であって第１の通信方式による通信を開始することを示す命令が前記命令実行ステップにおいて実行された場合に、前記第１の通信方式と異なる第２の通信方式により送信する通信手段が前記第２の通信方式で受信する他の通信手段と接続するよう制御するステップと、
前記第２の通信方式により受信され、かつ予め定められた単位期間において前記第１の通信方式により送信される信号を示す信号データを取得し、当該信号データが示す信号を前記命令実行手段に処理させる受信エミュレートステップと、を含み、
前記受信エミュレートステップでは、前記単位期間に続く単位期間における前記第１の通信方式による信号を示す次の信号データが送信されかつ前記次の信号データを受信しない場合には、前記次の信号データを受信するまで前記命令実行ステップにおける前記命令の実行を停止する、
ことを特徴とする情報処理方法。
【請求項１３】
アプリケーションプログラムに含まれる命令を実行する命令実行手段、
前記アプリケーションプログラム内の命令であって第１の通信方式による通信を開始することを示す命令が前記命令実行手段により実行された場合に、前記第１の通信方式と異なる第２の通信方式により送信する通信手段が前記第２の通信方式で受信する他の通信手段と接続するよう制御する接続制御手段、および
前記第２の通信方式により受信され、かつ予め定められた単位期間において前記第１の通信方式により送信される信号を示す信号データを取得し、当該信号データが示す信号を前記命令実行手段に処理させる受信エミュレート手段、
としてコンピュータを機能させ、
前記受信エミュレート手段は、前記単位期間に続く単位期間における前記第１の通信方式による信号を示す次の信号データが送信されかつ前記次の信号データを受信しない場合には、前記次の信号データを受信するまで前記命令実行手段が命令を実行することを停止する、
プログラム。
【請求項１４】
請求項１３に記載のプログラムを格納するコンピュータ読取り可能な情報記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、情報処理方法、プログラムおよびコンピュータ読取り可能な情報記憶媒体に関する。
【背景技術】
【０００２】
コンピュータを用いたハードウェアの動作を、そのハードウェアと異なるハードウェアで実現するエミュレーション技術がある。例えば、特許文献１には、エミュレーション技術により、古い携帯型ゲーム機のプロセッサ、メモリ、記憶媒体などを用いるアプリケーションプログラムを、古いゲーム機と構成の異なる新しいゲーム機のプロセッサや外部記憶媒体、内部記憶媒体を用いて実行させることが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１０７９５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
携帯端末などのハードウェアには、赤外線通信のように物理的に近接する相手の機器と１対１で通信する通信デバイス（赤外線通信デバイス）が含まれている場合がある。赤外線通信デバイスのような通信デバイスをそのデバイスを含まないハードウェアでエミュレートする場合、例えば近年普及が進んでいる無線ＬＡＮや有線ＬＡＮなどの通信方式を用いることが考えられる。しかし、これらの通信方式の特徴は赤外線通信デバイスのような通信デバイスとは異なるため、赤外線通信デバイスような通信デバイスによる通信をエミュレートすることは困難であった。
【０００５】
本発明は上記課題を鑑みてなされたものであって、その目的は、赤外線通信のような通信の機能を無線ＬＡＮや有線ＬＡＮなどの赤外線通信のような通信と異なる通信手段を用いてエミュレートすることを容易にする技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明にかかる情報処理装置は、アプリケーションプログラムに含まれる命令を実行する命令実行手段と、前記アプリケーションプログラムのうち第１の通信方式による通信を開始することを示す命令が前記命令実行手段により実行された場合に、前記第１の通信方式により送信される信号を示す信号データを前記第１の通信方式と異なる第２の通信方式により送信する通信手段が当該信号データを前記第２の通信方式で受信する通信手段と接続するよう制御する接続制御手段と、を含むことを特徴とする。
【０００７】
また、本発明にかかる情報処理方法は、アプリケーションプログラムに含まれる命令を実行するステップと、前記アプリケーションプログラムのうち第１の通信方式による通信を開始することを示す命令が前記命令を実行するステップにより実行された場合に、前記第１の通信方式により送信される信号を示す信号データを前記第１の通信方式と異なる第２の通信方式により送信する通信手段が当該信号データを前記第２の通信方式で受信する通信手段と接続するよう制御するステップと、を含むことを特徴とする。
【０００８】
また、本発明にかかるプログラムは、アプリケーションプログラムに含まれる命令を実行する命令実行手段、および、前記アプリケーションプログラムのうち第１の通信方式による通信を開始することを示す命令が前記命令実行手段により実行された場合に、前記第１の通信方式により送信される信号を示す信号データを前記第１の通信方式と異なる第２の通信方式により送信する通信手段が当該信号データを前記第２の通信方式で受信する通信手段と接続するよう制御する接続制御手段、としてコンピュータを機能させる。
【０００９】
また、本発明にかかるコンピュータ読み取り可能な記憶媒体は、上記プログラムを格納する。
【００１０】
本発明によれば、例えば赤外線通信デバイスを有するハードウェア同士を物理的に近づけるタイミングなど、エミュレーションの対象となる通信方式で接続をするタイミングとのずれに起因する問題が生じにくいタイミングで、それをエミュレートする２つのハードウェア間で通信手段同士を接続させることができる。これにより、赤外線通信のような通信方式をエミュレートすることが容易になる。
【００１１】
本発明の一態様では、前記接続制御手段は、前記アプリケーションプログラムのうち第１の通信方式による通信を開始することを示す命令が前記命令実行手段により実行された場合に、複数の情報処理装置から接続先となる情報処理装置を決定し、前記決定された情報処理装置に含まれる通信手段と接続するよう制御してもよい。
【００１２】
本発明の一態様では、前記接続制御手段は、前記アプリケーションプログラムのうち赤外線通信を開始することを示す命令が前記命令実行手段により実行された場合に、接続先となる情報処理装置の候補を提示し、前記提示された候補のうちユーザにより選択された情報処理装置を接続先として決定し、前記第１の方式により送信される信号を示す信号データを送信する通信手段が前記決定された情報処理装置に含まれる前記通信手段と接続するよう制御してもよい。
【００１３】
この態様によれば、赤外線通信デバイスを有するハードウェア同士を物理的に近づけることなどにより通信相手を決めるタイミングに近いタイミングで、それをエミュレートするハードウェアの通信相手を決定することができ、より自然に赤外線通信をエミュレートすることができる。
【００１４】
本発明の一態様では、情報処理装置は、前記第２の通信方式により受信した信号データであって、単位期間において前記第１の通信方式により送信される信号を示す信号データを取得し、当該信号データが示す信号を前記命令実行手段に処理させる受信エミュレート手段をさらに含んでもよい。
【００１５】
本発明の一態様では、前記情報処理装置は、単位期間において前記第１の方式により送信される信号を示す信号データを生成し、当該信号データを当該データを受信する通信手段に向けて送信する送信エミュレート手段をさらに含んでもよい。
【００１６】
本発明の一態様では、前記信号データは前記単位期間における時間に応じた信号の状態を示すデータであり、前記命令実行手段は、エミュレーションにより前記アプリケーションプログラムに含まれる命令を実行し、前記受信エミュレート手段は、前記エミュレーションの対象における内部的な時間に応じた信号であって当該信号データが示す信号を前記命令実行手段に処理させてもよい。
【００１７】
本発明の一態様では、前記命令実行手段は、エミュレーションにより前記アプリケーションプログラムに含まれる命令を実行し、前記送信エミュレート手段は、前記単位期間において、前記エミュレートの対象における内部的な時間と当該時間における信号の状態とを関連づける信号データを生成してもよい。
【００１８】
これらの態様によれば、実際の情報処理装置の実行時間とエミュレーションの対象の実行時間とに違いが生じても、時系列の信号を処理する際のエラーの発生を防ぐことができる。
【００１９】
本発明の一態様では、前記単位期間は、予め定められた期間であり、前記送信エミュレート手段は、前記単位期間に続く単位期間において前記第１の通信方式による信号が送信されるか否かを示す情報を含む信号データを生成してもよい。
【００２０】
本発明の一態様では、前記単位期間は予め定められた期間であり、前記受信エミュレート手段は、前記単位期間に続く単位期間における前記第１の通信方式による信号を示す次の信号データが送信されかつ前記次の信号データを受信しない場合には、前記次の信号データを受信するまで前記命令実行手段が命令を実行することを停止してもよい。
【００２１】
この態様によれば、ある単位期間に続く単位期間の信号データを通信手段によって送受信する際に遅延が生じても、エミュレートされた赤外線通信のエラーの発生を避けることができる。
【００２２】
本発明の一態様では、前記単位期間は、前記信号データを送信する情報処理装置がエミュレートする対象が前記第１の通信方式による信号の送信を開始してから終了するまでの期間であってよい。
【００２３】
本発明の一態様では、前記受信エミュレート手段は、前記取得された信号データが、前記命令実行手段が受信を開始することを示す命令を実行する前に前記第１の通信方式による信号が存在することを示す場合に、前記命令実行手段が当該信号データが示す信号を処理しないよう制御してもよい。
【００２４】
この態様によれば、エミュレートされた第１の通信方式の信号が途中から処理されることに起因する不具合の発生を抑えることができる。
【００２５】
本発明の一態様では、前記受信エミュレート手段は、前記命令実行手段が受信を開始することを示す命令を実行する前に前記赤外線通信による信号を示す前記信号データを受信し、かつ前記信号データが受信されたタイミングと前記受信を開始することを示す命令が実行されるタイミングとの差が所与の範囲内の場合に、前記命令実行手段が前記受信を開始することを示す命令を実行した後に前記命令実行手段が当該信号データが示す信号を処理するよう制御してもよい。
【００２６】
この態様によれば、エミュレートされた第１の通信方式の信号が処理されなかったり、途中から処理されることに起因する不具合の発生を抑えつつ、信号の処理が遅れることに起因する不具合の発生も抑えることができる。
【００２７】
本発明の一態様では、前記受信エミュレート手段は、前記命令実行手段が受信を開始することを示す命令を実行してから前記信号データが受信されるまでは、前記命令実行手段が命令を実行することを停止してもよい。
【００２８】
この態様によれば、赤外線通信の信号を送信することに起因するタイムラグがあることに起因する不具合を抑えることができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の実施形態にかかるシステムの構成の一例を示す図である。
【図２】本発明の実施形態にかかる情報処理装置の構成の一例を示す図である。
【図３】本発明の実施形態にかかる情報処理装置が実現する機能を示すブロック図である。
【図４】エミュレーションの対象機のハードウェア構成の一例を示す図である。
【図５】エミュレーションの対象機における赤外線通信の動作の時間推移の一例を説明する図である。
【図６】エミュレート部が動作する期間の一例を示す図である。
【図７】エミュレート部の処理フローの一例を示す図である。
【図８】赤外線通信のエミュレーションの第１モードにおける動作の時間推移の一例を示す図である。
【図９】赤外線通信のエミュレーションの第２モードにおける動作の時間推移の一例を示す図である。
【図１０】第１モードにおける送信エミュレート部の処理フローの一例を示す図である。
【図１１】接続開始ダイアログの一例を示す図である。
【図１２】接続先選択画面の一例を示す図である。
【図１３】信号データの一例を示す図である。
【図１４】第２モードにおける送信エミュレート部の処理フローの一例を示す図である。
【図１５】第１モードにおける受信エミュレート部の処理フローの一例を示す図である。
【図１６】第１モードにおいて通信の遅延が起きた場合の動作の時間推移の一例を示す図である。
【図１７】第１モードにおいて受信開始前に信号データを受信した場合の動作を説明する図である。
【図１８】第２モードにおける受信エミュレート部の処理フローの一例を示す図である。
【図１９】第２モードにおいて受信エミュレート部が受信開始から信号データを受信するまでの動作の一例を示す図である。
【図２０】第２モードにおいて受信エミュレート部が受信開始前に信号データを受信した場合の動作を説明する図である。
【発明を実施するための形態】
【００３０】
以下では、本発明の実施形態について図面に基づいて説明する。なお、出現する構成要素のうち同一機能を有するものには同じ符号を付し、その説明を省略する。
【００３１】
図１は、本発明の実施形態にかかるシステムの一例を示す図である。このシステムは、複数のゲーム装置１を含む。ゲーム装置１は例えば携帯型のゲーム機である。
【００３２】
ゲーム装置１どうしはネットワーク、例えばアドホック通信による無線ＬＡＮにより通信する。ゲーム装置１どうしは、アドホック通信ではなく無線ＬＡＮルータを介して通信してもよいし、有線ＬＡＮを用いて通信してもよい。
【００３３】
図２は、ゲーム装置１のハードウェア構成の一例を示す図である。ゲーム装置１はプロセッサ１１、記憶部１２、入出力部１３、通信部１４を含む。
【００３４】
プロセッサ１１は、記憶部１２に格納されているプログラムに従って動作し、入出力部１３や通信部１４を制御する。
【００３５】
記憶部１２は、ＤＲＡＭやフラッシュメモリ等のメモリ素子によって構成されている。記憶部１２は、上記プログラムを格納する。また、記憶部１２は、各部から入力される情報や演算結果を格納する。
【００３６】
入出力部１３は、ディスプレイ等の表示出力デバイスを制御する手段や、タッチパネルやコントローラ等の入力デバイスを制御する手段などによって構成されている。入出力部１３は、プロセッサ１１の制御に基づいて、画像データ等を表示出力デバイスに対して出力し、入力デバイスよりユーザの操作を取得する。
【００３７】
通信部１４は無線ＬＡＮを構成する集積回路やアンテナなどにより構成されている。通信部１４は、プロセッサ１１の制御に基づいて、他の装置から受信した情報をプロセッサ１１や記憶部１２に入力し、他の装置に情報を送信する。例えば通信部１４は、他のゲーム装置１などに含まれる通信部１４などと、アドホック通信で直接通信する、あるいは、無線ＬＡＮアクセスポイントやルータなどのネットワーク機器を介して通信する機能を有する。なお、ゲーム装置１が有する通信部１４は、有線ＬＡＮに接続するための端子や回路を有していてもよい。
【００３８】
このゲーム装置１には、例えば旧式の携帯ゲーム機などの他の種類のハードウェアをエミュレートするプログラム（エミュレータ）がインストールされており、このハードウェア上で実行されるアプリケーションプログラムを実行することができる。このエミュレータは、フラッシュメモリ等のコンピュータで読み取り可能な記憶媒体に格納されて提供されるものであってもよいし、インターネット等のネットワークを介して提供されるものであってもよい。以下ではエミュレータがインストールされたゲーム装置１の動作について説明する。また、以下ではエミュレーションの対象となるハードウェアを「対象機」と記載する。
【００３９】
図３は、本発明の実施形態にかかる情報処理装置が実現する機能を示すブロック図である。ゲーム装置１は、機能的に、エミュレート部５１、接続制御部５８を含む。また、エミュレート部５１は、命令エミュレート部５２、入出力エミュレート部５３、アプリケーション設定取得部５４、赤外線通信エミュレート部５５を含み、さらに赤外線通信エミュレート部５５は送信エミュレート部５６と受信エミュレート部５７とを含んでいる。これらの機能は、プロセッサ１１が記憶部１２に格納されるプログラムを実行し、入出力部１３や通信部１４を制御することで実現される。
【００４０】
エミュレート部５１は、対象機の動作をエミュレートし、この対象機上で動くゲームソフトウェアなどのアプリケーションプログラムの動作を実現する。エミュレート部５１の動作を説明する前に、エミュレーションの対象となる対象機について説明する。
【００４１】
図４は、エミュレーションの対象機３，４のハードウェア構成の一例を示す図である。図４には２台の対象機３，４が示されているが、実際にエミュレート部５１がエミュレートするのはそのうちの１つである。対象機３，４は、それぞれプロセッサ３１，４１と、記憶部３２，４２と、入出力部３３，４３と、発光部３４，４４と、受光部３５，４５とを含む。
【００４２】
プロセッサ３１，４１は、記憶部３２，４２に格納されているプログラムに従って動作し、入出力部３３，４３、発光部３４，４４、受光部３５，４５を制御する。プロセッサ３１，４１は、プロセッサ１１と命令体系などの種類が異なっていてもよい。記憶部３２，４２は、ＤＲＡＭやフラッシュメモリ等のメモリ素子によって構成されている。入出力部３３，４３は、対象機の表示出力デバイスを制御する手段や、コントローラ等の入力デバイスを制御する手段などを含む。
【００４３】
発光部３４，４４と受光部３５，４５は、赤外線通信をするデバイスを構成している。発光部３４，４４はバス上の特定のアドレスにマッピングされた送信レジスタの値に応じて発光する。受光部３５，４５は、発光部３４，４４からの光を受けたか否かに応じてバス上の特定のアドレスにマッピングされた受信レジスタの値を設定する。
【００４４】
図５は、エミュレーションの対象機における赤外線通信の動作の時間推移の一例を説明する図である。対象機３や対象機４のアプリケーションプログラムは、送信すべきデータに応じて発光部３４をＯＮＯＦＦさせることで送信すべきデータを赤外光の信号に変調し、また赤外光の信号を受光した受光部４５からの光を感知したか否かの出力をデータに変換することで、赤外光の信号をデータに復調する。データを変調および復調する方式としては、データのビット列の「１」をＯＮ、「０」をＯＦＦとして一定時間ごとに順にビットを送受信する方法でもよいし、データのビット列の「１」はＯＮＯＦＦの反対にし、「０」ならＯＮＯＦＦを切替えないとして一定時間ごとに順にビットを送受信する方法でもよいし、ビット列の「１」の発光期間と「０」の発光期間を異ならせ、その発光期間の間に消光期間を設けて順にビットを送受信する方法でもよい。なお、対象機３，４の赤外線通信デバイスは発光部３４，４４を用いて赤外線信号を送信する期間と、受光部３５，４５を用いて赤外線信号を受信する期間とが明確に分けられている。より具体的には、バス上の通信設定レジスタに、送信を行う送信モードと、受信を行う受信モードと、送信も受信も行わない待機モードのうちいずれかがアプリケーションプログラムで実行される命令により設定される。図５では、発光部３４が発光することをＯＮ、消光することをＯＦＦ、そして、受光部４５が光を感知したことをＯＮ、光を感知しなかったことをＯＦＦで表現している。
【００４５】
赤外線通信の動作について、より具体的には、例えば対象機３のプロセッサ３１がアプリケーションプログラムの命令に応じてデータを変調してあるタイミングで送信レジスタに１（または０）をセットすると、送信レジスタの値が変わるか受信モードや待機モードになるまで発光部３４は発光（または消光）し、その光を対象機４の受光部４５が受光すると、受信レジスタに１（または０）がセットされる。対象機４のプロセッサ４１はアプリケーションプログラムの命令に応じて受信レジスタの値を取得し、その値の時系列（信号に相当する）を用いてデータに復調する。ここで、対象機３の送信レジスタに値がセットされてから対象機４の受信レジスタに値が設定されるまでの遅延は回路の電気的な遅延に起因するものがほとんどである。また、図４に示すように、赤外線通信を行う際には発光部３４と受光部４５、発光部４４と受光部３５をそれぞれ向かい合わせにする必要がある。
【００４６】
以下では、図４に示す対象機３，４のハードウェアをエミュレートするエミュレート部５１の概要を説明する。命令エミュレート部５２はプロセッサ１１および記憶部１２を中心として実現される。命令エミュレート部５２は、アプリケーションプログラムに含まれる命令をエミュレーションにより実行する。このアプリケーションプログラムは、対象機３，４のプロセッサ３１，４１が直接解釈し実行することができるものである。
【００４７】
図６は、エミュレート部５１が動作する期間の一例を示す図である。エミュレート部５１は、処理単位期間Ｐｐ（ここでは垂直走査期間１Ｖ）ごとに処理を開始し、対象機３，４が処理単位期間Ｐｐに行う処理をエミュレートする。ゲーム装置１のハードウェアが十分に速ければ、エミュレートする際の所要時間Ｔ１は、もともとの処理単位期間Ｐｐ（ここでは垂直走査期間１Ｖ）より小さくなる。その処理単位期間Ｐｐに相当する処理のエミュレートが終わると、次の処理単位期間Ｐｐに移るまで以降の処理をエミュレートしない。こうすることで、エミュレートが実際の対象機３，４の動作より速くなりすぎることを防いでいる。
【００４８】
また入出力エミュレート部５３は、命令エミュレート部５２はプロセッサ１１、記憶部１２および入出力部１３を中心として実現される。入出力エミュレート部５３は、対象機３，４が有する表示出力デバイスや入力デバイスの動作をエミュレートする。より具体的には、入出力エミュレート部５３は、入出力部１３を介してコントローラなどの入力デバイスからの入力を取得し、その入力を対象機３，４の入出力部３３，４３にあわせて変換したデータをアプリケーションプログラムを実行する命令エミュレート部５２が処理するよう制御する。また入出力エミュレート部５３は、命令エミュレート部５２から対象機３，４の入出力部３３，４３に出力するデータを取得し、それを変換することで入出力部１３を介してそのデータが示す画像や音声を実際の出力デバイスに出力させる。
【００４９】
赤外線通信エミュレート部５５は、発光部３４，４４や受光部３５，４５といった赤外線通信デバイスの動作をエミュレートする。送信エミュレート部５６は、プロセッサ１１、記憶部１２および通信部１４を中心として実現され、通信単位期間において赤外線通信により送信される信号を示す信号データを生成し、その信号データを受信する他の通信部１４に向けて送信する。また受信エミュレート部５７は、プロセッサ１１、記憶部１２および通信部１４を中心として実現され、通信部１４を介して受信した信号データであって、通信単位期間において赤外線通信により送信される信号を示す信号データを取得し、その信号データが示す信号をアプリケーションプログラムの動作をエミュレートする命令エミュレート部５２に処理させる。
【００５０】
アプリケーション設定取得部５４は、プロセッサ１１、記憶部１２および通信部１４を中心として実現される。アプリケーション設定取得部５４は、対象機３，４上で実行されるアプリケーションプログラムに関連づけられたエミュレーションの設定を取得する。この設定としては、赤外線通信をエミュレーションする方式や、そのエミュレーションの際のパラメータなどがある。ここで、このアプリケーションプログラムはそのイメージファイルとそのアプリケーションに応じたエミュレーションの設定とともにネットワークや情報記憶媒体を介して配布されてよい。
【００５１】
接続制御部５８は、赤外線通信を開始することを示す命令が命令エミュレート部５２により実行された場合に、赤外線通信により送信される信号を示す信号データを赤外線通信と異なる通信方式により送信する通信部１４がその信号データをその通信方式で受信する通信部１４と接続するよう制御する。また、接続制御部５８は赤外線通信を開始することを示す命令が命令エミュレート部５２により実行された場合に、接続先となるゲーム装置１の候補を提示してユーザに選択させることで、複数のゲーム装置１から接続先となるものを決定し、その決定されたゲーム装置１と接続する。
【００５２】
以下では、エミュレート部５１の処理の概要についてさらに説明する。図７は、エミュレート部５１の処理フローの一例を示す図である。図７に示す処理は、処理単位期間Ｐｐごとに実行される。なお、アプリケーションを起動する際の初期処理については説明を省略する。
【００５３】
はじめに、受信エミュレート部５７は、赤外線通信による信号の受信をエミュレートする（ステップＳ１０１）。その詳細な処理については後述する。次に、命令エミュレート部５２は、記憶部１２に格納されたスリープフラグがＯＦＦであれば（ステップＳ１０２のＮ）、命令エミュレート部５２は記憶部１２に格納されたアプリケーションプログラムのうち、前回実行された命令の次の命令を取得する（ステップＳ１０３）。この命令の場所は、対象機３，４のプロセッサ３１，４１のプログラムカウンタの値として記憶部１２に格納されている。そして、命令エミュレート部５２は、取得された命令をエミュレーションにより実行する（ステップＳ１０４）。ここで、スリープフラグがＯＮであれば（ステップＳ１０２のＹ）、ステップＳ１０３、Ｓ１０４の処理はスキップされる。
【００５４】
次に、送信エミュレート部５６は赤外線通信による送信をエミュレートする（ステップＳ１０５）。また命令エミュレート部５２は、対象機３，４のプロセッサ３１，４１が実際に実行した場合にかかる時間だけ内部時間を増加させる（ステップＳ１０６）。この内部時間は、例えばＣＰＵサイクル数の累積時間であってよい。またＣＰＵのクロックが可変であれば最大クロックで動作したとする場合のＣＰＵサイクル数の累積時間であってよい。より具体的には、命令エミュレート部５２は、プロセッサ３１，４１が実際に実行した場合にかかる内部時間として命令の実行にかかるＣＰＵサイクルに最大クロック数をかけて動作クロック数で割った値を求め、その値だけ内部時間を増加させてよい。なお、スリープの際には予め定められた時間だけ内部時間を増加させてよい。そして、命令エミュレート部５２は、内部時間が図７に示す処理の開始から処理単位期間Ｐｐだけ経過したかを判定し（ステップＳ１０７）、処理単位期間Ｐｐが経過していなければ（ステップＳ１０７のＮ）ステップＳ１０１からの処理を繰り返す。また処理単位期間Ｐｐが経過したら（ステップＳ１０７のＹ）、図７に示す処理を終了する。
【００５５】
次に、赤外線通信をエミュレートする方法の概要を説明する。送信側のゲーム装置１の送信エミュレート部５６は、命令エミュレート部５２が命令を実行するごとに送信レジスタの値を取得して赤外線通信の信号の時系列を取得し、通信単位期間における信号データを生成し、信号データを通信部１４を介して受信側のゲーム装置１の通信部１４に向けて送信する。そして受信側のゲーム装置１の受信エミュレート部５７は、通信部１４を介して信号データを取得し、内部時間の経過に応じた信号の状態を示す受信レジスタの値を設定する。また本実施形態では、赤外線通信をエミュレートする方法として第１モードと第２モードの２つのモードを有する。
【００５６】
図８は、赤外線通信のエミュレーションの第１モードにおける動作の時間推移の一例を示す図である。第１モードでは内部時間における通信単位期間Ｐｕｃは実時間における処理単位期間Ｐｐ（垂直走査期間１Ｖ）と同じ長さであり、通信単位期間Ｐｕｃおよび処理単位期間Ｐｐの開始タイミングは同じである。図８は、説明の容易のため内部時間の推移と送信レジスタ、受信レジスタ等の状態との関係を示しているが、図６からわかるように実時間では処理単位期間Ｐｐ（ここでは通信単位期間Ｐｕｃ）ごとに処理が行われない時間が存在する。この間にゲーム装置１のプロセッサ１１と通信部１４とが信号データ６１，６２を送受信することが可能である。
【００５７】
第１モードでは、送信側のゲーム装置１の送信エミュレート部５６は、送信モードの場合に、通信単位期間Ｐｕｃが終わるごとにその期間内の送信レジスタの値の時系列の推移を示す信号データ６１，６２を生成し、その信号データ６１，６２を通信部１４を介して受信エミュレート部５７に向けて送信する。受信エミュレート部５７は通信単位期間Ｐｕｃが始まるごとに受信された信号データ６１，６２を取得し、その通信単位期間Ｐｕｃにあける受信レジスタの値の時系列の推移に反映する。
【００５８】
図９は、赤外線通信のエミュレーションの第２モードにおける動作の時間推移の一例を示す図である。第２モードでは通信単位期間Ｐｕｓは対象機３，４が赤外線通信の信号の送信を開始してから終了するまでに相当する期間である。より具体的には、この通信単位期間Ｐｕｓは、例えば通信設定レジスタに送信モードが設定されてからその設定が解除されるまでの期間や、送信を開始することを示す命令（例えばこの命令はプログラムカウンタの値で検知される）が実行されてから、送信を終了することを示す命令（これもプログラムカウンタの値で検知される）が実行されるまでの期間であってよい。なお、図９も説明の容易のため内部時間の推移と送信レジスタ、受信レジスタ等の状態との関係を示しており、実時間では処理単位期間Ｐｐが経過するごとに処理が行われない時間が存在する。
【００５９】
第２モードでは、送信側のゲーム装置１の送信エミュレート部５６は、送信モードの場合に、通信単位期間Ｐｕｓが終わる（例えば送信モードが解除される）とその期間内の送信レジスタの値の時系列の推移を示す信号データ６３を生成し、その信号データ６３を通信部１４を介して受信エミュレート部５７に向けて送信する。受信エミュレート部５７は受信された信号データ６３を取得し、その通信単位期間Ｐｕｓにあける受信レジスタの値の時系列の推移に反映する。
【００６０】
送信エミュレート部５６は、アプリケーション設定取得部５４が取得した設定のうち、赤外線通信をエミュレートする方式が第１モードか第２モードかによって、送信エミュレート部５６が第１モードに従った赤外線通信のエミュレートをするか、第２モードに従った赤外線通信のエミュレートをするかを切替える。本実施形態では、アプリケーションプログラムに応じて方式を切替える、または通信に関するその他の設定を調整することで、より精度の高い赤外線通信のエミュレーションを実現している。
【００６１】
以下では、第１モードと第２モードのそれぞれについてステップＳ１０５における送信エミュレート部５６の処理内容を説明する。
【００６２】
図１０は、第１モードにおける送信エミュレート部５６の処理フローの一例を示す図である。はじめに、送信エミュレート部５６は、通信設定レジスタに送信モードが設定されていれば（ステップＳ３０１のＹ）、記憶部１２にある送信バッファに現在の内部時間と関連づけて現在の赤外線通信の信号の状態、より具体的には発光部３４，４４が発光しているか否かを示す送信レジスタの値を格納する（ステップＳ３０２）。送信モードではステップＳ３０２の処理は図７のループでステップＳ１０５が実行されるたびに行われ、送信バッファには内部時間の推移に応じた信号の状態の時系列の情報が蓄積される。
【００６３】
次に、現在の内部時間が通信単位期間Ｐｕｃにおける最後の命令の実行を示しているのであれば（ステップＳ３０３のＹ）、以下のステップＳ３０４からＳ３０８の処理が行われる。まず、接続制御部５８は、その通信相手（接続先）となるゲーム装置１が決定しておりかつ接続先の通信部１４と本機の通信部１４とが無線ＬＡＮや有線ＬＡＮなどのパケット通信で接続していない場合には（ステップＳ３０４のＮ）、通信相手の候補を提示して通信相手となるゲーム装置１を決定し（ステップＳ３０５）、決定された通信相手とパケット通信で接続する（ステップＳ３０６）。
【００６４】
ステップＳ３０４からＳ３０６の処理についてさらに説明する。ステップＳ３０４においては、他のゲーム装置１との間の通信に無線ＬＡＮのアドホック通信を用いる場合には、信号データの送信先となるゲーム装置１が決定されているか、またはそのゲーム装置１との間で無線ＬＡＮのアドホックモードの接続がされているかを確認する。またゲーム装置１との通信にルータ等を用いた無線ＬＡＮや有線ＬＡＮを用いる場合には、信号データの送信先となるゲーム装置１が決定されているか、または通信相手のゲーム装置１との間でセッションが張られているかを確認する。まだ通信相手が決定されていない場合や、接続がされていない場合は、通信相手を決定し接続をするステップＳ３０５およびステップＳ３０６の処理を行う。ここで、ステップＳ３０５およびステップＳ３０６の処理の間は命令エミュレート部５２の動作は停止される。
【００６５】
ステップＳ３０５においては、接続制御部５８は、まず他のゲーム装置１に接続するか否かをユーザに確認する。図１１は接続開始ダイアログ８１の一例を示す図である。接続制御部５８は入出力部１３を制御して接続開始ダイアログ８１をアプリケーションの画面に重畳するように表示させ、エミュレート部５１が動作するゲーム装置１が他のゲーム装置１と接続してよいかを確認する。例えば図１１に示す接続開始ダイアログ８１においてユーザが「はい」ボタンを押下して他のゲーム装置１と接続することを許可する指示をした場合には、接続制御部５８は接続相手となるゲーム装置１の候補を提示する。
【００６６】
図１２は接続先選択画面８２の一例を示す図である。接続制御部５８は入出力部１３を制御して接続先選択画面８２をアプリケーションの画面に重畳するように表示させる。接続先選択画面８２には、接続先の候補となるゲーム装置１のリストを表示する。ここでは、接続先選択画面８２にはゲーム装置１の識別を容易にするために接続先のゲーム装置１の候補そのものではなく、それを利用しているユーザの一覧が表示される。接続制御部５８は、この候補の一覧として、アドホック通信しているゲーム装置１やＬＡＮの同一のセグメントに接続しているゲーム装置１を全て提示してもよいし、エミュレート部５１が動作しているゲーム装置１のみ、または本機と同じアプリケーションプログラムをエミュレート部５１で実行しているゲーム装置１のみを提示してもよい。他のゲーム装置１のユーザの情報やエミュレート部５１の状況は、通信部１４を介して取得すればよい。接続制御部５８は、ユーザの入出力部１３からの入力に基づいてこの候補のうちユーザが選択したものを決定し、その決定されたゲーム装置１と接続する。
【００６７】
対象機３，４で実際に赤外線通信をする場合には、赤外線通信の開始を指示する直前または直後に対象機３と対象機４とを所定の配置にする場合が多い。一方で対象機３の赤外線通信の通信相手は、やはり赤外線通信の開始を指示する直前に定まることも多い。アプリケーションプログラムの多くはそれを前提として作られている。
【００６８】
従って、このタイミングで通信相手と接続することはアプリケーションプログラムの前提に沿うことになり、エミュレーションにおける操作上の違和感を軽減することが可能になる。さらにいえば、実際の対象機３と異なり、赤外線通信を無線ＬＡＮや有線ＬＡＮでエミュレーションするだけでは通信相手を決められず、なんらかのタイミングで通信相手を決定する必要がある。赤外線通信開始時に通信相手を決定すると実際に赤外線通信をする場合に通信相手を決めるタイミングに近くなり、この観点からもユーザの違和感を軽減することができる。なお、通信相手となるゲーム装置１が１台しか無い場合や、事前に決まっている場合には、ユーザに候補を提示することなくそのゲーム装置１と接続してもよい。
【００６９】
ステップＳ３０４において通信相手と接続されている場合、またはステップＳ３０６で通信相手と接続された後には、送信エミュレート部５６は、送信バッファ内のデータから通信単位期間Ｐｕｃにおける赤外線の信号を示す信号データを生成する（ステップＳ３０７）。
【００７０】
図１３は信号データの一例を示す図である。信号データは、この信号データに続く信号データが存在するか否かを示す継続フラグと、通信単位期間内の信号を示す情報とからなる。さらに信号を示す情報は、それぞれが光を出力するか否かを示す値とその値が継続する内部時間を示す情報（継続時間）とを含む複数の組（時間推移に応じた配列）である。図１３における継続時間は、最大のＣＰＵサイクルにおけるＣＰＵサイクル数で表現されている。通信単位期間の途中で送信モードになった場合には、送信モードになる前の内部時間の長さを示す情報も信号データに含める。なお、継続フラグの詳細な意味については受信エミュレート部５７の動作とともに説明する。なお、ステップＳ３０７の処理をする代わりに、ステップＳ３０２で直接信号データを生成してもよい。
【００７１】
そして、送信エミュレート部５６は、通信部１４を介して信号データを通信相手となるゲーム装置１に向けて送信する（ステップＳ３０８）。このようにすることで第１モードにおいて送信エミュレート部５６は赤外線通信の送信をエミュレートする。
【００７２】
図１４は、第２モードにおける送信エミュレート部５６の処理フローの一例を示す図である。はじめに、送信エミュレート部５６は、通信設定レジスタに送信モードが設定されていれば（ステップＳ３５１のＹ）、記憶部１２にある送信バッファに現在の内部時間と関連づけて現在の赤外線通信の信号の状態、より具体的には発光部３４，４４が発光しているか否かを示す送信レジスタの値を格納し（ステップＳ３５２）、ステップＳ１０５における処理を終了する。
【００７３】
一方、通信設定レジスタに送信モードが設定されていない場合は（ステップＳ３５１のＮ）、通信単位期間Ｐｕｓが終了してすぐのタイミングであるか判定するために前回にステップＳ１０５の処理をした際に通信設定レジスタに送信モードが設定されていたかを確認する（ステップＳ３５３）。前回も送信モードでない場合には（ステップＳ３５３のＮ）、その前に通信単位期間Ｐｕｓが終了したタイミングで信号データが送信されているとして、処理を終了する。一方、前回が送信モードである場合には（ステップＳ３５３のＹ）、ステップＳ３５４からＳ３５８の信号データを送信するための処理を行う。
【００７４】
まず、接続制御部５８は、その通信相手（接続先）となるゲーム装置１が決定しておりかつ接続先の通信部１４と本機の通信部１４とが無線ＬＡＮや有線ＬＡＮなどのパケット通信で接続していない場合には（ステップＳ３５４のＮ）、通信相手の候補を提示して通信相手となるゲーム装置１を決定し（ステップＳ３５５）、決定された通信相手とパケット通信で接続する（ステップＳ３５６）。この処理の詳細については第１モードと同様であるので省略する。
【００７５】
ステップＳ３５４において通信相手と接続されている場合、またはステップＳ３５６の処理の後には、送信エミュレート部５６は、送信バッファ内のデータから通信単位期間Ｐｕｓにおける赤外線の信号を示す信号データを生成する（ステップＳ３５７）。信号データは第１モードと同様であるが、第２モードでは継続フラグの値は固定値が設定されてもよいし、継続フラグの項目がなくてもよい。
【００７６】
そして、送信エミュレート部５６は、通信部１４を介して信号データを通信相手となるゲーム装置１に向けて送信する（ステップＳ３５８）。このようにすることで第２モードにおいて送信エミュレート部５６は赤外線通信の送信をエミュレートする。
【００７７】
次に、受信エミュレート部５７の赤外線通信のエミュレーションの動作について説明する。受信エミュレート部５７は、アプリケーション設定取得部５４が取得した設定のうち、赤外線通信をエミュレートする方式が第１モードか第２モードかによって、受信エミュレート部５７が第１モードに従った赤外線通信のエミュレートをするか、第２モードに従った赤外線通信のエミュレートをするかを切替える。送信エミュレート部５６と同様に、アプリケーションプログラムに応じて動作モードや通信設定を切替えることで、アプリケーションプログラムごとに赤外線通信の細かなプロトコルが異なっているような場合でも通信エラーの発生を抑えることができる。以下では第１モードと第２モードのそれぞれについてステップＳ１０１における受信エミュレート部５７の処理内容を説明する。
【００７８】
図１５は、第１モードにおける受信エミュレート部５７の処理フローの一例を示す図である。はじめに、受信エミュレート部５７は、次の信号データを取得することが必要か否かを判定する（ステップＳ２０１）。より具体的には受信エミュレート部５７は、既に取得している信号データに対応する通信単位期間Ｐｕｃが経過し、通信単位期間Ｐｕｃに対応する処理単位期間Ｐｐがこのタイミングで次の処理単位期間Ｐｐに切り替わったか否かを判定する。処理単位期間Ｐｐが切り替わり次の信号データが必要な場合には（ステップＳ２０１のＹ）、受信エミュレート部５７は通信部１４を介して前回の信号データの次の信号データを受信しているかを確認する（ステップＳ２０２）。次の信号データが受信されていれば（ステップＳ２０２のＹ）、受信エミュレート部５７はその受信された信号データを取得する（ステップＳ２０３）。一方、次の信号データを受信していない場合であって（ステップＳ２０２のＮ）、かつ次の信号データが送信されることがわかっている場合（ステップＳ２０５のＹ）には、スリープフラグをＯＮに設定し（ステップＳ２０６）、処理を終了する。このスリープフラグをＯＮにするのは、受信エミュレート部５７がこの処理単位期間Ｐｐの間（厳密には次の信号データを受信したすぐ後の処理単位期間Ｐｐの開始まで）、命令エミュレート部５２がアプリケーションプログラムの命令の実行をエミュレートすることを停止させる（スリープさせる）ためである。なお、この停止させる期間を以下ではスリープ期間Ｐｓと呼ぶ。
【００７９】
ステップＳ２０３で受信エミュレート部５７が受信された信号データを取得すると、受信エミュレート部５７はスリープフラグをＯＦＦに設定し（ステップＳ２０４）、命令エミュレート部５２がスリープしている場合にはこの処理単位期間Ｐｐにおいて命令エミュレート部５２がアプリケーションプログラムの実行をエミュレートすることを再開させる。
【００８０】
ここで、ステップＳ２０１において処理単位期間Ｐｐが切り替わっておらず、それにより既に取得している信号データに対応する通信単位期間Ｐｕｃ内である場合には（ステップＳ２０２のＮ）、受信エミュレート部５７は次の信号データが必要でないのでステップＳ２０４の次であるステップＳ２０７まで処理をスキップする。
【００８１】
ステップＳ２０７では、受信エミュレート部５７は、通信設定レジスタに受信モードが設定されているか確認する（ステップＳ２０７）。そこで受信モードが設定されていない場合は（ステップＳ２０７のＮ）、図７のループ中のこのステップＳ１０１においては以下の処理を行わずに図１５の処理を終了する。一方、通信設定レジスタに受信モードが設定されている場合は（ステップＳ２０７のＹ）、他のモードから受信モードに切り替わる前の赤外線信号の存在を示す信号データがあるかを確認する（ステップＳ２０８）。より具体的には、受信エミュレート部５７は通信設定レジスタの設定が他のモードから受信モードに今回切り替わり、かつ信号データが現在の内部時間より前に通信をしている（例えば送信レジスタの値がＯＮになる）ことを示しているかを確認する。他のモードから受信モードに切り替わる前の赤外線信号の存在を示す信号データがある場合には（ステップＳ２０８のＹ）、取得済の信号データを破棄し（ステップＳ２０９）、図１５の処理を終了する。なお、ステップＳ２０９で取得隅の信号データを破棄する場合には、この信号データに続く信号データも破棄してよい。
【００８２】
ステップＳ２０８で他のモードから受信モードに切り替わる前の赤外線信号の存在を示す信号データがない場合には（ステップＳ２０８のＮ）、受信エミュレート部５７は信号データから現在の内部時間における赤外線通信の信号の状態（発光か非発光かを示す値）を取得し、受信レジスタの値を設定する（ステップＳ２１０）。より具体的には、例えば図１３に示す信号データを利用する場合には、受信した信号データを取得した内部時間をＴｉ、現在の内部時間をＴｃとした場合に、信号データのｋ番目の組の継続ＣＰＵサイクルをＣｋとした場合に、以下の式を満たすｋを求め、ｋ番目の組の値を取得して受信レジスタに設定する。
【００８３】
【数１】
0005870077.tif 000002
【００８４】
図１６は、第１モードにおいて通信の遅延が起きた場合の動作の時間推移の一例を示す図である。第１モードにおいて連続する通信単位期間Ｐｕｃの信号データ６４，６５が順に送信される場合であっても、通信の途中で予期せぬ遅延が生じた場合などに、後ろの信号データ６５だけ遅く受信側のゲーム装置１に到着する場合がある。このような場合は、次の信号データ６５を受信しておらずかつ前回の信号データ６４の次の信号データ６５が送信されることがわかっている場合である。この場合に、受信エミュレート部５７はスリープ期間Ｐｓ（その信号データ６５を受信しかつその信号データを用いた処理を開始するまでの期間）だけ命令エミュレート部５２の命令の実行を抑止する。これにより、アプリケーションプログラムの処理においてその遅延の影響をなくし通信エラーの発生を軽減することができる。
【００８５】
図１７は、第１モードにおいて受信開始前に信号データを受信した場合の動作を説明する図である。赤外線通信において、赤外線通信の送信側が信号を送るタイミングと、受信側が信号を受け始めるタイミングとを自動的に同期をとらない場合には、受信側が受信モードに切替える前に信号が届いてしまい、その信号を途中から処理することで通信エラーが生じる恐れがある。エミュレーションにおいては、ステップＳ２０８等の処理によって、受信を開始することを示す命令が実行される前に赤外線通信による信号が存在することを信号データ６６が示す場合に信号データ６６を処理させないことで、通信エラーの発生を抑えることができる。なお、ステップＳ２０８では受信モードに切替える命令の実行により受信を開始することを示す命令がわかるが、予めアプリケーションごとに受信処理の開始に相当する命令のアドレスを準備しておき、プログラムカウンタがそのアドレスになった場合に受信開始になるとしてもよい。
【００８６】
図１８は、第２モードにおける受信エミュレート部５７の処理フローの一例を示す図である。はじめに、受信エミュレート部５７は、通信設定レジスタに受信モードが設定されているかを確認する（ステップＳ２５１）。受信モードが設定されていなければ（ステップＳ２５１のＮ）、図１８の処理は終了する。
【００８７】
受信モードが設定されていれば（ステップＳ２５１のＹ）、受信エミュレート部５７は受信モードになってから信号データを受信したかを判定する（ステップＳ２５２）。より具体的には受信エミュレート部５７は今回に他のモードから受信モードに切り替わったかを確認する。受信データを取得している場合には（ステップＳ２５２のＹ）、ステップＳ２６０の処理を行う。一方、受信データを取得していない場合には（ステップＳ２５２のＮ）、受信エミュレート部５７はスリープフラグをＯＮにし（ステップＳ２５３）、信号データを取得するまで命令エミュレート部５２がアプリケーションプログラムに含まれる命令を実行しないようにする。
【００８８】
次に、受信エミュレート部５７は信号データを受信しているか確認する（ステップＳ２５４）。受信していない場合には（ステップＳ２５４のＮ）、図１８の処理を終了する。一方、信号データを受信した場合には（ステップＳ２５４のＹ）、受信エミュレート部５７は受信された信号データを取得し（ステップＳ２５５）、記憶部１２に格納する。また受信エミュレート部５７は、アプリケーション設定取得部５４が実行中のアプリケーションプログラムに関連づけて取得した設定のうち、許容遅延時間を取得する（ステップＳ２５６）。そして、現在時刻と受信時刻との差が許容遅延時間以下の場合には（ステップＳ２５７のＹ）、その信号データが有効であるとしてスリープフラグをＯＦＦにし（ステップＳ２５９）、ステップＳ２６０の処理を行う。一方、現在時刻と受信時刻との差が許容遅延時間より大きい場合には（ステップＳ２５７のＮ）、取得された信号データを破棄し、図１８の処理を終了する。
【００８９】
ステップＳ２６０では、信号データから現在の内部時間における赤外線通信の信号の状態（発光か非発光かを示す値）を取得し、受信レジスタの値を設定する。この詳細は第１モードと同様であるので説明を省略する。
【００９０】
図１９は、第２モードにおいて受信エミュレート部５７が受信開始から信号データ６７を受信するまでの動作の一例を示す図である。第２モードでは受信を開始する命令が実行されてから信号データ６７が受信されるまでは、命令エミュレート部５２が命令を実行することが停止される。これにより、図１９に示すスリープ期間Ｐｓが生じる。このようにすることで、赤外線通信のエミュレーションに伴う送信と受信とのタイムラグを減らすことができ、通信エラーの発生を抑えることができる。
【００９１】
図２０は、第２モードにおいて受信エミュレート部５７が受信開始前に信号データ６８を受信した場合の動作を説明する図である。このような場合には、受信開始以降（例えば受信モードに切り替わったタイミング）に赤外線通信の信号を受信したものとして受信エミュレート部５７の処理を進めることが考えられる。このようにしてもアプリケーションプログラムにおける赤外線の送受信の方式によっては問題が生じず、むしろ通信エラーが減る場合があるからである。一方で、信号データ６８の受信から受信開始までの遅延時間Ｔｔがあまりに大きいと、再送信の発生などにより送信側と受信側とで不整合が起きる恐れがある。そこで、アプリケーションプログラムに応じて許容遅延時間を設定し、遅延時間Ｔｔが許容遅延時間に収まる場合のみ受信開始以降に赤外線通信の信号を受信したものとして処理することで、アプリケーションの特性に応じて通信エラーの発生を抑えることが可能になる。
【００９２】
なお、第１モードでも、受信エミュレート部５７は受信開始から信号データ６７を受信するまでの間に命令エミュレート部５２の命令の実行を停止してもよいし、信号データが受信開始前に受信したことを示す信号を受信開始後に処理するようにしてもよい。第２モードでも、受信開始前に受信したことを示す信号がある場合にその信号データを破棄してもよい。これらの受信の方法のそれぞれをモードとして選択できるようにしてもよい。より具体的には、これらのモードをアプリケーションプログラムごとに設定しておき、その設定に応じて受信エミュレート部５７が受信時の動作を切替えるようにしてもよい。
【００９３】
なお、本発明が適用されるのはゲーム装置１に限られない。例えば、テレビや家庭用ビデオレコーダーの赤外線リモコンのエミュレーションに適用してもよい。また、アプリケーションプログラムを実行する部分はエミュレーションせず、赤外線通信のハードウェアだけエミュレートする場合にも適用することができる。
【符号の説明】
【００９４】
１  ゲーム装置、３，４  対象機、１１，３１，４１  プロセッサ、１２，３２，４２  記憶部、１３，３３，４３  入出力部、１４  通信部、３４，４４  発光部、３５，４５  受光部、５１  エミュレート部、５２  命令エミュレート部、５３  入出力エミュレート部、５４  アプリケーション設定取得部、５５  赤外線通信エミュレート部、５６  送信エミュレート部、５７  受信エミュレート部、５８  接続制御部、６１，６２，６３，６４，６５，６６，６７，６８  信号データ、８１  接続開始ダイアログ、８２  接続先選択画面、１Ｖ  垂直走査期間、Ｐｐ  処理単位期間、Ｐｕｃ，Ｐｕｓ  通信単位期間、Ｐｓ  スリープ期間、Ｔ１  所要時間、Ｔｔ  遅延時間。
【図１】
0005870077.tif 000003
【図２】
0005870077.tif 000004
【図３】
0005870077.tif 000005
【図４】
0005870077.tif 000006
【図５】
0005870077.tif 000007
【図６】
0005870077.tif 000008
【図７】
0005870077.tif 000009
【図８】
0005870077.tif 000010
【図９】
0005870077.tif 000011
【図１０】
0005870077.tif 000012
【図１１】
0005870077.tif 000013
【図１２】
0005870077.tif 000014
【図１３】
0005870077.tif 000015
【図１４】
0005870077.tif 000016
【図１５】
0005870077.tif 000017
【図１６】
0005870077.tif 000018
【図１７】
0005870077.tif 000019
【図１８】
0005870077.tif 000020
【図１９】
0005870077.tif 000021
【図２０】
0005870077.tif 000022