(57)【要約】【課題】親機リストを表示可能にし、任意の親機にエントリ可能にすること。【解決手段】親機から、親機番号ＰＩＤ，ユーザ名UserName，ゲーム名GameName，ＯＣフラグ，Ｅスロット，Ｕスロットおよびペイロードを含む親機パケットをブロードキャストする。自機の通信可能範囲（６４）内に存在する親機からすべて親機パケットを受信し、親機リストを作成し、その親機リストをＬＣＤ上に表示する。したがって、自機のユーザまたはプレイヤは、その親機リストのたとえばゲーム名を見て、操作キーに含まれる十字キーを操作することによって、所望の親機を１つ選択する。そして、親機パケットで指定されたＥスロットで自機の子機番号ＣＩＤを送信することによって、接続要求を親機に対して送信する。【選択図】図２
2014111135.tif 000002
【特許請求の範囲】
【請求項１】
互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムであって、前記親機は、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするブロードキャスト手段を備え、前記子機は、通信可能範囲に存在する親機から前記親機パケットを受信する受信手段、前記受信手段で受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示する表示手段、前記親機リストに含まれる親機のうちいずれか１つをプレイヤに選択させるための選択手段、および前記選択手段によって選択された親機に対して接続要求を送信する接続要求送信手段を備える、無線通信ゲームシステム。
【請求項２】
前記ブロードキャスト手段は他の子機と通信ゲームを実行中においても前記親機パケットをブロードキャストする、請求項１記載の無線通信ゲームシステム。
【請求項３】
前記親機および子機は、所定の通信周期で無線通信するものであり、前記通信周期は、前記親機によって使用される第１タイムスロットと、前記子機によって使用される第２タイムスロットとを含み、前記ブロードキャスト手段は、前記第１タイムスロットでゲームデータを含む前記親機パケットを送信する、請求項１または２記載の無線通信ゲームシステム。
【請求項４】
前記表示手段は、前記受信手段で受信した前記ゲーム識別情報に基づいて、自機で実行するゲームと通信可能なゲームを実行する親機に限り前記親機リスト表示する、請求項１記載の無線通信ゲームシステム。
【請求項５】
前記子機は、ゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着可能なものであり、前記表示手段は、現在装着されているゲームカートリッジのゲームと通信不可能なゲームを実行する親機も前記親機リストで表示する、請求項１記載の無線通信ゲームシステム。
【請求項６】
前記親機パケットは、新たな子機のエントリを受け付けるか否かを示すエントリ受付データをさらに含み、前記表示手段は、前記受信手段で受信した前記エントリ受付データに基づいて、新たな子機のエントリを受け付ける親機に限り前記親機リストで表示する、請求項１記載の無線通信ゲームシステム。
【請求項７】
前記親機は、子機用プログラムを記憶する子機用プログラム記憶手段、および前記子機からの接続要求に応じて、前記子機用プログラムを前記子機に送信する子機用プログラム送信手段をさらに備え、前記親機パケットは、前記子機用プログラム記憶手段を備えるか否かを示す子機用プログラム保持データをさらに含み、前記表示手段は、前記受信手段で受信した前記子機用プログラム保持データに基づいて、前記子機用プログラム保持データが前記子機用プログラムを備えることを示す場合には、自機で実行するゲームに関係なくその親機を前記親機リストで表示する、請求項１記載の無線通信ゲームシステム。
【請求項８】
前記親機は、子機が子機用プログラムの送信を必要としない第１プログラムと、子機が子機用プログラムの送信を必要とする第２プログラムとの両方を記憶するものであり、前記親機パケットは、前記親機が前記第１プログラムおよび前記第２プログラムのいずれを実行しているかを示す実行種類データをさらに含み、前記表示手段は、前記受信手段で受信した前記実行種類データに基づいて、前記第１プログラムを実行している親機については、自機で実行するゲームと通信可能なゲームを実行する親機に限り前記親機リストで表示し、前記第２プログラムを実行している親機については、自機で実行するゲームに関係
なく、前記親機リストで表示する、請求項１記載の無線通信ゲームシステム。
【請求項９】
前記子機は、ゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着するものであり、前記表示手段は、前記ゲームカートリッジが装着されていない場合には、前記受信手段で受信した前記子機用プログラム保持データに基づいて、前記子機用プログラム記憶手段を備える親機に限り前記親機リストで表示する、請求項１記載の無線通信ゲームシステム。
【請求項１０】
前記受信手段で受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを記憶する親機リスト記憶手段、および前記親機リスト記憶手段に記憶された親機リストを定期的にクリアする親キリストクリア手段をさらに備え、前記表示手段は、前記親機リスト記憶手段に記憶された親機リストに基づいて表示する、請求項１記載の無線通信ゲームシステム。
【請求項１１】
互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムにおける子機接続方法であって、次のステップを含む：(a) 親機から、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするステップ、(b) 子機において、通信可能範囲に存在する親機から前記親機パケットを受信するステップ、(c) 子機において、前記受信ステップで受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示するステップ、(d) 子機において、前記親機リストに含まれる親機のうちいずれか１つをプレイヤに選択させるステップ、および(e) 子機において、前記選択された親機に対して接続要求を送信させるステップ。
【請求項１２】
互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムのプログラムであって、携帯ゲーム機のプロセサに次のステップを実行させる：(a) 親機のプロセサに、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストさせ、(b) 子機のプロセサに、通信可能範囲に存在する親機から前記親機パケットを受信させ、(c) 子機のプロセサに、前記ステップ(b) で受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示させ、(d) 子機のプロセサに、前記親機リストに含まれる親機のうちいずれか１つをプレイヤに選択させ、そして(e) 子機のプロセサに、前記選択された親機に対して接続要求を送信させる。
【請求項１３】
複数の携帯ゲーム装置を用い、一方が親機となり他方が子機となり、無線通信ゲームをプレイする、携帯ゲーム装置であって、親機のために、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするブロードキャスト手段、子機のために、通信可能範囲に存在する親機から前記親機パケットを受信する受信手段、子機のために、前記受信手段で受信した前記親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示する表示手段、子機のために、前記親機リストに含まれる親機のうちいずれか１つをプレイヤに選択させる手段、および子機のために、前記選択された親機に対して接続要求を送信する送信手段を備える、携帯ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、無線通信を利用するゲームシステムに関し、特にたとえば、子機がその子機との間で通信可能範囲にある親機の情報を知ることができる無線通信ゲームシステム、およびそれに用いる携帯ゲーム装置ならびにゲームプログラムに関する。
【背景技術】
【０００２】
従来の無線通信ゲームシステムの一例が、たとえば、平成１２年（２０００）５月１６日付きで出願公開された特許文献１（国際分類：Ａ６３Ｆ１３／００、Ｈ０４Ｌ１２／２８）に開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−１３５３８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この先行技術では、たとえば、友人などの間で約束をして、同一のゲームを実行するゲーム装置を持ち寄って、それらのゲーム装置で通信を確立した後無線通信ゲームを実行していた。先行技術では、他人のゲーム装置の識別情報やゲーム名などの情報を知るためにはユーザ同士でそれらの情報を口頭で確認するほかなかった。それゆえ、見知らぬ他人のゲーム装置が通信可能範囲にある場合に、その人と無線通信ゲームをおこなうことは現実的に困難である。すなわち、先行技術では、ユーザは通信相手のゲーム装置を自由に、動的に、選択することができなかった。
【０００５】
無線通信の利点は自由に持ち運べることであり、また、無線通信可能な範囲にあるゲーム装置と自由に通信できることである。しかしながら、先行技術では、これらの利点を生かせているとはいえない。
【０００６】
それゆえに、この発明の主たる目的は、新規な、無線通信ゲームシステム、携帯ゲーム装置、無線通信ゲームシステムにおける子機接続方法およびゲームプログラムを提供することである。
【０００７】
この発明の他の目的は、子機が希望する親機を任意に選択できる、無線通信ゲームシステム、携帯ゲーム装置、無線通信ゲームシステムにおける子機接続方法およびゲームプログラムを提供することである。
【０００８】
この発明のさらに他の目的は、通信可能範囲にあるゲーム装置と自由に無線通信ゲームをすることを可能にする、無線通信ゲームシステム、携帯ゲーム装置、無線通信ゲームシステムにおける子機接続方法およびゲームプログラムを提供することである。
【課題を解決するための手段】
【０００９】
この発明は、互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムである。親機は、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするブロードキャスト手段を備える。子機は、受信手段と、表示手段と、選択手段と、接続要求送信手段とを備える。受信手段は、通信可能範囲に存在する親機から親機パケットを受信する。表示手段は、受信手段で受信した親機パケットに基づいて、通信可
能範囲に存在する親機の親機リストを表示する。選択手段は、親機リストに含まれる親機のうちいずれか１つをプレイヤに選択させる。接続要求送信手段は、選択手段によって選択された親機に対して接続要求を送信する。
【００１０】
請求項２は、請求項１に従属し、ブロードキャスト手段は他の子機と通信ゲームを実行中においても親機パケットをブロードキャストする、無線通信ゲームシステムである。
【００１１】
請求項３は、請求項１または２に従属し、親機および子機は、所定の通信周期で無線通信するものである。通信周期は、親機によって使用される第１タイムスロットと、子機によって使用される第２タイムスロットとを含む。ブロードキャスト手段は、第１タイムスロットでゲームデータを含む親機パケットを送信する。
【００１２】
請求項４は、請求項１に従属し、表示手段は、受信手段で受信したゲーム識別情報に基づいて、自機で実行するゲームと通信可能なゲームを実行する親機に限り親機リスト表示する、無線通信ゲームシステムである。例えば、ゲーム装置がゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着可能なものである場合には、表示手段は、親機に装着されているゲームカートリッジのゲームと子機に装着されているゲームカートリッジのゲームが通信可能な場合に限りその親機を親機リストに表示する。
【００１３】
請求項５は、請求項１に従属し、子機は、ゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着可能なものである。表示手段は、現在装着されているゲームカートリッジのゲームと通信不可能なゲームを実行する親機も親機リストで表示する。
【００１４】
請求項６は、請求項１に従属し、親機パケットは、新たな子機のエントリを受け付けるか否かを示すエントリ受付データをさらに含む。表示手段は、受信手段で受信したエントリ受付データに基づいて、新たな子機のエントリを受け付ける親機に限り親機リストで表示する。
【００１５】
請求項７は、請求項１に従属し、親機は、子機用プログラムを記憶する子機用プログラム記憶手段、および子機からの接続要求に応じて（たとえば、子機はゲームカートリッジを着脱自在に装着可能なものであり、ゲームカートリッジが装着されていない子機からの要求に応じて）、子機用プログラムを子機に送信する子機用プログラム送信手段とをさらに備える。親機パケットは、子機用プログラム記憶手段を備えるか否かを示す子機用プログラム保持データをさらに含む。表示手段は、受信手段で受信した子機用プログラム保持データに基づいて、子機用プログラム保持データが子機用プログラムを備えることを示す場合には、自機で実行するゲームに関係なくその親機を親機リストで表示する。
【００１６】
請求項８は、請求項１に従属し、親機は、子機が子機用プログラムの送信を必要としない第１プログラムと、子機が子機用プログラムの送信を必要とする第２プログラムとの両方を記憶する。親機パケットは、親機が第１プログラムおよび第２プログラムのいずれを実行しているかを示す実行種類データをさらに含む。表示手段は、受信手段で受信した実行種類データに基づいて、第１プログラムを実行している親機については、自機で実行するゲームと通信可能なゲームを実行する親機に限り親機リストで表示し、第２プログラムを実行している親機については、自機で実行するゲームに関係なく、親機リストで表示する。
【００１７】
請求項９は、請求項１に従属し、子機は、ゲームプログラムが記憶されたゲームカートリッジを着脱自在に装着するものである。表示手段は、ゲームカートリッジが装着されていない場合には、受信手段で受信した子機用プログラム保持データに基づいて、子機用プログラム記憶手段を備える親機に限り親機リストで表示する。
【００１８】
請求項１０は、請求項１に従属し、受信手段で受信した親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを記憶する親機リスト記憶手段、および親機リスト記憶手段に記憶された親機リストを定期的にクリアする親キリストクリア手段をさらに備え、表示手段は、親機リスト記憶手段に記憶された親機リストに基づいて表示する。
【００１９】
請求項１１は、互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムにおける子機接続方法であって、以下の（ａ）（ｂ）（ｃ）（ｄ），および（ｅ）のステップを含む。（ａ）  親機から、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするステップ（ｂ）  子機において、通信可能範囲に存在する親機から親機パケットを受信するステップ（ｃ）  子機において、受信ステップで受信した親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示するステップ（ｄ）  子機において、親機リストに含まれる親機のうちいずれか１つをプレイヤに選択させるステップ（ｅ）  子機において、選択された親機に対して接続要求を送信させるステップ請求項１２は、互いに無線通信可能な親機または子機となる複数の携帯ゲーム装置を用いる無線通信ゲームシステムのプログラムであって、携帯ゲーム機のプロセサに次のステップを実行させる：（ａ）  親機のプロセサに、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストさせ、（ｂ）  子機のプロセサに、通信可能範囲に存在する親機から親機パケットを受信させ、（ｃ）  子機のプロセサに、ステップ（ｂ）  で受信した親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示させ、（ｄ）  子機のプロセサに、親機リストに含まれる親機のうちいずれか１つをプレイヤに選択させ、そして（ｅ）  子機のプロセサに、選択された親機に対して接続要求を送信させる。
【００２０】
請求項１３は、複数の携帯ゲーム装置を用い、一方が親機となり他方が子機となり、無線通信ゲームをプレイする、携帯ゲーム装置である。親機のために（親機として機能するために）、自機を識別させるための自機識別情報および自機で実行するゲームを識別させるためのゲーム識別情報を含む親機パケットをブロードキャストするブロードキャスト手段を備える。子機のために（子機として機能するために）、受信手段と表示手段と選択させる手段と送信手段とを備える。受信手段は、通信可能範囲に存在する親機から親機パケットを受信する。表示手段は、受信手段で受信した親機パケットに基づいて、通信可能範囲に存在する親機の親機リストを表示する。選択させる手段は、親機リストに含まれる親機のうちいずれか１つをプレイヤに選択させる。送信手段は、選択された親機に対して接続要求を送信する。
【００２１】
無線通信ゲームシステムは、実施例では、少なくとも２台の携帯ゲーム装置（１０：実施例で相当する参照符号。以下同じ。）を用いて構成される。実施例の携帯ゲーム装置（１０）は、携帯ゲーム機（１２）と、その携帯ゲーム機に装着された無線通信ユニット（１４）とを含む。携帯ゲーム装置は、この無線通信ユニット（１４）を用いて、親機の場合には、第１タイムスロットで親機パケットをブロードキャストし、第２タイムスロットで子機パケットを受信する。子機の場合には、第１タイムスロットで親機パケットを受信し、第２タイムスロットで子機パケットを親機に向けて送信する。
【００２２】
このブロードキャスト手段は、実施例では、図２９に示す親機の送受信処理のステップＳ２００３およびＳ２００９に相当し、自機識別情報としての親機番号ＰＩＤと、ゲーム識別情報としてのゲーム名ＧａｍｅＮａｍｅとを含む親機パケットをブロードキャストする。
【００２３】
子機は、また、実施例の図３２のステップＳ４００１で示す受信手段によって、上述の
親機パケットを受信する。この親機パケットに基づいて、たとえば図２０のステップＳ１５において、親機リストを作成し、図２０のステップＳ２３またはステップＳ２５で、その親機リストをＬＣＤ（１８）上に表示する。
【００２４】
子機のユーザは、その親機リストのたとえばゲーム名を見て、図２１のステップＳ７９およびＳ１５１で、選択手段を構成する操作キー（３８）の十字キーを操作することによって、親機リストの中から所望の親機を１つ選択する。そして、図２４のステップＳ８３すなわち図３０および図３１の子機の接続処理を実行する。たとえばステップＳ３０２３（図３１）に相当する接続要求送信手段が、Ｅスロットに自機の子機番号ＣＩＤを送信することによって、接続要求を親機に対して送信する。
【００２５】
したがって、子機は、親機パケットから作成した親機リストに表示されているいずれの親機と接続するか、任意に決定することができる。
【００２６】
請求項２は、実施例でいえば図２９に相当する。この請求項２の発明によれば、子機は、無線通信ゲームを実行中の親機についても情報（ＰＩＤやゲーム名等）を得ることができる。このため、子機は、たとえば、新たな子機の参加を希望している親機の存在を知ることができるので、途中参加が可能になる。
【００２７】
請求項３の第１タイムスロットは実施例でいえば親機スロットであり、第２タイムスロットは子機スロットである。そして、ブロードキャスト手段は、図１１に示すペイロードデータを含む親機パケットをブロードキャストする（ステップＳ２００３）。したがって、請求項３の発明によれば、親機は常時親機パケットをブロードキャストするため、子機は、通信可能範囲に存在するすべての親機に関する最新情報を知ることができる。
【００２８】
請求項４では、図４に示すように、自機と通信可能なゲームを実行できる親機だけを親機リストで表示する。したがって、請求項４の発明によれば、自機と通信不可能なゲームを実行する親機の表示を省略することにより、子機のプレイヤが親機を選択し易くなる。
【００２９】
請求項５のゲームカートリッジは図１で示すカートリッジ１６に相当し、そのカートリッジ１６はＲＯＭ４２内にゲームプログラムを記憶している。したがって、子機は基本的にはそのゲームプログラムを実行できるだけである。しかしながら、現在装着されているカートリッジが親機と通信不可能なものである場合であっても、他のカートリッジに交換すれば通信可能になるので、請求項５の発明によれば、現在通信できない親機も表示して、カートリッジの交換を促すことができる。
【００３０】
請求項６のエントリ受付データは、実施例でいうところのＥスロットの「ｆｆｈ」以外のデータに相当し、したがって、子機は、親機パケットのＥスロットに「ｆｆｈ」以外のデータを設定している親機を、図３に示すよう、ステップＳ２３またはＳ２５（図２０）で表示する。したがって、請求項６の発明によれば、新たな子機のエントリを受け付ける親機のみを表示することにより、無駄な親機情報（接続できない親機の情報）が省略され、子機のプレイヤが親機を選択し易くなる。
【００３１】
請求項７の子機用プログラム記憶手段は実施例でいえば図１６の領域７６に相当し、この子機用プログラムは図１９のステップＳ７７（子機の受信処理は図２６のステップＳ１４５）で親機から子機へ転送される。したがって、子機はその子機用プログラムを起動して、そのＯＣモードでのゲームをプレイすることができる。そこで、請求項７の発明では、子機用プログラム保持データ（実施例でいえば、ＯＣフラグ）が「１」の親機を図５に示すように表示する。この請求項７の発明によれば、親機は自機用（親機用）プログラムだけでなく子機用プログラムを記憶し、子機にそのプログラムを送信して、子機はそのプ
ログラムを受信して実行するので、子機側にはゲームプログラムが必要ない。そして、子機は、そのようなＯＣモード対応ゲームをプレイできる親機を知ることができるので、カートリッジを装着していなくても、手軽にゲームをブレイすることができる。
【００３２】
請求項８では、親機には図１６に示すカートリッジ１６が装着されていて、このカートリッジには第１プログラム（通常モードゲームプログラム）と、第２プログラム（ＯＣモード用ゲームプログラム）との両方を記憶していて、親機パケットには、第１プログラムおよび第２プログラムのいずれを実行しているかを示す実行種類データ、実施例でいえばＯＣフラグが「１」または「０」で送信される。したがって、子機は、そのＯＣフラグが「１」の親機は自機と通信できるものだけを表示し、ＯＣフラグが「０」の親機は自機のゲームに関係なくすべて表示する。請求項８の発明によれば、自機と通信可能であるか、または子機用プログラムを送信可能な状態（第２プログラムを実行中）である親機の情報だけを表示するので、無駄な親機情報（通信不可能な親機の情報など）が省略され、子機のプレイヤが親機を選択し易い。
【００３３】
請求項９も請求項８と同様に、ＯＣモード対応のゲームプログラムを保持している親機だけを表示する。したがって、請求項９の発明によれば、子機はゲームカートリッジが装着されていない場合には、子機用プログラムを送信することが可能な親機の情報のみ表示するので、子機のプレイヤが親機を選択し易い。
【００３４】
請求項１０では、親機リストが親機リスト記憶手段（実施例でいえば、図１８の親機リスト領域８０に相当する。）に基づいて表示される。そして、実施例のたとえば親機リストクリアタイマ８２（図１８）を用いて、その親機リストを定期的にクリアする。そのことによって、通信範囲外のものとなった親機を除外し、そのときの子機の通信可能範囲に存在する親機だけを確実にユーザないしプレイヤに知らせることができる。
【００３５】
請求項１１−請求項１３も、請求項１と同様に、子機がそれの通信可能範囲に存在する親機を知ることができ、容易に、所望の親機を選択して接続することができるという利点がある。
【発明の効果】
【００３６】
この発明によれば、親機が親機情報をブロードキャストしているため、子機は通信可能範囲にどのような親機が存在するのかを知ることができる（すなわち、通信ゲームをすることが可能な親機を知ることができる）。そして、子機は、いずれの親機と接続するか任意に決定することができる。
【００３７】
無線通信ゲームの場合、携帯ゲーム装置を自由に持ち運ぶことができるので、無線通信可能な範囲にある携帯ゲーム装置は刻々と変化するが、この発明によれば、通信可能な範囲にある携帯ゲーム装置の情報を知ることができるので、無線通信ゲームをしたい相手を自由に決定することができる。
【００３８】
また、見知らぬ他人の装置が通信可能範囲に入ってくることもあるが、その場合にも情報を得ることができるので、見知らぬ他人と無線通信ゲームを楽しむことも可能である。
【００３９】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００４０】
【図１】図１はこの発明の一実施例の無線送信ゲームシステムに用いられる携帯ゲーム装置の一例を示すブロック図である。
【図２】図２は図１実施例の携帯ゲーム装置を用いたゲームシステムの概略を説明するための図解図である。
【図３】図３は図２実施例において自機の周りのすべての親機の情報を表示する全表示フラグがオンされている場合の表示画面例を示す図解図である。
【図４】図４は図２実施例において、全表示フラグがオンされていない場合において、自機の周りに存在しかつ自機との間で通信ゲームが可能な親機だけを表示する表示画面例を示す図解図である。
【図５】図５は図２実施例において自機の周りに存在しかつＯＣ（ワンカートリッジ）モードでゲームがプレイできる親機のみを表示する表示画面例を示す図解図である。
【図６】図６は図２実施例における或る状況での親機リストの表示画面例を示す図解図である。
【図７】図７は図２実施例において図６の状況でユーザ名「四郎」の携帯ゲーム装置が通信範囲に入ったときの親機リストの表示画面例を示す図解図である。
【図８】図８は図２実施例において図７の状況でユーザ名「一郎」の携帯ゲーム装置が通信範囲外に出たときの親機リストの表示画面例を示す図解図である。
【図９】図９は図２実施例において自機が親機でありかつ子機の接続（エントリ）を待っている状態の子機リストの表示画面例を示す図解図である。
【図１０】図１０は図２実施例におけるデータサイクルの一例を示す図解図である。
【図１１】図１１は図１０実施例における親機スロットに送出される親機パケットの一例を示す図解図である。
【図１２】図１２は図１１におけるＵスロットを詳細に示す図解図である。
【図１３】図１３は図１０実施例における子機スロットに送出される子機パケットの一例を示す図解図である。
【図１４】図１４は図１実施例の或る状況における通信データの具体例を示す図解図である。
【図１５】図１５はＯＣモードには対応しないカートリッジのメモリマップの一例を示す図解図である。
【図１６】図１６はＯＣモードに対応するカートリッジのメモリマップの一例を示す図解図である。
【図１７】図１７は図１実施例の無線通信ユニットに含まれるＥＥＰＲＯＭのメモリマップの一例を示す図解図である。
【図１８】図１８は図１実施例において携帯ゲーム装置を構成する携帯ゲーム機の内部ＲＡＭのメモリマップの一例を示す図解図である。
【図１９】図１９は図１実施例の携帯ゲーム機の動作を示すメインフローの一部を示すフロー図である。
【図２０】図２０は図１９の続きを示すフロー図である。
【図２１】図２１は図２０の続きを示すフロー図である。
【図２２】図２２は図２１の続きを示すフロー図である。
【図２３】図２３は図２２の続きを示すフロー図である。
【図２４】図２４は図２１の続きを示すフロー図である。
【図２５】図２５は図１９の続きを示すフロー図である。
【図２６】図２６は図２５の続きを示すフロー図である。
【図２７】図２７は親機の接続処理の動作の一部を示すフロー図である。
【図２８】図２８は図２７の続きを示すフロー図である。
【図２９】図２９は親機の送受信処理の動作を示すフロー図である。
【図３０】図３０は子機の接続処理の動作の一部を示すフロー図である。
【図３１】図３１は図３０の続きを示すフロー図である。
【図３２】図３２は子機の送受信処理の動作を示すフロー図である。
【図３３】図３３は子機の復帰処理の動作を示すフロー図である。
【図３４】図３４は自機を親機とするか子機とするかの選択を最初に行う実施例の要部を示すフロー図である。
【発明を実施するための形態】
【００４１】
この発明が適用される無線通信ゲームシステムは、一例として、図１に示すような携帯ゲーム装置１０を利用する。携帯ゲーム装置１０は、この実施例では、たとえばゲームボーイアドバンス（ＧＡＭＥＢＯＹ  ＡＤＶＡＮＣＥ：商品名）のような携帯ゲーム機１２と、その携帯ゲーム機１２の通信コネクタ４６に接続された無線通信ユニット１４およびカートリッジコネクタ４０に接続されたカートリッジ１６を含む。つまり、この実施例においては、携帯ゲーム装置１０は、携帯ゲーム機１２，無線通信ユニット１４およびカートリッジ１６によって構成される。
【００４２】
図１に示す携帯ゲーム機１２は、プロセサ２０を含み、このプロセサ２０は、ＣＰＵコア２２とそれに関連するブートＲＯＭ２４，ＬＣＤコントローラ２６，ＷＲＡＭ（ワーキングＲＡＭ：以下同様）２８，ＶＲＡＭ３０および周辺回路３２とを含む。ただし、周辺回路３２は、音声（サウンド）回路、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）回路、タイマ回路、入出力インタフェース（ＩＯ）などを含む。携帯ゲーム機１２の前面に設けられたＬＣＤ１８には、プロセサ２０から表示信号、この実施例ではＲＧＢ信号が与えられ、したがって、ＬＣＤ１８ではゲーム画像がカラー表示される。そして、プロセサ２０からは、サウンド回路３４にオーディオ信号が与えられ、そのオーディオ信号によって、スピーカ３６からゲーム音楽や効果音などの音声が出力される。また、携帯ゲーム機１２の前面にＬＣＤ１８を挟んで設けられる十字キーやスタートキー，セレクトキーおよびＡボタンならびにＢボタンがまとめて操作スイッチ３８として示され、この操作スイッチ３８からの操作信号がプロセサ２０に入力される。したがって、プロセサ２０は操作スイッチ３８を通して与えられたユーザの指示に従った処理を実行する。
【００４３】
携帯ゲーム機１６はカートリッジコネクタ４０を有し、このカートリッジコネクタ４０には、カートリッジ１６が接続または挿入される。カートリッジ１６にはＲＯＭ４２およびバックアップＲＡＭ４４が内蔵され、ＲＯＭ４２には携帯ゲーム機１２で実行すべきゲームのためのゲームプログラムが、そのゲーム名とともに、予め設定されている。バックアップＲＡＭ４４は、そのゲームの途中データやゲームの結果データを記憶する。
【００４４】
携帯ゲーム機１６にはさらに通信コネクタ４６が設けられ、この通信コネクタ４６には無線通信ユニット１４のコネクタ４８が接続される。なお、実施例で用いる携帯ゲーム機１２は、一例としてゲームボーイアドバンス（商品名）であり、その場合、上述のカートリッジコネクタ４０は、ＬＣＤ１８を前面（正面）としたときの上面奥側に設けられる３２ピンコネクタであり、通信コネクタ４６は上面手前側に設けられる６ピンコネクタである。
【００４５】
無線通信ユニット１４は、ベースバンドＩＣ５０を含み、このベースバンドＩＣ５０はＲＯＭ５２を含む。ＲＯＭ５２にはたとえばＯＣＤ（Ｏｎｅ−Ｃａｒｔｒｉｄｇｅ  Ｄｏｗｎｌｏａｄ）プログラムやその他のプログラムが内蔵され、ベースバンドＩＣ５０は、それらのプログラムに従って動作する。なお、ワンカートリッジダウンロードプログラムとは、ＯＣモード（ワンカートリッジモード：親機にだけゲームカートリッジが装着されていて、子機はその親機カートリッジからの子機用プログラムのダウンロードを受けて動作するモード）において、子機へプログラムをダウンロードするためのプログラムである。
【００４６】
無線通信ユニット１４にはさらにＥＥＰＲＯＭ５４が設けられ、このＥＥＰＲＯＭ５４には、たとえば、ユーザ名が固有に設定される。ベースバンド（Ｂａｓｅ  Ｂａｎｄ）ＩＣ５０は、そのユーザ名を含んだデータを、ＲＦ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）−
ＩＣ５６に送出し、ＲＦ−ＩＣ５６は、そのデータを変調して、アンテナ５８から電波を送信する。ただし、その電波強度は、非常に微弱で、電波法の規制の対象とならない程度の小さい値に設定されている。また、この無線通信ユニット１４には電源回路６０が設けられている。この電源回路６０は典型的には電池であり、無線通信ユニット１４の各コンポーネントに直流電源を供給する。
【００４７】
無線通信ユニット１４では、また、他の携帯ゲーム装置から送信された電波をアンテナ５８で受信してＲＦ−ＩＣ５６によって復調し、復調信号がベースバンドＩＣ５０に入力される。したがって、ベースバンドＩＣ５０は、復調信号をデコードして、データを復元し、そのデータをコネクタ４８および４６を介して携帯ゲーム機１２すなわちＷＲＡＭ２８に転送する。
【００４８】
この発明に従った実施例の無線通信ゲームシステムでは、複数台の図１に示すような携帯ゲーム装置１０を利用する。図２の点線６４は自機携帯ゲーム装置６２の通信可能範囲を示している。そして、携帯ゲーム装置６２は、通信可能範囲６４に存在する携帯ゲーム装置に対してエントリできる可能性がある。この通信可能範囲６４が上述の微弱電波によって親機と子機との間のデータ通信が可能な範囲であり、この通信可能範囲６４の中に存在する複数の携帯ゲーム装置は、どれでもが、任意に、親機となりまたは子機となることができる。図示の例では、その範囲６４の内に、４台の親機と３台の子機と、１台の自機６２とが存在する。
【００４９】
そして、自機６２がゲームに参加する場合、親機か子機になる必要がある。自機が子機になる場合には、参加可能な親機を探す必要がある。親機を探すときに、自機がカートリッジを持っているかどうかによって、異なる親機を探す必要がある。
【００５０】
まず、自機６２が図１に示すカートリッジ１６を装着した携帯ゲーム装置である場合であって、かつ自機６２の周囲のすべての親機を表示することを示す全表示フラグ（後述）を「１」に設定しているときには、図１に示す携帯ゲーム機１２のＬＣＤ１８上に、図３で示すような親機リスト１８Ａが表示される。この図３の親機リスト１８Ａには、通信可能範囲６４（図２）内に存在するすべての親機、すなわち、ユーザ名がそれぞれ「太郎」，「一郎」および「二郎」の３台の親機が表示される。したがって、自機のユーザは、自機を子機として動作または機能させたいとき、その自機を接続したい親機を、操作キー３８（図１）に含まれる十字キーでカーソルを動かして指定した後同じく操作キー３８に含まれるＡボタンを押すことによって、選択することができる。
【００５１】
ただし、自機を親機として使いたい場合には、ユーザは、操作キー３８に含まれるＢボタンを押せばよい。
【００５２】
図２では範囲６４内に４台の親機が存在するにも拘わらず、図３の親機リスト１８Ａでは３台の親機だけが表示されるのは、次の理由による。ユーザ名が「三郎」の親機はエントリスロットＥＳｌｏｔが「ｆｆｈ」に設定されている。このエントリスロットＥＳｌｏｔは、新しい子機を希望するかどうかを示すフラグであり、このエントリスロットＥＳｌｏｔが「ｆｆｈ」に設定されているときは、その親機は子機の新規参加を拒否しているので、そのような親機は表示されないのである。ユーザ名「三郎」の親機は、エントリ可能な最大子機数に達しているため、新しい子機を希望していない。
【００５３】
また、図３の親機リスト１８Ａでは、ユーザ名「二郎」の親機に丸印（Ｏ）が付加されている。この丸印（Ｏ）は、ＯＣモードでのゲームがプレイ可能なことを示す。
【００５４】
さらに、全表示フラグがオフの場合には、ＬＣＤ１８には図４に示す親機リスト１８Ａ
が表示される。この場合には、自機のゲームカートリッジ、たとえばマリオカート−１（Ｍａｒｉｏ  Ｋａｒｔ−１）と通信できる親機、この例ではユーザ名が「太郎」である親機だけが表示される。なぜなら、ユーザ名「太郎」の親機にはマリオカート−２（Ｍａｒｉｏ  Ｋａｒｔ−２）のカートリッジが装着されていて、Ｍａｒｉｏ  Ｋａｒｔ−１とＭａｒｉｏ  Ｋａｒｔ−２とは相互に通信可能であるからである。なお、通信可能範囲６４内に、マリオカート−１のカートリッジが装着されている親機があれば、その親機も当然表示される。
【００５５】
上の例では自機（子機）にＭａｒｉｏ  Ｋａｒｔ−１のカートリッジが装着されているが、自機にカートリッジを装着せず、ＯＣモードでゲームをプレイしたい場合には、ＬＣＤ１８には、たとえば図５に示す親機リスト１８Ａが表示される。この図５の親機リスト１８Ａでは、ＯＣモードに対応できる親機、この例ではユーザ名「二郎」の親機だけが表示される（「Ｆ−ＺＥＲＯ」はＯＣモード対応のゲームである）。ただし、この場合には自機にはカートリッジが装着されていないので、自機は親機になれない。したがって、「自分が親機になりたいときはＢボタンを押してください」という図３や図４に示すメッセージは表示されない。
【００５６】
次に図６−図８を参照して、ユーザ名「四郎」の親機が図２に示す通信可能範囲６４に入り、その後、ユーザ名「一郎」の親機がその範囲６４の外へ出た場合の自機６２の表示の変化について説明する。ユーザ名「四郎」の親機が範囲外にある場合には、図６に示すように、自機６２のＬＣＤ１８上には図３と同じ親機リスト１８Ａが表示される。
【００５７】
その後、ユーザ名「四郎」の親機が範囲内に進入してきたときには、図７で示す親機リスト１８Ａが表示される。ただし、自機６２の全表示フラグがオンされているものとする。つまり、ユーザ名「四郎」の親機が、ユーザ名がそれぞれ「太郎」，「一郎」および「二郎」である親機に加えて表示される。
【００５８】
そして、さらにユーザ名「一郎」の親機が範囲６４外へ脱したときには、図８の親機リスト１８Ａが表示される。この親機リストにはユーザ名「一郎」の親機は表示されない。
【００５９】
さらに、自機が親機であってかつ新たな子機の参加を待っているときには、ＬＣＤ１８には、図９に示す子機リスト１８Ｂが表示される。この子機リスト１８Ｂをみると、現在、ユーザ名がそれぞれ「五郎」，「六郎」および「七郎」の子機が自機に接続していることがわかる。ここで、本実施例は親機と子機とが微弱電波によって無線通信をしながらゲームを進行させる無線通信ゲームシステムであるので、本来的には「接続」の用語を用いるべきではない。しかしながら、親機となる携帯ゲーム装置と子機となる携帯ゲーム装置との間での通信可能な連係状態を表す用語として、有線通信の場合の用語を借りて、便宜上「接続」と表現することとする。
【００６０】
次に、接続状態にある親機と子機とが無線通信する場合のデータパケットフォーマットについて、図１０−図１４を参照して説明する。図１０で示すように、１つのデータサイクルが２ミリ秒で、そのデータサイクルは、１つの親機スロットと複数（この実施例では４つ）の子機スロットとを含む。親機スロットでは図１１に具体的に示す親機パケットがブロードキャスト（Ｂｒｏａｄｃａｓｔ：放送）され、４つの子機スロットでは、それぞれ、図１３に具体的に示す子機パケットの親機への送信が行われる。
【００６１】
親機パケットは、図１１に示すように、同期データを格納しておくためのフィールドｓｙｎｃをその先頭に有し、その同期データフィールドｓｙｎｃに後続してその親機の番号（識別コード）ＰＩＤ格納するためのフィールドＰＩＤを有する。そのフィールドＰＩＤに続いて、ユーザ名フィールドＵｓｅｒＮａｍｅおよびゲーム名フィールドＧａｍｅＮａ
ｍｅが形成される。ユーザ名フィールドＵｓｅｒＮａｍｅには、ＥＥＰＲＯＭ５４（図１）から読み出されたユーザ名、上の例でいえば「太郎」，「一郎」などが登録され、ゲーム名フィールドＧａｍｅＮａｍｅにはゲーム名、上の例でいえばＭａｒｉｏ  Ｋａｒｔ−１，Ｍａｒｉｏ  Ｋａｒｔ−２，Ｆ−Ｚｅｒｏ，Ｇｏｌｆ，・・・が登録される。ただし、カートリッジ１６（図１）を装着すれば、このゲーム名フィールドＧａｍｅＮａｍｅにはＲＯＭ４２（図１）から読み出されたゲーム名（図１６の６８）が自動的に登録され得る。
【００６２】
親機パケットはさらに、フラグＯＣを含み、このフラグＯＣは、先に述べたワンカートリッジ（ＯＣ）モードに対応できるかどうかを示すフラグである。具体的には、このフラグＯＣがリセットされているとき、すなわちＯＣ＝０のときには、そのときの親機のゲームカートリッジはＯＣモードに非対応であること、あるいは、ＯＣモードに対応できるが現在は通常モードでプレイしていることを示す。フラグＯＣがセットされているとき、すなわち、ＯＣ＝１のとき、ＯＣモードに対応できかつ現在そのＯＣモードでプレイしていることを示す。したがって、カートリッジを持たないユーザは、このフラグＯＣが「１」である親機を探す必要がある。
【００６３】
フラグＯＣに続いて、親機パケットは、フィールドＥＳｌｏｔ，ＵＳｌｏｔおよびＰａｙｌｏａｄを順次含む。ＥスロットフィールドＥＳｌｏｔは、エントリ（参加）可能な子機スロットの番号が格納される。つまり、新規参加子機が使用できるスロット番号が格納される。ＵスロットフィールドＵＳｌｏｔには、子機スロットの使用状況が格納される。具体的には、図１２に示す。すなわち、ＵスロットフィールドＵＳｌｏｔは、４つの領域を含み、この４つの領域の各々が子機スロット０，子機スロット１，子機スロット２および子機スロット３に対応する。そして、それぞれの領域には、該当する子機スロットが割り当てられた子機の番号（識別コード）ＣＩＤが格納される。該当する領域に対応する子機番号ＣＩＤが登録されているときには、その子機スロットが使用されていることがわかる。
【００６４】
ペイロードフィールドＰａｙｌｏａｄは、ゲーム処理において必要となるゲームデータを送信するためのフィールドであり、親機から子機へ送信されるゲームデータを格納するためのフィールドである。
【００６５】
子機から、その子機に割り当てられた子機スロットに送出される子機パケットが図１３に示される。すなわち、子機パケットは、子機番号ＣＩＤを格納または登録する先頭のフィールドＣＩＤとそれに後続するペイロードフィールドＰａｙｌｏａｄとを含む。ペイロードフィールドＰａｙｌｏａｄは子機から親機へ送信されるゲームデータを格納するためのフィールドである。
【００６６】
図１４が具体例を示す。この図１４の例では、親機番号フィールドＰＩＤに「５８」が格納されていて、したがって、親機番号ＰＩＤが「５８」であることがわかる。そして、この親機のユーザ名は「太郎」であり、ゲーム名はＭａｒｉｏ  Ｋａｒｔであり、フラグＯＣが「０」で、ＥスロットフィールドＥＳｌｏｔには「２」が登録されていて、ＵスロットフィールドＵｓｌｏｔを参照することにより子機スロット０には「１６」の子機番号（ＣＩＤ）を持った子機が、子機スロット１には「１３０」を持った子機がそれぞれ接続されているが、子機スロット２および３はともに「０ｈ」であるので空きスロットであることがわかる。
【００６７】
このような状態の親機に対して新たな子機が接続（Ｅｎｔｒｙ）を試みる場合には、親機のＵスロットフィールドＵＳｌｏｔを参照すると子機番号ＣＩＤとして「１６」および「１３０」が使用されているので、それ以外の子機番号ＣＩＤをたとえば乱数を発生させ
ることによって決定する。一例として「８６」が当該子機のＣＩＤとして決定されたとする。したがって、その子機は、ＥＳｌｏｔで指定される子機スロット（子機スロット２）にＣＩＤ＝８６を送信する。
【００６８】
そして、親機では、子機スロット２で「８６」を受信することにより、子機番号ＣＩＤとして「８６」を持つ子機がエントリしたい、ということを知る。そして、そのエントリを許可するかどうかを決定するわけであるが、許可する場合には、親機は、Ｕｓｌｏｔの子機スロット２に対応する領域に「８６」を設定した図１４の最下段に示す親機パケットをブロードキャストし、新たに「８６」の子機番号ＣＩＤを持つ子機の参加を許可したことを知らしめる。同時に、新規参加した子機は、Ｕｓｌｏｔの子機スロット２に対応する領域に自己の子機番号としてＣＩＤ＝８６があることを確認し、エントリが成功したことを判断できる。
【００６９】
図１５はＯＣモードに対応していないカートリッジのメモリマップを示し、図１６はＯＣモードに対応できるカートリッジのメモリマップを示す。
【００７０】
図１５の実施例では、カートリッジ１６に含まれるＲＯＭ４２（図１）は、ゲームプログラム領域６２およびゲーム名領域６４を含む。ゲームプログラム領域６２には、共通プログラム６６，親機プログラム６８および子機プログラム７０が予め格納される。共通プログラム６６は、自機が親機であると子機であるとに拘わらず使用するプログラムである。すなわち、自機が親機の場合は共通プログラムと後述の親機プログラムが実行され、自機が子機の場合は共通プログラムと後述の子機プログラムが実行される。親機プログラム６８は、自機が親機として機能するときにのみ作動するプログラムであり、変数ＭおよびＮを含むとともに、「０」に設定された（つまりオフされた）フラグＯＣを含む。ただし、変数Ｍは、その親機に同時に接続可能な子機の最大数を示し、変数Ｎは１台の子機が使用できる最大スロット数を示す。これらの変数ＭおよびＮは、ともに、ゲームに応じて変化することに留意されたい。子機プログラム７０は、自機が子機として機能するときにのみ作動するプログラムであり、上述の変数Ｎを含む。ゲーム名領域６４には、上記ゲームプログラムの名称、たとえばＭａｒｉｏ  Ｋａｒｔ−１，Ｇｏｌｆ，・・・などが予め格納される。
【００７１】
図１６の実施例でも、カートリッジ１６のＲＯＭ４４は、ゲームプログラム領域６２およびゲーム名領域６４を含む。ゲームプログラム領域６２には、図１５と同じ共通プログラム６６，親機プログラム６８および子機プログラム７０が設定されるとともに、ＯＣモードに対応するためにＯＣモード用ゲームプログラム７２が設定される。ＯＣモード用ゲームプログラム７２は親機プログラム７４と転送用子機プログラム７６とを含む。親機プログラム７４は、フラグＯＣが「１」に設定されていることを除いて、先の親機プログラム６８と同じである。転送用子機プログラム７６は、ＯＣモードでゲームプレイする子機へ転送するためのプログラムであり、変数Ｎを含む。ＯＣモードでエントリする子機は、親機から転送（ダウンロード）されるこの転送用子機プログラム７６を受けることによって、ゲームに参加できる。
【００７２】
図１７には図１に示す無線通信ユニット１４のＥＥＰＲＯＭ５４のメモリマップが示され、この図１７に示すように、ＥＥＰＲＯＭ５４は、ユーザ名領域７８を含み、このユーザ名領域７８にユーザ名、上の例でいえば「太郎」，「一郎」・・・などが登録される。
【００７３】
図１８に示すメモリマップを参照すると、ゲーム機１２のＷＲＡＭ２８（図１）は、親機リスト領域８０，親機リストクリアタイマ８２，子機リスト領域８４，変数領域８６および８８，ゲーム変数領域９０，送信バッファ領域９２および受信バッファ領域９４を含む。
【００７４】
親機リスト領域８０は、先に図３等で説明した親機リスト１８Ａを表示するためのデータ、たとえば親機番号（ＰＩＤ），ユーザ名（ＵｓｅｒＮａｍｅ），ゲーム名（ＧａｍｅＮａｍｅ），フラグＯＣ，ＥスロットフィールドＥＳｌｏｔを一時的に記憶保持しておくための領域である。
【００７５】
親機リストクリアタイマ８２は、この親機リスト領域８０のデータをクリアするまでの時間を計測するためのタイマであり、後述のように、このタイマ８２がタイムアップすれば、親機リスト領域８０は自動的にクリアされる。
【００７６】
子機リスト領域８４は、先に図９等で説明した子機リスト１８Ｂを表示するためのデータ、たとえば子機番号（ＣＩＤ），ユーザ名（ＵｓｅｒＮａｍｅ）およびゲーム名（ＧａｍｅＮａｍｅ）を一時的に記憶保持しておくための領域である。
【００７７】
ＷＲＡＭ２８はさらに、自機が親機として動作する（振舞う）ときに使用する変数をストアしておくための親機変数領域８６および自機が子機として動作する（振舞う）ときに使用する変数をストアしておくための子機変数領域８８を含む。
【００７８】
親機変数領域８６には、たとえば図１１に示す各フィールドＰＩＤ，ＵＳｌｏｔおよびＥＳｌｏｔのためのデータや接続対象の子機の子機番号（ＣＩＤ）さらには、変数ｎおよびｍが設定される。ここで、変数ｎは、１台の子機に現に実際に割り当てられているスロット数を示し、その最大数が先に説明した変数Ｎで与えられる。また、変数ｍは、１台の親機に現に実際に同時に接続されている子機数を示し、その最大数が上述の変数Ｍで与えられる。
【００７９】
子機変数領域８８には、たとえば図１２に示すフィールドＣＩＤのためのデータが設定されるとともに、接続結果を示す変数、復帰結果を示す変数、接続先の親機の親機番号（ＰＩＤ）、獲得したスロット番号（１つまたは複数）、同期タイマ、変数ｎ、さらには、全表示フラグが設定される。
【００８０】
ゲーム変数領域９０はゲーム実行中のゲーム変数、たとえばクリアしたステージ数や獲得したアイテム等を示す変数をストアするための領域である。そして、送信バッファ９２および受信バッファ９４は、それぞれ、送信データおよび受信データを一時的にストアしておくための領域である。
【００８１】
それぞれがこのような構成を有する２台以上の携帯ゲーム装置１０がゲームシステムを構築するが、以下に、そのゲームシステムにおける各携帯ゲーム装置１０の動作をフロー図を参照して説明する。
【００８２】
詳細な説明に先立って、ＯＣモードに対応できないカートリッジが自機に装着されている場合で、かつ、自機が親機になるときには、後述のステップＳ２９（図２１）−ステップＳ６９（図２３）の一連のステップを実行する。また、ＯＣモードに対応できないカートリッジが自機に装着されている場合で、かつ、自機が子機となるときには、後述のステップＳ８３−ステップＳ１０９（図２４）の一連のステップを実行することになる。
【００８３】
また、自機にＯＣモード対応可能なカートリッジが装着されてはいるが通常モード（ＯＣモードではない）でゲームをプレイする場合には、自機を親機とするときには、ステップＳ２９（図２１）−ステップＳ６９（図２３）の一連のステップを実行し、自機を子機とするときには、上と同様に、ステップＳ８３−ステップＳ１０９（図２４）の一連のステップを実行することになる。
【００８４】
さらに、自機にＯＣモード対応可能なカートリッジが装着されていて、ＯＣモードでゲームをプレイする場合には、自機は親機としてしか機能できず、この場合には、ステップＳ７５およびＳ７７（図１９）を経て、上述の親機の場合と同様に、図２１に示すステップＳ２９から図２３に示すステップＳ６９の一連のステップを実行する。
【００８５】
そして、自機にカートリッジが装着されていない場合には、自機はＯＣモードでの子機にしかなれず、したがって、この場合には、ステップＳ１１１（図１９）−ステップＳ１４７（図２６）の一連のステップを実行することになる。
【００８６】
図１９は携帯ゲーム機１２の動作を示す。携帯ゲーム機１２の電源（図示せず）を投入すると図１９の動作が開始され、最初は、ブート（Ｂｏｏｔ）ＲＯＭ２４内に設定された動作を実行する。つまり、最初のステップＳ１で、プロセサ２０は、たとえばコネクタ４０（図１）からの信号に基づいて、カートリッジ１６が装着されているかどうかを検出する。そして、ステップＳ３でカートリッジがあると判断した場合には、カートリッジ１６のＲＯＭ４２のプログラムに移行し、続くステップＳ５で、そのカートリッジがＯＣモードに対応可能なカートリッジかどうか判断する。このステップＳ５では、図１５のカートリッジ（ＯＣモードに対応不可能なカートリッジ）が装着されているか、図１６のカートリッジ（ＯＣモードに対応可能なカートリッジ）が装着されているかを判断する。
【００８７】
ステップＳ５で“ＮＯ”が判断されたとき、すなわち自機にカートリッジは装着されているがそのカートリッジがＯＣモード対応カートリッジではないとき、図２０のステップＳ７に進み、図１８に示す親機リスト領域８０をクリアするとともに、同じく図１８に示す親機リストクリアタイマ８２をリセットし、さらには図１８の子機変数領域８８に設定されている全表示フラグをオン（「１」を設定）する。なお、親機リストクリアタイマ８２はリセット後自動的にタイマのカウントを開始する。
【００８８】
その後、ステップＳ９において、図１１で示すような親機パケットの受信を試みる。ステップＳ１１で、親機パケットを成功裏に受信したかどうか判断する。そして、ステップＳ１１で“ＹＥＳ”を判断したとき、続くステップＳ１３において、その親機パケットをブロードキャストした親機は、親機リストに存在しない親機かどうか判断する。具体的には、このステップＳ１３では、受信した親機パケットのデータ（図１８に示すＷＲＡＭ２８の受信バッファ９４に一時的にストアされているデータ）のうちの親機ＰＩＤやユーザ名が、親機リスト８０（図１８）に登録されている親機かどうか判断する。このステップＳ１３で“ＹＥＳ”が判断されると、つまり、新規な親機の場合には、続くステップＳ１５において、プロセサ２０は、親機リスト８０に、親機パケットに含まれた親機ＩＤ（ＰＩＤ），ユーザ名（ＵｓｅｒＮａｍｅ），ゲーム名（ＧａｍｅＮａｍｅ），ＯＣフラグ（ＯＣ）およびエントリスロット（ＥＳｌｏｔ）を新たに登録する。
【００８９】
先のステップＳ１１で“ＮＯ”を判断したとき、またはステップＳ１５での登録を終えたとき、次のステップＳ１７で、先のステップＳ７でリセットした親機リストクリアタイマ８２（図１８）の値が２秒以上になったかどうか判断する。“ＹＥＳ”なら、ステップＳ１９で親機リスト８０をクリアするとともに、親機リストクリアタイマ８２をリセットする。ここで、親機リストクリアタイマ８２をリセットするのは次の理由による。すなわち、図８を参照して前述したようにある親機（図８の「一郎」）が通信可能範囲から外れた場合に、その親機を親機リスト８０から削除しなければならない。そのため、定期的に（この実施例では２秒ごとに）、親機リスト８０をクリアして通信可能範囲の親機のリストへの登録を最初からおこなうことによって、通信可能範囲から外れた親機が親機リストに残らないようにしているのである。ステップＳ１７で“ＮＯ”を判断したとき、またはステップＳ１９を経た後、次のステップＳ２１において、プロセサ２０は、上述の全表示
フラグがオン（「１」）かどうか判断する。なお、実施例では、この全表示フラグは、デフォルトとして、「１」またはオンに設定されている。全表示フラグがオンのとき、ステップＳ２３で、親機リストに登録されている親機のうち、エントリスロットＥＳｌｏｔが「ｆｆｈ」でない親機、つまり、新たな子機のエントリを許容するすべて親機の情報（具体的には、ユーザ名ＵｓｅｒＮａｍｅおよびゲーム名ＧａｍｅＮａｍｅ）を図３に示すように表示する。全表示フラグがオフ（「０」）のときには、ステップＳ２５において、親機リストに登録されている親機のうち、エントリスロットＥＳｌｏｔが「ｆｆｈ」でなくしかも通信可能な（すなわち、親機のカートリッジのゲームと子機のカートリッジのゲームが所定の関係にあり通信可能な）親機の情報（ユーザ名ＵｓｅｒＮａｍｅおよびゲーム名ＧａｍｅＮａｍｅ）を図４に示すように表示する。
【００９０】
その後、図２１のステップＳ２７に進み、プロセサ２０は、操作キー３８からの信号を参照して、Ｂボタン（図示せず）が押されたかどうか判断する。Ｂボタンが押されたということは、その携帯ゲーム装置のユーザが、自機を親機として振舞わせることを決めたことを意味し、その場合には、変数ＭおよびＮの範囲内で子機を募集するために、ステップＳ２９の親機接続処理を実行する。ただし、１台の子機に与えられる最大スロット数を示す変数Ｎおよび最大参加可能子機数を示す変数Ｍは、それぞれ、ゲームによって変更可能である。たとえば、最大参加子機数Ｍを大きくするためには最大スロット数Ｎを小さくし、データレートを重視するなら最大スロット数Ｎを大きくし最大参加子機数Ｍを小さくすればよい。
【００９１】
ここで、図２７および図２８を参照して、子機募集のためのステップＳ２９における親機の接続処理について、詳細に説明する。図２７の最初のステップＳ１００１では、プロセサ２０は、図１８に示す子機リスト領域８４をクリアするとともに、初期画面を表示させる。このステップＳ１００１は初期設定ステップであり、上の処理に加えて、さらに、１つの子機の対して割り当てるサブタイムスロットの最大数（Ｎ）を設定するとともに、エントリを許可する子機の最大数（Ｍ）を設定する。ただし、これら最大数ＮおよびＭは、それぞれ、実行すべきゲームプログラムに応じて決定できる。このように、１つの子機に対して割り当てるサブタイムスロットの最大数Ｎや同時参加可能な子機の最大数Ｍをゲームに応じて決定するようにすれば、一定のサブタイムスロット数の中で、１つの子機に対して割り当てる個数を少なくして参加可能な子機の数を多くするか、または、１つの子機に対して割り当てる個数を多くしてデータレートを大きくするかのいずれかをゲームの内容に応じて決定することができる。たとえば、多くのプレイヤが参加する方が面白いゲームの場合にはスロット数Ｎを小さくし参加子機数Ｍを大きくし、通信量が多いゲームの場合はスロット数Ｎを大きくし参加子機数Ｍを小さくすればよい。
【００９２】
続くステップＳ１００３では、プロセサ２０は、親機変数領域８６（図１８）の親機ＰＩＤを設定するための領域ＰＩＤに擬似ランダム値を書き込む。そして、次のステップＳ１００５において、領域８６内の、親機（自機）に実際に接続している子機の数を示す変数ｍをゼロ（０）とし、続くステップＳ１００７で、接続対象子機の番号を示す接続対象ＣＩＤの領域に「Ｎｕｌｌ」を設定するとともに、領域８６内の、現在接続処理中の子機に実際に付与しているスロット数を示す変数ｎにゼロ（０）を書き込む。なお、接続対象ＣＩＤとは、現在接続処理中の子機のＣＩＤのことであり、エントリ処理において１つの子機に複数のスロットを付与する場合に、ある子機に対するスロットの付与を複数回連続しておこなうために、ある子機に対するスロットの付与が開始されたら、接続対象ＣＩＤ以外のＣＩＤの子機からのエントリ要求を無視するためのものである。次のステップＳ１００９において、領域８６内の、エントリスロット領域ＥＳｌｏｔに、空いているスロット番号のうちの１つを割り当てる。
【００９３】
その後、ステップＳ１０１１において、プロセサ２０は、操作キー３８（図１）からの
信号を検証して、Ａボタン（図示せず）が押されたかどうか判断する。ステップＳ１０１１で“ＹＥＳ”なら、そのとき自機（親機）のユーザがその子機のエントリを拒否したことを意味するので（図９参照）、続くステップＳ１０１３において、プロセサ２０は、図１８の子機リスト領域８４から、その選択された子機のデータ、ＵＳｌｏｔおよびＣＩＤを削除する。その後、ステップＳ１０１５で、図９に示すように新たな子機リスト１８Ｂを表示させる。
【００９４】
そして、ステップＳ１０１１で“ＮＯ”が判断されたときには、すなわち親機のユーザがＡボタンを押さなかったとき、またはステップＳ１０１５を実行した後には、ステップＳ１０１７において、プロセサ２０は、操作キー３８からの信号に基づいて、スタートキー（図示せず）が操作されたかどうか判断する。“ＹＥＳ”なら、そのままリターンする。しかしながら、“ＮＯ”なら、続くステップＳ１０２１において、図２９に詳細に示す親機の送受信処理を実行する。
【００９５】
図２７のステップＳ１０１９で示す親機の送受信処理が、図２９に詳細に示される。図２９のステップＳ２００１では、プロセサ２０は、送信バッファ９２（図１８）に未送信データがあるかどうか判断する。“ＹＥＳ”なら、次のステップＳ２００３において、図１４の親機スロットに必要なデータ、たとえばＰＩＤ，ユーザ名，ゲーム名，ＯＣフラグ，Ｅスロット，Ｕスロットおよび、上記未送信データであるペイロードを送信する。そして、次のステップＳ２００５で子機パケットを受信した後、リターンする。
【００９６】
先のステップＳ２００１で“ＮＯ”が判断されたときには、次のステップＳ２００７で、プロセサ２０は、過去６４ミリ秒の間データ送信をしなかったかどうか判断する。なお、この「６４ミリ秒」という時間は、タイマずれを解消できる数値の一例であり、当然この数値に限られるものではない。
【００９７】
ステップＳ２００７で“ＹＥＳ”を判断したときには、ステップＳ２００９で、親機スロットを用いて、ペイロードを除く各データ、たとえばＰＩＤ，ユーザ名，ゲーム名，ＯＣフラグ，ＥスロットおよびＵスロットを送信する。このステップＳ２００９は子機からのエントリを可能にするために必要なステップであり、ペイロード（送信すべきデータ）がなくても、エントリ処理に必要なデータ（ＰＩＤ，ユーザー名，ゲーム名，ＯＣフラグ，Ｅスロット，Ｕスロット）を定期的に送信しているため、子機は常にエントリ処理できるのである。このステップＳ２００９では、ペイロードデータは送信しない。そして、ステップＳ２００９の終了後、またはステップＳ２００７で“ＮＯ”が判断されたとき、先のステップＳ２００５を経てリターンする。
【００９８】
図２７に戻って、ステップＳ１０１９に続くステップＳ１０２１で、プロセサ２０は、図１１に示す親機パケットのフィールドＥＳｌｏｔで指定したスロットで、子機番号ＣＩＤを受信できたかどうか判断する（すなわち、子機がエントリスロットを使用してエントリ要求をしてきたかどうかを判断する）。このステップＳ１０２１で“ＮＯ”の場合、先のステップＳ１０１１に戻り、“ＹＥＳ”の場合、次のステップＳ１０２３で、図１８の子機変数領域８６の接続対象子機ＣＩＤがＮｕｌｌかどうか判断する（すなわち、現在エントリ処理中の他の子機があるか否かを判断する）。“ＹＥＳ”なら、つまり、接続対象子機番号（ＣＩＤ）が登録されていなければ、ステップＳ１０２５で、ステップＳ１０１９で受信した子機ＣＩＤを接続対象子機番号（ＣＩＤ）として、図１８の領域８６内の接続対象子機ＣＩＤに登録する。
【００９９】
先のステップＳ１０２３で“ＮＯ”のとき、またはステップＳ１０２５を終えたとき、ステップＳ１０２７において、プロセサ２０は、受信したＣＩＤが接続対象ＣＩＤと同じかどうか判断する（すなわち、受信したＣＩＤが現在エントリ処理中の子機のＣＩＤか否
かを判断する）。“ＮＯ”なら先のステップＳ１０１１に戻るが、“ＹＥＳ”なら次のステップＳ１０２９で、図１８の領域８６内のＵスロット領域ＵＳｌｏｔのエントリスロットを示す部分に、そのＣＩＤを格納する。そして、ステップＳ１０３１で、実接続スロット数ｎをインクリメント（＋１）し、ステップＳ１０３３で、ｎ＝Ｎかどうか、すなわち、実接続スロット数ｎが１台の子機に与える最大スロット数Ｎ（ゲーム毎に異なる）に達したかどうかを判断する。“ＹＥＳ”なら、その子機に対してそれ以上のスロットの付与は許容できないので、図２８で示す次のステップＳ１０３５に進む。しかしながら、“ＮＯ”なら、その子機に対してさらにスロットを付与することが可能なので、ステップＳ１００９に戻る。
【０１００】
実付与スロット数ｎが最大付与可能スロット数Ｎに達したときには、その子機に対するエントリ処理を終了して、図２８のステップＳ１０３５に進むが、このステップＳ１０３５では、親機となった携帯ゲーム機のプロセサ２０は、エントリ処理が終了した子機のユーザ名、およびゲーム名等を受信する。この子機のユーザ名およびゲーム名がステップＳ１０３７において、子機リストに追加され、ステップＳ１０３９において、子機リスト１８Ｂが、図９に示すように表示される。
【０１０１】
その後、親機のプロセサ２０は、ステップＳ１０４１において、実接続子機数ｍをインクリメント（＋１）し、ステップＳ１０４３において、その実接続子機数ｍが最大接続可能子機数Ｍ（ゲーム毎に異なる）と等しくなったかどうかを判断する。このステップＳ１０４３で“ＹＥＳ”が判断されると、つまり、それ以上子機を接続できないと判断したときには、そのままリターンする。
【０１０２】
逆に、１台以上の子機が未だ接続可能な場合、すなわちステップＳ１０４３で“ＮＯ”が判断された場合には、図２７のステップＳ１００７に戻る。
【０１０３】
このようにして、図２１のステップＳ２９での接続処理が実行され、さらに、図２２のステップＳ３１において、子機の募集を一旦打ち切り、他の子機の参加を禁止するために、エントリスロットＥＳｌｏｔに「ｆｆｈ」を書き込む。そして、ゲーム中に必要に応じて、子機を追加募集できるように、図１８の領域８６内の接続対象ＣＩＤをＮｕｌｌ，実接続スロット数ｎ＝０としておく。
【０１０４】
その後、ステップＳ３３においてゲームスタートかどうか、つまり、操作キー３８に含まれるスタートボタン（図示せず）が押されたかどうか判断する。スタートボタンが押されると、次のステップＳ３５において、プロセサ２０は、図１８に示す親機変数領域８６のＵスロット領域ＵＳｌｏｔを参照して、現に接続中の子機の数「ｍ」を検出する。Ｕスロットの各領域のうち「０ｈ」でない領域の数が現に接続中の子機の数ｍである。そして、ステップＳ３７で、接続中の子機数ｍが最大接続可能数Ｍより小さいかどうか判断する。このステップＳ３７で“ＹＥＳ”が判断されるということは、新規子機のエントリを許容できることを意味していて、したがって、この場合には、次のステップＳ３９において、親機変数領域８６のＥスロット領域ＥＳｌｏｔに、空いているスロット番号（Ｕスロットのうち「０ｈ」である領域に対応するスロット番号）の１つを設定する。これによって、領域ＥＳｌｏｔの「ｆｆｈ」の状態設定が解除される。
【０１０５】
そして、ステップＳ４１において、先に図２９を参照して説明した親機の送受信処理を実行することによって、図１１に示す親機パケットをブロードキャスト（送信）するとともに、各子機からの図１３に示す子機データ（パケット）を受信する。
【０１０６】
その後、ステップＳ４３において、プロセサ２０は、一定時間ｔ１以上、或る子機のデータを受信できなかったかどうか判断する。このステップＳ４３で“ＹＥＳ”が判断され
るということは、該当の子機が既に通信可能範囲６４（図２）を離脱した可能性があることを意味し、その場合には、ステップＳ４５において、プロセサ２０は、該当の子機の子機番号ＣＩＤを親機変数領域８６（図１８）のＵスロット領域ＵＳｌｏｔから削除する。この処理によって、離脱した子機が使用していた子機スロットが空きスロットになるので、離脱した子機の代わりに新たな子機のエントリが可能になる。
【０１０７】
ステップＳ４３で“ＮＯ”が判断されたとき、またはステップＳ４５を終えたとき、次のステップＳ４７において、プロセサ２０は、親機変数領域８６のＥスロット領域ＥＳｌｏｔに「ｆｆｈ」が設定されているかどうか判断する。“ＹＥＳ”なら、次のステップＳ４９で、プロセサ２０は、カートリッジ１６のゲームプログラム６２（図１５）に従って、ゲーム処理を実行する。
【０１０８】
図２２のステップＳ４７で“ＮＯ”が判断されたときには、子機の途中参加を許容するために、プロセスは図２３のステップＳ５１に進む。このステップＳ５１では、親機のプロセサ２０は、ＥスロットフィールドＥＳｌｏｔで指定したスロットで子機ＣＩＤを受信できたかどうか判断する。“ＹＥＳ”なら、次のステップＳ５３において、図１８の領域８６内の接続対象ＣＩＤの領域に「Ｎｕｌｌ」が書き込まれているかかどうか判断する。“ＹＥＳ”なら、つまり、接続対象子機のＣＩＤが登録されていなければ、ステップＳ５５で、Ｅスロットで指定したスロットで受信した子機ＣＩＤを接続対象ＣＩＤの領域に登録する。
【０１０９】
先のステップＳ５３で“ＮＯ”のとき、またはステップＳ５５を終えたとき、ステップＳ５７において、プロセサ２０は、受信した子機番号ＣＩＤが接続対象ＣＩＤと同じかどうか判断する。“ＹＥＳ”なら次のステップＳ５９で、図１８の領域８６のＵスロット領域ＵＳｌｏｔのエントリスロットを示す部分に、その子機番号ＣＩＤを格納する。そして、ステップＳ６１で、実接続スロット数ｎをインクリメント（＋１）し、ステップＳ６３で、ｎ＝Ｎかどうか、すなわち、実接続スロット数ｎが１台の子機に与える最大スロット数Ｎに達したかどうかを判断する。“ＹＥＳ”なら、その子機にそれ以上のスロット付与は許容できないのでその子機に対するスロット付与を終了し、ステップＳ６５で、領域８６内の、接続対象ＣＩＤの領域に「Ｎｕｌｌ」を設定するとともに、変数ｎにゼロ（０）を書き込む。
【０１１０】
その後、親機のプロセサ２０は、ステップＳ６７において、実接続子機数ｍが最大接続可能子機数Ｍと等しくなったかどうかを判断する。このステップＳ６７で“ＹＥＳ”が判断されると、つまり、それ以上子機を接続できないと判断したときには、ステップＳ６９において、Ｅスロット領域ＥＳｌｏｔに「ｆｆｈ」を書き込む。
【０１１１】
なお、ステップＳ６９の後、または、ステップＳ５１，Ｓ５７，Ｓ６３もしくはＳ６７においてそれぞれ“ＮＯ”が判断されたときには、いずれの場合にも子機の途中参加処理をやめてゲーム処理に戻る（図２２のステップＳ４９に戻る）。
【０１１２】
以上が、自機にＯＣモード対応でないカートリッジが装着されている場合で、かつ自機が親機になる場合の携帯ゲーム装置の処理である。
【０１１３】
次に、自機にＯＣモード対応のカートリッジが装着されている場合の携帯ゲーム装置の処理を説明する。
【０１１４】
図１９のステップＳ５において“ＹＥＳ”が判断されたとき、すなわち、自機に図１６に示すＯＣモード対応のカートリッジを装着している場合には、次のステップＳ７１で、プロセサ２０は、モード選択画面（図示せず）を表示する。そして、ステップＳ７３にお
いて、通常モードが選択されたかどうか判断する。“ＹＥＳ”なら、先のステップＳ５で“ＮＯ”を判断したときと同様に、図２０のステップＳ７に進む。すなわち、ＯＣモード対応でないカートリッジを装着している場合の処理と、ＯＣモード対応のカートリッジを装着しているが通常モードを選択した場合の処理は同じである。
【０１１５】
自機にＯＣモード対応のカートリッジが装着されていてかつＯＣモードのゲームをプレイする場合には、自機は親機にしかなれない。詳しく述べると、ステップＳ７３で“ＮＯ”なら、すなわち、ＯＣモードが選択された場合には、次のステップＳ７５において、先のステップＳ２９（図２１）と同様に、図２７，図２８を参照して詳しく説明した親機の接続処理を実行する。ただし、このときには、１台の子機の使用可能スロット数Ｎは「１」とし（Ｎ＝１）、最大接続可能台数Ｍとしては、ゲームで許容されている数を設定する。その後、ステップＳ７７で、プロセサ２０は、図１６に示す転送用子機プログラム７６を子機に転送（ダウンロード）する。その後、図２２のステップＳ３１に進み、前述と同様にそれぞれ以降の各ステップを実行する。
【０１１６】
以上が、自機にＯＣモード対応のカートリッジが装着されている場合の携帯ゲーム装置の処理である。
【０１１７】
次に、自機にＯＣモード対応でないカートリッジが装着されている場合で、かつ自機が子機になる場合の携帯ゲーム装置の処理を説明する。
【０１１８】
図２１のステップＳ２７で“ＮＯ”が判断されたときには、つまり自機が親機になるという選択をしなかったときには、続くステップＳ７９において、携帯ゲーム機１２のプロセサ２０は、操作キー３８からの操作信号を検証して、Ａボタン（図示せず）が操作されたかどうか、つまり、接続を希望する親機を選択したかどうかを判断する。このステップＳ７９で“ＹＥＳ”を判断ときには、プロセサ２０は、続いて、ステップＳ８１において、当該選択した親機との間で通信可能かどうかを判断する。すなわち、親機のカートリッジと自機のカートリッジが所定の関係にあって通信可能かどうかを判断する。通信可能なときには、その後、図２４のステップＳ８３に進み、子機の接続処理を実行する。この子機の接続処理は、詳しくは、図３０および図３１に示される。
【０１１９】
図３０の最初のステップＳ３００１では、子機となった携帯ゲーム機のプロセサ２０が、親機パケット（図１１）の受信を試みる。そして、次のステップＳ３００３において、メニュー画面（図３等）で選択した親機の、フレーム同期データｓｙｎｃを受信できたかどうか判断する。具体的には、メニュー画面で選択した親機のＰＩＤを含む親機パケットの同期データｓｙｎｃを受信できたかどうか判断する。
【０１２０】
ステップＳ３００３で“ＮＯ”が判断されたとき、つまり、選択した親機の親機パケットが受信できなかった場合には、ステップＳ３００５において、タイムアウト（時間切れ）かどうか判断し、このステップＳ３００５で“ＮＯ”なら先のステップＳ３００１に戻るが、“ＹＥＳ”なら、ステップＳ３００７で接続結果変数（図１８の領域８８内の）に「失敗」を書き込んでリターンする。
【０１２１】
ステップＳ３００３で“ＹＥＳ”が判断されたとき、つまり、対象としている親機の同期信号を受信できたときには、ステップＳ３００９で、子機のプロセサ２０は、同期タイマ（領域８８）をリセットし、次のステップＳ３０１１に進む。このステップＳ３０１１では、プロセサ２０は、擬似ランダム値を子機のＩＤ番号ＣＩＤとする。そして、ステップＳ３０１３において、このときのＣＩＤを持った子機が既に存在するかどうか判断する。すなわち、受信した親機パケットのＵスロットを参照して、同一のＣＩＤが既に存在するかどうか、判断する。ステップＳ３０１３で“ＹＥＳ”の場合には一旦付与した番号を
変更する必要があり、したがって、この場合には、ステップＳ３０１１を再度実行し、新たな番号ＣＩＤを付与して、ステップＳ３０１３での検証を再度実行する。
【０１２２】
ステップＳ３０１３で“ＮＯ”が得られるまでこれらステップＳ３０１１およびＳ３０１３が繰り返され、“ＮＯ”が得られたとき、次のステップＳ３０１５に進む。ステップＳ３０１５では、実付与スロット数ｎをゼロ（０）とし、さらに、次のステップＳ３０１７で、親機パケットを受信するとともに、ステップＳ３０１９において、同期タイマを再度リセットする。そして、ステップＳ３０２１において、プロセサ２０は、受信した親機パケットのＥスロットＥＳｌｏｔ（図１１参照）が「ｆｆｈ」であるかどうか判断する。このステップＳ３０２１で“ＹＥＳ”が判断されると、子機のエントリは禁止されているので、先のステップＳ３００７を経て、「失敗」としてリターンする。
【０１２３】
ステップＳ３０２１で“ＮＯ”が判断されたときには、子機のエントリは禁止されてはいないので、図３１のステップＳ３０２３に進む。ステップＳ３０２３では、子機のＣＰＵコアは、そのときの親機パケットのＥスロットフィールドＥＳｌｏｔで示されるスロットにステップＳ３０１１で得た番号ＣＩＤを送信する。そして、次のステップＳ３０２５において親機パケットを受信するとともに、ステップＳ３０２７において同期タイマを再度リセットする。
【０１２４】
そして、続くステップＳ３０２９において、子機のプロセサ２０は、受信した親機パケットのＵスロットフィールドのエントリスロット位置に自身の番号（ＣＩＤ）があるかどうか確認する。そして、このステップＳ３０２９で“ＮＯ”を判断すると、次のステップＳ３０３１で、プロセサ２０は、タイムアウトかどうか判断する。タイムアウトではない場合には、先のステップＳ３０１７（図３０）に戻るが、タイムアウトを生じた場合には、図３０のステップＳ３００７において「失敗」を接続結果変数に書き込んだ後にリターンする。
【０１２５】
ステップＳ３０２９で“ＹＥＳ”が判断されたとき、つまり、受信した親機パケットのＵスロットのエントリスロット位置に自身の番号（ＣＩＤ）があったときには、続くステップＳ３０３３において実付与スロット数ｎをインクリメント（＋１）した後、ステップＳ３０３５において、実付与スロット数ｎが１台の子機に付与できる最大スロット数Ｎ（ただし、このＮは、ゲームによって変化し、たとえば１−４の値である。）と等しくなったかどうか判断する。このステップＳ３０３５で“ＮＯ”が判断されるときには、つまり、スロットが未だ付与できるときには、先のステップＳ３０２５に戻って親機パケットを受信する。
【０１２６】
しかしながら、ステップＳ３０３５で“ＹＥＳ”が判断されると、可能な数のスロットがすべて割り付けられたものとして、次のステップＳ３０３７において、接続結果変数に「成功」を登録し、次のステップＳ３０３９に進む。このステップＳ３０３９では、接続した親機の親機番号ＰＩＤおよび獲得したスロット番号を自身の内部ＲＡＭ２８（図１８）の領域８８に格納する。ただし、スロット数は複数の場合もあり、この実施例では「０」−「３」のいずれかの数値である。そして、その後図２４のステップＳ８５にリターンする。
【０１２７】
そのステップＳ８５では、領域８８の接続結果変数を参照して、接続結果が「成功」かどうか判断する。そして、“ＮＯ”の場合には、次のステップＳ８７において、メッセージたとえば「接続できませんでした」を子機のＬＣＤ１８（図１）に表示して図２０のステップＳ７に戻る。
【０１２８】
親機への接続成功の場合には、次のステップＳ８９において、子機のプロセサ２０は、
親機に対して、自身に付与された子機スロットを利用して、自身のユーザ名およびゲーム名を送信する。そして、ステップＳ９１において、ゲームスタートかどうか、すなわち、操作キー３８に含まれるスタートボタンが押されたかどうか判断する。このステップＳ９１でスタートボタンのオンが検出されると、次のステップＳ９３において、子機の送受信処理を実行する。
【０１２９】
図２４のステップＳ９３で示す子機の送受信処理が、図３２に詳細に示される。図３２のステップＳ４００１で親機パケットを受信し、次のステップＳ４００３で同期タイマ（図１８）をリセットする。そして、ステップＳ４００５では、子機のプロセサ２０は、送信バッファ９２（図１８）に未送信データがあるかどうか判断する。“ＹＥＳ”なら、次のステップＳ４００７において、既に割り付けられている子機スロットを用いて、必要なデータ、たとえばＣＩＤおよびペイロードを送信する。そして、未送信データがない場合、またはステップＳ４００７の後、プロセスは、図２４のステップＳ９５にリターンする。
【０１３０】
再び図２４に戻って、ステップＳ９５では、子機のプロセサ２０は、時間ｔ２以上の間にわたって親機からのデータを受信できなかったかどうか判断する。この時間ｔ２は、先の図２２のステップＳ４３での時間ｔ１より短い。すなわち、ｔ１＞ｔ２である。なぜなら、ｔ１は親機が通信異常の子機を切断する時間であり、ｔ２は子機が復帰処理を開始する時間であるので、親機は子機の復帰処理を待ってから切断する必要があるためである。“ＮＯ”の場合には、さらに次のステップＳ９７で、受信した親機パケットのＵスロットフィールドに自身の番号ＣＩＤが含まれているかどうか判断する。ステップＳ９７で“ＹＥＳ”の場合には、ステップＳ９９において、図２２のゲーム処理を実行する。ただし、ステップＳ９７で“ＮＯ”が判断されたときは、すなわち、親機パケットのＵスロットフィールドに自機の番号がない場合には、ステップＳ１０１において、メッセージたとえば「親機から切断されました」をＬＣＤに表示し、図２０のステップＳ７に戻る。
【０１３１】
先のステップＳ９５で“ＹＥＳ”が判断されたときには、つまり、一定時間ｔ２以上にわたって親機からのデータを受信できなかったときには、ステップＳ１０３においてメッセージたとえば「親機と通信できなくなりました。復帰を試みます」を表示した後、ステップＳ１０５で、復帰処理を実行する。
【０１３２】
この復帰処理の詳細が図３３に示されていて、この図３３の最初のステップＳ５００１では、子機のプロセサ２０は、復帰すべき親機パケットの受信を試みる。そして、ステップＳ５００３では、その親機からのブロードキャストデータを受信できたかどうか判断する。ただし、自分が復帰すべき親機かどうかは、図１８の領域８８に登録されている「接続先のＰＩＤ」をみればわかる。
【０１３３】
ステップＳ５００３で“ＮＯ”が判断されたとき、つまり、復帰すべき親機パケットのデータを受信できなかったとき、次のステップＳ５００５で、タイムアウトになったかどうか判断する。そして、“ＮＯ”なら、先のステップＳ５００３に戻るが、タイムアウトになってしまったら、次のステップＳ５００７で、図１８に示す領域８８に含まれる復帰結果変数に「失敗」を書き込み、リターンする。
【０１３４】
先のステップＳ５００３で“ＹＥＳ”が判断されたとき、すなわち、対象としている親機からの親機パケットを受信できたときには、次のステップＳ５００９で同期タイマをリセットし、さらに、ステップＳ５０１１で親機パケットを受信する。そして、ステップＳ５０１３において、その親機パケットのＵスロットフィールドに自身の番号ＣＩＤがあるかどうか判断する。受信した親機パケットに自機の番号があるということは、時間ｔ２以上にわたる通信不能状態の原因は、親機による意図的な切断ではないということであり、
したがって、次のステップＳ５０１５において、領域８８（図１８）の復帰結果変数に「成功」を登録してリターンする。このように復帰処理をすることによって、例えば、親機と子機が誤って通信可能範囲を外れた場合や、通信状態が悪くて通信ができなかった場合、または、子機を操作しているプレイヤに用事ができて、その子機プレイヤが少しの間通信可能範囲を外れる必要がある場合等に、それらの要因が解消されて通信が可能になった後に、以前の通信状態に復帰することが可能になる。
【０１３５】
ただし、ステップＳ５００３で“ＹＥＳ”になってもステップＳ５０１３で“ＮＯ”が判断されたときには、通信不能が親機の意思による切断が原因であったものとして、先のステップＳ５００７を経て、リターンする。
【０１３６】
図３３のサブルーチンから図２４のステップＳ１０７にリターンすると、このステップＳ１０７では、領域８８の復帰結果変数を参照して、復帰が「成功」したかどうか判断する。“ＹＥＳ”なら、ステップＳ９９に進んでゲーム処理を実行する。しかしながら、“ＮＯ”なら、ステップＳ１０９でメッセージたとえば「復帰できませんでした」を表示した後、図２０のステップＳ７に戻る。
【０１３７】
以上が、自機にＯＣモード対応でないカートリッジが装着されている場合で、かつ自機が子機になる場合の携帯ゲーム装置の処理である。
【０１３８】
次に、自機にカートリッジが装着されていない場合の携帯ゲーム装置の処理を説明する。ただし、この場合には、自機は、ＯＣモード対応のゲームの子機として動作できるだけである。
【０１３９】
図１９に戻って、ステップＳ３で“ＮＯ”が判断されたとき、すなわちその子機にカートリッジがないことを検出した場合は、ブートＲＯＭ（図１の２４）のプログラムであるステップＳ１１１において、無線通信ユニット１４（図１）のＲＯＭ５２に設定されているＯＣＤプログラム（親機から子機用プログラムをダウンロードするためのプログラム）を携帯ゲーム機１２のプロセサ２０に含まれるＷＲＡＭ２８に展開し、その後ステップＳ１１３において、子機のプロセサ２０は、そのＷＲＡＭ２８上に展開されたＯＣＤプログラムを起動する。
【０１４０】
その後、図２５のステップＳ１１５において、子機のプロセサ２０は、図１８に示すような親機リスト領域８０をクリアするとともに、親機リストクリアタイマ８２をリセットする。ついで、ステップＳ１１７において、親機パケットの受信を試みる。そして、ステップＳ１１９において、親機パケットの受信が成功したかどうか判断し、“ＮＯ”ならステップＳ１２５に進み、“ＹＥＳ”なら、ステップＳ１２１に進む。ステップＳ１２１では、受信した親機パケットに含まれる親機番号ＰＩＤと図１８に示す親機リスト領域８０に登録されている番号ＰＩＤとを比較して、その親機パケットを送信した親機が親機リスト内に存在しないかどうか判断する。このステップＳ１２１で“ＹＥＳ”が判断されると、ステップＳ１２３において、親機リストに新たな親機を登録するように、親機パケットから読み出された、親機番号ＰＩＤ，ユーザ名，ゲーム名，ＯＣフラグおよびＥスロットを親機リスト領域８０に追加する。その後ステップＳ１２５に進む。
【０１４１】
ステップＳ１２５では、ステップＳ１１５でリセットした親機リストクリアタイマ８２の値が「２秒」以上になったかどうか判断する。“ＹＥＳ”なら、ステップＳ１２７で親機リストすなわち親機リスト領域８０をクリアするとともに、親機リストクリアタイマ８２をリセットする。その後、ステップＳ１２５で“ＮＯ”を判断した場合と同様に、ステップＳ１２７に進む。
【０１４２】
ステップＳ１２７では、親機リストの内、「Ｅスロットが「ｆｆｈ」でなくかつＯＣフラグが「１」である親機、つまり、ＯＣモードでのゲームがプレイできかつ子機の参加（エントリ）を拒否していない親機の情報（ユーザ名，ゲーム名）を表示する。それによって、当該子機のユーザに対して図５に示すような親機リスト１８Ａを作成し、自機が接続したい親機を選択させる。そして、ステップＳ１３１で、Ａボタン（図示せず）が操作されたかどうか判断する。つまり、どれか１つの親機が選択されたかどうか判断する。ステップＳ１２７で“ＮＯ”なら、つまり親機を選択しなかったら、次のステップＳ１３３で、操作キー３８に含まれる十字キー（図示せず）が操作されたかどうか判断する。十字キーの操作は、エントリを希望する親機の選択のためにカーソルを移動させるためであり、したがって、このステップＳ１３３で“ＹＥＳ”なら、次のステップＳ１３５でカーソルを移動させ、ステップＳ１１３に戻る。
【０１４３】
ステップＳ１３１で“ＹＥＳ”が判断されると、ステップＳ１３９に進んで子機の接続処理（図３０，図３１）を実行する。
【０１４４】
ステップＳ１３７で、既に詳細に説明した方法に従って、子機の接続処理を実行し、次のステップＳ１３９で、図１８の領域８８の接続結果変数を参照して、接続が成功したかどうか判断する。“ＮＯ”なら、ステップＳ１４１でメッセージたとえば「接続できませんでした」を表示して、ステップＳ１１１に戻る。
【０１４５】
ステップＳ１３９で“ＹＥＳ”が判断されると、プロセサ２０は、当該子機と成功裏に接続された親機に対して、自機のユーザ名，ゲーム名を送信する。その後、図２６のステップＳ１４５に進み、ＯＣモードでゲームをプレイするために、転送用子機プログラムを親機から受信して自機のＲＡＭ２８（図１）内に展開するとともに、そのプログラムを起動させる。そして、その後は、ステップＳ１４７において、先に説明した図２４ステップＳ９１−Ｓ１０９と同様の各ステップを実行する。
【０１４６】
以上が、自機にカートリッジが装着されていない場合の携帯ゲーム装置の処理である。
【０１４７】
なお、図２１のステップＳ８１で“ＮＯ”が判断されたとき、すなわち、親機の選択を試みたが通信できなかったときには、ステップＳ１４９において、メッセージたとえば「その親機は選択できません」を表示して図２０のステップＳ９に戻る。
【０１４８】
また、図２１のステップＳ７９で“ＮＯ”が判断されたとき、つまり、ＢボタンもＡボタンも操作されなかったときには、次のステップＳ１５１において、十字キー（図示せず）が操作されたかどうか、判断する。“ＮＯ”なら、次のステップＳ１５３で、さらにスタートキー（図示せず）が操作されたかどうか判断する。セレクトキーが操作されていないときは、図２０のステップＳ９に戻る。ステップＳ１５３で“ＹＥＳ”が判断されたときには、ステップＳ１５３で、全表示フラグのオン／オフを切替えた後、同様にステップＳ９に戻る（すなわち、セレクトキーは全表示フラグのオン／オフの制御に使用される）。ただし、ステップＳ１５１で“ＹＥＳ”が判断されたときには、その十字キーの指示に従ってカーソルを移動させた後、ステップＳ９に戻る。
【０１４９】
なお、上述の実施例では、プログラムの進行に合わせて自機を親機とするか子機とするかを選択するようにした。しかしながら、直ちにこのような選択をするようにしてもよい。この場合には、図３４に示すように、スタート直後の最初のステップＳ２０１で親機または子機の選択画面（図示せず）を表示し、その表示に従ってユーザが親機または子機を選択する。したがって、プロセサ２０は、次のステップＳ２０３で、ユーザが親機を選択したかどうか判断する。ステップＳ２０３で“ＹＥＳ”の場合には、それ以後、先の図２１のステップＳ２９以降のステップを実行する。“ＮＯ”の場合、すなわち子機を選択し
たときには、図２１に示すステップＳ７−Ｓ２５，Ｓ７９，Ｓ１５１−Ｓ１５７，およびＳ８１−Ｓ１０９を実行する。
【符号の説明】
【０１５０】
１０・・・携帯ゲーム装置
１２・・・携帯ゲーム機
１４・・・無線通信ユニット
１６・・・カートリッジ
１８・・・ＬＣＤ
２０・・・プロセサ
２２・・・ＣＰＵコア
２４・・・ブートＲＯＭ
２８・・・ＷＲＡＭ
３８・・・操作キー
４２・・・ＲＯＭ
５４・・・ＥＥＰＲＯＭ
【図１】
2014111135.tif 000003
【図２】
2014111135.tif 000004
【図３】
2014111135.tif 000005
【図４】
2014111135.tif 000006
【図５】
2014111135.tif 000007
【図６】
2014111135.tif 000008
【図７】
2014111135.tif 000009
【図８】
2014111135.tif 000010
【図９】
2014111135.tif 000011
【図１０】
2014111135.tif 000012
【図１１】
2014111135.tif 000013
【図１２】
2014111135.tif 000014
【図１３】
2014111135.tif 000015
【図１４】
2014111135.tif 000016
【図１５】
2014111135.tif 000017
【図１６】
2014111135.tif 000018
【図１７】
2014111135.tif 000019
【図１８】
2014111135.tif 000020
【図１９】
2014111135.tif 000021
【図２０】
2014111135.tif 000022
【図２１】
2014111135.tif 000023
【図２２】
2014111135.tif 000024
【図２３】
2014111135.tif 000025
【図２４】
2014111135.tif 000026
【図２５】
2014111135.tif 000027
【図２６】
2014111135.tif 000028
【図２７】
2014111135.tif 000029
【図２８】
2014111135.tif 000030
【図２９】
2014111135.tif 000031
【図３０】
2014111135.tif 000032
【図３１】
2014111135.tif 000033
【図３２】
2014111135.tif 000034
【図３３】
2014111135.tif 000035
【図３４】
2014111135.tif 000036