無線通信ゲームシステム、ゲーム装置、ゲームプログラムおよび無線通信方法
【課題】親機リストを表示可能にし、任意の親機にエントリ可能にすること。
【解決手段】親機から、親機番号PID,ユーザ名UserName,ゲーム名GameName,OCフラグ,Eスロット,Uスロットおよびペイロードを含む親機パケットをブロードキャストする。自機の通信可能範囲(64)内に存在する親機からすべて親機パケットを受信し、親機リストを作成し、その親機リストをLCD上に表示する。したがって、自機のユーザまたはプレイヤは、その親機リストのたとえばゲーム名を見て、操作キーに含まれる十字キーを操作することによって、所望の親機を1つ選択する。そして、親機パケットで指定されたEスロットで自機の子機番号CIDを送信することによって、接続要求を親機に対して送信する。
【解決手段】親機から、親機番号PID,ユーザ名UserName,ゲーム名GameName,OCフラグ,Eスロット,Uスロットおよびペイロードを含む親機パケットをブロードキャストする。自機の通信可能範囲(64)内に存在する親機からすべて親機パケットを受信し、親機リストを作成し、その親機リストをLCD上に表示する。したがって、自機のユーザまたはプレイヤは、その親機リストのたとえばゲーム名を見て、操作キーに含まれる十字キーを操作することによって、所望の親機を1つ選択する。そして、親機パケットで指定されたEスロットで自機の子機番号CIDを送信することによって、接続要求を親機に対して送信する。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、無線通信を利用するゲームシステムに関し、特にたとえば、子機がその子機との間で通信可能範囲にある親機の情報を知ることができる無線通信ゲームシステム、およびそれに用いる携帯ゲーム装置ならびにゲームプログラムに関する。
【背景技術】
【0002】
従来の無線通信ゲームシステムの一例が、たとえば、平成12年(2000)5月16日付きで出願公開された特許文献1(国際分類:A63F13/00、H04L12/28)に開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2000−135380号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
この先行技術では、たとえば、友人などの間で約束をして、同一のゲームを実行するゲーム装置を持ち寄って、それらのゲーム装置で通信を確立した後無線通信ゲームを実行していた。先行技術では、他人のゲーム装置の識別情報やゲーム名などの情報を知るためにはユーザ同士でそれらの情報を口頭で確認するほかなかった。それゆえ、見知らぬ他人のゲーム装置が通信可能範囲にある場合に、その人と無線通信ゲームをおこなうことは現実的に困難である。すなわち、先行技術では、ユーザは通信相手のゲーム装置を自由に、動的に、選択することができなかった。
【0005】
無線通信の利点は自由に持ち運べることであり、また、無線通信可能な範囲にあるゲーム装置と自由に通信できることである。しかしながら、先行技術では、これらの利点を生かせているとはいえない。
【0006】
それゆえに、この発明の主たる目的は、新規な、無線通信ゲームシステム、携帯ゲーム装置、無線通信ゲームシステムにおける子機接続方法およびゲームプログラムを提供することである。
【0007】
この発明の他の目的は、子機が希望する親機を任意に選択できる、無線通信ゲームシステム、携帯ゲーム装置、無線通信ゲームシステムにおける子機接続方法およびゲームプログラムを提供することである。
【0008】
この発明のさらに他の目的は、通信可能範囲にあるゲーム装置と自由に無線通信ゲームをすることを可能にする、無線通信ゲームシステム、携帯ゲーム装置、無線通信ゲームシステムにおける子機接続方法およびゲームプログラムを提供することである。
【課題を解決するための手段】
【0009】
この発明は、互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムである。親機は、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするブロードキャスト手段を備える。子機は、受信手段と、表示手段と、選択手段と、接続要求送信手段とを備える。受信手段は、通信可能範囲に存在する親機から親機パケットを受信する。表示手段は、受信手段で受信した親機パケットに基づいて、通信可
能範囲に存在する親機の親機リストを表示する。選択手段は、親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させる。接続要求送信手段は、選択手段によって選択された親機に対して接続要求を送信する。
【0010】
請求項2は、請求項1に従属し、ブロードキャスト手段は他の子機と通信ゲームを実行中においても親機パケットをブロードキャストする、無線通信ゲームシステムである。
【0011】
請求項3は、請求項1または2に従属し、親機および子機は、所定の通信周期で無線通信するものである。通信周期は、親機によって使用される第1タイムスロットと、子機によって使用される第2タイムスロットとを含む。ブロードキャスト手段は、第1タイムスロットでゲームデータを含む親機パケットを送信する。
【0012】
請求項4は、請求項1に従属し、表示手段は、受信手段で受信したゲーム識別情報に基づいて、自機で実行するゲームと通信可能なゲームを実行する親機に限り親機リスト表示する、無線通信ゲームシステムである。例えば、ゲーム装置がゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着可能なものである場合には、表示手段は、親機に装着されているゲームカートリッジのゲームと子機に装着されているゲームカートリッジのゲームが通信可能な場合に限りその親機を親機リストに表示する。
【0013】
請求項5は、請求項1に従属し、子機は、ゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着可能なものである。表示手段は、現在装着されているゲームカートリッジのゲームと通信不可能なゲームを実行する親機も親機リストで表示する。
【0014】
請求項6は、請求項1に従属し、親機パケットは、新たな子機のエントリを受け付けるか否かを示すエントリ受付データをさらに含む。表示手段は、受信手段で受信したエントリ受付データに基づいて、新たな子機のエントリを受け付ける親機に限り親機リストで表示する。
【0015】
請求項7は、請求項1に従属し、親機は、子機用プログラムを記憶する子機用プログラム記憶手段、および子機からの接続要求に応じて(たとえば、子機はゲームカートリッジを着脱自在に装着可能なものであり、ゲームカートリッジが装着されていない子機からの要求に応じて)、子機用プログラムを子機に送信する子機用プログラム送信手段とをさらに備える。親機パケットは、子機用プログラム記憶手段を備えるか否かを示す子機用プログラム保持データをさらに含む。表示手段は、受信手段で受信した子機用プログラム保持データに基づいて、子機用プログラム保持データが子機用プログラムを備えることを示す場合には、自機で実行するゲームに関係なくその親機を親機リストで表示する。
【0016】
請求項8は、請求項1に従属し、親機は、子機が子機用プログラムの送信を必要としない第1プログラムと、子機が子機用プログラムの送信を必要とする第2プログラムとの両方を記憶する。親機パケットは、親機が第1プログラムおよび第2プログラムのいずれを実行しているかを示す実行種類データをさらに含む。表示手段は、受信手段で受信した実行種類データに基づいて、第1プログラムを実行している親機については、自機で実行するゲームと通信可能なゲームを実行する親機に限り親機リストで表示し、第2プログラムを実行している親機については、自機で実行するゲームに関係なく、親機リストで表示する。
【0017】
請求項9は、請求項1に従属し、子機は、ゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着するものである。表示手段は、ゲームカートリッジが装着されていない場合には、受信手段で受信した子機用プログラム保持データに基づいて、子機用プログラム記憶手段を備える親機に限り親機リストで表示する。
【0018】
請求項10は、請求項1に従属し、受信手段で受信した親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを記憶する親機リスト記憶手段、および親機リスト記憶手段に記憶された親機リストを定期的にクリアする親キリストクリア手段をさらに備え、表示手段は、親機リスト記憶手段に記憶された親機リストに基づいて表示する。
【0019】
請求項11は、互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムにおける子機接続方法であって、以下の(a)(b)(c)(d),および(e)のステップを含む。(a) 親機から、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするステップ(b) 子機において、通信可能範囲に存在する親機から親機パケットを受信するステップ(c) 子機において、受信ステップで受信した親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示するステップ(d) 子機において、親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させるステップ(e) 子機において、選択された親機に対して接続要求を送信させるステップ請求項12は、互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムのプログラムであって、携帯ゲーム機のプロセサに次のステップを実行させる:(a) 親機のプロセサに、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストさせ、(b) 子機のプロセサに、通信可能範囲に存在する親機から親機パケットを受信させ、(c) 子機のプロセサに、ステップ(b) で受信した親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示させ、(d) 子機のプロセサに、親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させ、そして(e) 子機のプロセサに、選択された親機に対して接続要求を送信させる。
【0020】
請求項13は、複数の携帯ゲーム装置を用い、一方が親機となり他方が子機となり、無線通信ゲームをプレイする、携帯ゲーム装置である。親機のために(親機として機能するために)、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするブロードキャスト手段を備える。子機のために(子機として機能するために)、受信手段と表示手段と選択させる手段と送信手段とを備える。受信手段は、通信可能範囲に存在する親機から親機パケットを受信する。表示手段は、受信手段で受信した親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示する。選択させる手段は、親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させる。送信手段は、選択された親機に対して接続要求を送信する。
【0021】
無線通信ゲームシステムは、実施例では、少なくとも2台の携帯ゲーム装置(10:実施例で相当する参照符号。以下同じ。)を用いて構成される。実施例の携帯ゲーム装置(10)は、携帯ゲーム機(12)と、その携帯ゲーム機に装着された無線通信ユニット(14)とを含む。携帯ゲーム装置は、この無線通信ユニット(14)を用いて、親機の場合には、第1タイムスロットで親機パケットをブロードキャストし、第2タイムスロットで子機パケットを受信する。子機の場合には、第1タイムスロットで親機パケットを受信し、第2タイムスロットで子機パケットを親機に向けて送信する。
【0022】
このブロードキャスト手段は、実施例では、図29に示す親機の送受信処理のステップS2003およびS2009に相当し、自機識別情報としての親機番号PIDと、ゲーム識別情報としてのゲーム名GameNameとを含む親機パケットをブロードキャストする。
【0023】
子機は、また、実施例の図32のステップS4001で示す受信手段によって、上述の
親機パケットを受信する。この親機パケットに基づいて、たとえば図20のステップS15において、親機リストを作成し、図20のステップS23またはステップS25で、その親機リストをLCD(18)上に表示する。
【0024】
子機のユーザは、その親機リストのたとえばゲーム名を見て、図21のステップS79およびS151で、選択手段を構成する操作キー(38)の十字キーを操作することによって、親機リストの中から所望の親機を1つ選択する。そして、図24のステップS83すなわち図30および図31の子機の接続処理を実行する。たとえばステップS3023(図31)に相当する接続要求送信手段が、Eスロットに自機の子機番号CIDを送信することによって、接続要求を親機に対して送信する。
【0025】
したがって、子機は、親機パケットから作成した親機リストに表示されているいずれの親機と接続するか、任意に決定することができる。
【0026】
請求項2は、実施例でいえば図29に相当する。この請求項2の発明によれば、子機は、無線通信ゲームを実行中の親機についても情報(PIDやゲーム名等)を得ることができる。このため、子機は、たとえば、新たな子機の参加を希望している親機の存在を知ることができるので、途中参加が可能になる。
【0027】
請求項3の第1タイムスロットは実施例でいえば親機スロットであり、第2タイムスロットは子機スロットである。そして、ブロードキャスト手段は、図11に示すペイロードデータを含む親機パケットをブロードキャストする(ステップS2003)。したがって、請求項3の発明によれば、親機は常時親機パケットをブロードキャストするため、子機は、通信可能範囲に存在するすべての親機に関する最新情報を知ることができる。
【0028】
請求項4では、図4に示すように、自機と通信可能なゲームを実行できる親機だけを親機リストで表示する。したがって、請求項4の発明によれば、自機と通信不可能なゲームを実行する親機の表示を省略することにより、子機のプレイヤが親機を選択し易くなる。
【0029】
請求項5のゲームカートリッジは図1で示すカートリッジ16に相当し、そのカートリッジ16はROM42内にゲームプログラムを記憶している。したがって、子機は基本的にはそのゲームプログラムを実行できるだけである。しかしながら、現在装着されているカートリッジが親機と通信不可能なものである場合であっても、他のカートリッジに交換すれば通信可能になるので、請求項5の発明によれば、現在通信できない親機も表示して、カートリッジの交換を促すことができる。
【0030】
請求項6のエントリ受付データは、実施例でいうところのEスロットの「ffh」以外のデータに相当し、したがって、子機は、親機パケットのEスロットに「ffh」以外のデータを設定している親機を、図3に示すよう、ステップS23またはS25(図20)で表示する。したがって、請求項6の発明によれば、新たな子機のエントリを受け付ける親機のみを表示することにより、無駄な親機情報(接続できない親機の情報)が省略され、子機のプレイヤが親機を選択し易くなる。
【0031】
請求項7の子機用プログラム記憶手段は実施例でいえば図16の領域76に相当し、この子機用プログラムは図19のステップS77(子機の受信処理は図26のステップS145)で親機から子機へ転送される。したがって、子機はその子機用プログラムを起動して、そのOCモードでのゲームをプレイすることができる。そこで、請求項7の発明では、子機用プログラム保持データ(実施例でいえば、OCフラグ)が「1」の親機を図5に示すように表示する。この請求項7の発明によれば、親機は自機用(親機用)プログラムだけでなく子機用プログラムを記憶し、子機にそのプログラムを送信して、子機はそのプ
ログラムを受信して実行するので、子機側にはゲームプログラムが必要ない。そして、子機は、そのようなOCモード対応ゲームをプレイできる親機を知ることができるので、カートリッジを装着していなくても、手軽にゲームをブレイすることができる。
【0032】
請求項8では、親機には図16に示すカートリッジ16が装着されていて、このカートリッジには第1プログラム(通常モードゲームプログラム)と、第2プログラム(OCモード用ゲームプログラム)との両方を記憶していて、親機パケットには、第1プログラムおよび第2プログラムのいずれを実行しているかを示す実行種類データ、実施例でいえばOCフラグが「1」または「0」で送信される。したがって、子機は、そのOCフラグが「1」の親機は自機と通信できるものだけを表示し、OCフラグが「0」の親機は自機のゲームに関係なくすべて表示する。請求項8の発明によれば、自機と通信可能であるか、または子機用プログラムを送信可能な状態(第2プログラムを実行中)である親機の情報だけを表示するので、無駄な親機情報(通信不可能な親機の情報など)が省略され、子機のプレイヤが親機を選択し易い。
【0033】
請求項9も請求項8と同様に、OCモード対応のゲームプログラムを保持している親機だけを表示する。したがって、請求項9の発明によれば、子機はゲームカートリッジが装着されていない場合には、子機用プログラムを送信することが可能な親機の情報のみ表示するので、子機のプレイヤが親機を選択し易い。
【0034】
請求項10では、親機リストが親機リスト記憶手段(実施例でいえば、図18の親機リスト領域80に相当する。)に基づいて表示される。そして、実施例のたとえば親機リストクリアタイマ82(図18)を用いて、その親機リストを定期的にクリアする。そのことによって、通信範囲外のものとなった親機を除外し、そのときの子機の通信可能範囲に存在する親機だけを確実にユーザないしプレイヤに知らせることができる。
【0035】
請求項11−請求項13も、請求項1と同様に、子機がそれの通信可能範囲に存在する親機を知ることができ、容易に、所望の親機を選択して接続することができるという利点がある。
【発明の効果】
【0036】
この発明によれば、親機が親機情報をブロードキャストしているため、子機は通信可能範囲にどのような親機が存在するのかを知ることができる(すなわち、通信ゲームをすることが可能な親機を知ることができる)。そして、子機は、いずれの親機と接続するか任意に決定することができる。
【0037】
無線通信ゲームの場合、携帯ゲーム装置を自由に持ち運ぶことができるので、無線通信可能な範囲にある携帯ゲーム装置は刻々と変化するが、この発明によれば、通信可能な範囲にある携帯ゲーム装置の情報を知ることができるので、無線通信ゲームをしたい相手を自由に決定することができる。
【0038】
また、見知らぬ他人の装置が通信可能範囲に入ってくることもあるが、その場合にも情報を得ることができるので、見知らぬ他人と無線通信ゲームを楽しむことも可能である。
【0039】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0040】
【図1】図1はこの発明の一実施例の無線送信ゲームシステムに用いられる携帯ゲーム装置の一例を示すブロック図である。
【図2】図2は図1実施例の携帯ゲーム装置を用いたゲームシステムの概略を説明するための図解図である。
【図3】図3は図2実施例において自機の周りのすべての親機の情報を表示する全表示フラグがオンされている場合の表示画面例を示す図解図である。
【図4】図4は図2実施例において、全表示フラグがオンされていない場合において、自機の周りに存在しかつ自機との間で通信ゲームが可能な親機だけを表示する表示画面例を示す図解図である。
【図5】図5は図2実施例において自機の周りに存在しかつOC(ワンカートリッジ)モードでゲームがプレイできる親機のみを表示する表示画面例を示す図解図である。
【図6】図6は図2実施例における或る状況での親機リストの表示画面例を示す図解図である。
【図7】図7は図2実施例において図6の状況でユーザ名「四郎」の携帯ゲーム装置が通信範囲に入ったときの親機リストの表示画面例を示す図解図である。
【図8】図8は図2実施例において図7の状況でユーザ名「一郎」の携帯ゲーム装置が通信範囲外に出たときの親機リストの表示画面例を示す図解図である。
【図9】図9は図2実施例において自機が親機でありかつ子機の接続(エントリ)を待っている状態の子機リストの表示画面例を示す図解図である。
【図10】図10は図2実施例におけるデータサイクルの一例を示す図解図である。
【図11】図11は図10実施例における親機スロットに送出される親機パケットの一例を示す図解図である。
【図12】図12は図11におけるUスロットを詳細に示す図解図である。
【図13】図13は図10実施例における子機スロットに送出される子機パケットの一例を示す図解図である。
【図14】図14は図1実施例の或る状況における通信データの具体例を示す図解図である。
【図15】図15はOCモードには対応しないカートリッジのメモリマップの一例を示す図解図である。
【図16】図16はOCモードに対応するカートリッジのメモリマップの一例を示す図解図である。
【図17】図17は図1実施例の無線通信ユニットに含まれるEEPROMのメモリマップの一例を示す図解図である。
【図18】図18は図1実施例において携帯ゲーム装置を構成する携帯ゲーム機の内部RAMのメモリマップの一例を示す図解図である。
【図19】図19は図1実施例の携帯ゲーム機の動作を示すメインフローの一部を示すフロー図である。
【図20】図20は図19の続きを示すフロー図である。
【図21】図21は図20の続きを示すフロー図である。
【図22】図22は図21の続きを示すフロー図である。
【図23】図23は図22の続きを示すフロー図である。
【図24】図24は図21の続きを示すフロー図である。
【図25】図25は図19の続きを示すフロー図である。
【図26】図26は図25の続きを示すフロー図である。
【図27】図27は親機の接続処理の動作の一部を示すフロー図である。
【図28】図28は図27の続きを示すフロー図である。
【図29】図29は親機の送受信処理の動作を示すフロー図である。
【図30】図30は子機の接続処理の動作の一部を示すフロー図である。
【図31】図31は図30の続きを示すフロー図である。
【図32】図32は子機の送受信処理の動作を示すフロー図である。
【図33】図33は子機の復帰処理の動作を示すフロー図である。
【図34】図34は自機を親機とするか子機とするかの選択を最初に行う実施例の要部を示すフロー図である。
【発明を実施するための形態】
【0041】
この発明が適用される無線通信ゲームシステムは、一例として、図1に示すような携帯ゲーム装置10を利用する。携帯ゲーム装置10は、この実施例では、たとえばゲームボーイアドバンス(GAMEBOY ADVANCE:商品名)のような携帯ゲーム機12と、その携帯ゲーム機12の通信コネクタ46に接続された無線通信ユニット14およびカートリッジコネクタ40に接続されたカートリッジ16を含む。つまり、この実施例においては、携帯ゲーム装置10は、携帯ゲーム機12,無線通信ユニット14およびカートリッジ16によって構成される。
【0042】
図1に示す携帯ゲーム機12は、プロセサ20を含み、このプロセサ20は、CPUコア22とそれに関連するブートROM24,LCDコントローラ26,WRAM(ワーキングRAM:以下同様)28,VRAM30および周辺回路32とを含む。ただし、周辺回路32は、音声(サウンド)回路、DMA(Direct Memory Access)回路、タイマ回路、入出力インタフェース(IO)などを含む。携帯ゲーム機12の前面に設けられたLCD18には、プロセサ20から表示信号、この実施例ではRGB信号が与えられ、したがって、LCD18ではゲーム画像がカラー表示される。そして、プロセサ20からは、サウンド回路34にオーディオ信号が与えられ、そのオーディオ信号によって、スピーカ36からゲーム音楽や効果音などの音声が出力される。また、携帯ゲーム機12の前面にLCD18を挟んで設けられる十字キーやスタートキー,セレクトキーおよびAボタンならびにBボタンがまとめて操作スイッチ38として示され、この操作スイッチ38からの操作信号がプロセサ20に入力される。したがって、プロセサ20は操作スイッチ38を通して与えられたユーザの指示に従った処理を実行する。
【0043】
携帯ゲーム機16はカートリッジコネクタ40を有し、このカートリッジコネクタ40には、カートリッジ16が接続または挿入される。カートリッジ16にはROM42およびバックアップRAM44が内蔵され、ROM42には携帯ゲーム機12で実行すべきゲームのためのゲームプログラムが、そのゲーム名とともに、予め設定されている。バックアップRAM44は、そのゲームの途中データやゲームの結果データを記憶する。
【0044】
携帯ゲーム機16にはさらに通信コネクタ46が設けられ、この通信コネクタ46には無線通信ユニット14のコネクタ48が接続される。なお、実施例で用いる携帯ゲーム機12は、一例としてゲームボーイアドバンス(商品名)であり、その場合、上述のカートリッジコネクタ40は、LCD18を前面(正面)としたときの上面奥側に設けられる32ピンコネクタであり、通信コネクタ46は上面手前側に設けられる6ピンコネクタである。
【0045】
無線通信ユニット14は、ベースバンドIC50を含み、このベースバンドIC50はROM52を含む。ROM52にはたとえばOCD(One−Cartridge Download)プログラムやその他のプログラムが内蔵され、ベースバンドIC50は、それらのプログラムに従って動作する。なお、ワンカートリッジダウンロードプログラムとは、OCモード(ワンカートリッジモード:親機にだけゲームカートリッジが装着されていて、子機はその親機カートリッジからの子機用プログラムのダウンロードを受けて動作するモード)において、子機へプログラムをダウンロードするためのプログラムである。
【0046】
無線通信ユニット14にはさらにEEPROM54が設けられ、このEEPROM54には、たとえば、ユーザ名が固有に設定される。ベースバンド(Base Band)IC50は、そのユーザ名を含んだデータを、RF(Radio Frequency)−
IC56に送出し、RF−IC56は、そのデータを変調して、アンテナ58から電波を送信する。ただし、その電波強度は、非常に微弱で、電波法の規制の対象とならない程度の小さい値に設定されている。また、この無線通信ユニット14には電源回路60が設けられている。この電源回路60は典型的には電池であり、無線通信ユニット14の各コンポーネントに直流電源を供給する。
【0047】
無線通信ユニット14では、また、他の携帯ゲーム装置から送信された電波をアンテナ58で受信してRF−IC56によって復調し、復調信号がベースバンドIC50に入力される。したがって、ベースバンドIC50は、復調信号をデコードして、データを復元し、そのデータをコネクタ48および46を介して携帯ゲーム機12すなわちWRAM28に転送する。
【0048】
この発明に従った実施例の無線通信ゲームシステムでは、複数台の図1に示すような携帯ゲーム装置10を利用する。図2の点線64は自機携帯ゲーム装置62の通信可能範囲を示している。そして、携帯ゲーム装置62は、通信可能範囲64に存在する携帯ゲーム装置に対してエントリできる可能性がある。この通信可能範囲64が上述の微弱電波によって親機と子機との間のデータ通信が可能な範囲であり、この通信可能範囲64の中に存在する複数の携帯ゲーム装置は、どれでもが、任意に、親機となりまたは子機となることができる。図示の例では、その範囲64の内に、4台の親機と3台の子機と、1台の自機62とが存在する。
【0049】
そして、自機62がゲームに参加する場合、親機か子機になる必要がある。自機が子機になる場合には、参加可能な親機を探す必要がある。親機を探すときに、自機がカートリッジを持っているかどうかによって、異なる親機を探す必要がある。
【0050】
まず、自機62が図1に示すカートリッジ16を装着した携帯ゲーム装置である場合であって、かつ自機62の周囲のすべての親機を表示することを示す全表示フラグ(後述)を「1」に設定しているときには、図1に示す携帯ゲーム機12のLCD18上に、図3で示すような親機リスト18Aが表示される。この図3の親機リスト18Aには、通信可能範囲64(図2)内に存在するすべての親機、すなわち、ユーザ名がそれぞれ「太郎」,「一郎」および「二郎」の3台の親機が表示される。したがって、自機のユーザは、自機を子機として動作または機能させたいとき、その自機を接続したい親機を、操作キー38(図1)に含まれる十字キーでカーソルを動かして指定した後同じく操作キー38に含まれるAボタンを押すことによって、選択することができる。
【0051】
ただし、自機を親機として使いたい場合には、ユーザは、操作キー38に含まれるBボタンを押せばよい。
【0052】
図2では範囲64内に4台の親機が存在するにも拘わらず、図3の親機リスト18Aでは3台の親機だけが表示されるのは、次の理由による。ユーザ名が「三郎」の親機はエントリスロットESlotが「ffh」に設定されている。このエントリスロットESlotは、新しい子機を希望するかどうかを示すフラグであり、このエントリスロットESlotが「ffh」に設定されているときは、その親機は子機の新規参加を拒否しているので、そのような親機は表示されないのである。ユーザ名「三郎」の親機は、エントリ可能な最大子機数に達しているため、新しい子機を希望していない。
【0053】
また、図3の親機リスト18Aでは、ユーザ名「二郎」の親機に丸印(O)が付加されている。この丸印(O)は、OCモードでのゲームがプレイ可能なことを示す。
【0054】
さらに、全表示フラグがオフの場合には、LCD18には図4に示す親機リスト18A
が表示される。この場合には、自機のゲームカートリッジ、たとえばマリオカート−1(Mario Kart−1)と通信できる親機、この例ではユーザ名が「太郎」である親機だけが表示される。なぜなら、ユーザ名「太郎」の親機にはマリオカート−2(Mario Kart−2)のカートリッジが装着されていて、Mario Kart−1とMario Kart−2とは相互に通信可能であるからである。なお、通信可能範囲64内に、マリオカート−1のカートリッジが装着されている親機があれば、その親機も当然表示される。
【0055】
上の例では自機(子機)にMario Kart−1のカートリッジが装着されているが、自機にカートリッジを装着せず、OCモードでゲームをプレイしたい場合には、LCD18には、たとえば図5に示す親機リスト18Aが表示される。この図5の親機リスト18Aでは、OCモードに対応できる親機、この例ではユーザ名「二郎」の親機だけが表示される(「F−ZERO」はOCモード対応のゲームである)。ただし、この場合には自機にはカートリッジが装着されていないので、自機は親機になれない。したがって、「自分が親機になりたいときはBボタンを押してください」という図3や図4に示すメッセージは表示されない。
【0056】
次に図6−図8を参照して、ユーザ名「四郎」の親機が図2に示す通信可能範囲64に入り、その後、ユーザ名「一郎」の親機がその範囲64の外へ出た場合の自機62の表示の変化について説明する。ユーザ名「四郎」の親機が範囲外にある場合には、図6に示すように、自機62のLCD18上には図3と同じ親機リスト18Aが表示される。
【0057】
その後、ユーザ名「四郎」の親機が範囲内に進入してきたときには、図7で示す親機リスト18Aが表示される。ただし、自機62の全表示フラグがオンされているものとする。つまり、ユーザ名「四郎」の親機が、ユーザ名がそれぞれ「太郎」,「一郎」および「二郎」である親機に加えて表示される。
【0058】
そして、さらにユーザ名「一郎」の親機が範囲64外へ脱したときには、図8の親機リスト18Aが表示される。この親機リストにはユーザ名「一郎」の親機は表示されない。
【0059】
さらに、自機が親機であってかつ新たな子機の参加を待っているときには、LCD18には、図9に示す子機リスト18Bが表示される。この子機リスト18Bをみると、現在、ユーザ名がそれぞれ「五郎」,「六郎」および「七郎」の子機が自機に接続していることがわかる。ここで、本実施例は親機と子機とが微弱電波によって無線通信をしながらゲームを進行させる無線通信ゲームシステムであるので、本来的には「接続」の用語を用いるべきではない。しかしながら、親機となる携帯ゲーム装置と子機となる携帯ゲーム装置との間での通信可能な連係状態を表す用語として、有線通信の場合の用語を借りて、便宜上「接続」と表現することとする。
【0060】
次に、接続状態にある親機と子機とが無線通信する場合のデータパケットフォーマットについて、図10−図14を参照して説明する。図10で示すように、1つのデータサイクルが2ミリ秒で、そのデータサイクルは、1つの親機スロットと複数(この実施例では4つ)の子機スロットとを含む。親機スロットでは図11に具体的に示す親機パケットがブロードキャスト(Broadcast:放送)され、4つの子機スロットでは、それぞれ、図13に具体的に示す子機パケットの親機への送信が行われる。
【0061】
親機パケットは、図11に示すように、同期データを格納しておくためのフィールドsyncをその先頭に有し、その同期データフィールドsyncに後続してその親機の番号(識別コード)PID格納するためのフィールドPIDを有する。そのフィールドPIDに続いて、ユーザ名フィールドUserNameおよびゲーム名フィールドGameNa
meが形成される。ユーザ名フィールドUserNameには、EEPROM54(図1)から読み出されたユーザ名、上の例でいえば「太郎」,「一郎」などが登録され、ゲーム名フィールドGameNameにはゲーム名、上の例でいえばMario Kart−1,Mario Kart−2,F−Zero,Golf,・・・が登録される。ただし、カートリッジ16(図1)を装着すれば、このゲーム名フィールドGameNameにはROM42(図1)から読み出されたゲーム名(図16の68)が自動的に登録され得る。
【0062】
親機パケットはさらに、フラグOCを含み、このフラグOCは、先に述べたワンカートリッジ(OC)モードに対応できるかどうかを示すフラグである。具体的には、このフラグOCがリセットされているとき、すなわちOC=0のときには、そのときの親機のゲームカートリッジはOCモードに非対応であること、あるいは、OCモードに対応できるが現在は通常モードでプレイしていることを示す。フラグOCがセットされているとき、すなわち、OC=1のとき、OCモードに対応できかつ現在そのOCモードでプレイしていることを示す。したがって、カートリッジを持たないユーザは、このフラグOCが「1」である親機を探す必要がある。
【0063】
フラグOCに続いて、親機パケットは、フィールドESlot,USlotおよびPayloadを順次含む。EスロットフィールドESlotは、エントリ(参加)可能な子機スロットの番号が格納される。つまり、新規参加子機が使用できるスロット番号が格納される。UスロットフィールドUSlotには、子機スロットの使用状況が格納される。具体的には、図12に示す。すなわち、UスロットフィールドUSlotは、4つの領域を含み、この4つの領域の各々が子機スロット0,子機スロット1,子機スロット2および子機スロット3に対応する。そして、それぞれの領域には、該当する子機スロットが割り当てられた子機の番号(識別コード)CIDが格納される。該当する領域に対応する子機番号CIDが登録されているときには、その子機スロットが使用されていることがわかる。
【0064】
ペイロードフィールドPayloadは、ゲーム処理において必要となるゲームデータを送信するためのフィールドであり、親機から子機へ送信されるゲームデータを格納するためのフィールドである。
【0065】
子機から、その子機に割り当てられた子機スロットに送出される子機パケットが図13に示される。すなわち、子機パケットは、子機番号CIDを格納または登録する先頭のフィールドCIDとそれに後続するペイロードフィールドPayloadとを含む。ペイロードフィールドPayloadは子機から親機へ送信されるゲームデータを格納するためのフィールドである。
【0066】
図14が具体例を示す。この図14の例では、親機番号フィールドPIDに「58」が格納されていて、したがって、親機番号PIDが「58」であることがわかる。そして、この親機のユーザ名は「太郎」であり、ゲーム名はMario Kartであり、フラグOCが「0」で、EスロットフィールドESlotには「2」が登録されていて、UスロットフィールドUslotを参照することにより子機スロット0には「16」の子機番号(CID)を持った子機が、子機スロット1には「130」を持った子機がそれぞれ接続されているが、子機スロット2および3はともに「0h」であるので空きスロットであることがわかる。
【0067】
このような状態の親機に対して新たな子機が接続(Entry)を試みる場合には、親機のUスロットフィールドUSlotを参照すると子機番号CIDとして「16」および「130」が使用されているので、それ以外の子機番号CIDをたとえば乱数を発生させ
ることによって決定する。一例として「86」が当該子機のCIDとして決定されたとする。したがって、その子機は、ESlotで指定される子機スロット(子機スロット2)にCID=86を送信する。
【0068】
そして、親機では、子機スロット2で「86」を受信することにより、子機番号CIDとして「86」を持つ子機がエントリしたい、ということを知る。そして、そのエントリを許可するかどうかを決定するわけであるが、許可する場合には、親機は、Uslotの子機スロット2に対応する領域に「86」を設定した図14の最下段に示す親機パケットをブロードキャストし、新たに「86」の子機番号CIDを持つ子機の参加を許可したことを知らしめる。同時に、新規参加した子機は、Uslotの子機スロット2に対応する領域に自己の子機番号としてCID=86があることを確認し、エントリが成功したことを判断できる。
【0069】
図15はOCモードに対応していないカートリッジのメモリマップを示し、図16はOCモードに対応できるカートリッジのメモリマップを示す。
【0070】
図15の実施例では、カートリッジ16に含まれるROM42(図1)は、ゲームプログラム領域62およびゲーム名領域64を含む。ゲームプログラム領域62には、共通プログラム66,親機プログラム68および子機プログラム70が予め格納される。共通プログラム66は、自機が親機であると子機であるとに拘わらず使用するプログラムである。すなわち、自機が親機の場合は共通プログラムと後述の親機プログラムが実行され、自機が子機の場合は共通プログラムと後述の子機プログラムが実行される。親機プログラム68は、自機が親機として機能するときにのみ作動するプログラムであり、変数MおよびNを含むとともに、「0」に設定された(つまりオフされた)フラグOCを含む。ただし、変数Mは、その親機に同時に接続可能な子機の最大数を示し、変数Nは1台の子機が使用できる最大スロット数を示す。これらの変数MおよびNは、ともに、ゲームに応じて変化することに留意されたい。子機プログラム70は、自機が子機として機能するときにのみ作動するプログラムであり、上述の変数Nを含む。ゲーム名領域64には、上記ゲームプログラムの名称、たとえばMario Kart−1,Golf,・・・などが予め格納される。
【0071】
図16の実施例でも、カートリッジ16のROM44は、ゲームプログラム領域62およびゲーム名領域64を含む。ゲームプログラム領域62には、図15と同じ共通プログラム66,親機プログラム68および子機プログラム70が設定されるとともに、OCモードに対応するためにOCモード用ゲームプログラム72が設定される。OCモード用ゲームプログラム72は親機プログラム74と転送用子機プログラム76とを含む。親機プログラム74は、フラグOCが「1」に設定されていることを除いて、先の親機プログラム68と同じである。転送用子機プログラム76は、OCモードでゲームプレイする子機へ転送するためのプログラムであり、変数Nを含む。OCモードでエントリする子機は、親機から転送(ダウンロード)されるこの転送用子機プログラム76を受けることによって、ゲームに参加できる。
【0072】
図17には図1に示す無線通信ユニット14のEEPROM54のメモリマップが示され、この図17に示すように、EEPROM54は、ユーザ名領域78を含み、このユーザ名領域78にユーザ名、上の例でいえば「太郎」,「一郎」・・・などが登録される。
【0073】
図18に示すメモリマップを参照すると、ゲーム機12のWRAM28(図1)は、親機リスト領域80,親機リストクリアタイマ82,子機リスト領域84,変数領域86および88,ゲーム変数領域90,送信バッファ領域92および受信バッファ領域94を含む。
【0074】
親機リスト領域80は、先に図3等で説明した親機リスト18Aを表示するためのデータ、たとえば親機番号(PID),ユーザ名(UserName),ゲーム名(GameName),フラグOC,EスロットフィールドESlotを一時的に記憶保持しておくための領域である。
【0075】
親機リストクリアタイマ82は、この親機リスト領域80のデータをクリアするまでの時間を計測するためのタイマであり、後述のように、このタイマ82がタイムアップすれば、親機リスト領域80は自動的にクリアされる。
【0076】
子機リスト領域84は、先に図9等で説明した子機リスト18Bを表示するためのデータ、たとえば子機番号(CID),ユーザ名(UserName)およびゲーム名(GameName)を一時的に記憶保持しておくための領域である。
【0077】
WRAM28はさらに、自機が親機として動作する(振舞う)ときに使用する変数をストアしておくための親機変数領域86および自機が子機として動作する(振舞う)ときに使用する変数をストアしておくための子機変数領域88を含む。
【0078】
親機変数領域86には、たとえば図11に示す各フィールドPID,USlotおよびESlotのためのデータや接続対象の子機の子機番号(CID)さらには、変数nおよびmが設定される。ここで、変数nは、1台の子機に現に実際に割り当てられているスロット数を示し、その最大数が先に説明した変数Nで与えられる。また、変数mは、1台の親機に現に実際に同時に接続されている子機数を示し、その最大数が上述の変数Mで与えられる。
【0079】
子機変数領域88には、たとえば図12に示すフィールドCIDのためのデータが設定されるとともに、接続結果を示す変数、復帰結果を示す変数、接続先の親機の親機番号(PID)、獲得したスロット番号(1つまたは複数)、同期タイマ、変数n、さらには、全表示フラグが設定される。
【0080】
ゲーム変数領域90はゲーム実行中のゲーム変数、たとえばクリアしたステージ数や獲得したアイテム等を示す変数をストアするための領域である。そして、送信バッファ92および受信バッファ94は、それぞれ、送信データおよび受信データを一時的にストアしておくための領域である。
【0081】
それぞれがこのような構成を有する2台以上の携帯ゲーム装置10がゲームシステムを構築するが、以下に、そのゲームシステムにおける各携帯ゲーム装置10の動作をフロー図を参照して説明する。
【0082】
詳細な説明に先立って、OCモードに対応できないカートリッジが自機に装着されている場合で、かつ、自機が親機になるときには、後述のステップS29(図21)−ステップS69(図23)の一連のステップを実行する。また、OCモードに対応できないカートリッジが自機に装着されている場合で、かつ、自機が子機となるときには、後述のステップS83−ステップS109(図24)の一連のステップを実行することになる。
【0083】
また、自機にOCモード対応可能なカートリッジが装着されてはいるが通常モード(OCモードではない)でゲームをプレイする場合には、自機を親機とするときには、ステップS29(図21)−ステップS69(図23)の一連のステップを実行し、自機を子機とするときには、上と同様に、ステップS83−ステップS109(図24)の一連のステップを実行することになる。
【0084】
さらに、自機にOCモード対応可能なカートリッジが装着されていて、OCモードでゲームをプレイする場合には、自機は親機としてしか機能できず、この場合には、ステップS75およびS77(図19)を経て、上述の親機の場合と同様に、図21に示すステップS29から図23に示すステップS69の一連のステップを実行する。
【0085】
そして、自機にカートリッジが装着されていない場合には、自機はOCモードでの子機にしかなれず、したがって、この場合には、ステップS111(図19)−ステップS147(図26)の一連のステップを実行することになる。
【0086】
図19は携帯ゲーム機12の動作を示す。携帯ゲーム機12の電源(図示せず)を投入すると図19の動作が開始され、最初は、ブート(Boot)ROM24内に設定された動作を実行する。つまり、最初のステップS1で、プロセサ20は、たとえばコネクタ40(図1)からの信号に基づいて、カートリッジ16が装着されているかどうかを検出する。そして、ステップS3でカートリッジがあると判断した場合には、カートリッジ16のROM42のプログラムに移行し、続くステップS5で、そのカートリッジがOCモードに対応可能なカートリッジかどうか判断する。このステップS5では、図15のカートリッジ(OCモードに対応不可能なカートリッジ)が装着されているか、図16のカートリッジ(OCモードに対応可能なカートリッジ)が装着されているかを判断する。
【0087】
ステップS5で“NO”が判断されたとき、すなわち自機にカートリッジは装着されているがそのカートリッジがOCモード対応カートリッジではないとき、図20のステップS7に進み、図18に示す親機リスト領域80をクリアするとともに、同じく図18に示す親機リストクリアタイマ82をリセットし、さらには図18の子機変数領域88に設定されている全表示フラグをオン(「1」を設定)する。なお、親機リストクリアタイマ82はリセット後自動的にタイマのカウントを開始する。
【0088】
その後、ステップS9において、図11で示すような親機パケットの受信を試みる。ステップS11で、親機パケットを成功裏に受信したかどうか判断する。そして、ステップS11で“YES”を判断したとき、続くステップS13において、その親機パケットをブロードキャストした親機は、親機リストに存在しない親機かどうか判断する。具体的には、このステップS13では、受信した親機パケットのデータ(図18に示すWRAM28の受信バッファ94に一時的にストアされているデータ)のうちの親機PIDやユーザ名が、親機リスト80(図18)に登録されている親機かどうか判断する。このステップS13で“YES”が判断されると、つまり、新規な親機の場合には、続くステップS15において、プロセサ20は、親機リスト80に、親機パケットに含まれた親機ID(PID),ユーザ名(UserName),ゲーム名(GameName),OCフラグ(OC)およびエントリスロット(ESlot)を新たに登録する。
【0089】
先のステップS11で“NO”を判断したとき、またはステップS15での登録を終えたとき、次のステップS17で、先のステップS7でリセットした親機リストクリアタイマ82(図18)の値が2秒以上になったかどうか判断する。“YES”なら、ステップS19で親機リスト80をクリアするとともに、親機リストクリアタイマ82をリセットする。ここで、親機リストクリアタイマ82をリセットするのは次の理由による。すなわち、図8を参照して前述したようにある親機(図8の「一郎」)が通信可能範囲から外れた場合に、その親機を親機リスト80から削除しなければならない。そのため、定期的に(この実施例では2秒ごとに)、親機リスト80をクリアして通信可能範囲の親機のリストへの登録を最初からおこなうことによって、通信可能範囲から外れた親機が親機リストに残らないようにしているのである。ステップS17で“NO”を判断したとき、またはステップS19を経た後、次のステップS21において、プロセサ20は、上述の全表示
フラグがオン(「1」)かどうか判断する。なお、実施例では、この全表示フラグは、デフォルトとして、「1」またはオンに設定されている。全表示フラグがオンのとき、ステップS23で、親機リストに登録されている親機のうち、エントリスロットESlotが「ffh」でない親機、つまり、新たな子機のエントリを許容するすべて親機の情報(具体的には、ユーザ名UserNameおよびゲーム名GameName)を図3に示すように表示する。全表示フラグがオフ(「0」)のときには、ステップS25において、親機リストに登録されている親機のうち、エントリスロットESlotが「ffh」でなくしかも通信可能な(すなわち、親機のカートリッジのゲームと子機のカートリッジのゲームが所定の関係にあり通信可能な)親機の情報(ユーザ名UserNameおよびゲーム名GameName)を図4に示すように表示する。
【0090】
その後、図21のステップS27に進み、プロセサ20は、操作キー38からの信号を参照して、Bボタン(図示せず)が押されたかどうか判断する。Bボタンが押されたということは、その携帯ゲーム装置のユーザが、自機を親機として振舞わせることを決めたことを意味し、その場合には、変数MおよびNの範囲内で子機を募集するために、ステップS29の親機接続処理を実行する。ただし、1台の子機に与えられる最大スロット数を示す変数Nおよび最大参加可能子機数を示す変数Mは、それぞれ、ゲームによって変更可能である。たとえば、最大参加子機数Mを大きくするためには最大スロット数Nを小さくし、データレートを重視するなら最大スロット数Nを大きくし最大参加子機数Mを小さくすればよい。
【0091】
ここで、図27および図28を参照して、子機募集のためのステップS29における親機の接続処理について、詳細に説明する。図27の最初のステップS1001では、プロセサ20は、図18に示す子機リスト領域84をクリアするとともに、初期画面を表示させる。このステップS1001は初期設定ステップであり、上の処理に加えて、さらに、1つの子機の対して割り当てるサブタイムスロットの最大数(N)を設定するとともに、エントリを許可する子機の最大数(M)を設定する。ただし、これら最大数NおよびMは、それぞれ、実行すべきゲームプログラムに応じて決定できる。このように、1つの子機に対して割り当てるサブタイムスロットの最大数Nや同時参加可能な子機の最大数Mをゲームに応じて決定するようにすれば、一定のサブタイムスロット数の中で、1つの子機に対して割り当てる個数を少なくして参加可能な子機の数を多くするか、または、1つの子機に対して割り当てる個数を多くしてデータレートを大きくするかのいずれかをゲームの内容に応じて決定することができる。たとえば、多くのプレイヤが参加する方が面白いゲームの場合にはスロット数Nを小さくし参加子機数Mを大きくし、通信量が多いゲームの場合はスロット数Nを大きくし参加子機数Mを小さくすればよい。
【0092】
続くステップS1003では、プロセサ20は、親機変数領域86(図18)の親機PIDを設定するための領域PIDに擬似ランダム値を書き込む。そして、次のステップS1005において、領域86内の、親機(自機)に実際に接続している子機の数を示す変数mをゼロ(0)とし、続くステップS1007で、接続対象子機の番号を示す接続対象CIDの領域に「Null」を設定するとともに、領域86内の、現在接続処理中の子機に実際に付与しているスロット数を示す変数nにゼロ(0)を書き込む。なお、接続対象CIDとは、現在接続処理中の子機のCIDのことであり、エントリ処理において1つの子機に複数のスロットを付与する場合に、ある子機に対するスロットの付与を複数回連続しておこなうために、ある子機に対するスロットの付与が開始されたら、接続対象CID以外のCIDの子機からのエントリ要求を無視するためのものである。次のステップS1009において、領域86内の、エントリスロット領域ESlotに、空いているスロット番号のうちの1つを割り当てる。
【0093】
その後、ステップS1011において、プロセサ20は、操作キー38(図1)からの
信号を検証して、Aボタン(図示せず)が押されたかどうか判断する。ステップS1011で“YES”なら、そのとき自機(親機)のユーザがその子機のエントリを拒否したことを意味するので(図9参照)、続くステップS1013において、プロセサ20は、図18の子機リスト領域84から、その選択された子機のデータ、USlotおよびCIDを削除する。その後、ステップS1015で、図9に示すように新たな子機リスト18Bを表示させる。
【0094】
そして、ステップS1011で“NO”が判断されたときには、すなわち親機のユーザがAボタンを押さなかったとき、またはステップS1015を実行した後には、ステップS1017において、プロセサ20は、操作キー38からの信号に基づいて、スタートキー(図示せず)が操作されたかどうか判断する。“YES”なら、そのままリターンする。しかしながら、“NO”なら、続くステップS1021において、図29に詳細に示す親機の送受信処理を実行する。
【0095】
図27のステップS1019で示す親機の送受信処理が、図29に詳細に示される。図29のステップS2001では、プロセサ20は、送信バッファ92(図18)に未送信データがあるかどうか判断する。“YES”なら、次のステップS2003において、図14の親機スロットに必要なデータ、たとえばPID,ユーザ名,ゲーム名,OCフラグ,Eスロット,Uスロットおよび、上記未送信データであるペイロードを送信する。そして、次のステップS2005で子機パケットを受信した後、リターンする。
【0096】
先のステップS2001で“NO”が判断されたときには、次のステップS2007で、プロセサ20は、過去64ミリ秒の間データ送信をしなかったかどうか判断する。なお、この「64ミリ秒」という時間は、タイマずれを解消できる数値の一例であり、当然この数値に限られるものではない。
【0097】
ステップS2007で“YES”を判断したときには、ステップS2009で、親機スロットを用いて、ペイロードを除く各データ、たとえばPID,ユーザ名,ゲーム名,OCフラグ,EスロットおよびUスロットを送信する。このステップS2009は子機からのエントリを可能にするために必要なステップであり、ペイロード(送信すべきデータ)がなくても、エントリ処理に必要なデータ(PID,ユーザー名,ゲーム名,OCフラグ,Eスロット,Uスロット)を定期的に送信しているため、子機は常にエントリ処理できるのである。このステップS2009では、ペイロードデータは送信しない。そして、ステップS2009の終了後、またはステップS2007で“NO”が判断されたとき、先のステップS2005を経てリターンする。
【0098】
図27に戻って、ステップS1019に続くステップS1021で、プロセサ20は、図11に示す親機パケットのフィールドESlotで指定したスロットで、子機番号CIDを受信できたかどうか判断する(すなわち、子機がエントリスロットを使用してエントリ要求をしてきたかどうかを判断する)。このステップS1021で“NO”の場合、先のステップS1011に戻り、“YES”の場合、次のステップS1023で、図18の子機変数領域86の接続対象子機CIDがNullかどうか判断する(すなわち、現在エントリ処理中の他の子機があるか否かを判断する)。“YES”なら、つまり、接続対象子機番号(CID)が登録されていなければ、ステップS1025で、ステップS1019で受信した子機CIDを接続対象子機番号(CID)として、図18の領域86内の接続対象子機CIDに登録する。
【0099】
先のステップS1023で“NO”のとき、またはステップS1025を終えたとき、ステップS1027において、プロセサ20は、受信したCIDが接続対象CIDと同じかどうか判断する(すなわち、受信したCIDが現在エントリ処理中の子機のCIDか否
かを判断する)。“NO”なら先のステップS1011に戻るが、“YES”なら次のステップS1029で、図18の領域86内のUスロット領域USlotのエントリスロットを示す部分に、そのCIDを格納する。そして、ステップS1031で、実接続スロット数nをインクリメント(+1)し、ステップS1033で、n=Nかどうか、すなわち、実接続スロット数nが1台の子機に与える最大スロット数N(ゲーム毎に異なる)に達したかどうかを判断する。“YES”なら、その子機に対してそれ以上のスロットの付与は許容できないので、図28で示す次のステップS1035に進む。しかしながら、“NO”なら、その子機に対してさらにスロットを付与することが可能なので、ステップS1009に戻る。
【0100】
実付与スロット数nが最大付与可能スロット数Nに達したときには、その子機に対するエントリ処理を終了して、図28のステップS1035に進むが、このステップS1035では、親機となった携帯ゲーム機のプロセサ20は、エントリ処理が終了した子機のユーザ名、およびゲーム名等を受信する。この子機のユーザ名およびゲーム名がステップS1037において、子機リストに追加され、ステップS1039において、子機リスト18Bが、図9に示すように表示される。
【0101】
その後、親機のプロセサ20は、ステップS1041において、実接続子機数mをインクリメント(+1)し、ステップS1043において、その実接続子機数mが最大接続可能子機数M(ゲーム毎に異なる)と等しくなったかどうかを判断する。このステップS1043で“YES”が判断されると、つまり、それ以上子機を接続できないと判断したときには、そのままリターンする。
【0102】
逆に、1台以上の子機が未だ接続可能な場合、すなわちステップS1043で“NO”が判断された場合には、図27のステップS1007に戻る。
【0103】
このようにして、図21のステップS29での接続処理が実行され、さらに、図22のステップS31において、子機の募集を一旦打ち切り、他の子機の参加を禁止するために、エントリスロットESlotに「ffh」を書き込む。そして、ゲーム中に必要に応じて、子機を追加募集できるように、図18の領域86内の接続対象CIDをNull,実接続スロット数n=0としておく。
【0104】
その後、ステップS33においてゲームスタートかどうか、つまり、操作キー38に含まれるスタートボタン(図示せず)が押されたかどうか判断する。スタートボタンが押されると、次のステップS35において、プロセサ20は、図18に示す親機変数領域86のUスロット領域USlotを参照して、現に接続中の子機の数「m」を検出する。Uスロットの各領域のうち「0h」でない領域の数が現に接続中の子機の数mである。そして、ステップS37で、接続中の子機数mが最大接続可能数Mより小さいかどうか判断する。このステップS37で“YES”が判断されるということは、新規子機のエントリを許容できることを意味していて、したがって、この場合には、次のステップS39において、親機変数領域86のEスロット領域ESlotに、空いているスロット番号(Uスロットのうち「0h」である領域に対応するスロット番号)の1つを設定する。これによって、領域ESlotの「ffh」の状態設定が解除される。
【0105】
そして、ステップS41において、先に図29を参照して説明した親機の送受信処理を実行することによって、図11に示す親機パケットをブロードキャスト(送信)するとともに、各子機からの図13に示す子機データ(パケット)を受信する。
【0106】
その後、ステップS43において、プロセサ20は、一定時間t1以上、或る子機のデータを受信できなかったかどうか判断する。このステップS43で“YES”が判断され
るということは、該当の子機が既に通信可能範囲64(図2)を離脱した可能性があることを意味し、その場合には、ステップS45において、プロセサ20は、該当の子機の子機番号CIDを親機変数領域86(図18)のUスロット領域USlotから削除する。この処理によって、離脱した子機が使用していた子機スロットが空きスロットになるので、離脱した子機の代わりに新たな子機のエントリが可能になる。
【0107】
ステップS43で“NO”が判断されたとき、またはステップS45を終えたとき、次のステップS47において、プロセサ20は、親機変数領域86のEスロット領域ESlotに「ffh」が設定されているかどうか判断する。“YES”なら、次のステップS49で、プロセサ20は、カートリッジ16のゲームプログラム62(図15)に従って、ゲーム処理を実行する。
【0108】
図22のステップS47で“NO”が判断されたときには、子機の途中参加を許容するために、プロセスは図23のステップS51に進む。このステップS51では、親機のプロセサ20は、EスロットフィールドESlotで指定したスロットで子機CIDを受信できたかどうか判断する。“YES”なら、次のステップS53において、図18の領域86内の接続対象CIDの領域に「Null」が書き込まれているかかどうか判断する。“YES”なら、つまり、接続対象子機のCIDが登録されていなければ、ステップS55で、Eスロットで指定したスロットで受信した子機CIDを接続対象CIDの領域に登録する。
【0109】
先のステップS53で“NO”のとき、またはステップS55を終えたとき、ステップS57において、プロセサ20は、受信した子機番号CIDが接続対象CIDと同じかどうか判断する。“YES”なら次のステップS59で、図18の領域86のUスロット領域USlotのエントリスロットを示す部分に、その子機番号CIDを格納する。そして、ステップS61で、実接続スロット数nをインクリメント(+1)し、ステップS63で、n=Nかどうか、すなわち、実接続スロット数nが1台の子機に与える最大スロット数Nに達したかどうかを判断する。“YES”なら、その子機にそれ以上のスロット付与は許容できないのでその子機に対するスロット付与を終了し、ステップS65で、領域86内の、接続対象CIDの領域に「Null」を設定するとともに、変数nにゼロ(0)を書き込む。
【0110】
その後、親機のプロセサ20は、ステップS67において、実接続子機数mが最大接続可能子機数Mと等しくなったかどうかを判断する。このステップS67で“YES”が判断されると、つまり、それ以上子機を接続できないと判断したときには、ステップS69において、Eスロット領域ESlotに「ffh」を書き込む。
【0111】
なお、ステップS69の後、または、ステップS51,S57,S63もしくはS67においてそれぞれ“NO”が判断されたときには、いずれの場合にも子機の途中参加処理をやめてゲーム処理に戻る(図22のステップS49に戻る)。
【0112】
以上が、自機にOCモード対応でないカートリッジが装着されている場合で、かつ自機が親機になる場合の携帯ゲーム装置の処理である。
【0113】
次に、自機にOCモード対応のカートリッジが装着されている場合の携帯ゲーム装置の処理を説明する。
【0114】
図19のステップS5において“YES”が判断されたとき、すなわち、自機に図16に示すOCモード対応のカートリッジを装着している場合には、次のステップS71で、プロセサ20は、モード選択画面(図示せず)を表示する。そして、ステップS73にお
いて、通常モードが選択されたかどうか判断する。“YES”なら、先のステップS5で“NO”を判断したときと同様に、図20のステップS7に進む。すなわち、OCモード対応でないカートリッジを装着している場合の処理と、OCモード対応のカートリッジを装着しているが通常モードを選択した場合の処理は同じである。
【0115】
自機にOCモード対応のカートリッジが装着されていてかつOCモードのゲームをプレイする場合には、自機は親機にしかなれない。詳しく述べると、ステップS73で“NO”なら、すなわち、OCモードが選択された場合には、次のステップS75において、先のステップS29(図21)と同様に、図27,図28を参照して詳しく説明した親機の接続処理を実行する。ただし、このときには、1台の子機の使用可能スロット数Nは「1」とし(N=1)、最大接続可能台数Mとしては、ゲームで許容されている数を設定する。その後、ステップS77で、プロセサ20は、図16に示す転送用子機プログラム76を子機に転送(ダウンロード)する。その後、図22のステップS31に進み、前述と同様にそれぞれ以降の各ステップを実行する。
【0116】
以上が、自機にOCモード対応のカートリッジが装着されている場合の携帯ゲーム装置の処理である。
【0117】
次に、自機にOCモード対応でないカートリッジが装着されている場合で、かつ自機が子機になる場合の携帯ゲーム装置の処理を説明する。
【0118】
図21のステップS27で“NO”が判断されたときには、つまり自機が親機になるという選択をしなかったときには、続くステップS79において、携帯ゲーム機12のプロセサ20は、操作キー38からの操作信号を検証して、Aボタン(図示せず)が操作されたかどうか、つまり、接続を希望する親機を選択したかどうかを判断する。このステップS79で“YES”を判断ときには、プロセサ20は、続いて、ステップS81において、当該選択した親機との間で通信可能かどうかを判断する。すなわち、親機のカートリッジと自機のカートリッジが所定の関係にあって通信可能かどうかを判断する。通信可能なときには、その後、図24のステップS83に進み、子機の接続処理を実行する。この子機の接続処理は、詳しくは、図30および図31に示される。
【0119】
図30の最初のステップS3001では、子機となった携帯ゲーム機のプロセサ20が、親機パケット(図11)の受信を試みる。そして、次のステップS3003において、メニュー画面(図3等)で選択した親機の、フレーム同期データsyncを受信できたかどうか判断する。具体的には、メニュー画面で選択した親機のPIDを含む親機パケットの同期データsyncを受信できたかどうか判断する。
【0120】
ステップS3003で“NO”が判断されたとき、つまり、選択した親機の親機パケットが受信できなかった場合には、ステップS3005において、タイムアウト(時間切れ)かどうか判断し、このステップS3005で“NO”なら先のステップS3001に戻るが、“YES”なら、ステップS3007で接続結果変数(図18の領域88内の)に「失敗」を書き込んでリターンする。
【0121】
ステップS3003で“YES”が判断されたとき、つまり、対象としている親機の同期信号を受信できたときには、ステップS3009で、子機のプロセサ20は、同期タイマ(領域88)をリセットし、次のステップS3011に進む。このステップS3011では、プロセサ20は、擬似ランダム値を子機のID番号CIDとする。そして、ステップS3013において、このときのCIDを持った子機が既に存在するかどうか判断する。すなわち、受信した親機パケットのUスロットを参照して、同一のCIDが既に存在するかどうか、判断する。ステップS3013で“YES”の場合には一旦付与した番号を
変更する必要があり、したがって、この場合には、ステップS3011を再度実行し、新たな番号CIDを付与して、ステップS3013での検証を再度実行する。
【0122】
ステップS3013で“NO”が得られるまでこれらステップS3011およびS3013が繰り返され、“NO”が得られたとき、次のステップS3015に進む。ステップS3015では、実付与スロット数nをゼロ(0)とし、さらに、次のステップS3017で、親機パケットを受信するとともに、ステップS3019において、同期タイマを再度リセットする。そして、ステップS3021において、プロセサ20は、受信した親機パケットのEスロットESlot(図11参照)が「ffh」であるかどうか判断する。このステップS3021で“YES”が判断されると、子機のエントリは禁止されているので、先のステップS3007を経て、「失敗」としてリターンする。
【0123】
ステップS3021で“NO”が判断されたときには、子機のエントリは禁止されてはいないので、図31のステップS3023に進む。ステップS3023では、子機のCPUコアは、そのときの親機パケットのEスロットフィールドESlotで示されるスロットにステップS3011で得た番号CIDを送信する。そして、次のステップS3025において親機パケットを受信するとともに、ステップS3027において同期タイマを再度リセットする。
【0124】
そして、続くステップS3029において、子機のプロセサ20は、受信した親機パケットのUスロットフィールドのエントリスロット位置に自身の番号(CID)があるかどうか確認する。そして、このステップS3029で“NO”を判断すると、次のステップS3031で、プロセサ20は、タイムアウトかどうか判断する。タイムアウトではない場合には、先のステップS3017(図30)に戻るが、タイムアウトを生じた場合には、図30のステップS3007において「失敗」を接続結果変数に書き込んだ後にリターンする。
【0125】
ステップS3029で“YES”が判断されたとき、つまり、受信した親機パケットのUスロットのエントリスロット位置に自身の番号(CID)があったときには、続くステップS3033において実付与スロット数nをインクリメント(+1)した後、ステップS3035において、実付与スロット数nが1台の子機に付与できる最大スロット数N(ただし、このNは、ゲームによって変化し、たとえば1−4の値である。)と等しくなったかどうか判断する。このステップS3035で“NO”が判断されるときには、つまり、スロットが未だ付与できるときには、先のステップS3025に戻って親機パケットを受信する。
【0126】
しかしながら、ステップS3035で“YES”が判断されると、可能な数のスロットがすべて割り付けられたものとして、次のステップS3037において、接続結果変数に「成功」を登録し、次のステップS3039に進む。このステップS3039では、接続した親機の親機番号PIDおよび獲得したスロット番号を自身の内部RAM28(図18)の領域88に格納する。ただし、スロット数は複数の場合もあり、この実施例では「0」−「3」のいずれかの数値である。そして、その後図24のステップS85にリターンする。
【0127】
そのステップS85では、領域88の接続結果変数を参照して、接続結果が「成功」かどうか判断する。そして、“NO”の場合には、次のステップS87において、メッセージたとえば「接続できませんでした」を子機のLCD18(図1)に表示して図20のステップS7に戻る。
【0128】
親機への接続成功の場合には、次のステップS89において、子機のプロセサ20は、
親機に対して、自身に付与された子機スロットを利用して、自身のユーザ名およびゲーム名を送信する。そして、ステップS91において、ゲームスタートかどうか、すなわち、操作キー38に含まれるスタートボタンが押されたかどうか判断する。このステップS91でスタートボタンのオンが検出されると、次のステップS93において、子機の送受信処理を実行する。
【0129】
図24のステップS93で示す子機の送受信処理が、図32に詳細に示される。図32のステップS4001で親機パケットを受信し、次のステップS4003で同期タイマ(図18)をリセットする。そして、ステップS4005では、子機のプロセサ20は、送信バッファ92(図18)に未送信データがあるかどうか判断する。“YES”なら、次のステップS4007において、既に割り付けられている子機スロットを用いて、必要なデータ、たとえばCIDおよびペイロードを送信する。そして、未送信データがない場合、またはステップS4007の後、プロセスは、図24のステップS95にリターンする。
【0130】
再び図24に戻って、ステップS95では、子機のプロセサ20は、時間t2以上の間にわたって親機からのデータを受信できなかったかどうか判断する。この時間t2は、先の図22のステップS43での時間t1より短い。すなわち、t1>t2である。なぜなら、t1は親機が通信異常の子機を切断する時間であり、t2は子機が復帰処理を開始する時間であるので、親機は子機の復帰処理を待ってから切断する必要があるためである。“NO”の場合には、さらに次のステップS97で、受信した親機パケットのUスロットフィールドに自身の番号CIDが含まれているかどうか判断する。ステップS97で“YES”の場合には、ステップS99において、図22のゲーム処理を実行する。ただし、ステップS97で“NO”が判断されたときは、すなわち、親機パケットのUスロットフィールドに自機の番号がない場合には、ステップS101において、メッセージたとえば「親機から切断されました」をLCDに表示し、図20のステップS7に戻る。
【0131】
先のステップS95で“YES”が判断されたときには、つまり、一定時間t2以上にわたって親機からのデータを受信できなかったときには、ステップS103においてメッセージたとえば「親機と通信できなくなりました。復帰を試みます」を表示した後、ステップS105で、復帰処理を実行する。
【0132】
この復帰処理の詳細が図33に示されていて、この図33の最初のステップS5001では、子機のプロセサ20は、復帰すべき親機パケットの受信を試みる。そして、ステップS5003では、その親機からのブロードキャストデータを受信できたかどうか判断する。ただし、自分が復帰すべき親機かどうかは、図18の領域88に登録されている「接続先のPID」をみればわかる。
【0133】
ステップS5003で“NO”が判断されたとき、つまり、復帰すべき親機パケットのデータを受信できなかったとき、次のステップS5005で、タイムアウトになったかどうか判断する。そして、“NO”なら、先のステップS5003に戻るが、タイムアウトになってしまったら、次のステップS5007で、図18に示す領域88に含まれる復帰結果変数に「失敗」を書き込み、リターンする。
【0134】
先のステップS5003で“YES”が判断されたとき、すなわち、対象としている親機からの親機パケットを受信できたときには、次のステップS5009で同期タイマをリセットし、さらに、ステップS5011で親機パケットを受信する。そして、ステップS5013において、その親機パケットのUスロットフィールドに自身の番号CIDがあるかどうか判断する。受信した親機パケットに自機の番号があるということは、時間t2以上にわたる通信不能状態の原因は、親機による意図的な切断ではないということであり、
したがって、次のステップS5015において、領域88(図18)の復帰結果変数に「成功」を登録してリターンする。このように復帰処理をすることによって、例えば、親機と子機が誤って通信可能範囲を外れた場合や、通信状態が悪くて通信ができなかった場合、または、子機を操作しているプレイヤに用事ができて、その子機プレイヤが少しの間通信可能範囲を外れる必要がある場合等に、それらの要因が解消されて通信が可能になった後に、以前の通信状態に復帰することが可能になる。
【0135】
ただし、ステップS5003で“YES”になってもステップS5013で“NO”が判断されたときには、通信不能が親機の意思による切断が原因であったものとして、先のステップS5007を経て、リターンする。
【0136】
図33のサブルーチンから図24のステップS107にリターンすると、このステップS107では、領域88の復帰結果変数を参照して、復帰が「成功」したかどうか判断する。“YES”なら、ステップS99に進んでゲーム処理を実行する。しかしながら、“NO”なら、ステップS109でメッセージたとえば「復帰できませんでした」を表示した後、図20のステップS7に戻る。
【0137】
以上が、自機にOCモード対応でないカートリッジが装着されている場合で、かつ自機が子機になる場合の携帯ゲーム装置の処理である。
【0138】
次に、自機にカートリッジが装着されていない場合の携帯ゲーム装置の処理を説明する。ただし、この場合には、自機は、OCモード対応のゲームの子機として動作できるだけである。
【0139】
図19に戻って、ステップS3で“NO”が判断されたとき、すなわちその子機にカートリッジがないことを検出した場合は、ブートROM(図1の24)のプログラムであるステップS111において、無線通信ユニット14(図1)のROM52に設定されているOCDプログラム(親機から子機用プログラムをダウンロードするためのプログラム)を携帯ゲーム機12のプロセサ20に含まれるWRAM28に展開し、その後ステップS113において、子機のプロセサ20は、そのWRAM28上に展開されたOCDプログラムを起動する。
【0140】
その後、図25のステップS115において、子機のプロセサ20は、図18に示すような親機リスト領域80をクリアするとともに、親機リストクリアタイマ82をリセットする。ついで、ステップS117において、親機パケットの受信を試みる。そして、ステップS119において、親機パケットの受信が成功したかどうか判断し、“NO”ならステップS125に進み、“YES”なら、ステップS121に進む。ステップS121では、受信した親機パケットに含まれる親機番号PIDと図18に示す親機リスト領域80に登録されている番号PIDとを比較して、その親機パケットを送信した親機が親機リスト内に存在しないかどうか判断する。このステップS121で“YES”が判断されると、ステップS123において、親機リストに新たな親機を登録するように、親機パケットから読み出された、親機番号PID,ユーザ名,ゲーム名,OCフラグおよびEスロットを親機リスト領域80に追加する。その後ステップS125に進む。
【0141】
ステップS125では、ステップS115でリセットした親機リストクリアタイマ82の値が「2秒」以上になったかどうか判断する。“YES”なら、ステップS127で親機リストすなわち親機リスト領域80をクリアするとともに、親機リストクリアタイマ82をリセットする。その後、ステップS125で“NO”を判断した場合と同様に、ステップS127に進む。
【0142】
ステップS127では、親機リストの内、「Eスロットが「ffh」でなくかつOCフラグが「1」である親機、つまり、OCモードでのゲームがプレイできかつ子機の参加(エントリ)を拒否していない親機の情報(ユーザ名,ゲーム名)を表示する。それによって、当該子機のユーザに対して図5に示すような親機リスト18Aを作成し、自機が接続したい親機を選択させる。そして、ステップS131で、Aボタン(図示せず)が操作されたかどうか判断する。つまり、どれか1つの親機が選択されたかどうか判断する。ステップS127で“NO”なら、つまり親機を選択しなかったら、次のステップS133で、操作キー38に含まれる十字キー(図示せず)が操作されたかどうか判断する。十字キーの操作は、エントリを希望する親機の選択のためにカーソルを移動させるためであり、したがって、このステップS133で“YES”なら、次のステップS135でカーソルを移動させ、ステップS113に戻る。
【0143】
ステップS131で“YES”が判断されると、ステップS139に進んで子機の接続処理(図30,図31)を実行する。
【0144】
ステップS137で、既に詳細に説明した方法に従って、子機の接続処理を実行し、次のステップS139で、図18の領域88の接続結果変数を参照して、接続が成功したかどうか判断する。“NO”なら、ステップS141でメッセージたとえば「接続できませんでした」を表示して、ステップS111に戻る。
【0145】
ステップS139で“YES”が判断されると、プロセサ20は、当該子機と成功裏に接続された親機に対して、自機のユーザ名,ゲーム名を送信する。その後、図26のステップS145に進み、OCモードでゲームをプレイするために、転送用子機プログラムを親機から受信して自機のRAM28(図1)内に展開するとともに、そのプログラムを起動させる。そして、その後は、ステップS147において、先に説明した図24ステップS91−S109と同様の各ステップを実行する。
【0146】
以上が、自機にカートリッジが装着されていない場合の携帯ゲーム装置の処理である。
【0147】
なお、図21のステップS81で“NO”が判断されたとき、すなわち、親機の選択を試みたが通信できなかったときには、ステップS149において、メッセージたとえば「その親機は選択できません」を表示して図20のステップS9に戻る。
【0148】
また、図21のステップS79で“NO”が判断されたとき、つまり、BボタンもAボタンも操作されなかったときには、次のステップS151において、十字キー(図示せず)が操作されたかどうか、判断する。“NO”なら、次のステップS153で、さらにスタートキー(図示せず)が操作されたかどうか判断する。セレクトキーが操作されていないときは、図20のステップS9に戻る。ステップS153で“YES”が判断されたときには、ステップS153で、全表示フラグのオン/オフを切替えた後、同様にステップS9に戻る(すなわち、セレクトキーは全表示フラグのオン/オフの制御に使用される)。ただし、ステップS151で“YES”が判断されたときには、その十字キーの指示に従ってカーソルを移動させた後、ステップS9に戻る。
【0149】
なお、上述の実施例では、プログラムの進行に合わせて自機を親機とするか子機とするかを選択するようにした。しかしながら、直ちにこのような選択をするようにしてもよい。この場合には、図34に示すように、スタート直後の最初のステップS201で親機または子機の選択画面(図示せず)を表示し、その表示に従ってユーザが親機または子機を選択する。したがって、プロセサ20は、次のステップS203で、ユーザが親機を選択したかどうか判断する。ステップS203で“YES”の場合には、それ以後、先の図21のステップS29以降のステップを実行する。“NO”の場合、すなわち子機を選択し
たときには、図21に示すステップS7−S25,S79,S151−S157,およびS81−S109を実行する。
【符号の説明】
【0150】
10・・・携帯ゲーム装置
12・・・携帯ゲーム機
14・・・無線通信ユニット
16・・・カートリッジ
18・・・LCD
20・・・プロセサ
22・・・CPUコア
24・・・ブートROM
28・・・WRAM
38・・・操作キー
42・・・ROM
54・・・EEPROM
【技術分野】
【0001】
この発明は、無線通信を利用するゲームシステムに関し、特にたとえば、子機がその子機との間で通信可能範囲にある親機の情報を知ることができる無線通信ゲームシステム、およびそれに用いる携帯ゲーム装置ならびにゲームプログラムに関する。
【背景技術】
【0002】
従来の無線通信ゲームシステムの一例が、たとえば、平成12年(2000)5月16日付きで出願公開された特許文献1(国際分類:A63F13/00、H04L12/28)に開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2000−135380号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
この先行技術では、たとえば、友人などの間で約束をして、同一のゲームを実行するゲーム装置を持ち寄って、それらのゲーム装置で通信を確立した後無線通信ゲームを実行していた。先行技術では、他人のゲーム装置の識別情報やゲーム名などの情報を知るためにはユーザ同士でそれらの情報を口頭で確認するほかなかった。それゆえ、見知らぬ他人のゲーム装置が通信可能範囲にある場合に、その人と無線通信ゲームをおこなうことは現実的に困難である。すなわち、先行技術では、ユーザは通信相手のゲーム装置を自由に、動的に、選択することができなかった。
【0005】
無線通信の利点は自由に持ち運べることであり、また、無線通信可能な範囲にあるゲーム装置と自由に通信できることである。しかしながら、先行技術では、これらの利点を生かせているとはいえない。
【0006】
それゆえに、この発明の主たる目的は、新規な、無線通信ゲームシステム、携帯ゲーム装置、無線通信ゲームシステムにおける子機接続方法およびゲームプログラムを提供することである。
【0007】
この発明の他の目的は、子機が希望する親機を任意に選択できる、無線通信ゲームシステム、携帯ゲーム装置、無線通信ゲームシステムにおける子機接続方法およびゲームプログラムを提供することである。
【0008】
この発明のさらに他の目的は、通信可能範囲にあるゲーム装置と自由に無線通信ゲームをすることを可能にする、無線通信ゲームシステム、携帯ゲーム装置、無線通信ゲームシステムにおける子機接続方法およびゲームプログラムを提供することである。
【課題を解決するための手段】
【0009】
この発明は、互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムである。親機は、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするブロードキャスト手段を備える。子機は、受信手段と、表示手段と、選択手段と、接続要求送信手段とを備える。受信手段は、通信可能範囲に存在する親機から親機パケットを受信する。表示手段は、受信手段で受信した親機パケットに基づいて、通信可
能範囲に存在する親機の親機リストを表示する。選択手段は、親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させる。接続要求送信手段は、選択手段によって選択された親機に対して接続要求を送信する。
【0010】
請求項2は、請求項1に従属し、ブロードキャスト手段は他の子機と通信ゲームを実行中においても親機パケットをブロードキャストする、無線通信ゲームシステムである。
【0011】
請求項3は、請求項1または2に従属し、親機および子機は、所定の通信周期で無線通信するものである。通信周期は、親機によって使用される第1タイムスロットと、子機によって使用される第2タイムスロットとを含む。ブロードキャスト手段は、第1タイムスロットでゲームデータを含む親機パケットを送信する。
【0012】
請求項4は、請求項1に従属し、表示手段は、受信手段で受信したゲーム識別情報に基づいて、自機で実行するゲームと通信可能なゲームを実行する親機に限り親機リスト表示する、無線通信ゲームシステムである。例えば、ゲーム装置がゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着可能なものである場合には、表示手段は、親機に装着されているゲームカートリッジのゲームと子機に装着されているゲームカートリッジのゲームが通信可能な場合に限りその親機を親機リストに表示する。
【0013】
請求項5は、請求項1に従属し、子機は、ゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着可能なものである。表示手段は、現在装着されているゲームカートリッジのゲームと通信不可能なゲームを実行する親機も親機リストで表示する。
【0014】
請求項6は、請求項1に従属し、親機パケットは、新たな子機のエントリを受け付けるか否かを示すエントリ受付データをさらに含む。表示手段は、受信手段で受信したエントリ受付データに基づいて、新たな子機のエントリを受け付ける親機に限り親機リストで表示する。
【0015】
請求項7は、請求項1に従属し、親機は、子機用プログラムを記憶する子機用プログラム記憶手段、および子機からの接続要求に応じて(たとえば、子機はゲームカートリッジを着脱自在に装着可能なものであり、ゲームカートリッジが装着されていない子機からの要求に応じて)、子機用プログラムを子機に送信する子機用プログラム送信手段とをさらに備える。親機パケットは、子機用プログラム記憶手段を備えるか否かを示す子機用プログラム保持データをさらに含む。表示手段は、受信手段で受信した子機用プログラム保持データに基づいて、子機用プログラム保持データが子機用プログラムを備えることを示す場合には、自機で実行するゲームに関係なくその親機を親機リストで表示する。
【0016】
請求項8は、請求項1に従属し、親機は、子機が子機用プログラムの送信を必要としない第1プログラムと、子機が子機用プログラムの送信を必要とする第2プログラムとの両方を記憶する。親機パケットは、親機が第1プログラムおよび第2プログラムのいずれを実行しているかを示す実行種類データをさらに含む。表示手段は、受信手段で受信した実行種類データに基づいて、第1プログラムを実行している親機については、自機で実行するゲームと通信可能なゲームを実行する親機に限り親機リストで表示し、第2プログラムを実行している親機については、自機で実行するゲームに関係なく、親機リストで表示する。
【0017】
請求項9は、請求項1に従属し、子機は、ゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着するものである。表示手段は、ゲームカートリッジが装着されていない場合には、受信手段で受信した子機用プログラム保持データに基づいて、子機用プログラム記憶手段を備える親機に限り親機リストで表示する。
【0018】
請求項10は、請求項1に従属し、受信手段で受信した親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを記憶する親機リスト記憶手段、および親機リスト記憶手段に記憶された親機リストを定期的にクリアする親キリストクリア手段をさらに備え、表示手段は、親機リスト記憶手段に記憶された親機リストに基づいて表示する。
【0019】
請求項11は、互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムにおける子機接続方法であって、以下の(a)(b)(c)(d),および(e)のステップを含む。(a) 親機から、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするステップ(b) 子機において、通信可能範囲に存在する親機から親機パケットを受信するステップ(c) 子機において、受信ステップで受信した親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示するステップ(d) 子機において、親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させるステップ(e) 子機において、選択された親機に対して接続要求を送信させるステップ請求項12は、互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムのプログラムであって、携帯ゲーム機のプロセサに次のステップを実行させる:(a) 親機のプロセサに、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストさせ、(b) 子機のプロセサに、通信可能範囲に存在する親機から親機パケットを受信させ、(c) 子機のプロセサに、ステップ(b) で受信した親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示させ、(d) 子機のプロセサに、親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させ、そして(e) 子機のプロセサに、選択された親機に対して接続要求を送信させる。
【0020】
請求項13は、複数の携帯ゲーム装置を用い、一方が親機となり他方が子機となり、無線通信ゲームをプレイする、携帯ゲーム装置である。親機のために(親機として機能するために)、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするブロードキャスト手段を備える。子機のために(子機として機能するために)、受信手段と表示手段と選択させる手段と送信手段とを備える。受信手段は、通信可能範囲に存在する親機から親機パケットを受信する。表示手段は、受信手段で受信した親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示する。選択させる手段は、親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させる。送信手段は、選択された親機に対して接続要求を送信する。
【0021】
無線通信ゲームシステムは、実施例では、少なくとも2台の携帯ゲーム装置(10:実施例で相当する参照符号。以下同じ。)を用いて構成される。実施例の携帯ゲーム装置(10)は、携帯ゲーム機(12)と、その携帯ゲーム機に装着された無線通信ユニット(14)とを含む。携帯ゲーム装置は、この無線通信ユニット(14)を用いて、親機の場合には、第1タイムスロットで親機パケットをブロードキャストし、第2タイムスロットで子機パケットを受信する。子機の場合には、第1タイムスロットで親機パケットを受信し、第2タイムスロットで子機パケットを親機に向けて送信する。
【0022】
このブロードキャスト手段は、実施例では、図29に示す親機の送受信処理のステップS2003およびS2009に相当し、自機識別情報としての親機番号PIDと、ゲーム識別情報としてのゲーム名GameNameとを含む親機パケットをブロードキャストする。
【0023】
子機は、また、実施例の図32のステップS4001で示す受信手段によって、上述の
親機パケットを受信する。この親機パケットに基づいて、たとえば図20のステップS15において、親機リストを作成し、図20のステップS23またはステップS25で、その親機リストをLCD(18)上に表示する。
【0024】
子機のユーザは、その親機リストのたとえばゲーム名を見て、図21のステップS79およびS151で、選択手段を構成する操作キー(38)の十字キーを操作することによって、親機リストの中から所望の親機を1つ選択する。そして、図24のステップS83すなわち図30および図31の子機の接続処理を実行する。たとえばステップS3023(図31)に相当する接続要求送信手段が、Eスロットに自機の子機番号CIDを送信することによって、接続要求を親機に対して送信する。
【0025】
したがって、子機は、親機パケットから作成した親機リストに表示されているいずれの親機と接続するか、任意に決定することができる。
【0026】
請求項2は、実施例でいえば図29に相当する。この請求項2の発明によれば、子機は、無線通信ゲームを実行中の親機についても情報(PIDやゲーム名等)を得ることができる。このため、子機は、たとえば、新たな子機の参加を希望している親機の存在を知ることができるので、途中参加が可能になる。
【0027】
請求項3の第1タイムスロットは実施例でいえば親機スロットであり、第2タイムスロットは子機スロットである。そして、ブロードキャスト手段は、図11に示すペイロードデータを含む親機パケットをブロードキャストする(ステップS2003)。したがって、請求項3の発明によれば、親機は常時親機パケットをブロードキャストするため、子機は、通信可能範囲に存在するすべての親機に関する最新情報を知ることができる。
【0028】
請求項4では、図4に示すように、自機と通信可能なゲームを実行できる親機だけを親機リストで表示する。したがって、請求項4の発明によれば、自機と通信不可能なゲームを実行する親機の表示を省略することにより、子機のプレイヤが親機を選択し易くなる。
【0029】
請求項5のゲームカートリッジは図1で示すカートリッジ16に相当し、そのカートリッジ16はROM42内にゲームプログラムを記憶している。したがって、子機は基本的にはそのゲームプログラムを実行できるだけである。しかしながら、現在装着されているカートリッジが親機と通信不可能なものである場合であっても、他のカートリッジに交換すれば通信可能になるので、請求項5の発明によれば、現在通信できない親機も表示して、カートリッジの交換を促すことができる。
【0030】
請求項6のエントリ受付データは、実施例でいうところのEスロットの「ffh」以外のデータに相当し、したがって、子機は、親機パケットのEスロットに「ffh」以外のデータを設定している親機を、図3に示すよう、ステップS23またはS25(図20)で表示する。したがって、請求項6の発明によれば、新たな子機のエントリを受け付ける親機のみを表示することにより、無駄な親機情報(接続できない親機の情報)が省略され、子機のプレイヤが親機を選択し易くなる。
【0031】
請求項7の子機用プログラム記憶手段は実施例でいえば図16の領域76に相当し、この子機用プログラムは図19のステップS77(子機の受信処理は図26のステップS145)で親機から子機へ転送される。したがって、子機はその子機用プログラムを起動して、そのOCモードでのゲームをプレイすることができる。そこで、請求項7の発明では、子機用プログラム保持データ(実施例でいえば、OCフラグ)が「1」の親機を図5に示すように表示する。この請求項7の発明によれば、親機は自機用(親機用)プログラムだけでなく子機用プログラムを記憶し、子機にそのプログラムを送信して、子機はそのプ
ログラムを受信して実行するので、子機側にはゲームプログラムが必要ない。そして、子機は、そのようなOCモード対応ゲームをプレイできる親機を知ることができるので、カートリッジを装着していなくても、手軽にゲームをブレイすることができる。
【0032】
請求項8では、親機には図16に示すカートリッジ16が装着されていて、このカートリッジには第1プログラム(通常モードゲームプログラム)と、第2プログラム(OCモード用ゲームプログラム)との両方を記憶していて、親機パケットには、第1プログラムおよび第2プログラムのいずれを実行しているかを示す実行種類データ、実施例でいえばOCフラグが「1」または「0」で送信される。したがって、子機は、そのOCフラグが「1」の親機は自機と通信できるものだけを表示し、OCフラグが「0」の親機は自機のゲームに関係なくすべて表示する。請求項8の発明によれば、自機と通信可能であるか、または子機用プログラムを送信可能な状態(第2プログラムを実行中)である親機の情報だけを表示するので、無駄な親機情報(通信不可能な親機の情報など)が省略され、子機のプレイヤが親機を選択し易い。
【0033】
請求項9も請求項8と同様に、OCモード対応のゲームプログラムを保持している親機だけを表示する。したがって、請求項9の発明によれば、子機はゲームカートリッジが装着されていない場合には、子機用プログラムを送信することが可能な親機の情報のみ表示するので、子機のプレイヤが親機を選択し易い。
【0034】
請求項10では、親機リストが親機リスト記憶手段(実施例でいえば、図18の親機リスト領域80に相当する。)に基づいて表示される。そして、実施例のたとえば親機リストクリアタイマ82(図18)を用いて、その親機リストを定期的にクリアする。そのことによって、通信範囲外のものとなった親機を除外し、そのときの子機の通信可能範囲に存在する親機だけを確実にユーザないしプレイヤに知らせることができる。
【0035】
請求項11−請求項13も、請求項1と同様に、子機がそれの通信可能範囲に存在する親機を知ることができ、容易に、所望の親機を選択して接続することができるという利点がある。
【発明の効果】
【0036】
この発明によれば、親機が親機情報をブロードキャストしているため、子機は通信可能範囲にどのような親機が存在するのかを知ることができる(すなわち、通信ゲームをすることが可能な親機を知ることができる)。そして、子機は、いずれの親機と接続するか任意に決定することができる。
【0037】
無線通信ゲームの場合、携帯ゲーム装置を自由に持ち運ぶことができるので、無線通信可能な範囲にある携帯ゲーム装置は刻々と変化するが、この発明によれば、通信可能な範囲にある携帯ゲーム装置の情報を知ることができるので、無線通信ゲームをしたい相手を自由に決定することができる。
【0038】
また、見知らぬ他人の装置が通信可能範囲に入ってくることもあるが、その場合にも情報を得ることができるので、見知らぬ他人と無線通信ゲームを楽しむことも可能である。
【0039】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0040】
【図1】図1はこの発明の一実施例の無線送信ゲームシステムに用いられる携帯ゲーム装置の一例を示すブロック図である。
【図2】図2は図1実施例の携帯ゲーム装置を用いたゲームシステムの概略を説明するための図解図である。
【図3】図3は図2実施例において自機の周りのすべての親機の情報を表示する全表示フラグがオンされている場合の表示画面例を示す図解図である。
【図4】図4は図2実施例において、全表示フラグがオンされていない場合において、自機の周りに存在しかつ自機との間で通信ゲームが可能な親機だけを表示する表示画面例を示す図解図である。
【図5】図5は図2実施例において自機の周りに存在しかつOC(ワンカートリッジ)モードでゲームがプレイできる親機のみを表示する表示画面例を示す図解図である。
【図6】図6は図2実施例における或る状況での親機リストの表示画面例を示す図解図である。
【図7】図7は図2実施例において図6の状況でユーザ名「四郎」の携帯ゲーム装置が通信範囲に入ったときの親機リストの表示画面例を示す図解図である。
【図8】図8は図2実施例において図7の状況でユーザ名「一郎」の携帯ゲーム装置が通信範囲外に出たときの親機リストの表示画面例を示す図解図である。
【図9】図9は図2実施例において自機が親機でありかつ子機の接続(エントリ)を待っている状態の子機リストの表示画面例を示す図解図である。
【図10】図10は図2実施例におけるデータサイクルの一例を示す図解図である。
【図11】図11は図10実施例における親機スロットに送出される親機パケットの一例を示す図解図である。
【図12】図12は図11におけるUスロットを詳細に示す図解図である。
【図13】図13は図10実施例における子機スロットに送出される子機パケットの一例を示す図解図である。
【図14】図14は図1実施例の或る状況における通信データの具体例を示す図解図である。
【図15】図15はOCモードには対応しないカートリッジのメモリマップの一例を示す図解図である。
【図16】図16はOCモードに対応するカートリッジのメモリマップの一例を示す図解図である。
【図17】図17は図1実施例の無線通信ユニットに含まれるEEPROMのメモリマップの一例を示す図解図である。
【図18】図18は図1実施例において携帯ゲーム装置を構成する携帯ゲーム機の内部RAMのメモリマップの一例を示す図解図である。
【図19】図19は図1実施例の携帯ゲーム機の動作を示すメインフローの一部を示すフロー図である。
【図20】図20は図19の続きを示すフロー図である。
【図21】図21は図20の続きを示すフロー図である。
【図22】図22は図21の続きを示すフロー図である。
【図23】図23は図22の続きを示すフロー図である。
【図24】図24は図21の続きを示すフロー図である。
【図25】図25は図19の続きを示すフロー図である。
【図26】図26は図25の続きを示すフロー図である。
【図27】図27は親機の接続処理の動作の一部を示すフロー図である。
【図28】図28は図27の続きを示すフロー図である。
【図29】図29は親機の送受信処理の動作を示すフロー図である。
【図30】図30は子機の接続処理の動作の一部を示すフロー図である。
【図31】図31は図30の続きを示すフロー図である。
【図32】図32は子機の送受信処理の動作を示すフロー図である。
【図33】図33は子機の復帰処理の動作を示すフロー図である。
【図34】図34は自機を親機とするか子機とするかの選択を最初に行う実施例の要部を示すフロー図である。
【発明を実施するための形態】
【0041】
この発明が適用される無線通信ゲームシステムは、一例として、図1に示すような携帯ゲーム装置10を利用する。携帯ゲーム装置10は、この実施例では、たとえばゲームボーイアドバンス(GAMEBOY ADVANCE:商品名)のような携帯ゲーム機12と、その携帯ゲーム機12の通信コネクタ46に接続された無線通信ユニット14およびカートリッジコネクタ40に接続されたカートリッジ16を含む。つまり、この実施例においては、携帯ゲーム装置10は、携帯ゲーム機12,無線通信ユニット14およびカートリッジ16によって構成される。
【0042】
図1に示す携帯ゲーム機12は、プロセサ20を含み、このプロセサ20は、CPUコア22とそれに関連するブートROM24,LCDコントローラ26,WRAM(ワーキングRAM:以下同様)28,VRAM30および周辺回路32とを含む。ただし、周辺回路32は、音声(サウンド)回路、DMA(Direct Memory Access)回路、タイマ回路、入出力インタフェース(IO)などを含む。携帯ゲーム機12の前面に設けられたLCD18には、プロセサ20から表示信号、この実施例ではRGB信号が与えられ、したがって、LCD18ではゲーム画像がカラー表示される。そして、プロセサ20からは、サウンド回路34にオーディオ信号が与えられ、そのオーディオ信号によって、スピーカ36からゲーム音楽や効果音などの音声が出力される。また、携帯ゲーム機12の前面にLCD18を挟んで設けられる十字キーやスタートキー,セレクトキーおよびAボタンならびにBボタンがまとめて操作スイッチ38として示され、この操作スイッチ38からの操作信号がプロセサ20に入力される。したがって、プロセサ20は操作スイッチ38を通して与えられたユーザの指示に従った処理を実行する。
【0043】
携帯ゲーム機16はカートリッジコネクタ40を有し、このカートリッジコネクタ40には、カートリッジ16が接続または挿入される。カートリッジ16にはROM42およびバックアップRAM44が内蔵され、ROM42には携帯ゲーム機12で実行すべきゲームのためのゲームプログラムが、そのゲーム名とともに、予め設定されている。バックアップRAM44は、そのゲームの途中データやゲームの結果データを記憶する。
【0044】
携帯ゲーム機16にはさらに通信コネクタ46が設けられ、この通信コネクタ46には無線通信ユニット14のコネクタ48が接続される。なお、実施例で用いる携帯ゲーム機12は、一例としてゲームボーイアドバンス(商品名)であり、その場合、上述のカートリッジコネクタ40は、LCD18を前面(正面)としたときの上面奥側に設けられる32ピンコネクタであり、通信コネクタ46は上面手前側に設けられる6ピンコネクタである。
【0045】
無線通信ユニット14は、ベースバンドIC50を含み、このベースバンドIC50はROM52を含む。ROM52にはたとえばOCD(One−Cartridge Download)プログラムやその他のプログラムが内蔵され、ベースバンドIC50は、それらのプログラムに従って動作する。なお、ワンカートリッジダウンロードプログラムとは、OCモード(ワンカートリッジモード:親機にだけゲームカートリッジが装着されていて、子機はその親機カートリッジからの子機用プログラムのダウンロードを受けて動作するモード)において、子機へプログラムをダウンロードするためのプログラムである。
【0046】
無線通信ユニット14にはさらにEEPROM54が設けられ、このEEPROM54には、たとえば、ユーザ名が固有に設定される。ベースバンド(Base Band)IC50は、そのユーザ名を含んだデータを、RF(Radio Frequency)−
IC56に送出し、RF−IC56は、そのデータを変調して、アンテナ58から電波を送信する。ただし、その電波強度は、非常に微弱で、電波法の規制の対象とならない程度の小さい値に設定されている。また、この無線通信ユニット14には電源回路60が設けられている。この電源回路60は典型的には電池であり、無線通信ユニット14の各コンポーネントに直流電源を供給する。
【0047】
無線通信ユニット14では、また、他の携帯ゲーム装置から送信された電波をアンテナ58で受信してRF−IC56によって復調し、復調信号がベースバンドIC50に入力される。したがって、ベースバンドIC50は、復調信号をデコードして、データを復元し、そのデータをコネクタ48および46を介して携帯ゲーム機12すなわちWRAM28に転送する。
【0048】
この発明に従った実施例の無線通信ゲームシステムでは、複数台の図1に示すような携帯ゲーム装置10を利用する。図2の点線64は自機携帯ゲーム装置62の通信可能範囲を示している。そして、携帯ゲーム装置62は、通信可能範囲64に存在する携帯ゲーム装置に対してエントリできる可能性がある。この通信可能範囲64が上述の微弱電波によって親機と子機との間のデータ通信が可能な範囲であり、この通信可能範囲64の中に存在する複数の携帯ゲーム装置は、どれでもが、任意に、親機となりまたは子機となることができる。図示の例では、その範囲64の内に、4台の親機と3台の子機と、1台の自機62とが存在する。
【0049】
そして、自機62がゲームに参加する場合、親機か子機になる必要がある。自機が子機になる場合には、参加可能な親機を探す必要がある。親機を探すときに、自機がカートリッジを持っているかどうかによって、異なる親機を探す必要がある。
【0050】
まず、自機62が図1に示すカートリッジ16を装着した携帯ゲーム装置である場合であって、かつ自機62の周囲のすべての親機を表示することを示す全表示フラグ(後述)を「1」に設定しているときには、図1に示す携帯ゲーム機12のLCD18上に、図3で示すような親機リスト18Aが表示される。この図3の親機リスト18Aには、通信可能範囲64(図2)内に存在するすべての親機、すなわち、ユーザ名がそれぞれ「太郎」,「一郎」および「二郎」の3台の親機が表示される。したがって、自機のユーザは、自機を子機として動作または機能させたいとき、その自機を接続したい親機を、操作キー38(図1)に含まれる十字キーでカーソルを動かして指定した後同じく操作キー38に含まれるAボタンを押すことによって、選択することができる。
【0051】
ただし、自機を親機として使いたい場合には、ユーザは、操作キー38に含まれるBボタンを押せばよい。
【0052】
図2では範囲64内に4台の親機が存在するにも拘わらず、図3の親機リスト18Aでは3台の親機だけが表示されるのは、次の理由による。ユーザ名が「三郎」の親機はエントリスロットESlotが「ffh」に設定されている。このエントリスロットESlotは、新しい子機を希望するかどうかを示すフラグであり、このエントリスロットESlotが「ffh」に設定されているときは、その親機は子機の新規参加を拒否しているので、そのような親機は表示されないのである。ユーザ名「三郎」の親機は、エントリ可能な最大子機数に達しているため、新しい子機を希望していない。
【0053】
また、図3の親機リスト18Aでは、ユーザ名「二郎」の親機に丸印(O)が付加されている。この丸印(O)は、OCモードでのゲームがプレイ可能なことを示す。
【0054】
さらに、全表示フラグがオフの場合には、LCD18には図4に示す親機リスト18A
が表示される。この場合には、自機のゲームカートリッジ、たとえばマリオカート−1(Mario Kart−1)と通信できる親機、この例ではユーザ名が「太郎」である親機だけが表示される。なぜなら、ユーザ名「太郎」の親機にはマリオカート−2(Mario Kart−2)のカートリッジが装着されていて、Mario Kart−1とMario Kart−2とは相互に通信可能であるからである。なお、通信可能範囲64内に、マリオカート−1のカートリッジが装着されている親機があれば、その親機も当然表示される。
【0055】
上の例では自機(子機)にMario Kart−1のカートリッジが装着されているが、自機にカートリッジを装着せず、OCモードでゲームをプレイしたい場合には、LCD18には、たとえば図5に示す親機リスト18Aが表示される。この図5の親機リスト18Aでは、OCモードに対応できる親機、この例ではユーザ名「二郎」の親機だけが表示される(「F−ZERO」はOCモード対応のゲームである)。ただし、この場合には自機にはカートリッジが装着されていないので、自機は親機になれない。したがって、「自分が親機になりたいときはBボタンを押してください」という図3や図4に示すメッセージは表示されない。
【0056】
次に図6−図8を参照して、ユーザ名「四郎」の親機が図2に示す通信可能範囲64に入り、その後、ユーザ名「一郎」の親機がその範囲64の外へ出た場合の自機62の表示の変化について説明する。ユーザ名「四郎」の親機が範囲外にある場合には、図6に示すように、自機62のLCD18上には図3と同じ親機リスト18Aが表示される。
【0057】
その後、ユーザ名「四郎」の親機が範囲内に進入してきたときには、図7で示す親機リスト18Aが表示される。ただし、自機62の全表示フラグがオンされているものとする。つまり、ユーザ名「四郎」の親機が、ユーザ名がそれぞれ「太郎」,「一郎」および「二郎」である親機に加えて表示される。
【0058】
そして、さらにユーザ名「一郎」の親機が範囲64外へ脱したときには、図8の親機リスト18Aが表示される。この親機リストにはユーザ名「一郎」の親機は表示されない。
【0059】
さらに、自機が親機であってかつ新たな子機の参加を待っているときには、LCD18には、図9に示す子機リスト18Bが表示される。この子機リスト18Bをみると、現在、ユーザ名がそれぞれ「五郎」,「六郎」および「七郎」の子機が自機に接続していることがわかる。ここで、本実施例は親機と子機とが微弱電波によって無線通信をしながらゲームを進行させる無線通信ゲームシステムであるので、本来的には「接続」の用語を用いるべきではない。しかしながら、親機となる携帯ゲーム装置と子機となる携帯ゲーム装置との間での通信可能な連係状態を表す用語として、有線通信の場合の用語を借りて、便宜上「接続」と表現することとする。
【0060】
次に、接続状態にある親機と子機とが無線通信する場合のデータパケットフォーマットについて、図10−図14を参照して説明する。図10で示すように、1つのデータサイクルが2ミリ秒で、そのデータサイクルは、1つの親機スロットと複数(この実施例では4つ)の子機スロットとを含む。親機スロットでは図11に具体的に示す親機パケットがブロードキャスト(Broadcast:放送)され、4つの子機スロットでは、それぞれ、図13に具体的に示す子機パケットの親機への送信が行われる。
【0061】
親機パケットは、図11に示すように、同期データを格納しておくためのフィールドsyncをその先頭に有し、その同期データフィールドsyncに後続してその親機の番号(識別コード)PID格納するためのフィールドPIDを有する。そのフィールドPIDに続いて、ユーザ名フィールドUserNameおよびゲーム名フィールドGameNa
meが形成される。ユーザ名フィールドUserNameには、EEPROM54(図1)から読み出されたユーザ名、上の例でいえば「太郎」,「一郎」などが登録され、ゲーム名フィールドGameNameにはゲーム名、上の例でいえばMario Kart−1,Mario Kart−2,F−Zero,Golf,・・・が登録される。ただし、カートリッジ16(図1)を装着すれば、このゲーム名フィールドGameNameにはROM42(図1)から読み出されたゲーム名(図16の68)が自動的に登録され得る。
【0062】
親機パケットはさらに、フラグOCを含み、このフラグOCは、先に述べたワンカートリッジ(OC)モードに対応できるかどうかを示すフラグである。具体的には、このフラグOCがリセットされているとき、すなわちOC=0のときには、そのときの親機のゲームカートリッジはOCモードに非対応であること、あるいは、OCモードに対応できるが現在は通常モードでプレイしていることを示す。フラグOCがセットされているとき、すなわち、OC=1のとき、OCモードに対応できかつ現在そのOCモードでプレイしていることを示す。したがって、カートリッジを持たないユーザは、このフラグOCが「1」である親機を探す必要がある。
【0063】
フラグOCに続いて、親機パケットは、フィールドESlot,USlotおよびPayloadを順次含む。EスロットフィールドESlotは、エントリ(参加)可能な子機スロットの番号が格納される。つまり、新規参加子機が使用できるスロット番号が格納される。UスロットフィールドUSlotには、子機スロットの使用状況が格納される。具体的には、図12に示す。すなわち、UスロットフィールドUSlotは、4つの領域を含み、この4つの領域の各々が子機スロット0,子機スロット1,子機スロット2および子機スロット3に対応する。そして、それぞれの領域には、該当する子機スロットが割り当てられた子機の番号(識別コード)CIDが格納される。該当する領域に対応する子機番号CIDが登録されているときには、その子機スロットが使用されていることがわかる。
【0064】
ペイロードフィールドPayloadは、ゲーム処理において必要となるゲームデータを送信するためのフィールドであり、親機から子機へ送信されるゲームデータを格納するためのフィールドである。
【0065】
子機から、その子機に割り当てられた子機スロットに送出される子機パケットが図13に示される。すなわち、子機パケットは、子機番号CIDを格納または登録する先頭のフィールドCIDとそれに後続するペイロードフィールドPayloadとを含む。ペイロードフィールドPayloadは子機から親機へ送信されるゲームデータを格納するためのフィールドである。
【0066】
図14が具体例を示す。この図14の例では、親機番号フィールドPIDに「58」が格納されていて、したがって、親機番号PIDが「58」であることがわかる。そして、この親機のユーザ名は「太郎」であり、ゲーム名はMario Kartであり、フラグOCが「0」で、EスロットフィールドESlotには「2」が登録されていて、UスロットフィールドUslotを参照することにより子機スロット0には「16」の子機番号(CID)を持った子機が、子機スロット1には「130」を持った子機がそれぞれ接続されているが、子機スロット2および3はともに「0h」であるので空きスロットであることがわかる。
【0067】
このような状態の親機に対して新たな子機が接続(Entry)を試みる場合には、親機のUスロットフィールドUSlotを参照すると子機番号CIDとして「16」および「130」が使用されているので、それ以外の子機番号CIDをたとえば乱数を発生させ
ることによって決定する。一例として「86」が当該子機のCIDとして決定されたとする。したがって、その子機は、ESlotで指定される子機スロット(子機スロット2)にCID=86を送信する。
【0068】
そして、親機では、子機スロット2で「86」を受信することにより、子機番号CIDとして「86」を持つ子機がエントリしたい、ということを知る。そして、そのエントリを許可するかどうかを決定するわけであるが、許可する場合には、親機は、Uslotの子機スロット2に対応する領域に「86」を設定した図14の最下段に示す親機パケットをブロードキャストし、新たに「86」の子機番号CIDを持つ子機の参加を許可したことを知らしめる。同時に、新規参加した子機は、Uslotの子機スロット2に対応する領域に自己の子機番号としてCID=86があることを確認し、エントリが成功したことを判断できる。
【0069】
図15はOCモードに対応していないカートリッジのメモリマップを示し、図16はOCモードに対応できるカートリッジのメモリマップを示す。
【0070】
図15の実施例では、カートリッジ16に含まれるROM42(図1)は、ゲームプログラム領域62およびゲーム名領域64を含む。ゲームプログラム領域62には、共通プログラム66,親機プログラム68および子機プログラム70が予め格納される。共通プログラム66は、自機が親機であると子機であるとに拘わらず使用するプログラムである。すなわち、自機が親機の場合は共通プログラムと後述の親機プログラムが実行され、自機が子機の場合は共通プログラムと後述の子機プログラムが実行される。親機プログラム68は、自機が親機として機能するときにのみ作動するプログラムであり、変数MおよびNを含むとともに、「0」に設定された(つまりオフされた)フラグOCを含む。ただし、変数Mは、その親機に同時に接続可能な子機の最大数を示し、変数Nは1台の子機が使用できる最大スロット数を示す。これらの変数MおよびNは、ともに、ゲームに応じて変化することに留意されたい。子機プログラム70は、自機が子機として機能するときにのみ作動するプログラムであり、上述の変数Nを含む。ゲーム名領域64には、上記ゲームプログラムの名称、たとえばMario Kart−1,Golf,・・・などが予め格納される。
【0071】
図16の実施例でも、カートリッジ16のROM44は、ゲームプログラム領域62およびゲーム名領域64を含む。ゲームプログラム領域62には、図15と同じ共通プログラム66,親機プログラム68および子機プログラム70が設定されるとともに、OCモードに対応するためにOCモード用ゲームプログラム72が設定される。OCモード用ゲームプログラム72は親機プログラム74と転送用子機プログラム76とを含む。親機プログラム74は、フラグOCが「1」に設定されていることを除いて、先の親機プログラム68と同じである。転送用子機プログラム76は、OCモードでゲームプレイする子機へ転送するためのプログラムであり、変数Nを含む。OCモードでエントリする子機は、親機から転送(ダウンロード)されるこの転送用子機プログラム76を受けることによって、ゲームに参加できる。
【0072】
図17には図1に示す無線通信ユニット14のEEPROM54のメモリマップが示され、この図17に示すように、EEPROM54は、ユーザ名領域78を含み、このユーザ名領域78にユーザ名、上の例でいえば「太郎」,「一郎」・・・などが登録される。
【0073】
図18に示すメモリマップを参照すると、ゲーム機12のWRAM28(図1)は、親機リスト領域80,親機リストクリアタイマ82,子機リスト領域84,変数領域86および88,ゲーム変数領域90,送信バッファ領域92および受信バッファ領域94を含む。
【0074】
親機リスト領域80は、先に図3等で説明した親機リスト18Aを表示するためのデータ、たとえば親機番号(PID),ユーザ名(UserName),ゲーム名(GameName),フラグOC,EスロットフィールドESlotを一時的に記憶保持しておくための領域である。
【0075】
親機リストクリアタイマ82は、この親機リスト領域80のデータをクリアするまでの時間を計測するためのタイマであり、後述のように、このタイマ82がタイムアップすれば、親機リスト領域80は自動的にクリアされる。
【0076】
子機リスト領域84は、先に図9等で説明した子機リスト18Bを表示するためのデータ、たとえば子機番号(CID),ユーザ名(UserName)およびゲーム名(GameName)を一時的に記憶保持しておくための領域である。
【0077】
WRAM28はさらに、自機が親機として動作する(振舞う)ときに使用する変数をストアしておくための親機変数領域86および自機が子機として動作する(振舞う)ときに使用する変数をストアしておくための子機変数領域88を含む。
【0078】
親機変数領域86には、たとえば図11に示す各フィールドPID,USlotおよびESlotのためのデータや接続対象の子機の子機番号(CID)さらには、変数nおよびmが設定される。ここで、変数nは、1台の子機に現に実際に割り当てられているスロット数を示し、その最大数が先に説明した変数Nで与えられる。また、変数mは、1台の親機に現に実際に同時に接続されている子機数を示し、その最大数が上述の変数Mで与えられる。
【0079】
子機変数領域88には、たとえば図12に示すフィールドCIDのためのデータが設定されるとともに、接続結果を示す変数、復帰結果を示す変数、接続先の親機の親機番号(PID)、獲得したスロット番号(1つまたは複数)、同期タイマ、変数n、さらには、全表示フラグが設定される。
【0080】
ゲーム変数領域90はゲーム実行中のゲーム変数、たとえばクリアしたステージ数や獲得したアイテム等を示す変数をストアするための領域である。そして、送信バッファ92および受信バッファ94は、それぞれ、送信データおよび受信データを一時的にストアしておくための領域である。
【0081】
それぞれがこのような構成を有する2台以上の携帯ゲーム装置10がゲームシステムを構築するが、以下に、そのゲームシステムにおける各携帯ゲーム装置10の動作をフロー図を参照して説明する。
【0082】
詳細な説明に先立って、OCモードに対応できないカートリッジが自機に装着されている場合で、かつ、自機が親機になるときには、後述のステップS29(図21)−ステップS69(図23)の一連のステップを実行する。また、OCモードに対応できないカートリッジが自機に装着されている場合で、かつ、自機が子機となるときには、後述のステップS83−ステップS109(図24)の一連のステップを実行することになる。
【0083】
また、自機にOCモード対応可能なカートリッジが装着されてはいるが通常モード(OCモードではない)でゲームをプレイする場合には、自機を親機とするときには、ステップS29(図21)−ステップS69(図23)の一連のステップを実行し、自機を子機とするときには、上と同様に、ステップS83−ステップS109(図24)の一連のステップを実行することになる。
【0084】
さらに、自機にOCモード対応可能なカートリッジが装着されていて、OCモードでゲームをプレイする場合には、自機は親機としてしか機能できず、この場合には、ステップS75およびS77(図19)を経て、上述の親機の場合と同様に、図21に示すステップS29から図23に示すステップS69の一連のステップを実行する。
【0085】
そして、自機にカートリッジが装着されていない場合には、自機はOCモードでの子機にしかなれず、したがって、この場合には、ステップS111(図19)−ステップS147(図26)の一連のステップを実行することになる。
【0086】
図19は携帯ゲーム機12の動作を示す。携帯ゲーム機12の電源(図示せず)を投入すると図19の動作が開始され、最初は、ブート(Boot)ROM24内に設定された動作を実行する。つまり、最初のステップS1で、プロセサ20は、たとえばコネクタ40(図1)からの信号に基づいて、カートリッジ16が装着されているかどうかを検出する。そして、ステップS3でカートリッジがあると判断した場合には、カートリッジ16のROM42のプログラムに移行し、続くステップS5で、そのカートリッジがOCモードに対応可能なカートリッジかどうか判断する。このステップS5では、図15のカートリッジ(OCモードに対応不可能なカートリッジ)が装着されているか、図16のカートリッジ(OCモードに対応可能なカートリッジ)が装着されているかを判断する。
【0087】
ステップS5で“NO”が判断されたとき、すなわち自機にカートリッジは装着されているがそのカートリッジがOCモード対応カートリッジではないとき、図20のステップS7に進み、図18に示す親機リスト領域80をクリアするとともに、同じく図18に示す親機リストクリアタイマ82をリセットし、さらには図18の子機変数領域88に設定されている全表示フラグをオン(「1」を設定)する。なお、親機リストクリアタイマ82はリセット後自動的にタイマのカウントを開始する。
【0088】
その後、ステップS9において、図11で示すような親機パケットの受信を試みる。ステップS11で、親機パケットを成功裏に受信したかどうか判断する。そして、ステップS11で“YES”を判断したとき、続くステップS13において、その親機パケットをブロードキャストした親機は、親機リストに存在しない親機かどうか判断する。具体的には、このステップS13では、受信した親機パケットのデータ(図18に示すWRAM28の受信バッファ94に一時的にストアされているデータ)のうちの親機PIDやユーザ名が、親機リスト80(図18)に登録されている親機かどうか判断する。このステップS13で“YES”が判断されると、つまり、新規な親機の場合には、続くステップS15において、プロセサ20は、親機リスト80に、親機パケットに含まれた親機ID(PID),ユーザ名(UserName),ゲーム名(GameName),OCフラグ(OC)およびエントリスロット(ESlot)を新たに登録する。
【0089】
先のステップS11で“NO”を判断したとき、またはステップS15での登録を終えたとき、次のステップS17で、先のステップS7でリセットした親機リストクリアタイマ82(図18)の値が2秒以上になったかどうか判断する。“YES”なら、ステップS19で親機リスト80をクリアするとともに、親機リストクリアタイマ82をリセットする。ここで、親機リストクリアタイマ82をリセットするのは次の理由による。すなわち、図8を参照して前述したようにある親機(図8の「一郎」)が通信可能範囲から外れた場合に、その親機を親機リスト80から削除しなければならない。そのため、定期的に(この実施例では2秒ごとに)、親機リスト80をクリアして通信可能範囲の親機のリストへの登録を最初からおこなうことによって、通信可能範囲から外れた親機が親機リストに残らないようにしているのである。ステップS17で“NO”を判断したとき、またはステップS19を経た後、次のステップS21において、プロセサ20は、上述の全表示
フラグがオン(「1」)かどうか判断する。なお、実施例では、この全表示フラグは、デフォルトとして、「1」またはオンに設定されている。全表示フラグがオンのとき、ステップS23で、親機リストに登録されている親機のうち、エントリスロットESlotが「ffh」でない親機、つまり、新たな子機のエントリを許容するすべて親機の情報(具体的には、ユーザ名UserNameおよびゲーム名GameName)を図3に示すように表示する。全表示フラグがオフ(「0」)のときには、ステップS25において、親機リストに登録されている親機のうち、エントリスロットESlotが「ffh」でなくしかも通信可能な(すなわち、親機のカートリッジのゲームと子機のカートリッジのゲームが所定の関係にあり通信可能な)親機の情報(ユーザ名UserNameおよびゲーム名GameName)を図4に示すように表示する。
【0090】
その後、図21のステップS27に進み、プロセサ20は、操作キー38からの信号を参照して、Bボタン(図示せず)が押されたかどうか判断する。Bボタンが押されたということは、その携帯ゲーム装置のユーザが、自機を親機として振舞わせることを決めたことを意味し、その場合には、変数MおよびNの範囲内で子機を募集するために、ステップS29の親機接続処理を実行する。ただし、1台の子機に与えられる最大スロット数を示す変数Nおよび最大参加可能子機数を示す変数Mは、それぞれ、ゲームによって変更可能である。たとえば、最大参加子機数Mを大きくするためには最大スロット数Nを小さくし、データレートを重視するなら最大スロット数Nを大きくし最大参加子機数Mを小さくすればよい。
【0091】
ここで、図27および図28を参照して、子機募集のためのステップS29における親機の接続処理について、詳細に説明する。図27の最初のステップS1001では、プロセサ20は、図18に示す子機リスト領域84をクリアするとともに、初期画面を表示させる。このステップS1001は初期設定ステップであり、上の処理に加えて、さらに、1つの子機の対して割り当てるサブタイムスロットの最大数(N)を設定するとともに、エントリを許可する子機の最大数(M)を設定する。ただし、これら最大数NおよびMは、それぞれ、実行すべきゲームプログラムに応じて決定できる。このように、1つの子機に対して割り当てるサブタイムスロットの最大数Nや同時参加可能な子機の最大数Mをゲームに応じて決定するようにすれば、一定のサブタイムスロット数の中で、1つの子機に対して割り当てる個数を少なくして参加可能な子機の数を多くするか、または、1つの子機に対して割り当てる個数を多くしてデータレートを大きくするかのいずれかをゲームの内容に応じて決定することができる。たとえば、多くのプレイヤが参加する方が面白いゲームの場合にはスロット数Nを小さくし参加子機数Mを大きくし、通信量が多いゲームの場合はスロット数Nを大きくし参加子機数Mを小さくすればよい。
【0092】
続くステップS1003では、プロセサ20は、親機変数領域86(図18)の親機PIDを設定するための領域PIDに擬似ランダム値を書き込む。そして、次のステップS1005において、領域86内の、親機(自機)に実際に接続している子機の数を示す変数mをゼロ(0)とし、続くステップS1007で、接続対象子機の番号を示す接続対象CIDの領域に「Null」を設定するとともに、領域86内の、現在接続処理中の子機に実際に付与しているスロット数を示す変数nにゼロ(0)を書き込む。なお、接続対象CIDとは、現在接続処理中の子機のCIDのことであり、エントリ処理において1つの子機に複数のスロットを付与する場合に、ある子機に対するスロットの付与を複数回連続しておこなうために、ある子機に対するスロットの付与が開始されたら、接続対象CID以外のCIDの子機からのエントリ要求を無視するためのものである。次のステップS1009において、領域86内の、エントリスロット領域ESlotに、空いているスロット番号のうちの1つを割り当てる。
【0093】
その後、ステップS1011において、プロセサ20は、操作キー38(図1)からの
信号を検証して、Aボタン(図示せず)が押されたかどうか判断する。ステップS1011で“YES”なら、そのとき自機(親機)のユーザがその子機のエントリを拒否したことを意味するので(図9参照)、続くステップS1013において、プロセサ20は、図18の子機リスト領域84から、その選択された子機のデータ、USlotおよびCIDを削除する。その後、ステップS1015で、図9に示すように新たな子機リスト18Bを表示させる。
【0094】
そして、ステップS1011で“NO”が判断されたときには、すなわち親機のユーザがAボタンを押さなかったとき、またはステップS1015を実行した後には、ステップS1017において、プロセサ20は、操作キー38からの信号に基づいて、スタートキー(図示せず)が操作されたかどうか判断する。“YES”なら、そのままリターンする。しかしながら、“NO”なら、続くステップS1021において、図29に詳細に示す親機の送受信処理を実行する。
【0095】
図27のステップS1019で示す親機の送受信処理が、図29に詳細に示される。図29のステップS2001では、プロセサ20は、送信バッファ92(図18)に未送信データがあるかどうか判断する。“YES”なら、次のステップS2003において、図14の親機スロットに必要なデータ、たとえばPID,ユーザ名,ゲーム名,OCフラグ,Eスロット,Uスロットおよび、上記未送信データであるペイロードを送信する。そして、次のステップS2005で子機パケットを受信した後、リターンする。
【0096】
先のステップS2001で“NO”が判断されたときには、次のステップS2007で、プロセサ20は、過去64ミリ秒の間データ送信をしなかったかどうか判断する。なお、この「64ミリ秒」という時間は、タイマずれを解消できる数値の一例であり、当然この数値に限られるものではない。
【0097】
ステップS2007で“YES”を判断したときには、ステップS2009で、親機スロットを用いて、ペイロードを除く各データ、たとえばPID,ユーザ名,ゲーム名,OCフラグ,EスロットおよびUスロットを送信する。このステップS2009は子機からのエントリを可能にするために必要なステップであり、ペイロード(送信すべきデータ)がなくても、エントリ処理に必要なデータ(PID,ユーザー名,ゲーム名,OCフラグ,Eスロット,Uスロット)を定期的に送信しているため、子機は常にエントリ処理できるのである。このステップS2009では、ペイロードデータは送信しない。そして、ステップS2009の終了後、またはステップS2007で“NO”が判断されたとき、先のステップS2005を経てリターンする。
【0098】
図27に戻って、ステップS1019に続くステップS1021で、プロセサ20は、図11に示す親機パケットのフィールドESlotで指定したスロットで、子機番号CIDを受信できたかどうか判断する(すなわち、子機がエントリスロットを使用してエントリ要求をしてきたかどうかを判断する)。このステップS1021で“NO”の場合、先のステップS1011に戻り、“YES”の場合、次のステップS1023で、図18の子機変数領域86の接続対象子機CIDがNullかどうか判断する(すなわち、現在エントリ処理中の他の子機があるか否かを判断する)。“YES”なら、つまり、接続対象子機番号(CID)が登録されていなければ、ステップS1025で、ステップS1019で受信した子機CIDを接続対象子機番号(CID)として、図18の領域86内の接続対象子機CIDに登録する。
【0099】
先のステップS1023で“NO”のとき、またはステップS1025を終えたとき、ステップS1027において、プロセサ20は、受信したCIDが接続対象CIDと同じかどうか判断する(すなわち、受信したCIDが現在エントリ処理中の子機のCIDか否
かを判断する)。“NO”なら先のステップS1011に戻るが、“YES”なら次のステップS1029で、図18の領域86内のUスロット領域USlotのエントリスロットを示す部分に、そのCIDを格納する。そして、ステップS1031で、実接続スロット数nをインクリメント(+1)し、ステップS1033で、n=Nかどうか、すなわち、実接続スロット数nが1台の子機に与える最大スロット数N(ゲーム毎に異なる)に達したかどうかを判断する。“YES”なら、その子機に対してそれ以上のスロットの付与は許容できないので、図28で示す次のステップS1035に進む。しかしながら、“NO”なら、その子機に対してさらにスロットを付与することが可能なので、ステップS1009に戻る。
【0100】
実付与スロット数nが最大付与可能スロット数Nに達したときには、その子機に対するエントリ処理を終了して、図28のステップS1035に進むが、このステップS1035では、親機となった携帯ゲーム機のプロセサ20は、エントリ処理が終了した子機のユーザ名、およびゲーム名等を受信する。この子機のユーザ名およびゲーム名がステップS1037において、子機リストに追加され、ステップS1039において、子機リスト18Bが、図9に示すように表示される。
【0101】
その後、親機のプロセサ20は、ステップS1041において、実接続子機数mをインクリメント(+1)し、ステップS1043において、その実接続子機数mが最大接続可能子機数M(ゲーム毎に異なる)と等しくなったかどうかを判断する。このステップS1043で“YES”が判断されると、つまり、それ以上子機を接続できないと判断したときには、そのままリターンする。
【0102】
逆に、1台以上の子機が未だ接続可能な場合、すなわちステップS1043で“NO”が判断された場合には、図27のステップS1007に戻る。
【0103】
このようにして、図21のステップS29での接続処理が実行され、さらに、図22のステップS31において、子機の募集を一旦打ち切り、他の子機の参加を禁止するために、エントリスロットESlotに「ffh」を書き込む。そして、ゲーム中に必要に応じて、子機を追加募集できるように、図18の領域86内の接続対象CIDをNull,実接続スロット数n=0としておく。
【0104】
その後、ステップS33においてゲームスタートかどうか、つまり、操作キー38に含まれるスタートボタン(図示せず)が押されたかどうか判断する。スタートボタンが押されると、次のステップS35において、プロセサ20は、図18に示す親機変数領域86のUスロット領域USlotを参照して、現に接続中の子機の数「m」を検出する。Uスロットの各領域のうち「0h」でない領域の数が現に接続中の子機の数mである。そして、ステップS37で、接続中の子機数mが最大接続可能数Mより小さいかどうか判断する。このステップS37で“YES”が判断されるということは、新規子機のエントリを許容できることを意味していて、したがって、この場合には、次のステップS39において、親機変数領域86のEスロット領域ESlotに、空いているスロット番号(Uスロットのうち「0h」である領域に対応するスロット番号)の1つを設定する。これによって、領域ESlotの「ffh」の状態設定が解除される。
【0105】
そして、ステップS41において、先に図29を参照して説明した親機の送受信処理を実行することによって、図11に示す親機パケットをブロードキャスト(送信)するとともに、各子機からの図13に示す子機データ(パケット)を受信する。
【0106】
その後、ステップS43において、プロセサ20は、一定時間t1以上、或る子機のデータを受信できなかったかどうか判断する。このステップS43で“YES”が判断され
るということは、該当の子機が既に通信可能範囲64(図2)を離脱した可能性があることを意味し、その場合には、ステップS45において、プロセサ20は、該当の子機の子機番号CIDを親機変数領域86(図18)のUスロット領域USlotから削除する。この処理によって、離脱した子機が使用していた子機スロットが空きスロットになるので、離脱した子機の代わりに新たな子機のエントリが可能になる。
【0107】
ステップS43で“NO”が判断されたとき、またはステップS45を終えたとき、次のステップS47において、プロセサ20は、親機変数領域86のEスロット領域ESlotに「ffh」が設定されているかどうか判断する。“YES”なら、次のステップS49で、プロセサ20は、カートリッジ16のゲームプログラム62(図15)に従って、ゲーム処理を実行する。
【0108】
図22のステップS47で“NO”が判断されたときには、子機の途中参加を許容するために、プロセスは図23のステップS51に進む。このステップS51では、親機のプロセサ20は、EスロットフィールドESlotで指定したスロットで子機CIDを受信できたかどうか判断する。“YES”なら、次のステップS53において、図18の領域86内の接続対象CIDの領域に「Null」が書き込まれているかかどうか判断する。“YES”なら、つまり、接続対象子機のCIDが登録されていなければ、ステップS55で、Eスロットで指定したスロットで受信した子機CIDを接続対象CIDの領域に登録する。
【0109】
先のステップS53で“NO”のとき、またはステップS55を終えたとき、ステップS57において、プロセサ20は、受信した子機番号CIDが接続対象CIDと同じかどうか判断する。“YES”なら次のステップS59で、図18の領域86のUスロット領域USlotのエントリスロットを示す部分に、その子機番号CIDを格納する。そして、ステップS61で、実接続スロット数nをインクリメント(+1)し、ステップS63で、n=Nかどうか、すなわち、実接続スロット数nが1台の子機に与える最大スロット数Nに達したかどうかを判断する。“YES”なら、その子機にそれ以上のスロット付与は許容できないのでその子機に対するスロット付与を終了し、ステップS65で、領域86内の、接続対象CIDの領域に「Null」を設定するとともに、変数nにゼロ(0)を書き込む。
【0110】
その後、親機のプロセサ20は、ステップS67において、実接続子機数mが最大接続可能子機数Mと等しくなったかどうかを判断する。このステップS67で“YES”が判断されると、つまり、それ以上子機を接続できないと判断したときには、ステップS69において、Eスロット領域ESlotに「ffh」を書き込む。
【0111】
なお、ステップS69の後、または、ステップS51,S57,S63もしくはS67においてそれぞれ“NO”が判断されたときには、いずれの場合にも子機の途中参加処理をやめてゲーム処理に戻る(図22のステップS49に戻る)。
【0112】
以上が、自機にOCモード対応でないカートリッジが装着されている場合で、かつ自機が親機になる場合の携帯ゲーム装置の処理である。
【0113】
次に、自機にOCモード対応のカートリッジが装着されている場合の携帯ゲーム装置の処理を説明する。
【0114】
図19のステップS5において“YES”が判断されたとき、すなわち、自機に図16に示すOCモード対応のカートリッジを装着している場合には、次のステップS71で、プロセサ20は、モード選択画面(図示せず)を表示する。そして、ステップS73にお
いて、通常モードが選択されたかどうか判断する。“YES”なら、先のステップS5で“NO”を判断したときと同様に、図20のステップS7に進む。すなわち、OCモード対応でないカートリッジを装着している場合の処理と、OCモード対応のカートリッジを装着しているが通常モードを選択した場合の処理は同じである。
【0115】
自機にOCモード対応のカートリッジが装着されていてかつOCモードのゲームをプレイする場合には、自機は親機にしかなれない。詳しく述べると、ステップS73で“NO”なら、すなわち、OCモードが選択された場合には、次のステップS75において、先のステップS29(図21)と同様に、図27,図28を参照して詳しく説明した親機の接続処理を実行する。ただし、このときには、1台の子機の使用可能スロット数Nは「1」とし(N=1)、最大接続可能台数Mとしては、ゲームで許容されている数を設定する。その後、ステップS77で、プロセサ20は、図16に示す転送用子機プログラム76を子機に転送(ダウンロード)する。その後、図22のステップS31に進み、前述と同様にそれぞれ以降の各ステップを実行する。
【0116】
以上が、自機にOCモード対応のカートリッジが装着されている場合の携帯ゲーム装置の処理である。
【0117】
次に、自機にOCモード対応でないカートリッジが装着されている場合で、かつ自機が子機になる場合の携帯ゲーム装置の処理を説明する。
【0118】
図21のステップS27で“NO”が判断されたときには、つまり自機が親機になるという選択をしなかったときには、続くステップS79において、携帯ゲーム機12のプロセサ20は、操作キー38からの操作信号を検証して、Aボタン(図示せず)が操作されたかどうか、つまり、接続を希望する親機を選択したかどうかを判断する。このステップS79で“YES”を判断ときには、プロセサ20は、続いて、ステップS81において、当該選択した親機との間で通信可能かどうかを判断する。すなわち、親機のカートリッジと自機のカートリッジが所定の関係にあって通信可能かどうかを判断する。通信可能なときには、その後、図24のステップS83に進み、子機の接続処理を実行する。この子機の接続処理は、詳しくは、図30および図31に示される。
【0119】
図30の最初のステップS3001では、子機となった携帯ゲーム機のプロセサ20が、親機パケット(図11)の受信を試みる。そして、次のステップS3003において、メニュー画面(図3等)で選択した親機の、フレーム同期データsyncを受信できたかどうか判断する。具体的には、メニュー画面で選択した親機のPIDを含む親機パケットの同期データsyncを受信できたかどうか判断する。
【0120】
ステップS3003で“NO”が判断されたとき、つまり、選択した親機の親機パケットが受信できなかった場合には、ステップS3005において、タイムアウト(時間切れ)かどうか判断し、このステップS3005で“NO”なら先のステップS3001に戻るが、“YES”なら、ステップS3007で接続結果変数(図18の領域88内の)に「失敗」を書き込んでリターンする。
【0121】
ステップS3003で“YES”が判断されたとき、つまり、対象としている親機の同期信号を受信できたときには、ステップS3009で、子機のプロセサ20は、同期タイマ(領域88)をリセットし、次のステップS3011に進む。このステップS3011では、プロセサ20は、擬似ランダム値を子機のID番号CIDとする。そして、ステップS3013において、このときのCIDを持った子機が既に存在するかどうか判断する。すなわち、受信した親機パケットのUスロットを参照して、同一のCIDが既に存在するかどうか、判断する。ステップS3013で“YES”の場合には一旦付与した番号を
変更する必要があり、したがって、この場合には、ステップS3011を再度実行し、新たな番号CIDを付与して、ステップS3013での検証を再度実行する。
【0122】
ステップS3013で“NO”が得られるまでこれらステップS3011およびS3013が繰り返され、“NO”が得られたとき、次のステップS3015に進む。ステップS3015では、実付与スロット数nをゼロ(0)とし、さらに、次のステップS3017で、親機パケットを受信するとともに、ステップS3019において、同期タイマを再度リセットする。そして、ステップS3021において、プロセサ20は、受信した親機パケットのEスロットESlot(図11参照)が「ffh」であるかどうか判断する。このステップS3021で“YES”が判断されると、子機のエントリは禁止されているので、先のステップS3007を経て、「失敗」としてリターンする。
【0123】
ステップS3021で“NO”が判断されたときには、子機のエントリは禁止されてはいないので、図31のステップS3023に進む。ステップS3023では、子機のCPUコアは、そのときの親機パケットのEスロットフィールドESlotで示されるスロットにステップS3011で得た番号CIDを送信する。そして、次のステップS3025において親機パケットを受信するとともに、ステップS3027において同期タイマを再度リセットする。
【0124】
そして、続くステップS3029において、子機のプロセサ20は、受信した親機パケットのUスロットフィールドのエントリスロット位置に自身の番号(CID)があるかどうか確認する。そして、このステップS3029で“NO”を判断すると、次のステップS3031で、プロセサ20は、タイムアウトかどうか判断する。タイムアウトではない場合には、先のステップS3017(図30)に戻るが、タイムアウトを生じた場合には、図30のステップS3007において「失敗」を接続結果変数に書き込んだ後にリターンする。
【0125】
ステップS3029で“YES”が判断されたとき、つまり、受信した親機パケットのUスロットのエントリスロット位置に自身の番号(CID)があったときには、続くステップS3033において実付与スロット数nをインクリメント(+1)した後、ステップS3035において、実付与スロット数nが1台の子機に付与できる最大スロット数N(ただし、このNは、ゲームによって変化し、たとえば1−4の値である。)と等しくなったかどうか判断する。このステップS3035で“NO”が判断されるときには、つまり、スロットが未だ付与できるときには、先のステップS3025に戻って親機パケットを受信する。
【0126】
しかしながら、ステップS3035で“YES”が判断されると、可能な数のスロットがすべて割り付けられたものとして、次のステップS3037において、接続結果変数に「成功」を登録し、次のステップS3039に進む。このステップS3039では、接続した親機の親機番号PIDおよび獲得したスロット番号を自身の内部RAM28(図18)の領域88に格納する。ただし、スロット数は複数の場合もあり、この実施例では「0」−「3」のいずれかの数値である。そして、その後図24のステップS85にリターンする。
【0127】
そのステップS85では、領域88の接続結果変数を参照して、接続結果が「成功」かどうか判断する。そして、“NO”の場合には、次のステップS87において、メッセージたとえば「接続できませんでした」を子機のLCD18(図1)に表示して図20のステップS7に戻る。
【0128】
親機への接続成功の場合には、次のステップS89において、子機のプロセサ20は、
親機に対して、自身に付与された子機スロットを利用して、自身のユーザ名およびゲーム名を送信する。そして、ステップS91において、ゲームスタートかどうか、すなわち、操作キー38に含まれるスタートボタンが押されたかどうか判断する。このステップS91でスタートボタンのオンが検出されると、次のステップS93において、子機の送受信処理を実行する。
【0129】
図24のステップS93で示す子機の送受信処理が、図32に詳細に示される。図32のステップS4001で親機パケットを受信し、次のステップS4003で同期タイマ(図18)をリセットする。そして、ステップS4005では、子機のプロセサ20は、送信バッファ92(図18)に未送信データがあるかどうか判断する。“YES”なら、次のステップS4007において、既に割り付けられている子機スロットを用いて、必要なデータ、たとえばCIDおよびペイロードを送信する。そして、未送信データがない場合、またはステップS4007の後、プロセスは、図24のステップS95にリターンする。
【0130】
再び図24に戻って、ステップS95では、子機のプロセサ20は、時間t2以上の間にわたって親機からのデータを受信できなかったかどうか判断する。この時間t2は、先の図22のステップS43での時間t1より短い。すなわち、t1>t2である。なぜなら、t1は親機が通信異常の子機を切断する時間であり、t2は子機が復帰処理を開始する時間であるので、親機は子機の復帰処理を待ってから切断する必要があるためである。“NO”の場合には、さらに次のステップS97で、受信した親機パケットのUスロットフィールドに自身の番号CIDが含まれているかどうか判断する。ステップS97で“YES”の場合には、ステップS99において、図22のゲーム処理を実行する。ただし、ステップS97で“NO”が判断されたときは、すなわち、親機パケットのUスロットフィールドに自機の番号がない場合には、ステップS101において、メッセージたとえば「親機から切断されました」をLCDに表示し、図20のステップS7に戻る。
【0131】
先のステップS95で“YES”が判断されたときには、つまり、一定時間t2以上にわたって親機からのデータを受信できなかったときには、ステップS103においてメッセージたとえば「親機と通信できなくなりました。復帰を試みます」を表示した後、ステップS105で、復帰処理を実行する。
【0132】
この復帰処理の詳細が図33に示されていて、この図33の最初のステップS5001では、子機のプロセサ20は、復帰すべき親機パケットの受信を試みる。そして、ステップS5003では、その親機からのブロードキャストデータを受信できたかどうか判断する。ただし、自分が復帰すべき親機かどうかは、図18の領域88に登録されている「接続先のPID」をみればわかる。
【0133】
ステップS5003で“NO”が判断されたとき、つまり、復帰すべき親機パケットのデータを受信できなかったとき、次のステップS5005で、タイムアウトになったかどうか判断する。そして、“NO”なら、先のステップS5003に戻るが、タイムアウトになってしまったら、次のステップS5007で、図18に示す領域88に含まれる復帰結果変数に「失敗」を書き込み、リターンする。
【0134】
先のステップS5003で“YES”が判断されたとき、すなわち、対象としている親機からの親機パケットを受信できたときには、次のステップS5009で同期タイマをリセットし、さらに、ステップS5011で親機パケットを受信する。そして、ステップS5013において、その親機パケットのUスロットフィールドに自身の番号CIDがあるかどうか判断する。受信した親機パケットに自機の番号があるということは、時間t2以上にわたる通信不能状態の原因は、親機による意図的な切断ではないということであり、
したがって、次のステップS5015において、領域88(図18)の復帰結果変数に「成功」を登録してリターンする。このように復帰処理をすることによって、例えば、親機と子機が誤って通信可能範囲を外れた場合や、通信状態が悪くて通信ができなかった場合、または、子機を操作しているプレイヤに用事ができて、その子機プレイヤが少しの間通信可能範囲を外れる必要がある場合等に、それらの要因が解消されて通信が可能になった後に、以前の通信状態に復帰することが可能になる。
【0135】
ただし、ステップS5003で“YES”になってもステップS5013で“NO”が判断されたときには、通信不能が親機の意思による切断が原因であったものとして、先のステップS5007を経て、リターンする。
【0136】
図33のサブルーチンから図24のステップS107にリターンすると、このステップS107では、領域88の復帰結果変数を参照して、復帰が「成功」したかどうか判断する。“YES”なら、ステップS99に進んでゲーム処理を実行する。しかしながら、“NO”なら、ステップS109でメッセージたとえば「復帰できませんでした」を表示した後、図20のステップS7に戻る。
【0137】
以上が、自機にOCモード対応でないカートリッジが装着されている場合で、かつ自機が子機になる場合の携帯ゲーム装置の処理である。
【0138】
次に、自機にカートリッジが装着されていない場合の携帯ゲーム装置の処理を説明する。ただし、この場合には、自機は、OCモード対応のゲームの子機として動作できるだけである。
【0139】
図19に戻って、ステップS3で“NO”が判断されたとき、すなわちその子機にカートリッジがないことを検出した場合は、ブートROM(図1の24)のプログラムであるステップS111において、無線通信ユニット14(図1)のROM52に設定されているOCDプログラム(親機から子機用プログラムをダウンロードするためのプログラム)を携帯ゲーム機12のプロセサ20に含まれるWRAM28に展開し、その後ステップS113において、子機のプロセサ20は、そのWRAM28上に展開されたOCDプログラムを起動する。
【0140】
その後、図25のステップS115において、子機のプロセサ20は、図18に示すような親機リスト領域80をクリアするとともに、親機リストクリアタイマ82をリセットする。ついで、ステップS117において、親機パケットの受信を試みる。そして、ステップS119において、親機パケットの受信が成功したかどうか判断し、“NO”ならステップS125に進み、“YES”なら、ステップS121に進む。ステップS121では、受信した親機パケットに含まれる親機番号PIDと図18に示す親機リスト領域80に登録されている番号PIDとを比較して、その親機パケットを送信した親機が親機リスト内に存在しないかどうか判断する。このステップS121で“YES”が判断されると、ステップS123において、親機リストに新たな親機を登録するように、親機パケットから読み出された、親機番号PID,ユーザ名,ゲーム名,OCフラグおよびEスロットを親機リスト領域80に追加する。その後ステップS125に進む。
【0141】
ステップS125では、ステップS115でリセットした親機リストクリアタイマ82の値が「2秒」以上になったかどうか判断する。“YES”なら、ステップS127で親機リストすなわち親機リスト領域80をクリアするとともに、親機リストクリアタイマ82をリセットする。その後、ステップS125で“NO”を判断した場合と同様に、ステップS127に進む。
【0142】
ステップS127では、親機リストの内、「Eスロットが「ffh」でなくかつOCフラグが「1」である親機、つまり、OCモードでのゲームがプレイできかつ子機の参加(エントリ)を拒否していない親機の情報(ユーザ名,ゲーム名)を表示する。それによって、当該子機のユーザに対して図5に示すような親機リスト18Aを作成し、自機が接続したい親機を選択させる。そして、ステップS131で、Aボタン(図示せず)が操作されたかどうか判断する。つまり、どれか1つの親機が選択されたかどうか判断する。ステップS127で“NO”なら、つまり親機を選択しなかったら、次のステップS133で、操作キー38に含まれる十字キー(図示せず)が操作されたかどうか判断する。十字キーの操作は、エントリを希望する親機の選択のためにカーソルを移動させるためであり、したがって、このステップS133で“YES”なら、次のステップS135でカーソルを移動させ、ステップS113に戻る。
【0143】
ステップS131で“YES”が判断されると、ステップS139に進んで子機の接続処理(図30,図31)を実行する。
【0144】
ステップS137で、既に詳細に説明した方法に従って、子機の接続処理を実行し、次のステップS139で、図18の領域88の接続結果変数を参照して、接続が成功したかどうか判断する。“NO”なら、ステップS141でメッセージたとえば「接続できませんでした」を表示して、ステップS111に戻る。
【0145】
ステップS139で“YES”が判断されると、プロセサ20は、当該子機と成功裏に接続された親機に対して、自機のユーザ名,ゲーム名を送信する。その後、図26のステップS145に進み、OCモードでゲームをプレイするために、転送用子機プログラムを親機から受信して自機のRAM28(図1)内に展開するとともに、そのプログラムを起動させる。そして、その後は、ステップS147において、先に説明した図24ステップS91−S109と同様の各ステップを実行する。
【0146】
以上が、自機にカートリッジが装着されていない場合の携帯ゲーム装置の処理である。
【0147】
なお、図21のステップS81で“NO”が判断されたとき、すなわち、親機の選択を試みたが通信できなかったときには、ステップS149において、メッセージたとえば「その親機は選択できません」を表示して図20のステップS9に戻る。
【0148】
また、図21のステップS79で“NO”が判断されたとき、つまり、BボタンもAボタンも操作されなかったときには、次のステップS151において、十字キー(図示せず)が操作されたかどうか、判断する。“NO”なら、次のステップS153で、さらにスタートキー(図示せず)が操作されたかどうか判断する。セレクトキーが操作されていないときは、図20のステップS9に戻る。ステップS153で“YES”が判断されたときには、ステップS153で、全表示フラグのオン/オフを切替えた後、同様にステップS9に戻る(すなわち、セレクトキーは全表示フラグのオン/オフの制御に使用される)。ただし、ステップS151で“YES”が判断されたときには、その十字キーの指示に従ってカーソルを移動させた後、ステップS9に戻る。
【0149】
なお、上述の実施例では、プログラムの進行に合わせて自機を親機とするか子機とするかを選択するようにした。しかしながら、直ちにこのような選択をするようにしてもよい。この場合には、図34に示すように、スタート直後の最初のステップS201で親機または子機の選択画面(図示せず)を表示し、その表示に従ってユーザが親機または子機を選択する。したがって、プロセサ20は、次のステップS203で、ユーザが親機を選択したかどうか判断する。ステップS203で“YES”の場合には、それ以後、先の図21のステップS29以降のステップを実行する。“NO”の場合、すなわち子機を選択し
たときには、図21に示すステップS7−S25,S79,S151−S157,およびS81−S109を実行する。
【符号の説明】
【0150】
10・・・携帯ゲーム装置
12・・・携帯ゲーム機
14・・・無線通信ユニット
16・・・カートリッジ
18・・・LCD
20・・・プロセサ
22・・・CPUコア
24・・・ブートROM
28・・・WRAM
38・・・操作キー
42・・・ROM
54・・・EEPROM
【特許請求の範囲】
【請求項1】
互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムであって、前記親機は、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするブロードキャスト手段を備え、前記子機は、通信可能範囲に存在する親機から前記親機パケットを受信する受信手段、前記受信手段で受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示する表示手段、前記親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させるための選択手段、および前記選択手段によって選択された親機に対して接続要求を送信する接続要求送信手段を備える、無線通信ゲームシステム。
【請求項2】
前記ブロードキャスト手段は他の子機と通信ゲームを実行中においても前記親機パケットをブロードキャストする、請求項1記載の無線通信ゲームシステム。
【請求項3】
前記親機および子機は、所定の通信周期で無線通信するものであり、前記通信周期は、前記親機によって使用される第1タイムスロットと、前記子機によって使用される第2タイムスロットとを含み、前記ブロードキャスト手段は、前記第1タイムスロットでゲームデータを含む前記親機パケットを送信する、請求項1または2記載の無線通信ゲームシステム。
【請求項4】
前記表示手段は、前記受信手段で受信した前記ゲーム識別情報に基づいて、自機で実行するゲームと通信可能なゲームを実行する親機に限り前記親機リスト表示する、請求項1記載の無線通信ゲームシステム。
【請求項5】
前記子機は、ゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着可能なものであり、前記表示手段は、現在装着されているゲームカートリッジのゲームと通信不可能なゲームを実行する親機も前記親機リストで表示する、請求項1記載の無線通信ゲームシステム。
【請求項6】
前記親機パケットは、新たな子機のエントリを受け付けるか否かを示すエントリ受付データをさらに含み、前記表示手段は、前記受信手段で受信した前記エントリ受付データに基づいて、新たな子機のエントリを受け付ける親機に限り前記親機リストで表示する、請求項1記載の無線通信ゲームシステム。
【請求項7】
前記親機は、子機用プログラムを記憶する子機用プログラム記憶手段、および前記子機からの接続要求に応じて、前記子機用プログラムを前記子機に送信する子機用プログラム送信手段をさらに備え、前記親機パケットは、前記子機用プログラム記憶手段を備えるか否かを示す子機用プログラム保持データをさらに含み、前記表示手段は、前記受信手段で受信した前記子機用プログラム保持データに基づいて、前記子機用プログラム保持データが前記子機用プログラムを備えることを示す場合には、自機で実行するゲームに関係なくその親機を前記親機リストで表示する、請求項1記載の無線通信ゲームシステム。
【請求項8】
前記親機は、子機が子機用プログラムの送信を必要としない第1プログラムと、子機が子機用プログラムの送信を必要とする第2プログラムとの両方を記憶するものであり、前記親機パケットは、前記親機が前記第1プログラムおよび前記第2プログラムのいずれを実行しているかを示す実行種類データをさらに含み、前記表示手段は、前記受信手段で受信した前記実行種類データに基づいて、前記第1プログラムを実行している親機については、自機で実行するゲームと通信可能なゲームを実行する親機に限り前記親機リストで表示し、前記第2プログラムを実行している親機については、自機で実行するゲームに関係
なく、前記親機リストで表示する、請求項1記載の無線通信ゲームシステム。
【請求項9】
前記子機は、ゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着するものであり、前記表示手段は、前記ゲームカートリッジが装着されていない場合には、前記受信手段で受信した前記子機用プログラム保持データに基づいて、前記子機用プログラム記憶手段を備える親機に限り前記親機リストで表示する、請求項1記載の無線通信ゲームシステム。
【請求項10】
前記受信手段で受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを記憶する親機リスト記憶手段、および前記親機リスト記憶手段に記憶された親機リストを定期的にクリアする親キリストクリア手段をさらに備え、前記表示手段は、前記親機リスト記憶手段に記憶された親機リストに基づいて表示する、請求項1記載の無線通信ゲームシステム。
【請求項11】
互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムにおける子機接続方法であって、次のステップを含む:(a) 親機から、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするステップ、(b) 子機において、通信可能範囲に存在する親機から前記親機パケットを受信するステップ、(c) 子機において、前記受信ステップで受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示するステップ、(d) 子機において、前記親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させるステップ、および(e) 子機において、前記選択された親機に対して接続要求を送信させるステップ。
【請求項12】
互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムのプログラムであって、携帯ゲーム機のプロセサに次のステップを実行させる:(a) 親機のプロセサに、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストさせ、(b) 子機のプロセサに、通信可能範囲に存在する親機から前記親機パケットを受信させ、(c) 子機のプロセサに、前記ステップ(b) で受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示させ、(d) 子機のプロセサに、前記親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させ、そして(e) 子機のプロセサに、前記選択された親機に対して接続要求を送信させる。
【請求項13】
複数の携帯ゲーム装置を用い、一方が親機となり他方が子機となり、無線通信ゲームをプレイする、携帯ゲーム装置であって、親機のために、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするブロードキャスト手段、子機のために、通信可能範囲に存在する親機から前記親機パケットを受信する受信手段、子機のために、前記受信手段で受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示する表示手段、子機のために、前記親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させる手段、および子機のために、前記選択された親機に対して接続要求を送信する送信手段を備える、携帯ゲーム装置。
【請求項1】
互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムであって、前記親機は、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするブロードキャスト手段を備え、前記子機は、通信可能範囲に存在する親機から前記親機パケットを受信する受信手段、前記受信手段で受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示する表示手段、前記親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させるための選択手段、および前記選択手段によって選択された親機に対して接続要求を送信する接続要求送信手段を備える、無線通信ゲームシステム。
【請求項2】
前記ブロードキャスト手段は他の子機と通信ゲームを実行中においても前記親機パケットをブロードキャストする、請求項1記載の無線通信ゲームシステム。
【請求項3】
前記親機および子機は、所定の通信周期で無線通信するものであり、前記通信周期は、前記親機によって使用される第1タイムスロットと、前記子機によって使用される第2タイムスロットとを含み、前記ブロードキャスト手段は、前記第1タイムスロットでゲームデータを含む前記親機パケットを送信する、請求項1または2記載の無線通信ゲームシステム。
【請求項4】
前記表示手段は、前記受信手段で受信した前記ゲーム識別情報に基づいて、自機で実行するゲームと通信可能なゲームを実行する親機に限り前記親機リスト表示する、請求項1記載の無線通信ゲームシステム。
【請求項5】
前記子機は、ゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着可能なものであり、前記表示手段は、現在装着されているゲームカートリッジのゲームと通信不可能なゲームを実行する親機も前記親機リストで表示する、請求項1記載の無線通信ゲームシステム。
【請求項6】
前記親機パケットは、新たな子機のエントリを受け付けるか否かを示すエントリ受付データをさらに含み、前記表示手段は、前記受信手段で受信した前記エントリ受付データに基づいて、新たな子機のエントリを受け付ける親機に限り前記親機リストで表示する、請求項1記載の無線通信ゲームシステム。
【請求項7】
前記親機は、子機用プログラムを記憶する子機用プログラム記憶手段、および前記子機からの接続要求に応じて、前記子機用プログラムを前記子機に送信する子機用プログラム送信手段をさらに備え、前記親機パケットは、前記子機用プログラム記憶手段を備えるか否かを示す子機用プログラム保持データをさらに含み、前記表示手段は、前記受信手段で受信した前記子機用プログラム保持データに基づいて、前記子機用プログラム保持データが前記子機用プログラムを備えることを示す場合には、自機で実行するゲームに関係なくその親機を前記親機リストで表示する、請求項1記載の無線通信ゲームシステム。
【請求項8】
前記親機は、子機が子機用プログラムの送信を必要としない第1プログラムと、子機が子機用プログラムの送信を必要とする第2プログラムとの両方を記憶するものであり、前記親機パケットは、前記親機が前記第1プログラムおよび前記第2プログラムのいずれを実行しているかを示す実行種類データをさらに含み、前記表示手段は、前記受信手段で受信した前記実行種類データに基づいて、前記第1プログラムを実行している親機については、自機で実行するゲームと通信可能なゲームを実行する親機に限り前記親機リストで表示し、前記第2プログラムを実行している親機については、自機で実行するゲームに関係
なく、前記親機リストで表示する、請求項1記載の無線通信ゲームシステム。
【請求項9】
前記子機は、ゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着するものであり、前記表示手段は、前記ゲームカートリッジが装着されていない場合には、前記受信手段で受信した前記子機用プログラム保持データに基づいて、前記子機用プログラム記憶手段を備える親機に限り前記親機リストで表示する、請求項1記載の無線通信ゲームシステム。
【請求項10】
前記受信手段で受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを記憶する親機リスト記憶手段、および前記親機リスト記憶手段に記憶された親機リストを定期的にクリアする親キリストクリア手段をさらに備え、前記表示手段は、前記親機リスト記憶手段に記憶された親機リストに基づいて表示する、請求項1記載の無線通信ゲームシステム。
【請求項11】
互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムにおける子機接続方法であって、次のステップを含む:(a) 親機から、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするステップ、(b) 子機において、通信可能範囲に存在する親機から前記親機パケットを受信するステップ、(c) 子機において、前記受信ステップで受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示するステップ、(d) 子機において、前記親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させるステップ、および(e) 子機において、前記選択された親機に対して接続要求を送信させるステップ。
【請求項12】
互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムのプログラムであって、携帯ゲーム機のプロセサに次のステップを実行させる:(a) 親機のプロセサに、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストさせ、(b) 子機のプロセサに、通信可能範囲に存在する親機から前記親機パケットを受信させ、(c) 子機のプロセサに、前記ステップ(b) で受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示させ、(d) 子機のプロセサに、前記親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させ、そして(e) 子機のプロセサに、前記選択された親機に対して接続要求を送信させる。
【請求項13】
複数の携帯ゲーム装置を用い、一方が親機となり他方が子機となり、無線通信ゲームをプレイする、携帯ゲーム装置であって、親機のために、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするブロードキャスト手段、子機のために、通信可能範囲に存在する親機から前記親機パケットを受信する受信手段、子機のために、前記受信手段で受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示する表示手段、子機のために、前記親機リストに含まれる親機のうちいずれか1つをプレイヤに選択させる手段、および子機のために、前記選択された親機に対して接続要求を送信する送信手段を備える、携帯ゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【公開番号】特開2011−173002(P2011−173002A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願番号】特願2011−131275(P2011−131275)
【出願日】平成23年6月13日(2011.6.13)
【分割の表示】特願2011−82267(P2011−82267)の分割
【原出願日】平成14年10月21日(2002.10.21)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願日】平成23年6月13日(2011.6.13)
【分割の表示】特願2011−82267(P2011−82267)の分割
【原出願日】平成14年10月21日(2002.10.21)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]