エミュレート対象装置および当該エミュレート対象装置用のアプリケーションが、複数のエミュレート対象装置間での通信ないしデータ伝送を行う機能を有する場合がある。この場合に、例えば、エミュレート対象装置が通信ケーブルのコネクタを備え、複数のエミュレート対象装置が通信ケーブルによって接続されることで、複数のエミュレート対象装置の間で通信ないしデータ伝送が行われる。
このようなエミュレート対象装置を別の装置構成を持つエミュレート装置でエミュレートする場合に、当該エミュレート装置が通信ケーブルのコネクタを有しておらず、他のエミュレート装置との通信を例えば無線LAN通信で行う場合がある。しかしながら、複数のエミュレート対象装置の間の通信ケーブルを介した送受信が非常に高頻度で行われる場合には、エミュレート装置の間の無線LANを介した通信は遅延やパッケージロス率が比較的大きく、通信ケーブルと同様の高頻度の送受信の要求を満足できない。
このように、エミュレーション技術によって、所定のアプリケーションを処理するエミュレート対象装置をエミュレートできたとしても、装置構成の相違、特に装置間の通信に関わる構成の相違によって、装置間で通信を行うエミュレート対象装置を完全にエミュレートすることが困難ないし不可能であることがある。
本願では、エミュレート対象装置とエミュレート装置とで装置間の通信に関わる構成が異なる場合にも、互いに通信を行う複数のエミュレート対象装置を複数のエミュレート装置でエミュレートするための技術が提供される。
本発明の第1の態様は、所定のアプリケーションを処理する第1エミュレート対象装置をエミュレートする第1エミュレート手段と、所定のアプリケーションを処理する第2エミュレート対象装置をエミュレートする第2エミュレート手段と、前記第1エミュレート手段における処理と前記第2エミュレート手段における処理とを並行して行うよう、前記第1エミュレート手段および前記第2エミュレート手段を制御するエミュレート制御手段とを備え、前記エミュレート制御手段は、前記第2エミュレート手段における第2処理に基づいて処理を行うよう、前記第1エミュレート手段を制御し、かつ/または、前記第1エミュレート手段における第1処理に基づいて処理を行うよう、前記第2エミュレート手段を制御することを特徴とする情報処理装置である。
この情報処理装置によれば、情報処理装置内で、第2エミュレート手段における処理に、第1エミュレート手段における第1処理を反映させ、及び/又は、第1エミュレート手段における処理に、第2エミュレート手段における第2処理を反映させることができるので、この情報処理装置の通信に関わる構成に関わらず、第1エミュレート対象装置にデータを伝送する第2エミュレート対象装置と、第2エミュレート対象装置からデータが伝送されて、そのデータに基づいて処理を行う第1エミュレート対象装置、および/または、第2エミュレート対象装置にデータを伝送する第1エミュレート対象装置と、第1エミュレート対象装置からデータが伝送されて、そのデータに基づいて処理を行う第2エミュレート対象装置をエミュレートすることができる。
本発明の第2の態様は、第2操作入力手段を備えた第2端末装置から、前記第2操作入力手段に対する操作に応じた第2操作データを受信する第1受信手段をさらに備え、前記エミュレート制御手段は、前記第2操作入力手段に対する操作に基づいて処理を行うよう、前記第2エミュレート手段を制御し、かつ、前記第2処理に基づいて処理を行うよう、前記第1エミュレート手段を制御することを特徴とする第1の態様の情報処理装置である。
この情報処理装置によれば、この情報処理装置とは別の第2端末装置を用いて、第2エミュレート手段の処理のための操作入力を行うことができる。
本発明の第3の態様は、前記第2エミュレート手段における処理によって得られた第2出力用データを前記第2端末装置に送信する第1送信手段をさらに備えたことを特徴とする第2の態様の情報処理装置である。
この情報処理装置によれば、この情報処理装置とは別の第2端末装置を用いて、グラフィックデータ、サウンドデータ等の第2出力用データを受信できる。
本発明の第4の態様は、ユーザからの操作を受け付ける第1操作入力手段をさらに備え、前記エミュレート制御手段は、前記第1操作入力手段に対する操作に基づいて処理を行うよう、前記第1エミュレート手段を制御し、かつ、前記第1処理に基づいて処理を行うよう、前記第2エミュレート手段を制御することを特徴とする第1ないし第3のいずれかの態様の情報処理装置である。
この情報処理装置によれば、この情報処理装置を第1端末装置として用いて、第1エミュレート手段の処理を行うための操作入力を行うことができる。
本発明の第5の態様は、前記第1エミュレート手段における処理によって得られた第1出力用データを出力する第1出力手段をさらに備えたことを特徴とする第1ないし第4のいずれかの態様の情報処理装置である。
この情報処理装置によれば、この情報処理装置を第1端末装置として用いて、グラフィックデータ、サウンドデータ等の第1出力用データを出力できる。
本発明の第6の態様は、前記第1エミュレート手段は、前記第1処理によって第1処理結果データを生成し、前記第2エミュレート手段は、前記第2処理によって第2処理結果データを生成し、前記第2エミュレート手段は、前記第1処理結果データに基づいて処理を行い、第1エミュレート手段は、前記第2処理結果データに基づいて処理を行うことを特徴とする第1ないし第5のいずれかの態様の情報処理装置である。
この情報処理装置によれば、第1エミュレート手段の処理の結果を第2エミュレート手段の処理に反映させることができ、第2エミュレート手段の処理の結果を第1エミュレート手段の処理に反映させることができる。
本発明の第7の態様は、前記第1エミュレート手段は、前記第2処理を経て前記第2エミュレート手段から得た前記第2操作データに基づいて処理を行うことを特徴とする第2ないし第5のいずれかの態様の情報処理装置である。
この情報処理装置によれば、第1エミュレート手段は、第2エミュレート手段の処理を行うための第2操作データに基づいて処理を行うことができる。
本発明の第8の態様は、前記第1エミュレート対象装置と前記第2エミュレート対象装置とは、同種の装置であることを特徴とする第1ないし第7のいずれかの態様の情報処理装置である。
この情報処理装置によれば、互いに通信を行う同種の複数のエミュレート対象装置が処理する所定のアプリケーションをエミュレートできる。
本発明の第9の態様は、前記第1エミュレート対象装置が処理する前記所定のアプリケーションと、前記第2エミュレート対象装置が処理する前記所定のアプリケーションとは、同種のアプリケーションであることを特徴とする第1ないし第8のいずれかの態様の情報処理装置である。
この情報処理装置によれば、複数のエミュレート対象装置間で互いに通信を行う機能を含む同種のアプリケーションをエミュレートできる。
本発明の第10の態様は、前記エミュレート制御手段は、前記第1エミュレート手段における処理と前記第2エミュレート手段における処理とを同時に行うことを特徴とする第1ないし第9のいずれかの態様の情報処理装置である。
この情報処理装置によれば、互いに通信をしながら同時に処理を行う複数のエミュレート対象装置をエミュレートできる。
本発明の第11の態様は、前記第2端末装置は、前記情報処理装置と同種の装置であることを特徴とする第2または第3の態様の情報処理装置である。
この情報処理装置によれば、複数の同種の装置のいずれか一つをこの情報処理装置として用い、他を第2端末装置として用い、互いに通信をしながら処理を行う複数のエミュレート対象装置をエミュレートできる。
本発明の第12の態様は、第2操作入力手段を備えた第2端末装置から、前記第2操作入力手段に対する操作に応じた第2操作データを受信する第1受信手段と、前記第2エミュレート手段における処理によって得られた第2出力用データを前記第2端末装置に送信する第1送信手段と、ユーザからの操作を受け付ける第1操作入力手段とをさらに備え、前記エミュレート制御手段は、前記第2操作入力手段に対する操作に基づいて処理を行うよう、前記第2エミュレート手段を制御し、かつ、前記第1操作入力手段に対する操作および前記第2処理に基づいて処理を行うよう、前記第1エミュレート手段を制御し、前記第1受信手段および前記第1送信手段は、ローカル環境下で、前記第2端末装置と送受信を行うことを特徴とする第1ないし第11のいずれかの態様の情報処理装置である。
この情報処理装置によれば、ローカル環境下でこの情報処理装置とは別の第2端末装置との間の通信をしながら、所定のアプリケーションを処理する第1エミュレート対象装置および第2エミュレート対象装置をエミュレートできる。
本発明の第13の態様は、前記第1エミュレート対象装置による前記所定のアプリケーションの処理は、前記第1エミュレート対象装置における処理の結果得られる処理結果データを前記第2エミュレート対象装置に伝送する第1伝送処理を含み、かつ/または、前記第2エミュレート対象装置による前記所定のアプリケーションの処理は、前記第2エミュレート対象装置における処理の結果得られる処理結果データを前記第1エミュレート対象装置に伝送する第2伝送処理を含み、前記第1伝送処理および/または前記第2伝送処理の頻度は、前記第2端末装置と前記情報処理装置との間の通信の頻度よりも高いことを特徴とする第2または第3の態様の情報処理装置である。
この情報処理装置によれば、複数のエミュレート対象装置の間の送受信の頻度が、複数のエミュレート装置の間の送受信の頻度より高い場合にも、複数のエミュレート装置の間の送受信における遅延やパッケージロスの問題を回避して、所定のプリケーションを処理して互いに通信を行う複数のエミュレート対象装置をエミュレートできる。
本発明の第14の態様は、前記第1エミュレート対象装置が処理する前記所定のアプリケーションおよび前記第2エミュレート対象装置が処理する前記所定のアプリケーションは、ゲームアプリケーションであることを特徴とする第1ないし第13のいずれかの態様の情報処理装置である。
この情報処理装置によれば、ゲームアプリケーションを処理する複数のエミュレート対象装置をエミュレートできる。
本発明の第15の態様は、前記ゲームアプリケーションは、複数プレイヤが参加可能なゲームのアプリケーションであることを特徴とする第14の態様の情報処理装置である。
この情報処理装置によれば、対戦型ゲームアプリケーション等の、複数プレイヤが参加可能なゲームのアプリケーションを処理する複数のエミュレート対象装置をエミュレートできる。
本発明の第16の態様は、前記第1受信手段は、さらに第1操作入力手段を備えた第1端末装置から、前記第1操作入力手段に対する操作に応じた第1操作データを受信し、前記エミュレート制御手段は、前記第1操作入力手段に対する操作に基づいて処理を行うよう、前記第1エミュレート手段を制御し、かつ、前記第1処理に基づいて処理を行うよう、前記第2エミュレート手段を制御することを特徴とする第2または第3の態様の情報処理装置である。
この情報処理装置によれば、この情報処理装置とは別の第1端末装置を用いて、第1エミュレート手段の処理のための操作入力を行うことができる。
本発明の第17の態様は、前記第1送信手段は、さらに前記第1エミュレート手段における処理によって得られた第1出力用データを前記第1端末装置に送信することを特徴とする第17の態様の情報処理装置である。
この情報処理装置によれば、この情報処理装置とは別の第1端末装置を用いて、グラフィックデータ、サウンドデータ等の第1出力用データを受信することができる。
本発明の第18の態様は、前記第1端末装置は、前記情報処理装置と同種の装置であることを特徴とする第16または第17の態様の情報処理装置である。
この情報処理装置によれば、第1端末装置と同種の装置を、第1端末装置と第2端末装置との通信を仲介する情報処理装置として用いることができる。
本発明の第19の態様は、情報処理装置と、第2端末装置とからなる情報処理システムであって、前記第2端末装置は、ユーザからの操作を受ける第2操作入力手段と、前記第2操作入力手段に対する操作に応じた第2操作データを前記情報処理装置に送信する第2送信手段とを備え、前記情報処理装置は、前記第2操作データを受信する第1受信手段と、所定のアプリケーションを処理する第1エミュレート対象装置をエミュレートする第1エミュレート手段と、所定のアプリケーションを処理する第2エミュレート対象装置をエミュレートする第2エミュレート手段と、前記第1エミュレート手段における処理と前記第2エミュレート手段における処理とを並行して行うよう、前記第1エミュレート手段および前記第2エミュレート手段を制御するエミュレート制御手段と備え、前記エミュレート制御手段は、前記第2操作入力手段に対する操作に基づいて処理を行うよう、前記第2エミュレート手段を制御し、かつ、前記第2エミュレート手段における第2処理に基づいて処理を行うよう、前記第1エミュレート手段を制御することを特徴とする情報処理システムである。
この情報処理システムによれば、情報処理装置内で、第2エミュレート手段における処理に、第1エミュレート手段における第1処理を反映させ、及び/又は、第1エミュレート手段における処理に、第2エミュレート手段における第2処理を反映させることができるので、この情報処理装置の通信に関わる構成に関わらず、第1エミュレート対象装置にデータを伝送する第2エミュレート対象装置と、第2エミュレート対象装置からデータが伝送されて、そのデータに基づいて処理を行う第1エミュレート対象装置とをエミュレートすることができるとともに、第2端末装置を用いて、第2エミュレート手段の処理のための操作入力を行い、かつ、グラフィックデータ、サウンドデータ等の第2出力用データを受信できる。
本発明の第20の態様は、情報処理装置の第1エミュレート手段を用いて、所定のアプリケーションを処理する第1エミュレート対象装置をエミュレートする第1エミュレート工程と、前記情報処理装置の第2エミュレート手段を用いて、所定のアプリケーションを処理する第2エミュレート対象装置をエミュレートする第2エミュレート工程とを含み、前記第1エミュレート工程における処理と前記第2エミュレート工程における処理とは並行して行われ、前記第1エミュレート工程における処理は、前記第2エミュレート手段における第2処理に基づいて行われ、かつ/または、前記第2エミュレート工程における処理は、前記第1エミュレート手段における第1処理に基づいて行われることを特徴とする情報処理方法である。
この情報処理方法によれば、情報処理装置内で、第2エミュレート手段における処理に、第1エミュレート工程における第1処理を反映させ、及び/又は、第1エミュレート工程における処理に、第2エミュレート工程における第2処理を反映させることができるので、この情報処理装置の通信に関わる構成に関わらず、第1エミュレート対象装置にデータを伝送する第2エミュレート対象装置と、第2エミュレート対象装置からデータが伝送されて、そのデータに基づいて処理を行う第1エミュレート対象装置とをエミュレートすることができる。
本発明の第21の態様は、情報処理装置において実行されることで、前記情報処理装置を、所定のアプリケーションを処理する第1エミュレート対象装置をエミュレートする第1エミュレート手段、所定のアプリケーションを処理する第2エミュレート対象装置をエミュレートする第2エミュレート手段、および前記第1エミュレート手段における処理と前記第2エミュレート手段における処理とを並行して行うよう、前記第1エミュレート手段および前記第2エミュレート手段を制御するエミュレート制御手段として機能させる情報処理プログラムであって、前記エミュレート制御手段は、前記第2エミュレート手段における第2処理に基づいて処理を行うよう、前記第1エミュレート手段を制御し、かつ/または、前記第1エミュレート手段における第1処理に基づいて処理を行うよう、前記第2エミュレート手段を制御することを特徴とする情報処理プログラムである。
この情報処理プログラムによっても、情報処理装置内で、第2エミュレート手段における処理に、第1エミュレート手段における第1処理を反映させ、及び/又は、第1エミュレート手段における処理に、第2エミュレート手段における第2処理を反映させることができるので、この情報処理装置の通信に関わる構成に関わらず、第1エミュレート対象装置にデータを伝送する第2エミュレート対象装置と、第2エミュレート対象装置からデータが伝送されて、そのデータに基づいて処理を行う第1エミュレート対象装置とをエミュレートすることができる。
以下、図面を参照して本発明の実施の形態を説明する。なお、以下に説明する実施の形態は、本発明を実施する場合の一例を示すものであって、本発明を以下に説明する具体的構成に限定するものではない。本発明の実施にあたっては、実施の形態に応じた具体的構成が適宜採用されてよい。
図1は、本実施の形態の情報処理システムでエミュレートされる複数のエミュレート対象装置の外観を示す図であり、図2は、図1に示した複数のエミュレート対象装置の機能構成を示すブロック図である。まず、図1および図2を参照して、本実施の形態の情報処理システムがエミュレーション技術によって模倣ないし再現しようとする情報処理システムについて説明する。
図1を参照すると、第1エミュレート対象装置である第1端末装置510と第2エミュレート対象装置である第2端末装置520は、互いに同種の情報処理装置であり、具体的には同種の携帯型ゲーム機である。同種の情報処理装置とは、同じ装置構成を持った情報処理装置(典型的には、同じ型番の装置)であり、本明細書では、少なくともエミュレーションの対象とするアプリケーション(以下、「対象アプリケーション」という。)を処理するためのハードウェアおよびソフトウェアの構成が同一である情報処理装置をいう。
第1端末装置510は、Aボタン5111、Bボタン5112、および十字ボタン5113を含む操作入力部511と、液晶パネル5121およびスピーカ5122を含む出力部512とを備えている。また、第2端末装置520も同様に、Aボタン5211、Bボタン5212、および十字ボタン5213を含む操作入力部521と、液晶パネル5221およびスピーカ5222を含む出力部522とを備えている。
第1端末装置510および第2端末装置520は、いずれも図示しない通信ケーブル用コネクタを有し、これらのコネクタに通信ケーブル550の両端の接続プラグが各々挿し込まれることで、互いに通信可能に接続される。
図2を参照すると、第1エミュレート対象装置である第1端末装置510および第2エミュレート対象装置である第2端末装置520は同一の機能構成を有しており、第1端末装置510は、操作入力部511、出力部512、記憶部513、処理部514、受信部515、および送信部516を備え、第2端末装置520は、操作入力部521、出力部522、記憶部523、処理部524、受信部525、および送信部516を備えている。なお、受信部515と送信部516とは、別れている必要はなく一体のモジュールであってもよい。
操作入力部511は、第1端末装置510のユーザ(第1ユーザ)からの操作入力を受け、処理部514は、この操作に応じた第1操作データを生成する。操作入力部521は、第2端末装置520のユーザ(第2ユーザ)からの操作入力を受け、処理部514は、この操作に応じた第2操作データを生成する。出力部512は、処理部514における処理の結果生成されたグラフィックデータやサウンドデータ等の第1出力用データを出力し、出力部522は、処理部524における処理の結果生成されたグラフィックデータやサウンドデータ等の第2出力用データを出力する。
送信部516は、処理部514における処理によって得られた処理結果を第1処理結果データとして、通信ケーブル550を介して第2端末装置520に伝送し、送信部526は、処理部524における処理によって得られた処理結果を第2処理結果データとして、通信ケーブル550を介して第1端末装置510に伝送する。受信部515は、第2端末装置520から伝送されてきた第2処理結果データを受信し、受信部525は、第1端末装置510から伝送されてきた第1処理結果データを受信する。この第1端末装置510と第2端末装置520との間のデータの送受信は、比較的高頻度(高周期)、例えば1/60秒間隔で行われる。
記憶部513、523には、同一のアプリケーションが記憶されている。処理部514、524は、それぞれ記憶部513、523に記憶されたアプリケーションを読み出して、そのアプリケーションの処理を実行する。記憶部513、523は、第1端末装置510および第2端末装置520にそれぞれ内蔵された記憶デバイスであってもよいし、第1端末装置510および第2端末装置520に設けられたスロットに差し込まれた可搬型の記憶媒体であってもよい。
アプリケーションはゲームのアプリケーションであってよいが、本発明は、複数のユーザがプレイヤとして参加する対戦型のゲームのアプリケーション等、第1端末装置510と第2端末装置520との間の通信を伴い、第1端末装置510および第2端末装置520が、それぞれの操作入力部511、521に与えられたユーザの操作入力のみならず、接続された他方の端末装置からのデータにも基づいて処理を行うアプリケーションである場合に、特に有効である。
処理部514は、操作入力部511が受けた第1操作、および受信部515で受信した第2端末装置520からの第2処理結果データに基づいて、記憶部513に記憶されたアプリケーションを処理して第1処理結果データおよび第1出力用データを生成する。処理部524も同様に、操作入力部521から与えられた第2操作データ、および受信部525で受信した第1端末装置510からの第1処理結果データに基づいて、記憶部523に記憶されたアプリケーションを処理して第2処理結果データおよび第2出力用データを生成する。
なお、上記の例では、第1端末装置510では処理部514にて第1処理結果データが生成されてこれが送信部516から第2端末装置520に送信されるが、この第1処理結果データの代わりに第1出力用データが第2端末装置520に送信されてもよい。また、第1処理結果データの代わりに操作入力部511で生成された第1操作データがそのまま第2端末装置520に送信されてもよい。第2端末装置520においても同様に、第2処理データの代わりに第2出力用データが第1端末装置510に送信されてよく、あるいは、第2操作データがそのまま第1端末装置510に送信されてもよい。
図3は、通信を伴うアプリケーションの例として、複数のユーザがプレイヤとして参加する対戦型のゲームの一例としてのバックギャモンゲームのアプリケーションの処理を実行する場合の第1端末装置510と第2端末装置520の処理の一部を示すフロー図である。図3の左側の列の各ステップは第1端末装置510における処理であり、図3の右側の列の各ステップは第2端末装置520における処理を示している。
第1端末装置510のユーザ(第1ユーザ)が、第1端末装置510の操作入力部511に対して、サイコロを振るための操作入力をすると(ステップS311)、第1端末装置510の処理部514は、その第1操作に基づいて処理を行ってサイコロを振る処理を行って(ステップS312)、その処理結果(出たサイコロの目)を示すデータを第1処理結果データとして第2端末装置520に送信する(ステップS313)。また、処理部514は、処理結果(出たサイコロの目)を示すグラフィックデータを第1出力用データとして生成して(ステップS314)、出力部512にてこのグラフィックデータを出力する(ステップS315)。
第2端末装置520の受信部525は、第1端末装置510からの第1処理結果データを受信する(ステップS321)。そして、処理部524は、受けた第1処理結果データ(第1ユーザが出したサイコロの目)を示すグラフィックデータを第2出力用データとして生成して(ステップS322)、出力部512にてこのグラフィックデータを出力する(ステップS323)。
次に、第1端末装置510のユーザ(第1ユーザ)が、第1端末装置の操作入力部511に対して、駒を移動させるための操作入力をすると(ステップS316)、第1端末装置510の処理部514は、その第1操作に基づいて駒を移動させる処理を行って(ステップS317)、その処理結果(移動された駒及びその位置)を示すデータを第1処理結果データとして第2端末装置520に送信する(ステップS318)。また、処理部514は、処理結果(移動された駒及びその位置)に基づいて駒移動後の盤面を示すグラフィックデータを第1出力用データとして生成して(ステップS319)、出力部512にてこのグラフィックデータを出力する(ステップS320)。
第2端末装置520の受信部525は、第1端末装置510からの第1処理結果データを受信する(ステップS324)。そして、処理部524は、受けた第1処理結果データ(移動された駒及びその位置)に基づいて駒異動後の盤面を示すグラフィックデータを第2出力用データとして生成して(ステップS325)、出力部512にてこのグラフィックデータを出力する(ステップS326)。
以下、説明は省略するが、第1端末装置510と第2端末装置520とで上記の処理を交互に繰り返していくことで、ゲームが進行していく。このようにして、第1端末装置510と第2端末装置520とで、ゲームの進行内容が同一となって、ゲームの通信対戦が実現される。
なお、アプリケーションは、上記の例のように第1端末装置510への操作入力と第2端末装置520への操作入力とが所定の順番に従って行われるものに限らず、例えば、格闘ゲームのアプリケーションのように、第1端末装置510への操作入力と第2端末装置520への操作入力とが随時に行われるものであってもよい。この場合にも、第1端末装置510からは、操作入力部511に対して与えられた操作入力に基づいて処理部514がアプリケーションに従った処理を行い、それによって得られたデータが第2端末装置520に送信されるが、操作入力部510に対して与えられた操作入力自体を示すデータが第2端末装置520に送信されてよく、処理部514によって生成された第1出力用データが第2端末装置530に送信されてもよい。また、第2端末装置520から第1端末装置510に送信されるデータも同様である。
次に、このような通信を伴うアプリケーションを処理する第1端末装置510および第2端末装置520をエミュレート対象装置として、エミュレート対象装置とは異なる構成を有するエミュレート装置でこれらのエミュレート対象装置をエミュレートする場合を説明する。図4は、図1および図2の複数のエミュレート対象装置をエミュレートする複数のエミュレート装置の外観を示す図であり、図5は、図4に示した複数のエミュレート装置の機能構成を示すブロック図である。図4および図5は、本発明の原理を利用しない例を説明する図であり、以下では、これらを参照して本発明が解決する課題を説明する。
図4に示すように、第1エミュレート装置である第1端末装置310と第2エミュレート装置である第2端末装置320はいずれも携帯型のゲーム機であって、互いに同種のゲーム機である。第1端末装置310は、Aボタン3111、Bボタン3112、Xボタン3113、Yボタン3114、十字ボタン3115タッチセンサ3117は、下側液晶パネル3123、スライドパッド3116、およびタッチセンサ3117を含む操作入力部311と、上側液晶パネル3121、スピーカ3122、および下側液晶パネル3123を含む出力部312とを備えている。タッチセンサ3117は、下側液晶パネル3123に重ねて設けられ、タッチセンサ3117と下側液晶パネル3123とでタッチパネルが構成されている。
また、第2端末装置320も同様に、Aボタン3211、Bボタン3212、Xボタン3213、Yボタン3214、十字ボタン3215、スライドパッド3216、タッチセンサ3217を含む操作入力部321と、上側液晶パネル3221、スピーカ3222、および下側液晶パネル3223を含む出力部322とを備えている。第2端末装置320においても、下側液晶パネルとタッチセンサ3217とは重ねて設けられ、これらによってタッチパネルが構成されている。
第1端末装置310および第2端末装置320には、通信ケーブル用コネクタは設けられておらず、その代わりに、図示しない無線LANモジュールを備えている。端末装置310および第2端末装置320は、無線LANモジュールを用いて、無線LANルータ350に無線接続可能であり、無線LANルータ350を介して互いに通信可能である。また、無線LANルータ350は、図示しないモデムを介してインターネットに接続しており、これによって、第1端末装置310および第2端末装置320はインターネットにも接続可能である。
図5を参照すると、第1エミュレート装置としての第1端末装置310および第2エミュレート装置としての第2端末装置320は同一の機能構成を有しており、第1端末装置310は、操作入力部311、出力部312、記憶部313、エミュレート部314、受信部315、および送信部316を有し、第2端末装置320は、操作入力部321、出力部322、記憶部323、エミュレート部324、受信部325、および送信部316を有している。第1端末装置310の受信部315および送信部316、および第2端末装置320の受信部325および送信部326は、それぞれ上記の無線LANモジュールによって実現される。
記憶部313、323には、いずれも第1端末装置510および第2端末装置520に記憶されたアプリケーションのROMイメージが記憶されている。エミュレート部314、324は、このROMイメージを用いてエミュレート処理を行うことで、この第1端末装置310および第2端末装置320によって、第1端末装置510と第2端末装置520とで対象アプリケーションを実行するのと同様に、対象アプリケーションを実行する。すなわち、エミュレート装置としての第1端末装置310および第2端末装置320は、このエミュレート部314、324によって、対象アプリケーションを実行するエミュレート対象装置である第1端末装置510および第2端末装置520をエミュレートする。
なお、記憶部313、323は、第1端末装置310および第2端末装置320にそれぞれ内蔵された記憶デバイスであってもよいし、第1端末装置310および第2端末装置320に設けられたスロットに差し込まれた可搬型の記憶媒体であってもよい。また、記憶部313、323は、第1端末装置310および第2端末装置320にそれぞれ内蔵された記憶デバイスである場合において、そこに記憶されるROMイメージは、インターネット経由でダウンロードされたものであってよい。
第1端末装置310の送信部316から送信されたデータは無線LANルータ350を介して第2端末装置320に伝送されて、第2端末装置の受信部325にて受信され、第2端末装置320の送信部326から送信されたデータは無線LANルータ350を介して第1端末装置310に伝送されて、第1端末装置310の受信部315にて受信される。この第1端末装置310と第2端末装置320との間のデータの送受信は、比較的低頻度(低周期)、例えば1/20秒間隔で行われる。このように、エミュレート装置である第1端末装置310および第2端末装置320では、エミュレート対象装置の通信ケーブル550を、無線LANルータ350を介した無線LAN通信で代替しており、これをリンクケーブルシミュレーションという。
エミュレート対象装置である第1端末装置510と第2端末装置520との間では、高周期で通信が行われるのに対して、エミュレート装置である第1端末装置310と第2端末装置320との間では、低周期でしか通信を行うことができない。しかも、エミュレート装置である第1端末装置310および第2端末装置320では、その間の通信に無線LANを利用しているので、通信ケーブル550を利用するエミュレート対象装置と比較して、遅延およびパッケージロス率が大きくなる。よって、図5に示す構成では、通信を伴うアプリケーションを実行する第1端末装置510および第2端末装置520の通信の要求を満足できない。
そこで、本発明の実施の形態では、第1端末装置310および第2端末装置320を用いて、第1端末装置510と第2端末装置520との間のリンクケーブルシミュレーションを行うために、以下の構成を採用する。図6は、本実施の形態の情報処理システム100を構成する第1端末装置110および第2端末装置120の機能構成を示すブロック図である。第1端末装置110および第2端末装置120のハードウェア構成は、図4に示す構成と同じである。なお、図6では、無線LANルータの図示を省略しているが、図6の例においても第1端末装置110と第2端末装置120とは、無線LANルータを介して無線通信を行う。
図6に示すように、情報処理装置としての第1端末装置110と第2端末装置120によって、本実施の形態の情報処理システム100が構成されている。なお、図6では、第1端末装置110のほかに、1つの端末装置(第2端末装置120)を有し、2つの端末装置によって情報処理システム100が構成されているが、第2端末装置120と同様の端末装置が複数あってもよい。
第1端末装置110は、操作入力部111、出力部112、記憶部113、エミュレート制御部114、受信部115、および送信部116を備え、第2端末装置120も、操作入力部121、出力部122、記憶部123、エミュレート制御部114、受信部125、および送信部126を備える。記憶部113には、対象アプリケーションのROMイメージ、および本発明の実施の形態の情報処理プログラムとしてのエミュレーションプログラムが記憶されている。
エミュレート制御部114は、CPU、メモリ、記憶部113からメモリにロードされたエミュレーションプログラムなどによって実現され、図6ではそれらの連携によって実現される機能ブロックを描いている。また、エミュレート制御部124も、CPU、メモリ、記憶部113からメモリにロードされたエミュレーションプログラムなどによって実現する。これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せ等の種々の形で実現できることは、当業者に理解されるところである。
上記のように、本実施の形態のエミュレーションプログラムは、図6に示す第1端末装置110のエミュレート制御部114を構成する第1部分と、第2端末装置120のエミュレート制御部124を構成する第2部分とを有し、CPUが第1部分を実行することでエミュレート制御部114が構成され、CPUが第2部分を実行することで、エミュレート制御部124が構成される。
なお、エミュレーションプログラムは、エミュレート制御部114のみを構成するものであってもよい。すなわち、エミュレーションプログラムは、第1部分のみからなるものであってもよい。この場合には、エミュレート制御部124は、エミュレーションプログラムとは別のプログラムによって実現されてもよく、あるいは、第2端末装置120にインストールされているファームウェアによって実現されてもよい。
第2端末装置120の操作入力部125は、第2端末装置120のユーザ(第2ユーザ)の操作入力(第2操作)を受け付け、エミュレート制御部124は、その第2操作を示す第2操作データを生成する。エミュレート制御部124は、生成した第2操作データを送信部126から第1端末装置110に送信するように、送信部126を制御する。
また、第2端末装置120の受信部125は、第1端末装置110から送信されてきた第2出力用データを受信する。エミュレート制御部124は、受信部125にて受信した第2出力用データを出力部122にて出力するように、出力部122を制御する。このように、第2端末装置120のエミュレート制御部124は、主に第2操作データおよび第2出力用データの入出力を管理するものであり、データの入出力管理部として機能する。
第1端末装置110の受信部115は、第2端末装置120の送信部126から送信されてきた第2操作データを受信する。操作入力部111は、第1端末装置110のユーザ(第1ユーザ)の操作入力(第1操作)を受け付け、エミュレート制御部114は、その第1操作を示す第1操作データを生成する。
第1端末装置110のエミュレート制御部114は、入力分配部1141、第1エミュレート部1142、第2エミュレート部1143、および出力分配部1144からなる。エミュレート制御部114は、ROM管理やUI管理を行うとともに、入力分配部1141、第1エミュレート部1142、第2エミュレート部1143、および出力分配部1144の動作を制御する。
第1エミュレート部1142および第2エミュレート部1143は、いずれもCPU、メモリ、記憶部113からメモリにロードされたROMイメージなどによって実現され、エミュレーションプログラムによって制御される。第1エミュレート部1142および第2エミュレート部1143は、エミュレータコアとも呼ばれる。なお、エミュレート制御部114、124の上記の構成は、1つのプロセッサによって構成されてもよく、あるいは、複数台のプロセッサが分担して構成してもよい。
入力分配部1141は、生成された第1操作データ、および受信部115にて受信した第2操作データを分配する。具体的には、入力分配部1141は、第1操作データを第1エミュレート部1142に与え、第2操作データを第2エミュレート部1143に与える。なお、第2端末装置120と同様の構成を有する端末装置が複数あり、3以上の端末装置で情報処理システム100が構成される場合には、エミュレート部もそれに合わせて3以上構成され、入力分配部1141は、対応するエミュレート部に操作データを分配する。
第1エミュレート部1142は、記憶部113に記憶されたROMイメージおよびエミュレーションプログラム(の第1部分)を用いて、対象アプリケーションを処理するエミュレート対象装置としての第1端末装置510をエミュレートする。第2エミュレート部1143も同様に、記憶部113に記憶されたROMイメージおよびエミュレーションプログラム(の第1部分)を用いて、対象アプリケーションを処理するエミュレート対象装置としての第2端末装置520をエミュレートする。
このように、本実施の形態の情報処理システム100では、第1端末装置510のエミュレーションおよび第2端末装置520のエミュレーションがいずれも第1端末装置110で行われる。エミュレート制御部114は、第1エミュレート部1142における処理と第2エミュレート部1143における処理とを同期させて、それらの処理を並行して行うよう、第1エミュレート部1142および第2エミュレート部1143を制御する。これにより、第1エミュレート部1142における処理と第2エミュレート部1143における処理は同時に行われる。
第1エミュレート部1142は、入力分配部1141から分配された第1操作データと、第2エミュレート部1143からの第2処理結果データに基づいて、ROMイメージに従った処理を行い、第2エミュレート部1143は、入力分配部1141から分配された第2操作データと、第1エミュレート部1142からの第1処理結果データに基づいて、ROMイメージに従った処理を行う。
第1エミュレート部1142は、第1操作データおよび第2処理結果データに基づいて処理(第1処理)を行い、第1処理結果データおよび第1出力用データを生成し、第2エミュレート部1143は、第2操作データおよび第1処理結果データに基づいて処理(第2処理)を行い、第2処理結果データおよび第2出力用データを生成する。第1エミュレート部1142で生成された第1処理結果データは、第2エミュレート部1143に与えられ、第2エミュレート部1143で生成された第2処理結果データは、第1エミュレート部1142に与えられる。また、第1エミュレート部1142で生成された第1出力用データは、出力分配部1144によって出力部112に分配され、出力部112から出力され、第2エミュレート部1143で生成された第2出力用データは、出力分配部1144によって送信部116に分配され、送信部116から第2端末装置120に送信される。
このように、第1エミュレート部1142と第2エミュレート部1143との間のリンクケーブルシミュレーションは、第1端末装置110内で実現する。エミュレート制御部114は、第1端末装置110内でリンクケーブルシミュレーションを実現するために、リンクケーブル関連のレジスタを実現するとともに、第1エミュレート部1142と第2エミュレート部との間の第1処理結果データおよび第2処理結果データの転送シーケンスの制御を実行する。
エミュレート制御部114を構成するメモリには、第1エミュレート部1142で生成された第1出力用データを一時的に保存するための第1メモリ領域、第2エミュレート部1143で生成された第2出力用データを一時的に保存するための第2メモリ領域、出力分配部1144によって分配された第1出力用データを一時的に保存するための第1バッファ領域、および出力分配部1144によって分配された第2出力用データを一時的に保存するための第2バッファ領域が確保される。
上述のように、本実施の形態の情報処理システム100では、第2端末装置120は、エミュレート部を有しておらず、第2操作データを生成して、第1端末装置110に送信し、第2出力用データを受信して出力するのみである。このような第2端末装置120から見ると、第1端末装置110は、第2端末装置120をクライアントとするサーバとして機能しており、クライアントである第2端末装置120は、第2ユーザの操作入力をサーバとしての第1端末装置110に送信し、後述するように、サーバである第1端末装置110から表示用のレンダリングデータを受信する。このように、情報処理システム100は、サーバ/クライアント構成を採用しているということもできる。
なお、上記の例では、第1エミュレート部1142は、第1処理の結果得られた第1処理結果データを第2エミュレート部1143に渡し、第2エミュレート部1143はこの第1処理結果データ(と第2操作データ)に基づいて処理を行ったが、第1エミュレート部1142が、第1処理を行うことで、第1処理結果データに代えて、第1操作データをそのまま第2エミュレート部1143に渡してもよい。この場合に、第2エミュレート部1143は、第1操作データ(と第2操作データ)に基づいて対象アプリケーションに基づく処理を行うことができる。第2エミュレート部1143から第1エミュレート部1142に与えられるデータについても同様である。
さらに、第1エミュレート部1142は、第1処理結果データに代えて、出力部112から出力すべき第1出力用データを第2エミュレート部1143に与えてもよい。また、第2エミュレート部1143も、第2処理結果データに代えて、送信部116から送信すべき第2出力用データを第1エミュレート部1142に与えてもよい。すなわち、第1エミュレート部1142から第2エミュレート部1143に与えられるデータ(第1処理結果データ、第1操作データ、および第1出力用データ)は、いずれも第1エミュレート部における第1処理を経て第2エミュレート部1143に与えられるデータであり、第2エミュレート部1143から第1エミュレート部1142に与えられるデータ(第2処理結果データ、第2操作データ、および第2出力用データ)は、第2エミュレート部1143における第2の処理を経て、第1エミュレート部1142に与えられるデータである。
第1出力用データは、グラフィックデータ、および/またはサウンドデータを含むがこれらに限られない。例えば、第1端末装置110および第2端末装置120がバイブレーション装置を備えている場合には、これらのバイブレーション装置を駆動するための信号も第1出力用データまたは第2出力用データとなり得る。
なお、上記の例では、第1エミュレート部1142で第1出力用データを生成し、第2エミュレート部1143で第2出力用データを生成した。これは、例えば、対象アプリケーションがバックギャモンゲームのアプリケーションである場合に、第1出力用データとして、第1ユーザの陣地が手前になるようなグラフィックデータを生成し、第2出力用データとして、第2ユーザの陣地が手前になるようなグラフィックデータを生成するなど、第1出力用データと第2出力用データとが異なっていてよいことを意味している。
変形例として、第1出力用データと第2出力用データが同じデータであってよい。さらに、この場合には、同一の出力用データを生成する1つの出力用データ生成部が設けられてもよく、第1エミュレート部1142および第2エミュレート部1143は、それぞれ第1処理結果データおよび第2処理結果データをこの出力用データ生成部に出力し、出力用データ生成部は第1処理結果データおよび第2処理結果データに基づいて、第1端末装置110と第2端末装置120とで共用される出力用データを生成する。
本実施の形態の情報処理システム100において、対象アプリケーションとして、例えばバックギャモンゲームのアプリケーションを実行する場合には、図3を引用して第1端末装置510と第2端末装置520との間で実行される処理として説明したのと同様の手順で第1エミュレート部1142および第2エミュレート部1143との間で処理が実行されてゲームが進行する。すなわち、図3における第1端末装置510の処理および第2端末装置520の処理をそれぞれ第1エミュレート部1142および第2エミュレート部1143の処理とすることで、本実施の形態の情報処理システム100の処理を説明できる。この場合に、図3の送信/受信は、エミュレータ制御部114内での第1エミュレート部1142と第2エミュレート部1143との間のデータの受け渡しに置き換えられる。
以上のように、本実施の形態の情報処理システム100によれば、リンクケーブルシミュレーションが第1端末装置110内で行われるので、エミュレート対象装置である第1端末装置510および第2端末装置520とエミュレート装置である第1端末装置110および第2端末装置120との間の通信に関わる構成の相違に関わらず、第1端末装置510および第2端末装置520を第1端末装置110および第2端末装置120でエミュレートすることができる。
なお、上記の実施の形態では、第1エミュレート部1142と第2エミュレート部1143がいずれも同一の対象アプリケーションのROMイメージを実行したが、これに限らず、エミュレート制御部114に構成される複数のエミュレート部が、互いに異なるROMイメージを実行してもよい。すなわち、エミュレート制御部114に構成されるあるエミュレート部がエミュレートするエミュレート対象装置にて処理される対象アプリケーションと、エミュレート制御部114に構成される他のエミュレート部がエミュレートするエミュレート対象装置にて処理される対象アプリケーションとが異種のものであってもよい。
本発明の原理を応用することで、以下のような構成を実現することもできる。すなわち、上記の実施の形態では、第1端末装置において、入力分配部1141、第1エミュレート部1142、第2エミュレート部1143、および出力分配部1144を有するエミュレート制御部114が構成されるとともに、操作入力部111と出力部112も設けられ、第1ユーザからの操作入力を受け付けて第1ユーザのために出力を行う端末装置としても用いられたが、入力分配部1141、第1エミュレート部1142、第2エミュレート部1143、および出力分配部1144を有するエミュレート制御部114が専用の情報処理装置として構成され、第1ユーザは、この専用の情報処理装置をサーバとして、この情報処理装置とは別の第1端末装置110をクライアントとして、上記で説明した第2端末装置120と同様に機能させることで、第1端末装置110と第2端末装置120との間の通信を伴う対象アプリケーションのエミュレートを実現することもできる。
図7は、専らサーバとして上記で説明したエミュレート制御部114を提供するために用いられる情報処理装置の機能構成を示すブロック図である。図7の例では、3つの端末装置がクライアントとなる場合を示している。なお、端末装置は4つ以上であってもよい。情報処理装置200は、記憶部213、エミュレート制御部214、受信部215、および送信部216を備えている。
記憶部213には、記憶部113と同様に、対象アプリケーションのROMイメージと、エミュレーションプログラムが記憶されている。エミュレート制御部214は、CPU、メモリ、記憶部213からメモリにロードされたエミュレーションプログラムなどによって実現され、図7ではそれらの連携によって実現される機能ブロックを描いている。特に、クライアントとなる端末装置の数に応じた数のエミュレート部が構成され、本例のように、クライアントとなる端末装置が3つある場合には、3つのエミュレート部が構成される。すなわち、エミュレート制御部214は、入力分配部2141、第1エミュレート部2142、第2エミュレート部2143、第3エミュレート部2144、および出力分配部2145からなる。
受信部215は、第1端末装置、第2端末装置、および第3端末装置からそれぞれ第1操作データ、第2操作データ、および第3操作データを受信する。入力分配部2141は、受信部215にて受信した第1操作データ、第2操作データ、および第3操作データをそれぞれ第1エミュレート部2142、第2エミュレート部2143、第3エミュレート部2144のうちの対応するものに分配する。第1エミュレート部2142、第2エミュレート部2143、第3エミュレート部2144は、各々ROMイメージに従って処理を行い、処理結果データを他のエミュレート部に出力するとともに、それぞれ第1出力用データ、第2出力用データ、および第3出力用データを生成して出力分配部2145に出力する。
第1エミュレート部2142は、第1操作データ、第2エミュレート部2143からの第2処理結果データ、および第3エミュレート部2144からの第3処理結果データに基づいて処理を行う。第2エミュレート部2143は、第2操作データ、第1エミュレート部2142からの第1処理結果データ、および第3エミュレート部2144からの第3処理結果データに基づいて処理を行う。第3ミュレート部2144は、第3操作データ、第1エミュレート部2142からの第1処理結果データ、および第2エミュレート部2143からの第2処理結果データに基づいて処理を行う。
出力分配部2145は、第1出力用データ、第2出力用データ、および第3出力用データをそれぞれ第1端末装置、第2端末装置、および第3端末装置に送信するように分配して、送信部216に出力する。送信部216は、第1出力用データ、第2出力用データ、および第3出力用データをそれぞれ第1端末装置、第2端末装置、および第3端末装置に送信する。
この図7の構成において、情報処理装置210は、第1〜第3端末装置と同様のハードウェア構成を有する装置であってよく、例えば、情報処理装置210と第1〜第3端末装置がいずれも図4に示した第1端末装置310および第2端末装置320のように、携帯型のゲーム機であってよい。また、情報処理装置210が据え置き型のゲーム機本体であり、第1〜第3端末装置がこのゲーム機本体に用いる画面付きのコントローラであってもよい。この場合に、コントローラとしての第1〜第3端末装置は、ケーブル(有線)でゲーム機本体に接続されて、ゲーム機本体と通信可能にされてよく、ゲーム機本体と近距離無線通信によって、操作データや出力用データの送受信を行ってもよい。
なお、上記の実施の形態において、第1端末装置110と第2端末装置120との間の通信、および情報処理装置210と第1〜第3端末装置との間の通信は、いずれも無線LANルータを介した無線LAN通信を利用したが、これらの通信はインターネットを介したものであってもよく、あるいは、ブルートゥース(登録商標)やIEEE802.11シリーズの無線通信規格や有線接続による装置間の直接通信等及び実施の形態のような無線LANルータを介した無線LAN通信等を含む、ローカル環境下における(インターネット介さない)装置間の直接的な通信であってもよい。