説明

ゲーム機、無線モジュールおよびゲームシステム

【課題】相互に無線通信可能な複数のゲーム機を利用して多人数ゲームプレイを行うときに、各ゲーム機における所定の処理の実行タイミングを簡単に同期させることのできるゲーム機、無線モジュールおよびゲームプログラムを提供すること。
【解決手段】マスタの無線モジュールは、クライアントの無線モジュールに対してゲーム処理周期と同じ周期でビーコン信号を送信する。マスタの無線モジュールおよびクライアントの無線モジュールは、ビーコン信号の送信タイミングが到来したときに割込信号を出力する。マスタのゲーム処理部およびクライアントのゲーム処理部は、それぞれ、割込信号に基づいてVカウンタを調整する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はゲーム機、無線モジュールおよびゲームシステムに関し、特に、相互に無線通信可能な複数のゲーム機を利用した多人数ゲームプレイを可能にするためのゲーム機、無線モジュールおよびゲームシステムに関する。
【背景技術】
【0002】
従来、基準となるゲーム機から送信される信号の受信タイミングに基づいて、他のゲーム機の送信タイミングを調整する技術がある(例えば、特許文献1参照)。
【0003】
また従来、マスタのゲーム機からクライアントのゲーム機に、特定のタイミングにおける時刻情報を送信し、クライアントのゲーム機が、受信した時刻情報に基づいてゲーム処理周期を調整する技術がある(例えば、特許文献2参照)。
【0004】
また従来、マスタのゲーム機からクライアントのゲーム機に一定周期でリセット指令を送信し、クライアントのゲーム機は、リセット指令を受信したことに応じて同期カウンタをリセットする技術がある(例えば、特許文献3参照)。
【特許文献1】特開2000−135380号公報
【特許文献2】特開2005−261856号公報
【特許文献3】特開平8−243255号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、上記特許文献1の技術は、複数のゲーム機間で通信のタイミングを調整しているに過ぎず、特許文献1の技術だけでは複数のゲーム機間で処理の周期を合わせることはできない。
【0006】
また、上記特許文献2の技術では、マスタのゲーム機からクライアントのゲーム機に定期的に時刻情報を送信する必要があり、通信回線の利用効率がその分だけ低下してしまうという問題がある。
【0007】
また、上記特許文献3の技術は、有線通信においては有効であるが、特許文献3の技術を無線通信に適用した場合には遅延およびジッタの問題があり、無線通信に簡単に適用することができない。
【0008】
それゆえに、本発明は、相互に無線通信可能な複数のゲーム機を利用して多人数ゲームプレイを行うときに、各ゲーム機における所定の処理の実行タイミングを簡単に同期させることのできるゲーム機、無線モジュールおよびゲームプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号は、本発明の理解を助けるために、図面との対応関係の一例を示したものであって、本発明の範囲を何ら限定するものではない。
【0010】
本発明のゲーム機(10a)は、相互に無線通信可能な複数のゲーム機(10a,10b)を利用した多人数ゲームプレイを可能にするためのゲーム機であって、前記多人数ゲームプレイにおける通信相手に設定された他のゲーム機(10b)に設けられた他の無線モジュール(12b)との間で内部のタイマ(124a,124b)を同期させる時刻同期機能を有する無線モジュール(12a)と、所定の処理を実行する処理部(14a、18a)と、自己のゲーム機の前記無線モジュールの前記タイマ(124a)の値に基づいて、前記処理部による前記所定の処理の実行タイミングを調整する調整部(14a)とを備える。
【0011】
前記処理部は、画像データを生成して表示バッファに記憶する処理を実行し、前記ゲーム機は、前記表示バッファに記憶された前記画像データを表示部に出力する出力部をさらに備え、前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記出力部が前記画像データを表示部に出力するタイミングを調整してもよい。
【0012】
前記処理部は、画像データを生成して表示バッファに記憶する処理を実行し、前記ゲーム機は、前記表示バッファに記憶された前記画像データを表示部に出力する出力部をさらに備え、前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記表示バッファに記憶された画像データが前記処理部によって更新されるタイミングを調整してもよい。
【0013】
前記処理部は、画像データを生成して少なくとも2つの表示バッファのうちのいずれかに記憶する処理を実行し、前記ゲーム機は、前記2つの表示バッファのうちのいずれかに記憶された前記画像データを表示部に出力する出力部をさらに備え、前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記出力部によって使用される前記表示バッファが切り替わるタイミングを調整してもよい。
【0014】
前記処理部は、所定の手順が定義された1単位のゲーム処理を繰り返して実行し、前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記処理部が前記1単位のゲーム処理を実行するタイミングを調整してもよい。
【0015】
前記ゲーム機は、プレイヤによって操作される入力部をさらに備え、前記処理部は、前記入力部の操作情報に基づいて所定の処理を実行し、前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記処理部による前記操作情報に基づく処理を実行するタイミングを調整してもよい。
【0016】
前記無線モジュールは、前記タイマの値に基づいて、前記他のゲーム機との間で前記操作情報を交換するタイミングを決定してもよい。
【0017】
前記ゲーム機は、処理周期を計測するカウンタをさらに備え、前記処理部は、前記カウンタの値に基づいて、前記所定の処理を周期的に実行し、前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記カウンタの値を調整してもよい。
【0018】
前記無線モジュールは、前記タイマの値に基づいて、割り込み信号を一定周期で出力する割り込み信号出力手段を備え、前記調整部は、前記無線モジュールからの前記割り込み信号の出力タイミングに基づいて前記所定の処理の実行タイミングを調整してもよい。これにより、無線モジュールの変更を最小限にすることができる。
【0019】
前記ゲーム機は、処理周期を計測するカウンタをさらに備え、前記処理部は、前記カウンタの値に基づいて、所定周期で前記所定の処理を実行し、前記割り込み信号出力手段は、前記タイマの値に基づいて、前記所定周期で前記割り込み信号を出力し、前記調整部は、前記無線モジュールからの前記割り込み信号が出力されるタイミングにおける前記カウンタの値が予め定められた固定値に近づくように、前記カウンタの値を調整してもよい。
【0020】
前記無線モジュールは、他の無線モジュールにビーコン信号を送信または他の無線モジュールからビーコン信号を受信し、前記ゲーム機は、前記無線モジュールによる前記ビーコン信号の送信周期を一定周期に設定するビーコン間隔設定手段を備え、前記割り込み信号出力手段は、前記ビーコン信号の送信タイミング(クライアント側にとっては受信タイミング)が到来したときに前記割り込み信号を出力してもよい。
【0021】
前記処理部は、一定周期で、他の無線モジュールから受信したゲーム処理に必要なデータに基づく前記所定の処理を繰り返して実行し、前記ゲーム機は、前記無線モジュールによるビーコン信号の送信周期を前記一定周期に設定するビーコン間隔設定手段を備え、前記無線モジュールは、前記タイマの値に基づいて、前記ビーコン信号を一定周期で送信または受信し、かつ、他の無線モジュールにビーコン信号を送信または他の無線モジュールからビーコン信号を受信するごとに、当該他の無線モジュールとの間で前記ゲーム処理に必要なデータを送信または受信し、前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づく前記ビーコン信号の送信タイミングに基づいて、前記処理部による前記所定の処理の実行タイミングを調整してもよい。
【0022】
前記ゲーム機は、プレイヤによって操作される入力部をさらに備え、前記処理部は、自己の前記入力部の操作情報と他のゲーム装置の前記入力部の操作情報とに基づく所定の処理の実行を繰り返し、前記無線モジュールは、前記ビーコン信号の送受信ごとに、前記他のゲーム機との間で前記操作情報を交換してもよい。
【0023】
前記無線モジュールは、前記タイマの値に基づいて、前記ビーコン信号の送信タイミングが到来したときに前記割り込み信号を出力する割り込み信号出力手段をさらに備え、前記調整部は、前記無線モジュールからの前記割り込み信号の出力タイミングに基づいて前記所定の処理の実行タイミングを調整してもよい。
【0024】
前記無線モジュールは、他の無線モジュールにビーコン信号を送信または他の無線モジュールからビーコン信号を受信した後、当該他の無線モジュールとの間でゲーム処理に必要なデータを送信または受信し、さらにその後、前記タイマの値に基づいて、次のビーコン信号の送信タイミングが到来するまでスリープモードで動作するスリープ機能を備えてもよい。
【0025】
前記処理部は、前記無線モジュールの前記タイマの値を一定周期で読み取り、当該読み取った値に基づいて、前記処理部による前記所定の処理の実行タイミングを調整してもよい。
【0026】
前記処理部は、所定の手順が定義された1単位のゲーム処理を繰り返して実行し、当該1単位のゲーム処理の処理周期のN倍(Nは自然数)の周期で前記無線モジュールの前記タイマの値を読み取ってもよい。
【0027】
前記無線モジュールは、IEEE802.11の規格に基づいて他のゲーム機に設けられた他の無線モジュールとの間で内部のタイマを同期させてもよい。
【0028】
本発明の他のゲーム機(10a)は、相互に無線通信可能な複数のゲーム機(10a,10b)を利用した多人数ゲームプレイを可能にするためのゲーム機であって、前記多人数ゲームプレイにおける通信相手に設定された他のゲーム機(10b)に設けられた他の無線モジュール(12b)との間で内部のタイマ(124a,124b)を同期させる時刻同期機能を有する無線モジュール(12a)と、所定の処理を実行する処理部(14a、18a)と、自己のゲーム機の前記無線モジュールの前記タイマ(124a)の値に基づいて、前記処理部による前記所定の処理の実行タイミングを決定するする決定部(14a)とを備える。
【0029】
本発明のさらに他のゲーム機(10a)は、相互に無線通信可能な複数のゲーム機(10a,10b)を利用した多人数ゲームプレイを可能にするためのゲーム機であって、前記多人数ゲームプレイにおける通信相手に設定された他のゲーム機(10b)に設けられた他の無線モジュール(12b)との間で内部のタイマ(124a,124b)を同期させる時刻同期機能を有する無線モジュール(12a)を接続可能なコネクタ(図示せず)と、所定の処理を実行する処理部(14a、18a)と、前記コネクタに接続された前記無線モジュールの前記タイマ(124a)の値に基づいて、前記処理部による前記所定の処理の実行タイミングを調整する調整部(14a)とを備える。
【0030】
本発明の無線モジュール(12a)は、相互に無線通信可能な複数のゲーム機(10a,10b)を利用した多人数ゲームプレイを可能にするための無線モジュールであって、他の無線モジュール(12b)との間で内部のタイマ(124a,124b)を同期させる時刻同期手段(123a)と、自己の前記タイマ(124a)の値に基づいて、割り込み信号を一定周期で出力する割り込み信号出力手段(123a)とを備えた、無線モジュール。
【0031】
相互に無線通信可能な複数のゲーム機(10a,10b)を利用した多人数ゲームプレイを可能にするためのゲームシステムであって、
当該ゲームシステムは、第1ゲーム機(10a)および第2ゲーム機(10b)の少なくとも2台のゲーム機を備え、
前記第1ゲーム機は、
前記第2のゲーム機に設けられた第2の無線モジュール(12b)との間で内部のタイマ(124a,124b)を同期させる時刻同期機能を有する第1の無線モジュール(12a)と、
所定の処理を実行する第1の処理部(14a、18a)と、
前記第1の無線モジュールの前記タイマ(124a)の値に基づいて、前記第1の処理部による前記所定の処理の実行タイミングを調整する第1の調整部(14a)とを備え、
前記第2ゲーム機は、
前記第1の無線モジュールとの間で内部のタイマを同期させる時刻同期機能を有する第2の無線モジュールと、
所定の処理を実行する第2の処理部(14b、18b)と、
前記第2の無線モジュールの前記タイマ(124b)の値に基づいて、前記第2の処理部による前記所定の処理の実行タイミングを調整する第2の調整部(14b)とを備える、ゲームシステム。
【発明の効果】
【0032】
本発明によれば、相互に無線通信可能な複数のゲーム機を利用して多人数ゲームプレイを行うときに、各ゲーム機における所定の処理の実行タイミングを簡単に同期させることができる。
【発明を実施するための最良の形態】
【0033】
以下、本発明の種々の実施形態について説明する。
【0034】
(第1の実施形態)
図1は、本発明の第1の実施形態に係るゲームシステムの構成を示している。本実施形態では、第1ゲーム機10aと第2ゲーム機10bの2台のゲーム機間で無線通信を行う例を説明するが、本発明はこれに限らず、3台以上のゲーム機間で無線通信を行う場合にも本発明を適用することができる。
【0035】
なお、第1ゲーム機10aと第2ゲーム機10bは、互いに多人数ゲームプレイのための通信相手として設定されたゲーム機である。例えば、多人数ゲームプレイの開始に先立って、まず第1ゲーム機10aと第2ゲーム機10bが無線通信により互いに自己の装置ID(ユーザーIDや自己が実行するゲームプログラムIDも含めても良い)を交換し、相手のゲーム機に関する情報を画像や音声などで自己のプレイヤにそれぞれ提示する。各ゲーム機のプレイヤは、そうして提示された情報に基づいて、相手のゲーム機のプレイヤと一緒に多人数ゲームプレイを開始するかどうかを決定する。両方のゲーム機のプレイヤが、相手のゲーム機のプレイヤと一緒に多人数ゲームプレイを開始することを入力部を通じて自己のゲーム機に指示すると、各ゲーム機において相手のゲーム機が多人数ゲームプレイのための通信相手として設定される。
【0036】
第1ゲーム機10aは、無線モジュール12aと、ゲーム処理部14aと、割込回路16aと、表示部18aと、クロック20aと、記憶部24aと、フレームバッファ26aと、入力部28aとを備えている。なお、第2ゲーム機10bは、第1ゲーム機の構成と同様であるため、第2ゲーム機10bの詳細な説明は省略する。
【0037】
第1ゲーム機10aには、コネクタ22aを介してゲームカートリッジ30aが接続される。ゲームカートリッジ30aには、複数のゲーム機間で無線通信することによって複数のプレイヤによって同時プレイ可能なゲームを実現するためのゲームプログラムが記録されている。このゲームプログラムは、コネクタ22aを通じて記憶部24aにロードされ、ゲーム処理部14aによって実行される。なお、ゲームプログラムは、ゲームカートリッジ30aに限らず、光ディスクや磁気ディスクなどの他の記録メディアから記憶部24aに供給されても良いし、有線通信や無線通信により外部のコンピュータまたは他のゲーム機から記憶部24aに供給されても良い。
【0038】
無線モジュール12aは、IEEE802.11の規格に基づく通信プロトコルに従って第2ゲーム機の無線モジュール12bと無線通信する機能を備えている。なお、本実施形態では、無線モジュール12aは第1ゲーム機10aに内蔵されているが、本発明はこれに限らず、第1ゲーム機10aに設けられた図示しないコネクタを介して、無線モジュール12aと第1ゲーム機10aとを接続するようにしてもよい。
【0039】
無線モジュール12aは、無線部121a、記憶部122a、プロセッサ123a、TSFタイマ124aおよびクロック125aを備えている。無線部121aは、プロセッサ123aから出力されるベースバンド信号を無線信号に変換して送信するとともに、第2ゲーム機の無線モジュール12bから送信された無線信号を受信してベースバンド信号に変換する。記憶部122aは、プロセッサ123aによってデータを一時的に保持するために利用される他、第1ゲーム機10aと第2ゲーム機10bとの間で送受信されるデータ(すなわち、第2ゲーム機10bに送信すべきデータおよび第2ゲーム機から受信したデータ)を、ゲーム処理部14aと無線モジュール12aとの間で受け渡しするための送受信バッファとして利用される。プロセッサ123aは、IEEE802.11の無線LAN規格に基づいて、無線モジュール12aと無線モジュール12bとの間の無線通信の制御を行う。TSFタイマ124aは、無線モジュール12aの内部のクロック125aから出力されるクロック信号に基づいて時間を計測するタイマであって、無線モジュール12aと無線モジュール12bとの間で処理の同期をとるために利用される。TSFタイマ124aの値は、TSFタイマ124aがスタートしてからの経過時間を示す。
【0040】
本実施形態では、無線モジュール12aがマスタとして動作し、無線モジュール12bがクライアントとして動作するものとして説明する。なお、複数の無線モジュール間で通信をする際に、マスタとして動作すべき無線モジュールの決定方法は任意である。無線モジュール12aおよび無線モジュール12bは、無線モジュール間で処理の同期を達成するためのタイミング同期機能(TSF:Timing Synchronization Function)を有している。マスタとして動作する無線モジュール12aは、定期的にビーコン(Beacon)信号を送信する。ビーコン信号の送信周期は、ゲーム処理部14aによって任意の周期に設定可能である(ビーコン信号の送信周期は固定でもかまわない)。本実施形態では、ビーコン信号の送信周期は、ゲーム処理部14aのゲーム処理周期(所定の手順が定義された1単位のゲーム処理が繰り返し実行される周期であって、本実施形態では16.7msec)と同じく16.7msecに設定される。なお、ビーコン信号の送信周期はこれに限らず、ゲーム処理周期の整数倍であればよい。この理由については後述する。ビーコン信号には、ビーコン信号の送信時点のTSFタイマ124aの値(以下、TSFタイマ値と称す)と、ビーコンインターバル(ビーコン信号の送信間隔)の情報が含まれている。無線モジュール12aからのビーコン信号を受信した無線モジュール12bのプロセッサ123bは、ビーコン信号に含まれているTSFタイマ値と同じ値になるように、TSFタイマ124bの値を必要に応じて変更する。このように、周期的に送信されるビーコン信号に基づいて無線モジュール12bのTSFタイマ124bが必要に応じて変更される結果、無線モジュール12aのTSFタイマ124aと無線モジュール12bのTSFタイマ124bの同期が達成される。
【0041】
ビーコン信号には上記のようにビーコンインターバルの情報が含まれているので、無線モジュール12bは、TSFタイマ124bの値とビーコンインターバルの情報から、次回のビーコン信号送信時刻(TBTT:Target Beacon Transmit Time)を知ることができる。マスタの無線モジュール12aは、TBTTが到来するとビーコン信号の送信動作を開始し、クライアントの無線モジュール12bは、TBTTが到来するとビーコン信号の受信の準備を開始する。
【0042】
本実施形態では、図2に示すように、マスタである無線モジュール12aから16.7msecの周期でビーコン信号が送信され、その直後に、第1ゲーム機10aと第2ゲーム機10bとの間で操作情報(各ゲーム機におけるプレイヤによる入力部28の操作内容を示す情報)を共有するために、マスタである無線モジュール12aとクライアントである無線モジュール12bとの間で操作情報の送受信が行われる。操作情報の送受信が完了すると、無線モジュール12aおよび無線モジュール12bは、次のTBTTが到来するまでの間、それぞれスリープモードで動作する。次のTBTTが到来すると(より正確には、次のTBTTの直前に)、無線モジュール12aおよび無線モジュール12bはスリープモードから通常モードに復帰し、無線モジュール12aはビーコン信号の送信処理を開始し、無線モジュール12bはビーコン信号の受信準備に入る。これにより、第1ゲーム機10aと第2ゲーム機10bとの間で16.7msecの周期で操作情報の共有をしつつ、無線モジュール12aおよび無線モジュール12bの省電力化が達成される。
【0043】
なお、無線モジュール12aと無線モジュール12bとの間で送受信されるのは、操作情報でなくてもかまわない。例えば、ゲーム機10a、10bにおける処理により生成されたゲームパラメータなどを送受信してもかまわない。
【0044】
また、操作情報の送受信をした後スリープモードに入ることは必須ではない。
【0045】
なお、本実施形態では、TBTTが到来するタイミングに合わせて、プロセッサ123aが割込信号(以下、TBTT割込信号と称す)を出力する。プロセッサ123bについても同様である。なお、本実施形態では、TBTTが12回到来する度にTBTT割込信号が出力されるものとする。ただし、TBTT割込信号の出力頻度はこれに限らず、TBTTがN回(Nは自然数)到来する度にTBTT割込信号が出力されればよい。このとき、TBTT割込信号の出力周期は、ゲーム処理部14aのゲーム処理周期(16.7msec)のN倍となる。
【0046】
ゲーム処理部14aは、ゲームカートリッジ30aに記録されているゲームプログラムに従ってゲーム処理を実行する。ゲーム処理は、入力部28aからの信号や、無線モジュール12aが受信した第2ゲーム機10bの操作情報(第2ゲーム機10bのユーザの操作に関する情報)に基づいて行われる。ゲーム処理部14aは、ゲーム処理の結果を反映したゲーム画像を作成し、フレームバッファ26aにその画像データを書き込む。ゲーム画像は、16.7msecの周期で更新される。
【0047】
割込回路16aは、無線モジュール12aから出力されるTBTT割込信号、および後述する表示部18aから出力されるVブランク割込信号を、割込要求信号としてゲーム処理部14aに出力する。割込回路16aから割込要求信号が出力されると、ゲーム処理部14aは、ゲーム処理を一時的に中断して割込要求信号に応じて予め定められた割り込み処理を行い、割り込み処理が完了した後でゲーム処理を再開する。
【0048】
表示部18aは、表示画面を有し、ゲーム処理部14aによってフレームバッファ26aに書き込まれた画像データに基づいてゲーム画像を表示画面に表示する。表示画面は16.7msecの周期で更新される。表示部18aは、典型的には液晶パネルと表示制御回路によって構成される。表示部18aは、Vカウンタ181aを備えており、フレームバッファ26aから読み出された画像データに対応する電気信号が、Vカウンタ181aが示す走査線上の画素に順次供給される。Vカウンタ181aの値は、クロック20aからのクロック信号に基づいて一定周期で更新される。なお、Vカウンタ181の値は、262を示した後、0にリセットされる。
【0049】
なお、表示部18aにおいて、表示画面の一番上の走査線から一番下の走査線まで順番に走査し終わった後、再び一番上の走査線の走査を開始するまでの期間(以下、Vブランク期間と称す)は、表示画面の画像が更新されない。Vブランク期間には表示部18aはフレームバッファ26aにアクセスしないので、ゲーム処理部14aは、Vブランク期間が開始してから終了するまでの間にフレームバッファ26aに画像データを書き込むことによって、表示画像を乱すことなく画像データを更新することができる。
【0050】
なお、Vカウンタ181aは、Vブランク期間においてもカウントを継続する。本実施形態では、図3に示すように、表示画面の一番上の走査線を走査しているときのVカウンタ181aの値を0とし、表示画面の一番下の走査線を走査しているときのVカウンタ181aの値を191とし、表示画面の一番上の走査線を走査する直前のVカウンタ181aの値を262とする。この場合、Vカウンタ181aの値が192から262までを指している期間がVブランク期間である。表示部18aは、Vブランク期間が到来したとき(すなわちVカウンタ181aの値が192になったとき)に割り込み信号(以下、Vブランク割込信号と称す)を出力する機能を有している。表示部18aからVブランク割込信号を受けた割込回路16aは、ゲーム処理部14aにVブランク割込要求信号を送る。ゲーム処理部14aは、Vブランク割込要求信号に応じて、フレームバッファ26aへの画像データの書き込みを開始する。これにより、ゲーム処理部14aはVブランク期間にフレームバッファ26aに画像データを書き込むことができる。
【0051】
記憶部24aは、ゲーム処理部14aがゲームプログラムを実行するために利用する記憶領域である。
【0052】
フレームバッファ26aは、ゲーム処理部14aによって生成された画像データを、表示部18aに出力するために一時的に保持しておくための記憶領域である。
【0053】
入力部28aは、プレイヤによって操作されるゲームコントローラであり、プレイヤの操作に応じた信号を出力する。
【0054】
本実施形態では、ゲーム処理部14aによって実行されるゲーム処理は、表示部18aの表示画面の更新周期(16.7msec)と同じ周期で行われる。つまり、(1)ゲーム処理部14aは、第1ゲーム機10aと第2ゲーム機10bとの間で操作情報を共有し、(2)共有した操作情報に基づいてゲーム処理を行い、(3)このゲーム処理の結果を反映したゲーム画像を生成してフレームバッファ26aに書き込む、という一連の処理を16.7msecの周期で繰り返す。
【0055】
第1ゲーム機10aと第2ゲーム機10bが無線通信することによって第1ゲーム機10aのプレイヤと第2ゲーム機10bのプレイヤが一緒にゲームをプレイする場合には、第1ゲーム機10aのゲーム処理部14aのゲーム処理周期と第2ゲーム機10bのゲーム処理部14bのゲーム処理周期とが一致していることが望ましい。ゲーム処理周期がずれていると、第1ゲーム機10aのゲーム処理結果と第2ゲーム機10bのゲーム処理結果がずれてしまう可能性があるからである。
【0056】
本実施形態では、第1ゲーム機10aのゲーム処理部14aが、無線モジュール12aからTBTT割込信号が出力されるタイミングを基準としてVカウンタ181aを調整し、同様に、第2ゲーム機10bのゲーム処理部14bが、無線モジュール12bからTBTT割込信号が出力されるタイミングを基準としてVカウンタ181bを調整する。以下、ゲーム処理部14aによるVカウンタ181aの調整処理の詳細を説明する。
【0057】
ゲーム処理部14aは、無線モジュール12aからTBTT割込信号が出力されたときの割り込み処理(以下、TBTT割込処理と称す)において、その時点のVカウンタ181aの値(以下、TBTT時Vカウンタ値と称す)を記憶部24aに一時的に記憶する。さらに、ゲーム処理部14aは、表示部18aからVブランク割込信号が出力されたときの割り込み処理(以下、Vブランク割込処理と称す)において、記憶部24aに記憶されているTBTT時Vカウンタ値と、予め定められた理想値(一例として本実施形態では0とする)との間のズレを計算し、このズレに応じて、TBTT割込信号が出力されるときのVカウンタ181aの値が理想値に近づくように、Vカウンタ181aの値を増加または減少させる。例えば、TBTT時Vカウンタ値が2であった場合には、Vカウンタ181aの値から2だけ減算する。また、TBTT時Vカウンタ値が260であった場合には、Vカウンタ181aの値に3を加算する。Vカウンタ181aの値をTBTT割込処理時ではなくVブランク割込処理時に変更する理由は、Vカウンタ181aの値の変更をVブランク期間に行うためである。Vブランク期間であればVカウンタ181aの値を変更しても表示画面が乱れることはない。ただし表示画面の乱れが許容されるのであれば、Vカウンタ181aの値を任意のタイミングで変更してもよい。
【0058】
ただし、Vカウンタ181aの値を減算する場合、減算後の値がVブランク割込のタイミング(本実施形態ではVカウンタ181aの値が192)よりも小さくなることが無いように調整される。すなわち、Vカウンタ181aの値を2だけ減算する場合、Vカウンタ181aの値が195などとなってから2を減算し、193とする。
【0059】
なお、TBTT時Vカウンタ値と予め定められた理想値との間のズレが所定値よりも大きい場合(例えば4よりも大きい場合)には、TBTT割込信号が出力されるときのVカウンタ181aの値を理想値に即座に一致させるのではなく、複数回に分けてVカウンタ181aの値を理想値に徐々に近づけるようにしてもよい。これは、例えばVカウンタ181aの値を一度に変更できる範囲を−4〜+4の範囲に制限することによって可能となる。これにより、TBTT時Vカウンタ値と予め定められた理想値との間のズレが大きい場合でも、プレイヤに違和感を感じさせることなく、ゲーム処理周期を調整することができる。
【0060】
なお、TBTT時Vカウンタ値と予め定められた理想値との間のズレが所定値よりも小さい場合(例えば2よりも小さい場合)には、Vカウンタ181aの値の変更を省略するようにしても構わない。
【0061】
以上のような調整処理によって、ゲーム処理部14aのゲーム処理周期が無線モジュール12aのTBTTと同期することになる。また、第2ゲーム機10bについても、同様にしてゲーム処理部14bがVカウンタ181bを調整することによって、ゲーム処理部14bのゲーム処理周期が無線モジュール12bのTBTTと同期することになる。ここで、無線モジュール12aのTBTTと無線モジュール12bのTBTTはTSF機能により同期しているので、結局、ゲーム処理部14aのゲーム処理周期とゲーム処理部14bのゲーム処理周期も同期することになる。
【0062】
以下、ゲームカートリッジ30a(ゲームカートリッジ30b)から記憶部24a(記憶部24b)にロードされたゲームプログラムに基づいてゲームが進行実行されるときのゲーム処理部14a、ゲーム処理部14b、無線モジュール12a、および無線モジュール12bの処理の流れを説明する。
【0063】
まず、図4のフローチャートを参照して、無線モジュール12aおよび無線モジュール12bの処理の流れを説明する。
【0064】
まず、マスタとして動作する無線モジュール12aのプロセッサ123aは、ステップS10で、無線部121aを通じてビーコン信号を出力する。ビーコン信号には、その時点のTSFタイマ124aの値と、ゲーム処理部14aによって設定されたビーコン間隔の情報が含まれている。
【0065】
ステップS12では、プロセッサ123aは、TSFタイマ124aの値とビーコン間隔とに基づいて、TBTTが到来したかどうかを判断し、TBTTが到来した場合には処理はステップS14に進む。なお、無線モジュール12aがスリープモードで動作しているときには、TBTTが到来したことに応じて無線モジュール12aはスリープモードから通常モードに復帰する(厳密には、TBTTの直前にスリープモードから通常モードに復帰する)。
【0066】
ステップS14では、プロセッサ123aは、今回到来したTBTTが、TBTT割込信号を最後に出力してから12回目のTBTTかどうかを判断し、12回目のTBTTである場合は処理はステップS16に進み、その他の場合は処理はステップS18に進む。なお、今回到来したTBTTが、TBTT割込信号を最後に出力してから12回目のTBTTかどうかを判断するための一つの方法として、TBTT割込信号を最後に出力してからのTBTTの到来回数をカウントするためのカウンタを記憶部122aに用意しておき、TBTTが到来する毎にこのカウンタをカウントアップし、TBTT割込信号を出力した時点でこのカウンタをリセットすればよい。
【0067】
ステップS16では、プロセッサ123aはTBTT割込信号を割込回路16aに出力する。
【0068】
ステップS18では、プロセッサ123aは無線部121aを通じてビーコン信号を出力する。
【0069】
ステップS20では、プロセッサ123aは無線部121aを通じて、所定の手順に従って、ゲーム処理部14aによって記憶部122aに格納された第1ゲーム機10aの操作情報を第2ゲーム機10bに送信するとともに、第2ゲーム機10bの操作情報を第2ゲーム機10bから受信して、受信した第2ゲーム機10bの操作情報を記憶部122aに格納する。その後、無線モジュール12aはスリープモードに移行し、処理はステップS12に戻る。
【0070】
本実施形態では、ビーコン信号の送信周期をゲーム処理周期に一致させ、ビーコン間隔ごとに操作情報を交換するようにしたため、ゲーム処理周期ごとに、通信相手の最新の操作情報を取得することとなって、各ゲーム処理周期で最新の操作情報に基づく処理を実行できて効率的である。また、各無線モジュールはビーコン信号送信時刻(TBTT)を知っているので、操作情報を送受信するタイミングを効率的に合わせることができて、また、必要に応じて間欠的にスリープモードで動作することも可能になる。
【0071】
上記ステップS12〜S20の処理は、ビーコン信号の送信周期である16.7msecの周期で繰り返される。
【0072】
次に、クライアントとして動作する無線モジュール12bのプロセッサ123bは、ステップS22で、無線部121bを通じてビーコン信号(ステップS10で無線モジュール12aが送信したビーコン信号)を受信する。
【0073】
ステップS24では、プロセッサ123bは、ステップS20で受信したビーコン信号に含まれているTSFタイマ値に基づいて、TSFタイマ124bの値を設定する。
【0074】
ステップS26では、プロセッサ123bは、TSFタイマ124bの値と、ステップS20で受信したビーコン信号に含まれていたビーコン間隔とに基づいて、TBTTが到来したかどうかを判断し、TBTTが到来した場合には処理はステップS28に進む。なお、無線モジュール12bがスリープモードで動作しているときには、TBTTが到来したことに応じて無線モジュール12bはスリープモードから通常モードに復帰する(厳密には、TBTTの直前にスリープモードから通常モードに復帰する)。
【0075】
ステップS28では、プロセッサ123bは、今回到来したTBTTが、TBTT割込信号を最後に出力してから12回目のTBTTかどうかを判断し、12回目のTBTTである場合は処理はステップS30に進み、その他の場合は処理はステップS32に進む。
【0076】
ステップS30では、プロセッサ123bはTBTT割込信号を割込回路16bに出力する。
【0077】
ステップS32では、プロセッサ123bは無線部121bを通じてビーコン信号(ステップS18で無線モジュール12aが送信したビーコン信号)を受信する。
【0078】
ステップS34では、プロセッサ123bは、ステップS32で受信したビーコン信号に含まれるTSFタイマ値(ステップS18で無線モジュール12aがビーコン信号を送信したときのTSFタイマ124aの値)に基づいて、TSFタイマ124bの値を更新する。これにより、TSFタイマ124aとTSFタイマ124bのズレが補正される。
【0079】
ステップS36では、プロセッサ123bは無線部121bを通じて、所定の手順に従って、第1ゲーム機10aの操作情報を第1ゲーム機10aから受信して、受信した第1ゲーム機10aの操作情報を記憶部122bに格納するとともに、ゲーム処理部14bによって記憶部122bに格納された第2ゲーム機10bの操作情報を第1ゲーム機10aに送信する。その後、無線モジュール12bはスリープモードに移行し、処理はステップS26に戻る。
【0080】
上記ステップS26〜S36の処理は、ビーコン信号の送信周期である16.7msecの周期で繰り返される。
【0081】
次に、図5のフローチャートを参照して、ゲーム処理部14aおよびゲーム処理部14bのメイン処理の流れを説明する。
【0082】
まず、マスタとして動作する第1ゲーム機10aのゲーム処理部14aは、ステップS40で、無線モジュール12aが出力すべきビーコン信号の間隔を、ゲーム処理周期のN倍(本実施形態では16.7msec)に設定する。
【0083】
ステップS42では、ゲーム処理部14aは、第1ゲーム機10aと第2ゲーム機10bとの間で操作情報を共有する。具体的には、第1ゲーム機10aの操作情報を無線モジュール12aの送信バッファ(記憶部122a)に記憶するとともに、受信バッファ(記憶部122a)に記憶された第2ゲーム機10bの操作情報を取得する
【0084】
ステップS44では、ゲーム処理部14aは、ステップS42で第1ゲーム機10aと第2ゲーム機10bとの間で共有した操作情報に基づいてゲーム処理を行う。例えば、共有する仮想ゲーム空間に、第1ゲーム機10aのプレイヤが操作する第1キャラクタと、第2ゲーム機10bのプレイヤが操作する第2キャラクタが存在するときに、ゲーム処理部14aは、第1ゲーム機10aの操作情報に基づいて第1キャラクタを制御し、第2ゲーム機10bの操作情報に基づいて第2キャラクタを制御する。
【0085】
ステップS46では、ゲーム処理部14aは、割込回路16aが割込要求信号としてVブランク割込信号を出力したかどうかを判断し、Vブランク割込信号が出力された場合には処理はステップS48に進み、まだVブランク割込信号が出力されていない場合には、Vブランク割込信号が出力されるまでステップS44のゲーム処理を続ける。なお、ステップS44の処理の途中であっても、Vブランク割込があったときには、ステップS44の処理が中止され、処理はステップS48に進む。
【0086】
ステップS48では、ゲーム処理部14aは、ステップS44のゲーム処理の結果を反映したゲーム画像データを生成し、フレームバッファ26aに書き込む。その後、処理はステップS42に戻る。
【0087】
上記ステップS42〜S48の処理は、ゲーム処理部14aのゲーム処理の周期(本実施形態では表示部18aの表示画面の更新周期と等しい周期)である16.7msecの周期で繰り返される。
【0088】
次に、クライアントとして動作する第2ゲーム機10bのゲーム処理部14bは、ステップS50で、第1ゲーム機10aと第2ゲーム機10bとの間で操作情報を共有する。具体的には、第2ゲーム機10bの操作情報を無線モジュール12bの送信バッファ(記憶部122a)に記憶するとともに、受信バッファ(記憶部122a)に記憶された第1ゲーム機10aの操作情報を取得する。
【0089】
ステップS52では、ゲーム処理部14bは、ステップS50で第1ゲーム機10aと第2ゲーム機10bとの間で共有した操作情報に基づいてゲーム処理を行う。例えば、共有する仮想ゲーム空間に、第1ゲーム機10aのプレイヤが操作する第1キャラクタと、第2ゲーム機10bのプレイヤが操作する第2キャラクタが存在するときに、ゲーム処理部14bは、第1ゲーム機10aの操作情報に基づいて第1キャラクタを制御し、第2ゲーム機10bの操作情報に基づいて第2キャラクタを制御する。
【0090】
ステップS54では、ゲーム処理部14bは、割込回路16bが割込要求信号としてVブランク割込信号を出力したかどうかを判断し、Vブランク割込信号が出力された場合には処理はステップS56に進み、まだVブランク割込信号が出力されていない場合には、Vブランク割込信号が出力されるまでステップS52のゲーム処理を続ける。なお、ステップS52の処理の途中であっても、Vブランク割込があったときには、ステップS52の処理が中止され、処理はステップS56に進む。
【0091】
ステップS56では、ゲーム処理部14bは、ステップS52のゲーム処理の結果を反映したゲーム画像データを生成し、フレームバッファ26bに書き込む。その後、処理はステップS50に戻る。
【0092】
上記ステップS50〜S56の処理は、ゲーム処理部14bのゲーム処理の周期(本実施形態では表示部18bの表示画面の更新周期と等しい周期)である16.7msecの周期で繰り返される。
【0093】
なお、ゲーム処理部14aは、割込回路16aが割込要求信号を出力すると、上記のメイン処理を中断して割込要求信号に応じた割り込み処理(TBTT割込処理またはVブランク割込処理)を実行する。ゲーム処理部14bについても同様である。
【0094】
TBTT割込処理では、図6に示すように、ゲーム処理部14aは、その時点のVカウンタ181aの値を読み取って、TBTT時Vカウンタ値として記憶部24aに格納する。ゲーム処理部14bについても同様である。
【0095】
Vブランク割込処理では、図7に示すように、ゲーム処理部14aは、直前のTBTT割込処理時に記憶部24aに格納したTBTT時Vカウンタ値に基づいて、Vカウンタ181aの値を更新する。このVカウンタ181aの更新処理の詳細は前述の通りである。ゲーム処理部14bについても同様である。
【0096】
以上のように、本実施形態では、第1ゲーム機10aと第2ゲーム機10bが、無線モジュール12aおよび無線モジュール10bからゲーム処理周期のN倍の周期で出力されるTBTT割込信号に基づいてVカウンタ181aおよびVカウンタ181bをそれぞれ調整することにより、第1ゲーム機10aのゲーム処理と第2ゲーム機10bのゲーム処理の同期が達成される。
【0097】
特に、無線モジュール10aおよび無線モジュール10bは、IEEE802.11の規格に基づく従来の無線モジュールにわずかな変更(TBTT割込信号を出力する機能の追加)を加えるだけで実現できるので、低コストで本発明を実施することができる。
【0098】
また、ゲーム処理部14aおよびゲーム処理部14bのゲーム処理周期と、無線モジュール12aおよび無線モジュール12bの通信周期(操作情報を送受信する周期)とが一致するので、従来のように、それらの周期のズレを考慮してゲームプログラムを作成する必要が無く、プログラマによるプログラミング作業の手間を削減することができる。
【0099】
なお、本実施形態では、無線モジュール10a(無線モジュール10b)が、操作情報を送受信してから次のTBTTが到来するまでの間、スリープモードで動作する例を説明したが、本発明はこれに限らない。
【0100】
また、本実施形態では、無線モジュール10a(無線モジュール10b)が、IEEE802.11の規格に基づく無線モジュールである例を説明したが、本発明はこれに限らず、タイミング同期機能(無線モジュール間で、内部のタイマの同期をとる機能)を有する任意の無線モジュールを利用することができる。例えば、BluetoothやZigbeeの規格に対応した無線モジュールを利用することができる。
【0101】
また、本実施形態では、ゲーム処理の周期が表示画面の更新周期と同じである例を説明したが、本発明はこれに限らず、ゲーム処理の周期が表示画面の更新周期と異なっていても良い。この場合、第1ゲーム機10a(第2ゲーム機10b)は、Vカウンタ181a(Vカウンタ181b)とは別に、ゲーム処理周期を計測するためのゲーム処理周期カウンタを備えている必要があり、ゲーム処理部14a(ゲーム処理部14b)は、TBTT割込信号の出力タイミングに基づいてゲーム処理周期カウンタを調整すればよい。
【0102】
また、本実施形態では、16.7msecの周期で操作情報を送受信する例を説明したが、本発明はこれに限らない。例えば、アクションゲームのようにプレイヤの操作を即座にゲーム処理に反映させる必要がある場合には、頻繁に操作情報を送受信するのが望ましいが、テーブルゲームのようにプレイヤの操作を即座にゲーム処理に反映させる必要がない場合には、それほど頻繁に操作情報を送受信する必要はない。
【0103】
また、本実施形態では、TBTT割込信号が出力されるときのVカウンタ181a(Vカウンタ181b)の値が0に近づくようにVカウンタの値を調整する例を説明したが、本発明はこれに限らず、TBTT割込信号が出力されるときのVカウンタ181a(Vカウンタ181b)の値が0以外の特定の値に近づくようにVカウンタの値を調整してもよい。
【0104】
また、本実施形態では、ゲーム処理の周期が16.7msecである例を説明したが、これは単なる一例に過ぎず、本発明はこれに限定されない。
【0105】
また、本実施形態では、TBTTの到来タイミングに合わせて無線モジュール12a(無線モジュール12b)から出力されるTBTT割込信号に基づいてVカウンタ181a(Vカウンタ181b)を調整する例を説明したが、本発明はこれに限らない。例えば、TBTTの到来タイミングとは無関係に、無線モジュール12a(無線モジュール12b)のプロセッサ123a(プロセッサ123b)がTSFタイマ124a(TSFタイマ124b)に基づいてゲーム処理周期のN倍の周期で割込信号(便宜上、TSFタイマ割込信号と称す)を出力し、ゲーム処理部14a(ゲーム処理部14b)がこのTSFタイマ割込信号に基づいてVカウンタ181a(Vカウンタ181b)を調整するようにしてもよい。この場合、ビーコン信号の送信間隔は、ゲーム処理周期とは無関係に自由に設定することができる。ただし、この場合、TSFタイマ割込信号を一定の周期で出力するためのカウンタを別途用意する必要がある。
【0106】
また、図2の例では、マスタとして動作している無線モジュール12aとクライアントとして動作している無線モジュール12bとで、TBTT割込信号が同じタイミングで出力されているが、TBTT割込信号が同じタイミングで出力される必要はない。例えば、図8のように、無線モジュール12aがTBTT割込信号を出力してから16.7msec後に、無線モジュール12bからTBTT割込信号が出力されても構わない。
【0107】
また、無線モジュール121aおよび無線モジュール121bは、本実施形態のようにTBTT割込信号を出力する動作モード(仮にローカルゲームモードと称す)だけでなく、一般的な無線通信モジュールの動作モードであるインフラストラクチャモードやアドホックモードで動作する機能を有していてもよい(インフラストラクチャモードやアドホックモードではTBTT割込信号は出力されない)。この場合、無線モジュール121aおよび無線モジュール121bは、ゲーム処理部14aおよびゲーム処理部14bからの指示に基づいて動作モードをそれぞれ切り替える。
【0108】
なお、インフラストラクチャモード・アドホックモードは、IEEE802.11規格の用語であるので説明を省略する。上記のローカルゲームモードは、アドホックモードを通信ゲーム用にカスタマイズしたものである。
【0109】
また、本実施形態では、割込回路16aからゲーム処理部14aへTBTT割込信号が出力され、ゲーム処理部14aがVカウンタ181aの調整処理を行うようにしたが、別途調整回路を設けて、割込回路16aから当該調整回路にTBTT割込信号を出力して、当該調整回路がVカウンタ181aの調整処理を行ってもよい。この調整回路は無線モジュール12aの内部に設けても良いし、無線モジュール12aの外部に設けてもよい。また、割込回路16aを無線モジュール12aの内部に設けてもよい。また、割込回路16aから無線モジュール12aのプロセッサ123aにTBTT割込信号を出力して、当該プロセッサ123aがVカウンタ181aの調整処理を行ってもよい。
【0110】
また、ゲーム処理部14aおよび/または表示部18aが、TSFタイマ124aに基づいて(TSFタイマ124aを参照して、または、TSFタイマ値に基づく割込要求を受けて)、16.7msecごとに所定の処理を実行してもよい(この場合、クロック20aやVカウンタ181aは不要となる)。
【0111】
また、ゲーム処理部14aと表示部18aは、一定の周期で処理を実行しなくてもよい。すなわち、第1ゲーム機10aにおけるゲーム処理部14aの処理と第2ゲーム機10bにおけるゲーム処理部14bの処理の実行タイミングを合わせる必要がある場合、および/または、第1ゲーム機10aにおける表示部18aの処理の実行タイミングと第2ゲーム機10bにおける表示部18aの処理の実行タイミングを合わせる必要がある場合に、各ゲーム機において、自己のTSFタイマ値に基づいて(またはTSFタイマ値により調整されるVカウンタ値に基づいて)当該実行タイミングを決定することによって、当該実行タイミングを合わせることができる。
【0112】
また、本実施形態では、フレームバッファ26aを1つ設けた例を説明したが、本願発明は、フレームバッファ26aを複数設けて、表示部18aの画面更新周期に合わせて複数のフレームバッファ26aを切り替えて使用するゲーム機にも適用することができる。この場合、ゲーム処理部14aは、Vブランク期間中に(具体的には、前述のステップS48などのタイミングで)、表示部18aが使用するフレームバッファ(表示部18aの画面に出力される画像データが記憶されたフレームバッファ)を切り替える。この場合は、ゲーム処理部14aは、Vブランク期間外であっても、その時点で表示部18aによって使用されていないフレームバッファ26aに画像データを書き込むことによってゲーム画像を更新することができる。
【0113】
なお、本実施形態では、無線モジュール12a(無線モジュール12b)から出力されるTBTT割込信号に基づいてVカウンタ181a(Vカウンタ181b)を調整する例を説明したが、本発明はこれに限らず、無線モジュール12a(無線モジュール12b)からの割込信号を用いずに、Vカウンタ181a(Vカウンタ181b)を調整することもできる。以下、第2の実施形態として、割込信号を用いずに、ポーリングによってVカウンタを調整する例を説明する。
【0114】
(第2の実施形態)
図9は、本発明の第2の実施形態に係るゲームシステムの構成を示している。なお、図9が図1と異なる点は、プロセッサ123aおよびプロセッサ123bからTBTT割込信号が割込回路16aおよび割込回路16bにそれぞれ出力されていない点だけである。よって、図9の詳しい説明は省略する。
【0115】
第2の実施形態では、図10に示すように、ゲーム処理部14aが16.7msecのN倍の周期で定期的に無線モジュール12aのTSFタイマ124aの値(TSFタイマ値)を取得し、そうして取得したTSFタイマ値に基づいてVカウンタ181aを調整する。ゲーム処理部14bについても同様である。
【0116】
以下、ゲームカートリッジ30a(ゲームカートリッジ30b)から記憶部24a(記憶部24b)にロードされたゲームプログラムに基づいてゲームが実行されるときのゲーム処理部14a、ゲーム処理部14b、無線モジュール12a、および無線モジュール12bの処理の流れを説明する。
【0117】
図11は、無線モジュール12aおよび無線モジュール12bの処理の流れを示すフローチャートである。なお、図11が図4と異なる点は、TBTT割込信号の送信に関する処理(すなわち図4のステップS14,S16,S28,S30の処理)が削除されている点のみである。したがって、図11の詳しい説明は省略する。
【0118】
なお、マスタ側のゲーム機である第1ゲーム機10aは、ステップS10の前に、自己のVブランク割込のタイミングにおいて(すなわち、本実施形態では自己のVカウンタ181aの値が192になるタイミングにおいて)、TSFタイマ値がゲーム処理周期の自然数倍となるように、Vカウンタの値を調整しておく。クライアント側のゲーム機である第2ゲーム機10bにおいても同様である。
【0119】
第2の実施形態では、ゲーム処理部14aおよびゲーム処理部14bのメイン処理の流れは、第1の実施形態と同じである(図5参照)。ただし、第1の実施形態ではビーコン信号の送信間隔をゲーム処理周期のN倍に設定したが、第2の実施形態ではTBTT割込信号を利用しないので、ビーコン信号の送信間隔は自由に設定すればよい。
【0120】
なお、ゲーム処理部14aは、割込回路16aが割込要求信号を出力すると、メイン処理を中断して割込要求信号に応じた割り込み処理(Vブランク割込処理)を実行する。ゲーム処理部14bについても同様である。
【0121】
図12は、Vブランク割込処理の詳細を示すフローチャートである。ゲーム処理部14aは、ステップS70で、今回のVブランク割込処理が、最後にVカウンタ181aの値を更新してから12回目のVブランク割込処理かどうかを判断し、12回目のVブランク割込処理である場合には処理はステップS72に進み、その他の場合にはVブランク割込処理を終了する。ステップS72では、ゲーム処理部14aは、その時点のTSFタイマ124aの値をTSFタイマ値として取得する。ステップS74では、ゲーム処理部14aは、ステップS72で取得したTSFタイマ値(単位はmsecとする)をゲーム処理周期である16.7msecで割ったときの余りを算出する。ステップS76では、ゲーム処理部14aは、ステップS74で算出した余りに基づいてVカウンタ181aの値を更新する。
【0122】
以下、ステップS74,S76の処理についてより具体的に説明する。
【0123】
ゲーム処理部14aは、ステップS74で算出される余りと、予め定められた理想値(一例として本実施形態では0とする)との間のズレを計算し、このズレに応じて、ステップS74で算出される余りが理想値に近づくように、Vカウンタ181aの値を増加または減少させる。
【0124】
例えば、ステップS72で取得されたTSFタイマ値が200.6msecであった場合、ステップS74で算出される余りは、200.6msec=16.7msec×12+0.2msecより、0.2msecとなる。本実施形態では、ゲーム処理周期である16.7msecの期間にVカウンタ181aは0から262までカウントするので、0.2msecは、263×0.2msec÷16.7msec=3.1より、Vカウンタ181aの約3カウント分(3走査線分)に相当する。したがって、ステップS76で、ゲーム処理部14aは、Vカウンタ181aの値から3だけ減算する。
【0125】
また、例えば、ステップS72で取得されたTSFタイマ値が249.8msecであった場合、ステップS74で算出される余りは、249.8msec=16.7msec×14+16.0msecより、16.0msecとなる。16.0msecは、263×16.0msec÷16.7msec=252.0より、Vカウンタ181aの約252カウント分(252走査線分)に相当する。これは、263−252=11であることから、Vカウンタ181aの値を11だけ進めれば、次回のVブランク割込処理のステップS74で算出される余りがほぼ0になることを意味する。したがって、ステップS76で、ゲーム処理部14aは、Vカウンタ181aの値に11を加算する。
【0126】
なお、Vカウンタ181aに加算または減算すべき値が所定値よりも大きい場合(例えば4よりも大きい場合)には、その値を一度に加算または減算するのではなく、複数回に分けて加算または減算するようにしてもよい。また、Vカウンタ181aに加算または減算すべき値が所定値よりも小さい場合(例えば2よりも小さい場合)には、Vカウンタ181aの値の変更を省略するようにしても構わない。
【0127】
以上のような処理によって、Vブランク期間が開始するタイミングを、TSFタイマ124aの値が16.7msecの倍数を示すタイミングに一致させることができる。これにより、ゲーム処理部14aのゲーム処理が、TSFタイマ124aに基づいて16.7msecの周期で実行されることが保証される。同様にして、ゲーム処理部14bのゲーム処理が、TSFタイマ124bに基づいて16.7msecの周期で実行されることが保証される。TSFタイマ124aとTSFタイマ124bとは無線モジュールのタイミング同期機能によって同期が保証されているため、ゲーム処理部14aのゲーム処理とゲーム処理部14bのゲーム処理の同期が達成される。
【0128】
また、本実施形態では、図12のステップS74で算出される余りが0に近づくようにVカウンタの値を調整する例を説明したが、本発明はこれに限らず、図12のステップS74で算出される余りが0以外の特定の値に近づくようにVカウンタの値を調整してもよい。
【0129】
また、本実施形態では、Vブランク期間の開始タイミングにおけるTSFカウンタ値に基づいてVカウンタの値を調整する例を説明したが、本発明はこれに限らない。
【0130】
また、図10の例では、マスタとして動作している第1ゲーム機10aのゲーム処理部14aとクライアントとして動作している第2ゲーム機10bのゲーム処理部12bとで、TSFタイマの値を同じタイミングで参照しているが、TSFタイマの値を同じタイミングで参照する必要はない。例えば、第1ゲーム機10aのゲーム処理部14aがTSFタイマ124aを参照してから16.7msec後に、第2ゲーム機10bのゲーム処理部14bがTSFタイマ124bを参照しても構わない。
【0131】
また、本実施形態では、Vブランク割込信号が12回出力される毎に、Vカウンタ181a(Vカウンタ181b)の値を調整しているが、本発明はこれに限らない。例えば、Vブランク割込信号が出力される毎に、毎回、Vカウンタ181a(Vカウンタ181b)の値を調整するようにしてもよい。
【図面の簡単な説明】
【0132】
【図1】本発明の第1の実施形態に係るゲームシステムの構成を示すブロック図
【図2】本発明の第1の実施形態に係るゲームシステムの動作を示すシーケンス図
【図3】表示画面とVカウンタ181aの値との対応関係を示す図
【図4】本発明の第1の実施形態に係る無線モジュール12aおよび無線モジュール12bの処理の流れを示すフローチャート
【図5】本発明の第1の実施形態に係るゲーム処理部14aおよびゲーム処理部14bによるメイン処理のフローチャート
【図6】本発明の第1の実施形態に係るゲーム処理部14aおよびゲーム処理部14bによるTBTT割込処理のフローチャート
【図7】本発明の第1の実施形態に係るゲーム処理部14aおよびゲーム処理部14bによるVブランク割込処理のフローチャート
【図8】本発明の第1の実施形態に係るゲームシステムの動作の変形例を示すシーケンス図
【図9】本発明の第2の実施形態に係るゲームシステムの構成を示すブロック図
【図10】本発明の第2の実施形態に係るゲームシステムの動作を示すシーケンス図
【図11】本発明の第2の実施形態に係る無線モジュール12aおよび無線モジュール12bの処理の流れを示すフローチャート
【図12】本発明の第2の実施形態に係るゲーム処理部14aおよびゲーム処理部14bによるVブランク割込処理のフローチャート
【符号の説明】
【0133】
10a 第1ゲーム機
10b 第2ゲーム機
12a,12b 無線モジュール
121a,121b 無線部
122a,122b 記憶部
123a,123b プロセッサ
124a,124b TSFタイマ
125a,125b クロック
14a,14b ゲーム処理部
16a,16b 割込回路
18a,18b 表示部
181a,181b Vカウンタ
20a,20b クロック
22a,22b コネクタ
24a,24b 記憶部
26a,26b フレームバッファ
28a,28b 入力部
30a,30b ゲームカートリッジ

【特許請求の範囲】
【請求項1】
相互に無線通信可能な複数のゲーム機を利用した多人数ゲームプレイを可能にするためのゲーム機であって、
前記多人数ゲームプレイにおける通信相手に設定された他のゲーム機に設けられた他の無線モジュールとの間で内部のタイマを同期させる時刻同期機能を有する無線モジュールと、
所定の処理を実行する処理部と、
自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記処理部による前記所定の処理の実行タイミングを調整する調整部とを備えた、ゲーム機。
【請求項2】
前記処理部は、画像データを生成して表示バッファに記憶する処理を実行し、
前記表示バッファに記憶された前記画像データを表示部に出力する出力部をさらに備え、
前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記出力部が前記画像データを表示部に出力するタイミングを調整する、請求項1に記載のゲーム機。
【請求項3】
前記処理部は、画像データを生成して表示バッファに記憶する処理を実行し、
前記表示バッファに記憶された前記画像データを表示部に出力する出力部をさらに備え、
前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記表示バッファに記憶された画像データが前記処理部によって更新されるタイミングを調整する、請求項1に記載のゲーム機。
【請求項4】
前記処理部は、画像データを生成して少なくとも2つの表示バッファのうちのいずれかに記憶する処理を実行し、
前記2つの表示バッファのうちのいずれかに記憶された前記画像データを表示部に出力する出力部をさらに備え、
前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記出力部によって使用される前記表示バッファが切り替わるタイミングを調整する、請求項1に記載のゲーム機。
【請求項5】
前記処理部は、所定の手順が定義された1単位のゲーム処理を繰り返して実行し、
前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記処理部が前記1単位のゲーム処理を実行するタイミングを調整する、請求項1に記載のゲーム機。
【請求項6】
プレイヤによって操作される入力部をさらに備え、
前記処理部は、前記入力部の操作情報に基づいて所定の処理を実行し、
前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記処理部による前記操作情報に基づく処理を実行するタイミングを調整する、請求項1に記載のゲーム機。
【請求項7】
前記無線モジュールは、前記タイマの値に基づいて、前記他のゲーム機との間で前記操作情報を交換するタイミングを決定する、請求項6に記載のゲーム機。
【請求項8】
処理周期を計測するカウンタをさらに備え、
前記処理部は、前記カウンタの値に基づいて、前記所定の処理を周期的に実行し、
前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記カウンタの値を調整する、請求項1に記載のゲーム機。
【請求項9】
前記無線モジュールは、前記タイマの値に基づいて、割り込み信号を一定周期で出力する割り込み信号出力手段を備え、
前記調整部は、前記無線モジュールからの前記割り込み信号の出力タイミングに基づいて前記所定の処理の実行タイミングを調整する、請求項1に記載のゲーム機。
【請求項10】
処理周期を計測するカウンタをさらに備え、
前記処理部は、前記カウンタの値に基づいて、所定周期で前記所定の処理を実行し、
前記割り込み信号出力手段は、前記タイマの値に基づいて、前記所定周期で前記割り込み信号を出力し、
前記調整部は、前記無線モジュールからの前記割り込み信号が出力されるタイミングにおける前記カウンタの値が予め定められた固定値に近づくように、前記カウンタの値を調整する、請求項9に記載のゲーム機。
【請求項11】
前記無線モジュールは、他の無線モジュールにビーコン信号を送信または他の無線モジュールからビーコン信号を受信し、
前記無線モジュールによる前記ビーコン信号の送信周期を一定周期に設定するビーコン間隔設定手段を備え、
前記割り込み信号出力手段は、前記ビーコン信号の送信タイミングが到来したときに前記割り込み信号を出力する、請求項9に記載のゲーム機。
【請求項12】
前記処理部は、一定周期で、他の無線モジュールから受信したゲーム処理に必要なデータに基づく前記所定の処理を繰り返して実行し、
前記無線モジュールによるビーコン信号の送信周期を前記一定周期に設定するビーコン間隔設定手段を備え、
前記無線モジュールは、前記タイマの値に基づいて、前記ビーコン信号を一定周期で送信または受信し、かつ、他の無線モジュールにビーコン信号を送信または他の無線モジュールからビーコン信号を受信するごとに、当該他の無線モジュールとの間で前記ゲーム処理に必要なデータを送信または受信し、
前記調整部は、自己のゲーム機の前記無線モジュールの前記タイマの値に基づく前記ビーコン信号の送信タイミングに基づいて、前記処理部による前記所定の処理の実行タイミングを調整する、請求項1に記載のゲーム機。
【請求項13】
プレイヤによって操作される入力部をさらに備え、
前記処理部は、自己の前記入力部の操作情報と他のゲーム装置の前記入力部の操作情報とに基づく所定の処理の実行を繰り返し、
前記無線モジュールは、前記ビーコン信号の送受信ごとに、前記他のゲーム機との間で前記操作情報を交換する、請求項12に記載のゲーム機。
【請求項14】
前記無線モジュールは、前記タイマの値に基づいて、前記ビーコン信号の送信タイミングが到来したときに前記割り込み信号を出力する割り込み信号出力手段をさらに備え、
前記調整部は、前記無線モジュールからの前記割り込み信号の出力タイミングに基づいて前記所定の処理の実行タイミングを調整する、請求項12に記載のゲーム機。
【請求項15】
前記無線モジュールは、他の無線モジュールにビーコン信号を送信または他の無線モジュールからビーコン信号を受信した後、当該他の無線モジュールとの間でゲーム処理に必要なデータを送信または受信し、さらにその後、前記タイマの値に基づいて、次のビーコン信号の送信タイミングが到来するまでスリープモードで動作するスリープ機能を備える、請求項14に記載のゲーム機。
【請求項16】
前記処理部は、前記無線モジュールの前記タイマの値を一定周期で読み取り、当該読み取った値に基づいて、前記処理部による前記所定の処理の実行タイミングを調整する、請求項1に記載のゲーム機。
【請求項17】
前記処理部は、所定の手順が定義された1単位のゲーム処理を繰り返して実行し、当該1単位のゲーム処理の処理周期のN倍(Nは自然数)の周期で前記無線モジュールの前記タイマの値を読み取る、請求項16に記載のゲーム機。
【請求項18】
前記無線モジュールは、IEEE802.11の規格に基づいて他のゲーム機に設けられた他の無線モジュールとの間で内部のタイマを同期させる、請求項1に記載のゲーム機。
【請求項19】
相互に無線通信可能な複数のゲーム機を利用した多人数ゲームプレイを可能にするためのゲーム機であって、
前記多人数ゲームプレイにおける通信相手に設定された他のゲーム機に設けられた他の無線モジュールとの間で内部のタイマを同期させる時刻同期機能を有する無線モジュールと、
所定の処理を実行する処理部と、
自己のゲーム機の前記無線モジュールの前記タイマの値に基づいて、前記処理部による前記所定の処理の実行タイミングを決定するする決定部とを備えた、ゲーム機。
【請求項20】
相互に無線通信可能な複数のゲーム機を利用した多人数ゲームプレイを可能にするためのゲーム機であって、
前記多人数ゲームプレイにおける通信相手に設定された他のゲーム機に設けられた他の無線モジュールとの間で内部のタイマを同期させる時刻同期機能を有する無線モジュールを接続可能なコネクタと、
所定の処理を実行する処理部と、
前記コネクタに接続された前記無線モジュールの前記タイマの値に基づいて、前記処理部による前記所定の処理の実行タイミングを調整する調整部とを備えた、ゲーム機。
【請求項21】
相互に無線通信可能な複数のゲーム機を利用した多人数ゲームプレイを可能にするための無線モジュールであって、
他の無線モジュールとの間で内部のタイマを同期させる時刻同期手段と、
自己の前記タイマの値に基づいて、割り込み信号を一定周期で出力する割り込み信号出力手段とを備えた、無線モジュール。
【請求項22】
相互に無線通信可能な複数のゲーム機を利用した多人数ゲームプレイを可能にするためのゲームシステムであって、
当該ゲームシステムは、第1ゲーム機および第2ゲーム機の少なくとも2台のゲーム機を備え、
前記第1ゲーム機は、
前記第2のゲーム機に設けられた第2の無線モジュールとの間で内部のタイマを同期させる時刻同期機能を有する第1の無線モジュールと、
所定の処理を実行する第1の処理部と、
前記第1の無線モジュールの前記タイマの値に基づいて、前記第1の処理部による前記所定の処理の実行タイミングを調整する第1の調整部とを備え、
前記第2ゲーム機は、
前記第1の無線モジュールとの間で内部のタイマを同期させる時刻同期機能を有する第2の無線モジュールと、
所定の処理を実行する第2の処理部と、
前記第2の無線モジュールの前記タイマの値に基づいて、前記第2の処理部による前記所定の処理の実行タイミングを調整する第2の調整部とを備える、ゲームシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2008−99906(P2008−99906A)
【公開日】平成20年5月1日(2008.5.1)
【国際特許分類】
【出願番号】特願2006−285379(P2006−285379)
【出願日】平成18年10月19日(2006.10.19)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Bluetooth
2.ZIGBEE
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】