(57)【要約】【課題】  複数のゲーム装置においてゲーム処理に必要な時間を確保しながら、それらゲーム装置間における処理タイミングの同期を適切に調整することができるゲームシステム、ゲーム装置、およびゲームプログラムを提供する。【解決手段】  本発明のゲームシステムでは、子機がタイミングｋ１およびｋ２において、時間ｊ１およびｊ２だけそれぞれフレーム周期を長くすることによって親機との同期処理を行う。また、親機がタイミングｈ１において、時間ｉだけフレーム周期が長くすることによって、子機のフレーム周期よりも遅くなる傾向を作為的に作り出し、子機がタイミングｋ３において時間ｊ３だけ自機のフレーム周期を長く調整するような処理をする。したがって、各ゲーム装置の個体差を想定しながら処理周期の最低期間を確保しつつ、安定的に同期調整を行うことができる。【選択図】  図５
2005261856.tif 000002
【特許請求の範囲】
【請求項１】
所定長さの処理周期毎にゲーム処理を行う第１ゲーム装置および第２ゲーム装置を含み、当該第１ゲーム装置と当該第２ゲーム装置とが互いに通信してマルチプレイゲームを行うゲームシステムであって、
前記第１ゲーム装置は、
自機の前記処理周期に基づいて、当該処理周期内の所定基準時に対する第１タイミングを示す第１タイミング情報を取得する第１タイミング情報取得手段と、
前記第１タイミング情報を前記第２ゲーム装置に送信する第１タイミング情報送信制御手段とを備え、
前記第２ゲーム装置は、
前記第１ゲーム装置から前記第１タイミング情報を受信する第１タイミング情報受信制御手段と、
自機の前記処理周期に基づいて、当該処理周期内の前記所定基準時に対する第２タイミングを示す第２タイミング情報を取得する第２タイミング情報取得手段と、
前記第２タイミング情報と前記第１タイミング情報受信制御手段が受信した第１タイミング情報に基づいて、自機の前記所定基準時と前記第１ゲーム装置の前記所定基準時との差を検出する検出手段と、
前記検出手段が差を検出したとき、または、前記検出手段が検出した差が所定値以上のとき、自機の前記処理周期を一時的に長くする第１周期変更手段とを備えることを特徴とする、ゲームシステム。
【請求項２】
前記検出手段は、前記第１タイミングを示す時刻が前記第２タイミングを示す時刻より早いとき、当該第２タイミングの時刻より遅くなるまで当該第１タイミングの時刻に前記処理周期の所定長さを加算し、当該加算後の第１タイミングの時刻と第２タイミングの時刻との差を前記所定基準時の差として検出することを特徴とする、請求項１に記載のゲーム装置。
【請求項３】
前記第１ゲーム装置および前記第２ゲーム装置は、それぞれ
カウント値を自動的に更新し、所定範囲で巡回するカウンタと、
前記カウンタのカウント値の一巡を前記処理周期の１周期としてゲーム処理するゲーム処理手段とを、さらに備え、
前記第１周期変更手段は、前記カウンタのカウント値を減少させることによって、前記処理周期を長くすることを特徴とする、請求項１に記載のゲームシステム。
【請求項４】
前記第１ゲーム装置および前記第２ゲーム装置は、それぞれ前記カウンタのカウント値に応じて表示位置を指定し、当該表示位置に対する画面表示を更新する表示制御手段を、さらに備え、
前記処理周期は、前記カウンタのカウント値に応じて、前記画面表示が更新される表示期間と前記画面表示が更新されないブランキング期間とに分割されており、
前記第１周期変更手段は、前記カウンタがブランキング期間中を示すカウント値を示しているときに当該カウント値を減少させることを特徴とする、請求項３に記載のゲーム装置。
【請求項５】
前記第１周期変更手段は、前記減少させた後のカウント値も前記ブランキング期間中を示すカウント値になるように、前記カウンタのカウント値を減少させることを特徴とする、請求項４に記載のゲームシステム。
【請求項６】
前記第１タイミング情報取得手段は、所定の時間間隔で前記第１タイミング情報を取得し、
前記第１タイミング情報送信制御手段は、前記第１タイミング情報の取得に応じて当該第１タイミング情報を前記第２ゲーム装置に送信し、
前記第２タイミング情報取得手段は、前記第１タイミング情報の受信に応じて前記第２タイミング情報を取得し、
前記検出手段は、前記第２タイミング情報の取得に応じて、前記第２タイミング情報と前記第１タイミング情報に基づいて、自機の前記所定基準時と前記第１ゲーム装置の前記所定基準時との差を検出することを特徴とする、請求項１に記載のゲームシステム。
【請求項７】
前記第１ゲーム装置および前記第２ゲーム装置は、それぞれ
計時して計時値を生成する計時手段と、
他のゲーム装置との間で前記計時値を同期させる計時同期手段とを、さらに備えており、
前記第１タイミング情報取得手段は、前記第１タイミングにおける自機の前記計時手段の計時値を前記第１タイミング情報として取得し、
前記第２タイミング情報取得手段は、前記第２タイミングにおける自機の前記計時手段の計時値を前記第２タイミング情報として取得することを特徴とする、請求項１に記載のゲームシステム。
【請求項８】
前記第１ゲーム装置は、所定タイミングで自機の前記処理周期を一時的に長くする第２周期変更手段を、さらに備えることを特徴とする、請求項１に記載のゲームシステム。
【請求項９】
前記第２周期変更手段が自機の処理周期を一時的に長くする前記所定タイミングは、前記第１ゲーム装置および前記第２ゲーム装置に想定されている処理周期の個体差に基づいて設定されることを特徴とする、請求項８に記載のゲームシステム。
【請求項１０】
前記第１タイミング情報送信制御手段は、前記第１タイミング情報をブロードキャスト送信することを特徴とする、請求項１に記載のゲームシステム。
【請求項１１】
前記第２ゲーム装置は、前記検出手段が検出した差が所定値未満のとき、前記第１ゲーム装置との同期を確立したことを示す同期確立情報を前記第１ゲーム装置に送信する同期確立情報送信制御手段を、さらに備え、
前記第１ゲーム装置は、
前記第２ゲーム装置から送信された前記同期確立情報を受信する同期確立情報受信制御手段と、
前記同期確立情報受信制御手段の前記同期確立情報の受信に応答して、前記第２ゲーム装置とのマルチプレイゲーム処理を開始するゲーム処理開始手段とを、さらに備えることを特徴とする、請求項１に記載のゲームシステム
【請求項１２】
所定長さの処理周期毎にゲーム処理を行う他のゲーム装置と互いに通信してマルチプレイゲームを行い、当該処理周期毎にゲーム処理を行うゲーム装置であって、
他のゲーム装置の処理周期に基づいて、当該処理周期内の所定基準時に対する第１タイミングを示す第１タイミング情報が他のゲーム装置から送信され、
他のゲーム装置から前記第１タイミング情報を受信する第１タイミング情報受信制御手段と、
自機の前記処理周期に基づいて、当該処理周期内の前記所定基準時に対する第２タイミングを示す第２タイミング情報を取得する第２タイミング情報取得手段と、
前記第２タイミング情報と前記第１タイミング情報受信制御手段が受信した第１タイミング情報に基づいて、自機の前記所定基準時と他のゲーム装置の前記所定基準時との差を検出する検出手段と、
前記検出手段が差を検出したとき、または、前記検出手段が検出した差が所定値以上のとき、自機の前記処理周期を一時的に長くする周期変更手段とを備えることを特徴とする、ゲーム装置。
【請求項１３】
所定長さの処理周期毎にゲーム処理を行う他のゲーム装置と互いに通信してマルチプレイゲームを行い、当該処理周期毎にゲーム処理を行うゲーム装置であって、
自機の前記処理周期に基づいて、当該処理周期内の所定基準時に対するタイミングを示すタイミング情報を取得するタイミング情報取得手段と、
前記タイミング情報を定期的に他のゲーム装置に送信するタイミング情報送信制御手段と、
所定タイミングで自機の前記処理周期を一時的に長くする周期変更手段とを備えることを特徴とする、ゲーム装置。
【請求項１４】
所定長さの処理周期毎にゲーム処理を行う他のゲーム装置と互いに通信してマルチプレイゲームを行い、当該処理周期毎にゲーム処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、
他のゲーム装置の処理周期に基づいて、当該処理周期内の所定基準時に対する第１タイミングを示す第１タイミング情報が他のゲーム装置から送信され、
前記コンピュータを、
他のゲーム装置から前記第１タイミング情報を受信する第１タイミング情報受信制御手段、
自機の前記処理周期に基づいて、当該処理周期内の前記所定基準時に対する第２タイミングを示す第２タイミング情報を取得する第２タイミング情報取得手段、
前記第２タイミング情報と前記第１タイミング情報受信制御手段が受信した第１タイミング情報に基づいて、自機の前記所定基準時と他のゲーム装置の前記所定基準時との差を検出する検出手段、および
前記検出手段が差を検出したとき、または、前記検出手段が検出した差が所定値以上のとき、自機の前記処理周期を一時的に長くする周期変更手段、として機能させることを特徴とする、ゲームプログラム。
【請求項１５】
所定長さの処理周期毎にゲーム処理を行う他のゲーム装置と互いに通信してマルチプレイゲームを行い、当該処理周期毎にゲーム処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
自機の前記処理周期に基づいて、当該処理周期内の所定基準時に対するタイミングを示すタイミング情報を取得するタイミング情報取得手段、
前記タイミング情報を定期的に他のゲーム装置に送信するタイミング情報送信制御手段、および
所定タイミングで自機の前記処理周期を一時的に長くする周期変更手段、として機能させることを特徴とする、ゲームプログラム。
【請求項１６】
親機および子機のいずれかに設定された複数のゲーム装置が互いに通信してマルチプレイゲームを行い、所定長さの処理周期毎にゲーム処理を行う複数のゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、所定の条件に基づいて親機および子機のいずれか一方に自機を設定する親子設定手段として機能させ、
前記親子設定手段が自機を親機に設定したとき、前記コンピュータを、
自機の前記処理周期に基づいて、当該処理周期内の所定基準時に対する第１タイミングを示す第１タイミング情報を取得する第１タイミング情報取得手段、
前記第１タイミング情報を前記子機に設定されたゲーム装置に定期的に送信する第１タイミング情報送信制御手段、および
所定タイミングで自機の前記処理周期を一時的に長くする第１周期変更手段として機能させ、
前記親子設定手段が自機を子機に設定したとき、前記コンピュータを、
前記親機に設定されたゲーム装置から前記第１タイミング情報を受信する第１タイミング情報受信制御手段、
自機の前記処理周期に基づいて、当該処理周期内の前記所定基準時に対する第２タイミングを示す第２タイミング情報を取得する第２タイミング情報取得手段、
前記第２タイミング情報と前記第１タイミング情報受信制御手段が受信した第１タイミング情報に基づいて、自機の前記所定基準時と前記親機に設定されたゲーム装置の前記所定基準時との差を検出する検出手段、および
前記検出手段が差を検出したとき、または、前記検出手段が検出した差が所定値以上のとき、自機の前記処理周期を一時的に長くする第２周期変更手段として機能させることを特徴とする、ゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のゲーム装置間で通信するゲームシステム、ゲーム装置、およびゲームプログラムに関し、より特定的には、通信機能を使用して複数のプレイヤ間でゲームを実行させるゲームシステム、ゲーム装置、およびゲームプログラムに関する。
【背景技術】
【０００２】
従来、複数のゲーム装置間を通信線で接続した有線通信や近距離無線通信を用いてゲーム進行するゲームシステムが知られている。このようなゲームシステムでは、ネットワークを用いた複数のゲーム装置間でマルチプレイが行われ、各ゲーム装置の処理タイミングを合わせることによりゲーム進行が共通化される（例えば、特許文献１および特許文献２参照）。ゲームシステムでは、各ゲーム装置の処理タイミングの同期を取ることによって、時系列情報がずれて処理されることを防止することができる。例えば、各ゲーム装置は、それぞれが有する動作クロックに基づいて処理が進行するが、それらの動作クロックが同一周波数で動作しても個体差などによって微小なずれが生じる。この動作クロックのずれは、処理が進むにつれて徐々に大きくなり、ゲーム装置の処理に支障をきたすことになる。
【０００３】
上記特許文献１で開示されたゲーム機制御装置システムでは、親機から他の子機にリセット指令を送信する。そして、リセット指令を受信した子機は、当該リセット指令に基づいてゲームの制御周期を司る同期カウンタをリセットする。また、上記特許文献２で開示されたゲームシステムでは、ゲームデータ配信装置から配信されるゲームデータを、ゲームプレーヤにとって目立たない状態のときに再生するようにゲーム装置の再生タイミングが調整される。
【特許文献１】特開平８−２４３２５５号公報
【特許文献２】特開２０００−１０７４５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１で開示されたゲーム機制御装置システムでは、親機から送信されたリセット指令を受信した子機が同期カウンタをリセットする。その結果、子機では、必然的にリセットが発生したときの制御周期長さが短くなる。したがって、子機では、親機からリセット指令を受信したときに、当該子機におけるゲーム処理に必要な時間を確保することが困難となる。
【０００５】
また、上記特許文献２で開示されたゲームシステムでは、静止画から動画への切り替えタイミング、動画から静止画への切り替えタイミング、フラッシュシーンのように、各ゲーム装置において再生タイミングを調整することができる機会が限られており、常に処理タイミングの同期を取ることはできるわけではなかった。
【０００６】
それ故に、本発明の目的は、複数のゲーム装置においてゲーム処理に必要な時間を確保しながら、それらゲーム装置間における処理タイミングの同期を適切に調整することができるゲームシステム、ゲーム装置、およびゲームプログラムを提供することである。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号、ステップ番号、および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【０００８】
第１の発明は、所定長さの処理周期（フレーム周期）毎にゲーム処理を行う第１ゲーム装置（ゲーム装置１ａ）および第２ゲーム装置（ゲーム装置１ｂあるいはゲーム装置１ｃ）を含み、その第１ゲーム装置とその第２ゲーム装置とが互いに通信してマルチプレイゲームを行うゲームシステムである。第１ゲーム装置は、第１タイミング情報取得手段（Ｓ３８）および第１タイミング情報送信制御手段（Ｓ３９）を備える。第１タイミング情報取得手段は、自機の処理周期に基づいて、その処理周期内の所定基準時（フレームの開始時）に対する第１タイミング（Ｖ＿ＣＯＵＮＴ値＝０に対する親ＴＳＦ値）を示す第１タイミング情報（親Ｖ＿ＴＳＦ値）を取得する。第１タイミング情報送信制御手段は、第１タイミング情報を第２ゲーム装置に送信する（ビーコン）。第２ゲーム装置は、第１タイミング情報受信制御手段（Ｓ５４〜Ｓ５６）、第２タイミング情報取得手段（Ｓ６０）、検出手段（Ｓ６１）、および第１周期変更手段（Ｓ６２〜Ｓ６５、Ｓ６８〜Ｓ７１）を備える。第１タイミング情報受信制御手段は、第１ゲーム装置から第１タイミング情報を受信する。第２タイミング情報取得手段は、自機の処理周期に基づいて、その処理周期内の所定基準時に対する第２タイミング（Ｖ＿ＣＯＵＮＴ値＝０に対する子ＴＳＦ値）を示す第２タイミング情報（子Ｖ＿ＴＳＦ値）を取得する。検出手段は、第２タイミング情報と第１タイミング情報受信制御手段が受信した第１タイミング情報に基づいて、自機の所定基準時と第１ゲーム装置の所定基準時との差を検出する。第１周期変更手段は、検出手段が差を検出したとき自機の処理周期を一時的に長くする（Ｖ＿ＣＯＵＮＴ−Ｌ）。または、第１周期変更手段は、検出手段が検出した差が所定値以上（Ｌｔ以上）のとき、自機の処理周期を一時的に長くする（Ｖ＿ＣＯＵＮＴ−Ｌ）。
【０００９】
ここで、一時的とは、自機の所定基準時と第１ゲーム装置の所定基準時の差が所定値以下になるまで（または一致するまで）の間であってもよい。また、所定数（１つでもよい）の処理周期の間に限り長くするようにしても良い。例えば、検出手段が差を検出したとき、または、検出手段によって所定値以上の差が検出されたときに、検出があった時点の処理周期のみの長さを長くするようにしても良い。すなわち、第１周期変更手段は、検出手段が差を検出したとき、または、検出手段が所定値以上の差を検出したとき、自機の処理周期を長くし、その後所定条件を満たしたときに処理周期を所定長さ（本来の長さ）に戻すようにする。また、検出手段が自機の所定基準時と第１ゲーム装置の所定基準時との一致を検出するようにし、不一致のときに第１周期変更手段が処理周期を長くする程度（長さ）を決定するようにしてもよい。
【００１０】
また、検出手段は、第１タイミング情報が示す時刻と第２タイミング情報が示す時刻とを用いて、第２ゲーム装置の所定基準時と第１ゲーム装置の所定基準時との差を検出してもよいし、後述する第２の発明のように、第１タイミング情報が示す時刻が第２タイミング情報が示す時刻より遅くなるまで、第１タイミング情報が示す時刻に処理周期の長さ（周期期間）を加算し、その加算後の第１タイミングの時刻と第２タイミングの時刻との差を所定基準時の差として検出してもよい。
【００１１】
第２の発明は、上記第１の発明において、検出手段は、第１タイミングを示す時刻が第２タイミングを示す時刻より早いとき、その第２タイミングの時刻より遅くなるまでその第１タイミングの時刻に処理周期の所定長さを加算し、その加算後の第１タイミングの時刻と第２タイミングの時刻との差を所定基準時の差として検出する。
【００１２】
第３の発明は、上記第１の発明において、第１ゲーム装置および第２ゲーム装置は、それぞれカウンタ（１３１）およびゲーム処理手段を、さらに備える。カウンタは、カウント値（Ｖ＿ＣＯＵＮＴ値）を自動的に更新し、所定範囲で巡回（０〜２６２）する。ゲーム処理手段は、カウンタのカウント値の一巡を処理周期の１周期としてゲーム処理する。第１周期変更手段は、カウンタのカウント値を減少（Ｖ＿ＣＯＵＮＴ−Ｌ）させることによって、処理周期を長くする。
【００１３】
第４の発明は、上記第３の発明において、第１ゲーム装置および第２ゲーム装置は、それぞれ表示制御手段（１３）をさらに備える。表示制御手段は、カウンタのカウント値に応じて表示位置を指定し、その表示位置に対する画面表示を更新する。処理周期は、カウンタのカウント値に応じて、画面表示が更新される表示期間（０〜１９１）と画面表示が更新されないブランキング期間（１９２〜２６２）とに分割されている。第１周期変更手段は、カウンタがブランキング期間中を示すカウント値（２１２）を示しているときにそのカウント値を減少させる。
【００１４】
第５の発明は、上記第４の発明において、第１周期変更手段は、減少させた後のカウント値もブランキング期間中を示すカウント値になるように、カウンタのカウント値を減少させる。
【００１５】
第６の発明は、上記第１の発明において、第１タイミング情報取得手段は、所定の時間間隔（５００ｍｓ間隔）で第１タイミング情報を取得する。第１タイミング情報送信制御手段は、第１タイミング情報の取得に応じてその第１タイミング情報を第２ゲーム装置に送信する。第２タイミング情報取得手段は、第１タイミング情報の受信に応じて第２タイミング情報を取得する。検出手段は、第２タイミング情報の取得に応じて、第２タイミング情報と第１タイミング情報に基づいて、自機の所定基準時と第１ゲーム装置の所定基準時との差を検出する。
【００１６】
第７の発明は、上記第１の発明において、第１ゲーム装置および第２ゲーム装置は、それぞれ計時手段（３３）および計時同期手段（Ｓ３９、Ｓ５６）を、さらに備えている。計時手段は、計時して計時値（ＴＳＦ値）を生成する。計時同期手段は、他のゲーム装置との間で計時値を同期させる。第１タイミング情報取得手段は、第１タイミング（Ｖ＿ＣＯＵＮＴ＝０）における自機の計時手段の計時値（親ＴＳＦ値）を第１タイミング情報（親Ｖ＿ＴＳＦ値）として取得する。第２タイミング情報取得手段は、第２タイミング（Ｖ＿ＣＯＵＮＴ＝０）における自機の計時手段の計時値（子ＴＳＦ値）を第２タイミング情報（子Ｖ＿ＴＳＦ値）として取得する。
【００１７】
第８の発明は、上記第１の発明において、第１ゲーム装置は、第２周期変更手段（Ｓ３２〜Ｓ３６）をさらに備える。第２周期変更手段は、所定タイミングで自機の処理周期を一時的に長くする（Ｓ３５）。第２周期変更手段は、所定の時間間隔（フレーム数ｎ）で自機の処理周期を一時的に長くしてもよいし、所定の条件を満たしたときに（例えば、第１ゲーム装置の所定基準時が第２ゲーム装置の所定基準時よりも早くなった場合に）、自機の処理周期を一時的に長くしてもよい。なお、後者の場合には、第２ゲーム装置から第１ゲーム装置に対して、第１ゲーム装置の所定基準時が第２ゲーム装置の所定基準時よりも早くなったことを通知する手段を設ける。一時的とは、所定数（１つでもよい）の処理周期に限り長くしても良いし、所定条件を満たすまで（例えば、第１ゲーム装置の所定基準時が第２ゲーム装置の所定基準時と比べて一致するか遅くなるまで）、自機の処理周期を一時的に長くしてもよい。
【００１８】
第９の発明は、上記第８の発明において、第２周期変更手段が自機の処理周期を一時的に長くする所定タイミングは、第１ゲーム装置および第２ゲーム装置に想定されている処理周期の個体差（ｐｐｍ）に基づいて設定される。
【００１９】
第１０の発明は、上記第１の発明において、第１タイミング情報送信制御手段は、第１タイミング情報をブロードキャスト送信する。
【００２０】
第１１の発明は、上記第１の発明において、第２ゲーム装置は、同期確立情報送信制御手段（Ｓ２２、Ｓ６６）をさらに備える。同期確立情報送信制御手段は、検出手段が検出した差が所定値未満のとき、第１ゲーム装置との同期を確立したことを示す同期確立情報（同期ＯＫフラグが「１」）を第１ゲーム装置に送信する。第１ゲーム装置は、同期確立情報受信制御手段（Ｓ１３）およびゲーム処理開始手段（Ｓ１５）をさらに備える。同期確立情報受信制御手段は、第２ゲーム装置から送信された同期確立情報を受信する。ゲーム処理開始手段は、同期確立情報受信制御手段の同期確立情報の受信に応答して、第２ゲーム装置とのマルチプレイゲーム処理を開始する。
【００２１】
第１２の発明は、所定長さの処理周期毎にゲーム処理を行う他のゲーム装置（ゲーム装置１ａ）と互いに通信してマルチプレイゲームを行い、その処理周期毎にゲーム処理を行うゲーム装置（ゲーム装置１ｂあるいはゲーム装置１ｃ）である。ゲーム装置へは、他のゲーム装置の処理周期に基づいて、その処理周期内の所定基準時に対する第１タイミングを示す第１タイミング情報が他のゲーム装置から送信される。ゲーム装置は、第１タイミング情報受信制御手段、第２タイミング情報取得手段、検出手段、および周期変更手段（Ｓ６２〜Ｓ６５、Ｓ６８〜Ｓ７１）を備える。第１タイミング情報受信制御手段は、他のゲーム装置から第１タイミング情報を受信する。第２タイミング情報取得手段は、自機の処理周期に基づいて、その処理周期内の所定基準時に対する第２タイミングを示す第２タイミング情報を取得する。検出手段は、第２タイミング情報と第１タイミング情報受信制御手段が受信した第１タイミング情報に基づいて、自機の所定基準時と他のゲーム装置の所定基準時との差を検出する。周期変更手段は、検出手段が差を検出したとき、または、検出手段が検出した差が所定値以上のとき、自機の処理周期を一時的に長くする。
【００２２】
第１３の発明は、所定長さの処理周期毎にゲーム処理を行う他のゲーム装置（ゲーム装置１ｂあるいはゲーム装置１ｃ）と互いに通信してマルチプレイゲームを行い、その処理周期毎にゲーム処理を行うゲーム装置（ゲーム装置１ａ）である。ゲーム装置は、タイミング情報取得手段（Ｓ３８）、タイミング情報送信制御手段（Ｓ３９）、および周期変更手段（Ｓ３２〜Ｓ３６）を備える。タイミング情報取得手段は、自機の処理周期に基づいて、その処理周期内の所定基準時に対するタイミング（Ｖ＿ＣＯＵＮＴ値＝０に対する親ＴＳＦ値）を示すタイミング情報（親Ｖ＿ＴＳＦ値）を取得する。タイミング情報送信制御手段は、タイミング情報を他のゲーム装置に送信する。周期変更手段は、所定タイミング（フレーム数ｎ）で自機の処理周期を一時的に長くする（Ｓ３５）。
【００２３】
第１４の発明は、所定長さの処理周期毎にゲーム処理を行う他のゲーム装置（ゲーム装置１ａ）と互いに通信してマルチプレイゲームを行い、その処理周期毎にゲーム処理を行うゲーム装置（ゲーム装置１ｂあるいはゲーム装置１ｃ）のコンピュータ（１１）に実行させるゲームプログラムである。他のゲーム装置の処理周期に基づいて、その処理周期内の所定基準時に対する第１タイミングを示す第１タイミング情報が他のゲーム装置からゲーム装置に送信される。ゲームプログラムは、コンピュータを、第１タイミング情報受信制御手段、第２タイミング情報取得手段、検出手段、および周期変更手段（Ｓ６２〜Ｓ６５、Ｓ６８〜Ｓ７１）として機能させる。第１タイミング情報受信制御手段は、他のゲーム装置から第１タイミング情報を受信する。第２タイミング情報取得手段は、自機の処理周期に基づいて、その処理周期内の所定基準時に対する第２タイミングを示す第２タイミング情報を取得する。検出手段は、第２タイミング情報と第１タイミング情報受信制御手段が受信した第１タイミング情報に基づいて、自機の所定基準時と他のゲーム装置の所定基準時との差を検出する。周期変更手段は、検出手段が差を検出したとき、または、検出手段が検出した差が所定値以上のとき、自機の処理周期を一時的に長くする。
【００２４】
第１５の発明は、所定長さの処理周期毎にゲーム処理を行う他のゲーム装置（ゲーム装置１ａ）と互いに通信してマルチプレイゲームを行い、その処理周期毎にゲーム処理を行うゲーム装置（ゲーム装置１ｂあるいはゲーム装置１ｃ）のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、コンピュータを、タイミング情報取得手段（Ｓ３８）、タイミング情報送信制御手段（Ｓ３９）、および周期変更手段（Ｓ３２〜Ｓ３６）として機能させる。タイミング情報取得手段は、自機の処理周期に基づいて、その処理周期内の所定基準時に対するタイミング（Ｖ＿ＣＯＵＮＴ値＝０に対する親ＴＳＦ値）を示すタイミング情報（親Ｖ＿ＴＳＦ値）を取得する。タイミング情報送信制御手段は、タイミング情報を定期的に他のゲーム装置に送信する。周期変更手段は、所定タイミング（フレーム数ｎ）で自機の処理周期を一時的に長くする（Ｓ３５）。
【００２５】
第１６の発明は、親機および子機のいずれかに設定された複数のゲーム装置が互いに通信してマルチプレイゲームを行い、所定長さの処理周期毎にゲーム処理を行う複数のゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、コンピュータを、親子設定手段（最初に無線通信を行おうとしたゲーム装置１を親機に設定など）として機能させる。親子設定手段は、所定の条件に基づいて親機および子機のいずれか一方に自機を設定する。親子設定手段が自機を親機に設定したとき、ゲームプログラムは、第１タイミング情報取得手段、第１タイミング情報送信制御手段、および第１周期変更手段（Ｓ３２〜Ｓ３６）としてコンピュータを機能させる。第１タイミング情報取得手段は、自機の処理周期に基づいて、その処理周期内の所定基準時に対する第１タイミングを示す第１タイミング情報を取得する。第１タイミング情報送信制御手段は、第１タイミング情報を子機に設定されたゲーム装置に定期的に送信する。第１周期変更手段は、所定タイミングで自機の処理周期を一時的に長くする。親子設定手段が自機を子機に設定したとき、ゲームプログラムは、第１タイミング情報受信制御手段、第２タイミング情報取得手段、検出手段、および第２周期変更手段（Ｓ６２〜Ｓ６５、Ｓ６８〜Ｓ７１）としてコンピュータを機能させる。第１タイミング情報受信制御手段は、親機に設定されたゲーム装置から第１タイミング情報を受信する。第２タイミング情報取得手段は、自機の処理周期に基づいて、その処理周期内の所定基準時に対する第２タイミングを示す第２タイミング情報を取得する。検出手段は、第２タイミング情報と第１タイミング情報受信制御手段が受信した第１タイミング情報に基づいて、自機の所定基準時と親機に設定されたゲーム装置の所定基準時との差を検出する。第２周期変更手段は、検出手段が差を検出したとき、または、検出手段が検出した差が所定値以上のとき、自機の処理周期を一時的に長くする。
【発明の効果】
【００２６】
上記第１の発明によれば、第２ゲーム装置は、自機の処理周期を長くすることによって第１ゲーム装置との同期処理を行うため、各処理周期において一定の処理時間を確保しつつ第１ゲーム装置間で処理の同期を確保することができる。
【００２７】
上記第２の発明によれば、第１タイミング情報取得手段による第１タイミングの取得時期と、第２タイミング情報取得手段による第２タイミング情報の取得時期にずれがある場合であっても、そのずれを考慮して、対応する処理基準時の差を検出することができる。
【００２８】
上記第３の発明によれば、表示制御に用いるカウンタ機能を使用することによって第１ゲーム装置および第２ゲーム装置とが効率的に同期を確保することができる。
【００２９】
上記第４および第５の発明によれば、第２ゲーム装置の周期変更は、ブランキング期間に行われ、かつ、調整後のカウント値をブランキング期間内のカウント値に更新するため、第２ゲーム装置の画面表示を乱すことなく各ゲーム装置間で処理の同期を確保することができる。
【００３０】
上記第６の発明によれば、第１ゲーム装置から第２ゲーム装置へ定期的に第１タイミング情報が送信されるため、定期的に適切な同期調整を行うことができる。また、ゲーム装置間で処理周期のずれが生じたときにすぐに同期調整を行うことができる。
【００３１】
上記第７の発明によれば、第１ゲーム装置および第２ゲーム装置で基準となる計時値が同期し、この計時値に基づいて処理周期のタイミングが評価されるため、処理周期のずれを正確に検出することができる。
【００３２】
上記第８の発明によれば、第１ゲーム装置は、その処理周期のタイミングが第２ゲーム装置の処理周期のタイミングよりも遅くなる傾向を作為的に作り出し、第２ゲーム装置がそれにあわせて自機の処理周期を長く調整するような処理をすることによって、全体として処理周期を長くする方向で処理周期のタイミングを合わせるので、処理周期の最低期間を確保しつつ、安定的に同期調整を行うことができる。
【００３３】
上記第９の発明によれば、各ゲーム装置の個体差を想定しながら処理周期の最低期間を確保しつつ、安定的に同期調整を行うことができる。
【００３４】
上記第１０の発明によれば、第１ゲーム装置は第１タイミング情報をブロードキャストで送信し、第２ゲーム装置は受信した第１タイミング情報を用いて同期処理するため、第１ゲーム装置と複数の第２ゲーム装置とが通信する場合にも、個別に第１タイミング情報を送信することなく、全てのゲーム装置間で同期調整をすることができる。
【００３５】
上記第１１の発明によれば、第１ゲーム装置が第２ゲーム装置との同期を確認した後にゲームを開始するため、同期ずれによる処理エラーを軽減することができる。
【００３６】
また、本発明のゲーム装置によれば、上述したゲームシステムに含まれる第１ゲーム装置または第２ゲーム装置と同様の効果を得ることができる。さらに、本発明のゲームプログラムによれば、当該ゲームプログラムを上述したゲームシステムに含まれるゲーム装置のコンピュータに実行させることによって、上述したゲームシステムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００３７】
図面を参照して、本発明の一実施形態に係るゲームシステムに含まれるゲーム装置１の構造について説明する。なお、図１は、当該ゲームシステムに含まれる携帯ゲーム装置１の外観図であるが、本発明のゲームシステムの構成は、携帯ゲーム装置１に限定されるものではなく、据置型のゲーム装置にも適用することができる。また、複数のゲーム装置１の間を通信する手段として近距離無線通信を用いて説明するが、当該ゲーム装置１同士を通信ケーブルなどで接続して互いに有線通信を行ってもかまわない。また当該ゲーム装置１同士を遅延の少ない広域ネットワークシステムで接続して通信を行ってもかまわない。
【００３８】
図１において、ゲーム装置１は、ゲーム装置本体１０にゲームカートリッジ（以下、単にカートリッジと記載する）４および無線通信ユニット３が装着されて構成される。カートリッジ４は、ゲームプログラム等の情報記憶媒体として用いられ、カートリッジ４をゲーム装置本体１０の背面に装着することによって、カートリッジ４に含まれる半導体メモリ等（図２に示すＲＯＭ４１およびバックアップＲＡＭ４２）とゲーム装置本体１０とが電気的に接続される。ゲーム装置本体１０の背面上部には、カートリッジ４を着脱自在に装着するためのカートリッジ挿入孔（図示せず）が形成され、この挿入口の底部付近にカートリッジ４と電気的に接続するためのコネクタ１８（図示破線領域）が設けられる。無線通信ユニット３は他のゲーム装置との間で無線通信を行い、無線通信ユニット３をゲーム装置本体１０の背面に装着することによって、受信した通信データがゲーム装置本体１０に出力され、ゲーム装置本体１０から出力される通信データを他のゲーム装置へ送信する。ゲーム装置本体１０の背面下部には、無線通信ユニット３が有するコネクタ３５と電気的に接続するためのコネクタ１７（図示破線領域）が設けられる。
【００３９】
ゲーム装置本体１０は、ハウジング２３を含み、その一方主面（図示の表面）の中央領域に液晶表示器（ＬＣＤ）２１が形成されるとともに、ＬＣＤ２１を挟んだ外側の空き領域やハウジング２３の側面にスピーカ２０および操作スイッチ２２ａ〜２２ｇがそれぞれ設けられている。これらの操作スイッチ２２ａ〜２２ｇは、ゲーム装置１で処理されるゲームプログラムの内容によって、操作指示を与える内容が異なるが、典型的には、操作スイッチ（十字キー）２２ａが移動方向指示を与え、操作スイッチ２２ｂおよび２２ｃが「Ａ」および「Ｂ」等の動作指示を与え、操作スイッチ２２ｄおよび２２ｅが「ＳＴＡＲＴ」および「ＳＥＬＥＣＴ」等の動作指示を与え、操作スイッチ２２ｆおよび２２ｇが「Ｌ」および「Ｒ」等の動作指示を与える。
【００４０】
無線通信ユニット３は、その下部に設けられたコネクタ３５と、その上部に設けられた１対のつまみ部３６ａおよび３６ｂと、コネクタ３５と同じ下部に設けられた１対の掛止部３７ａおよび３７ｂとを有している。つまみ部３６ａおよび３６ｂは、無線通信ユニット３の上部左右に突出しており、プレイヤが双方を外側から内側方向へそれぞれ引き寄せることによって、下部に突出している掛止部３７ａおよび３７ｂがそれぞれ外側方向へ動く。そして、プレイヤがつまみ部３６ａおよび３６ｂの操作を止めれば、つまみ部３６ａおよび３６ｂが共に外側方向へ付勢されているため、掛止部３７ａおよび３７ｂがそれぞれ内側方向へ動く。一方、ゲーム装置本体１０には、掛止部３７ａおよび３７ｂとそれぞれ嵌合する掛止孔（図示せず）が形成されている。プレイヤは、無線通信ユニット３のコネクタ３５とゲーム装置本体１０のコネクタ１７とを接続すると同時に、掛止部３７ａおよび３７ｂをそれぞれ上記掛止孔と嵌合することによって、無線通信ユニット３はゲーム装置本体１０に装着される。また、無線通信ユニット３が他のゲーム装置と無線通信するためのアンテナは、ハウジング内部の基板上に形成されており、ハウジング外部には露出していない。本実施例における無線通信ユニット３は、無線ＬＡＮの規格ＩＥＥＥ８０２．１１に基づいて通信を行う。
【００４１】
図２は、ゲーム装置本体１０、カートリッジ４、および無線通信ユニット３を有するゲーム装置１の機能ブロック図である。図２において、ゲーム装置本体１０は、上述した構成部の他に、中央処理ユニット（ＣＰＵコア）１１、ブートＲＯＭ１２、ＬＣＤコントローラ１３、ワーキングＲＡＭ（ＷＲＡＭ）１４、ビデオＲＡＭ（ＶＲＡＭ）１５、周辺回路１６、およびオーディオアンプ１９を含んでいる。また、無線通信ユニット３は、上述した構成部の他に、ベースバンドＩＣ３１、電源回路３２、ＴＳＦ（Ｔｉｍｉｎｇ  Ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  Ｆｕｎｃｔｉｏｎ：ＩＥＥＥ８０２．１１のタイミング同期機能）レジスタ３３、およびＲＦ−ＩＣ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ−ＩＣ）３４を含んでいる。また、カートリッジ４は、上述した構成部の他に、ＲＯＭ４１およびバックアップＲＡＭ４２を含んでいる。
【００４２】
ＲＯＭ４１には、ゲーム装置１でプレイされるゲームの内容が記述されたゲームプログラムとその画像および音声データとが格納されている。ＣＰＵコア１１は、ＲＯＭ４１に格納されたゲームプログラムに基づいて、ゲーム処理モードで動作する。ＣＰＵコア１１は、所定のバスを介して各構成要素と接続されており、コネクタ１７および１８も接続されている。それらコネクタ１７および１８から入力したデータは、ＣＰＵコア１１に出力される。また、ＣＰＵコア１１で処理されたデータは、コネクタ１７および１８にも出力可能である。
【００４３】
ＣＰＵコア１１は、ブートＲＯＭ１２に記憶されている立ち上げプログラムを処理するとともに、ＲＯＭ４１に格納されているゲームプログラムに基づいてゲーム処理モードで動作するものであって、カートリッジ４がゲーム装置本体１０に装着されていると、コネクタ１８を介してＲＯＭ４１にアクセスする。また、ＣＰＵコア１１は、操作スイッチ２２によって入力される操作信号と当該ゲームプログラムとに基づいてゲーム処理を実行し、処理途中のデータをＷＲＡＭ１４に記憶させるとともに、画像データをＶＲＡＭ１５に一時記憶させる。
【００４４】
ＷＲＡＭ１４には、ＣＰＵコア１１がゲーム処理モードで動作するとき、ゲームプログラム、処理データ、および他のゲーム装置と同期を取って無線通信するためのデータなどが格納されて、適時ＣＰＵコア１１が行う処理に必要な記憶領域として用いられる。また、ゲーム装置１が他のゲーム装置と無線通信する場合、ＷＲＡＭ１４に格納された各データが適時用いられ、ＣＰＵコア１１の指示に基づいてコネクタ１７を介して無線通信ユニット３へ出力される。また、他のゲーム装置から無線通信ユニット３を介して受け取った受信データは、ＣＰＵコア１１で処理されてＷＲＡＭ１４に適時格納される。
【００４５】
オーディオアンプ１９は、Ｄ／Ａ変換回路および増幅回路を含み、ＣＰＵコア１１のゲームプログラムの処理結果に基づく音声データを音声信号（アナログ信号）に変換し、かつ適宜増幅してスピーカ２０から音声や効果音として出力させる。
【００４６】
ＣＰＵコア１１は、ＷＲＡＭ１４およびＶＲＡＭ１５の記憶領域を用いて画像処理を行う。ＣＰＵコア１１は、これらを用いてＬＣＤ２１に表示すべきゲーム画像データを生成し、ＶＲＡＭ１５に格納する。ＬＣＤコントローラ１３は、ＶＲＡＭ１５に格納された画像データをＬＣＤ２１に表示させるための表示制御を行い、ＬＣＤ２１に表示させる。ＶＲＡＭ１５は、ＣＰＵコア１１で処理された画像データが一時格納される。また、ＬＣＤコントローラ１３は、その内部にＶ＿ＣＯＵＮＴレジスタ１３１を含んでいる。Ｖ＿ＣＯＵＮＴレジスタ１３１は、ＬＣＤコントローラ１３がＬＣＤ２１の走査ライン毎にＶＲＡＭ１５に格納された画像データを表示する表示ライン番号を指定するカウンタであり、所定のクロックタイミングでカウントが更新される。つまり、Ｖ＿ＣＯＵＮＴレジスタ１３１が示すカウント値（以下、Ｖ＿ＣＯＵＮＴ値と記載する）は、ＬＣＤ２１の表示ライン番号を示しており、ＣＰＵコア１１は、Ｖ＿ＣＯＵＮＴレジスタ１３１を読むことで表示ライン番号を取得できる。また、ＣＰＵコア１１は、Ｖ＿ＣＯＵＮＴレジスタ１３１のカウント値を設定することで、ＬＣＤコントローラ１３が走査する表示ライン番号を変更することもできる。
【００４７】
周辺回路１６は、音声処理、ＤＭＡ（ダイレクト・メモリ・アクセス）、タイマまたは入出力制御等の処理を行う。
【００４８】
一方、カートリッジ４のＲＯＭ４１には、ゲームプログラム、ゲームプログラムに利用される各種データ、および無線通信のためのデータなどが固定的に記憶される。バックアップＲＡＭ４２には、ゲームプログラムの実行によって得られたゲームデータがコネクタ１８を介して書き換え可能かつ不揮発的に記憶される。バックアップＲＡＭ４２に記憶されるゲームデータとしては、例えば、ゲームを終了したときの経過を示すバックアップデータが含まれる。なお、バックアップＲＡＭ４２は、フラッシュメモリ等で構成されることもある。
【００４９】
無線通信ユニット３のベースバンドＩＣ３１は、送出すべきデータをゲーム装置本体１０からコネクタ１７および３５を介して受信して、そのデータをエンコードしてＲＦ−ＩＣ３４に送出する。ＲＦ−ＩＣ３４は、ベースバンドＩＣ３１からのデータを変調してアンテナから電波で送信する。また、他のゲーム装置から送信された電波は、アンテナを介して受信してＲＦ−ＩＣ３４で復調される。そして、ＲＦ−ＩＣ３４で復調された復調信号がベースバンドＩＣ３１に出力される。ベースバンドＩＣ３１は、復調信号をデコードしてデータを復調し、そのデータをコネクタ３５および１７を介してゲーム装置本体１０に転送する。ＴＳＦレジスタ３３は、複数のゲーム装置１間でデータを送受信するなど処理の同期を確立するためのカウンタであり、所定の動作クロックに基づいて動作する計時手段である。例えば、ＴＳＦレジスタ３３は、無線ＬＡＮの規格ＩＥＥＥ８０２．１１などで用意されている無線通信に用いるタイミング同期機能が用いられる。本実施例では、ＣＰＵコア１１がコネクタ１７および３５を介してＴＳＦレジスタ３３の値（以下、ＴＳＦ値と記載する）を読み出すことによって、その瞬間のＴＳＦ値（単位はμｓ（マイクロ秒））を取得することができる。電源回路３２は、無線通信ユニット３内の各構成要素への電源を供給する。なお、本実施例では、微弱電波を使った近距離無線によって無線通信が行われる。
【００５０】
次に、図３〜図５を参照して、本実施形態のデータマップのイメージやゲーム装置１で実行されるフローチャートを説明する前に、本発明の理解を容易にするためにゲームシステム全体の動作などを参照して、当該ゲームプログラムを実行するゲーム装置１によって提供される通信同期処理の概要について説明する。なお、図３は、複数のゲーム装置１間で送受信されるゲームデータを説明するための図である。図４は、Ｖ＿ＣＯＵＮＴ値、ＬＣＤ２１の走査ライン、およびフレームの関係を示す説明図である。図５は、親機のゲーム装置１ａおよび子機のゲーム装置１ｂが、互いに同期を確立する手順を説明するための図である。
【００５１】
図３は、３台のゲーム装置１が互いに無線通信することによってゲーム進行するゲームシステムの一例である。本実施例では、ゲームシステムに含まれるゲーム装置１のうち、１台のゲーム装置１が親機に設定され、他のゲーム装置１が子機に設定される。なお、親機および子機の決定は、最初に無線通信を行おうとしたゲーム装置１を親機に設定してもかまわないし、操作スイッチ２２を操作など任意の方法で親機を設定してもかまわない。本実施例では、ゲームシステムに含まれるゲーム装置１は、親機および子機のいずれにも設定することができる。以下の説明においては、親機および子機を参照符号で区別する場合、親機をゲーム装置１ａ、子機をゲーム装置１ｂまたは１ｃとし、その構成要素も同様の参照符号「ａ」、「ｂ」、または「ｃ」を付与する。
【００５２】
図３では、後述する同期処理によって同期が確立された状態において、ゲーム装置１が、ＬＣＤ２１にゲーム画像を１画面表示する期間を１周期（１フレーム）として処理を繰り返し、ゲームが進行していく様子を説明する。この１フレームの間に、親機のゲーム装置１ａが子機のゲーム装置１ｂおよび１ｃにそれぞれゲームデータを送信し（親ゲームデータ）、ゲーム装置１ｂおよび１ｃがそれぞれゲーム装置１ａにゲームデータを返信する（子ゲームデータ）。これらのゲームデータを送受信することによって、ゲーム装置１ａ〜１ｃの処理が同期してゲームが進行する。ここで、ゲームデータは、ゲームの内容に応じてゲーム装置１毎のキーデータ（操作スイッチ２２を操作したデータ）やゲームパラメータを含み、本実施例では後述する同期ＯＫフラグが子ゲームデータにさらに付与されている。また、ゲームデータは、ゲームシステムで用いる無線通信で規定される送信フレームに基づいて送信されるが、ここでは詳細な説明を省略する。
【００５３】
図４において、上述した１フレームは、表示期間およびブランキング期間に分けられる。例えば、Ｖ＿ＣＯＵＮＴレジスタ１３１は、Ｖ＿ＣＯＵＮＴ値が０から２６２までを１周期としてカウントし、このＶ＿ＣＯＵＮＴ値が０から２６２までが１フレームに定義される。そして、図４に示すようにＬＣＤ２１の表示画面の解像度が２５６ｄｏｔ×１９２ｄｏｔであり、図示左右方向に並ぶ１ｄｏｔを１走査ラインとする場合、Ｖ＿ＣＯＵＮＴ値が０から１９１までが表示期間となる。そして、Ｖ＿ＣＯＵＮＴ値が０から１９１までの表示期間は、ＬＣＤ２１の表示画面がＬＣＤコントローラ１３によって１走査ラインずつＶＲＡＭ１５の内容に応じて変更されていく。一方、Ｖ＿ＣＯＵＮＴ値が１９２から２６２までがブランキング期間となる。このブランキング期間でＶＲＡＭ１５の内容を変更することで、ＬＣＤ２１に表示されるゲーム画像を乱すことなく表示するゲーム画像を変化させていく。本実施例では、１走査ラインの走査に要する時間をＬｔ、１フレームの走査に要する時間をＦｔとしている。例えば、ゲーム装置１は、１秒間に６０フレームを描画する。この場合、１フレームの走査に要する時間Ｆｔ≒１６．６７ｍｓ（ミリ秒）となり、１走査ラインの走査に要する時間Ｌｔ≒６３．３７μｓとなる。
【００５４】
図５を参照して、親機のゲーム装置１ａおよび子機のゲーム装置１ｂ（以下、単に親機および子機とそれぞれ記載するときがある）が、互いに接続を確立した後に同期を確立する手順の概要について説明する。
【００５５】
親機と子機とが接続を確立した後、親機は、自機のＶ＿ＴＳＦ値を取得する。Ｖ＿ＴＳＦ値とは、自機のＶ＿ＣＯＵＮＴレジスタ１３１が示すＶ＿ＣＯＵＮＴ値が０のときに自機のＴＳＦレジスタ３３が示すＴＳＦ値であり、親機のＶ＿ＴＳＦ値を親Ｖ＿ＴＳＦ値とし、子機のＶ＿ＴＳＦ値を子Ｖ＿ＴＳＦ値とする。これらの取得方法の詳細については、後述する。
【００５６】
次に、親機は、ビーコン（Ｂｅａｃｏｎ）を子機に送信する。このビーコンは、無線ネットワークにおける各ゲーム装置１のデータ送信のタイミングを同期させるために、親機が一定間隔（例えば、５００ｍｓ間隔）で全ての子機にブロードバンド送信するパケットである。本実施例では、親機は、このパケットに取得した親Ｖ＿ＴＳＦ値と、ビーコン送信タイミングにおける当該親機のＴＳＦレジスタ３３の値である親ＴＳＦ値を記述して、ビーコンを子機に送信する。
【００５７】
子機は、親機からビーコンを受信し、子機のＴＳＦ値（子ＴＳＦ値）を当該ビーコンに記述された親ＴＳＦ値に一致させる。そして、子機は、自機のずれ調節割り込みのタイミング（上記ブランキング期間に設定され、例えばＶ＿ＣＯＵＮＴ値が２１２のタイミング）ｋ１において、親機との同期を確認する。具体的には、子機がタイミングｋ１において自機の子Ｖ＿ＴＳＦ値を取得し、ビーコンに記述された親Ｖ＿ＴＳＦ値と子Ｖ＿ＴＳＦ値との差Ａ１によって、親機との同期ずれを検出する。つまり、子機は、ビーコンに記述された親Ｖ＿ＴＳＦ値を用いて、親機のフレーム周期と自機のフレーム周期とのずれを検出する。
【００５８】
そして、子機は、親機との同期ずれの差Ａ１を縮めるために、自機のフレーム周期を当該差Ａ１以下の時間ｊ１だけ長くする。具体的には、子機は、時間ｊ１を走査ライン数（例えば、１０以下の自然数）で設定する。そして、子機は、自機のＶ＿ＣＯＵＮＴレジスタ１３１が示すＶ＿ＣＯＵＮＴ値を上記走査ライン数だけ減算することによって、自機のフレーム周期を長くする。ここで、子機が一度の調整でフレーム周期を長くする走査ライン数の最大値は、ハードウェアの構成に合わせて実現可能な数値に設定すればよい。例えば、図４で説明したフレーム構成の場合、Ｖ＿ＣＯＵＮＴ値の減算をブランキング期間に行うためには、Ｖ＿ＣＯＵＮＴ値を２６２から１９２に減算（つまり調整する走査ライン数が７０）することが理論上可能となるが、本実施例では一度の調整でＶ＿ＣＯＵＮＴ値を２１２から１０以下の数を減算する。
【００５９】
次に、子機は、次のずれ調節割り込みのタイミング（次のＶ＿ＣＯＵＮＴ値が２１２のタイミング）ｋ２において、前回の調整で親機との同期が確立したか否かを確認する。そして、子機は、親機との同期ずれが残っている場合、さらに自機のフレーム周期を当該差Ａ１以下の時間ｊ２だけ長くする。具体的には、子機は、時間ｊ２も走査ライン数（例えば、１０以下の自然数）で設定する。そして、子機は、自機のＶ＿ＣＯＵＮＴレジスタ１３１が示すＶ＿ＣＯＵＮＴ値を上記走査ライン数だけ減算することによって、自機のフレーム周期を長くする。このような調整を親機との同期ずれが０となるまで繰り返すことによって、子機と親機との同期が確立する。
【００６０】
一方、親機は、所定時間毎のタイミングｈ１において、自機のフレーム周期を時間ｉだけ長くする。具体的には、子機は、時間ｉを走査ライン数（例えば、１）で設定する。そして、親機は、自機のＶ＿ＣＯＵＮＴレジスタ１３１が示すＶ＿ＣＯＵＮＴ値を上記走査ライン数だけ減算することによって、自機のフレーム周期を長くする。この親機のフレーム周期調整は、ゲームシステムを構成するゲーム装置１の間における動作クロックの個体差を吸収するためであり、親機が自機のフレーム周期を調整するタイミングｈ１とその調整ライン数ｉとは、想定される当該個体差に応じて設定される。これらの設定の詳細については、後述する。
【００６１】
その後、一定間隔で繰り返されるビーコンの送信タイミングが来ると、親機は、新たな親Ｖ＿ＴＳＦ値を取得する。そして、親機は、ビーコンパケットに新たな親Ｖ＿ＴＳＦ値と現在のＴＳＦ値（親ＴＳＦ値）とを記述して、ビーコンを子機に送信する。
【００６２】
子機は、親機からビーコンを受信し、子機のＴＳＦ値（子ＴＳＦ値）を当該ビーコンに記述された親ＴＳＦ値に一致させる。そして、子機は、自機のずれ調節割り込みのタイミングにおいて親機との同期を確認し、上述と同様にして親機との同期を確立する。したがって、親機がタイミングｈ１においてフレーム周期を調整ライン数ｉだけ長く調整しているが、子機は、親機が調整したフレーム周期との同期を確立する。
【００６３】
例えば、子機の動作クロックの周波数が親機の動作クロックの周波数より若干高い（つまり、子機のフレーム周期が短い）と仮定する。この場合、子機は、上述したように自機のフレーム周期を長く調整することによって容易に親機との同期を確立することができる。一方、親機の動作クロックの周波数が子機の動作クロックの周波数より若干高い（つまり、親機のフレーム周期が短い）と仮定する。この場合、親機のフレーム周期の調整が行われなければ、子機は、自機のフレーム周期を短く調整することによって親機との同期を確立しなければならず、調整時のフレームにおいて自機の処理時間が確保できないことが生じる。ここで、親機がフレーム周期を調整するタイミングｈ１および調整ライン数ｉは、上記個体差の想定される最大値に応じて設定されている。つまり、上記個体差を想定しても親機のフレーム周期が子機に対して先行しないようにタイミングｈ１および調整ライン数ｉを設定することによって、子機は、上述したように自機のフレーム周期を長く調整することによって容易に親機との同期を確立することができる。つまり、親機および子機におけるフレーム周期の調整は、必ず自機のフレーム周期を長く調整して互いの同期を確立しているため、当該調整時のフレームにおいても自機の処理時間を確保することが可能となる。
【００６４】
このように、ゲームシステムに含まれる複数のゲーム装置は、子機がタイミングｋ１およびｋ２において、時間ｊ１およびｊ２だけそれぞれフレーム周期を長くすることによって親機との同期処理を行う。また、親機がタイミングｈ１において、時間ｉだけフレーム周期を長くすることによって、子機のフレーム周期よりも遅くなる傾向を作為的に作り出し、子機がタイミングｋ３において時間ｊ３だけ自機のフレーム周期を長く調整するような処理をする。したがって、各ゲーム装置の個体差を想定しながら処理周期の最低期間を確保しつつ、安定的に同期調整を行うことができる。
【００６５】
図６は、上記同期確立のためにＷＲＡＭ１４に記憶されるデータのイメージを示す図である。なお、図６では、親機のゲーム装置１ａをＷＲＡＭ１４ａとし、子機のゲーム装置１ｂをＷＲＡＭ１４ｂとして区別している。
【００６６】
図６において、親機のＷＲＡＭ１４ａには、親Ｖ＿ＴＳＦ値１４１、同期ＯＫフラグ１４２、Ｖ＿ＣＯＵＮＴ値１４３、および親ＴＳＦ値１４４が記憶される。親Ｖ＿ＴＳＦ値１４１は、親機のＣＰＵコア１１ａが必要に応じて自機のＶ＿ＣＯＵＮＴ値が０のときのＴＳＦ値を演算することによって取得され、ＷＲＡＭ１４ａに記憶される。同期ＯＫフラグ１４２は、子機からゲームデータに付与されて送信され、親機が接続確立した子機に応じてそれぞれＷＲＡＭ１４ａに記憶される。Ｖ＿ＣＯＵＮＴ値１４３は、自機のＶ＿ＣＯＵＮＴレジスタ１３１ａがカウントしている数値をＣＰＵコア１１ａが読み出し、当該読み出しに応じて更新してＷＲＡＭ１４ａに記憶される。親ＴＳＦ値１４４は、ＴＳＦレジスタ３３ａがカウントしている数値をＣＰＵコア１１ａが読み出し、当該読み出しに応じて更新してＷＲＡＭ１４ａに記憶される。
【００６７】
子機のＷＲＡＭ１４ｂには、親Ｖ＿ＴＳＦ値１４５、親Ｖ＿ＴＳＦ＿ｏｌｄ値１４６、子Ｖ＿ＴＳＦ値１４７、調整ライン数１４８、調整ライン残り数１４９、同期ＯＫフラグ１５０、Ｖ＿ＣＯＵＮＴ値１５１、および子ＴＳＦ値１５２が記憶される。親Ｖ＿ＴＳＦ値１４５は、一定間隔で親機からビーコンに付与されて送信され、ＷＲＡＭ１４ｂに記憶される。そして、親Ｖ＿ＴＳＦ値１４５は、所定の更新条件に基づいて、親Ｖ＿ＴＳＦ＿ｏｌｄ値１４６としてＷＲＡＭ１４ｂに記憶される。子Ｖ＿ＴＳＦ値１４７は、子機のＣＰＵコア１１ｂが必要に応じて自機のＶ＿ＣＯＵＮＴ値が０のときのＴＳＦ値を演算することによって取得され、ＷＲＡＭ１４ｂに記憶される。調整ライン数１４８および調整ライン残り数１４９は、子機がずれ調節割り込みタイミングにおいて演算される。同期ＯＫフラグ１５０は、親Ｖ＿ＴＳＦ値１４５と子Ｖ＿ＴＳＦ値１４７との差が所定範囲内となった場合に「１」が代入され、所定範囲外の場合に「０」が代入される。Ｖ＿ＣＯＵＮＴ値１５１は、自機のＶ＿ＣＯＵＮＴレジスタ１３１ｂがカウントしている数値をＣＰＵコア１１ｂが読み出し、当該読み出しに応じて更新してＷＲＡＭ１４ｂに記憶される。子ＴＳＦ値１５２は、ＴＳＦレジスタ３３ｂがカウントしている数値をＣＰＵコア１１ｂが読み出し、当該読み出しに応じて更新してＷＲＡＭ１４ｂに記憶される。
【００６８】
次に、図７を参照して、ゲームデータ送受信処理について説明する。なお、図７は、ゲームデータ送受信処理を行う親機および子機の動作を示すフローチャートである。なお、ゲームデータ送受信処理は、１フレームを１周期としており、当該１フレームの間に親機が子機にゲームデータを送信し、子機が親機にゲームデータを返信する処理である（図３参照）。
【００６９】
図７において、親機は、自機のＶ＿ＣＯＵＮＴ値が所定値に到達するのを待つ（ステップＳ１１）。ステップＳ１１では、Ｖ＿ＣＯＵＮＴが所定値になったときに発生するように設定されたハードウェア割り込みが発生したかどうかを判断する。あるいは、ＣＰＵコア１１ａが自機のＶ＿ＣＯＵＮＴレジスタ１３１ａがカウントしているＶ＿ＣＯＵＮＴ値を読み出し、当該Ｖ＿ＣＯＵＮＴ値と所定値（例えば、１０）とを比較することによって判断してもよい。そして、ＣＰＵコア１１ａは、Ｖ＿ＣＯＵＮＴ値が所定値に到達したとき、ゲームデータを子機にそれぞれ送信する（ステップＳ１２）。
【００７０】
一方、子機は、親機から送信されるゲームデータの受信を待っている（ステップＳ２１）。そして、子機は、親機からゲームデータを受信した場合、自機のＷＲＡＭ１４ｂに記憶されている同期ＯＫフラグ１５０を付与して、ゲームデータを親機に送信する（ステップＳ２２）。このステップＳ２１およびＳ２２の処理は、子機が送受信処理を終了するまで繰り返される（ステップＳ２３）。
【００７１】
親機は、子機から上記ステップＳ２２で送信されたゲームデータを受信し（ステップＳ１３）、受信したゲームデータに付与された同期ＯＫフラグが「１」であるか否かを判断する（ステップＳ１４）。そして、親機は、同期ＯＫフラグが「１」である場合、その同期ＯＫフラグを送信した子機とのマルチプレイゲームが可能と判断して、当該子機とマルチプレイゲーム開始可能状態に設定し（ステップＳ１５）、処理を次のステップＳ１６に進める。親機は、マルチプレイゲーム開始可能状態に設定されると、同期ＯＫフラグ「１」を送信した子機とのマルチプレイゲームを開始する。一方、親機は、同期ＯＫフラグが「０」である場合、その同期ＯＫフラグを送信した子機とのマルチプレイゲームが不可能と判断して、そのまま処理を次のステップＳ１６に進める。これらステップＳ１１〜Ｓ１５の処理は、親機が送受信処理を終了するまで繰り返される（ステップＳ１６）。
【００７２】
次に、図８〜図１０を参照して、親機および子機が互いに同期を確立する処理について説明する。なお、図８は、親機のゲーム装置１ａが行う同期処理を示すフローチャートである。図９は、子機のゲーム装置１ｂが行う同期処理を示すフローチャートである。図１０は、図８のステップＳ３８で処理される親Ｖ＿ＴＳＦ値取得処理および図９のステップＳ６０で処理される子Ｖ＿ＴＳＦ値取得処理を示すサブルーチンである。
【００７３】
まず、図８を参照して、親機が子機と互いに同期を確立する処理について説明する。図８において、親機は、子機との間の無線通信における接続処理を行って接続を確立し（ステップＳ３１）、自機の定周期タイマのカウントＴをスタートさせる（ステップＳ３２）。そして、親機のＣＰＵコア１１ａは、Ｖ＿Ｂｌａｎｋ割り込みのタイミングか否かを判断する（ステップＳ３３）。Ｖ＿Ｂｌａｎｋ割り込みとは、上記表示期間からブランキング期間に移行したときに１フレームに１回のみ発生するＶ＿ＣＯＵＮＴの割り込みである。例えば、図４で示した一例では、Ｖ＿ＣＯＵＮＴ値が１９２のとき、ＣＰＵコア１１ａがＶ＿Ｂｌａｎｋ割り込みのタイミングであると判断する。そして、親機のＣＰＵコア１１ａは、Ｖ＿Ｂｌａｎｋ割り込みのタイミングである場合、定周期タイマのカウントＴが予め設定された所定時間より長いか否かを判断する（ステップＳ３４）。以下、ステップＳ３４の判断で用いられる所定時間の設定方法について説明する。
【００７４】
ここで、ゲームシステムに接続されるゲーム装置１の動作クロックに想定されている個体差（例えば、設計値の公差）の最大幅を考える。この動作クロックの個体差の最大幅がｗ  ｐｐｍ（ｐａｒｔｓ  ｐｅｒ  ｍｉｌｌｉｏｎ）とする。これは、あるゲーム装置１の１００万回動作に対して、他のゲーム装置１が１００万回＋ｗ回動作する個体差を示している。そして、双方の動作クロックの個体差がｗ  ｐｐｍとなる２つのゲーム装置１における処理タイミングが、１走査ラインずれるフレーム数ｎを、
ｎ＝（１００００００／ｗ）＊｛１／（Ｃｍａｘ＋１）｝
で計算する。ここで、Ｃｍａｘは、Ｖ＿ＣＯＵＮＴレジスタ１３１がカウントするＶ＿ＣＯＵＮＴ値の最大値（図４の例では２６２）である。上記ステップＳ３４の判断で用いられる所定時間は、このフレーム数ｎや当該フレーム数ｎに相当する時間が設定される。例えば、上記個体差が±３０ｐｐｍ（最大幅ｗ＝６０）およびＣｍａｘ＝２６２とすると、フレーム数ｎ≒６３となる。このように上記ステップＳ３４の判断で用いられる所定時間は、ゲーム装置１に想定されている動作クロックの個体差およびＶ＿ＣＯＵＮＴ値の最大値を用いて、予め設定される。
【００７５】
図８に戻り、親機のＣＰＵコア１１ａは、定周期タイマのカウントＴが上記所定時間より長い場合、Ｖ＿ＣＯＵＮＴ値から１減算してＶ＿ＣＯＵＮＴ値を更新する（ステップＳ３５）。このステップＳ３５における更新が、図５のタイミングｈ１におけるフレーム周期を時間ｉだけ長くする処理に相当する。つまり、親機は、ステップＳ３５を上記所定時間毎に繰り返すことによって、自機のフレーム周期を１走査ライン分長く調整している。このように、ブランキング期間中にＶ＿ＣＯＵＮＴ値を調整し、かつ、調整後のＶ＿ＣＯＵＮＴ値をブランキング期間内のＶ＿ＣＯＵＮＴ値に更新することによって、親機はＬＣＤ２１ａに表示されるゲーム画像を乱すことなくフレーム周期を調整することができる。そして、親機のＣＰＵコア１１ａは、自機の定周期タイマのカウントＴを初期化してカウントをスタートさせ（ステップＳ３６）、処理を次のステップＳ３７に進める。また、親機のＣＰＵコア１１ａは、Ｖ＿Ｂｌａｎｋ割り込みのタイミングでない、あるいは定周期タイマのカウントＴが上記所定時間以下の場合、そのまま処理を次のステップＳ３７に進める。
【００７６】
ステップＳ３７において、親機のＣＰＵコア１１ａは、子機へビーコンを送信するタイミングか否かを判断する。次に、親機のＣＰＵコア１１ａは、ビーコン送信タイミングである場合、親Ｖ＿ＴＳＦ値を取得する（ステップＳ３８）。そして、親機のＣＰＵコア１１ａは、自機のＴＳＦ値（親ＴＳＦ値）およびステップＳ３８で取得した親Ｖ＿ＴＳＦ値をビーコンにのせて子機に送信し（ステップＳ３９）、上記ステップＳ３３に戻って処理を繰り返す。一方、親機のＣＰＵコア１１ａは、ビーコン送信タイミングでない場合、そのまま上記ステップＳ３３に戻って処理を繰り返す。以下、図１０を参照して、親Ｖ＿ＴＳＦ値取得処理の詳細な処理について説明する。なお、親機が自機のＶ＿ＴＳＦ値を取得する処理を親Ｖ＿ＴＳＦ値取得処理、子機が自機のＶ＿ＴＳＦ値を取得する処理を子Ｖ＿ＴＳＦ値取得処理として区別している。しかしながら、それぞれＶ＿ＴＳＦ値を取得する処理は同じであるため、以下の説明では親機および子機の区別なく総称して説明を行う。
【００７７】
図１０において、ＣＰＵコア１１は、自機のＴＳＦレジスタ３３がカウントしているＴＳＦ値を読み出し、ＷＲＡＭ１４に記憶させる（ステップＳ８１）。次に、ＣＰＵコア１１は、自機のＶ＿ＣＯＵＮＴレジスタ１３１がカウントしているＶ＿ＣＯＵＮＴ値を読み出し、ＷＲＡＭ１４に記憶させる（ステップＳ８２）。そして、ＣＰＵコア１１は、ステップＳ８１で取得したＴＳＦ値およびステップＳ８２で取得したＶ＿ＣＯＵＮＴ値を用いて、自機のＶ＿ＴＳＦ値を以下の数式で算出する（ステップＳ８３）。
Ｖ＿ＴＳＦ＝ＴＳＦ＋（Ｃｍａｘ−Ｖ＿ＣＯＵＮＴ＋１）＊Ｌｔ
ここで、Ｃｍａｘは、Ｖ＿ＣＯＵＮＴレジスタ１３１がカウントするＶ＿ＣＯＵＮＴ値の最大値（図４の例では２６２）である。Ｌｔは、１走査ラインの走査に要する時間である。この数式によって、自機のＶ＿ＣＯＵＮＴレジスタ１３１が次にＶ＿ＣＯＵＮＴ値を０とするときに自機のＴＳＦレジスタ３３が示すＴＳＦ値を、自機のＶ＿ＴＳＦ値として算出することができる。
【００７８】
次に、図９を参照して、子機が親機と互いに同期を確立する処理について説明する。図９において、子機は、親機との間の無線通信における接続処理を行って接続を確立し（ステップＳ５１）、自機の同期ＯＫフラグを「０」に設定する（ステップＳ５２）。そして、子機のＣＰＵコア１１ｂは、ずれ調節割り込みのタイミングか否かを判断する（ステップＳ５３）。ずれ調節割り込みとは、上記ブランキング期間中に親機との同期を取るために１フレームに１回のみ発生するＶ＿ＣＯＵＮＴの割り込みである。例えば、図４で示した一例では、Ｖ＿ＣＯＵＮＴ値が２１２のとき、ＣＰＵコア１１ｂがすれ調節割り込みのタイミングであると判断する。なお、後述するＶ＿ＣＯＵＮＴ値が調整されると、同じフレーム内でＶ＿ＣＯＵＮＴ値が２１２を少なくとも２回発生するが、子機のＣＰＵコア１１ｂは、２回目以降をずれ調節割り込みのタイミングでないと判断する。
【００７９】
子機のＣＰＵコア１１ｂは、ずれ調節割り込みのタイミングでない場合、親機からのビーコンを受信したか否かを判断する（ステップＳ５４）。次に、子機のＣＰＵコア１１ｂは、ビーコンを受信した場合、当該ビーコンのパケットに記述されている親Ｖ＿ＴＳＦ値をＷＲＡＭ１４ｂの親Ｖ＿ＴＳＦ値１４５として格納する（ステップＳ５５）。そして、子機のＣＰＵコア１１ｂは、上記ビーコンのパケットに記述されている親ＴＳＦ値に自機のＴＳＦ値（子ＴＳＦ値）を合わせて（ステップＳ５６）、上記ステップＳ５３に戻って処理を繰り返す。一方、子機のＣＰＵコア１１ｂは、ビーコンを受信していない場合、そのまま上記ステップＳ５３に戻って処理を繰り返す。
【００８０】
上記ステップＳ５３においてずれ調節割り込みのタイミングであると判断された場合、子機のＣＰＵコア１１ｂは、ＷＲＡＭ１４ｂに格納されている親Ｖ＿ＴＳＦ値１４５と親Ｖ＿ＴＳＦ＿ｏｌｄ値１４６とが等しいか否かを判断する（ステップＳ５７）。後述により明らかとなるが、親機からビーコンを受信してＷＲＡＭ１４ｂに格納されている親Ｖ＿ＴＳＦ値１４５が更新された場合、親Ｖ＿ＴＳＦ値１４５と親Ｖ＿ＴＳＦ＿ｏｌｄ値１４６とが異なる値（つまりステップＳ５７でＮｏ）となる。
【００８１】
親Ｖ＿ＴＳＦ値１４５と親Ｖ＿ＴＳＦ＿ｏｌｄ値１４６とが異なる値の場合、子機のＣＰＵコア１１ｂは、調整ライン残り数Ｂを０に設定し（ステップＳ５８）、ＷＲＡＭ１４ｂに格納されている親Ｖ＿ＴＳＦ＿ｏｌｄ値１４６を親Ｖ＿ＴＳＦ値１４５に更新して（ステップＳ５９）、子Ｖ＿ＴＳＦ値を取得する（ステップＳ６０）。この子Ｖ＿ＴＳＦ値取得処理の詳細な処理については、図１０で示すサブルーチンと同様であるため、詳細な説明を省略する。
【００８２】
次に、子機のＣＰＵコア１１ｂは、ＷＲＡＭ１４ｂに格納されている親Ｖ＿ＴＳＦ値とステップＳ６０で取得した子Ｖ＿ＴＳＦ値とを比較し、親Ｖ＿ＴＳＦ値が子Ｖ＿ＴＳＦ値以上か否かを判断する（ステップＳ６１）。そして、親Ｖ＿ＴＳＦ値が子Ｖ＿ＴＳＦ値未満である場合、ＣＰＵコア１１ｂは、当該親Ｖ＿ＴＳＦ値に１フレームの走査に要する時間Ｆｔを加算して、新たな親Ｖ＿ＴＳＦ値に更新する（ステップＳ６２）。このステップＳ６２は、更新された親Ｖ＿ＴＳＦ値が子Ｖ＿ＴＳＦ値以上となるまで繰り返される。一方、ＣＰＵコア１１ｂは、親Ｖ＿ＴＳＦ値が子Ｖ＿ＴＳＦ値以上である場合、親Ｖ＿ＴＳＦ値から子Ｖ＿ＴＳＦ値を減算した差Ａを演算する（ステップＳ６３）。このステップＳ６１〜Ｓ６３における差Ａの演算が、図５のタイミングｋ１における差Ａ１を演算する処理に相当し、この処理は親機において親Ｖ−ＴＳＦ値を取得した処理周期と、子機においてずれ調節を行う処理周期がＦｔの整数倍程度ずれる事が想定されるため、その対処としての処理である。そして、ＣＰＵコア１１ｂは、調整ライン数Ｌを演算する（ステップＳ６４）。ＣＰＵコア１１ｂは、調整ライン数ＬをＬ＝Ａ／Ｌｔで演算し、ＷＲＡＭ１４ｂに格納する。ここで、Ｌｔは、１走査ラインの走査に要する時間である。なお、調整ライン数Ｌが整数でない場合、小数点以下を切り捨てる。このステップＳ６４によって、子機と親機との同期ずれを１走査ラインの走査時間に換算したライン数Ｌが導かれる。
【００８３】
次に、ＣＰＵコア１１ｂは、ＷＲＡＭ１４ｂに格納されている調整ライン数Ｌが１０より大きいか否かを判断する（ステップＳ６５）。そして、ＣＰＵコア１１ｂは、Ｌ≦１０の場合、同期ＯＫフラグを「１」に設定し（ステップＳ６６）、処理を次のステップＳ６９に進める。つまり、調整ライン数が１０以下の場合、子機は、後述するＶ＿ＣＯＵＮＴ値の調整によって親機との同期が確立するものと判断する。一方、ＣＰＵコア１１ｂは、Ｌ＞１０の場合、同期ＯＫフラグを「０」に設定する（ステップＳ６７）。そして、ＣＰＵコア１１ｂは、調整ライン数Ｌから１０減算した値を調整ライン残り数Ｂに設定し、調整ライン数Ｌを１０に設定してそれぞれＷＲＡＭ１４ｂに格納し（ステップＳ６８）、処理を次のステップＳ６９に進める。
【００８４】
ステップＳ６９において、子機のＣＰＵコア１１ｂは、自機のＶ＿ＣＯＵＮＴ値から調整ライン数Ｌを減算してＶ＿ＣＯＵＮＴ値を更新し、上記ステップＳ５３に戻って処理を継続する。このステップＳ６９における更新が、図５のタイミングｋ１、ｋ２、およびｋ３におけるフレーム周期を時間ｊ１、ｊ２、およびｊ３だけそれぞれ長くする処理に相当する。
【００８５】
一方、上記ステップＳ５７において親Ｖ＿ＴＳＦ値１４５と親Ｖ＿ＴＳＦ＿ｏｌｄ値１４６とが等しい値の場合、子機のＣＰＵコア１１ｂは、現在設定されている調整ライン残り数Ｂが０か否かを判断する（ステップＳ７０）。そして、ＣＰＵコア１１ｂは、調整ライン残り数Ｂが０でない場合、調整ライン数Ｌを調整ライン残り数Ｂとし、調整ライン残り数Ｂ＝０としてＷＲＡＭ１４ｂに格納し（ステップＳ７１）、処理を上記ステップＳ６５に進める。一方、ＣＰＵコア１１ｂは、調整ライン残り数Ｂが０である場合、処理を上記ステップＳ５４に進める。
【００８６】
ここで、ステップＳ６５〜Ｓ７１の一連の処理は、子機が一度の調整でフレーム周期を長くする走査ライン数の最大値を１０に設定している例である。つまり、子機が走査ライン数の最大値１０を限度にフレーム周期を調整し、その残りを調整ライン残り数Ｂとして次のフレームでフレーム周期を調整している。この最大値は、ハードウェアの構成に合わせて実現可能な数値に設定すればよい。例えば、図４で説明したフレーム構成の場合、Ｖ＿ＣＯＵＮＴ値の調整をブランキング期間に行うためには、Ｖ＿ＣＯＵＮＴ値を２６２から１９２に調整（最大値７０）することが理論上可能となる。このように、ブランキング期間でＶ＿ＣＯＵＮＴ値を調整し、かつ、調整後のＶ＿ＣＯＵＮＴ値をブランキング期間内のＶ＿ＣＯＵＮＴ値に更新することによって、子機はＬＣＤ２１ａに表示されるゲーム画像を乱すことなくフレーム周期を調整することができる。
【００８７】
このように、本発明の一実施形態に係るゲームシステムによれば、子機に設定されたゲーム装置は、自機のフレーム周期を長くすることによって同期処理を行うため、各フレーム周期において一定の処理時間を確保しつつ親機との処理の同期を確立することができる。また、親機のゲーム装置は、そのフレーム周期が子機のフレーム周期よりも遅くなる傾向を作為的に作り出し、子機が自機のフレーム周期を長く調整するような処理をすることによって、各ゲーム装置の個体差を想定しながら処理周期の最低期間を確保しつつ、安定的に同期調整を行うことができる。また、各ゲーム装置の同期調整では、ゲーム画像の表示更新に用いられるカウンタ機能を使用するため、効率的に同期を行うことができる。また同期を行うことで、データの送受信タイミングが予想可能になることで、通信を行わないゲームにおけるゲーム処理と同じような処理タイミングでゲーム処理を行うことが可能になりゲーム制作の効率アップにつなげることができる。さらに、各ゲーム装置の同期調整は、ブランキング期間に行われ、かつ、調整後のカウント値をブランキング期間内のカウント値に更新するため、ゲーム装置の画面表示を乱すことなく各ゲーム装置間で処理の同期を確保することができる。
【００８８】
なお、本実施例のゲームシステムでは、複数のゲーム装置１間でデータを送受信するなど処理の同期を確立するための計時手段として、無線ＬＡＮの規格ＩＥＥＥ８０２．１１などで用意されている無線通信に用いるタイミング同期機能（ＴＳＦ）を用いたが、他の計時手段を用いてもかまわない。例えば、衛星から送信される時刻情報を各ゲーム装置で受信して、各ゲーム装置の計時手段を同期させるようにしてもよい。またネットワークタイムプロトコル（ＮＴＰ）を用いて各ゲーム装置の計時手段の同期を行っても良い。ゲーム装置１間で無線通信あるいは有線通信を行う規格に応じて他の計時手段を用いても、同様に本発明を適用することができる。
【産業上の利用可能性】
【００８９】
本発明にかかるゲームシステム、ゲーム装置、およびゲームプログラムは、複数のゲーム装置が互いに処理の同期を確立して通信を行って各周期における処理時間を確保しながらゲーム進行することができ、複数のゲーム装置が互いに無線通信あるいは有線通信しながら処理するマルチプレイゲーム等に適用できる。
【図面の簡単な説明】
【００９０】
【図１】本発明の一実施形態に係るゲームシステムに含まれるゲーム装置１の外観図
【図２】図１のゲーム装置１の機能ブロック図
【図３】複数のゲーム装置１間で送受信されるゲームデータを説明するための図
【図４】Ｖ＿ＣＯＵＮＴ値、ＬＣＤ２１の走査ライン、およびフレームの関係を示す説明図
【図５】親機のゲーム装置１ａおよび子機のゲーム装置１ｂが、互いに同期を確立する手順を説明するための図
【図６】図２のＷＲＡＭ１４に記憶されるデータのイメージを示す図
【図７】ゲームデータ送受信処理を行う親機および子機のゲーム装置１の動作を示すフローチャート
【図８】親機のゲーム装置１ａが行う同期処理を示すフローチャート
【図９】子機のゲーム装置１ｂが行う同期処理を示すフローチャート
【図１０】図８のステップＳ３８で処理される親Ｖ＿ＴＳＦ値取得処理および図９のステップＳ６０で処理される子Ｖ＿ＴＳＦ値取得処理を示すサブルーチン
【符号の説明】
【００９１】
１…ゲーム装置
１０…ゲーム装置本体
１１…ＣＰＵコア
１２…ブートＲＯＭ
１３…ＬＣＤコントローラ
１３１…Ｖ＿ＣＯＵＮＴレジスタ
１４…ＷＲＡＭ
１５…ＶＲＡＭ
１６…周辺回路
１７、１８、３５…コネクタ
１９…オーディオアンプ
２０…スピーカ
２１…ＬＣＤ
２２…操作スイッチ
２３…ハウジング
３…無線通信ユニット
３１…ベースバンドＩＣ
３２…電源回路
３３…ＴＳＦレジスタ
３４…ＲＦ−ＩＣ
３６…つまみ部
３７…掛止部
４…カートリッジ
４１…ＲＯＭ
４２…バックアップＲＡＭ
【図１】
2005261856.tif 000003
【図２】
2005261856.tif 000004
【図３】
2005261856.tif 000005
【図４】
2005261856.tif 000006
【図５】
2005261856.tif 000007
【図６】
2005261856.tif 000008
【図７】
2005261856.tif 000009
【図８】
2005261856.tif 000010
【図９】
2005261856.tif 000011
【図１０】
2005261856.tif 000012