(57)【要約】    【構成】  ゲーム装置１２はＣＰＵ４０を含み、ＣＰＵ４０は、荷重コントローラ３６から入力される荷重値に基づいて、プレイヤの動作による加重および抜重を検出する。たとえば、荷重値に基づいて加重を検出すると、スケートボード（２０４）に乗っているプレイヤオブジェクト（２０２）にジャンプの動作をさせ、一方、荷重値に基づいて抜重を検出すると、スケートボード（２０４）に乗っているプレイヤオブジェクト（２０２）にキックの動作をさせる。    【効果】  荷重値の変化に応じて複数の入力操作を判定するので、判定した入力操作に応じて多彩な処理を実行することができる。【選択図】  図１
2010267199.tif 000002
【特許請求の範囲】
【請求項１】
ユーザの荷重を示す荷重値を取得する荷重値取得ステップ、
前記荷重値取得ステップによって取得された荷重値に基づいて、加重を検出する加重検出ステップ、
前記荷重値取得ステップによって取得された荷重値に基づいて、抜重を検出する抜重検出ステップ、
前記加重検出ステップまたは前記抜重検出ステップの検出結果に応じて、異なる所定の情報処理を実行する情報処理ステップ、および
前記加重検出ステップによって加重が検出された後は、前記情報処理ステップによる前記抜重検出ステップの検出結果に応じた所定の情報処理が行われないよう制御する情報処理制御ステップを、コンピュータに実行させる、情報処理プログラム。
【請求項２】
前記情報処理制御ステップは、前記加重検出ステップによって加重が検出されてから所定時間を経過するまで、前記情報処理ステップによる前記抜重検出ステップの検出結果に応じた所定の情報処理が行われないよう制御する、請求項１に記載の情報処理プログラム。
【請求項３】
前記ユーザの体重値を記憶手段に記憶する体重値記憶ステップを前記コンピュータにさらに実行させ、
前記加重検出ステップは、前記荷重値取得ステップによって取得された荷重値が前記体重値の第１所定倍率以上であるとき、加重を検出する、請求項１または２記載の情報処理プログラム。
【請求項４】
前記ユーザの体重値を記憶手段に記憶する体重値記憶ステップを前記コンピュータにさらに実行させ、
前記抜重検出ステップは、前記荷重値取得ステップによって取得された荷重値が前記体重値の第２所定倍率未満であるとき、抜重を検出する、請求項１または２記載の情報処理プログラム。
【請求項５】
前記荷重値取得ステップによって取得された荷重値に基づいて、少なくとも、表示画面に表示されるオブジェクトの移動を制御する移動制御ステップを、前記コンピュータにさらに実行させ、
前記抜重検出ステップは、前記オブジェクトの移動速度に応じて異なる値の前記第２所定倍率を用いて、抜重を検出する、請求項４記載の情報処理プログラム。
【請求項６】
移動制御ステップは、前記加重検出ステップによって加重が検出されたとき、または、前記抜重検出ステップによって抜重が検出されたとき、前記オブジェクトの移動速度を加速させる、請求項５記載の情報処理プログラム。
【請求項７】
前記荷重値取得ステップによって取得された荷重値に基づいて、少なくとも、表示画面に表示されるオブジェクトの移動を制御する移動制御ステップを、前記コンピュータにさらに実行させ、
前記抜重検出ステップは、前記荷重値取得ステップによって取得された荷重値と前記オブジェクトの移動速度とに基づいて、抜重を検出する、請求項１または２記載の情報処理プログラム。
【請求項８】
ユーザの荷重を示す荷重値を取得する荷重値取得ステップ、
前記荷重値取得ステップによって取得された荷重値に基づいて、加重を検出する加重検出ステップ、
前記荷重値取得ステップによって取得された荷重値に基づいて、抜重を検出する抜重検出ステップ、
前記加重検出ステップまたは前記抜重検出ステップの検出結果に応じて、異なる所定の情報処理を実行する情報処理ステップ、および
前記抜重検出ステップによって抜重が検出された後は、前記情報処理ステップによる前記加重検出ステップの検出結果に応じた所定の情報処理が行われないよう制御する情報処理制御ステップを、コンピュータに実行させる、情報処理プログラム。
【請求項９】
ユーザの荷重を示す荷重値を取得する荷重値取得ステップ、
前記荷重値取得ステップによって取得された荷重値に基づいて、加重を検出する加重検出ステップ、
前記荷重値取得ステップによって取得された荷重値に基づいて、抜重を検出する抜重検出ステップ、
前記加重検出ステップまたは前記抜重検出ステップの検出結果に応じて、異なる所定の情報処理を実行する情報処理ステップ、および
前記加重検出ステップによって加重が検出された後は、前記抜重検出ステップによる抜重の検出が行われないよう制御する検出制御ステップを、コンピュータに実行させる、情報処理プログラム。
【請求項１０】
ユーザの荷重を示す荷重値を取得する荷重値取得ステップ、
前記荷重値取得ステップによって取得された荷重値に基づいて、加重を検出する加重検出ステップ、
前記荷重値取得ステップによって取得された荷重値に基づいて、抜重を検出する抜重検出ステップ、
前記加重検出ステップまたは前記抜重検出ステップの検出結果に応じて、異なる所定の情報処理を実行する情報処理ステップ、および
前記抜重検出ステップによって抜重が検出された後は、前記加重検出ステップによる加重の検出が行われないよう制御する検出制御ステップを、コンピュータに実行させる、情報処理プログラム。
【請求項１１】
ユーザの荷重を示す荷重値を取得する荷重値取得手段、
前記荷重値取得手段によって取得された荷重値に基づいて、加重を検出する加重検出手段、
前記荷重値取得手段によって取得された荷重値に基づいて、抜重を検出する抜重検出手段、
前記加重検出手段または前記抜重検出手段の検出結果に基づいて、異なる所定の情報処理を実行する情報処理手段、および
前記加重検出手段によって加重が検出された後は、前記情報処理手段による前記抜重検出手段の検出結果に応じた所定の情報処理が行われないよう制御する情報処理制御手段を備える、情報処理装置。
【請求項１２】
ユーザの荷重を示す荷重値を取得する荷重値取得手段、
前記荷重値取得手段によって取得された荷重値に基づいて、加重を検出する加重検出手段、
前記荷重値取得手段によって取得された荷重値に基づいて、抜重を検出する抜重検出手段、
前記加重検出手段または前記抜重検出手段の検出結果に応じて、異なる所定の情報処理を実行する情報処理手段、および
前記抜重検出手段によって抜重が検出された後は、前記情報処理手段による前記加重検出手段の検出結果に応じた所定の情報処理が行われないよう制御する情報処理制御手段を備える、情報処理装置。
【請求項１３】
ユーザの荷重を示す荷重値を取得する荷重値取得手段、
前記荷重値取得手段によって取得された荷重値に基づいて、加重を検出する加重検出手段、
前記荷重値取得手段によって取得された荷重値に基づいて、抜重を検出する抜重検出手段、
前記加重検出手段または前記抜重検出手段の検出結果に応じて、異なる所定の情報処理を実行する情報処理手段、および
前記加重検出手段によって加重が検出された後は、前記抜重検出手段による抜重の検出が行われないよう制御する検出制御手段を備える、情報処理装置。
【請求項１４】
ユーザの荷重を示す荷重値を取得する荷重値取得手段、
前記荷重値取得手段によって取得された荷重値に基づいて、加重を検出する加重検出手段、
前記荷重値取得手段によって取得された荷重値に基づいて、抜重を検出する抜重検出手段、
前記加重検出手段または前記抜重検出手段の検出結果に応じて、異なる所定の情報処理を実行する情報処理手段、および
前記抜重検出手段によって抜重が検出された後は、前記加重検出手段による加重の検出が行われないよう制御する検出制御手段を備える、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は情報処理プログラムおよび情報処理装置に関し、特にたとえば、ユーザの荷重を示す荷重値を用いて操作する、情報処理プログラムおよび情報処理装置に関する。
【背景技術】
【０００２】
この種の情報処理装置の一例が特許文献１に開示されている。この特許文献１のゲーム装置では、４つの荷重センサを備えるゲームコントローラの支持板に、プレイヤが足を乗せ、４つの荷重センサによって検出される荷重値が操作データとして入力される。したがって、ゲーム装置では、操作データとして入力された荷重値に基づいてゲーム処理が実行される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２６４１９５号［A63F 13/04,A63F 13/00］
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１のゲーム装置では、操作データとして入力される４つの荷重値の合計値の変化やその４つの荷重値から算出した上下左右の荷重値の大きさに基づいてプレイヤの１の動作を判別してゲーム処理を実行したり、その４つの荷重値から算出した左右の荷重値または上下左右の荷重値のバランスにのみ基づいてゲーム処理を実行したりするだけであった。このため、ゲームが単調になってしまっていた。
【０００５】
それゆえに、この発明の主たる目的は、新規な、情報処理プログラムおよび情報処理装置を提供することである。
【０００６】
また、この発明の他の目的は、荷重値による入力操作のバリエーションに応じた多彩な処理を実行できる、情報処理プログラムおよび情報処理装置を提供することができる。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００８】
第１の発明は、ユーザの荷重を示す荷重値を取得する荷重値取得ステップ、荷重値取得ステップによって取得された荷重値に基づいて、加重を検出する加重検出ステップ、荷重値取得ステップによって取得された荷重値に基づいて、抜重を検出する抜重検出ステップ、加重検出ステップまたは抜重検出ステップの検出結果に応じて、異なる所定の情報処理を実行する情報処理ステップ、および加重検出ステップによって加重が検出された後は、情報処理ステップによる抜重検出ステップの検出結果に応じた所定の情報処理が行われないよう制御する情報処理制御ステップを、コンピュータに実行させる、情報処理プログラムである。
【０００９】
第１の発明では、情報処理プログラムは、荷重値取得ステップ（４０，Ｓ３，Ｓ５）、加重検出ステップ（４０，Ｓ７７）、抜重検出ステップ（４０，Ｓ９５，Ｓ９７，Ｓ９９）、情報処理ステップ（４０，Ｓ７９，Ｓ１０１）、および情報処理制御ステップ（４０，Ｓ８１，Ｓ８３，Ｓ８５,Ｓ８７）を、コンピュータに実行させる。荷重値取得ステップは、ユーザの荷重を示す荷重値を取得する。加重検出ステップは、荷重値取得ステップによって取得された荷重値に基づいて、加重を検出する。抜重検出ステップは、荷重値取得ステップによって取得された荷重値に基づいて、抜重を検出する。情報処理ステップは、加重検出ステップまたは抜重検出ステップの検出結果に基づいて、異なる所定の情報処理を実行する。情報処理制御ステップは、加重検出ステップによって加重が検出された後は、情報処理ステップによる抜重検出ステップの検出結果に応じた所定の情報処理が行われないよう制御する。
【００１０】
第１の発明によれば、ユーザの荷重変化による加重または抜重を検出し、検出した加重または抜重に基づいて異なる所定の情報処理を実行するので、荷重値による入力操作のバリエーションに応じた多彩な処理を実行することができる。さらに、加重が検出された後には、抜重の検出結果に応じた所定の情報処理が行われないようにするため、加重が検出された後にユーザの意図しない抜重が検出された場合であっても、加重の検出結果に応じた所定の情報処理のみ行わせることができる。すなわち、ユーザの意図した通りに所定の情報処理を行わせることができる。
【００１１】
第２の発明は第１の発明に従属し、情報処理ステップは、加重検出ステップによって加重が検出されてから所定時間を経過するまで、情報処理ステップによる抜重検出ステップの検出結果に応じた所定の情報処理が行われないよう制御する。
【００１２】
第２の発明では、情報処理制御ステップは、加重検出ステップによって加重が検出された後の所定時間を経過するまで、情報処理ステップによる抜重検出ステップの検出結果に応じた所定の情報処理が行われないよう制御する。
【００１３】
第２の発明によれば、第１の発明と同様に、荷重値による入力操作のバリエーションに応じた多彩な処理を実行することができる。さらに、加重が検出されてから所定時間を経過した後に抜重が検出された場合には、その抜重がユーザの意図したものであるとして、抜重検出ステップの検出結果に応じた所定の情報処理を実行できる。したがって、ユーザの意図した通りに所定の情報処理を行わせることができるとともに、加重に基づく情報処理と抜重に基づく情報処理とを両立させることができる。
【００１４】
第３の発明は、第１または第２の発明に従属し、ユーザの体重値を記憶手段に記憶する体重値記憶ステップをコンピュータにさらに実行させ、加重検出ステップは、荷重値取得ステップによって取得された荷重値が体重値の第１所定倍率以上であるとき、加重を検出する。
【００１５】
第３の発明では、情報処理プログラムは、体重値記憶ステップ（４０，Ｓ３）をコンピュータにさらに実行させる。加重検出ステップは、荷重値取得ステップによって取得された荷重値が体重値の第１所定倍率以上であるとき、加重を検出する。
【００１６】
第３の発明によれば、荷重値が体重値の第１所定倍率以上であるときに、加重を検出するので、ユーザの荷重値の変化から正しく加重を検出することができる。また、倍率によって判断するので、ユーザの体重値に拘わらず同じ処理を実行することができる。
【００１７】
第４の発明は、第１または第２の発明に従属し、ユーザの体重値を記憶手段に記憶する体重値記憶ステップをコンピュータにさらに実行させ、抜重検出ステップは、荷重値取得ステップによって取得された荷重値が体重値の第２所定倍率未満であるとき、抜重を検出する。
【００１８】
第４の発明では、情報処理プログラムは、体重値記憶ステップ（４０，Ｓ３）をコンピュータにさらに実行させる。抜重検出ステップは、荷重値取得ステップによって取得された荷重値が体重値の第２所定倍率未満であるとき、抜重を検出する。
【００１９】
第４の発明によれば、荷重値が体重値の第２所定倍率未満であるときに、抜重を検出するので、ユーザの荷重値の変化から正しく抜重を検出することができる。また、第の発明と同様に、ユーザの体重値に拘わらず同じ処理を実行することができる。
【００２０】
第５の発明は、第４の発明に従属し、荷重値取得ステップによって取得された荷重値に基づいて、少なくとも、表示画面に表示されるオブジェクトの移動を制御する移動制御ステップを、コンピュータにさらに実行させ、抜重検出ステップは、オブジェクトの移動速度に応じて異なる値の第２所定倍率を用いて、抜重を検出する。
【００２１】
第５の発明では、情報処理プログラムは、移動制御ステップ（４０，Ｓ２３，Ｓ８１，Ｓ１０３）を、コンピュータにさらに実行させる。移動制御ステップは、荷重値取得ステップによって取得された荷重値に基づいて、少なくとも、表示画面に表示されるオブジェクトの移動を制御する。抜重検出ステップは、オブジェクトの移動速度に応じて（Ｓ９５）異なる値の第２所定倍率を用いて、抜重を検出する。
【００２２】
第５の発明によれば、オブジェクトの移動速度に応じて異なる値の第２所定倍率を用いて抜重を検出するので、荷重値による入力操作にバリエーションを増やすことができる。
【００２３】
第６の発明は、第５の発明に従属し、移動制御ステップは、加重検出ステップによって加重が検出されたとき、または、抜重検出ステップによって抜重が検出されたとき、オブジェクトの移動速度を加速させる。
【００２４】
第６の発明では、移動制御ステップは、加重検出ステップによって加重が検出されたとき、または、抜重検出ステップによって抜重が検出されたとき、オブジェクトの移動速度を加速させる。
【００２５】
第６の発明によれば、ユーザの荷重変化に応じて、オブジェクトを加速させることができる。
【００２６】
第７の発明は第１または第２の発明に従属し、荷重値取得ステップによって取得された荷重値に基づいて、少なくとも、表示画面に表示されるオブジェクトの移動を制御する移動制御ステップを、コンピュータにさらに実行させ、抜重検出ステップは、荷重値取得ステップによって取得された荷重値とオブジェクトの移動速度とに基づいて、抜重を検出する。
【００２７】
第７の発明では、情報処理プログラムは、移動制御ステップ（４０，Ｓ２３，Ｓ８１，Ｓ１０３）をコンピュータにさらに実行させる。この移動制御ステップは、荷重値取得ステップによって取得された荷重値に基づいて、少なくとも、表示画面に表示されるオブジェクトの移動を制御する。抜重検出ステップは、荷重値取得ステップによって取得された荷重値とオブジェクトの移動速度とに基づいて、抜重を検出する。
【００２８】
第７の発明によれば、体重率を検出せずに、ユーザの荷重値とオブジェクトの移動速度とに基づいて抜重を検出することができる。
【００２９】
第８の発明は、ユーザの荷重を示す荷重値を取得する荷重値取得ステップ、荷重値取得ステップによって取得された荷重値に基づいて、加重を検出する加重検出ステップ、荷重値取得ステップによって取得された荷重値に基づいて、抜重を検出する抜重検出ステップ、加重検出ステップまたは抜重検出ステップの検出結果に応じて、異なる所定の情報処理を実行する情報処理ステップ、および抜重検出ステップによって抜重が検出された後は、情報処理ステップによる加重検出ステップの検出結果に応じた所定の情報処理が行われないよう制御する情報処理制御ステップを、コンピュータに実行させる、情報処理プログラムである。
【００３０】
第８の発明では、第１の発明とほぼ同様であり、情報処理制御ステップは、抜重検出ステップによって抜重が検出された後は、情報処理ステップによる加重検出ステップの検出結果に応じた所定の情報処理が行われないよう制御する。
【００３１】
第８の発明においても、第１の発明と同様に、荷重値による入力操作のバリエーションに応じた多彩な処理を実行することができる。さらに、ユーザの意図した通りに所定の情報処理を行わせることができる。
【００３２】
第９の発明は、ユーザの荷重を示す荷重値を取得する荷重値取得ステップ、荷重値取得ステップによって取得された荷重値に基づいて、加重を検出する加重検出ステップ、荷重値取得ステップによって取得された荷重値に基づいて、抜重を検出する抜重検出ステップ、加重検出ステップまたは抜重検出ステップの検出結果に応じて、異なる所定の情報処理を実行する情報処理ステップ、および加重検出ステップによって加重が検出された後は、抜重検出ステップによる抜重の検出が行われないよう制御する検出制御ステップを、コンピュータに実行させる。
【００３３】
第９の発明では、検出制御ステップ（４０，Ｓ８１，Ｓ８３，Ｓ８５，Ｓ８７）が、加重検出ステップによって加重が検出された後は、抜重検出ステップによる抜重の検出が行われないよう制御する以外は、第１の発明と同じである。
【００３４】
第９の発明においても、第１の発明と同様に、荷重値による入力操作のバリエーションに応じた多彩な処理を実行することができる。さらに、ユーザの意図した通りに所定の情報処理を行わせることができる。
【００３５】
第１０の発明は、ユーザの荷重を示す荷重値を取得する荷重値取得ステップ、荷重値取得ステップによって取得された荷重値に基づいて、加重を検出する加重検出ステップ、荷重値取得ステップによって取得された荷重値に基づいて、抜重を検出する抜重検出ステップ、加重検出ステップまたは抜重検出ステップの検出結果に応じて、異なる所定の情報処理を実行する情報処理ステップ、および抜重検出ステップによって抜重が検出された後は、加重検出ステップによる加重の検出が行われないよう制御する検出制御ステップを、コンピュータに実行させる、情報処理プログラムである。
【００３６】
第１０の発明では、検出制御ステップが、抜重検出ステップによって抜重が検出された後は、加重検出ステップによる加重の検出が行われないよう制御する以外は、第８の発明と同じである。
【００３７】
第１０の発明においても、第８の発明（第１の発明）と同様に、荷重値による入力操作のバリエーションに応じた多彩な処理を実行することができる。さらに、ユーザの意図した通りに所定の情報処理を行わせることができる。
【００３８】
第１１の発明は、ユーザの荷重を示す荷重値を取得する荷重値取得手段、荷重値取得手段によって取得された荷重値に基づいて、加重を検出する加重検出手段、荷重値取得手段によって取得された荷重値に基づいて、抜重を検出する抜重検出手段、加重検出手段または抜重検出手段の検出結果に基づいて、異なる所定の情報処理を実行する情報処理手段、および加重検出手段によって加重が検出された後は、情報処理手段による抜重検出手段の検出結果に応じた所定の情報処理が行われないよう制御する情報処理制御手段を備える、情報処理装置である。
【００３９】
第１２の発明は、ユーザの荷重を示す荷重値を取得する荷重値取得手段、荷重値取得手段によって取得された荷重値に基づいて、加重を検出する加重検出手段、荷重値取得手段によって取得された荷重値に基づいて、抜重を検出する抜重検出手段、加重検出手段または抜重検出手段の検出結果に応じて、異なる所定の情報処理を実行する情報処理手段、および抜重検出手段によって抜重が検出された後は、情報処理手段による加重検出手段の検出結果に応じた所定の情報処理が行われないよう制御する情報処理制御手段を備える、情報処理装置である。
【００４０】
第１３の発明は、ユーザの荷重を示す荷重値を取得する荷重値取得手段、荷重値取得手段によって取得された荷重値に基づいて、加重を検出する加重検出手段、荷重値取得手段によって取得された荷重値に基づいて、抜重を検出する抜重検出手段、加重検出手段または抜重検出手段の検出結果に応じて、異なる所定の情報処理を実行する情報処理手段、および加重検出手段によって加重が検出された後は、抜重検出手段による抜重の検出が行われないよう制御する検出制御手段を備える、情報処理装置である。
【００４１】
第１４の発明は、ユーザの荷重を示す荷重値を取得する荷重値取得手段、荷重値取得手段によって取得された荷重値に基づいて、加重を検出する加重検出手段、荷重値取得手段によって取得された荷重値に基づいて、抜重を検出する抜重検出手段、加重検出手段または抜重検出手段の検出結果に応じて、異なる所定の情報処理を実行する情報処理手段、および抜重検出手段によって抜重が検出された後は、加重検出手段による加重の検出が行われないよう制御する検出制御手段を備える、情報処理装置である。
【００４２】
第１１−第１４の発明においても、第１の発明と同様に、荷重値による入力操作のバリエーションに応じた多彩な処理を実行することができる。さらに、ユーザの意図した通りに所定の情報処理を行わせることができる。
【発明の効果】
【００４３】
この発明によれば、ユーザの荷重変化を検出し、加重を検出した後の抜重、または抜重を検出した後の加重を検出せずに、先に検出した加重または抜重に基づいて異なる情報処理を実行するので、荷重値による入力操作のバリエーションに応じた多彩な処理を実行することができる。
【００４４】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００４５】
【図１】図１はこの発明のゲームシステムの一実施例を示す図解図である。
【図２】図２は図１に示すゲームシステムの電気的な構成を示すブロック図である。
【図３】図３は図１に示すコントローラの外観を説明するための図解図である。
【図４】図４は図３に示すコントローラの電気的な構成を示すブロック図である。
【図５】図５は図１に示す荷重コントローラの外観を説明するための図解図である。
【図６】図６は図５に示す荷重コントローラの断面図である。
【図７】図７は図５に示す荷重コントローラの電気的な構成を示すブロック図である。
【図８】図８は図１に示すコントローラおよび荷重コントローラを用いて仮想ゲームをプレイするときの状態を概説するための図解図である。
【図９】図９は図１に示すマーカおよびコントローラの視野角を説明するための図解図である。
【図１０】図１０は対象画像を含む撮像画像の一例を示す図解図である。
【図１１】図１１は図１に示すモニタに表示されるゲーム画面の例を示す図解図である。
【図１２】図１２は図１に示すモニタに表示されるゲーム画面の他の例を示す図解図である。
【図１３】図１３は図１に示すモニタに表示されるゲーム画面のその他の例を示す図解図である。
【図１４】図１４は図１に示した荷重コントローラの上面図およびその重心位置の検出範囲を示す図解図である。
【図１５】図１５は図２に示すメインメモリのメモリマップの例を示す図解図である。
【図１６】図１６は図１５に示すデータ記憶領域の具体的な内容を示す図解図である。
【図１７】図１７は図２に示すＣＰＵのゲーム全体処理の一部を示すフロー図である。
【図１８】図１８は図２に示すＣＰＵのゲーム全体処理の他の一部であって、図１７に後続するフロー図である。
【図１９】図１９は図２に示すＣＰＵの入力判定処理の第１の一部を示すフロー図である。
【図２０】図２０は図２に示すＣＰＵの入力判定処理の第２の一部であって、図１９に後続するフロー図である。
【図２１】図２１は図２に示すＣＰＵの入力判定処理の第３の一部であって、図１９に後続するフロー図である。
【図２２】図２２は図２に示すＣＰＵの入力判定処理の第４の一部であって、図２１に後続するフロー図である。
【図２３】図２３は図２に示すＣＰＵの入力判定処理の第５の一部であって、図２２に後続するフロー図である。
【図２４】図２４は図２に示すＣＰＵのチクタクフラグ管理処理を示すフロー図である。
【発明を実施するための形態】
【００４６】
図１を参照して、この発明の一実施例であるゲームシステム１０は、ビデオゲーム装置（以下、単に「ゲーム装置」という）１２、コントローラ２２および荷重コントローラ３６を含む。なお、図示は省略するが、この実施例のゲーム装置１２は、最大４つのコントローラ（２２，３６）と通信可能に設計されている。また、ゲーム装置１２と各コントローラ（２２，３６）とは、無線によって接続される。たとえば、無線通信は、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格に従って実行されるが、赤外線や無線ＬＡＮなど他の規格に従って実行されてもよい。
【００４７】
ゲーム装置１２は、略直方体のハウジング１４を含み、ハウジング１４の前面にはディスクスロット１６が設けられる。ディスクスロット１６から、情報処理プログラムの一例としてのゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク１８が挿入されて、ハウジング１４内のディスクドライブ５４（図２参照）に装着される。ディスクスロット１６の周囲には、ＬＥＤと導光板が配置され、さまざまな処理に応答させて点灯させることが可能である。
【００４８】
また、ゲーム装置１２のハウジング１４の前面であり、その上部には、電源ボタン２０ａおよびリセットボタン２０ｂが設けられ、その下部には、イジェクトボタン２０ｃが設けられる。さらに、リセットボタン２０ｂとイジェクトボタン２０ｃとの間であり、ディスクスロット１６の近傍には、外部メモリカード用コネクタカバー２８が設けられる。この外部メモリカード用コネクタカバー２８の内側には、外部メモリカード用コネクタ６２（図２参照）が設けられ、図示しない外部メモリカード（以下、単に「メモリカード」という）が挿入される。メモリカードは、光ディスク１８から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（ゲームの結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置１２の内部に設けられるフラッシュメモリ４４（図２参照）のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。
【００４９】
なお、メモリカードとしては、汎用のＳＤカードを用いることができるが、メモリスティックやマルチメディアカード（登録商標）のような他の汎用のメモリカードを用いることもできる。
【００５０】
ゲーム装置１２のハウジング１４の後面には、ＡＶコネクタ５８（図２参照）が設けられ、そのＡＶコネクタ５８を用いて、ＡＶケーブル３２ａを通してゲーム装置１２にモニタ３４およびスピーカ３４ａを接続する。このモニタ３４およびスピーカ３４ａは典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２ａは、ゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ビデオゲームのゲーム画像が表示され、左右のスピーカ３４ａからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ３４の周辺（この実施例では、モニタ３４の上側）には、２つの赤外ＬＥＤ（マーカ）３４０ｍ，３４０ｎを備えるマーカ部３４ｂが設けられる。このマーカ部３４ｂは、電源ケーブル３２ｂを通してゲーム装置１２に接続される。したがって、マーカ部３４ｂには、ゲーム装置１２から電源が供給される。これによって、マーカ３４０ｍ，３４０ｎは発光し、それぞれモニタ３４の前方に向けて赤外光を出力する。
【００５１】
なお、ゲーム装置１２の電源は、一般的なＡＣアダプタ（図示せず）によって与えられる。ＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置１２は、家庭用電源（商用電源）を、駆動に適した低いＤＣ電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【００５２】
このゲームシステム１０において、ユーザまたはプレイヤがゲーム（またはゲームに限らず、他のアプリケーション）をプレイするために、ユーザはまずゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）のプログラムを記録している適宜の光ディスク１８を選択し、その光ディスク１８をゲーム装置１２のディスクドライブ５４にローディングする。応じて、ゲーム装置１２がその光ディスク１８に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置１２に入力を与えるためにコントローラ２２を操作する。たとえば、入力手段２６のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段２６に対する操作以外にも、コントローラ２２自体を動かすことによって、動画オブジェクト（プレイヤオブジェクト）を異なる方向に移動させ、または３Ｄのゲーム世界におけるユーザの視点（カメラ位置）を変化させることができる。
【００５３】
図２は図１実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。図示は省略するが、ハウジング１４内の各コンポーネントは、プリント基板に実装される。図２に示すように、ゲーム装置１２には、ＣＰＵ４０が設けられる。このＣＰＵ４０は、ゲームプロセッサとして機能する。このＣＰＵ４０には、システムＬＳＩ４２が接続される。このシステムＬＳＩ４２には、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８、ディスクドライブ５４およびＡＶ  ＩＣ５６が接続される。
【００５４】
外部メインメモリ４６は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりし、ＣＰＵ４０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ４８は、いわゆるブートＲＯＭであり、ゲーム装置１２の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ５４は、光ディスク１８からプログラムデータやテクスチャデータ等を読み出し、ＣＰＵ４０の制御の下で、後述する内部メインメモリ４２ｅまたは外部メインメモリ４６に書き込む。
【００５５】
システムＬＳＩ４２には、入出力プロセッサ４２ａ、ＧＰＵ(Graphics Processor Unit)４２ｂ，ＤＳＰ(Digital Signal Processor)４２ｃ，ＶＲＡＭ４２ｄおよび内部メインメモリ４２ｅが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。
【００５６】
入出力プロセッサ（Ｉ／Ｏプロセッサ）４２ａは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後で詳細に説明する。
【００５７】
ＧＰＵ４２ｂは、描画手段の一部を形成し、ＣＰＵ４０からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、ＣＰＵ４０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ４２ｂに与える。
【００５８】
図示は省略するが、上述したように、ＧＰＵ４２ｂにはＶＲＡＭ４２ｄが接続される。ＧＰＵ４２ｂが作画コマンドを実行するにあたって必要なデータ（画像データ：ポリゴンデータやテクスチャデータなどのデータ）は、ＧＰＵ４２ｂがＶＲＡＭ４２ｄにアクセスして取得する。なお、ＣＰＵ４０は、描画に必要な画像データを、ＧＰＵ４２ｂを介してＶＲＡＭ４２ｄに書き込む。ＧＰＵ４２ｂは、ＶＲＡＭ４２ｄにアクセスして描画のためのゲーム画像データを作成する。
【００５９】
なお、この実施例では、ＧＰＵ４２ｂがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、ＧＰＵ４２ｂは当該任意のアプリケーションについての画像データを生成する。
【００６０】
また、ＤＳＰ４２ｃは、オーディオプロセッサとして機能し、内部メインメモリ４２ｅや外部メインメモリ４６に記憶されるサウンドデータや音波形（音色）データを用いて、スピーカ３４ａから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【００６１】
上述のように生成されたゲーム画像データおよびオーディオデータは、ＡＶ  ＩＣ５６によって読み出され、ＡＶコネクタ５８を介してモニタ３４およびスピーカ３４ａに出力される。したがって、ゲーム画面がモニタ３４に表示され、ゲームに必要な音（音楽）がスピーカ３４ａから出力される。
【００６２】
また、入出力プロセッサ４２ａには、フラッシュメモリ４４、無線通信モジュール５０および無線コントローラモジュール５２が接続されるとともに、拡張コネクタ６０およびメモリカード用コネクタ６２が接続される。また、無線通信モジュール５０にはアンテナ５０ａが接続され、無線コントローラモジュール５２にはアンテナ５２ａが接続される。
【００６３】
入出力プロセッサ４２ａは、無線通信モジュール５０を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ４２ａは、定期的にフラッシュメモリ４４にアクセスし、ネットワークへ送信する必要があるデータ（送信データとする）の有無を検出し、当該送信データが有る場合には、無線通信モジュール５０およびアンテナ５０ａを介してネットワークに送信する。また、入出力プロセッサ４２ａは、他のゲーム装置から送信されるデータ（受信データとする）を、ネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、受信データをフラッシュメモリ４４に記憶する。ただし、一定の場合には、受信データをそのまま破棄する。さらに、入出力プロセッサ４２ａは、ダウンロードサーバからダウンロードしたデータ（ダウンロードデータとする）をネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、ダウンロードデータをフラッシュメモリ４４に記憶する。
【００６４】
また、入出力プロセッサ４２ａは、コントローラ２２や荷重コントローラ３６から送信される入力データをアンテナ５２ａおよび無線コントローラモジュール５２を介して受信し、内部メインメモリ４２ｅまたは外部メインメモリ４６のバッファ領域に記憶（一時記憶）する。入力データは、ＣＰＵ４０のゲーム処理によって利用された後、バッファ領域から消去される。
【００６５】
なお、この実施例では、上述したように、無線コントローラモジュール５２は、Ｂｌｕｅｔｏｏｔｈ規格にしたがってコントローラ２２や荷重コントローラ３６との間で通信を行う。
【００６６】
また、図面の都合上、図２では、コントローラ２２と荷重コントローラ３６とをまとめて記載してある。
【００６７】
さらに、入出力プロセッサ４２ａには、拡張コネクタ６０およびメモリカード用コネクタ６２が接続される。拡張コネクタ６０は、ＵＳＢやＳＣＳＩのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ６０に有線ＬＡＮアダプタを接続し、無線通信モジュール５０に代えて当該有線ＬＡＮを利用することもできる。メモリカード用コネクタ６２には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ４２ａは、拡張コネクタ６０やメモリカード用コネクタ６２を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００６８】
詳細な説明は省略するが、図１にも示したように、ゲーム装置１２（ハウジング１４）には、電源ボタン２０ａ、リセットボタン２０ｂおよびイジェクトボタン２０ｃが設けられる。電源ボタン２０ａは、システムＬＳＩ４２に接続される。この電源ボタン２０ａがオンされると、システムＬＳＩ４２は、ゲーム装置１２の各コンポーネントに図示しないＡＣアダプタを経て電源が供給され、通常の通電状態となるモード（通常モードと呼ぶこととする）を設定する。一方、電源ボタン２０ａがオフされると、システムＬＳＩ４２は、ゲーム装置１２の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード（以下、「スタンバイモード」という）を設定する。この実施例では、スタンバイモードが設定された場合には、システムＬＳＩ４２は、入出力プロセッサ４２ａ、フラッシュメモリ４４、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８および無線通信モジュール５０、無線コントローラモジュール５２以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、このスタンバイモードは、ＣＰＵ４０によってアプリケーションの実行が行われないモードである。
【００６９】
なお、システムＬＳＩ４２には、スタンバイモードにおいても電源が供給されるが、ＧＰＵ４２ｂ、ＤＳＰ４２ｃおよびＶＲＡＭ４２ｄへのクロックの供給を停止することにより、これらを駆動させないようにして、消費電力を低減するようにしてある。
【００７０】
また、図示は省略するが、ゲーム装置１２のハウジング１４内部には、ＣＰＵ４０やシステムＬＳＩ４２などのＩＣの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【００７１】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン２０ａがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【００７２】
また、通常モードとスタンバイモードの切り替えは、コントローラ２２の電源スイッチ２６ｈのオン／オフの切り替えによっても遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール５２ａへの電源供給を行わない設定にしてもよい。
【００７３】
リセットボタン２０ｂもまた、システムＬＳＩ４２に接続される。リセットボタン２０ｂが押されると、システムＬＳＩ４２は、ゲーム装置１２の起動プログラムを再起動する。イジェクトボタン２０ｃは、ディスクドライブ５４に接続される。イジェクトボタン２０ｃが押されると、ディスクドライブ５４から光ディスク１８が排出される。
【００７４】
図３（Ａ）ないし図３（Ｅ）は、コントローラ２２の外観の一例を示す。図３（Ａ）はコントローラ２２の先端面を示し、図３（Ｂ）はコントローラ２２の上面を示し、図３（Ｃ）はコントローラ２２の右側面を示し、図３（Ｄ）はコントローラ２２の下面を示し、そして、図３（Ｅ）はコントローラ２２の後端面を示す。
【００７５】
図３（Ａ）ないし図３（Ｅ）を参照して、コントローラ２２は、たとえばプラスチック成型によって形成されたハウジング２２ａを有している。ハウジング２２ａは、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング２２ａ（コントローラ２２）には、入力手段（複数のボタンないしスイッチ）２６が設けられる。具体的には、図３（Ｂ）に示すように、ハウジング２２ａの上面には、十字キー２６ａ、１ボタン２６ｂ、２ボタン２６ｃ、Ａボタン２６ｄ、−ボタン２６ｅ、ＨＯＭＥボタン２６ｆ、＋ボタン２６ｇおよび電源スイッチ２６ｈが設けられる。また、図３（Ｃ）および図３（Ｄ）に示すように、ハウジング２２ａの下面に傾斜面が形成されており、この傾斜面に、Ｂトリガースイッチ２６ｉが設けられる。
【００７６】
十字キー２６ａは、４方向プッシュスイッチであり、矢印で示す４つの方向、前（または上）、後ろ（または下）、右および左の操作部を含む。この操作部のいずれか１つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト（プレイヤキャラクタまたはプレイヤオブジェクト）の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【００７７】
１ボタン２６ｂおよび２ボタン２６ｃは、それぞれ、押しボタンスイッチである。たとえば３次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、１ボタン２６ｂおよび２ボタン２６ｃは、Ａボタン２６ｄおよびＢトリガースイッチ２６ｉと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【００７８】
Ａボタンスイッチ２６ｄは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ（パンチ）、投げる、つかむ（取得）、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム（ＲＰＧ）やシミュレーションＲＰＧにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。
【００７９】
−ボタン２６ｅ、ＨＯＭＥボタン２６ｆ、＋ボタン２６ｇおよび電源スイッチ２６ｈもまた、押しボタンスイッチである。−ボタン２６ｅは、ゲームモードを選択するために使用される。ＨＯＭＥボタン２６ｆは、ゲームメニュー（メニュー画面）を表示するために使用される。＋ボタン２６ｇは、ゲームを開始（再開）したり、一時停止したりするなどのために使用される。電源スイッチ２６ｈは、ゲーム装置１２の電源を遠隔操作によってオン／オフするために使用される。
【００８０】
なお、この実施例では、コントローラ２２自体をオン／オフするための電源スイッチは設けておらず、コントローラ２２の入力手段２６のいずれかを操作することによってコントローラ２２はオンとなり、一定時間（たとえば、３０秒）以上操作しなければ自動的にオフとなるようにしてある。
【００８１】
Ｂトリガースイッチ２６ｉもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、コントローラ２２で選択した位置を指定したりするために使用される。また、Ｂトリガースイッチ２６ｉを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Ｂトリガースイッチ２６ｉは、通常のＢボタンと同様に機能し、Ａボタン２６ｄによって決定したアクションを取り消すなどのために使用される。
【００８２】
また、図３（Ｅ）に示すように、ハウジング２２ａの後端面に外部拡張コネクタ２２ｂが設けられ、また、図３（Ｂ）に示すように、ハウジング２２ａの上面であり、後端面側にはインジケータ２２ｃが設けられる。外部拡張コネクタ２２ｂは、図示しない別の拡張コントローラを接続するためなどに使用される。インジケータ２２ｃは、たとえば、４つのＬＥＤで構成され、４つのうちのいずれか１つを点灯することにより、点灯ＬＥＤに対応するコントローラ２２の識別情報（コントローラ番号）を示したり、点灯させるＬＥＤの個数によってコントローラ２２の電源残量を示したりすることができる。
【００８３】
さらに、コントローラ２２は、撮像情報演算部８０（図４参照）を有しており、図３（Ａ）に示すように、ハウジング２２ａの先端面には撮像情報演算部８０の光入射口２２ｄが設けられる。また、コントローラ２２は、スピーカ８６（図４参照）を有しており、このスピーカ８６は、図３（Ｂ）に示すように、ハウジング２２ａの上面であり、１ボタン２６ｂとＨＯＭＥボタン２６ｆとの間に設けられる音抜き孔２２ｅに対応して、ハウジング２２ａ内部に設けられる。
【００８４】
なお、図３（Ａ）ないし図３（Ｅ）に示したコントローラ２２の形状や、各入力手段２６の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【００８５】
図４はコントローラ２２の電気的な構成を示すブロック図である。この図４を参照して、コントローラ２２はプロセッサ７０を含み、このプロセッサ７０には、内部バス（図示せず）によって、外部拡張コネクタ２２ｂ、入力手段２６、メモリ７２、加速度センサ７４、無線モジュール７６、撮像情報演算部８０、ＬＥＤ８２（インジケータ２２ｃ）、バイブレータ８４、スピーカ８６および電源回路８８が接続される。また、無線モジュール７６には、アンテナ７８が接続される。
【００８６】
プロセッサ７０は、コントローラ２２の全体制御を司り、入力手段２６、加速度センサ７４および撮像情報演算部８０によって入力された情報（入力情報）を、入力データとして無線モジュール７６およびアンテナ７８を介してゲーム装置１２に送信（入力）する。このとき、プロセッサ７０は、メモリ７２を作業領域ないしバッファ領域として用いる。
【００８７】
上述した入力手段２６（２６ａ−２６ｉ）からの操作信号（操作データ）は、プロセッサ７０に入力され、プロセッサ７０は操作データを一旦メモリ７２に記憶する。
【００８８】
また、加速度センサ７４は、コントローラ２２の縦方向（ｙ軸方向）、横方向（ｘ軸方向）および前後方向（ｚ軸方向）の３軸で各々の加速度を検出する。この加速度センサ７４は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
【００８９】
たとえば、加速度センサ７４は、第１所定時間毎に、ｘ軸，ｙ軸，ｚ軸の各々についての加速度（ａｘ，ａｙ，ａｚ）を検出し、検出した加速度のデータ（加速度データ）をプロセッサ７０に入力する。たとえば、加速度センサ７４は、各軸方向の加速度を、−２．０ｇ〜２．０ｇ（ｇは重力加速度である。以下、同じ。）の範囲で検出する。プロセッサ７０は、加速度センサ７４から与えられる加速度データを、第２所定時間毎に検出し、一旦メモリ７２に記憶する。プロセッサ７０は、操作データ、加速度データおよび後述するマーカ座標データの少なくとも１つを含む入力データを作成し、作成した入力データを、第３所定時間（たとえば、５ｍｓｅｃ）毎にゲーム装置１２に送信する。
【００９０】
なお、図３（Ａ）−図３（Ｅ）では省略したが、この実施例では、加速度センサ７４は、ハウジング２２ａ内部の基板上の十字キー２６ａが配置される付近に設けられる。
【００９１】
無線モジュール７６は、たとえばＢｌｕｅｔｏｏｔｈの技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ７８から放射する。つまり、入力データは、無線モジュール７６によって微弱電波信号に変調されてアンテナ７８（コントローラ２２）から送信される。この微弱電波信号が上述したゲーム装置１２に設けられた無線コントローラモジュール５２によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置１２（ＣＰＵ４０）は、コントローラ２２からの入力データを取得することができる。そして、ＣＰＵ４０は、取得した入力データとプログラム（ゲームプログラム）とに従ってゲーム処理を行う。
【００９２】
さらに、上述したように、コントローラ２２には、撮像情報演算部８０が設けられる。この撮像情報演算部８０は、赤外線フィルタ８０ａ、レンズ８０ｂ、撮像素子８０ｃおよび画像処理回路８０ｄによって構成される。赤外線フィルタ８０ａは、コントローラ２２の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ３４の表示画面近傍（周辺）に配置されるマーカ３４０ｍおよび３４０ｎは、モニタ３４の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ８０ａを設けることによってマーカ３４０ｍおよび３４０ｎの画像をより正確に撮像することができる。レンズ８４は、赤外線フィル８２を透過した赤外線を集光して撮像素子８０ｃへ出射する。撮像素子８０ｃは、たとえばＣＭＯＳセンサあるいはＣＣＤのような固体撮像素子であり、レンズ８０ｂによって集光された赤外線を撮像する。したがって、撮像素子８０ｃは、赤外線フィルタ８０ａを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子８０ｃによって撮像された画像を撮像画像と呼ぶ。撮像素子８０ｃによって生成された画像データは、画像処理回路８０ｄで処理される。画像処理回路８０ｄは、撮像画像内における撮像対象（マーカ３４０ｍおよび３４０ｎ）の位置を算出し、第４所定時間毎に、当該位置を示す各座標値を撮像データとしてプロセッサ７０に出力する。なお、画像処理回路８０ｄにおける処理については後述する。
【００９３】
図５は図１に示した荷重コントローラ３６の外観を示す斜視図である。図５に示すように、荷重コントローラ３６は、プレイヤがその上に乗る（プレイヤの足を乗せる）台３６ａ、および台３６ａにかかる荷重を検出するための少なくとも４つの荷重センサ３６ｂを備える。なお、各荷重センサ３６ｂは台３６ａに内包されており（図６，図７参照）、図５においてはその配置が点線で示されている。
【００９４】
台３６ａは、略直方体に形成されており、上面視で略長方形状である。たとえば長方形の短辺が３０ｃｍ程度に設定され、その長辺が５０ｃｍ程度に設定される。プレイヤが乗る台３６ａの上面は平坦にされる。台３６ａの４隅の側面は、部分的に円柱状に張り出すように形成されている。
【００９５】
この台３６ａにおいて、４つの荷重センサ３６ｂは、所定の間隔を置いて配置される。この実施例では、４つの荷重センサ３６ｂは、台３６ａの周縁部に、具体的には４隅にそれぞれ配置される。荷重センサ３６ｂの間隔は、台３６ａに対するプレイヤの荷重のかけ方によるゲーム操作の意図をより精度良く検出できるように適宜な値に設定される。
【００９６】
図６は、図５に示した荷重コントローラ３６のVI−VI断面図を示すとともに、荷重センサ３６ｂの配置された隅の部分が拡大表示されている。この図６から分かるように、台３６ａは、プレイヤが乗るための支持板３６０と脚３６２を含む。脚３６２は、荷重センサ３６ｂが配置される箇所に設けられる。この実施例では４つの荷重センサ３６ｂが４隅に配置されるので、４つの脚３６２が４隅に設けられる。脚３６２は、たとえばプラスチック成型によって略有底円筒状に形成されており、荷重センサ３６ｂは、脚３６２内の底面に設けられた球面部品３６２ａ上に配置される。支持板３６０は、この荷重センサ３６ｂを介して脚３６２に支持される。
【００９７】
支持板３６０は、上面と側面上部とを形成する上層板３６０ａ、下面と側面下部とを形成する下層板３６０ｂ、および上層板３６０ａと下層板３６０ｂとの間に設けられる中層板３６０ｃを含む。上層板３６０ａと下層板３６０ｂとは、たとえばプラスチック成型により形成されており、接着等により一体化される。中層板３６０ｃは、たとえば１枚の金属板のプレス成型により形成されている。この中層板３６０ｃが、４つの荷重センサ３６ｂの上に固定される。上層板３６０ａは、その下面に格子状のリブ（図示しない）を有しており、当該リブを介して中層板３６０ｃに支持されている。
【００９８】
したがって、台３６ａにプレイヤが乗ったときには、その荷重は、支持板３６０、荷重センサ３６ｂおよび脚３６２を伝達する。図６に矢印で示したように、入力される荷重によって生じた床からの反作用は、脚３６２から、球面部品３６２ａ、荷重センサ３６ｂ、中層板３６０ｃを介して、上層板３６０ａに伝達する。
【００９９】
荷重センサ３６ｂは、たとえば歪ゲージ（歪センサ）式ロードセルであり、入力された荷重を電気信号に変換する荷重変換器である。荷重センサ３６ｂでは、荷重入力に応じて、起歪体３７０ａが変形して歪が生じる。この歪が、起歪体に貼り付けられた歪センサ３７０ｂによって、電気抵抗の変化に変換され、さらに電圧変化に変換される。したがって、荷重センサ３６ｂは、入力荷重を示す電圧信号を出力端子から出力する。
【０１００】
なお、荷重センサ３６ｂは、音叉振動式、弦振動式、静電容量式、圧電式、磁歪式、またはジャイロ式のような他の方式の荷重センサであってもよい。
【０１０１】
図５に戻って、荷重コントローラ３６には、さらに、電源ボタン３６ｃが設けられる。この電源ボタン３６ｃがオンされると、荷重コントローラ３６の各回路コンポーネント（図７参照）に電源が供給される。ただし、荷重コントローラ３６は、ゲーム装置１２からの指示に従ってオンされる場合もある。また、荷重コントローラ３６は、プレイヤが乗っていない状態が一定時間（たとえば、３０秒）以上継続すると、電源がオフされる。ただし、荷重コントローラ３６が起動されている状態で、電源ボタン３６ｃをオンしたときに、電源がオフされてもよい。
【０１０２】
図７のブロック図には、荷重コントローラ３６の電気的な構成の一例が示される。なお、この図７では、信号および通信の流れは実線矢印で示される。破線矢印は、電源の供給を示している。
【０１０３】
荷重コントローラ３６は、その動作を制御するためのマイクロコンピュータ（マイコン）１００を含む。マイコン１００は図示しないＣＰＵ、ＲＯＭおよびＲＡＭ等を含み、ＣＰＵはＲＯＭに記憶されたプログラムに従って荷重コントローラ３６の動作を制御する。
【０１０４】
マイコン１００には、電源ボタン３６ｃ、ＡＤコンバータ１０２、ＤＣ−ＤＣコンバータ１０４および無線モジュール１０６が接続される。さらに、無線モジュール１０６には、アンテナ１０６ａが接続される。また、４つの荷重センサ３６ｂは、図３ではロードセル３６ｂとして示される。４つの荷重センサ３６ｂは、それぞれ、増幅器１０８を介してＡＤコンバータ１０２に接続される。
【０１０５】
また、荷重コントローラ３６には電源供給のために電池１００が収容されている。他の実施例では、電池に代えてＡＣアダプタを接続し、商用電源を供給するようにしてもよい。かかる場合には、ＤＣ−ＤＣコンバータに代えて、交流を直流に変換し、直流電圧を降圧および整流する電源回路を設ける必要がある。この実施例では、マイコン１００および無線モジュール１０６への電源の供給は、電池から直接的に行われる。つまり、マイコン１００内部の一部のコンポーネント（ＣＰＵ）と無線モジュール１０６とには、常に電源が供給されており、電源ボタン３６ｃがオンされたか否か、ゲーム装置１２から電源オン（荷重検出）のコマンドが送信されたか否かを検出する。一方、荷重センサ３６ｂ、ＡＤコンバータ１０２および増幅器１０８には、電池１１０からの電源がＤＣ−ＤＣコンバータ１０４を介して供給される。ＤＣ−ＤＣコンバータ１０４は、電池１１０からの直流電流の電圧値を異なる電圧値に変換して、荷重センサ３６ｂ、ＡＤコンバータ１０２および増幅器１０８に与える。
【０１０６】
これら荷重センサ３６ｂ、ＡＤコンバータ１０２および増幅器１０８への電源供給は、マイコン１００によるＤＣ−ＤＣコンバータ１０４の制御によって、必要に応じて行われるようにしてよい。つまり、マイコン１００は、荷重センサ３６ｂを動作させて荷重を検出する必要があると判断されるときに、ＤＣ−ＤＣコンバータ１０４を制御して、各荷重センサ３６ｂ、ＡＤコンバータ１０２および各増幅器１０８に電源を供給するようにしてよい。
【０１０７】
電源が供給されると、各荷重センサ３６ｂは、入力された荷重を示す信号を出力する。当該信号は各増幅器１０８で増幅され、ＡＤコンバータ１０２でアナログ信号からディジタルデータに変換されて、マイコン１００に入力される。各荷重センサ３６ｂの検出値には各荷重センサ３６ｂの識別情報が付与されて、いずれの荷重センサ３６ｂの検出値であるかが識別可能にされる。このようにして、マイコン１００は、同一時刻における４つの荷重センサ３６ｂのそれぞれの荷重検出値を示すデータを取得することができる。
【０１０８】
一方、マイコン１００は、荷重センサ３６ｂを動作させる必要がないと判断されるとき、つまり、荷重検出タイミングでないとき、ＤＣ−ＤＣコンバータ１０４を制御して、荷重センサ３６ｂ、ＡＤコンバータ１０２および増幅器１０８への電源の供給を停止する。このように、荷重コントローラ３６では、必要なときにだけ、荷重センサ３６ｂを動作させて荷重の検出を行うことができるので、荷重検出のための電力消費を抑制することができる。
【０１０９】
荷重検出の必要なときとは、典型的には、ゲーム装置１２（図１）が荷重データを取得したいときである。たとえば、ゲーム装置１２が荷重情報を必要とするとき、ゲーム装置１２は荷重コントローラ３６に対して荷重取得命令を送信する。マイコン１００は、ゲーム装置１２から荷重取得命令を受信したときに、ＤＣ−ＤＣコンバータ１０４を制御して、荷重センサ３６ｂ等に電源を供給し、荷重を検出する。一方、マイコン１００は、ゲーム装置１２から荷重取得命令を受信していないときには、ＤＣ−ＤＣコンバータ１０４を制御して、電源供給を停止する。あるいは、マイコン１００は、一定時間ごとに荷重検出タイミングであると判断して、ＤＣ−ＤＣコンバータ１０４を制御するようにしてもよい。このような周期的な荷重取得を行う場合、周期情報は、たとえば、初めにゲーム装置１２からマイコン１００に与えられ、または、予めマイコン１００に記憶されてよい。
【０１１０】
荷重センサ３６ｂからの検出値を示すデータは、荷重コントローラ３６の操作データ（入力データ）として、マイコン１００から無線モジュール１０６およびアンテナ１０６ｂを介してゲーム装置１２（図１）に送信される。たとえば、ゲーム装置１２からの命令を受けて荷重検出を行った場合、マイコン１００は、ＡＤコンバータ１０２から荷重センサ３６ｂの検出値データを受信したときに、当該検出値データをゲーム装置１２に送信する。あるいは、マイコン１００は、一定時間ごとに検出値データをゲーム装置１２に送信するようにしてもよい。
【０１１１】
なお、無線モジュール１０６は、ゲーム装置１２の無線コントローラモジュール５２と同じ無線規格（Ｂｌｕｅｔｏｏｔｈ、無線ＬＡＮなど）で通信可能にされる。したがって、ゲーム装置１２のＣＰＵ４０は、無線コントローラモジュール５２等を介して荷重取得命令を荷重コントローラ３６に送信することができる。荷重コントローラ３６のマイコン１００は、無線モジュール１０６およびアンテナ１０６ａを介して、ゲーム装置１２からの命令を受信し、また、各荷重センサ３６ｂの荷重検出値（または荷重算出値）を含む入力データをゲーム装置１２に送信することができる。
【０１１２】
図８は、コントローラ２２および荷重コントローラ３６を用いて仮想ゲームをプレイするときの状態を概説する図解図である。図８に示すように、ビデオゲームシステム１０でコントローラ２２および荷重コントローラ３６を用いて仮想ゲームをプレイする際、プレイヤは、荷重コントローラ３６の上に乗り、一方の手でコントローラ２２を把持する。厳密に言うと、プレイヤは、コントローラ２２の先端面（撮像情報演算部８０が撮像する光の入射口２２ｄ側）がマーカ３４０ｍおよび３４０ｎの方を向く状態で、荷重コントローラ３６に乗り、コントローラ２２を把持する。ただし、図１からも分かるように、マーカ３４０ｍおよび３４０ｎは、モニタ３４の画面の横方向と平行に配置されている。この状態で、プレイヤは、コントローラ２２が指示する画面上の位置を変更したり、コントローラ２２と各マーカ３４０ｍおよび３４０ｎとの距離を変更したりすることによってゲーム操作を行う。
【０１１３】
なお、図８では、プレイヤがモニタ３４の画面に対して横を向くように荷重コントローラ３６を縦置きにしてあるが、ゲームによっては、プレイヤがモニタ３４の画面に対して正面を向くように荷重コントローラ３６を横置きにしてよい。
【０１１４】
図９は、マーカ３４０ｍおよび３４０ｎと、コントローラ２２との視野角を説明するための図である。図９に示すように、マーカ３４０ｍおよび３４０ｎは、それぞれ、視野角θ１の範囲で赤外光を放射する。また、撮像情報演算部８０の撮像素子８０ｃは、コントローラ２２の視線方向を中心とした視野角θ２の範囲で入射する光を受光することができる。たとえば、マーカ３４０ｍおよび３４０ｎの視野角θ１は、共に３４°（半値角）であり、一方、撮像素子８０ｃの視野角θ２は４１°である。プレイヤは、撮像素子８０ｃが２つのマーカ３４０ｍおよび３４０ｎからの赤外光を受光することが可能な位置および向きとなるように、コントローラ２２を把持する。具体的には、撮像素子８０ｃの視野角θ２の中に少なくとも一方のマーカ３４０ｍおよび３４０ｎが存在し、かつ、マーカ３４０ｍまたは３４０ｎの少なくとも一方の視野角θ１の中にコントローラ２２が存在する状態となるように、プレイヤはコントローラ２２を把持する。この状態にあるとき、コントローラ２２は、マーカ３４０ｍおよび３４０ｎの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ２２の位置および向きを変化させることによってゲーム操作を行うことができる。
【０１１５】
なお、コントローラ２２の位置および向きがこの範囲外となった場合、コントローラ２２の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
【０１１６】
操作可能範囲内でコントローラ２２が把持される場合、撮像情報演算部８０によって各マーカ３４０ｍおよび３４０ｎの画像が撮像される。すなわち、撮像素子８０ｃによって得られる撮像画像には、撮像対象である各マーカ３４０ｍおよび３４０ｎの画像（対象画像）が含まれる。図１０は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路８０ｄは、各マーカ３４０ｍおよび３４０ｎの撮像画像における位置を表す座標（マーカ座標）を算出する。
【０１１７】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路８０ｄは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路８０ｄは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である２つのマーカ３４０ｍおよび３４０ｎの画像３４０ｍ’および３４０ｎ’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像であるマーカ３４０ｍおよび３４０ｎの画像３４０ｍ’および３４０ｎ’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【０１１８】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路８０ｄは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子８０ｃの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子８０ｃによって撮像された撮像画像の解像度が１２６×９６であるとし、重心位置は１０２４×７６８のスケールで算出されるものとする。つまり、マーカ座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。
【０１１９】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをＹ軸正方向とし、右向きをＸ軸正方向とする座標系（ＸＹ座標系）で表現されるものとする。
【０１２０】
また、対象画像が正しく検出される場合には、判定処理によって２つの高輝度部分が対象画像として判定されるので、２箇所のマーカ座標が算出される。画像処理回路８０ｄは、算出された２箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ（マーカ座標データ）は、上述したように、プロセッサ７０によって入力データに含まれ、ゲーム装置１２に送信される。
【０１２１】
ゲーム装置１２（ＣＰＵ４０）は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ３４の画面上におけるコントローラ２２の指示位置（指示座標）と、コントローラ２２からマーカ３４０ｍおよび３４０ｎまでの各距離とを算出することができる。具体的には、２つのマーカ座標の中点の位置から、コントローラ２２の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、コントローラ２２と、マーカ３４０ｍおよび３４０ｎとの距離に応じて変化するので、２つのマーカ座標間の距離を算出することによって、ゲーム装置１２はコントローラ２２とマーカ３４０ｍおよび３４０ｎとの間の距離を把握できる。
【０１２２】
上述したように、コントローラ２２および荷重コントローラ３６を用いて仮想ゲームをプレイする場合、荷重コントローラ３６で検出される荷重値に基づいてゲーム処理を実行することができる。この実施例では、仮想ゲームが開始されると、本編の開始に先立って、プレイヤが静止した状態において荷重コントローラ３６によって荷重値が検出され、すなわちプレイヤの体重値が測定され、測定された体重値が基準値として設定（メインメモリ４２ｅまたは４６に記憶）される。そして、たとえば、設定された基準値と仮想ゲームの実行中に検出される荷重値とに基づいて、または仮想ゲームの実行中に検出される荷重値に基づいて算出したプレイヤの重心位置に基づいて、ゲーム処理が実行される。
【０１２３】
図１１−図１３は、モニタ３４に表示されるゲーム画面２００の例である。この実施例の仮想ゲームでは、人間を模したプレイヤオブジェクト２０２がスケートボード２０４に乗り、ゲームフィールド内を移動する。図示は省略するが、ゲームフィールド内には、所定のコースが設けられ、スケートボード２０４に乗ったプレイヤオブジェクト２０２が、コース内に設けられた通過ポイントのうち、決められた数の通過ポイントを制限時間内に通過するとゲームクリアとなる。しかし、スケートボード２０４に乗ったプレイヤオブジェクトが、決められた数の通過ポイントを通過する前に、制限時間が経過するとゲームオーバとなる。
【０１２４】
この実施例では、スケートボード２０４に乗ったプレイヤオブジェクト２０２は、プレイヤの指示に従って、図１１（Ａ）に示すように、地面を片足でキックしたり、図１１（Ｂ）に示すように、通常の走行を行ったり、図１２（Ａ）および図１２（Ｂ）に示すように、チクタク（または旋回）したり、図１３（Ａ）に示すように、ウィリーしたり、図１３（Ｂ）に示すように、ジャンプしたりする。ただし、図１２（Ａ）には、プレイヤオブジェクト２０２が正面（つま先）側に体重を掛けている場合（チクタク＋）を示し、図１２（Ｂ）には、プレイヤオブジェクト２０２が背面（踵）側に体重を掛けている場合（チクタク−）を示してある。
【０１２５】
プレイヤは、実際のスケートボードに乗るように、荷重コントローラ３６に乗り、キックしたり、チクタクしたり、ウィリーしたり、ジャンプしたりするように動作する。ただし、この実施例では、荷重コントローラ３６で検出される荷重値の変化（加重，抜重）および重心位置の変化に応じて、キック、チクタク（または旋回）、ウィリー、ジャンプの動作すなわちプレイヤの指示（入力）を判定するようにしてある。
【０１２６】
なお、プレイヤがウィリーやジャンプの動作を行ったとしても、実際のスケートボードとは異なり、荷重コントローラ３６が斜めになったり、床面から浮いたりすることはない。
【０１２７】
ここで、図１４（Ａ）に示す荷重コントローラ３６に対応して、図１４（Ｂ）に示すような重心位置の検出範囲が設定されている。図１４（Ａ）では省略するが、図８に示したように、プレイヤは荷重コントローラ３６上に乗り、仮想ゲームをプレイする。この実施例では、プレイヤは、図１４（Ａ）に示す状態で配置された荷重コントローラ３６に対して、点線で示すように、右足をそのつま先を荷重コントローラ３６の正面方向に向けて乗せ、左足をそのつま先を正面方向から左側に少し開く方向に向けて乗せる。ただし、荷重コントローラ３６の正面方向は、電源ボタン３６ｃが設けられる側と反対方向である。また、図８にも示したように、荷重コントローラ３６の正面方向からほぼ９０度左方向にモニタ３４が配置される。さらに、図示は省略するが、プレイ中では、プレイヤは首を左方向に捻ってモニタ３４を見ている状態となる。
【０１２８】
なお、これ以降では、方向を説明する必要がある場合には、荷重コントローラ３６に乗っているプレイヤの正面方向、背面方向、左方向および右方向を用いることにする。
【０１２９】
たとえば、プレイヤは、プレイヤオブジェクト２０２にキックの動作をさせたい場合には、図１４（Ａ）に示すように両足を荷重コントローラ３６に乗せた状態から、右足を荷重コントローラ３６から離して、荷重コントローラ３６の正面側の床面を蹴るように動作し、その後、右足を荷重コントローラ３６上に戻す。つまり、プレイヤは、実際のスケートボードに乗っているように、キックの動作を行うのである。ただし、プレイヤオブジェクト２０２に連続してキックの動作をさせたい場合には、プレイヤは、そのキックの動作の回数に応じた回数だけ、上述した一連の動作において、荷重コントローラ３６の正面側の床面を蹴る動作を繰り返す。
【０１３０】
また、プレイヤは、プレイヤオブジェクト２０２にチクタクの動作をさせたい場合には、図１４（Ａ）に示すように両足を荷重コントローラ３６に乗せた状態で、体重を正面（つま先）側と背面（踵）側とに交互に掛けるように、膝を使って体（特に上体）を前後方向に移動させる。ただし、プレイヤの体重移動が遅い（体重移動の周期が長い）場合には、プレイヤオブジェクト２０２は、右方向または左方向に旋回する（曲がる）ように移動される。
【０１３１】
さらに、プレイヤは、プレイヤオブジェクト２０２にウィリーの動作をさせたい場合には、図１４（Ａ）に示すように両足を荷重コントローラ３６に乗せた状態で、一方の足（この実施例では、右足）に体重を掛けるように、膝を使って体（特に上体）を右方向に傾ける。ただし、プレイヤが右足に体重を掛けて、体を右方向に傾け続けている場合には、ウィリー状態への姿勢補間を完了した後に、プレイヤオブジェクト２０２はブレーキの動作を行う。
【０１３２】
さらにまた、プレイヤは、プレイヤオブジェクト２０２にジャンプの動作をさせたい場合には、図１４（Ａ）に示すように両足を荷重コントローラ３６に乗せた状態で、両足の膝を曲げた後に、一気に（素早く）両足の膝を伸ばすように、体を上下方向に移動させる。
【０１３３】
このようなプレイヤの動作が、荷重コントローラ３６で検出される荷重値または／および荷重値から算出される重心位置に基づいて判別されるのである。
【０１３４】
上述したように、図１４（Ｂ）に示すように、荷重コントローラ３６に対応して、重心位置の検出範囲が設定されている。荷重コントローラ３６の長手方向が検出範囲のＸ軸方向であり、短手方向が検出範囲のＹ軸方向である。また、図１４（Ｂ）に示すように、右方向がＸ軸のプラス方向であり、上方向がＹ軸のプラス方向である。さらに、検出範囲すなわち荷重コントローラ３６の中心位置が原点Ｏ（０，０）である。
【０１３５】
また、重心位置の重心座標（ＸＧ，ＹＧ）は、数１に従って算出される。ただし、図１４（Ａ）に示す状態において、左上の荷重センサ３６ｂで検出される荷重値をＲ１とし、左下の荷重センサ３６ｂで検出される荷重値をＲ２とし、右上の荷重センサ３６ｂで検出される荷重値をＲ３とし、そして、右下の荷重センサ３６ｂで検出される荷重値をＲ４とする。ただし、−１≦ＸＧ≦１，−１≦ＹＧ≦１であり、Ｃ１，Ｃ２は、ＸＧ，ＹＧをその範囲にするための定数である。
【０１３６】
[数１]
ＸＧ＝｛（Ｒ３＋Ｒ４）−（Ｒ１＋Ｒ２）｝×Ｃ１
ＹＧ＝｛（Ｒ１＋Ｒ３）−（Ｒ２＋Ｒ４）｝×Ｃ２
たとえば、プレイヤオブジェクト２０２にキックの動作をさせる指示であるか否かは、荷重コントローラ３６で検出される荷重値に基づいて判定される。上述したように、プレイヤオブジェクト２０２にキックの動作をさせる場合には、プレイヤは右足を荷重コントローラ３６から離して、床面を蹴るため、床面を蹴るときに、荷重コントローラ３６にかかる荷重が体重値（基準値）よりも小さくなる（抜重）。プレイヤが床面を蹴った後に、その右足を荷重コントローラ３６上に戻すと、荷重コントローラ３６にかかる荷重が体重値に戻る（加重）。
【０１３７】
この実施例では、後述するように、加重の有無のみに基づいてジャンプの動作をさせる指示の有無を判定するため、キックの動作をさせる指示であるかどうかを判定する場合には、抜重の有無のみを判断するようにして、入力の誤判定を無くすようにしてある。
【０１３８】
ただし、キックの動作をさせる指示であるか否か（抜重が有るか否か）を判定する場合には、プレイヤオブジェクト２０２が移動している場合と移動していない場合とで、判定のための閾値（この実施例では、基準値に対する荷重値の倍率）が異なる。この実施例では、プレイヤオブジェクト２０２が移動している場合よりも、移動していない（停止している）場合の方が、キックの動作をさせる指示であることが判定され易いように、閾値が設定されている。これは、プレイヤオブジェクト２０２が停止している状態において、抜重があった場合には、プレイヤオブジェクト２０２の移動を開始するために、キックの指示が入力されたと判定するのが自然だからである。
【０１３９】
また、プレイヤオブジェクト２０２にチクタクの動作をさせる指示であるか否かは、荷重コントローラ３６で検出される重心位置のＹ座標（ＹＧ）に基づいて判断される。これは、上述したように、プレイヤオブジェクト２０２にチクタクの動作をさせる場合には、プレイヤは、荷重コントローラ３６上で前後方向に上体を移動させるためである。
【０１４０】
さらに、プレイヤオブジェクト２０２にウィリーの動作をさせる指示であるか否かは、荷重コントローラ３６で検出される４つの荷重値から数１に従って算出された重心位置のＸ座標およびＹ座標のそれぞれが所定の範囲Ａ内であるかどうかで判断される。これは、チクタク（旋回）の動作をさせる指示と区別して、正確に判断するためである。
【０１４１】
さらにまた、プレイヤオブジェクト２０２にジャンプの動作をさせる指示であるか否かは、荷重コントローラ３６で検出される荷重値に基づいて判定される。上述したように、プレイヤオブジェクト２０２にジャンプの動作をさせる場合には、プレイヤは荷重コントローラ３６上で膝を曲げた状態から素早く膝を伸ばすように体を上下方向に移動させるため、素早く膝を伸ばすときに、荷重コントローラ３６にかかる荷重が体重値（基準値）よりも大きくなる（加重）。したがって、プレイヤオブジェクト２０２にジャンプの動作をさせるための指示であるか否かは、荷重コントローラ３６で検出される荷重値が異なる一定の閾値（この実施例では、体重値に対する荷重値の倍率）を超えているか否かで判断される。
【０１４２】
なお、プレイヤがプレイヤオブジェクト２０２にジャンプの動作をさせる場合には、まず、プレイヤは膝を曲げるため、荷重コントローラ３６にかかる荷重が体重値よりも小さくなることがある。つまり、加重が検出される前に、抜重が検出されることがある。しかし、プレイヤが膝を曲げる速度が遅い場合には、そのような抜重は検出されないため、プレイヤが素早く膝を伸ばすときの加重を検出して、プレイヤオブジェクト２０２にジャンプの動作をさせるための指示があるか否かを正確に判断するようにしてある。また、プレイヤが素早く膝を伸ばした後に、少し膝を曲げた状態（通常の姿勢）に戻る際に、抜重が検出されるが、これはジャンプの指示の判定には使用しないようにしてある。たとえば、加重が検出された後の一定時間は、検出された抜重をジャンプの指示の判定に使用しないようにする。これは、上述したように、キックの指示かどうかを抜重のみによって判別しているためである。
【０１４３】
たとえば、キックしたり、チクタクしたりすると、プレイヤオブジェクト２０２は進行方向に加速される。この実施例では、キックした場合には、プレイヤオブジェクト２０２は、一定の加速度（この実施例では、１．６）で進行方向に加速される。また、チクタクした場合には、プレイヤオブジェクト２０２は、異なる一定の加速度（この実施例では、０．５）で進行方向に加速される。
【０１４４】
ただし、この実施例では、現実世界における１０ｃｍが３次元仮想空間における距離１．０に相当する。
【０１４５】
また、ウィリーの状態が一定時間以上続くと、プレイヤオブジェクト２０２は、減速する。この実施例では、１ゲームフレーム毎に一定値（０．０１５）で減速される。さらに、ジャンプすると、プレイヤオブジェクト２０２は、進行方向に、移動速度に応じた距離だけ空中を移動し、たとえば障害物（図示せず）を飛び越えたり、段上に乗ったり、段上から下りたりする。
【０１４６】
また、図１１−図１３に示したように、プレイヤオブジェクト２０２は、プレイヤからの指示に応じたモーションでゲーム画面２００に表示される。つまり、プレイヤの指示に応じたアニメーションが再生される。たとえば、キックのアニメーションは、前半（キックＡ）と後半（キックＢ）との２つに分かれている。キックＡのモーションは、プレイヤオブジェクト２０２がその両足をスケートボード２０４に乗せた状態から蹴り足（この実施例では、右足）で地面を蹴る動作である。また、キックＢのモーションは、蹴り上げた足をスケートボード２０４上に下ろす動作である。たとえば、キックＡが０〜３０フレーム（３１コマに相当する）のアニメーションであり、キックＢが０〜２０フレーム（２１コマに相当する）のアニメーションである。
【０１４７】
このように、キックＡとキックＢとにアニメーションを分けているのは、プレイヤが連続してキックの指示を入力する場合に、その入力にプレイヤオブジェクト２０２のモーションを対応させるためである。たとえば、キックＢのモーションに対応するアニメーションの再生中に、再度キックの指示が入力されると、そのときの再生フレームから１０フレームかけてプレイヤオブジェクト２０２の姿勢を補間し、キックＡのアニメーションフレームの１０フレーム目に戻される。そして、キックＡのアニメーションが最終フレーム（３０フレーム）まで再生され、続けて、キックＢのアニメーションの最初から再生が開始される。キックＢのアニメーションが最終フレームまで再生されると、キックの動作は終了される。補間処理等が実行され、キックＢのアニメーションを再生中に再度キックの指示がある場合には、さらに同様の補間処理等が実行され、モニタ３４に表示されたプレイヤオブジェクト２０２が連続してキックの動作を行っているように見える。
【０１４８】
また、チクタクのアニメーションは、０〜１２０フレーム（１２１コマに相当する）である。たとえば、０フレーム目は、スケートボード２０４上のプレイヤオブジェクト２０２が背面側に体重を掛けた状態である。６０フレーム目は、プレイヤオブジェクト２０２がスケートボード２０４上で少し膝を曲げて真っ直ぐ立っている状態である。１２０フレーム目は、スケートボード２０４上のプレイヤオブジェクト２０２が正面側に体重を掛けた状態である。このチクタクのアニメーションは、プレイヤの重心位置のＹ座標（ＹＧ）に応じて０〜１２０フレームの間で順再生または逆再生される。たとえば、プレイヤの重心位置のＹ座標が０→＋１→−１→０と変化した場合には、アニメーションは、６０フレーム→１２０フレーム→０フレーム→６０フレームと再生される。ただし、プレイヤの体重移動に従ってＹ座標が線形的に変化し、これに応じて、アニメーションフレームも順次変化される。たとえば、Ｙ座標が０→＋１に変化する場合には、Ｙ座標が０．１増えるに従って、アニメーションフレームは、６０フレーム目から６フレームずつ進められる。一方、Ｙ座標が０→−１に変化する場合には、Ｙ座標が０．１減少するに従って、アニメーションフレームは、６０フレーム目から６フレームずつ戻される。
【０１４９】
さらに、ウィリーの状態のアニメーションは、０〜１２０フレーム（１２１コマに相当する）である。０フレーム目は、スケートボード２０４の前輪（この実施例では、プレイヤオブジェクト２０２の左足側の車輪）が浮いており、プレイヤオブジェクト２０２が背面側に傾いている状態である。また、６０フレーム目は、スケートボード２０４の前輪が浮いており、プレイヤオブジェクト２０２はスケートボード２０４の中央に位置している状態である。さらに、１２０フレーム目は、スケートボード２０４の前輪が浮いており、プレイヤオブジェクト２０２が正面側に傾いている状態である。たとえば、プレイヤの重心位置のＹ座標（ＹＧ）が−１→０→＋１と変化すると、ウィリー状態のアニメーションは、０フレーム→６０フレーム→１２０フレームと変化する。詳細な説明は省略するが、チクタクの場合と同様に、プレイヤの体重移動に従ってＹ座標が線形的に変化し、これに応じて、アニメーションフレームも順次変化される。
【０１５０】
なお、詳細な説明は省略するが、スケートボード２０４の全車輪が地面に着いた状態からウィリーの状態へのモーションは、１０ゲームフレームかけてプレイヤオブジェクト２０２およびスケートボード２０４の姿勢を補間して表現するようにしてある。同様に、ウィリーの状態からスケートボード２０４の全車輪が地面に着いた状態へのモーションは、１０ゲームフレームかけてプレイヤオブジェクト２０２およびスケートボード２０４の姿勢を補間して表現するようにしてある。
【０１５１】
また、ジャンプのアニメーションは、ジャンプＡ（ジャンプ前）、ジャンプＢ（ジャンプ中）、ジャンプＣ（ジャンプ後）の３つに分かれている。ジャンプＡのモーションでは、スケートボード２０４の全車輪が地面に着いた状態から、プレイヤオブジェクト２０２が右足（後輪）側に傾いた姿勢（以下、「後方傾き姿勢」という）で飛び上がる。ジャンプＢのモーションでは、プレイヤオブジェクト２０２が後方傾き姿勢でスケートボード２０４とともに上昇した後、最高点で姿勢を水平にし、落下しつつ左足（前輪）側に傾いた姿勢（以下、「前方傾き姿勢」という）になる。ジャンプＣのモーションでは、プイレヤオブジェクト２０２は、落下中の前方傾き姿勢から、膝を曲げた状態で着地する。
【０１５２】
なお、ジャンプ終了後、すなわちジャンプＣのモーションの終了後では、プレイヤオブジェクト２０２が膝を曲げた状態から通常の走行中の状態（図１１（Ｂ）参照）に戻るモーションは、１０ゲームフレームかけて補間される。
【０１５３】
ジャンプＡ、Ｂ、Ｃのアニメーションは、それぞれ、０〜１１フレーム（１２コマに相当する）である。後述するように、ジャンプの飛距離は可変であるため、ジャンプＡのアニメーションが再生され、飛距離に応じたアニメーションフレームの間隔でジャンプＢのアニメーションが再生され、そして、ジャンプＣのアニメーションが再生される。
【０１５４】
また、３次元仮想空間におけるプレイヤオブジェクト２０２の位置は、数２および数３に従う積分シミュレーションによって算出される。ただし、数２は並進によるプレイヤオブジェクト２０２の水平方向の位置を算出するための数式であり、数３はプレイヤオブジェクトがジャンプした場合のその高さを算出するための数式である。
【０１５５】
また、数２において、ｖ０は現在のゲームフレーム（現フレーム）におけるプレイヤオブジェクト２０２の水平方向の速度であり、ｖ１は次のゲームフレーム（次フレーム）におけるプレイヤオブジェクト２０２の水平方向の速度であり、ａはプレイヤオブジェクト２０２のキックやチクタクによる水平方向の加速度であり、そして、ｋ１は摩擦抵抗や空気抵抗などの抵抗である。なお、ｔは、時間（単位：ゲームフレーム）である。ただし、時間ｔを算出する場合以外は、１ゲームフレーム毎の速度や距離を算出するため、通常、時間ｔの値は「１」である。また、ｘ０は現フレームにおけるプレイヤオブジェクト２０２の位置であり、ｘ１は次フレームにおけるプレイヤオブジェクト２０２の位置である。
【０１５６】
なお、現フレームの速度ｖ０は、プレイヤオブジェクト２０２がジャンプするときには、一定の係数（この実施例では、０．８）によって補正される。これは、後述するように、ジャンプ時に、プレイヤオブジェクト２０２に対して、上方向に一定の速度を与えるためである。
【０１５７】
また、数３においては、ｖｈ０は現フレームにおけるプレイヤオブジェクト２０２の高さ方向の速度であり、ｖｈ１は次フレームにおけるプレイヤオブジェクト２０２の高さ方向の速度であり、ｇは重力加速度であり、そして、ｋ２は空気抵抗である。ただし、この実施例では、重力加速度は、（０，−０．０７，０）に設定されている。また、ｈはプレイヤオブジェクト２０２の高さである。ただし、プレイヤオブジェクト２０２がバンクやジャンプ台などの段上を滑っている場合には、その地形の高さ情報で、プレイヤオブジェクト２０２の高さは算出される。なお、これらすべての変数ないし定数は、３次元のベクトルで表わされる。
【０１５８】
[数２]
ｖ１＝ｖ０＋ａｔ−ｋ１
ｘ１＝ｘ０＋ｖ１
[数３]
ｖｈ１＝ｖｈ０＋ｇｔ−ｋ２
ｈ＝ｖｈ０ｔ−ｇｔ２／２
また、プレイヤオブジェクト２０２は、数４に従って、３次元仮想空間に配置される位置および向きが決定される。ただし、数４に示す行列式Ｐの各要素は次の意味を持つ。要素（Ｘｘ，Ｘｙ，Ｘｚ）はプレイヤオブジェクト２０２のローカル座標のＸ軸を当てはめる方向であり、要素（Ｙｘ，Ｙｙ，Ｙｚ）はプレイヤオブジェクト２０２のローカル座標のＹ軸を当てはめる方向であり、要素（Ｚｘ，Ｚｙ，Ｚｚ）はプレイヤオブジェクト２０２のローカル座標のＺ軸を当てはめる方向であり、要素（Ｐｘ，Ｐｙ，Ｐｚ）はプレイヤオブジェクト２０２のローカル座標の中心（重心）を置くワールド座標（３次元座標）である。この要素（Ｐｘ，Ｐｙ，Ｐｚ）が上述の数２に示した位置ｘ１の３次元座標（３次元ベクトル）に相当する。ただし、プレイヤオブジェクト２０２がジャンプした場合には、上述の数３に従って求められたｈがＰｙの値となる。
【０１５９】
[数４]
2010267199.tif 000003
【０１６０】
詳細な説明は省略するが、プレイヤオブジェクト２０２のローカル座標のＸ軸の正方向はプレイヤオブジェクト２０２の正面（腹）の方向に対して９０度左方向であり、その正面方向がローカル座標のＺ軸の正方向であり、Ｘ軸とＺ軸とに直交し、プレイヤオブジェクト２０２の真上方向がローカル座標のＹ軸の正方向である。
【０１６１】
ただし、３次元仮想空間におけるプレイヤオブジェクト２０２の向きは、プレイヤの重心位置の重心座標（ＸＧ，ＹＧ）に応じて決定される。具体的には、まず、重心座標（ＸＧ，ＹＧ）に基づいて、３次元仮想空間において、プレイヤオブジェクト２０２のローカル座標のＺ軸を当てはめる方向（Ｚベクトル（Ｘｚ，Ｙｚ，Ｚｚ））が決定される。次に、このＺベクトルに直交し、プレイヤオブジェクト２０２の左手方向に延びるローカル座標のＸ軸を当てはめる方向（Ｘベクトル（Ｘｘ，Ｙｘ，Ｚｘ））が決定される。さらに、ＺベクトルとＸベクトルとの外積を求めて、３次元仮想空間において、プレイヤオブジェクト２０２のローカル座標のＹ軸を当てはめる方向（Ｙベクトル（Ｘｙ，Ｙｙ，Ｚｙ））が決定される。ただし、Ｘベクトル、ＹベクトルおよびＺベクトルは、大きさ「１」の単位ベクトルである。
【０１６２】
図１５は、図２に示したメインメモリ（４２ｅ，４６）のメモリマップ４００を示す図解図である。図１５に示すように、メインメモリ（４２ｅ，４６）は、プログラム記憶領域４０２およびデータ記憶領域４０４を含む。プログラム記憶領域４０２には、情報処理プログラムとしてのゲームプログラムが記憶され、ゲームプログラムは、メイン処理プログラム４０２ａ、画像生成プログラム４０２ｂ、画像表示プログラム４０２ｃ、荷重取得プログラム４０２ｄ、重心算出プログラム４０２ｅ、キック判定プログラム４０２ｆ、チクタク判定プログラム４０２ｇ、ウィリー判定プログラム４０２ｈ、ジャンプ判定プログラム４０２ｉおよびプレイヤオブジェクト配置プログラム４０２ｊなどによって構成される。
【０１６３】
メイン処理プログラム４０２ａは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム４０２ｂは、後述する画像データ４０４ａやアニメーションデータ４０４ｂ−４０４ｅなどを用いてゲーム画像データを生成するためのプログラムである。画像表示プログラム４０４ｃは、画像生成プログラム４０２ｂに従って生成されたゲーム画像データをゲーム画面（２００など）として、モニタ３４に表示するためのプログラムである。
【０１６４】
荷重取得プログラム４０２ｄは、荷重コントローラ３６の４つの荷重センサ３６ｂで検出された荷重値に対応する荷重値データを取得するためのプログラムである。たとえば、仮想ゲームの本編の開始に先立って、荷重取得プログラム４０２ｄに従って取得された４つの荷重値の合計値のデータが基準値データ４０４ｆ（図１６参照）として記憶される。また、ゲーム中では、１ゲームフレーム毎に荷重取得プログラム４０２ｄに従って取得された４つの荷重値の合計値のデータが現荷重値データ４０４ｇ（図１６参照）としてデータ記憶領域４０４に記憶される。
【０１６５】
重心算出プログラム４０２ｅは、荷重取得プログラム４０２ｄに従って取得された４つの荷重値を用いて、数１に従って、プレイヤの重心位置の重心座標（ＸＧ，ＹＧ）を算出するためのプログラムである。
【０１６６】
キック判定プログラム４０２ｆは、上述したように、荷重取得プログラム４０２ｄに従って取得された基準値と現荷重値とに基づいて、プレイヤがプレイヤオブジェクト２０２にキックの動作をさせる指示が有るか否かを判定するためのプログラムである。
【０１６７】
チクタク判定プログラム４０２ｇは、上述したように、重心算出プログラム４０２ｅに従って算出されたプレイヤの重心位置のＹ座標（ＹＧ）に基づいて、プレイヤオブジェクト２０２にチクタクの動作をさせる指示が有るか否かを判定するためのプログラムである。
【０１６８】
ウィリー判定プログラム４０２ｈは、上述したように、重心算出プログラム４０２ｅに従って算出されたプレイヤの重心位置の重心座標（ＸＧ，ＹＧ）に基づいて、プレイヤオブジェクト２０２にウィリーの動作をさせる指示が有るか否かおよびウィリー状態を維持するか否かを判定するためのプログラムである。
【０１６９】
ジャンプ判定プログラム４０２ｉは、上述したように、荷重取得プログラム４０２ｄに従って取得された基準値と現荷重値とに基づいて、プレイヤがプレイヤオブジェクト２０２にジャンプの動作をさせる指示が有るか否かを判定するためのプログラムである。
【０１７０】
プレイヤオブジェクト配置プログラム４０２ｊは、３次元仮想空間にプレイヤオブジェクト２０２を配置するためのプログラムである。上述したように、プレイヤオブジェクト２０２は、プレイヤの指示に従って、３次元仮想空間内を移動される。つまり、プレイヤオブジェクト２０２の位置および向きが制御され、数４に従って、プレイヤオブジェクト２０２は３次元仮想空間に配置される。
【０１７１】
図示は省略するが、プログラム記憶領域４０２には、音出力プログラムやバックアッププログラムなども記憶される。音出力プログラムは、プレイヤオブジェクトの音声ないし擬声音、効果音、ゲーム音楽（ＢＧＭ）のような仮想ゲームに必要な音を生成および出力するためのプログラムである。バックアッププログラムは、仮想ゲームのゲームデータ（途中データ，結果データ）をフラッシュメモリ４４やメモリカードに記憶（セーブ）するためのプログラムである。
【０１７２】
図１６は、図１５に示したデータ記憶領域４０４の具体的な内容を示す。図１６に示すように、データ記憶領域４０４は、画像データ４０４ａ、キックアニメーションデータ４０４ｂ、チクタクアニメーションデータ４０４ｃ、ウィリーアニメーションデータ４０４ｄ、ジャンプアニメーションデータ４０４ｅ、基準値データ４０４ｆ、現荷重値データ４０４ｇおよび重心位置データ４０４ｈが記憶される。また、データ記憶領域４０４には、ポイント通過フラグ４０４ｉ、ゲームクリアフラグ４０４ｊ、ゲームオーバフラグ４０４ｋ、キック入力不可フラグ４０４ｍ、チクタク＋フラグ４０４ｎおよびチクタク−フラグ４０４ｐが設けられる。さらに、データ記憶領域４０４には、第１フレームカウンタ４０４ｑおよび第２フレームカウンタ４０４ｒが設けられる。
【０１７３】
画像データ４０４ａは、ゲーム画像データを生成するためのポリゴンデータやテクスチャデータなどのデータである。キックアニメーションデータ４０４ｂは、プレイヤオブジェクト２０２にキックの動作をさせるためのアニメーションのデータであり、前半のキックＡについての０〜３０フレームと、後半のキックＢについての０〜２０フレームとで構成される。
【０１７４】
チクタクアニメーションデータ４０４ｃは、プレイヤオブジェクト２０２にチクタクの動作をさせるためのアニメーションのデータであり、０〜１２０フレームで構成される。ウィリーアニメーションデータ４０４ｄは、プレイヤオブジェクト２０２にウィリー状態の動作をさせるためのアニメーションのデータであり、０〜１２０フレームで構成される。
【０１７５】
ジャンプアニメーションデータ４０４ｅは、プレイヤオブジェクト２０２にジャンプの動作をさせるためのアニメーションのデータであり、ジャンプＡについての０〜１１フレーム、ジャンプＢについての０〜１１フレームおよびジャンプＣについての０〜１１フレームで構成される。
【０１７６】
基準値データ４０４ｆは、仮想ゲームの本編開始前に、荷重取得プログラム４０２ｄに従って取得した４つの荷重値の合計値（体重値）についてのデータである。現荷重値データ４０４ｇは、ゲーム中に、１ゲームフレーム毎に、荷重取得プログラム４０２ｄに従って取得した４つの荷重値の合計値についてのデータである。つまり、現荷重値データ４０４ｇは、１ゲームフレーム毎に更新される。重心位置データ４０４ｈは、重心算出プログラム４０２ｅに従って算出されたプレイヤの重心位置の重心座標（ＸＧ，ＹＧ）に対応する座標データである。
【０１７７】
ポイント通過フラグ４０４ｉは、３次元仮想空間内に設けられた所定の通過ポイントを通過したかどうかを判定するためのフラグであり、１ビットのレジスタで更新される。プレイヤオブジェクト２０２が未だ通過していない通過ポイントを通過した際に、ポイント通過フラグ４０４ｉはオンされ、レジスタにデータ値「１」が設定される。また、プレイヤオブジェクト２０２が未だ通過していない通過ポイントを通過したことがゲーム画面などによって表現されると、ポイント通過フラグ４０４ｉはオフされ、レジスタにデータ値「０」が設定される。ただし、プレイヤオブジェクト２０２が何ら通過ポイントを通過していない場合や既に通過した通過ポイントを再度通過した場合には、ポイント通過フラグ４０４ｉはオフのままである。
【０１７８】
ゲームクリアフラグ４０４ｊは、ゲームクリアかどうかを判定するためのフラグであり、１ビットのレジスタで構成される。仮想ゲームがクリアされると、ゲームクリアフラグ４０４ｊはオンされ、レジスタにデータ値「１」が設定される。一方、仮想ゲームがクリアされていなければ、ゲームクリアフラグ４０４ｊはオフされ、レジスタにデータ値「０」が設定される。
【０１７９】
ゲームオーバフラグ４０４ｋは、ゲームオーバかどうかを判定するためのフラグであり、１ビットのレジスタで構成される。仮想ゲームがゲームオーバになると、ゲームオーバフラグ４０４ｋはオンされ、レジスタにデータ値「１」が設定される。一方、仮想ゲームがゲームオーバにならなければ、ゲームオーバフラグ４０４ｋはオフされ、レジスタにデータ値「０」が設定される。
【０１８０】
キック入力不可フラグ４０４ｍは、キック入力を受け付けるか否かを判定するためのフラグであり、１ビットのレジスタで構成される。キック入力を受け付ける場合には、キック入力不可フラグ４０４ｍはオンされ、レジスタにデータ値「１」が設定される。一方、キック入力を受け付けた後に、現荷重値が所定の条件を満たすと、キック入力不可フラグ４０４はオフされ、レジスタにデータ値「０」が設定される。つまり、キック入力不可フラグ４０４ｍを設けることにより、連続してキックの指示が入力される場合に、プレイヤが正しく動作（入力操作）を行っているか否かを判定しているのである。
【０１８１】
チクタク＋フラグ４０４ｎは、チクタクの動作のうち、プレイヤが正面側に体重を掛けているか否かを判定するためのフラグであり、１ビットのレジスタで構成される。プレイヤが正面側に体重を掛けている場合には、チクタク＋フラグ４０４ｎはオンされ、レジスタにデータ値「１」が設定される。一方、プレイヤが正面側に体重を掛けていない場合には、チクタク＋フラグ４０４ｎはオフされ、レジスタにデータ値「０」が設定される。また、後述するチクタク−フラグ４０４ｐがオンされた場合にも、チクタク＋フラグ４０４ｎはオフされる。
【０１８２】
チクタク−フラグ４０４ｐは、チクタクの動作のうち、プレイヤが背面側に体重を掛けているか否かを判定するためのフラグであり、１ビットのレジスタで構成される。プレイヤが背面側に体重を掛けている場合には、チクタク−フラグ４０４ｐはオンされ、レジスタにデータ値「１」が設定される。一方、プレイヤが背面側に体重を掛けていない場合には、チクタク−フラグ４０４ｐはオフされ、レジスタにデータ値「０」が設定される。また、上述したチクタク＋フラグ４０４ｎがオンされた場合にも、チクタク−フラグ４０４ｐはオフされる。
【０１８３】
第１フレームカウンタ４０４ｑは、ウィリーの状態へアニメーションの補間が終了してからの一定時間（この実施例では、５ゲームフレーム）やジャンプのアニメーションの再生が終了してからの異なる一定時間（この実施例では、１０ゲームフレーム）をカウントするためのカウンタである。第２フレームカウンタ４０４ｒは、チクタク＋フラグ４０４ｎまたはチクタク−フラグ４０４ｐがオンされている一定時間（この実施例では、６０ゲームフレーム）をカウントするためのカウンタである。
【０１８４】
図示は省略するが、データ記憶領域４０４には、音データなども記憶され、また、仮想ゲームの実行に必要な他のフラグやカウンタ（タイマ）も設けられる。
【０１８５】
図１７および図１８は、図２に示したＣＰＵ４０のゲーム全体処理を示すフロー図である。図１７に示すように、ＣＰＵ４０は、ゲーム全体処理を開始すると、ステップＳ１で、初期設定を実行する。ここでは、画像データ４０４ａおよびアニメーションデータ４０４ｂ−４０４ｅをデータ記憶領域４０４にロードしたり、基準値データ４０４ｆ、現荷重値データ４０４ｇおよび重心位置データ４０４ｈをクリアしたり、フラグ４０４ｉ−４０４ｐをオフしたり、カウンタ４０４ｑおよび４０４ｒをリセットしたりする。
【０１８６】
次のステップＳ３では、プレイヤの体重値を検出し、基準値として記憶する。つまり、ＣＰＵ４０は、仮想ゲームの本編の開始に先立って、４つの荷重センサ３６ｂで検出された荷重値の合計値を体重値として取得し、その数値データを基準値データ４０４ｆとしてデータ記憶領域４０４に記憶する。そして、ステップＳ５で、仮想ゲームの本編を開始する。
【０１８７】
続いて、ステップＳ７では、現在（現フレーム）の荷重値を取得し、取得した荷重値を記憶する。つまり、ＣＰＵ４０は、４つの荷重センサ３６ｂで検出された荷重値の合計値を現在の荷重値として取得し、その数値データを現荷重値データ４０４ｇとしてデータ記憶領域４０４に記憶する。
【０１８８】
なお、ステップＳ７−Ｓ２７の処理のスキャンタイムは、１ゲームフレーム（１／６０（秒））であるため、ゲーム中では、１ゲームフレーム毎に、現在の荷重値が検出される。つまり、現荷重値データ４０４ｇは、１ゲームフレーム毎に更新される。このことは、次の重心位置データ４０４ｈも同様である。
【０１８９】
次のステップＳ９では、現在の重心位置を算出し、算出した重心位置を記憶する。つまり、ＣＰＵ４０は、４つの荷重センサ３６ｂから取得した荷重値を用いて、数１に従って、現フレームの重心位置の座標（ＸＧ，ＹＧ）を算出し、算出した重心位置の座標（ＸＧ，ＹＧ）についての座標データを重心位置データ４０４ｈとしてデータ記憶領域４０４に記憶する。
【０１９０】
続いて、図１８に示すステップＳ１１では、所定の通過ポイントを通過したかどうかを判断する。ここでは、ＣＰＵ４０は、未だ通過していない通過ポイントを通過したかどうかを判断するのである。詳細な説明は省略するが、通過ポイントは、予め設定されていたり、仮想ゲームの進行に応じて可変的に設定されたりする。ただし、ＣＰＵ４０は、プレイヤオブジェクト２０２が未だ通過していない通過ポイントの設定された位置（３次元位置）ないし領域を通過したかどうかを判断しているのである。
【０１９１】
ステップＳ１１で“ＮＯ”であれば、つまりプレイヤオブジェクト２０２が所定の通過ポイントを通過していなければ、そのままステップＳ１９に進む。一方、ステップＳ１１で“ＹＥＳ”であれば、つまりプレイヤオブジェクト２０２が所定の通過ポイントを通過したと判断すると、ステップＳ１３で、ポイント通過フラグ４０４ｉをオンし、ステップＳ１５で、ゲームクリアであるかどうかを判断する。つまり、ＣＰＵ４０は、プレイヤオブジェクト２０２が決められた数の通過ポイントを制限時間内に通過したかどうかを判断するのである。図示は省略するが、仮想ゲームの本編が開始されてからの時間は、ゲーム装置１０に設けられたカウンタ（タイマ）によってカウントされている。
【０１９２】
ステップＳ１５で“ＮＯ”であれば、つまりゲームクリアでなければ、そのままステップＳ１９に進む。一方、ステップＳ１５で“ＹＥＳ”であれば、つまりゲームクリアであれば、ステップＳ１７で、ゲームクリアフラグ４０４ｊをオンして、ステップＳ２３に進む。
【０１９３】
また、ステップＳ１９では、ゲームオーバであるかどうかを判断する。ここでは、ＣＰＵ４０は、プレイヤオブジェクト２０２が決められた数の通過ポイントを通過する前に、制限時間を超えてしまったかどうかを判断する。ステップＳ１９で“ＮＯ”であれば、つまりゲームオーバでなければ、そのままステップＳ２３に進む。一方、ステップＳ１９で“ＹＥＳ”であれば、つまりゲームオーバであれば、ステップＳ２１で、ゲームオーバフラグ４０４ｋをオンして、ステップＳ２３に進む。
【０１９４】
ステップＳ２３では、ゲーム画像を生成する。ここでは、ＣＰＵ４０は、数２および数３に従って移動後のプレイヤオブジェクト２０２の位置を算出し、数４で示す行列式Ｐに従ってプレイヤオブジェクト２０２を３次元仮想空間に配置するとともに、後述する入力判定処理（図１９−図２３）に従って再生されたアニメーションをアニメーションデータ４０４ｂ，４０４ｄ，４０４ｅから読み出したりして描画（更新）する。アニメーションの再生方法は上述したとおりである。ただし、ＣＰＵ４０は、チクタクの動作の場合すなわちチクタク＋フラグ４０４ｎまたはチクタク−フラグ４０４ｐがオンの場合には、入力判定処理ではアニメーションの再生指示は行われず、このステップＳ２３において、プレイヤの重心位置のＹ座標（ＹＧ）の値に応じたアニメーションフレームをチクタクアニメーションデータ４０４ｃから読み出して描画（更新）する。また、通常の走行や単なる旋回の場合には、アニメーションデータ（４０４ｂ−４０４ｅなど）を読み出さずに、プレイヤオブジェクト２０２はポリゴンデータやテクスチャデータを用いて描画される。
【０１９５】
また、通過ポイントなどを含む背景画像を描画（更新）する。さらに、ポイント通過フラグ４０４ｉ、ゲームクリアフラグ４０４ｊまたはゲームオーバフラグ４０４ｋがオンであれば、通過ポイントの通過、ゲームクリアまたはゲームオーバを表現する画像を生成する。たとえば、通過ポイントの通過、ゲームクリアまたはゲームオーバを示す旨のテキストがゲーム画像に上書きされる。このとき、図示は省略するが、通過ポイントの通過、ゲームクリアまたはゲームオーバに応じた効果音ないし音楽が出力される。
【０１９６】
次のステップＳ２５では、ゲーム画像を表示する。つまり、ＣＰＵ４０は、ステップＳ２３で生成（更新）したゲーム画像をゲーム画面（２００など）としてモニタ３４に表示する。そして、ステップＳ２７では、ゲーム終了かどうかを判断する。ここでは、ＣＰＵ４０は、プレイヤによって、ゲーム終了が指示されたかどうかを判断する。ステップＳ２７で“ＮＯ”であれば、つまりゲーム終了でなければ、図１７に示したステップＳ７に戻る。ただし、ゲームオーバになった場合には、仮想ゲームが最初から開始される。一方、ステップＳ２７で“ＹＥＳ”であれば、つまりゲーム終了であれば、そのままゲーム全体処理を終了する。
【０１９７】
なお、図示は省略するが、ポイント通過フラグ４０４ｉは、ステップＳ２３よりも後であり、ステップＳ２７で“ＮＯ”となり、ステップＳ７に戻るまでの間に、オフされる。
【０１９８】
図１９−図２３は、図２に示すＣＰＵ４０の入力判定処理を示すフロー図である。詳細な説明は省略するが、この入力判定処理は、仮想ゲームの本編が開始されると（Ｓ５）、別のタスクによって上述したゲーム全体処理と並列的に実行される。
【０１９９】
図１９に示すように、ＣＰＵ４０は、入力判定処理を開始すると、ステップＳ５１で、重心位置が所定の範囲Ａ内であるかどうかを判断する。具体的には、ＣＰＵ４０は、重心位置のＸ座標（ＸＧ）が０．９以上であり、かつＹ座標（ＹＧ）が±０．６以内であるかどうかを判断する。ステップＳ５１で“ＮＯ”であれば、つまり重心位置が所定の範囲Ａ内でなければ、ウィリーの指示でないと判断して、ジャンプの指示であるかどうかを判定するべく、そのまま図２１に示すステップＳ７７に進む。
【０２００】
一方、ステップＳ５１で“ＹＥＳ”であれば、つまり重心位置が所定の範囲Ａ内であれば、ウィリーの指示であると判断して、ステップＳ５３で、ウィリーのアニメーションへの姿勢補間を開始する。ここでは、ＣＰＵ４０は、まず、１０ゲームフレームかけて補間処理を実行し、スケートボード２０４の全車輪が接地されている状態から前輪が最高位置（ウィリーの状態）になるまでプレイヤオブジェクト２０２およびスケートボード２０４が傾けられる。プレイヤオブジェクト２０２がウィリー状態になると、ウィリーアニメーションデータ４０４ｄに従ってアニメーションがプレイヤの重心位置のＹ座標に応じて０−１２０フレームの間で順再生または逆再生される。
【０２０１】
次のステップＳ５５では、重心位置が所定の範囲Ａから外れたかどうかを判断する。つまり、ＣＰＵ４０は、重心位置のＸ座標（ＸＧ）が０．９未満になったり、Ｙ座標（ＹＧ）が±０．６を超えたりしたかどうかを判断する。ステップＳ５５で“ＹＥＳ”であれば、つまり重心位置が所定の範囲Ａから外れた場合には、ステップＳ５７で、ウィリー状態から通常の走行状態へ姿勢補間を行う。
【０２０２】
そして、ステップＳ５９では、重心位置が所定の範囲Ａ内であるかどうかを判断する。つまり、再びウィリーの指示が入力されたかどうかを判断する。ステップＳ５９で“ＮＯ”であれば、つまり重心位置が所定の範囲Ａ内でなければ、そのままステップＳ７７に進む。一方、ステップＳ５９で“ＹＥＳ”であれば、つまり重心位置が所定の範囲Ａ内であれば、ステップＳ６１で、ウィリー状態への姿勢補間を再開して、ステップＳ５５に戻る。つまり、ステップＳ６１では、ＣＰＵ４０は、ウィリー状態から通常の走行状態への姿勢補間を、通常の走行状態からウィリー状態への姿勢補間に切り替える。
【０２０３】
また、ステップＳ５５で“ＮＯ”であれば、つまり重心位置が所定の範囲Ａ内であれば、ステップＳ６３で、ウィリー状態への姿勢補間を完了したかどうかを判断する。ステップＳ６３で“ＮＯ”であれば、つまりウィリー状態への姿勢補間を完了していなければ、そのままステップＳ５５に戻る。
【０２０４】
一方、ステップＳ６３で“ＹＥＳ”であれば、つまりウィリー状態への姿勢補間を完了すれば、図２０に示すステップＳ６５で、第１フレームカウンタ４０４ｑをリセットおよびスタートする。そして、次のステップＳ６７で、５ゲームフレーム経過したかどうかを判断する。つまり、第１フレームカウンタ４０４ｑのカウント値が５を超えたかどうかを判断する。ステップＳ６７で“ＮＯ”であれば、つまり５ゲームフレーム経過していなければ、そのまま同じステップＳ６７に戻る。一方、ステップＳ６７で“ＹＥＳ”であれば、つまり５ゲームフレーム経過すれば、ステップＳ６９で、重心位置が所定の範囲Ａから外れたかどうかを判断する。
【０２０５】
ステップＳ６９で“ＹＥＳ”であれば、つまり重心位置が所定の範囲Ａから外れた場合には、ステップＳ７５で、ウィリー状態から通常の走行状態へ姿勢補間をして、図１９に示したステップＳ５９に戻る。一方、ステップＳ６９で“ＮＯ”であれば、つまり重心位置が所定の範囲Ａから外れていない場合には、ステップＳ７１で、プレイヤオブジェクト２０２を減速させる。この実施例では、プレイヤオブジェクト２０２は一定値（０．０１５）で減速される。つまり、ブレーキの動作が実行される。
【０２０６】
次のステップＳ７３では、重心位置のＸ座標（ＸＧ）が０．７以下であるかどうかを判断する。ここでは、ＣＰＵ４０は、重心位置のＸ座標（ＸＧ）のみに基づいて、ウィリー状態（ブレーキの状態）が解除されたかどうかを判断しているのである。ステップＳ７３で“ＮＯ”であれば、つまり重心位置のＸ座標（ＸＧ）が０．７を超えている場合には、そのままステップＳ７１に戻って、ブレーキの動作を継続する。一方、ステップＳ７３で“ＹＥＳ”であれば、つまり重心位置のＸ座標（ＸＧ）が０．７以下である場合には、ステップＳ７５に進む。
【０２０７】
なお、この実施例では、ステップＳ６３で“ＮＯ”と判断された場合には、ステップＳ５５に戻るようにしたが、ステップＳ７７に進むようにしてもよい。つまり、かかる場合には、ステップＳ６３で“ＮＯ”と判断されると、ウィリーの指示であるかどうかの判定を終了して、ジャンプの指示であるかどうかの判定を開始する。
【０２０８】
上述したように、ジャンプの指示であるかどうかの判定を開始すると、ステップＳ７７で、荷重値が基準値の１．４倍以上であるかどうかを判断する。つまり、ＣＰＵ４０は、一定以上の加重があるかどうかを判断する。このように、倍率によって、加重があるかどうかを判断するのは、プレイヤの体重値に拘わらず同じ処理を実行するためである。以下、倍率によって判定する場合について同様である。
【０２０９】
ステップＳ７７で“ＮＯ”であれば、つまり荷重値が基準値の１．４倍未満であれば、キックの指示であるかどうかの判定を開始するべく、図２２に示すステップＳ８９に進む。一方、ステップＳ７７で“ＹＥＳ”であれば、つまり荷重値が基準値の１．４倍以上であれば、ジャンプの指示が入力されたと判断して、ステップＳ７９で、ジャンプのアニメーションを再生開始する。つまり、ＣＰＵ４０は、ジャンプアニメーションデータ４０４ｅのアニメーションフレームを最初から再生する。
【０２１０】
次のステップＳ８１では、プレイヤオブジェクト２０２を垂直方向に加速する。この実施例では、プレイヤオブジェクト２０２は、一定値（１．５５）の初速度で上方に移動される。また、上述したように、水平方向の初速度は、ジャンプ直前のプレイヤオブジェクト２０２の速度を０．８倍した値に設定される。続いて、ステップＳ８３では、プレイヤオブジェクト２０２が着地したかどうかを判断する。この実施例では、プレイヤオブジェクト２０２は、一定値の初速度で上方に移動されるため、ジャンプ開始から着地までの時間は一定時間である。したがって、一定時間が経過したかどうかを判断すればよい。
【０２１１】
ステップＳ８３で“ＮＯ”であれば、つまりプレイヤオブジェクト２０２が着地していなければ、同じステップＳ８３に戻る。一方、ステップＳ８３で“ＹＥＳ”であれば、つまりプレイヤオブジェクト２０２が着地すれば、ステップＳ８５で、第１フレームカウンタ４０４ｑをリセットおよびスタートする。そして、ステップＳ８７で、１０ゲームフレーム経過したかどうかを判断する。つまり、プレイヤオブジェクト２０２が着地してから膝を伸ばして、通常の走行状態に戻ったかどうかを判断するのである。
【０２１２】
ステップＳ８７で“ＮＯ”であれば、つまり１０ゲームフレーム経過していなければ、そのまま同じステップＳ８７に戻る。一方、ステップＳ８７で“ＹＥＳ”であれば、つまり１０ゲームフレーム経過すれば、プレイヤオブジェクト２０２が通常の走行状態に戻ったと判断して、図１９に示したステップＳ５１に戻る。
【０２１３】
上述したように、キックの指示であるかどうかの判定を開始すると、図２２に示すステップＳ８９で、キック入力不可フラグ４０４ｍがオンであるかどうかを判断する。ステップＳ８９で“ＹＥＳ”であれば、つまりキック入力不可フラグ４０４ｍがオンでれば、キックの指示を受け付けないと判断して、ステップＳ９１で、荷重値が基準値の０．６倍以上かどうかを判断する。ステップＳ９１で“ＮＯ”であれば、つまり荷重値が基準値の０．６倍未満であれば、チクタクの指示であるかどうかの判定を開始するべく、図２３に示すステップＳ１０７に進む。一方、ステップＳ９１で“ＹＥＳ”であれば、つまり荷重値が基準値の０．６倍以上であれば、ステップＳ９３で、キック入力不可フラグ４０４ｍをオフして、ステップＳ１０７に進む。
【０２１４】
また、ステップＳ８９で“ＮＯ”であれば、つまりキック入力不可フラグ４０４ｍがオフであれば、キックの指示を受け付けると判断して、ステップＳ９５で、プレイヤオブジェクト２０２の速度（現フレームの速度ｖ０）が０．１未満かどうかを判断する。つまり、ＣＰＵ４０は、プレイヤオブジェクト２０２が停止ないしほぼ停止しているかどうかを判断しているのである。ステップＳ９５で“ＹＥＳ”であれば、つまりプレイヤオブジェクト２０２の速度が０．１未満であれば、プレイヤオブジェクト２０２が停止ないしほぼ停止していると判断して、ステップＳ９７で、荷重値が基準値の０．６倍未満かどうかを判断する。つまり、ＣＰＵ４０は、一定以上の抜重があるかどうかを判断するのである。
【０２１５】
ステップＳ９７で“ＮＯ”であれば、つまり荷重値が基準値の０．６倍以上であれば、キックの指示ではないと判断して、ステップＳ１０７に進む。一方、ステップＳ９７で“ＹＥＳ”であれば、つまり荷重値が基準値の０．６倍未満であれば、キックの指示であると判断して、ステップＳ１０１に進む。
【０２１６】
また、ステップＳ９５で“ＮＯ”であれば、つまりプレイヤオブジェクト２０２の速度が０．１以上であれば、プレイヤオブジェクト２０２が移動していると判断して、ステップＳ９９で、荷重値が基準値の０．４倍未満かどうかを判断する。つまり、ステップＳ９７と同様に、ＣＰＵ４０は、一定以上の抜重があるかどうかを判断するのである。上述したように、この実施例では、プレイヤオブジェクト２０２が停止ないしほぼ停止している場合と移動している場合とでキックの指示か否かの閾値（倍率）を異なる値に設定しているのである。ステップＳ９９で“ＮＯ”であれば、つまり荷重値が基準値の０．４倍以上であれば、キックの指示ではないと判断して、ステップＳ１０７に進む。一方、ステップＳ９９で“ＹＥＳ”であれば、つまり荷重値が基準値の０．４倍未満であれば、キックの指示であると判断して、ステップＳ１０１に進む。
【０２１７】
ステップＳ１０１では、キックのアニメーションを再生開始する。つまり、ＣＰＵ４０は、キックアニメーションデータ４０４ｄのアニメーションフレームを最初から再生する。ただし、上述したように、キックの指示が連続して入力される場合、つまりキックＢのアニメーションの再生中に、キックの指示が入力された場合には、ＣＰＵ４０は、補間処理を実行することにより、再生中のアニメーションフレームからキックＡのアニメーションフレームの１０フレーム目に戻し、キックＡのアニメーションフレームの１０フレーム目から再生を再開する。
【０２１８】
次のステップＳ１０３では、プレイヤオブジェクト２０２を進行方向に加速させる。この実施例では、ＣＰＵ４０は、キックによる一定の加速度（１．６）をプレイヤオブジェクトに与える。そして、ステップＳ１０５で、キック入力不可フラグ４０４ｍをオンして、ステップＳ５１に戻る。
【０２１９】
また、上述したように、チクタクの指示であるかどうかの判定を開始する場合には、図２３に示すステップＳ１０７で、重心位置のＹ座標（ＹＧ）が０．４以上であるかどうかを判断する。つまり、プレイヤが正面（つま先）側に或る程度体重を掛けているかどうかを判断するのである。ステップＳ１０７で“ＮＯ”であれば、つまり重心位置のＹ座標（ＹＧ）が０．４未満であれば、プレイヤが正面側に或る程度体重を掛けていないと判断して、ステップＳ１１９に進む。
【０２２０】
一方、ステップＳ１０７で“ＹＥＳ”であれば、重心位置のＹ座標（ＹＧ）が０．４以上であれば、プレイヤが正面側に或る程度体重を掛けていると判断して、ステップＳ１０９で、チクタク−フラグ４０４ｐがオンであれるかどうかを判断する。つまり、プレイヤが背面（踵）側に体重を掛けていた状態から正面側に体重を移動したかどうかを判断しているのである。ステップＳ１０９で“ＮＯ”であれば、つまりチクタク−フラグ４０４ｐがオフであれば、そのままステップＳ１１３に進む。一方、ステップＳ１０９で“ＹＥＳ”であれば、つまりチクタク−フラグ４０４ｐがオンであれば、ステップＳ１１１で、プレイヤオブジェクト２０２を進行方向に加速させて、ステップＳ１１３に進む。ＣＰＵ４０は、ステップＳ１１１で、チクタクによる一定の加速度（０．５）を、プレイヤオブジェクト２０２に与える。後述するステップＳ１２３も同じである。
【０２２１】
ステップＳ１１３では、チクタク＋フラグ４０４ｎをオンする。次のステップＳ１１５で、第２フレームカウンタ４０４ｒをリセットおよびスタートし、ステップＳ１１７で、チクタク−フラグ４０４ｐをオフして、ステップＳ５１に戻る。
【０２２２】
また、ステップＳ１１９では、重心位置のＹ座標（ＹＧ）が−０．４以下であるかどうかを判断する。つまり、プレイヤが背面側に或る程度体重を掛けているかどうかを判断するのである。ステップＳ１１９で“ＮＯ”であれば、つまり重心位置のＹ座標（ＹＧ）が−０．４よりも大きければ、プレイヤが背面側に或る程度体重を掛けていないと判断して、そのままステップＳ５１に戻る。
【０２２３】
一方、ステップＳ１１９で“ＹＥＳ”であれば、重心位置のＹ座標（ＹＧ）が−０．４以下であれば、プレイヤが背面側に或る程度体重を掛けていると判断して、ステップＳ１２１で、チクタク＋フラグ４０４ｎがオンであれるかどうかを判断する。つまり、プレイヤが正面側に体重を掛けていた状態から背面側に体重を移動したかどうかを判断しているのである。ステップＳ１２１で“ＮＯ”であれば、つまりチクタク＋フラグ４０４ｎがオフであれば、そのままステップＳ１２５に進む。一方、ステップＳ１２１で“ＹＥＳ”であれば、つまりチクタク＋フラグ４０４ｎがオンであれば、ステップＳ１２３で、プレイヤオブジェクト２０２を進行方向に加速させて、ステップＳ１２５に進む。
【０２２４】
ステップＳ１２５では、チクタク−フラグ４０４ｐをオンする。次のステップＳ１２７で、第２フレームカウンタ４０４ｒをリセットおよびスタートし、ステップＳ１２９で、チクタク＋フラグ４０４ｎをオフして、ステップＳ５１に戻る。
【０２２５】
図２４は、チクタクフラグ管理処理のフロー図である。このチクタクフラグ管理処理もまた、仮想ゲームの本編が開始されると、別のタスクでゲーム全体処理や入力判定処理と並列的に実行される。図２４に示すように、ＣＰＵ４０は、チクタクフラグ管理処理を開始すると、ステップＳ１５１で、チクタク＋フラグ４０４ｎがオンであるかどうかを判断する。ステップＳ１５１で“ＮＯ”であれば、つまりチクタク＋フラグ４０４ｎがオフであれば、そのままステップＳ１５７に進む。一方、ステップＳ１５１で“ＹＥＳ”であれば、つまりチクタク＋フラグ４０４ｎがオンであれば、ステップＳ１５３で、チクタク＋フラグ４０４ｎがオンになってから６０ゲームフレーム経過したかどうかを判断する。つまり、ＣＰＵ４０は、第２フレームカウンタ４０４ｒのカウント値が６０を超えたかどうかを判断するのである。後述するステップＳ１５９において同じである。
【０２２６】
ステップＳ１５３で“ＮＯ”であれば、つまりチクタク＋フラグ４０４ｎがオンになってから６０ゲームフレーム経過していなければ、そのままステップＳ１５７に進む。一方、ステップＳ１５３で“ＹＥＳ”であれば、つまりチクタク＋フラグ４０４ｎがオンになってから６０ゲームフレーム経過すれば、ステップＳ１５５で、チクタク＋フラグ４０４ｎをオフして、ステップＳ１５７に進む。
【０２２７】
ステップＳ１５７では、チクタク−フラグ４０４ｐがオンであるかどうかを判断する。ステップＳ１５７で“ＮＯ”であれば、つまりチクタク−フラグ４０４ｐがオフであれば、そのままステップＳ１５１に戻る。一方、ステップＳ１５７で“ＹＥＳ”であれば、つまりチクタク−フラグ４０４ｐがオンであれば、ステップＳ１５９で、チクタク−フラグ４０４ｐがオンにあってから６０ゲームフレームが経過したかどうかを判断する。
【０２２８】
ステップＳ１５９で“ＮＯ”であれば、つまりチクタク−フラグ４０４ｐがオンになってから６０ゲームフレーム経過していなければ、そのままステップＳ１５１に戻る。一方、ステップＳ１５９で“ＹＥＳ”であれば、つまりチクタク−フラグ４０４ｐがオンになってから６０ゲームフレームが経過すれば、ステップＳ１６１で、チクタク−フラグ４０４ｐをオフして、ステップＳ１５１に戻る。
【０２２９】
このように、チクタクフラグ（４０４ｎ，４０４ｐ）を管理するのは、単なる右方向または左方向への旋回動作をチクタクの動作と誤って判定することにより、プレイヤオブジェクト２０２を加速させないようにするためである。
【０２３０】
この実施例によれば、プレイヤの荷重変化による加重または抜重を検出し、検出した加重または抜重に基づいて異なる情報処理を実行するので、荷重値による入力操作のバリエーションに応じた多彩な処理を実行することができる。
【０２３１】
さらに、加重が検出された後には、抜重の検出結果に応じた所定の情報処理が行われないようにするため、加重が検出された後にプレイヤの意図しない抜重が検出された場合であっても、加重の検出結果に応じた所定の情報処理のみ行わせることができる。すなわち、プレイヤの意図した通りに所定の情報処理を行わせることができる。
【０２３２】
また、この実施例では、重心位置の変化に応じて情報処理を実行することもできるため、さらに入力操作のバリエーションを増加させて、多彩な処理を実行することができる。
【０２３３】
なお、この実施例では、スケートボードに乗ったプレイヤオブジェクトの動作および移動を制御するようにしたが、これに限定される必要はない。モニタに表示される任意のオブジェクトの動作や移動を制御することができる。
【符号の説明】
【０２３４】
１０  …ゲームシステム
１２  …ゲーム装置
１８  …光ディスク
２２  …コントローラ
２４  …受信ユニット
３４  …モニタ
３４ａ  …スピーカ
３６  …荷重コントローラ
３６ｂ  …荷重センサ（ロードセル）
４０  …ＣＰＵ
４２  …システムＬＳＩ
４２ａ  …入出力プロセッサ
４２ｂ  …ＧＰＵ
４２ｃ  …ＤＳＰ
４２ｄ  …ＶＲＡＭ
４２ｅ  …内部メインメモリ
４４  …フラッシュメモリ
４６  …外部メインメモリ
４８  …ＲＯＭ／ＲＴＣ
５０  …無線通信モジュール
５２  …無線コントローラモジュール
５４  …ディスクドライブ
５６  …ＡＶ  ＩＣ
５８  …ＡＶコネクタ
６０  …拡張コネクタ
６２  …メモリカード用コネクタ
７０  …プロセッサ
７４  …加速度センサ
８０  …画像情報演算部
８０ｃ  …撮像素子
８０ｄ  …画像処理回路
１００  …マイコン
１０２  …ＡＤコンバータ
１０４  …ＤＣ−ＤＣコンバータ
１０６  …無線モジュール
１０８  …増幅器
【図１】
2010267199.tif 000004
【図２】
2010267199.tif 000005
【図３】
2010267199.tif 000006
【図４】
2010267199.tif 000007
【図５】
2010267199.tif 000008
【図６】
2010267199.tif 000009
【図７】
2010267199.tif 000010
【図８】
2010267199.tif 000011
【図９】
2010267199.tif 000012
【図１０】
2010267199.tif 000013
【図１１】
2010267199.tif 000014
【図１２】
2010267199.tif 000015
【図１３】
2010267199.tif 000016
【図１４】
2010267199.tif 000017
【図１５】
2010267199.tif 000018
【図１６】
2010267199.tif 000019
【図１７】
2010267199.tif 000020
【図１８】
2010267199.tif 000021
【図１９】
2010267199.tif 000022
【図２０】
2010267199.tif 000023
【図２１】
2010267199.tif 000024
【図２２】
2010267199.tif 000025
【図２３】
2010267199.tif 000026
【図２４】
2010267199.tif 000027