(57)【要約】【課題】ジャイロセンサから得られる角速度に基づいたゲーム処理を行うゲームにおいて、ジャイロセンサに生じている誤差を認識しやすくするゲーム装置およびゲームプログラムを提供する。【解決手段】複数軸周りの角速度をそれぞれ検出するジャイロセンサを備える入力装置から、当該角速度をそれぞれ示す角速度データを少なくとも含む操作データを取得してゲーム処理を行うゲーム装置である。ゲーム装置は、角速度データ取得手段、回転パラメータ算出手段、およびオブジェクト表示制御手段を備える。角速度データ取得手段は、角速度データを取得する。回転パラメータ算出手段は、角速度データが示す複数軸周りそれぞれの角速度の大きさを加算した値を用いて、１つの回転量を表す回転パラメータを算出する。オブジェクト表示制御手段は、回転パラメータに応じた回転量に応じて所定のオブジェクトを回転させて表示装置に表示させる。【選択図】図８
2010220950.tif 000002
【特許請求の範囲】
【請求項１】
複数軸周りの角速度をそれぞれ検出するジャイロセンサを備える入力装置から、当該角速度をそれぞれ示す角速度データを少なくとも含む操作データを取得してゲーム処理を行うゲーム装置であって、
前記角速度データを取得する角速度データ取得手段と、
前記角速度データが示す前記複数軸周りそれぞれの角速度の大きさを加算した値を用いて、１つの回転量を表す回転パラメータを算出する回転パラメータ算出手段と、
前記回転パラメータに応じた回転量に応じて所定のオブジェクトを回転させて表示装置に表示させるオブジェクト表示制御手段とを備える、ゲーム装置。
【請求項２】
前記角速度データに基づいてゲーム処理を行うゲーム処理手段と、
前記操作データが所定の操作が行われたことを示す場合に前記ゲーム処理手段が処理しているゲーム処理を一時停止する一時停止手段とを、さらに備え、
前記オブジェクト表示制御手段は、前記一時停止中に算出された前記回転パラメータに応じて当該一時停止中に前記オブジェクトを回転させて前記表示装置に表示させる、請求項１に記載のゲーム装置。
【請求項３】
前記角速度データに基づいて、前記入力装置の姿勢が安定しているか判定する判定手段を、さらに備え、
前記オブジェクト表示制御手段は、前記入力装置の姿勢が安定していると前記判定手段が判定するまでの期間中に、前記回転パラメータに応じて前記オブジェクトを回転させて前記表示装置に表示させる、請求項１に記載のゲーム装置。
【請求項４】
前記角速度データに基づいてゲーム処理を行うゲーム処理手段を、さらに備え、
前記判定手段は、前記ゲーム処理手段が前記ゲーム処理を開始する前に、前記判定を開始し、前記入力装置の姿勢が安定していると判定された後に前記ゲーム処理手段による前記ゲーム処理を開始させる、請求項３に記載のゲーム装置。
【請求項５】
前記オブジェクト表示制御手段は、前記入力装置の姿勢が安定していると前記判定手段が判定した場合に、前記オブジェクトを所定の方向に向けて静止させて前記表示装置に表示させる、請求項３に記載のゲーム装置。
【請求項６】
前記オブジェクト表示制御手段は、前記オブジェクトを前記所定の方向に向けて静止させた後、所定の条件を満たさない限り前記回転パラメータとは無関係に当該静止状態を継続して当該オブジェクトを前記表示装置に表示させる、請求項５に記載のゲーム装置。
【請求項７】
前記回転パラメータ算出手段は、前記加算した値が所定の閾値より大きい場合、当該値を当該閾値にして前記回転パラメータを算出する、請求項１に記載のゲーム装置。
【請求項８】
前記オブジェクト表示制御手段は、前記入力装置を模した前記オブジェクトを回転させて前記表示装置に表示させる、請求項１に記載のゲーム装置。
【請求項９】
前記回転パラメータ算出手段は、前記加算した値を、過去に算出された前記回転パラメータの値に所定割合で近づけることによって、新たな前記回転パラメータを算出する、請求項１に記載のゲーム装置。
【請求項１０】
前記角速度データが示す角速度に収束するゼロ点オフセット値を、前記複数軸周りそれぞれに対して算出するオフセット値算出手段と、
前記角速度データが示す前記複数軸周りそれぞれの角速度を、当該軸周りに対応して算出されたそれぞれの前記ゼロ点オフセット値で補正するオフセット補正手段とを、さらに備え、
前記回転パラメータ算出手段は、前記オフセット補正手段によって補正された前記複数軸周りそれぞれの角速度の大きさを用いて、前記回転パラメータを算出する、請求項１に記載のゲーム装置。
【請求項１１】
最新の前記角速度データが示す角速度から遡って連続して所定の安定範囲内となった角速度の連続個数を算出する連続個数算出手段を、さらに備え、
前記オフセット値算出手段は、前記連続個数が多いほど、最新の前記角速度データが示す角速度に収束する度合いの強い前記ゼロ点オフセット値を算出する、請求項１０に記載のゲーム装置。
【請求項１２】
複数軸周りの角速度をそれぞれ検出するジャイロセンサを備える入力装置から、当該角速度をそれぞれ示す角速度データを少なくとも含む操作データを取得してゲーム処理を行うゲーム装置のコンピュータで実行されるゲームプログラムであって、
前記コンピュータを、
前記角速度データを取得する角速度データ取得手段と、
前記角速度データが示す前記複数軸周りそれぞれの角速度の大きさを加算した値を用いて、１つの回転量を表す回転パラメータを算出する回転パラメータ算出手段と、
前記回転パラメータに応じた回転量に応じて所定のオブジェクトを回転させて表示装置に表示させるオブジェクト表示制御手段として機能させる、ゲームプログラム。
【請求項１３】
前記角速度データに基づいてゲーム処理を行うゲーム処理手段と、
前記操作データが所定の操作が行われたことを示す場合に前記ゲーム処理手段が処理しているゲーム処理を一時停止する一時停止手段として、前記コンピュータをさらに機能させ、
前記オブジェクト表示制御手段は、前記一時停止中に算出された前記回転パラメータに応じて当該一時停止中に前記オブジェクトを回転させて前記表示装置に表示させる、請求項１２に記載のゲームプログラム。
【請求項１４】
前記角速度データに基づいて、前記入力装置の姿勢が安定しているか判定する判定手段として、さらに前記コンピュータを機能させ、
前記オブジェクト表示制御手段は、前記入力装置の姿勢が安定していると前記判定手段が判定するまでの期間中に、前記回転パラメータに応じて前記オブジェクトを回転させて前記表示装置に表示させる、請求項１２に記載のゲームプログラム。
【請求項１５】
前記角速度データに基づいてゲーム処理を行うゲーム処理手段として、さらに前記コンピュータを機能させ、
前記判定手段は、前記ゲーム処理手段が前記ゲーム処理を開始する前に、前記判定を開始し、前記入力装置の姿勢が安定していると判定された後に前記ゲーム処理手段による前記ゲーム処理を開始させる、請求項１４に記載のゲームプログラム。
【請求項１６】
前記オブジェクト表示制御手段は、前記入力装置の姿勢が安定していると前記判定手段が判定した場合に、前記オブジェクトを所定の方向に向けて静止させて前記表示装置に表示させる、請求項１４に記載のゲームプログラム。
【請求項１７】
前記オブジェクト表示制御手段は、前記オブジェクトを前記所定の方向に向けて静止させた後、所定の条件を満たさない限り前記回転パラメータとは無関係に当該静止状態を継続して当該オブジェクトを前記表示装置に表示させる、請求項１６に記載のゲームプログラム。
【請求項１８】
前記回転パラメータ算出手段は、前記加算した値が所定の閾値より大きい場合、当該値を当該閾値にして前記回転パラメータを算出する、請求項１２に記載のゲームプログラム。
【請求項１９】
前記オブジェクト表示制御手段は、前記入力装置を模した前記オブジェクトを回転させて前記表示装置に表示させる、請求項１２に記載のゲームプログラム。
【請求項２０】
前記回転パラメータ算出手段は、前記加算した値を、過去に算出された前記回転パラメータの値に所定割合で近づけることによって、新たな前記回転パラメータを算出する、請求項１２に記載のゲームプログラム。
【請求項２１】
前記角速度データが示す角速度に収束するゼロ点オフセット値を、前記複数軸周りそれぞれに対して算出するオフセット値算出手段と、
前記角速度データが示す前記複数軸周りそれぞれの角速度を、当該軸周りに対応して算出されたそれぞれの前記ゼロ点オフセット値で補正するオフセット補正手段として、さらに前記コンピュータを機能させ、
前記回転パラメータ算出手段は、前記オフセット補正手段によって補正された前記複数軸周りそれぞれの角速度の大きさを用いて、前記回転パラメータを算出する、請求項１２に記載のゲームプログラム。
【請求項２２】
最新の前記角速度データが示す角速度から遡って連続して所定の安定範囲内となった角速度の連続個数を算出する連続個数算出手段として、さらに前記コンピュータを機能させ、
前記オフセット値算出手段は、前記連続個数が多いほど、最新の前記角速度データが示す角速度に収束する度合いの強い前記ゼロ点オフセット値を算出する、請求項２１に記載のゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、角速度に基づいてゲーム処理を行うゲーム装置およびゲームプログラムに関する。
【背景技術】
【０００２】
従来、ジャイロセンサを備えた入力装置を用いて、当該ジャイロセンサから出力される角速度データを用いてゲーム処理を行うゲーム装置が考えられている。例えば、ジャイロセンサを備えた棒状の入力制御装置を使用するゲーム装置が開示されている（例えば、特許文献１参照）。上記特許文献１で開示されたゲーム装置は、ゲームキャラクタが持つ刀を入力制御装置の動きに応じて制御するものである。具体的には、入力制御装置に備えられたジャイロセンサからの角速度データに基づいて、ゲームキャラクタが持つ刀の姿勢が算出される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−３０８７５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ジャイロセンサは、回転角速度を示すデータを出力する。したがって、いわゆるドリフト現象等によって出力が変動し、当該変動による誤差によってジャイロセンサから得られる角速度データが不正確なものとなってしまう場合がある。しかしながら、入力装置に備えられたジャイロセンサから得られる角速度データを用いてゲーム処理を行っている場合、当該ゲーム処理中においては上述した誤差の確認が難しい。また、入力装置を操作するプレイヤは、ジャイロセンサにどの程度の誤差が生じている状態であるのか確認することも難しい。
【０００５】
それ故に、本発明の目的は、ジャイロセンサから得られる角速度に基づいたゲーム処理を行うゲームにおいて、ジャイロセンサに生じている誤差を認識しやすくするゲーム装置およびゲームプログラムを提供することである。
【課題を解決するための手段】
【０００６】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【０００７】
第１の発明は、複数軸（Ｘ、Ｙ、Ｚ軸）周りの角速度をそれぞれ検出するジャイロセンサ（９５、９６）を備える入力装置（６）から、当該角速度をそれぞれ示す角速度データ（Ｄａ）を少なくとも含む操作データを取得してゲーム処理を行うゲーム装置（５）である。ゲーム装置は、角速度データ取得手段（ステップ１０２およびステップ１３２を実行するＣＰＵ１０；以下、単にステップ番号のみ記載する）、回転パラメータ算出手段（Ｓ１２３、Ｓ１５３）、およびオブジェクト表示制御手段（Ｓ４８、Ｓ６９、Ｓ８４）を備える。角速度データ取得手段は、角速度データを取得する。回転パラメータ算出手段は、角速度データが示す複数軸周りそれぞれの角速度（ｖ１、ｖ１、ｖ３）の大きさを加算した値を用いて、１つの回転量を表す回転パラメータ（Ｖ）を算出する。オブジェクト表示制御手段は、回転パラメータに応じた回転量に応じて所定のオブジェクト（Ｄｏｂｊ）を回転させて表示装置（２）に表示させる。
【０００８】
第２の発明は、上記第１の発明において、ゲーム処理手段（Ｓ６０）および一時停止手段（Ｓ８０）を、さらに備える。ゲーム処理手段は、角速度データに基づいてゲーム処理を行う。一時停止手段は、操作データが所定の操作が行われたことを示す場合にゲーム処理手段が処理しているゲーム処理を一時停止する。オブジェクト表示制御手段は、一時停止中に算出された回転パラメータに応じて当該一時停止中にオブジェクトを回転させて表示装置に表示させる（Ｓ８４）。
【０００９】
第３の発明は、上記第１の発明において、判定手段（Ｓ１０４〜Ｓ１０８、Ｓ１１２、Ｓ１３４〜Ｓ１３８、Ｓ１４２）を、さらに備える。判定手段は、角速度データに基づいて、入力装置の姿勢が安定しているか判定する。オブジェクト表示制御手段は、入力装置の姿勢が安定していると判定手段が判定するまでの期間中に、回転パラメータに応じてオブジェクトを回転させて表示装置に表示させる（Ｓ４８、Ｓ６９、Ｓ８４）。
【００１０】
第４の発明は、上記第３の発明において、ゲーム処理手段を、さらに備える。ゲーム処理手段は、角速度データに基づいてゲーム処理を行う。判定手段は、ゲーム処理手段がゲーム処理を開始する前に、判定を開始し（Ｓ４３）、入力装置の姿勢が安定していると判定された後にゲーム処理手段によるゲーム処理を開始させる。
【００１１】
第５の発明は、上記第３の発明において、オブジェクト表示制御手段は、入力装置の姿勢が安定していると判定手段が判定した場合に、オブジェクトを所定の方向に向けて静止させて表示装置に表示させる（Ｄｏｂｊｂ）。
【００１２】
第６の発明は、上記第５の発明において、オブジェクト表示制御手段は、オブジェクトを所定の方向に向けて静止させた後、所定の条件を満たさない限り回転パラメータとは無関係に当該静止状態を継続して当該オブジェクトを表示装置に表示させる。
【００１３】
第７の発明は、上記第１の発明において、回転パラメータ算出手段は、加算した値が所定の閾値より大きい場合、当該値を当該閾値にして回転パラメータを算出する。
【００１４】
第８の発明は、上記第１の発明において、オブジェクト表示制御手段は、入力装置を模したオブジェクトを回転させて表示装置に表示させる。
【００１５】
第９の発明は、上記第１の発明において、回転パラメータ算出手段は、加算した値を、過去に算出された回転パラメータ（Ｖｌａｓｔ）の値に所定割合で近づけることによって、新たな回転パラメータを算出する。
【００１６】
第１０の発明は、上記第１の発明において、オフセット値算出手段およびオフセット補正手段を、さらに備える。オフセット値算出手段は、角速度データが示す角速度に収束するゼロ点オフセット（ｏｆｓ）値を、複数軸周りそれぞれに対して算出する。オフセット補正手段は、角速度データが示す複数軸周りそれぞれの角速度を、当該軸周りに対応して算出されたそれぞれのゼロ点オフセット値で補正する。回転パラメータ算出手段は、オフセット補正手段によって補正された複数軸周りそれぞれの角速度の大きさを用いて、回転パラメータを算出する。
【００１７】
第１１の発明は、上記第１０の発明において、連続個数算出手段を、さらに備える。連続個数算出手段は、最新の角速度データが示す角速度から遡って連続して所定の安定範囲内となった角速度の連続個数（ｃｔ）を算出する。オフセット値算出手段は、連続個数が多いほど、最新の角速度データが示す角速度に収束する度合いの強いゼロ点オフセット値を算出する。
【００１８】
第１２の発明は、複数軸周りの角速度をそれぞれ検出するジャイロセンサを備える入力装置から、当該角速度をそれぞれ示す角速度データを少なくとも含む操作データを取得してゲーム処理を行うゲーム装置のコンピュータ（１０）で実行されるゲームプログラムである。ゲームプログラムは、角速度データ取得手段、回転パラメータ算出手段、およびオブジェクト表示制御手段として、コンピュータを機能させる。角速度データ取得手段は、角速度データを取得する。回転パラメータ算出手段は、角速度データが示す複数軸周りそれぞれの角速度の大きさを加算した値を用いて、１つの回転量を表す回転パラメータを算出する。オブジェクト表示制御手段は、回転パラメータに応じた回転量に応じて所定のオブジェクトを回転させて表示装置に表示させる。
【００１９】
第１３の発明は、上記第１２の発明において、ゲーム処理手段および一時停止手段として、コンピュータをさらに機能させる。ゲーム処理手段は、角速度データに基づいてゲーム処理を行う。一時停止手段は、操作データが所定の操作が行われたことを示す場合にゲーム処理手段が処理しているゲーム処理を一時停止する。オブジェクト表示制御手段は、一時停止中に算出された回転パラメータに応じて当該一時停止中にオブジェクトを回転させて表示装置に表示させる。
【００２０】
第１４の発明は、上記第１２の発明において、判定手段として、さらにコンピュータを機能させる。判定手段は、角速度データに基づいて、入力装置の姿勢が安定しているか判定する。オブジェクト表示制御手段は、入力装置の姿勢が安定していると判定手段が判定するまでの期間中に、回転パラメータに応じてオブジェクトを回転させて表示装置に表示させる。
【００２１】
第１５の発明は、上記第１４の発明において、ゲーム処理手段として、さらにコンピュータを機能させる。ゲーム処理手段は、角速度データに基づいてゲーム処理を行う。判定手段は、ゲーム処理手段がゲーム処理を開始する前に、判定を開始し、入力装置の姿勢が安定していると判定された後にゲーム処理手段によるゲーム処理を開始させる。
【００２２】
第１６の発明は、上記第１４の発明において、オブジェクト表示制御手段は、入力装置の姿勢が安定していると判定手段が判定した場合に、オブジェクトを所定の方向に向けて静止させて表示装置に表示させる。
【００２３】
第１７の発明は、上記第１６の発明において、オブジェクト表示制御手段は、オブジェクトを所定の方向に向けて静止させた後、所定の条件を満たさない限り回転パラメータとは無関係に当該静止状態を継続して当該オブジェクトを表示装置に表示させる。
【００２４】
第１８の発明は、上記第１２の発明において、回転パラメータ算出手段は、加算した値が所定の閾値より大きい場合、当該値を当該閾値にして回転パラメータを算出する。
【００２５】
第１９の発明は、上記第１２の発明において、オブジェクト表示制御手段は、入力装置を模したオブジェクトを回転させて表示装置に表示させる。
【００２６】
第２０の発明は、上記第１２の発明において、回転パラメータ算出手段は、加算した値を、過去に算出された回転パラメータの値に所定割合で近づけることによって、新たな回転パラメータを算出する。
【００２７】
第２１の発明は、上記第１２の発明において、オフセット値算出手段およびオフセット補正手段として、さらにコンピュータを機能させる。オフセット値算出手段は、角速度データが示す角速度に収束するゼロ点オフセット値を、複数軸周りそれぞれに対して算出する。オフセット補正手段は、角速度データが示す複数軸周りそれぞれの角速度を、当該軸周りに対応して算出されたそれぞれのゼロ点オフセット値で補正する。回転パラメータ算出手段は、オフセット補正手段によって補正された複数軸周りそれぞれの角速度の大きさを用いて、回転パラメータを算出する。
【００２８】
第２２の発明は、上記第２１の発明において、連続個数算出手段として、さらにコンピュータを機能させる。連続個数算出手段は、最新の角速度データが示す角速度から遡って連続して所定の安定範囲内となった角速度の連続個数を算出する。オフセット値算出手段は、連続個数が多いほど、最新の角速度データが示す角速度に収束する度合いの強いゼロ点オフセット値を算出する。
【発明の効果】
【００２９】
上記第１の発明によれば、プレイヤは、回転して表示されているオブジェクトやその回転速度を視認することによって、ジャイロセンサの出力状況を認識することができる。例えば、ジャイロセンサを静止させることが必要な状況において、ジャイロセンサが安定していない場合、ジャイロセンサから得られる角速度データに応じてオブジェクトが回転して表示されるため、ジャイロセンサが動いていたり、出力に誤差が含まれていたりすることを認識することができる。また、オブジェクトの回転速度は、複数軸周りの角速度の大きさを全て加算した値に基づいて決定されるため、例えばわずかな角速度を生じているためにジャイロセンサが安定していない場合であっても、その角速度が強調されて画面に現れるため、プレイヤにとってジャイロセンサが安定していないことがよりわかりやすい表現となる。
【００３０】
上記第２の発明によれば、ゲーム処理中にプレイヤが当該ゲーム処理を一時停止する操作を行った場合、当該一時停止後にジャイロセンサから得られる角速度データに応じてオブジェクトが回転して表示されるため、ゲーム処理中であっても一時停止してジャイロセンサの出力状況を確認することができる。
【００３１】
上記第３の発明によれば、ジャイロセンサを静止させることが必要な状況等において、ジャイロセンサが安定するまでの間、ジャイロセンサから得られる角速度データに応じてオブジェクトが回転して表示されるため、ジャイロセンサが安定していないことを認識することができる。
【００３２】
上記第４の発明によれば、ゲーム処理を行うために、当該ゲーム処理前にジャイロセンサを静止させることが必要な状況等において、ジャイロセンサが安定するまでの間、ジャイロセンサから得られる角速度データに応じてオブジェクトが回転して表示されると共に、ジャイロセンサが一旦安定した後に当該ゲーム処理が開始されるため、ジャイロセンサからの精確なデータに基づいたゲーム処理が可能となる。
【００３３】
上記第５の発明によれば、ジャイロセンサが安定した場合にオブジェクトが所定の方向に向かって静止して表示されるため、ジャイロセンサが安定したことを容易に認識することができる。
【００３４】
上記第６の発明によれば、ジャイロセンサが一旦安定した場合、その後に入力装置を動かしてもオブジェクトの静止表示が継続されるため、プレイヤはジャイロセンサが一旦安定したことを常に認識することができる。
【００３５】
上記第７の発明によれば、オブジェクトの回転速度が一定値以下に抑えられるため、オブジェクトの回転速度が速すぎることによって表示が見にくい状況を避けることができる。
【００３６】
上記第８の発明によれば、オブジェクトが入力装置の出力状況を表していることを直感的に示すことができる。
【００３７】
上記第９の発明によれば、オブジェクトの回転速度の変化を滑らかにすることができる。
【００３８】
上記第１０の発明によれば、ジャイロセンサの静止時出力によってオフセット補正された値を用いた処理が可能となる。
【００３９】
上記第１１の発明によれば、入力装置が静止状態にあれば、得られる角速度にゼロ点オフセット値が収束する割合が大きくなるため、ゼロ点オフセット値の収束に関連付けてオブジェクトの回転表示を行うことができる。
【００４０】
本発明のゲームプログラムによれば、上述したゲーム装置と同様の効果を得ることができる。
【図面の簡単な説明】
【００４１】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置本体５の機能ブロック図
【図３】図１の入力装置６の上面後方から見た斜視図
【図４】図３のコントローラ７を下面前方から見た斜視図
【図５】図３のコントローラ７の上筐体を外した状態を示す斜視図
【図６】図４のコントローラ７の下筐体を外した状態を示す斜視図
【図７】図３の入力装置６の構成を示すブロック図
【図８】モニタ２に表示されるジャイロセンサ安定確認画面の一例を示す図
【図９】図８のジャイロセンサ安定確認画面に含まれる入力装置安定情報画面ＩｄａおよびＩｄｂの一例を拡大した図
【図１０】図１のゲーム装置本体５のメインメモリに記憶される主なデータおよびプログラムの一例を示す図
【図１１】図１のゲーム装置本体５において実行されるゲーム処理の一例を示すフローチャート
【図１２】図１のゲーム装置本体５において実行されるゲーム処理の一例を示すフローチャート
【図１３】図１のゲーム装置本体５において実行されるゲーム処理の一例を示すフローチャート
【図１４】図１１〜図１３における安定確認処理の一例を示すサブルーチン
【図１５】図１１および図１２における安定確認画面表示処理の一例を示すサブルーチン
【図１６】図１３におけるステップ８３の安定再確認処理の一例を示すサブルーチン
【図１７】図１３におけるステップ８４の安定再確認画面表示処理の一例を示すサブルーチン
【図１８】モニタ２に表示される安定確認未完了画面の一例を示す図
【図１９】モニタ２に表示される情報画面Ｉｎ１の一例を示す図
【図２０】モニタ２に表示される情報画面Ｉｎ２の一例を示す図
【図２１】モニタ２に表示される安定確認画面の一例を示す図
【発明を実施するための形態】
【００４２】
図１を参照して、本発明の一実施形態に係るゲームプログラムを実行するゲーム装置について説明する。以下、説明を具体的にするために、当該装置の一例の据置型のゲーム装置本体５を含むゲームシステムについて説明する。なお、図１は据置型のゲーム装置３を含むゲームシステム１の外観図であり、図２はゲーム装置本体５のブロック図である。以下、当該ゲームシステム１について説明する。
【００４３】
図１において、ゲームシステム１は、表示手段の一例の家庭用テレビジョン受像機（以下、モニタと記載する）２と、当該モニタ２に接続コードを介して接続する据置型のゲーム装置３とから構成される。モニタ２は、ゲーム装置３から出力された音声信号を音声出力するためのスピーカ２ａを備える。また、ゲーム装置３は、本願発明のゲームプログラムの一例となるプログラムを記録した光ディスク４と、当該光ディスク４のゲームプログラムを実行してゲーム画面をモニタ２に表示出力させるためのコンピュータを搭載したゲーム装置本体５と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体５に与えるための入力装置６とを備えている。
【００４４】
また、ゲーム装置本体５は、無線コントローラモジュール１９（図２参照）を内蔵する。無線コントローラモジュール１９は、入力装置６から無線送信されるデータを受信し、ゲーム装置本体５から入力装置６へデータを送信して、コントローラ７とゲーム装置本体５とを無線通信によって接続する。さらに、ゲーム装置本体５には、当該ゲーム装置本体５に対して交換可能に用いられる情報記憶媒体の一例の光ディスク４が脱着される。
【００４５】
また、ゲーム装置本体５には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ１７（図２参照）が搭載される。ゲーム装置本体５は、光ディスク４に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ２に表示する。また、ゲームプログラム等は、光ディスク４に限らず、フラッシュメモリ１７に予め記録されたものを実行するようにしてもよい。さらに、ゲーム装置本体５は、フラッシュメモリ１７に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置３のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、入力装置６を操作することによって、ゲーム進行を楽しむことができる。
【００４６】
入力装置６は、自機に対して行われた操作の内容を示す操作データをゲーム装置本体５に与えるものである。本実施形態では、入力装置６は、コントローラ７と角速度検出ユニット９とを含む。詳細は後述するが、入力装置６は、コントローラ７に対して角速度検出ユニット９が着脱可能に接続されている構成である。
【００４７】
コントローラ７は、無線コントローラモジュール１９を内蔵するゲーム装置本体５へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて操作情報等の送信データを無線送信する。コントローラ７は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン（十字キーやスティック等を含む）とが設けられている。また、後述により明らかとなるが、コントローラ７は、当該コントローラ７から見た画像を撮像する撮像情報演算部７４を備えている。そして、撮像情報演算部７４の撮像対象の一例として、モニタ２の表示画面近傍に２つのＬＥＤモジュール（以下、マーカと記載する）８Ｌおよび８Ｒが設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって例えば赤外光を出力する。また、コントローラ７は、ゲーム装置本体５の無線コントローラモジュール１９から無線送信された送信データを通信部７５で受信して、当該送信データに応じた音や振動を発生させることもできる。
【００４８】
次に、図２を参照して、ゲーム装置本体５の内部構成について説明する。図２は、ゲーム装置本体５の構成を示すブロック図である。ゲーム装置本体５は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、システムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ／Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）１３、ディスクドライブ１４、およびＡＶ−ＩＣ（Ａｕｄｉｏ  Ｖｉｄｅｏ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１５等を有する。
【００４９】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムＬＳＩ１１の内部構成については、後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置本体５の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ３５または外部メインメモリ１２に読み出したデータを書き込む。
【００５０】
また、システムＬＳＩ１１には、入出力プロセッサ３１、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）３２、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３３、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３４、および内部メインメモリ３５が設けられる。図示は省略するが、これらの構成要素３１〜３５は、内部バスによって互いに接続される。
【００５１】
ＧＰＵ３２は、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ３４は、ＧＰＵ３２がグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ３２は、ＶＲＡＭ３４に記憶されたデータを用いて画像データを作成する。
【００５２】
ＤＳＰ３３は、オーディオプロセッサとして機能し、内部メインメモリ３５や外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００５３】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、ＡＶコネクタ１６を介して、読み出した画像データをモニタ２に出力するとともに、読み出した音声データをモニタ２に内蔵されるスピーカ２ａに出力する。これによって、画像がモニタ２に表示されるとともに音がスピーカ２ａから出力される。
【００５４】
入出力プロセッサ（Ｉ／Ｏプロセッサ）３１は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ３１は、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、および外部メモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００５５】
入出力プロセッサ３１は、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ３１は、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介して当該データをネットワークに送信する。また、入出力プロセッサ３１は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２、および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０は、ゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置本体５と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体５を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００５６】
また、入出力プロセッサ３１は、アンテナ２３および無線コントローラモジュール１９を介して、コントローラ７から送信される操作データ等を受信し、内部メインメモリ３５または外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。なお、内部メインメモリ３５には、外部メインメモリ１２と同様に、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりしてもよく、ＣＰＵ１０のワーク領域やバッファ領域として用いられてもかまわない。
【００５７】
さらに、入出力プロセッサ３１には、拡張コネクタ２０および外部メモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ３１は、拡張コネクタ２０や外部メモリカード用コネクタ２１を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００５８】
また、ゲーム装置本体５（例えば、前部主面）には、当該ゲーム装置本体５の電源ボタン２４、ゲーム処理のリセットボタン２５、光ディスク４を脱着する投入口、およびゲーム装置本体５の投入口から光ディスク４を取り出すイジェクトボタン２６等が設けられている。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置本体５の各構成要素に対して、図示しないＡＣアダプタを介して電力が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置本体５の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００５９】
図３および図４を参照して、入力装置６について説明する。なお、図３は、入力装置６の上側後方から見た一例を示す斜視図である。図４は、コントローラ７を下側前方から見た一例を示す斜視図である。
【００６０】
図３および図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。ハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【００６１】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【００６２】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に４つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記４つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、４つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティック（いわゆる、ジョイスティック）を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、十字キー７２ａの代わりに設けてもかまわない。
【００６３】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ａ〜７２ｇは、ゲーム装置本体５が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００６４】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置本体５の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００６５】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、無線コントローラモジュール１９からコントローラ７へ、複数のＬＥＤ７０２のうち、上記コントローラ種別に対応するＬＥＤを点灯させるための信号が送信される。
【００６６】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図５に示すスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【００６７】
一方、ハウジング７１下面には、凹部が形成されている。ハウジング７１下面の凹部は、プレイヤがコントローラ７の前面をマーカ８Ｌおよび８Ｒに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部である。
【００６８】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７１の後面には、コネクタ７３が設けられている。コネクタ７３は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。図１および図３に示した入力装置６の一例では、コネクタ７３を介して、コントローラ７の後面に角速度検出ユニット９が着脱自在に装着される。
【００６９】
ここで、以下の説明を具体的にするために、入力装置６（コントローラ７）に対して設定する座標系について定義する。図３および図４に示すように、互いに直交するＸＹＺ軸を入力装置６（コントローラ７）に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をＺ軸とし、コントローラ７の前面（撮像情報演算部７４が設けられている面）方向をＺ軸正方向とする。また、コントローラ７の上下方向をＹ軸とし、ハウジング７１の上面（操作ボタン７２ａが設けられた面）方向をＹ軸正方向とする。さらに、コントローラ７の左右方向をＸ軸とし、ハウジング７１の右側面（図３で表されている側面）方向をＸ軸正方向とする。
【００７０】
角速度検出ユニット９は、３軸周りの角速度を検知するジャイロセンサ（図７に示す２軸ジャイロセンサ９５および１軸ジャイロセンサ９６）を有する。角速度検出ユニット９の前端（図３に示すＺ軸正方向側の端部）には、コネクタ７３に接続可能なプラグ（図７に示すプラグ９３）が設けられる。さらに、プラグ９３の両側にはフック（図示せず）が設けられる。角速度検出ユニット９がコントローラ７に対して装着される状態では、プラグ９３がコネクタ７３に接続されるとともに、上記フックがコントローラ７の係止穴７３ａに係止する。これによって、コントローラ７と角速度検出ユニット９とがしっかりと固定される。また、角速度検出ユニット９は、側面（図３に示すＸ軸方向の面）にボタン９１を有している。ボタン９１は、それを押下すれば上記フックの係止穴７３ａに対する係止状態を解除することができるように構成されている。したがって、ボタン９１を押下しながらプラグ９３をコネクタ７３から抜くことによって、角速度検出ユニット９をコントローラ７から離脱することができる。
【００７１】
また、角速度検出ユニット９の後端には、上記コネクタ７３と同形状のコネクタが設けられる。したがって、コントローラ７（のコネクタ７３）に対して装着可能な他の機器は、角速度検出ユニット９の後端コネクタに対しても装着可能である。なお、図３においては、当該後端コネクタに対してカバー９２が着脱可能に装着されている。
【００７２】
次に、図５および図６を参照して、コントローラ７の内部構造について説明する。なお、図５は、コントローラ７の上筐体（ハウジング７１の一部）を外した状態を後面側から見た斜視図である。図６は、コントローラ７の下筐体（ハウジング７１の一部）を外した状態を前面側から見た斜視図である。ここで、図６に示す基板７００は、図５に示す基板７００の裏面から見た斜視図となっている。
【００７３】
図５において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図６、図７参照）に接続される。また、無線モジュール７５３（図７参照）およびアンテナ７５４によって、コントローラ７がワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６およびアンプ７０８が設けられる。また、加速度センサ７０１は、操作ボタン７２ｄの左側の基板７００上（つまり、基板７００の中央部ではなく周辺部）に設けられる。したがって、加速度センサ７０１は、コントローラ７の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ７の動きを良好な感度でゲーム装置本体５等が判定することができる。
【００７４】
一方、図６において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。さらに、基板７００の下主面上にサウンドＩＣ７０７およびマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１およびアンプ７０８と接続され、ゲーム装置本体５から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。
【００７５】
そして、基板７００の下主面上には、バイブレータ７０４が取り付けられる。バイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４は、基板７００等に形成された配線によってマイコン７５１と接続され、ゲーム装置本体５から送信された振動データに応じてその作動をオン／オフする。バイブレータ７０４が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ７０４は、ハウジング７１のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング７１が大きく振動することになり、振動を感じやすくなる。
【００７６】
次に、図７を参照して、入力装置６（コントローラ７および角速度検出ユニット９）の内部構成について説明する。なお、図７は、入力装置６の構成の一例を示すブロック図である。
【００７７】
図７において、コントローラ７は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、およびアンプ７０８の他に、その内部に通信部７５を備えている。
【００７８】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コントローラ７のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。
【００７９】
コントローラ７は、３軸（Ｘ、Ｙ、Ｚ軸）の加速度センサ７０１を備えていることが好ましい。この３軸の加速度センサ７０１は、３方向、すなわち、上下方向（図３に示すＹ軸）、左右方向（図３に示すＸ軸）、および前後方向（図３に示すＺ軸）で直線加速度を検知する。また、少なくとも１軸方向に沿った直線加速度をそれぞれ検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ７０１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であることが好ましい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて、加速度センサ７０１が提供されてもよい。
【００８０】
加速度センサ７０１に用いられるような加速度検出手段は、加速度センサ７０１の持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１からの直接の出力は、それら３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【００８１】
しかしながら、加速度センサ７０１から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ（例えばＣＰＵ１０）またはコントローラのプロセッサ（例えばマイコン７５１）等のコンピュータが処理を行うことによって、コントローラ７に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【００８２】
例えば、加速度センサ７０１を搭載するコントローラ７が静的な状態であることを前提としてコンピュータ側で処理する場合（すなわち、加速度センサ７０１によって検出される加速度が重力加速度のみであるとして処理する場合）、コントローラ７が現実に静的な状態であれば、検出された加速度に基づいてコントローラ７の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、加速度センサ７０１の検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に１Ｇ（重力加速度）が作用しているか否かだけでコントローラ７が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コントローラ７が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ７０１の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ７がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ７０１からの出力に基づいて、プロセッサがコントローラ７の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ７０１からの出力に基づいて、おおよそのコントローラ７の傾き具合を推定するような処理としてもよい。このように、加速度センサ７０１をプロセッサと組み合わせて用いることによって、コントローラ７の傾き、姿勢、または位置を判定することができる。
【００８３】
一方、加速度センサ７０１が動的な状態であることを前提とする場合には、当該加速度センサ７０１が重力加速度成分に加えて加速度センサ７０１の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コントローラ７の動き方向等を知ることができる。具体的には、加速度センサ７０１を備えるコントローラ７がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ７０１によって生成される加速度信号を処理することによって、コントローラ７の様々な動きおよび／または位置を算出することができる。なお、加速度センサ７０１が動的な状態であることを前提とする場合であっても、加速度センサ７０１の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコントローラ７の傾きを知ることが可能である。
【００８４】
他の実施例では、加速度センサ７０１は、信号をマイコン７５１に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ７０１が静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。加速度センサ７０１でそれぞれ検知された加速度を示すデータは、通信部７５に出力される。
【００８５】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置本体５からのデータに応じて、サウンドＩＣ７０７およびバイブレータ７０４の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置本体５から送信されたサウンドデータ等を処理する。また、マイコン７５１は、通信部７５を介してゲーム装置本体５から送信された振動データ（例えば、バイブレータ７０４をＯＮまたはＯＦＦする信号）等に応じて、バイブレータ７０４を作動させる。また、マイコン７５１はコネクタ７３に接続されている。角速度検出ユニット９から送信されてくるデータは、コネクタ７３を介してマイコン７５１に入力される。以下、角速度検出ユニット９の構成について説明する。
【００８６】
角速度検出ユニット９は、プラグ９３、マイコン９４、２軸ジャイロセンサ９５、および１軸ジャイロセンサ９６を備えている。上述のように、角速度検出ユニット９は、３軸（本実施形態では、ＸＹＺ軸）周りの角速度を検出し、検出した角速度を示すデータ（角速度データ）をコントローラ７へ出力する。
【００８７】
２軸ジャイロセンサ９５は、Ｘ軸周りの角速度およびＹ軸周りの（単位時間あたりの）角速度を検出する。また、１軸ジャイロセンサ９６は、Ｚ軸周りの（単位時間あたりの）角速度を検出する。なお、本明細書では、コントローラ７の撮像方向（Ｚ軸正方向）を基準として、ＸＹＺ軸周りの回転方向を、それぞれ、ロール方向、ピッチ方向、ヨー方向と呼ぶ。すなわち、２軸ジャイロセンサ９５は、ロール方向（Ｘ軸周りの回転方向）およびピッチ方向（Ｙ軸周りの回転方向）の角速度を検出し、１軸ジャイロセンサ９６は、ヨー方向（Ｚ軸周りの回転方向）の角速度を検出する。
【００８８】
なお、本実施形態では、３軸周りの角速度を検出するために、２軸ジャイロセンサ９５と１軸ジャイロセンサ９６とを用いる構成としたが、他の実施形態においては、３軸周りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。なお、２軸ジャイロセンサ９５および１軸ジャイロセンサ９６を総称して説明する場合は、ジャイロセンサ９５および９６と記載する。
【００８９】
各ジャイロセンサ９５および９６で検出された角速度を示すデータは、マイコン９４に出力される。したがって、マイコン９４には、ＸＹＺ軸の３軸周りの角速度を示すデータが入力されることになる。マイコン９４は、上記３軸周りの角速度を示すデータを角速度データとしてプラグ９３を介してコントローラ７へ出力する。なお、マイコン９４からコントローラ７への出力は、所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で出力を行うことが好ましい。
【００９０】
コントローラ７の説明に戻り、コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの３軸方向の加速度信号（Ｘ、Ｙ、およびＺ軸方向加速度データ）、撮像情報演算部７４からの処理結果データ、および角速度検出ユニット９からの３軸周りの角速度を示すデータ（Ｘ、Ｙ、Ｚ軸周り角速度データ）は、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、処理結果データ、Ｘ、Ｙ、およびＺ軸周り角速度データ）を無線コントローラモジュール１９へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から無線コントローラモジュール１９への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（登録商標）で構成される通信部７５の送信間隔は５ｍｓである。マイコン７５１は、無線コントローラモジュール１９への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばブルートゥース（登録商標）の技術を用いて、操作情報を示す電波信号を所定周波数の搬送波を用いてアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からのＸ、Ｙ、およびＺ軸方向加速度データ、撮像情報演算部７４からの処理結果データ、角速度検出ユニット９からのＸ、Ｙ、およびＺ軸周り角速度データがコントローラ７から送信される。そして、ゲーム装置本体５の無線コントローラモジュール１９でその電波信号を受信し、ゲーム装置本体５で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、処理結果データ、Ｘ、Ｙ、およびＺ軸周り角速度データ）を取得する。そして、ゲーム装置本体５のＣＰＵ１０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００９１】
入力装置６を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ７を任意の傾斜角度に傾ける操作を行うことができる。その他、入力装置６によれば、プレイヤは、入力装置６によって画面上の任意の位置を指示する操作、および、入力装置６自体を動かす操作を行うこともできる。
【００９２】
次に、ゲーム装置本体５が行う具体的な処理を説明する前に、図８および図９を用いてゲーム装置本体５で行う処理の概要について説明する。なお、図８は、モニタ２に表示されるジャイロセンサ安定確認画面の一例を示す図である。図９は、図８のジャイロセンサ安定確認画面に含まれる入力装置安定情報画面ＩｄａおよびＩｄｂの一例を拡大した図である。
【００９３】
本実施形態においては、ゲームシステム１を起動してからゲームを実行して終了するまでの特定場面において、所定の条件を満たす場合にジャイロセンサ安定確認画面がモニタ２に表示される。例えば、ゲームシステム１を起動してからゲームを開始する前に、当該ゲームにおいて使用する入力装置６の数（典型的には、プレイヤの人数）を決定した後に、使用される入力装置６毎のジャイロセンサ９５および９６の安定を確認する画面（ジャイロセンサ安定確認画面）が表示される。例えば、図８に示すように、ジャイロセンサ安定確認画面では、ジャイロセンサ９５および９６を安定した状態にするためにプレイヤに要求する動作を示す要求情報画面Ｉｉと共に、使用される入力装置６のジャイロセンサ９５および９６の安定確認状態をそれぞれ示す入力装置安定情報画面Ｉｄが表示される。
【００９４】
ここで、「ジャイロセンサ９５および９６の安定」とは、ジャイロセンサ９５および９６を静止している状態にして当該状態におけるジャイロセンサ９５および９６からの出力（静止時出力）を得るための処理である。例えば、ジャイロセンサ９５および９６は、上記静止時出力を基準として、Ｘ、Ｙ、およびＺ軸周り角速度データを出力する。一例として、ジャイロセンサ９５および９６は、検出した角速度に比例した電圧を出力し、上記静止時出力を中心に回転角速度が正方向のときに出力電圧が高くなり、負方向のときに出力電圧が低くなる。つまり、設定する静止時出力に誤差が含まれていると、ジャイロセンサ９５および９６から出力される角速度データが示す角速度にも誤差が含まれることになる。したがって、ジャイロセンサ９５および９６を安定した状態にして、ジャイロセンサ９５および９６における正確な静止時出力を得ることによって、結果的に正確な角速度を得ることができる。このように、ジャイロセンサ安定確認画面をモニタ２に表示することによって、プレイヤにジャイロセンサ９５および９６（入力装置６）を静止させることを促すと共に、現在のジャイロセンサ９５および９６（入力装置６）の静止状況を表示することによって、プレイヤにジャイロセンサ９５および９６に対して現時点に生じている誤差を報知している。
【００９５】
ここで、ジャイロセンサ９５および９６は、Ｘ、Ｙ、およびＺ軸周り角速度データを出力ための基準値（ゼロ点）を固定値として予め有していることがあるが、現実の静止時出力と当該固定値とがずれていることがあり得る。また、一旦、静止時出力が決定された後であっても、ジャイロセンサ９５および９６の出力が時間経過と共に変動することがあり、この場合、静止時出力も時間経過と共に変動する（ドリフト現象）。このような静止時出力の誤差を低減するために、ジャイロセンサ安定確認画面をモニタ２に表示することによって、ジャイロセンサ９５および９６の静止を促し、その時点での静止時出力を得ている。
【００９６】
具体的には、要求情報画面Ｉｉとして、入力装置６を静止させて載置することをプレイヤに促す情報が表示される。例えば、要求情報画面Ｉｉとして、「コントローラを机の上などにおいて静止させてください」とプレイヤに報知する文字情報が表示される。
【００９７】
また、図８および図９においては、２つの入力装置６ａおよび１０ｂが安定状態にあるか否かをそれぞれ示す入力装置安定情報画面ＩｄａおよびＩｄｂが一例として表示されている。図９において、入力装置安定情報画面Ｉｄには、入力装置オブジェクトＤｏｂｊおよび入力装置識別オブジェクトＭｏｂｊと共に、ジャイロセンサ９５および９６の安定確認中か否かを示す文字情報が表示される。例えば、入力装置識別オブジェクトＭｏｂｊは、内部に対象となる入力装置６を識別する複数の標識を有しており、当該標識の何れかを点灯させることによって、何れのプレイヤが所持する入力装置６の情報であるかを示している。例えば、入力装置安定情報画面Ｉｄａに表示されている入力装置識別オブジェクトＭｏｂｊａは、左端の標識を点灯させることによって、入力装置安定情報画面Ｉｄａに表示されている情報が第１プレイヤによって所持されている入力装置６（入力装置６ａ）に関するものであることを示している。また、入力装置安定情報画面Ｉｄｂに表示されている入力装置識別オブジェクトＭｏｂｊｂは、左端から２番目の標識を点灯させることによって、入力装置安定情報画面Ｉｄｂに表示されている情報が第２プレイヤによって所持されている入力装置６（入力装置６ｂ）に関するものであることを示している。
【００９８】
図９に示した一例では、入力装置６ａのジャイロセンサ９５および９６が安定状態とはなっていない場合の画面例として、入力装置安定情報画面Ｉｄａが例示されている。入力装置６ａのジャイロセンサ９５および９６が安定状態になっていない場合、入力装置安定情報画面Ｉｄａに表示される入力装置オブジェクトＤｏｂｊａは、図示ｊ方向に回転している状態で表示される。入力装置オブジェクトＤｏｂｊａが回転する速度は、ジャイロセンサ９５および９６に加えられる角速度の大きさに基づいて設定される。一方、入力装置６ｂのジャイロセンサ９５および９６が安定状態となっている場合の画面例として、入力装置安定情報画面Ｉｄｂが例示されている。入力装置６ｂのジャイロセンサ９５および９６が安定状態となった場合、入力装置安定情報画面Ｉｄｂに表示される入力装置オブジェクトＤｏｂｊｂは、縦方向に静止した状態で表示される。なお、ジャイロセンサ９５および９６が安定していない状態から安定状態になる直前には、回転中の入力装置オブジェクトＤｏｂｊａの回転速度は遅くなっており、また、そのときの入力装置オブジェクトＤｏｂｊａの姿勢が上記縦方向とは限らないので、その時点での姿勢から上記縦方向になるように所定の回転をさせてから入力装置オブジェクトＤｏｂｊａを静止させる。なお、ジャイロセンサ９５および９６の安定状態が一旦確認された後に、プレイヤが入力装置６ｂを動かしたとしても、入力装置オブジェクトＤｏｂｊｂは、縦方向の静止状態を維持した状態で表示される。
【００９９】
このように、入力装置オブジェクトＤｏｂｊを視認することによって、プレイヤは自分が所持する入力装置６のジャイロセンサ９５および９６の状態を容易に認識することができる。例えば、ジャイロセンサ９５および９６の出力に誤差が含まれる場合には、実際に入力装置６を静止させていても入力装置オブジェクトＤｏｂｊが回転するので、プレイヤが当該誤差を認識することができる。また、入力装置安定情報画面Ｉｄは、ゲームシステム１を起動してからゲームを実行して終了するまでの特定場面において、所定の条件を満たす場合にモニタ２に表示される。後述により明らかとなるが、入力装置安定情報画面Ｉｄは、例えばゲームで使用する入力装置６の数を決定（典型的には、プレイヤの人数を決定）した後に安定フラグＳｆｒｇがオフとなっている入力装置６がある場合、ゲーム中において安定フラグＳｆｒｇがオフとなり当該オフとなった入力装置６を現時点で当該ゲームに用いる状況にある場合、ゲーム中においてプレイヤが入力装置安定情報画面Ｉｄを表示させる操作を行った場合等において、モニタ２に表示される。したがって、入力装置安定情報画面Ｉｄは、以降のゲーム処理のためにジャイロセンサ９５および９６の静止が必要な状況の場合や、プレイヤがジャイロセンサ９５および９６に生じている誤差を確認したい場合等に表示されることになり、ゲーム処理を進めていく上で必要な状況で適宜表示されることになる。
【０１００】
次に、ゲームシステム１において行われるゲーム処理の詳細を説明する。まず、図１０を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図１０は、ゲーム装置本体５の外部メインメモリ１２および／または内部メインメモリ３５（以下、２つのメインメモリを総称して、単にメインメモリと記載する）に記憶される主なデータおよびプログラムの一例を示す図である。
【０１０１】
図１０に示すように、メインメモリのデータ記憶領域には、角速度データＤａ、角度データＤｂ、過去角度データＤｃ、安定フラグデータＤｄ、安定カウンタデータＤｅ、安定確認時間データＤｆ、回転速度データＤｇ、再確認フラグデータＤｈ、および画像データＤｉ等が記憶される。なお、メインメモリには、図１０に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。また、メインメモリのプログラム記憶領域には、ゲームプログラムを構成する各種プログラム群Ｐａが記憶される。各種プログラム群Ｐａは、ゲーム装置本体５に電源が投入された後の適宜のタイミングで光ディスク４やその他の記録媒体からその一部または全部が読み込まれてメインメモリに記憶される。
【０１０２】
角速度データＤａは、角速度検出ユニット９のジャイロセンサ９５および９６によって検出された角速度を示すデータであり、使用される入力装置６毎に対応させて格納される。例えば、角速度データＤａは、入力装置６（ジャイロセンサ９５および９６）に生じた角速度を示すデータであり、入力装置６から送信データとして送信されてくる一連の操作情報に含まれる角速度データが格納される。角速度データＤａには、ジャイロセンサ９５および９６が検出したＸ軸周りの角速度ｖ１を示すＸ軸周り角速度データＤａ１、Ｙ軸周りの角速度ｖ２を示すＹ軸周り角速度データＤａ２、Ｚ軸周りの角速度ｖ３を示すＺ軸周り角速度データＤａ３が含まれる。なお、ゲーム装置本体５に備える無線コントローラモジュール１９は、コントローラ７から所定周期（例えば、１／２００秒毎）に送信される操作情報に含まれる角速度データを受信し、無線コントローラモジュール１９に備える図示しないバッファに蓄えられる。その後、例えば、上記バッファに蓄えられた角速度データがゲーム処理周期である１フレーム毎（例えば、１／６０秒毎）に当該期間中に蓄えられたデータが読み出されて、メインメモリの角速度データＤａが更新される。
【０１０３】
なお、角速度データＤａに適宜格納される角速度データは、当該格納される前に所定の補正が行われている。以下、角速度データの補正例について説明する。
【０１０４】
例えば、ジャイロセンサ９５および９６から出力された角速度データが示す角速度ｖを、
ｖ←ｖ＋（ｓｕｍ／ｃｔ−ｖ）×ａ
によって一次補正する。ここで、ｃｔは、角速度ｖが格納されたデータバッファ（図示せず）から遡って、角速度が連続して安定範囲（下限）ｓ１および安定範囲（上限）ｓ２で設定された安定範囲内に収まると判断されたデータの数（連続個数ｃｔ）である。ｓｕｍは、上記安定範囲内に収まると判断されたデータバッファ内の値の合計値（合計値ｓｕｍ）である。つまり、角速度ｖを書き込んだデータバッファの位置から遡って、新しいデータバッファから古いデータバッファへ順に、連続して上記安定範囲内に含まれるデータバッファを繰り返し取得して、その個数（連続個数ｃｔ）および合計値（合計値ｓｕｍ）である（ただし、検索上限数が設定される）。また、ａは、静止具合値を示す。静止具合値ａは、０〜１の範囲内の数値であり、ジャイロセンサ９５および９６の動きの変化が少ない（安定している）期間が長ければ長いほど１に近づく値である。そして、静止具合値ａは、連続個数ｃｔが上記検索上限数と等しいとき、すなわち角速度ｖが格納されたデータバッファから遡って連続して検索上限数分のデータバッファの値が全て上記安定範囲内に入っていたとき、最大値１になるようにして正規化される。
【０１０５】
そして、上記一次補正後の角速度ｖからゼロ点オフセット値（静止時出力値）ｏｆｓを減算することでオフセット補正する。ここで、ゼロ点オフセット値ｏｆｓは、ジャイロセンサ９５および９６が静止時に示すと想定されるデータの値であって、予め定められたデバイス固有値に設定されているが、上記一次補正後の角速度ｖに応じて、順次補正されて再設定される。具体的には、ゼロ点オフセット値ｏｆｓは、
ｏｆｓ←ｏｆｓ＋（ｖ−ｏｆｓ）×ａ×Ｃ
によって順次補正されて再設定される。ここで、Ｃは、定数であり、例えばＣ＝０．０１に設定される。定数Ｃを小さい値にすることによって、短期間で角速度ｖが、入力装置６の静止状態における角速度（ゼロ点）であるように補正されることを防止している。また、静止値出力値のずれの原因となるドリフト現象は、変化が激しい現象ではないために反応良く行う必要がないため、定数Ｃを小さな値にすることによって高精度なゼロ点オフセット値ｏｆｓを得ることができる。なお、入力装置６を用いるゲームの種類等に応じて、定数Ｃの値を変化させてもかまわない。例えば、静止具合値ａに定数Ｃを乗算した値が大きいほど、すなわち入力装置６の動きの変化が少ない安定した状態となった期間が長いほど、ゼロ点オフセット値ｏｆｓが上記一次補正された角速度ｖに近い値に補正される。したがって、入力装置６が静止状態にあれば、ゼロ点オフセット値ｏｆｓが上記一次補正された角速度ｖに収束する割合が大きくなる。つまり、ジャイロセンサ９５および９６の静止時のように角速度に変化が少ない場合は、ゼロ点がその平均値に近づいていくようにゼロ点の補正が行われる。すなわち、入力装置６が一旦静止すれば、補正によって以降の角速度の誤差が除かれることになる。したがって、本実施形態では、安定確認を行うことによって、ジャイロセンサ９５および９６の誤差が補正済みの状態でゲームを行うことができることになる。
【０１０６】
そして、上記一次補正後の角速度ｖは、ゼロ点オフセット値ｏｆｓを用いてオフセット補正される。例えば、上記一次補正後の角速度ｖは、
ｖ←ｖ―ｏｆｓ
によって、オフセット補正される。これによって、ジャイロセンサ９５および９６から出力された角速度データが示す角速度ｖは、ゼロ点（静止時出力値）を考慮した上で再度補正される。そして、上記オフセット補正後の角速度ｖを用いて、角速度データＤａが適宜更新されることになる。なお、角速度データＤａに適宜格納される角速度データは、上記一次補正をすることなく上記オフセット補正だけを行った角速度データであってもかまわない。また、ゼロ点オフセット値ｏｆｓを固定値にして、上記オフセット補正のみを行ってもかまわない。この場合、仮にゼロ点に誤差が含まれる場合、静止させるだけで自動的に誤差が補正されることはないが、以降の処理によって少なくとも誤差の存在を確認することは可能である。
【０１０７】
角度データＤｂは、角速度検出ユニット９のジャイロセンサ９５および９６によって検出された角速度を累積して得られた角度のデータであり、使用される入力装置６毎に対応させて格納される。ここで、角度データＤｂは、入力装置６（ジャイロセンサ９５および９６）の姿勢（角度）を示すデータであり、入力装置６から送信データとして送信されてくる一連の操作情報に含まれる角速度データを用いて、予め算出される。上述した補正後の角速度ｖを用いる場合、角速度ｖに基づいて入力装置６の姿勢（角度）を算出することも可能である。角速度ｖから入力装置６の姿勢を算出する方法はどのような方法であってもよいが、例えば、初期姿勢に（単位時間あたりの）角速度ｖを逐次加算する方法がある。すなわち、ジャイロセンサ９５および９６から逐次出力されて補正された角速度ｖを積分し、初期状態からの姿勢の変化量（角度の変化量）を積分結果から算出することによって、現在の姿勢を算出することができる。なお、角度データＤｂには、Ｘ軸周りの角速度ｖ１を用いて算出されたＸ軸周りの角度ｒ１を示すＸ軸周り角度データＤｂ１、Ｙ軸周りの角速度ｖ２を用いて算出されたＹ軸周りの角度ｒ２を示すＹ軸周り角度データＤｂ２、Ｚ軸周りの角速度ｖ３を用いて算出されたＺ軸周りの角度ｒ３を示すＺ軸周り角度データＤｂ３が含まれる。
【０１０８】
過去角度データＤｃは、角度の変化量を算出するために用いられ、過去に算出された姿勢（角度）を示すデータであり、使用される入力装置６毎に対応させて格納される。過去角度データＤｃには、過去のＸ軸周りの角度ｒ１ｏｌｄを示すＸ軸周り角度データＤｃ１、過去のＹ軸周りの角度ｒ２ｏｌｄを示すＹ軸周り角度データＤｃ２、過去のＺ軸周りの角度ｒ３ｏｌｄを示すＺ軸周り角度データＤｃ３が含まれる。
【０１０９】
安定フラグデータＤｄは、ジャイロセンサ９５および９６が一旦安定状態となって静止時出力が確定したか否かを示す安定フラグＳｆｒｇを示すデータであり、使用される入力装置６毎に対応させて格納される。安定カウンタデータＤｅは、ジャイロセンサ９５および９６が安定状態であるか否かを判定するための安定カウンタＣを示すデータであり、使用される入力装置６毎に対応させて格納される。安定確認時間データＤｆは、ジャイロセンサ９５および９６の安定状態を確認している時間を示すデータであり、使用される入力装置６毎に対応させて格納される。
【０１１０】
回転速度データＤｇは、入力装置安定情報画面Ｉｄにおいて入力装置オブジェクトＤｏｂｊ（図９参照）を回転させる回転速度Ｖを示すデータであり、使用される入力装置６毎に対応させて格納される。
【０１１１】
再確認フラグデータＤｈは、プレイヤの操作に応じて、ジャイロセンサ９５および９６が安定状態となって静止時出力が再確認されたか否かを示す再確認フラグＲｆｒｇを示すデータであり、使用される入力装置６毎に対応させて格納される。
【０１１２】
画像データＤｉは、オブジェクト画像データＤｉ１、情報画像データＤｉ２、ボタン画像データＤｉ３、および背景画像データＤｉ４等を含んでいる。オブジェクト画像データＤｉ１は、入力装置オブジェクトＤｏｂｊを入力装置安定情報画面Ｉｄに配置して画像を生成するためのデータである。情報画像データＤｉ２は、要求情報画面Ｉｉに表示される情報等、プレイヤに報知する情報を示す文字画像を生成するためのデータである。ボタン画像データＤｉ３は、ジャイロセンサ安定確認画面において、プレイヤの指示を受け付ける操作ボタン画像を生成するためのデータである。そして、背景画像データＤｉ４は、ジャイロセンサ安定確認画面に背景を配置して画像を生成するためのデータである。
【０１１３】
次に、図１１〜図１７を参照して、ゲーム装置本体５において行われるゲーム処理の詳細を説明する。なお、図１１〜図１３は、ゲーム装置本体５において実行されるゲーム処理の一例を示すフローチャートである。図１４は、図１１および図１２における安定確認処理の一例を示すサブルーチンである。図１５は、図１１および図１２における安定確認画面表示処理の一例を示すサブルーチンである。図１６は、図１３におけるステップ８３の安定再確認処理の一例を示すサブルーチンである。図１７は、図１３におけるステップ８４の安定再確認画面表示処理の一例を示すサブルーチンである。ここで、図１１〜図１７に示すフローチャートにおいては、ゲーム処理のうち、ゲーム装置本体５を起動してからゲームを実行して終了するまでの特定場面において、ジャイロセンサ９５および９６の静止時出力を得る処理が行われる動作について主に説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図１１〜図１７では、ＣＰＵ１０が実行する各ステップを「Ｓ」と略称する。
【０１１４】
ゲーム装置本体５の電源が投入されると、ゲーム装置本体５のＣＰＵ１０は、ＲＯＭ／ＲＴＣ１３に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１１〜図１７に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【０１１５】
図１１において、ＣＰＵ１０は、安定確認処理の初期設定を行い（ステップ４０）、次のステップに処理を進める。例えば、上記ステップ４０における初期設定では、ＣＰＵ１０は、ジャイロセンサ９５および９６の安定確認処理を行うための各パラメータの初期設定を行う。具体的には、ＣＰＵ１０は、角速度データＤａ、角度データＤｂ、過去角度データＤｃ、安定確認時間データＤｆ、および回転速度データＤｇに格納されているデータが示す値をそれぞれ初期値（例えば、０）に設定する。また、ＣＰＵ１０は、安定フラグデータＤｄに格納されている安定フラグＳｆｒｇおよび再確認フラグデータＤｈに格納されている再確認フラグＲｆｒｇを全てオフに設定する。
【０１１６】
次に、ＣＰＵ１０は、ゲーム初期設定を行い（ステップ４１）、次のステップに処理を進める。例えば、上記ステップ４１におけるゲーム初期設定では、プレイヤが選択したゲーム種別に応じて、当該ゲームの仮想ゲーム世界の各種設定や以降のゲーム処理で用いる各パラメータの初期化を行う。
【０１１７】
次に、ＣＰＵ１０は、ゲームを行う人数（プレイ人数）が決定されるのを待つ（ステップ４２）。例えば、ＣＰＵ１０は、モニタ２にプレイ人数の選択を促す画面を表示して、プレイ人数を選択した操作入力を待つ。そして、プレイ人数が決定された場合（ステップ４２でＹｅｓ）、ＣＰＵ１０は、処理を次のステップ４３に処理を進める。
【０１１８】
ステップ４３において、ＣＰＵ１０は、安定確認処理を行い、次のステップに処理を進める。以下、図１４を参照して、安定確認処理の詳細な動作について説明する。
【０１１９】
図１４において、ＣＰＵ１０は、安定確認処理の対象とする入力装置６を選択し（ステップ１０１）、次のステップに処理を進める。例えば、複数の入力装置６を用いてゲームが行われている場合、ＣＰＵ１０は、当該複数の入力装置６のうち、安定確認処理が終了していない何れか１つの入力装置６を選択する。なお、以下の説明においては、上記ステップ１０１で選択された入力装置６を対象の入力装置６として記載する。
【０１２０】
次に、ＣＰＵ１０は、対象の入力装置６からの角速度データおよび当該角速度データを用いて算出された角度データを取得して（ステップ１０２）、その際、当該対象の入力装置６から角速度データが取得可能か否かを判断する（ステップ１０３）。そして、ＣＰＵ１０は、対象の入力装置６から角速度データが取得可能である場合、取得した角速度データおよび角度データを用いて当該対象の入力装置６の角速度データＤａおよび角度データＤｂを更新して、次のステップ１０４に処理を進める。一方、ＣＰＵ１０は、対象の入力装置６から角速度データが取得できない場合、次のステップ１１０に処理を進める。
【０１２１】
ステップ１０４において、ＣＰＵ１０は、角度データＤｂを参照して、上記ステップ１０２で取得した角度データが示す角度を用いて軸毎の角度変化量をそれぞれ算出し、次のステップに処理を進める。
【０１２２】
上記ステップ１０４において、例えば、ＣＰＵ１０は、対象の入力装置６のＸ軸周り角度データＤｂ１が示す現時点のＸ軸周りの角度ｒ１と、対象の入力装置６のＸ軸周り角度データＤｃ１が示す過去のＸ軸周りの角度ｒ１ｏｌｄとを用いて、Ｘ軸周りの角度変化量ｒｃ１を
ｒｃ１＝｜ｒ１−ｒ１ｏｌｄ｜
で算出する。また、ＣＰＵ１０は、対象の入力装置６のＹ軸周り角度データＤｂ２が示す現時点のＹ軸周りの角度ｒ２と、対象の入力装置６のＹ軸周り角度データＤｃ２が示す過去のＹ軸周りの角度ｒ２ｏｌｄとを用いて、Ｙ軸周りの角度変化量ｒｃ２を
ｒｃ２＝｜ｒ２−ｒ２ｏｌｄ｜
で算出する。さらに、ＣＰＵ１０は、対象の入力装置６のＺ軸周り角度データＤｂ３が示す現時点のＺ軸周りの角度ｒ３と、対象の入力装置６のＺ軸周り角度データＤｃ３が示す過去のＺ軸周りの角度ｒ３ｏｌｄとを用いて、Ｚ軸周りの角度変化量ｒｃ３を
ｒｃ３＝｜ｒ３−ｒ３ｏｌｄ｜
で算出する。
【０１２３】
次に、ＣＰＵ１０は、軸毎の角度変化量ｒｃ１、ｒｃ２、およびｒｃ３が全て所定値以内であるか否かを判断する（ステップ１０５）。そして、ＣＰＵ１０は、軸毎の角度変化量ｒｃ１、ｒｃ２、およびｒｃ３が全て所定値以内である場合、次のステップ１０６に処理を進める。一方、ＣＰＵ１０は、軸毎の角度変化量ｒｃ１、ｒｃ２、およびｒｃ３の少なくとも１つが所定値より大きい場合、次のステップ１１２に処理を進める。
【０１２４】
ステップ１０６において、ＣＰＵ１０は、対象の入力装置６の安定カウンタデータＤｅに格納されている安定カウンタＣに１を加算する。そして、ＣＰＵ１０は、１を加算した安定カウンタＣを用いて対象の入力装置６の安定カウンタデータＤｅを更新し、次のステップ１０７に処理を進める。
【０１２５】
一方、ステップ１１２において、ＣＰＵ１０は、上記ステップ１０４で用いた角度ｒ１を角度ｒ１ｏｌｄに設定し、角度ｒ２を角度ｒ２ｏｌｄに設定し、角度ｒ３を角度ｒ３ｏｌｄに設定する。そして、ＣＰＵ１０は、新たに設定された角度ｒ１ｏｌｄ、ｒ２ｏｌｄ、およびｒ３ｏｌｄをそれぞれ用いて、対象の入力装置６の過去角度データＤｃを更新し、次のステップに処理を進める。
【０１２６】
次に、ＣＰＵ１０は、対象の入力装置６の安定カウンタデータＤｅに格納されている安定カウンタＣを０に設定して、当該設定後の安定カウンタＣを用いて対象の入力装置６の安定カウンタデータＤｅを更新し（ステップ１１３）、次のステップ１０７に処理を進める。
【０１２７】
ステップ１０７において、ＣＰＵ１０は、対象の入力装置６の安定カウンタデータＤｅを参照して、対象の入力装置６の安定カウンタＣが安定判定閾値Ｃｔ以上であるか否かを判断する。そして、ＣＰＵ１０は、安定カウンタＣが安定判定閾値Ｃｔ以上である場合、次のステップ１０８に処理を進める。一方、ＣＰＵ１０は、安定カウンタＣが安定判定回数閾値Ｃｔ未満である場合、次のステップ１０９に処理を進める。
【０１２８】
ステップ１０８において、ＣＰＵ１０は、対象の入力装置６の安定フラグデータＤｄが示す安定フラグＳｆｒｇをオンに設定し、次のステップ１０９に処理を進める。このように、安定フラグＳｆｒｇは、ある瞬間の角度だけを用いるのではなく、所定の期間中に連続して得られた角度が安定していることによってオンされる。したがって、入力装置６に生じている微小な振動程度の角度の変動は許容されて安定フラグＳｆｒｇがオンとなるが、静止時出力自体が一定方向へ変動するドリフト現象は許容されずに当該変動後の静止時出力の安定が確認された後に安定フラグＳｆｒｇがオンに設定される。
【０１２９】
なお、上述した処理では、複数軸周りそれぞれの角度の変化量が連続して所定の範囲内となる期間が所定期間以上であることによって、入力装置６の姿勢が安定しているか否かを判定している。つまり、上述した処理では、所定の期間中に得られた角度（姿勢）の安定を確認することによって、安定フラグＳｆｒｇをオンに設定しているが、他の方法によって入力装置６の安定を確認して安定フラグＳｆｒｇをオンに設定してもかまわない。例えば、複数軸周りそれぞれの角速度の変化量が連続して所定の範囲内となる期間が所定期間以上である、すなわち、所定の期間中に得られた角速度の安定を確認することによって、安定フラグＳｆｒｇをオンに設定してもよい。この場合、上記ステップ１０４において、対象の入力装置６の角速度データＤａが示す現時点の各軸周りの角速度ｖ１、ｖ２、およびｖ３と、対象の入力装置６における過去の各軸周りの角速度とを用いて、各軸周りの角速度変化量を求めることによって、同様の安定確認が可能となる。この場合も、入力装置６に生じている微小な振動程度の角速度の変動は許容されて安定フラグＳｆｒｇがオンとなるが、静止時出力自体が一定方向へ変動するドリフト現象は許容されずに当該変動後の静止時出力の安定が確認された後に安定フラグＳｆｒｇがオンに設定される。
【０１３０】
一方、上記ステップ１０３において対象の入力装置６から角速度データが取得できないと判定された場合、ＣＰＵ１０は、対象の入力装置６の安定フラグデータＤｄが示す安定フラグＳｆｒｇをオフに設定し（ステップ１１０）、次のステップに処理を進める。ここで、入力装置６から角速度データが取得できない状態は、例えば、角速度検出ユニット９がコントローラ７から外れた状態や、入力装置６から一連の操作情報（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、処理結果データ、Ｘ、Ｙ、およびＺ軸周り角速度データ）が得られない状態であることが考えられる。このような場合、再度ジャイロセンサ９５および９６を安定させて静止時出力を設定することが必要となるため、安定フラグＳｆｒｇをオフすることによって対象の入力装置６における静止時出力の設定が未完であることを示している。
【０１３１】
次に、ＣＰＵ１０は、対象の入力装置６の安定カウンタデータＤｅに格納されている安定カウンタＣを０に設定して、当該設定後の安定カウンタＣを用いて対象の入力装置６の安定カウンタデータＤｅを更新し（ステップ１１１）、次のステップ１０９に処理を進める。
【０１３２】
ステップ１０９において、ＣＰＵ１０は、ゲームに使用される全ての入力装置６に対する安定確認処理が終了したか否かを判断する。そして、ＣＰＵ１０は、ゲームに使用される全ての入力装置６に対する安定確認処理が終了した場合、当該サブルーチンによる処理を終了する。一方、ＣＰＵ１０は、ゲームに使用される何れかの入力装置６に対する安定確認処理が終了していない場合、上記ステップ１０１に戻って処理を繰り返す。
【０１３３】
図１１に戻り、上記ステップ４３の安定確認処理の後、ＣＰＵ１０は、ゲームに使用される全ての入力装置６の安定フラグデータＤｄを参照して、安定フラグＳｆｒｇがオフに設定されている入力装置６があるか否かを判断する（ステップ４４）。そして、ＣＰＵ１０は、安定フラグＳｆｒｇがオフに設定されている入力装置６がある場合、次のステップ４５に処理を進める。一方、ＣＰＵ１０は、安定フラグＳｆｒｇがオフに設定されている入力装置６がない場合、次のステップ６０（図１２）に処理を進める。
【０１３４】
ステップ４５において、ＣＰＵ１０は、ゲームに使用される入力装置６のうち、安定フラグＳｆｒｇがオフに設定されている入力装置６の安定確認時間をそれぞれ初期化して、次のステップに処理を進める。例えば、ＣＰＵ１０は、安定フラグＳｆｒｇがオフに設定されている入力装置６の安定確認時間データＤｆが示す安定確認時間を、全て０に初期化して安定確認時間データＤｆを更新する。
【０１３５】
次に、ＣＰＵ１０は、安定フラグＳｆｒｇがオフに設定されている入力装置６の安定確認時間データＤｆを参照して、安定確認時間が所定時間に到達したか否かを判断する（ステップ４６）。ここで、上記ステップ４６で用いる所定時間は、ジャイロセンサ９５および９６の安定を待つための最長時間であり、プレイヤがジャイロセンサ９５および９６の安定を待つために許容できる時間に設定すればよい。そして、ＣＰＵ１０は、安定確認時間が所定時間に到達していない場合、次のステップ４７に処理を進める。一方、ＣＰＵ１０は、安定確認時間が所定時間に到達した場合、次のステップ５０に処理を進める。
【０１３６】
ステップ４７において、ＣＰＵ１０は、安定確認処理を行い、次のステップに処理を進める。なお、上記ステップ４７で行う安定確認処理は、上述したステップ４３における安定確認処理と同様であるため、詳細な説明を省略する。
【０１３７】
次に、ＣＰＵ１０は、安定確認画面をモニタ２に表示して（ステップ４８）、次のステップに処理を進める。以下、図１５を参照して、安定確認画面表示処理の詳細な動作について説明する。
【０１３８】
図１５において、ＣＰＵ１０は、安定確認画面表示処理の対象とする入力装置６を選択し（ステップ１２１）、次のステップに処理を進める。例えば、複数の入力装置６を用いてゲームが行われている場合、ＣＰＵ１０は、当該複数の入力装置６のうち、安定確認画面表示処理が終了していない何れか１つの入力装置６を選択する。なお、以下の説明においては、上記ステップ１２１で選択された入力装置６を表示対象の入力装置６として記載する。
【０１３９】
次に、ＣＰＵ１０は、表示対象の入力装置６に対応する安定フラグデータＤｄを参照して、安定フラグＳｆｒｇがオフに設定されているか否かを判断する（ステップ１２２）。そして、ＣＰＵ１０は、安定フラグＳｆｒｇがオフに設定されている場合、次のステップ１２３に処理を進める。一方、ＣＰＵ１０は、安定フラグＳｆｒｇがオンに設定されている場合、次のステップ１２６に処理を進める。
【０１４０】
ステップ１２３において、ＣＰＵ１０は、表示対象の入力装置６に対応する角速度データＤａを参照して、最新の角速度データが示す角速度を用いて回転速度Ｖを算出し、次のステップに処理を進める。
【０１４１】
上記ステップ１２３において、例えば、ＣＰＵ１０は、回転速度Ｖを
Ｖ＝（｜ｖ１｜＋｜ｖ２｜＋｜ｖ３｜）×Ｍ    …（１）
によって算出する。ここで、ｖ１は、Ｘ軸周り角速度データＤａ１に格納されている最新のデータが示す表示対象の入力装置６のジャイロセンサ９５および９６が検出したＸ軸周りの角速度ｖ１である。ｖ２は、Ｙ軸周り角速度データＤａ２に格納されている最新データが示す表示対象の入力装置６のジャイロセンサ９５および９６が検出したＹ軸周りの角速度ｖ２である。ｖ３は、Ｚ軸周り角速度データＤａ３に格納されている最新のデータが示す表示対象の入力装置６のジャイロセンサ９５および９６が検出したＺ軸周りの角速度ｖ３である。そして、Ｍは、わずかな角速度であっても回転速度Ｖを視認できる程度に大きくするための１以上の定数であり、例えばＭ＝１０／６に設定される。なお、ＣＰＵ１０は、（｜ｖ１｜＋｜ｖ２｜＋｜ｖ３｜）の値が予め定められた閾値（例えば、１０８０°／秒、すなわち３回転／秒）より大きい場合、当該値を当該閾値と等しい値にする。つまり、上記式（１）によって算出される回転速度Ｖは、上記閾値に定数Ｍを乗じた値以下（１８００°／秒以下、すなわち５回転／秒以下）で算出される。
【０１４２】
そして、ＣＰＵ１０は、表示対象の入力装置６に対応する回転速度データＤｇに現時点で格納されている回転速度Ｖを前回回転速度Ｖｌａｓｔとして、上記式（１）を用いて算出された回転速度Ｖを前回回転速度Ｖｌａｓｔに所定の割合で近づけることによって、当該回転速度Ｖを調整する。例えば、上記式（１）を用いて算出された回転速度Ｖと前回回転速度Ｖｌａｓｔとを用いて、調整後の回転速度Ｖを
Ｖ←０．５Ｖ＋０．５Ｖｌａｓｔ
によって算出して、回転速度Ｖを決定する。そして、ＣＰＵ１０は、決定された回転速度Ｖを用いて表示対象の入力装置６に対応する回転速度データＤｇを更新する。なお、上記式（１）を用いて算出された回転速度Ｖを前回回転速度Ｖｌａｓｔに近づける割合は、他の割合であってもかまわない。そして、算出された回転速度Ｖは、次回の処理における前回回転速度Ｖｌａｓｔとなる。
【０１４３】
次に、ＣＰＵ１０は、表示対象の入力装置６に対応する入力装置オブジェクトＤｏｂｊを、回転速度Ｖに応じて回転させて確認中であることを示す入力装置安定情報画面Ｉｄを、モニタ２に表示して（ステップ１２４）、次のステップ１２５に処理を進める。
【０１４４】
例えば、上記ステップ１２４において、ＣＰＵ１０は、図８を用いて説明したようなジャイロセンサ安定確認画面をモニタ２に表示する。具体的には、上記ステップ１２４で表示する入力装置安定情報画面Ｉｄ（図９に示す入力装置安定情報画面Ｉｄａ）は、安定フラグＳｆｒｇがオフに設定されている入力装置６に対するものであるため、入力装置オブジェクトＤｏｂｊが当該オブジェクトの略中央位置を軸として回転している状態で表示される（図９に示す入力装置オブジェクトＤｏｂｊａ）。ここで、入力装置オブジェクトＤｏｂｊが回転する速度は、回転速度データＤｇに格納されている回転速度Ｖによって決定される。例えば、安定フラグＳｆｒｇがオフに設定されている入力装置６ａに対応する入力装置安定情報画面Ｉｄａを表示する場合、入力装置６ａの回転速度データＤｇに格納されている回転速度Ｖの数値が示す角度だけ入力装置オブジェクトＤｏｂｊａを回転させて表示する。
【０１４５】
一方、上記ステップ１２２において安定フラグＳｆｒｇがオンに設定されていると判断された場合、ＣＰＵ１０は、表示対象の入力装置６に対応する入力装置オブジェクトＤｏｂｊを、縦方向に静止させて確認済であることを示す入力装置安定情報画面Ｉｄを、モニタ２に表示して（ステップ１２６）、次のステップ１２５に処理を進める。
【０１４６】
例えば、上記ステップ１２６において、ＣＰＵ１０は、図８を用いて説明したようなジャイロセンサ安定確認画面をモニタ２に表示する。具体的には、上記ステップ１２６で表示する入力装置安定情報画面Ｉｄ（図９に示す入力装置安定情報画面Ｉｄａ）は、安定フラグＳｆｒｇがオンに設定されている入力装置６に対するものであるため、入力装置オブジェクトＤｏｂｊが縦方向に静止した状態で表示される（図９に示す入力装置オブジェクトＤｏｂｊｂ）。なお、入力装置安定情報画面Ｉｄを表示中において、安定フラグＳｆｒｇがオンに設定されている入力装置６のジャイロセンサ９５および９６から出力される角速度が変動することもあるが、当該角速度が変動したとしても入力装置オブジェクトＤｏｂｊは縦方向に静止した状態で表示される。つまり、安定フラグＳｆｒｇがオンに設定された後であれば、プレイヤが入力装置６を動かしたとしても、当該入力装置６に対応する入力装置オブジェクトＤｏｂｊが回転することはない。
【０１４７】
ステップ１２５において、ＣＰＵ１０は、ゲームに使用される全ての入力装置６に対する安定確認画面表示処理が終了したか否かを判断する。そして、ＣＰＵ１０は、ゲームに使用される全ての入力装置６に対する安定確認画面表示処理が終了した場合、当該サブルーチンによる処理を終了する。一方、ＣＰＵ１０は、ゲームに使用される何れかの入力装置６に対する安定確認画面表示処理が終了していない場合、上記ステップ１２１に戻って処理を繰り返す。
【０１４８】
図１１に戻り、上記ステップ４８の安定確認画面表示処理の後、ＣＰＵ１０は、ゲームに使用される全ての入力装置６の安定フラグデータＤｄを参照して、安定フラグＳｆｒｇがオフに設定されている入力装置６があるか否かを判断する（ステップ４９）。そして、ＣＰＵ１０は、安定フラグＳｆｒｇがオフに設定されている入力装置６がある場合、上記ステップ４６に戻って処理を繰り返す。一方、ＣＰＵ１０は、安定フラグＳｆｒｇがオフに設定されている入力装置６がない場合、次のステップ６０（図１２）に処理を進める。
【０１４９】
一方、上記ステップ４６において、安定確認時間が所定時間に到達した場合、ＣＰＵ１０は、安定確認未完了画面をモニタ２に表示して（ステップ５０）、次のステップに処理を進める。ここで、上記ステップ５０は、ゲームに使用される入力装置６の何れかの安定が確認できない状態で安定確認時間がタイムアップした場合に実行される処理である。そこで、ＣＰＵ１０は、その経過を示す画面として、図１８に示すような安定確認未完了画面をモニタ２に表示する。
【０１５０】
図１８において、安定確認未完了画面には、角速度検出ユニット９（ジャイロセンサ９５および９６）の安定が確認できなかったことを示す情報画面Ｉｕと、再度安定確認処理を行うか否かの選択肢を示す操作ボタンＢａおよびＢｂとが表示される。例えば、情報画面Ｉｕとして、「角速度検出ユニットの動作チェックが完了できませんでした。正常に動作しない可能性がありますが、終了してよろしいですか？」とプレイヤに報知する文字情報が表示される。操作ボタンＢａは、再度安定確認処理を行うことを選択する場合の選択肢であり、例えば「もう一度試す」と表示された選択肢を安定確認未完了画面に表示する。操作ボタンＢｂは、再度安定確認処理を行わないことを選択する場合の選択肢であり、例えば「おわる」と表示された選択肢を安定確認未完了画面に表示する。
【０１５１】
図１１に戻り、ＣＰＵ１０は、安定確認未完了画面をモニタ２に表示した状態でプレイヤが上記選択肢を選択するのを待ち、当該選択された選択肢に応じてもう一度確認するか否かを判断する（ステップ５１）。そして、ＣＰＵ１０は、再度安定確認処理を行う場合、上記ステップ４５に戻って、処理を繰り返す。一方、ＣＰＵ１０は、再度安定確認処理を行わない場合、ゲームに使用される全ての入力装置６の安定フラグデータＤｄをオンに設定して（ステップ５２）、次のステップ６０（図１２）に処理を進める。
【０１５２】
図１２に進み、ＣＰＵ１０は、現時点で選択されているゲームを進行させる処理を行い（ステップ６０）、次のステップに処理を進める。例えば、ＣＰＵ１０は、入力装置６から得られる一連の操作情報や算出された入力装置６の角度（入力装置６の姿勢）を用いて、仮想ゲーム世界に登場する各種オブジェクトを動作させることによって、ゲームを進行させる。一例として、上記ステップ６０において、算出された入力装置６の姿勢に基づいて、仮想ゲーム世界に登場する各種オブジェクトの姿勢を変化させることも可能である。
【０１５３】
次に、ＣＰＵ１０は、安定確認処理を行い（ステップ６１）、次のステップに処理を進める。なお、上記ステップ６１で行う安定確認処理は、上述したステップ４３における安定確認処理と同様であるため、詳細な説明を省略する。
【０１５４】
次に、ＣＰＵ１０は、ゲームに使用される全ての入力装置６から角速度データの取得が可能であるか否かを判断する（ステップ６２）。そして、ＣＰＵ１０は、全ての入力装置６から角速度データが取得可能である場合、次のステップ６６に処理を進める。一方、ＣＰＵ１０は、何れかの入力装置６から角速度データが取得できない場合、次のステップ６３に処理を進める。
【０１５５】
ステップ６３において、ＣＰＵ１０は、角速度データが取得できない入力装置６からの操作情報を用いて、上記ステップ６０のゲーム処理を行っているか否かを判断する。例えば、全ての入力装置６を同時に用いてゲームが進行する処理であれば、上記ステップ６３で肯定の判定が行われる。一方、複数の入力装置６を交互に用いてゲームが進行する処理であれば、角速度データが取得できない入力装置６からの操作情報を用いる期間中である場合に上記ステップ６３で肯定の判定が行われ、角速度データの取得が可能な入力装置６からの操作情報を用いる期間中である場合に上記ステップ６３で否定の判定が行われる。そして、ＣＰＵ１０は、上記ステップ６３が肯定の判定の場合、次のステップ６４に処理を進める。一方、ＣＰＵ１０は、上記ステップ６３が否定の判定の場合、次のステップ６６に処理を進める。
【０１５６】
ステップ６４において、ＣＰＵ１０は入力装置６に生じた異常の内容（入力装置６との通信が途絶えた、角速度検出ユニット９がコントローラ７から外れている等）を示す画面をモニタ２に表示して、次のステップに処理を進める。ここで、上記ステップ６４は、ゲーム処理中において、入力装置６から角速度データが取得できなくなった場合で、かつ、角速度データが取得できなくなった入力装置６からの操作情報を用いてゲームが進行する状態の場合である。本実施形態では、角速度データが取得できなくなる原因として、ゲーム処理中に、入力装置６から一連の操作情報が得られない状態となったり、角速度検出ユニット９がコントローラ７から外れたりしたことが考えられる。そこで、ＣＰＵ１０は、入力装置６から一連の操作情報が得られない状態の場合、図１９に示すような画面をモニタ２に表示する。また、ＣＰＵ１０は、入力装置６から一連の操作情報のうち、角速度データだけが得られない状態の場合、図２０に示すような画面をモニタ２に表示する。
【０１５７】
図１９において、入力装置６に生じた異常の内容を示す画面には、入力装置６とゲーム装置本体５との間の通信が切断されたことを示す情報画面Ｉｎ１が表示される。例えば、情報画面Ｉｎ１として、角速度データが取得できなくなった入力装置６を操作するプレイヤの名称を用いて、「Ａさん、コントローラの通信が切れました。」とプレイヤに異常の内容を報知する文字情報が表示される。
【０１５８】
図２０において、入力装置６に生じた異常の内容を示す画面には、角速度検出ユニット９がコントローラ７から外れたことを示す情報画面Ｉｎ２が表示される。例えば、情報画面Ｉｎ２として、角速度データが取得できなくなった入力装置６を操作するプレイヤの名称を用いて、「Ａさん、角速度検出ユニットが抜けています。装着しなおしてください。」とプレイヤに異常の内容を報知する文字情報が表示される。
【０１５９】
図１２に戻り、ＣＰＵ１０は、上記情報画面Ｉｎ１またはＩｎ２をモニタ２に表示した状態で角速度データが取得できなくなった原因が解消されるのを待つ（ステップ６５）。例えば、角速度データが取得できなくなった入力装置６から角速度データの取得が可能となった場合、ＣＰＵ１０は、角速度データが取得できなくなった原因が解消されたと判断して（ステップ６５でＹｅｓ）、次のステップ６７に処理を進める。
【０１６０】
一方、ステップ６６において、ＣＰＵ１０は、ゲームに使用される全ての入力装置６の安定フラグデータＤｄを参照して、安定フラグＳｆｒｇがオフに設定されている入力装置６があるか否かを判断する。そして、ＣＰＵ１０は、安定フラグＳｆｒｇがオフに設定されている入力装置６がある場合、次のステップ６７に処理を進める。一方、ＣＰＵ１０は、安定フラグＳｆｒｇがオフに設定されている入力装置６がない場合、次のステップ８０（図１３）に処理を進める。ゲーム開始後に安定フラグＳｆｒｇがオフに設定されている入力装置６がある場合は、例えば、ゲーム開始後に入力装置６からの通信が途絶えたり、角速度検出ユニット９がコントローラ７から外れたりするなどして、入力装置６から角速度データが取得できない場合に安定フラグＳｆｒｇがオフされた場合が考えられる。
【０１６１】
ステップ６７において、ＣＰＵ１０は、安定フラグＳｆｒｇがオフに設定されている入力装置６からの操作情報を用いて、上記ステップ６０のゲーム処理を行っているか否かを判断する。例えば、全ての入力装置６を同時に用いてゲームが進行する処理であれば、上記ステップ６７で肯定の判定が行われる。一方、複数の入力装置６を交互に用いてゲームが進行する処理であれば、安定フラグＳｆｒｇがオフに設定されている入力装置６からの操作情報を用いる期間中である場合に上記ステップ６７で肯定の判定が行われ、安定フラグＳｆｒｇがオンに設定されている入力装置６からの操作情報を用いる期間中である場合に上記ステップ６７で否定の判定が行われる。そして、ＣＰＵ１０は、上記ステップ６７が肯定の判定の場合、次のステップ６８に処理を進める。一方、ＣＰＵ１０は、上記ステップ６７が否定の判定の場合、次のステップ８０（図１３）に処理を進める。
【０１６２】
ステップ６８において、ＣＰＵ１０は、安定確認処理を行い、次のステップに処理を進める。なお、上記ステップ６８で行う安定確認処理は、上述したステップ４３における安定確認処理と同様であるため、詳細な説明を省略する。
【０１６３】
次に、ＣＰＵ１０は、安定確認画面をモニタ２に表示して（ステップ６９）、次のステップに処理を進める。なお、上記ステップ６９で行う安定確認画面表示処理は、上述したステップ４８における安定確認画面表示処理と同様であるため、詳細な説明を省略する。ここで、上記ステップ６９における安定確認画面表示処理は、ゲーム処理中において、安定フラグＳｆｒｇがオン状態からオフ状態に変化した場合で、かつ、安定フラグＳｆｒｇがオン状態からオフ状態に変化した入力装置６からの操作情報を用いてゲームが進行する状態の場合において行われる。このように、ゲーム中において安定フラグＳｆｒｇがオフとなり当該オフとなった入力装置６を現時点で当該ゲームに用いる状況にある場合、安定確認画面がモニタ２に表示される。
【０１６４】
次に、ＣＰＵ１０は、ゲームに使用される全ての入力装置６の安定フラグデータＤｄを参照して、安定フラグＳｆｒｇがオフに設定されている入力装置６があるか否かを判断する（ステップ７０）。そして、ＣＰＵ１０は、安定フラグＳｆｒｇがオフに設定されている入力装置６がある場合、上記ステップ６８に戻って処理を繰り返す。一方、ＣＰＵ１０は、安定フラグＳｆｒｇがオフに設定されている入力装置６がない場合、次のステップ８０（図１３）に処理を進める。
【０１６５】
図１３に進み、ＣＰＵ１０は、プレイヤがジャイロセンサ９５および９６の安定を再確認する操作を行ったか否かを判断する（ステップ８０）。例えば、プレイヤがゲーム途中においてジャイロセンサ９５および９６の安定を確認するための操作部７２（例えば、プラスボタン７２ｇ）を押下した場合、ＣＰＵ１０は、ジャイロセンサ９５および９６の安定を再確認する操作が行われたと判断する。そして、ＣＰＵ１０は、安定を再確認する操作が行われた場合、次のステップ８１に処理を進める。一方、ＣＰＵ１０は、安定を再確認する操作が行われていない場合、次のステップ８６に処理を進める。この場合、当該再確認の操作自体は、安定の確認のための指示と明示されていなくともよく、単なる一時停止を示す操作であってもよい。
【０１６６】
ステップ８１において、ＣＰＵ１０は、再確認フラグデータＤｈに格納されている再確認フラグＲｆｒｇを全てオフに設定する。そして、ＣＰＵ１０は、安定カウンタデータＤｅに格納されている安定カウンタＣを全て０に設定して（ステップ８２）、次のステップに処理を進める。
【０１６７】
次に、ＣＰＵ１０は、安定再確認処理を行い（ステップ８３）、次のステップに処理を進める。以下、図１６を参照して、安定再確認処理の詳細な動作について説明する。
【０１６８】
図１６において、ＣＰＵ１０は、安定再確認処理の対象とする入力装置６を選択し（ステップ１３１）、次のステップに処理を進める。例えば、複数の入力装置６を用いてゲームが行われている場合、ＣＰＵ１０は、当該複数の入力装置６のうち、安定再確認処理が終了していない何れか１つの入力装置６を選択する。なお、以下の説明においては、上記ステップ１３１で選択された入力装置６を再確認対象の入力装置６として記載する。
【０１６９】
次に、ＣＰＵ１０は、再確認対象の入力装置６からの角速度データおよび当該角速度データを用いて算出された角度データを取得して（ステップ１３２）、その際、当該再確認対象の入力装置６から角速度データが取得可能か否かを判断する（ステップ１３３）。そして、ＣＰＵ１０は、再確認対象の入力装置６から角速度データが取得可能である場合、取得した角速度データおよび角度データを用いて当該再確認対象の入力装置６の角速度データＤａおよび角度データＤｂを更新して、次のステップ１３４に処理を進める。一方、ＣＰＵ１０は、再確認対象の入力装置６から角速度データが取得できない場合、次のステップ１４０に処理を進める。
【０１７０】
ステップ１３４において、ＣＰＵ１０は、角度データＤｂを参照して、上記ステップ１３２で取得した角度データが示す角度を用いて軸毎の角度変化量をそれぞれ算出し、次のステップに処理を進める。なお、上記ステップ１３４における角度変化量の算出方法については、上述したステップ１０４で説明した算出方法と同様であるため、詳細な説明を省略する。
【０１７１】
次に、ＣＰＵ１０は、軸毎の角度変化量ｒｃ１、ｒｃ２、およびｒｃ３が全て所定値以内であるか否かを判断する（ステップ１３５）。そして、ＣＰＵ１０は、軸毎の角度変化量ｒｃ１、ｒｃ２、およびｒｃ３が全て所定値以内である場合、次のステップ１３６に処理を進める。一方、ＣＰＵ１０は、軸毎の角度変化量ｒｃ１、ｒｃ２、およびｒｃ３の少なくとも１つが所定値より大きい場合、次のステップ１４２に処理を進める。
【０１７２】
ステップ１３６において、ＣＰＵ１０は、再確認対象の入力装置６の安定カウンタデータＤｅに格納されている安定カウンタＣに１を加算する。そして、ＣＰＵ１０は、１を加算した安定カウンタＣを用いて再確認対象の入力装置６の安定カウンタデータＤｅを更新し、次のステップ１３７に処理を進める。
【０１７３】
一方、ステップ１４２において、ＣＰＵ１０は、上記ステップ１３４で用いた角度ｒ１を角度ｒ１ｏｌｄに設定し、角度ｒ２を角度ｒ２ｏｌｄに設定し、角度ｒ３を角度ｒ３ｏｌｄに設定する。そして、ＣＰＵ１０は、新たに設定された角度ｒ１ｏｌｄ、ｒ２ｏｌｄ、およびｒ３ｏｌｄをそれぞれ用いて、再確認対象の入力装置６の過去角度データＤｃを更新し、次のステップに処理を進める。
【０１７４】
次に、ＣＰＵ１０は、再確認対象の入力装置６の安定カウンタデータＤｅに格納されている安定カウンタＣを０に設定して、当該設定後の安定カウンタＣを用いて再確認対象の入力装置６の安定カウンタデータＤｅを更新し（ステップ１４３）、次のステップ１３７に処理を進める。
【０１７５】
ステップ１３７において、ＣＰＵ１０は、再確認対象の入力装置６の安定カウンタデータＤｅを参照して、再確認対象の入力装置６の安定カウンタＣが安定判定閾値Ｃｔ以上であるか否かを判断する。そして、ＣＰＵ１０は、安定カウンタＣが安定判定閾値Ｃｔ以上である場合、次のステップ１３８に処理を進める。一方、ＣＰＵ１０は、安定カウンタＣが安定判定回数閾値Ｃｔ未満である場合、次のステップ１３９に処理を進める。
【０１７６】
ステップ１３８において、ＣＰＵ１０は、再確認対象の入力装置６の安定フラグデータＤｄが示す安定フラグＳｆｒｇおよび再確認フラグデータＤｈに格納されている再確認フラグＲｆｒｇをそれぞれオンに設定し、次のステップ１３９に処理を進める。このように、再確認フラグＲｆｒｇは、安定フラグＳｆｒｇと同様に、ある瞬間の角度だけを用いるのではなく、所定の期間中に連続して得られた角度が安定していることによってオンされる。
【０１７７】
なお、上述した処理では、複数軸周りそれぞれの角度の変化量が連続して所定の範囲内となる期間が所定期間以上であることによって、入力装置６の姿勢が安定しているか否かを判定している。つまり、上述した処理では、所定の期間中に得られた角度（姿勢）の安定を確認することによって、再確認フラグＲｆｒｇをオンに設定しているが、他の方法によって入力装置６の安定を再確認して再確認フラグＲｆｒｇをオンに設定してもかまわない。例えば、複数軸周りそれぞれの角速度の変化量が連続して所定の範囲内となる期間が所定期間以上である、すなわち、所定の期間中に得られた角速度の安定を確認することによって、再確認フラグＲｆｒｇをオンに設定してもよい。この場合、上記ステップ１３４において、再確認対象の入力装置６の角速度データＤａが示す現時点の各軸周りの角速度ｖ１、ｖ２、およびｖ３と、再確認対象の入力装置６における過去の各軸周りの角速度とを用いて、各軸周りの角速度変化量を求めることによって、同様の安定再確認が可能となる。この場合も、入力装置６に生じている微小な振動程度の角速度の変動は許容されて再確認フラグＲｆｒｇがオンとなるが、静止時出力自体が一定方向へ変動するドリフト現象は許容されずに当該変動後の静止時出力の安定が再確認された後に再確認フラグＲｆｒｇがオンに設定される。
【０１７８】
一方、上記ステップ１３３において再確認対象の入力装置６から角速度データが取得できないと判定された場合、ＣＰＵ１０は、再確認対象の入力装置６の安定フラグデータＤｄが示す安定フラグＳｆｒｇおよび再確認フラグデータＤｈに格納されている再確認フラグＲｆｒｇをそれぞれオフに設定し（ステップ１４０）、次のステップに処理を進める。ここで、入力装置６から角速度データが取得できない状態であると、再度ジャイロセンサ９５および９６を安定させて静止時出力を設定することが必要となるため、再確認フラグＲｆｒｇだけでなく安定フラグＳｆｒｇもオフすることによって再確認対象の入力装置６における静止時出力の設定が未完であることを示している。
【０１７９】
次に、ＣＰＵ１０は、再確認対象の入力装置６の安定カウンタデータＤｅに格納されている安定カウンタＣを０に設定して、当該設定後の安定カウンタＣを用いて再確認対象の入力装置６の安定カウンタデータＤｅを更新し（ステップ１４１）、次のステップ１３９に処理を進める。
【０１８０】
ステップ１３９において、ＣＰＵ１０は、ゲームに使用される全ての入力装置６に対する安定再確認処理が終了したか否かを判断する。そして、ＣＰＵ１０は、ゲームに使用される全ての入力装置６に対する安定再確認処理が終了した場合、当該サブルーチンによる処理を終了する。一方、ＣＰＵ１０は、ゲームに使用される何れかの入力装置６に対する安定再確認処理が終了していない場合、上記ステップ１３１に戻って処理を繰り返す。
【０１８１】
図１３に戻り、ＣＰＵ１０は、安定再確認画面をモニタ２に表示して（ステップ８４）、次のステップに処理を進める。以下、図１７を参照して、安定再確認画面表示処理の詳細な動作について説明する。
【０１８２】
図１７において、ＣＰＵ１０は、安定再確認画面表示処理の対象とする入力装置６を選択し（ステップ１５１）、次のステップに処理を進める。例えば、複数の入力装置６を用いてゲームが行われている場合、ＣＰＵ１０は、当該複数の入力装置６のうち、安定再確認画面表示処理が終了していない何れか１つの入力装置６を選択する。なお、以下の説明においては、上記ステップ１５１で選択された入力装置６を再確認表示対象の入力装置６として記載する。
【０１８３】
次に、ＣＰＵ１０は、再確認表示対象の入力装置６に対応する再確認フラグデータＤｈを参照して、再確認フラグＲｆｒｇがオフに設定されているか否かを判断する（ステップ１５２）。そして、ＣＰＵ１０は、再確認フラグＲｆｒｇがオフに設定されている場合、次のステップ１５３に処理を進める。一方、ＣＰＵ１０は、再確認フラグＲｆｒｇがオンに設定されている場合、次のステップ１５６に処理を進める。
【０１８４】
ステップ１５３において、ＣＰＵ１０は、再確認表示対象の入力装置６に対応する角速度データＤａを参照して、最新の角速度データが示す角速度を用いて回転速度Ｖを算出し、次のステップに処理を進める。なお、上記ステップ１５３における回転速度Ｖの算出方法については、上述したステップ１２３における回転速度Ｖの算出方法と同様であるため、詳細な説明を省略する。
【０１８５】
次に、ＣＰＵ１０は、再確認表示対象の入力装置６に対応する入力装置オブジェクトＤｏｂｊを、回転速度Ｖに応じて回転させて確認中であることを示すジャイロセンサ安定再確認画面を、モニタ２に表示して（ステップ１５４）、次のステップ１５５に処理を進める。
【０１８６】
例えば、上記ステップ１５４において、ＣＰＵ１０は、図８を用いて説明したようなジャイロセンサ安定再確認画面をモニタ２に表示する。具体的には、上記ステップ１５４で表示するジャイロセンサ安定再確認画面は、図９に示す入力装置安定情報画面Ｉｄａと同様であり、再確認フラグＲｆｒｇがオフに設定されている入力装置６に対して、入力装置オブジェクトＤｏｂｊが当該オブジェクトの略中央位置を軸として回転している状態で表示される（図９に示す入力装置オブジェクトＤｏｂｊａ）。
【０１８７】
一方、上記ステップ１５２において再確認フラグＲｆｒｇがオンに設定されていると判断された場合、ＣＰＵ１０は、再確認表示対象の入力装置６に対応する入力装置オブジェクトＤｏｂｊを、縦方向に静止させて確認済であることを示す入力装置安定情報画面Ｉｄを、モニタ２に表示して（ステップ１５６）、次のステップ１５５に処理を進める。
【０１８８】
例えば、上記ステップ１５６において、ＣＰＵ１０は、図８を用いて説明したようなジャイロセンサ安定再確認画面をモニタ２に表示する。具体的には、上記ステップ１５６で表示するジャイロセンサ安定再確認画面は、図９に示す入力装置安定情報画面Ｉｄｂと同様であり、再確認フラグＲｆｒｇがオンに設定されている入力装置６に対して、入力装置オブジェクトＤｏｂｊが縦方向に静止した状態で表示される（図９に示す入力装置オブジェクトＤｏｂｊｂ）。なお、ジャイロセンサ安定再確認画面を表示中において、再確認フラグＲｆｒｇがオンに設定されている入力装置６のジャイロセンサ９５および９６から出力される角速度が変動することもあるが、当該角速度が変動したとしても入力装置オブジェクトＤｏｂｊは縦方向に静止した状態で表示される。つまり、再確認フラグＲｆｒｇがオンに設定された後であれば、プレイヤが入力装置６を動かしたとしても、当該入力装置６に対応する入力装置オブジェクトＤｏｂｊが回転することはない。
【０１８９】
なお、上記ステップ８０〜ステップ８３の処理から明らかなように、ゲーム処理中にジャイロセンサ９５および９６の安定を再確認する操作が行われた場合であっても、当該操作に応じて安定フラグＳｆｒｇをオンからオフに変更することをしていない。つまり、上記ジャイロセンサ安定再確認画面が表示されるためには、ゲームに使用されている入力装置６の安定フラグＳｆｒｇがオンに設定されている場合でもよく、プレイヤの意向に応じたジャイロセンサ９５および９６の安定再確認となる。また、プレイヤが安定再確認を積極的に指示した場合でなく、単にゲームを一時停止したという場合であっても一時停止中にジャイロセンサ９５および９６が安定しているかどうかを視認することができ、異常があった場合に発見することができる。したがって、上記ステップ１５４またはステップ１５６で表示される安定再確認画面は、補助的な表示でかまわない。
【０１９０】
例えば、図２１に示すように、上記ステップ１５４またはステップ１５６で表示される安定再確認画面では、プレイヤに入力装置６を安定させるように促す表示（図８に示す要求情報画面Ｉｉ）が表示されない。上記ステップ１５４またはステップ１５６で表示される安定再確認画面では、使用される入力装置６毎にジャイロセンサ９５および９６の安定再確認状態をそれぞれ示す入力装置安定情報画面Ｉｄと、プレイヤのその後の操作を受け付ける複数の選択肢を示す操作ボタンＢｏとが表示される。
【０１９１】
ステップ１５５において、ＣＰＵ１０は、ゲームに使用される全ての入力装置６に対する安定再確認画面表示処理が終了したか否かを判断する。そして、ＣＰＵ１０は、ゲームに使用される全ての入力装置６に対する安定再確認画面表示処理が終了した場合、当該サブルーチンによる処理を終了する。一方、ＣＰＵ１０は、ゲームに使用される何れかの入力装置６に対する安定再確認画面表示処理が終了していない場合、上記ステップ１５１に戻って処理を繰り返す。
【０１９２】
図１３に戻り、上記ステップ８４の処理の後、ＣＰＵ１０は、ゲーム処理に復帰するか否かを判断する（ステップ８５）。例えば、ＣＰＵ１０は、上記ステップ８４で表示される安定再確認画面に表示された操作ボタンＢｏの何れかが選択された場合、当該操作ボタンＢｏが示す選択肢に応じて、ゲーム処理に復帰するか否かを判断する。また、プラスボタン７２ｇが再度押された場合にもゲームに復帰する。そして、ＣＰＵ１０は、ゲーム処理に復帰する場合、次のステップ８６に処理を進める。一方、ＣＰＵ１０は、ゲーム処理に復帰しない場合、現在の安定確認処理を継続するために上記ステップ８３に戻って処理を繰り返す。
【０１９３】
ステップ８６において、ＣＰＵ１０は、ゲームを終了するか否かを判断する。ゲームを終了する条件としては、例えば、上記ステップ６０でゲーム処理されているゲームがゲームオーバーとなる条件が満たされたことや、プレイヤが当該ゲームを終了する操作を行ったこと等がある。ＣＰＵ１０は、ゲームを終了しない場合に上記ステップ６０（図１２）に戻って処理を繰り返し、ゲームを終了する場合に次のステップ８７に処理を進める。
【０１９４】
ステップ８７において、ＣＰＵ１０は、上記ステップ８６で終了したゲームとは異なるゲームに変更して、当該異なるゲームをプレイするか否かを判断する。そして、ＣＰＵ１０は、異なるゲームに変更してプレイする場合、次のステップ８８に処理を進める。一方、ＣＰＵ１０は、プレイするゲームを変更せずにそのまま処理を終了する場合、当該フローチャートによる処理を終了する。例えば、ゲーム装置本体５のメインメモリに読み込まれているゲームプログラムによっては、複数のゲームが可能となっていることがある。具体的には、各種スポーツゲームが可能となったゲームプログラムの場合、スポーツ種目別に異なるゲームが可能となっていることがある。上記ステップ８７においては、このようなメインメモリに読み込まれているゲームプログラムによってプレイが可能となっている複数のゲーム間で、異なるゲームに変更して継続プレイするか否かを判断している。
【０１９５】
ステップ８８において、ＣＰＵ１０は、上記ステップ８７で変更されたゲームがそれまでプレイされていたゲームより、より高い精度の角速度の入力が必要なゲームであるか否かを判断する。そして、ＣＰＵ１０は、より精度が高い角速度が必要なゲームへの変更である場合、次のステップ８９に処理を進める。一方、ＣＰＵ１０は、より精度が高い角速度が不要なゲームへの変更である場合、上記ステップ４１（図１１）に戻って処理を繰り返す。
【０１９６】
ステップ８９において、ＣＰＵ１０は、安定フラグデータＤｄに格納されている安定フラグＳｆｒｇを全てオフに設定する。そして、ＣＰＵ１０は、安定カウンタデータＤｅに格納されている安定カウンタＣを全て０に設定して（ステップ９０）、上記ステップ４１（図１１）に戻って処理を繰り返す。
【０１９７】
例えば、入力装置６を静止した状態に維持して進行するようなゲームがある。具体的には、入力装置６の姿勢や方向に応じて、仮想ゲーム世界における狙いが決定されるようなゲーム（たとえばアーチェリー、弓道等のゲーム）においては、入力装置６を静止した状態に保った姿勢を精確に算出することが必要となる。このようなゲームにおいては、ジャイロセンサ９５および９６の静止時出力に生じている誤差がわずかであっても、ゲーム操作に影響を与えてしまう。例えば、ジャイロセンサ９５および９６の静止時出力にわずかな誤差が生じている場合、プレイヤが入力装置６を静止させていたとしてもわずかな角速度で入力装置６が動いていると判定するため、ゲーム処理においても当該判定に応じた操作が行われてしまう。
【０１９８】
このような場合、実行するゲームが要求する角速度入力の精度レベルに応じて、当該静止時出力（ゼロ点オフセット値ｏｆｓ）を設定することが必要であるため、上記ステップ８９において、一旦全ての安定フラグＳｆｒｇをオフに設定することによって、ゲームに用いられる入力装置６全てに対して安定確認処理が再度行われるようにしている。ここで、必要な角速度入力の精度レベルは、ゲームごとに予め設定されている。そして、必要な角速度入力の精度が相対的に高いゲームにおいては、上述の角速度ｖの一次補正とゼロ点オフセットの補正とにおいて、上限ｓ１から下限ｓ２までの安定範囲を狭くする、連続個数ｃｔの上限を大きくする、定数Ｃを小さくする、等の設定をすることによって、静止していないときの値が反映されにくいような補正が行われる。このように、より精度が高い角速度の入力が必要なゲームを実行する場合、上述したゼロ点オフセット値ｏｆｓをより精確に設定するためにゼロ点オフセット値ｏｆｓがジャイロセンサ９５および９６から出力された角速度データが示す角速度ｖに収束する割合を相対的に小さく設定される。したがって、入力装置６を静止状態に維持したとしても、上記ステップ１０４で算出される角度変化量の値が所定値以内となるまでの時間が長くなるため、結果的に安定確認処理において安定フラグＳｆｒｇがオフからオンに変更されるまでの時間も長くなることになる。
【０１９９】
このように、上述したゲーム処理によれば、ジャイロセンサ９５および９６を静止させることが必要な状況において、ジャイロセンサ９５および９６（入力装置６）が安定していない場合、ジャイロセンサ９５および９６から得られる角速度データに応じて入力装置オブジェクトＤｏｂｊが回転して表示される。したがって、プレイヤは、回転して表示されている入力装置オブジェクトＤｏｂｊやその回転速度を視認することによって、ジャイロセンサ９５および９６が動いていたり、出力に誤差が含まれていたりすることを認識することができる。また、回転速度Ｖは、Ｘ、Ｙ、およびＺ軸周りの角速度の大きさを全て加算した値に基づいて決定されるため、わずかな角速度を生じているためにジャイロセンサ９５および９６（入力装置６）が安定していない場合であっても、その角速度が強調されて画面に現れるため、プレイヤにとってジャイロセンサ９５および９６（入力装置６）が安定していないことがよりわかりやすい表現となる。
【０２００】
ここで、ジャイロセンサ９５および９６のゼロ点オフセット値（静止時出力値）がデバイス固有値に固定されている場合、当該デバイス固有値と現実のジャイロセンサ９５および９６のゼロ点オフセット値（静止時出力値）とに差があるとジャイロセンサ９５および９６（入力装置６）が常に不安定な状態となって、入力装置オブジェクトＤｏｂｊが常に回転して表示されることになり得る。しかしながら、上述した実施形態では、ジャイロセンサ９５および９６から出力された角速度データが示す角速度を、ゼロ点オフセット値（静止時出力値）に基づいてオフセット補正した角速度を取得して処理を行っており、当該ゼロ点オフセット値もジャイロセンサ９５および９６から出力された角速度データが示す角速度に収束するように補正されている。したがって、ゼロ点オフセット値は、電源投入時において上記デバイス固定値に初期設定されていても、ジャイロセンサ９５および９６を静止状態に保つことによって、徐々に現実のゼロ点オフセット値に収束していく。そして、ゼロ点オフセット値の収束に伴ってオフセット補正した角速度も当該ゼロ点オフセット値に収束していくため、結果的に回転速度Ｖや各軸周りの角度変化量が０に近づいていくことになる。そのため、安定フラグＳｆｒｇがオンになっている場合は、既に静止時の出力がゼロ点となる補正が行われたということであり、誤差が補正された状態でゲームを行うことができる。
【０２０１】
なお、上述の実施形態における安定確認処理は、図１１〜図１７に示したフローチャートから明らかなように、ゲーム処理前やゲーム処理中において処理周期毎に繰り返されている。このような処理によって、安定確認画面を表示する前に既に安定フラグＳｆｒｇがオンになっている場合もあり、ゲームをより早く開始することができる。しかしながら、上述の実施形態における安定確認処理は、特定の段階だけでなく、上記フローとは独立して所定の周期で常に行うようにしてもよい。
【０２０２】
なお、上述した実施形態では、一次補正後にオフセット補正された角速度またはオフセット補正のみされた角速度を用いて算出された角度に基づいて安定確認処理や安定再確認処理を行う例を用いたが、これらの補正処理を行う前の角速度データが示す角速度または当該角速度から算出された角度を用いて安定確認処理や安定再確認処理を行ってもかまわない。この場合、ジャイロセンサ９５および９６から出力された角速度データが示す角速度を直接用いて安定確認処理や安定再確認処理をする、または当該角速度から算出された角度を直接用いて安定確認処理や安定再確認処理をすることになるが、ジャイロセンサ９５および９６が静止状態に保たれることによって当該角速度や当該角度がある値に収束するために、やがて安定フラグＳｆｒｇや再確認フラグＳｆｒｇがオンに設定される条件を満たすことになる。そして、安定フラグＳｆｒｇや再確認フラグＳｆｒｇがオンに設定されることに応じて、入力装置オブジェクトＤｏｂｊも縦方向に静止した状態で表示されることになるため、同様の安定確認処理や安定再確認処理が可能となる。そして、上述した補正処理をゲーム処理直前に行えば（すなわち、上記ステップ６０において補正処理を行い、補正処理を行った後の角速度を用いてゲーム処理を行う）、同様のゲーム処理が可能となる。また、上記安定確認処理や安定再確認処理において上述した補正処理を行って、回転速度Ｖや各軸周りの角度変化量を算出してもいいことは言うまでもない。
【０２０３】
また、上述した実施形態では、補正後の角速度ｖを用いて角度ｒが算出され、当該算出された角度ｒを示す角度データを取得する例を用いたが、上述したゲーム処理の途中で角度ｒを算出するステップを追加してもかまわない。例えば、取得した角速度ｖを逐次加算（積分）することによって、入力装置６の初期姿勢からの姿勢の変化量（角度の変化量）を積分結果から算出して、現在の入力装置６の姿勢（角度）を算出するステップを、上記ゲーム処理に追加する。これによって、角度ｒが算出されていなくても、同様の処理が可能となる。
【０２０４】
また、上述した実施形態では、入力装置オブジェクトＤｏｂｊを回転させる速度（回転速度Ｖ）を、Ｘ、Ｙ、およびＺ軸周りの角速度の大きさを全て加算した値に基づいて決定しているが、何れかの軸周りの角速度の大きさを加算対象から外してもかまわない。例えば、入力装置６を用いて行うゲーム処理において、Ｘ、Ｙ、およびＺ軸周りの角速度のうち、当該ゲーム処理に用いない軸周りの角速度がある場合、当該軸周りの角速度を用いずに回転速度Ｖを算出してもかまわない。
【０２０５】
また、上述した実施形態においては、コントローラ７に搭載されている加速度センサ７０１からの３軸方向の加速度信号（Ｘ、Ｙ、およびＺ軸方向加速度データ）や撮像情報演算部７４からの処理結果データを用いていない。したがって、本発明を実現する場合には、加速度センサ７０１や撮像情報演算部７４がコントローラ７に搭載されていなくてもかまわない。また、上述した実施形態においては、コントローラ７に対してジャイロセンサ９５および９６が設けられている角速度検出ユニット９が着脱可能に接続される構成を用いたが、ジャイロセンサ９５および９６は、コントローラ７の内部に設けられてもかまわない。
【０２０６】
また、上述した説明では、据置型のゲーム装置に本願発明を適用した例を説明したが、ジャイロセンサを備えた入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置にも適用することができる。例えば、入力装置のジャイロセンサから出力される角速度データに応じて、情報処理装置が入力装置の姿勢等を算出する等、入力装置に生じる角速度に基づいて様々なゲーム処理をする際のジャイロセンサの安定確認処理に用いることができる。
【０２０７】
また、上述した説明では、コントローラ７（入力装置６）とゲーム装置本体５とが無線通信によって接続された態様を用いたが、コントローラ７とゲーム装置本体５とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ７に接続されたケーブルをゲーム装置本体５の接続端子に接続する。
【０２０８】
また、上述したコントローラ７および角速度検出ユニット９の形状や、操作部７２の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した処理で用いられる係数、判定値、数式、処理順序等は、単なる一例に過ぎず他の値や数式や処理順序であっても、本発明を実現できることは言うまでもない。
【０２０９】
また、本発明のゲームプログラムは、光ディスク４等の外部記憶媒体を通じてゲーム装置本体５に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体５に供給されてもよい。また、ゲームプログラムは、ゲーム装置本体５内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【０２１０】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【０２１１】
本発明に係るゲーム装置およびゲームプログラムは、ジャイロセンサから得られる角速度に基づいたゲーム処理を行うゲームにおいて、ジャイロセンサに生じている誤差を認識しやすくすることができ、入力装置の姿勢や方向等を用いて処理するゲーム等を実行するゲーム装置やゲームプログラムとして有用である。
【符号の説明】
【０２１２】
１…ゲームシステム
２…モニタ
２ａ、７０６…スピーカ
３…ゲーム装置
４…光ディスク
５…ゲーム装置本体
６…入力装置
１０…ＣＰＵ
１１…システムＬＳＩ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１５…ＡＶ−ＩＣ
１６…ＡＶコネクタ
１７…フラッシュメモリ
１８…無線通信モジュール
１９…無線コントローラモジュール
２０…拡張コネクタ
２１…外部メモリカード用コネクタ
２２、２３…アンテナ
２４…電源ボタン
２５…リセットボタン
２６…イジェクトボタン
３１…入出力プロセッサ
３２…ＧＰＵ
３３…ＤＳＰ
３４…ＶＲＡＭ
３５…内部メインメモリ
７…コントローラ
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１、９４…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０４…バイブレータ
７０７…サウンドＩＣ
７０８…アンプ
８…マーカ
９…角速度検出ユニット
９１…ボタン
９２…カバー
９３…プラグ
９５…２軸ジャイロセンサ
９６…１軸ジャイロセンサ
【図１】
2010220950.tif 000003
【図２】
2010220950.tif 000004
【図３】
2010220950.tif 000005
【図４】
2010220950.tif 000006
【図５】
2010220950.tif 000007
【図６】
2010220950.tif 000008
【図７】
2010220950.tif 000009
【図８】
2010220950.tif 000010
【図９】
2010220950.tif 000011
【図１０】
2010220950.tif 000012
【図１１】
2010220950.tif 000013
【図１２】
2010220950.tif 000014
【図１３】
2010220950.tif 000015
【図１４】
2010220950.tif 000016
【図１５】
2010220950.tif 000017
【図１６】
2010220950.tif 000018
【図１７】
2010220950.tif 000019
【図１８】
2010220950.tif 000020
【図１９】
2010220950.tif 000021
【図２０】
2010220950.tif 000022
【図２１】
2010220950.tif 000023