(57)【特許請求の範囲】
【請求項１】
ユーザの重心位置を検出する重心位置検出装置に接続された情報処理装置のコンピュータを、
前記重心位置検出装置からユーザの重心位置を示す重心位置データを逐次取得する重心位置データ取得手段、
前記重心位置データ取得手段によって過去に取得された重心位置データに基づいて、現在までの所定期間におけるユーザの重心位置の変動範囲を検出する変動範囲検出手段、および、
前記変動範囲検出手段によって検出された変動範囲に対する、前記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置の相対位置に基づいて、所定の情報処理を行う情報処理手段、として機能させ、
前記変動範囲検出手段は、前記重心位置データ取得手段によって新たに取得された重心位置データに基づいて、前記変動範囲を更新し、
前記情報処理手段は、前記変動範囲検出手段によって更新された変動範囲に対する前記重心位置の相対位置に基づいて、前記所定の情報処理を行う、情報処理プログラム。
【請求項２】
前記情報処理手段は、前記重心位置データ取得手段によって取得された最新の重心位置データを、前記変動範囲検出手段によって検出された変動範囲に応じて補正する重心位置補正手段を含み、当該重心位置補正手段による補正後の最新の重心位置データに基づいて、前記所定の情報処理を行う、請求項１に記載の情報処理プログラム。
【請求項３】
前記重心位置補正手段は、前記変動範囲検出手段によって検出された前記変動範囲の最小値および最大値が、予め定められた第１の固定値および第２の固定値にそれぞれ変換されるような線形変換関数に基づいて、前記重心位置データ取得手段によって取得された最新の重心位置データを補正する、請求項２に記載の情報処理プログラム。
【請求項４】
前記第１の固定値および第２の固定値が、それぞれ、重心位置データ取得手段によって取得され得る重心位置データの下限値および上限値である、請求項３に記載の情報処理プログラム。
【請求項５】
ユーザの重心位置を検出する重心位置検出装置に接続された情報処理装置のコンピュータを、
前記重心位置検出装置からユーザの重心位置を示す重心位置データを逐次取得する重心位置データ取得手段、
前記重心位置データ取得手段によって過去に取得された重心位置データに基づいて、現在までの所定期間におけるユーザの重心位置の変動範囲を検出する変動範囲検出手段、および、
前記変動範囲検出手段によって検出された変動範囲に対する、前記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置の相対位置に基づいて、所定の情報処理を行う情報処理手段、として機能させ、
前記情報処理手段は、
前記変動範囲検出手段によって検出された変動範囲の大きさが、所定の幅閾値以上か否かを判定する変動幅判定手段を含み、
前記変動範囲の大きさが前記所定の幅閾値以上である場合には、前記相対位置が所定の条件を満たしたときに前記所定の情報処理を行い、
前記変動範囲の大きさが前記所定の幅閾値以上でない場合には、前記相対位置が前記所定の条件を満たしても前記所定の情報処理を行わない、情報処理プログラム。
【請求項６】
ユーザの重心位置を検出する重心位置検出装置に接続された情報処理装置のコンピュータを、
前記重心位置検出装置からユーザの重心位置を示す重心位置データを逐次取得する重心位置データ取得手段、
前記重心位置データ取得手段によって過去に取得された重心位置データに基づいて、現在までの所定期間におけるユーザの重心位置の変動範囲を検出する変動範囲検出手段、および、
前記変動範囲検出手段によって検出された変動範囲に対する、前記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置の相対位置に基づいて、所定の情報処理を行う情報処理手段、として機能させ、
前記情報処理手段は、
前記変動範囲検出手段によって検出された変動範囲の大きさが、所定の幅閾値以上か否かを判定する変動幅判定手段を含み、
前記変動範囲の大きさが前記所定の幅閾値以上である場合には、前記相対位置に基づいて前記所定の情報処理を行い、
前記変動範囲の大きさが前記所定の幅閾値以上でない場合には、前記重心位置データ取得手段によって取得された最新の重心位置データに基づいて前記所定の情報処理を行う、情報処理プログラム。
【請求項７】
ユーザの重心位置を検出する重心位置検出装置に接続された情報処理装置のコンピュータを、
前記重心位置検出装置からユーザの重心位置を示す重心位置データを逐次取得する重心位置データ取得手段、
前記重心位置データ取得手段によって過去に取得された重心位置データに基づいて、現在までの所定期間におけるユーザの重心位置の変動範囲を検出する変動範囲検出手段、および、
前記変動範囲検出手段によって検出された変動範囲に対する、前記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置の相対位置に基づいて、所定の情報処理を行う情報処理手段、として機能させ、
前記情報処理手段は、
前記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置と、その直前に取得された重心位置データが示す重心位置の差が、所定の変化閾値以上か否かを判定する重心移動判定手段を含み、
前記差が前記所定の変化閾値以上である場合には、前記相対位置が所定の条件を満たしたときに前記所定の情報処理を行い、
前記差が前記所定の変化閾値以上でない場合には、前記相対位置が前記所定の条件を満たしても前記所定の情報処理を行わない、情報処理プログラム。
【請求項８】
前記情報処理手段は、前記重心位置データ取得手段によって取得された最新の重心位置データと、所定の１以上の判定閾値とを比較する閾値判定手段を含み、当該比較結果に応じて前記所定の情報処理を行う、請求項１に記載の情報処理プログラム。
【請求項９】
前記情報処理手段は、前記変動範囲検出手段によって検出された変動範囲に応じて前記所定の１以上の判定閾値を補正する判定閾値補正手段を含む、請求項８に記載の情報処理プログラム。
【請求項１０】
前記判定閾値補正手段は、予め定められた第１の固定値および第２の固定値が、前記変動範囲検出手段によって検出された前記変動範囲の最小値および最大値にそれぞれ変換されるような線形変換関数に基づいて、前記所定の１以上の判定閾値を補正する、請求項９に記載の情報処理プログラム。
【請求項１１】
前記第１の固定値および第２の固定値が、それぞれ、重心位置データ取得手段によって取得され得る重心位置データの下限値および上限値である、請求項１０に記載の情報処理プログラム。
【請求項１２】
前記情報処理手段は、前記変動範囲検出手段によって検出された前記変動範囲の中央位置を算出する中央位置算出手段を含み、当該中央位置に対する、前記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置の相対位置に基づいて、前記所定の情報処理を行う、請求項１に記載の情報処理プログラム。
【請求項１３】
前記変動範囲検出手段は、直近の一定期間に取得された重心位置データの最小値〜最大値の範囲を、ユーザの重心位置の変動範囲として検出する、請求項１に記載の情報処理プログラム。
【請求項１４】
前記変動範囲検出手段は、過去に取得された重心位置データの最新の極小値〜最新の極大値の範囲を、ユーザの重心位置の変動範囲として検出する、請求項１に記載の情報処理プログラム。
【請求項１５】
前記変動範囲検出手段は、当該情報処理プログラムの実行が開始されてから現在までの期間に取得された重心位置データの最小値〜最大値の範囲を、ユーザの重心位置の変動範囲として検出する、請求項１に記載の情報処理プログラム。
【請求項１６】
前記情報処理手段は、
前記相対位置に基づいてユーザが足踏みを行っているか否かを判定する手段と、
前記判定結果に基づいて仮想空間におけるオブジェクトの移動制御を行う手段と、
前記オブジェクトの画像を生成して表示画面に表示する手段とを含む、請求項１に記載の情報処理プログラム。
【請求項１７】
ユーザの重心位置を検出する重心位置検出装置からユーザの重心位置を示す重心位置データを逐次取得する重心位置データ取得手段、
前記重心位置データ取得手段によって過去に取得された重心位置データに基づいて、現在までの所定期間におけるユーザの重心位置の変動範囲を検出する変動範囲検出手段、および、
前記変動範囲検出手段によって検出された変動範囲に対する、前記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置の相対位置に基づいて、所定の情報処理を行う情報処理手段、を備え、
前記変動範囲検出手段は、前記重心位置データ取得手段によって新たに取得された重心位置データに基づいて、前記変動範囲を更新し、
前記情報処理手段は、前記変動範囲検出手段によって更新された変動範囲に対する前記重心位置の相対位置に基づいて、前記所定の情報処理を行う、情報処理装置。
【請求項１８】
ユーザの重心位置を検出する重心位置検出装置からユーザの重心位置を示す重心位置データを逐次取得する重心位置データ取得ステップ、
前記重心位置データ取得ステップによって過去に取得された重心位置データに基づいて、現在までの所定期間におけるユーザの重心位置の変動範囲を検出する変動範囲検出ステップ、および、
前記変動範囲検出ステップによって検出された変動範囲に対する、前記重心位置データ取得ステップによって取得された最新の重心位置データが示す重心位置の相対位置に基づいて、所定の情報処理を行う情報処理ステップを含み、
前記変動範囲検出ステップは、前記重心位置データ取得ステップによって新たに取得された重心位置データに基づいて、前記変動範囲を更新し、
前記情報処理ステップは、前記変動範囲検出ステップによって更新された変動範囲に対する前記重心位置の相対位置に基づいて、前記所定の情報処理を行う、情報処理方法。
【請求項１９】
ユーザの重心位置を検出する重心位置検出装置からユーザの重心位置を示す重心位置データを逐次取得する重心位置データ取得手段、
前記重心位置データ取得手段によって過去に取得された重心位置データに基づいて、現在までの所定期間におけるユーザの重心位置の変動範囲を検出する変動範囲検出手段、および、
前記変動範囲検出手段によって検出された変動範囲に対する、前記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置の相対位置に基づいて、所定の情報処理を行う情報処理手段、を備え、
前記変動範囲検出手段は、前記重心位置データ取得手段によって新たに取得された重心位置データに基づいて、前記変動範囲を更新し、
前記情報処理手段は、前記変動範囲検出手段によって更新された変動範囲に対する前記重心位置の相対位置に基づいて、前記所定の情報処理を行う、情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム、情報処理装置、情報処理方法、および、情報処理システムに関し、特に例えば、ユーザの重心位置に基づいて所定の処理を行う情報処理プログラム、情報処理装置、情報処理方法、および、情報処理システムに関する。
【背景技術】
【０００２】
従来、ユーザの重心位置に基づいて画面に表示されているキャラクタを移動させる情報処理プログラムが知られている（例えば、特許文献１参照）。この情報処理プログラムでは、所定のニュートラルエリアを設定し、重心位置がニュートラルエリアから出た場合にキャラクタの移動が開始され、重心位置がニュートラルエリアから出ていない場合にはキャラクタは移動しないようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３３４０８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載された情報処理プログラムにおいては、ユーザの重心位置は個々に異なる可能性があるため、ユーザがキャラクタを移動させたいのに重心位置が所定のニュートラルエリアから出ないためにキャラクタが移動しない場合や、ユーザがキャラクタを移動させたくないのに重心位置が所定のニュートラルエリアから出るためにキャラクタが移動してしまう場合があり、ユーザの意図通りにキャラクタを移動させることができず、ユーザにとって良好な操作感を得られないという問題があった。
【０００５】
ゆえに、本発明の目的は、ユーザの重心位置に基づいて所定の処理を行う情報処理プログラム、情報処理装置、情報処理方法、および、情報処理システムにおいて、ユーザの操作感を向上させることである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は以下の構成を採用した。
【０００７】
本発明の情報処理プログラムは、ユーザの重心位置を検出する重心位置検出装置に接続された情報処理装置のコンピュータを、重心位置データ取得手段、変動範囲検出手段および情報処理手段として機能させる。
上記重心位置データ取得手段は、上記重心位置検出装置からユーザの重心位置を示す重心位置データを逐次取得する。
上記変動範囲検出手段は、上記重心位置データ取得手段によって過去に取得された重心位置データに基づいて、現在までの所定期間におけるユーザの重心位置の変動範囲を検出する。
上記情報処理手段は、上記変動範囲検出手段によって検出された変動範囲に対する、上記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置の相対位置に基づいて、所定の情報処理を行う。
【０００８】
「上記変動範囲検出手段によって検出された変動範囲に対する、上記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置の相対位置」とは、例えば、上記変動範囲検出手段によって検出された変動範囲における所定の基準位置（例えば、当該変動範囲の最小値、最大値、中央位置など）に対する、最新の重心位置データが示す重心位置の相対位置であってもよい。また例えば、上記変動範囲検出手段によって検出された変動範囲の大きさを１００％としたときに、最新の重心位置データが示す重心位置が、変動範囲における所定の基準位置（例えば、最小値、最大値、中央位置）から何パーセントずれた位置に位置するかを示す情報であってもよい。これにより、過去の重心位置による変動範囲を基準にして、この変動範囲に対する最新の重心位置の相対位置に基づいて情報処理を行うため、ユーザ固有の重心位置の傾向を情報処理に反映させることができる。したがって、ユーザの操作感を向上させることができる。
【０００９】
なお、上記情報処理プログラムは、上記重心位置データ取得手段によって取得された重心位置データを記憶領域に記憶する記憶制御手段として上記コンピュータをさらに機能させてもよい。
【００１０】
また、上記情報処理手段は、上記重心位置データ取得手段によって取得された最新の重心位置データを、上記変動範囲検出手段によって検出された変動範囲に応じて補正する重心位置補正手段を含み、当該重心位置補正手段による補正後の最新の重心位置データに基づいて、上記所定の情報処理を行ってもよい。
【００１１】
また、上記重心位置補正手段は、上記変動範囲検出手段によって検出された上記変動範囲の最小値および最大値が、予め定められた第１の固定値および第２の固定値にそれぞれ変換されるような線形変換関数に基づいて、上記重心位置データ取得手段によって取得された最新の重心位置データを補正してもよい。このように重心位置を補正することにより、重心位置の変動範囲に応じて重心位置が正規化されるので、重心位置の変動範囲が所望位置からずれている場合や、重心位置の変動範囲の大きさが所望の大きさよりも小さい場合であっても、重心位置に応じた処理を適切に行うことができる。
【００１２】
また、上記第１の固定値および第２の固定値が、それぞれ、重心位置データ取得手段によって取得され得る重心位置データの下限値および上限値であってもよい。
【００１３】
また、上記情報処理手段は、上記変動範囲検出手段によって検出された変動範囲の大きさが、所定の幅閾値以上か否かを判定する変動幅判定手段を含み、上記変動範囲の大きさが上記所定の幅閾値以上である場合には、上記相対位置が所定の条件を満たしたときに上記所定の情報処理を行い、上記変動範囲の大きさが上記所定の幅閾値以上でない場合には、上記相対位置が上記所定の条件を満たしても上記所定の情報処理を行わないようにしてもよい。これにより、重心位置の変動範囲が小さいときに発生し得る誤判定を無くすことができる。
【００１４】
また、上記情報処理手段は、上記変動範囲検出手段によって検出された変動範囲の大きさが、所定の幅閾値以上か否かを判定する変動幅判定手段とを含み、上記変動範囲の大きさが上記所定の幅閾値以上である場合には、上記相対位置に基づいて上記所定の情報処理を行い、上記変動範囲の大きさが上記所定の幅閾値以上でない場合には、上記重心位置データ取得手段によって取得された最新の重心位置データに基づいて上記所定の情報処理を行ってもよい。これにより、重心位置の変動範囲が小さいときに発生し得る誤判定を無くすとともに、重心位置が緩やかに変化する場合であっても重心位置に応じた処理を適切に行うことができる。
【００１５】
また、上記情報処理手段は、上記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置と、その直前に取得された重心位置データが示す重心位置の差が、所定の変化閾値以上か否かを判定する重心移動判定手段を含み、上記差が上記所定の変化閾値以上である場合には、上記相対位置が所定の条件を満たしたときに上記所定の情報処理を行い、上記差が上記所定の変化閾値以上でない場合には、上記相対位置が上記所定の条件を満たしても上記所定の情報処理を行わないようにしてもよい。これにより、重心位置の変動が停止したときに発生し得る誤判定を無くすことができる。
【００１６】
また、上記情報処理手段は、上記重心位置データ取得手段によって取得された最新の重心位置データと、所定の１以上の判定閾値とを比較する閾値判定手段を含み、当該比較結果に応じて上記所定の情報処理を行ってもよい。
【００１７】
また、上記情報処理手段は、上記変動範囲検出手段によって検出された変動範囲に応じて上記所定の１以上の判定閾値を補正する判定閾値補正手段を含んでもよい。
【００１８】
また、上記判定閾値補正手段は、予め定められた第１の固定値および第２の固定値が、上記変動範囲検出手段によって検出された上記変動範囲の最小値および最大値にそれぞれ変換されるような線形変換関数に基づいて、上記所定の１以上の判定閾値を補正してもよい。このように判定閾値を補正することにより、重心位置の変動範囲に応じて重心位置が正規化されるのと実質的に同じ効果が得られるので、重心位置の変動範囲が所望位置からずれている場合や、重心位置の変動範囲の大きさが所望の大きさよりも小さい場合であっても、重心位置に応じた処理を適切に行うことができる。
【００１９】
また、上記第１の固定値および第２の固定値が、それぞれ、重心位置データ取得手段によって取得され得る重心位置データの下限値および上限値であってもよい。
【００２０】
また、上記情報処理手段は、上記変動範囲検出手段によって検出された上記変動範囲の中央位置を算出する中央位置算出手段を含み、当該中央位置に対する、上記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置の相対位置に基づいて、上記所定の情報処理を行ってもよい。これにより、重心位置の変動範囲が所望位置からずれている場合であっても、重心位置に応じた処理を適切に行うことができる。
【００２１】
また、上記変動範囲検出手段は、直近の一定期間に取得された重心位置データの最小値〜最大値の範囲を、ユーザの重心位置の変動範囲として検出してもよい。
【００２２】
また、上記変動範囲検出手段は、過去に取得された重心位置データの最新の極小値〜最新の極大値の範囲を、ユーザの重心位置の変動範囲として検出してもよい。
【００２３】
また、上記変動範囲検出手段は、上記情報処理プログラムの実行が開始されてから現在までの期間に取得された重心位置データの最小値〜最大値の範囲を、ユーザの重心位置の変動範囲として検出してもよい。
【００２４】
また、上記情報処理手段は、上記相対位置に基づいてユーザが足踏みを行っているか否かを判定する手段と、上記判定結果に基づいて仮想空間におけるオブジェクトの移動制御を行う手段と、上記オブジェクトの画像を生成して表示画面に表示する手段とを含んでもよい。
【００２５】
なお、上記情報処理プログラムは、コンピュータ読み取り可能な記憶媒体（例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性の半導体メモリカード、ＲＯＭなど）に格納されてもよい。
【００２６】
本発明の情報処理装置は、重心位置データ取得手段、変動範囲検出手段および情報処理手段を備える。
上記重心位置データ取得手段は、ユーザの重心位置を検出する重心位置検出装置からユーザの重心位置を示す重心位置データを逐次取得する。
上記変動範囲検出手段は、上記重心位置データ取得手段によって過去に取得された重心位置データに基づいて、現在までの所定期間におけるユーザの重心位置の変動範囲を検出する。
上記情報処理手段は、上記変動範囲検出手段によって検出された変動範囲に対する、上記重心位置データ取得手段によって取得された最新の重心位置データが示す重心位置の相対位置に基づいて、所定の情報処理を行う。
また、本発明は、上記各手段で行われる動作を含む情報処理方法や、上記各手段を備える情報処理システムの形態で実施されてもよい。
【発明の効果】
【００２７】
本発明によれば、ユーザの重心位置に基づいて所定の処理を行う情報処理プログラムおよび情報処理装置において、ユーザの操作感を向上させることができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態のゲームシステムを示す図
【図２】ゲームシステムの電気的な構成の一例を示すブロック図
【図３】荷重コントローラを示す斜視図
【図４】荷重コントローラの図３のＶＩ−ＶＩ断面を示す図
【図５】荷重コントローラの電気的な構成の一例を示すブロック図
【図６】コントローラおよび荷重コントローラを用いてゲームプレイするときの状態を概説する図
【図７】ビデオゲームのゲーム画像例
【図８】荷重コントローラからの信号に基づいて計算される重心位置の一例
【図９】ＳＴ座標空間に設定する領域の一例
【図１０】第１の入力判定処理を説明する図
【図１１】重心位置の遷移の一例
【図１２】重心位置の遷移の一例
【図１３】第２の入力判定処理を説明する図
【図１４】補正重心位置の計算方法を示す図
【図１５】重心位置の遷移の一例
【図１６】重心位置の遷移の一例
【図１７】重心位置の遷移の一例
【図１８】ビデオゲームの実行時の外部メインメモリのメモリマップ
【図１９Ａ】ビデオゲームの実行時のＣＰＵの処理の流れを示すフローチャート
【図１９Ｂ】ビデオゲームの実行時のＣＰＵの処理の流れを示すフローチャート
【図２０】第２の入力判定処理の変形例を説明する図
【図２１】第２の入力判定処理の変形例を説明する図
【発明を実施するための形態】
【００２９】
以下、本発明の実施形態について、図面を参照しながら説明する。
【００３０】
（ゲームシステム）
まず、本実施形態で利用されるゲームシステムについて説明する。図１において、ゲームシステム１０は、ビデオゲーム装置（以下、単に「ゲーム装置」という。）１２、コントローラ２２および荷重コントローラ３６を含む。なお、図示は省略するが、この実施例のゲーム装置１２は、最大４つのコントローラ（２２，３６）と通信可能に設計されている。また、ゲーム装置１２と各コントローラ（２２，３６）とは、無線によって接続される。たとえば、無線通信は、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格に従って実行されるが、赤外線や無線ＬＡＮなど他の規格に従って実行されてもよい。
【００３１】
ゲーム装置１２は、略直方体のハウジング１４を含み、ハウジング１４の前面にはディスクスロット１６が設けられる。ディスクスロット１６から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク１８が挿入されて、ハウジング１４内のディスクドライブ５４（図２参照）に装着される。ディスクスロット１６の周囲には、ＬＥＤと導光板が配置され、さまざまな処理に応答させて点灯させることが可能である。
【００３２】
また、ゲーム装置１２のハウジング１４の前面であり、その上部には、電源ボタン２０ａおよびリセットボタン２０ｂが設けられ、その下部には、イジェクトボタン２０ｃが設けられる。さらに、リセットボタン２０ｂとイジェクトボタン２０ｃとの間であり、ディスクスロット１６の近傍には、外部メモリカード用コネクタカバー２８が設けられる。この外部メモリカード用コネクタカバー２８の内側には、外部メモリカード用コネクタ６２（図２参照）が設けられ、図示しない外部メモリカード（以下、単に「メモリカード」という。）が挿入される。メモリカードは、光ディスク１８から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（ゲームの結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置１２の内部に設けられるフラッシュメモリ４４（図２参照）のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。
【００３３】
なお、メモリカードとしては、汎用のＳＤカードを用いることができるが、メモリスティックやマルチメディアカード（登録商標）のような他の汎用のメモリカードを用いることもできる。
【００３４】
ゲーム装置１２のハウジング１４の後面には、ＡＶコネクタ５８（図２参照）が設けられ、そのＡＶコネクタ５８を用いて、ＡＶケーブル３２ａを通してゲーム装置１２にモニタ３４およびスピーカ３４ａを接続する。このモニタ３４およびスピーカ３４ａは典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２ａは、ゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ビデオゲームのゲーム画像が表示され、左右のスピーカ３４ａからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ３４の周辺（この実施例では、モニタ３４の上側）には、２つの赤外ＬＥＤ（マーカ）３４０ｍ，３４０ｎを備えるマーカ部３４ｂが設けられる。このマーカ部３４ｂは、電源ケーブル３２ｂを通してゲーム装置１２に接続される。したがって、マーカ部３４ｂには、ゲーム装置１２から電源が供給される。これによって、マーカ３４０ｍ，３４０ｎは発光し、それぞれモニタ３４の前方に向けて赤外光を出力する。
【００３５】
なお、ゲーム装置１２の電源は、一般的なＡＣアダプタ（図示せず）によって与えられる。ＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置１２は、家庭用電源（商用電源）を、駆動に適した低いＤＣ電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【００３６】
このゲームシステム１０において、ユーザ（以下、プレイヤとも言う）がゲーム（またはゲームに限らず、他のアプリケーション）をプレイするために、ユーザはまずゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）のプログラムを記録している適宜の光ディスク１８を選択し、その光ディスク１８をゲーム装置１２のディスクドライブ５４にローディングする。応じて、ゲーム装置１２がその光ディスク１８に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置１２に入力を与えるためにコントローラ２２を操作する。たとえば、入力手段２６のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、コントローラ２２には、３軸方向の加速度を検出する加速度センサや、マーカ３４０ｍ，３４０ｎが発する赤外光を撮像する撮像手段が設けられている。これらによって得られた情報をコントローラ２２からゲーム装置１２に送信することによって、入力手段２６に対する操作以外にも、コントローラ２２自体を動かすことによって、動画オブジェクト（プレイヤオブジェクト）を異なる方向に移動させ、または３Ｄのゲーム世界におけるユーザの視点（カメラ位置）を変化させることができる。
【００３７】
図２はゲームシステム１０の電気的な構成を示すブロック図である。図示は省略するが、ハウジング１４内の各コンポーネントは、プリント基板に実装される。図２に示すように、ゲーム装置１２には、ＣＰＵ４０が設けられる。このＣＰＵ４０は、ゲームプロセッサとして機能する。このＣＰＵ４０には、システムＬＳＩ４２が接続される。このシステムＬＳＩ４２には、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８、ディスクドライブ５４およびＡＶＩＣ５６が接続される。
【００３８】
外部メインメモリ４６は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりし、ＣＰＵ４０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ４８は、いわゆるブートＲＯＭであり、ゲーム装置１２の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ５４は、光ディスク１８からプログラムデータやテクスチャデータ等を読み出し、ＣＰＵ４０の制御の下で、後述する内部メインメモリ４２ｅまたは外部メインメモリ４６に書き込む。
【００３９】
システムＬＳＩ４２には、入出力プロセッサ（Ｉ／Ｏプロセッサ）４２ａ、ＧＰＵ(Graphics  Processor  Unit)４２ｂ，ＤＳＰ(Digital  Signal  Processor)４２ｃ，ＶＲＡＭ４２ｄおよび内部メインメモリ４２ｅが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。
【００４０】
入出力プロセッサ４２ａは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後で詳細に説明する。
【００４１】
ＧＰＵ４２ｂは、描画手段の一部を形成し、ＣＰＵ４０からのグラフィクスコマンド（作画命令）を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、ＣＰＵ４０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ４２ｂに与える。
【００４２】
図示は省略するが、上述したように、ＧＰＵ４２ｂにはＶＲＡＭ４２ｄが接続される。ＧＰＵ４２ｂが作画コマンドを実行するにあたって必要なデータ（画像データ：ポリゴンデータやテクスチャデータなどのデータ）は、ＧＰＵ４２ｂがＶＲＡＭ４２ｄにアクセスして取得する。なお、ＣＰＵ４０は、描画に必要な画像データを、ＧＰＵ４２ｂを介してＶＲＡＭ４２ｄに書き込む。ＧＰＵ４２ｂは、ＶＲＡＭ４２ｄにアクセスして描画のためのゲーム画像データを作成する。
【００４３】
なお、この実施例では、ＧＰＵ４２ｂがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、ＧＰＵ４２ｂは当該任意のアプリケーションについての画像データを生成する。
【００４４】
また、ＤＳＰ４２ｃは、オーディオプロセッサとして機能し、内部メインメモリ４２ｅや外部メインメモリ４６に記憶されるサウンドデータや音波形（音色）データを用いて、スピーカ３４ａから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【００４５】
上述のように生成されたゲーム画像データおよびオーディオデータは、ＡＶＩＣ５６によって読み出され、ＡＶコネクタ５８を介してモニタ３４およびスピーカ３４ａに出力される。したがって、ゲーム画面がモニタ３４に表示され、ゲームに必要な音（音楽）がスピーカ３４ａから出力される。
【００４６】
また、入出力プロセッサ４２ａには、フラッシュメモリ４４、無線通信モジュール５０および無線コントローラモジュール５２が接続されるとともに、拡張コネクタ６０および外部メモリカード用コネクタ６２が接続される。また、無線通信モジュール５０にはアンテナ５０ａが接続され、無線コントローラモジュール５２にはアンテナ５２ａが接続される。
【００４７】
入出力プロセッサ４２ａは、無線通信モジュール５０を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ４２ａは、定期的にフラッシュメモリ４４にアクセスし、ネットワークへ送信する必要があるデータ（送信データとする）の有無を検出し、当該送信データが有る場合には、無線通信モジュール５０およびアンテナ５０ａを介してネットワークに送信する。また、入出力プロセッサ４２ａは、他のゲーム装置から送信されるデータ（受信データとする）を、ネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、受信データをフラッシュメモリ４４に記憶する。ただし、一定の場合には、受信データをそのまま破棄する。さらに、入出力プロセッサ４２ａは、ダウンロードサーバからダウンロードしたデータ（ダウンロードデータとする）をネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、ダウンロードデータをフラッシュメモリ４４に記憶する。
【００４８】
また、入出力プロセッサ４２ａは、コントローラ２２や荷重コントローラ３６から送信される入力データをアンテナ５２ａおよび無線コントローラモジュール５２を介して受信し、内部メインメモリ４２ｅまたは外部メインメモリ４６のバッファ領域に記憶（一時記憶）する。入力データは、ＣＰＵ４０のゲーム処理によって利用された後、バッファ領域から消去される。
【００４９】
なお、この実施例では、上述したように、無線コントローラモジュール５２は、Ｂｌｕｅｔｏｏｔｈ規格にしたがってコントローラ２２や荷重コントローラ３６との間で通信を行う。
【００５０】
また、図面の都合上、図２では、コントローラ２２と荷重コントローラ３６とをまとめて記載してある。
【００５１】
さらに、入出力プロセッサ４２ａには、拡張コネクタ６０および外部メモリカード用コネクタ６２が接続される。拡張コネクタ６０は、ＵＳＢやＳＣＳＩのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ６０に有線ＬＡＮアダプタを接続し、無線通信モジュール５０に代えて当該有線ＬＡＮを利用することもできる。外部メモリカード用コネクタ６２には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ４２ａは、拡張コネクタ６０や外部メモリカード用コネクタ６２を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００５２】
詳細な説明は省略するが、図１にも示したように、ゲーム装置１２（ハウジング１４）には、電源ボタン２０ａ，リセットボタン２０ｂおよびイジェクトボタン２０ｃが設けられる。電源ボタン２０ａは、システムＬＳＩ４２に接続される。この電源ボタン２０ａがオンされると、ゲーム装置１２の各コンポーネントに図示しないＡＣアダプタを経て電源が供給され、システムＬＳＩ４２は、通常の通電状態となるモード（通常モードと呼ぶこととする）を設定する。一方、電源ボタン２０ａがオフされると、ゲーム装置１２の一部のコンポーネントのみに電源が供給され、システムＬＳＩ４２は、消費電力を必要最低限に抑えるモード（以下、「スタンバイモード」という。）を設定する。この実施例では、スタンバイモードが設定された場合には、システムＬＳＩ４２は、入出力プロセッサ４２ａ、フラッシュメモリ４４、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８および無線通信モジュール５０、無線コントローラモジュール５２以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、このスタンバイモードは、ＣＰＵ４０によってアプリケーションの実行が行われないモードである。
【００５３】
なお、システムＬＳＩ４２には、スタンバイモードにおいても電源が供給されるが、ＧＰＵ４２ｂ、ＤＳＰ４２ｃおよびＶＲＡＭ４２ｄへのクロックの供給を停止することにより、これらを駆動させないようにして、消費電力を低減するようにしてある。
【００５４】
また、図示は省略するが、ゲーム装置１２のハウジング１４内部には、ＣＰＵ４０やシステムＬＳＩ４２などのＩＣの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【００５５】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン２０ａがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【００５６】
また、通常モードとスタンバイモードの切り替えは、コントローラ２２の電源スイッチのオン／オフの切り替えによっても遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール５２ａへの電源供給を行わない設定にしてもよい。
【００５７】
リセットボタン２０ｂもまた、システムＬＳＩ４２に接続される。リセットボタン２０ｂが押されると、システムＬＳＩ４２は、ゲーム装置１２の起動プログラムを再起動する。イジェクトボタン２０ｃは、ディスクドライブ５４に接続される。イジェクトボタン２０ｃが押されると、ディスクドライブ５４から光ディスク１８が排出される。
【００５８】
（荷重コントローラ）
図３は図１に示した荷重コントローラ３６の外観を示す斜視図である。図３に示すように、荷重コントローラ３６は、プレイヤがその上に乗る（プレイヤの足を乗せる）台３６ａ、および台３６ａにかかる荷重を検出するための少なくとも４つの荷重センサ３６ｂを備える。なお、各荷重センサ３６ｂは台３６ａに内包されており（図５参照）、図３においてはその配置が点線で示されている。
【００５９】
台３６ａは、略直方体に形成されており、上面視で略長方形状である。たとえば長方形の短辺が３０ｃｍ程度に設定され、その長辺が５０ｃｍ程度に設定される。プレイヤが乗る台３６ａの上面は平坦にされる。台３６ａの４隅の側面は、部分的に円柱状に張り出すように形成されている。
【００６０】
この台３６ａにおいて、４つの荷重センサ３６ｂは、所定の間隔を置いて配置される。この実施例では、４つの荷重センサ３６ｂは、台３６ａの周縁部に、具体的には４隅にそれぞれ配置される。荷重センサ３６ｂの間隔は、台３６ａに対するプレイヤの荷重のかけ方によるゲーム操作の意図をより精度良く検出できるように適宜な値に設定される。
【００６１】
図４は、図３に示した荷重コントローラ３６のVI−VI断面図を示すとともに、荷重センサ３６ｂの配置された隅の部分が拡大表示されている。この図４から分かるように、台３６ａは、プレイヤが乗るための支持板３６０と脚３６２を含む。脚３６２は、荷重センサ３６ｂが配置される箇所に設けられる。この実施例では４つの荷重センサ３６ｂが４隅に配置されるので、４つの脚３６２が４隅に設けられる。脚３６２は、たとえばプラスチック成型によって略有底円筒状に形成されており、荷重センサ３６ｂは、脚３６２内の底面に設けられた球面部品３６２ａ上に配置される。支持板３６０は、この荷重センサ３６ｂを介して脚３６２に支持される。
【００６２】
支持板３６０は、上面と側面上部とを形成する上層板３６０ａ、下面と側面下部とを形成する下層板３６０ｂ、および上層板３６０ａと下層板３６０ｂとの間に設けられる中層板３６０ｃを含む。上層板３６０ａと下層板３６０ｂとは、たとえばプラスチック成型により形成されており、接着等により一体化される。中層板３６０ｃは、たとえば１枚の金属板のプレス成型により形成されている。この中層板３６０ｃが、４つの荷重センサ３６ｂの上に固定される。上層板３６０ａは、その下面に格子状のリブ（図示しない）を有しており、当該リブを介して中層板３６０ｃに支持されている。したがって、台３６ａにプレイヤが乗ったときには、その荷重は、支持板３６０、荷重センサ３６ｂおよび脚３６２を伝達する。図４に矢印で示したように、入力される荷重によって生じた床からの反作用は、脚３６２から、球面部品３６２ａ、荷重センサ３６ｂ、中層板３６０ｃを介して、上層板３６０ａに伝達する。
【００６３】
荷重センサ３６ｂは、たとえば歪ゲージ（歪センサ）式ロードセルであり、入力された荷重を電気信号に変換する荷重変換器である。荷重センサ３６ｂでは、荷重入力に応じて、起歪体３７０ａが変形して歪が生じる。この歪が、起歪体３７０ａに貼り付けられた歪センサ３７０ｂによって、電気抵抗の変化に変換され、さらに電圧変化に変換される。したがって、荷重センサ３６ｂは、入力荷重を示す電圧信号を出力端子から出力する。
【００６４】
なお、荷重センサ３６ｂは、音叉振動式、弦振動式、静電容量式、圧電式、磁歪式、またはジャイロ式のような他の方式の荷重センサであってもよい。
【００６５】
図３に戻って、荷重コントローラ３６には、さらに、電源ボタン３６ｃが設けられる。この電源ボタン３６ｃがオンされると、荷重コントローラ３６の各回路コンポーネント（図５参照）に電源が供給される。ただし、荷重コントローラ３６は、ゲーム装置１２からの指示に従ってオンされる場合もある。また、荷重コントローラ３６は、プレイヤが乗っていない状態が一定時間（たとえば、３０秒）以上継続すると、電源がオフされる。ただし、荷重コントローラ３６が起動されている状態で、電源ボタン３６ｃをオンしたときに、電源がオフされてもよい。
【００６６】
図５のブロック図には、荷重コントローラ３６の電気的な構成の一例が示される。なお、この図５では、信号および通信の流れは実線矢印で示される。破線矢印は、電源の供給を示している。
【００６７】
荷重コントローラ３６は、その動作を制御するためのマイクロコンピュータ（マイコン）１００を含む。マイコン１００は図示しないＣＰＵ、ＲＯＭおよびＲＡＭ等を含み、ＣＰＵはＲＯＭに記憶されたプログラムに従って荷重コントローラ３６の動作を制御する。
【００６８】
マイコン１００には、電源ボタン３６ｃ、ＡＤコンバータ１０２、ＤＣ−ＤＣコンバータ１０４および無線モジュール１０６が接続される。さらに、無線モジュール１０６には、アンテナ１０６ａが接続される。４つの荷重センサ３６ｂは、それぞれ、増幅器１０８を介してＡＤコンバータ１０２に接続される。
【００６９】
また、荷重コントローラ３６には電源供給のために電池１１０が収容されている。他の実施例では、電池に代えてＡＣアダプタを接続し、商用電源を供給するようにしてもよい。かかる場合には、ＤＣ−ＤＣコンバータに代えて、交流を直流に変換し、直流電圧を降圧および整流する電源回路を設ける必要がある。この実施例では、マイコン１００および無線モジュール１０６への電源の供給は、電池から直接的に行われる。つまり、マイコン１００内部の一部のコンポーネント（ＣＰＵ）と無線モジュール１０６とには、常に電源が供給されており、電源ボタン３６ｃがオンされたか否か、ゲーム装置１２から電源オン（荷重検出）のコマンドが送信されたか否かを検出する。一方、荷重センサ３６ｂ、ＡＤコンバータ１０２および増幅器１０８には、電池１１０からの電源がＤＣ−ＤＣコンバータ１０４を介して供給される。ＤＣ−ＤＣコンバータ１０４は、電池１１０からの直流電流の電圧値を異なる電圧値に変換して、荷重センサ３６ｂ、ＡＤコンバータ１０２および増幅器１０８に与える。
【００７０】
これら荷重センサ３６ｂ、ＡＤコンバータ１０２および増幅器１０８への電源供給は、マイコン１００によるＤＣ−ＤＣコンバータ１０４の制御によって、必要に応じて行われるようにしてよい。つまり、マイコン１００は、荷重センサ３６ｂを動作させて荷重を検出する必要があると判断されるときに、ＤＣ−ＤＣコンバータ１０４を制御して、各荷重センサ３６ｂ、ＡＤコンバータ１０２および各増幅器１０８に電源を供給するようにしてよい。
【００７１】
電源が供給されると、各荷重センサ３６ｂは、入力された荷重を示す信号を出力する。当該信号は各増幅器１０８で増幅され、ＡＤコンバータ１０２でアナログ信号からディジタルデータに変換されて、マイコン１００に入力される。各荷重センサ３６ｂの検出値には各荷重センサ３６ｂの識別情報が付与されて、いずれの荷重センサ３６ｂの検出値であるかが識別可能にされる。このようにして、マイコン１００は、同一時刻における４つの荷重センサ３６ｂのそれぞれの荷重検出値を示すデータを取得することができる。
【００７２】
一方、マイコン１００は、荷重センサ３６ｂを動作させる必要がないと判断されるとき、つまり、荷重検出タイミングでないとき、ＤＣ−ＤＣコンバータ１０４を制御して、荷重センサ３６ｂ、ＡＤコンバータ１０２および増幅器１０８への電源の供給を停止する。このように、荷重コントローラ３６では、必要なときにだけ、荷重センサ３６ｂを動作させて荷重の検出を行うことができるので、荷重検出のための電力消費を抑制することができる。
【００７３】
荷重検出の必要なときとは、典型的には、ゲーム装置１２（図１）が荷重データを取得したいときである。たとえば、ゲーム装置１２が荷重情報を必要とするとき、ゲーム装置１２は荷重コントローラ３６に対して荷重取得命令を送信する。マイコン１００は、ゲーム装置１２から荷重取得命令を受信したときに、ＤＣ−ＤＣコンバータ１０４を制御して、荷重センサ３６ｂ等に電源を供給し、荷重を検出する。一方、マイコン１００は、ゲーム装置１２から荷重取得命令を受信していないときには、ＤＣ−ＤＣコンバータ１０４を制御して、電源供給を停止する。
【００７４】
あるいは、マイコン１００は、一定時間ごとに荷重検出タイミングであると判断して、ＤＣ−ＤＣコンバータ１０４を制御するようにしてもよい。このような周期的な荷重検出を行う場合、周期情報は、たとえば、初めにゲーム装置１２から荷重コントローラ３６のマイコン１００に与えられて記憶されてよいし、または、予めマイコン１００に記憶されてよい。
【００７５】
荷重センサ３６ｂからの検出値を示すデータは、荷重コントローラ３６の操作データ（入力データ）として、マイコン１００から無線モジュール１０６およびアンテナ１０６ａを介してゲーム装置１２（図１）に送信される。たとえば、ゲーム装置１２からの命令を受けて荷重検出を行った場合、マイコン１００は、ＡＤコンバータ１０２から荷重センサ３６ｂの検出値データを受信したときに、当該検出値データをゲーム装置１２に送信する。あるいは、マイコン１００は、一定時間ごとに検出値データをゲーム装置１２に送信するようにしてもよい。荷重の検出周期よりも送信周期が長い場合には、送信タイミングまでに検出された複数の検出タイミングの荷重値を含むデータが送信される。
【００７６】
なお、無線モジュール１０６は、ゲーム装置１２の無線コントローラモジュール５２と同じ無線規格（Ｂｌｕｅｔｏｏｔｈ、無線ＬＡＮなど）で通信可能にされる。したがって、ゲーム装置１２のＣＰＵ４０は、無線コントローラモジュール５２等を介して荷重取得命令を荷重コントローラ３６に送信することができる。荷重コントローラ３６のマイコン１００は、無線モジュール１０６およびアンテナ１０６ａを介して、ゲーム装置１２からの命令を受信し、また、各荷重センサ３６ｂの荷重検出値（または荷重算出値）を含む入力データをゲーム装置１２に送信することができる。
【００７７】
たとえば４つの荷重センサ３６ｂで検出される４つの荷重値の単なる合計値に基づいて実行されるようなゲームの場合には、プレイヤは荷重コントローラ３６の４つの荷重センサ３６ｂに対して任意の位置をとることができ、つまり、プレイヤは台３６ａの上の任意の位置に任意の向きで乗ってゲームをプレイすることができる。しかし、ゲームの種類によっては、各荷重センサ３６ｂで検出される荷重値がプレイヤから見ていずれの方向の荷重値であるかを識別して処理を行う必要があり、つまり、荷重コントローラ３６の４つの荷重センサ３６ｂとプレイヤとの位置関係が把握されている必要がある。この場合、たとえば、４つの荷重センサ３６ｂとプレイヤとの位置関係を予め規定しておき、当該所定の位置関係が得られるようにプレイヤが台３６ａ上に乗ることが前提とされてよい。典型的には、台３６ａの中央に乗ったプレイヤの前後左右にそれぞれ荷重センサ３６ｂが２つずつ存在するような位置関係、つまり、プレイヤが荷重コントローラ３６の台３６ａの中央に乗ったとき、プレイヤの中心から右前、左前、右後および左後の方向にそれぞれ荷重センサ３６ｂが存在するような位置関係が規定される。この場合、この実施例では、荷重コントローラ３６の台３６ａが平面視で矩形状に形成されるとともにその矩形の１辺（長辺）に電源ボタン３６ｃが設けられているので、この電源ボタン３６ｃを目印として利用して、プレイヤには電源ボタン３６ｃの設けられた長辺が所定の方向（前、後、左または右）に存在するようにして台３６ａに乗ってもらうことを予め決めておく。このようにすれば、各荷重センサ３６ｂで検出される荷重値は、プレイヤから見て所定の方向（右前、左前、右後および左後）の荷重値となる。したがって、荷重コントローラ３６およびゲーム装置１２は、荷重検出値データに含まれる各荷重センサ３６ｂの識別情報と、予め設定（記憶）された各荷重センサ３６ｂのプレイヤに対する位置ないし方向を示す配置データとに基づいて、各荷重検出値がプレイヤから見ていずれの方向に対応するかを把握することができる。これにより、たとえば前後左右の操作方向のようなプレイヤによるゲーム操作の意図を把握することが可能になる。
【００７８】
なお、各荷重センサ３６ｂのプレイヤに対する配置は予め規定せずに、初期設定やゲーム中の設定などでプレイヤの入力によって配置が設定されるようにしてもよい。たとえば、プレイヤから見て所定の方向（左前、右前、左後または右後など）の部分に乗るようにプレイヤに指示する画面を表示するとともに荷重値を取得することによって、各荷重センサ３６ｂのプレイヤに対する位置関係を特定することができるので、この設定による配置データを生成して記憶するようにしてよい。あるいは、モニタ３４の画面上に、荷重コントローラ３６の配置を選択するための画面を表示して、目印（電源ボタン３６ｃ）がプレイヤから見てどの方向に存在するかをコントローラ２２による入力によって選択してもらい、この選択に応じて各荷重センサ３６ｂの配置データを生成して記憶するようにしてよい。
【００７９】
（ゲームプレイ）
図６は、コントローラ２２および荷重コントローラ３６を用いてゲームプレイするときの状態を概説する図解図である。図６に示すように、ゲームシステム１０でコントローラ２２および荷重コントローラ３６を用いてゲームをプレイする際、プレイヤは、荷重コントローラ３６の上に乗り、一方の手でコントローラ２２を把持する。
【００８０】
なお、図６では、モニタ３４の画面に対して荷重コントローラ３６を縦置き（長辺方向が画面を向くような配置）にしてプレイヤが画面に対して横向きになっている場合を示しているが、画面に対する荷重コントローラ３６の配置やプレイヤの向きはゲームの種類に応じて適宜変更可能であり、たとえば、荷重コントローラ３６を画面に対して横置き（長辺方向が画面に平行になるような配置）にしてプレイヤが画面に対して正面を向くようにしてもよい。
【００８１】
次に、ゲームシステム１０においてビデオゲームを実行する場合のゲーム装置１２の動作について説明する。
【００８２】
なお、本実施形態においてゲームシステム１０において実行されるビデオゲームは、例えば、ゲームシステム１０を用いてユーザが種々の運動（トレーニングやエクササイズ等）を行うことを可能にするためのアプリケーションソフトウェア（運動支援プログラム）によって実現されるものであってもよい。この場合、当該運動支援プログラムを実行するＣＰＵ４０を含むゲーム装置１２は、運動支援装置として機能する。
【００８３】
図７は、ビデオゲームの実行時にモニタ３４の画面に表示されるゲーム画像を示している。当該ビデオゲームでは、コントローラ２２を手に持ったプレイヤが、荷重コントローラ３６上に乗ってゲームをプレイする。
【００８４】
モニタ３４の画面には、プレイヤによって操作されるキャラクタ（オブジェクト）を含む仮想ゲーム空間が表示される。プレイヤが荷重コントローラ３６上で足踏みをする（すなわち、右足での片足立ちと左足での片足立ちを交互に繰り返す）と、それに連動してキャラクタが歩みを進める。より具体的には、プレイヤが荷重コントローラ３６の上で右足で片足立ちをする（すなわち右方向に重心を移動させる）と、キャラクタは右足を踏み込んで歩みを進め、プレイヤが荷重コントローラ３６の上で左足で片足立ちをする（すなわち左方向に重心を移動させる）と、キャラクタは左足を踏み込んで歩みを進める。したがって、プレイヤはあたかも自分が実際に歩行しているような感覚で仮想ゲーム空間のキャラクタを操作することができる。
【００８５】
以下、荷重コントローラ３６からの信号に基づくキャラクタの歩行動作の制御方法の詳細について説明する。
【００８６】
図８は、荷重コントローラ３６からの信号に基づいて検出されるプレイヤの重心位置の一例を示している。プレイヤの重心位置は、Ｓ座標値とＴ座標値で表される。ＳＴ座標空間の原点は、荷重コントローラ３６の台３６ａの中心に対応している。また、Ｓ軸正方向は荷重コントローラ３６の左側端部（電源ボタン３６ｃの設けられた長辺と向かい合うようにして荷重コントローラ３６の後方に立つプレイヤから見た場合の左側端部）から右側端部へ向かう方向に対応し、Ｔ軸正方向は荷重コントローラ３６の後側端部から前側端部へ向かう方向に対応している。
【００８７】
上記のようなプレイヤの重心位置は、荷重コントローラ３６に設けられた４つの荷重センサ３６ｂによってそれぞれ検出される４つの荷重値に基づいて計算される。具体的には、プレイヤから見て電源ボタン３６ｃが後方に位置するようにプレイヤが荷重コントローラ３６の台３６ａの上に乗っていると想定したときに、プレイヤから見て右後方に位置する荷重センサ３６ｂの荷重値をａ、左後方に位置する荷重センサ３６ｂの荷重値をｂ、右前方に位置する荷重センサ３６ｂの荷重値をｃ、左前方に位置する荷重センサ３６ｂの荷重値をｄとした場合、重心のＳ座標（ｓ０）及びＴ座標（ｔ０）は、以下の数式によりそれぞれ算出される。
ｓ０＝（（ａ＋ｃ）−（ｂ＋ｄ））×ｍ
ｔ０＝（（ｃ＋ｄ）−（ａ＋ｂ））×ｎ
ここで、ｍ及びｎは定数であり、−１≦ｓ０≦１、−１≦ｔ０≦１である。このように、ｓ０は、プレイヤから見て左側に位置する２つの荷重センサ３６ｂの荷重値の和と、プレイヤから見て右側に位置する２つの荷重センサ３６ｂの荷重値の和との差分に基づいて算出される。同様に、ｔ０は、プレイヤから見て前方に位置する２つの荷重センサ３６ｂの荷重値の和と、プレイヤから見て後方に位置する２つの荷重センサ３６ｂの荷重値の和との差分に基づいて算出される。
【００８８】
次に、図９〜図１０を参照して、プレイヤの重心位置に基づく入力判定処理について説明する。
【００８９】
荷重コントローラ３６からの信号に基づくキャラクタの歩行動作の制御は、上記のようにして検出されるプレイヤの重心位置のＳ座標値（ｓ０）のみを利用して行われる。
【００９０】
図９に示すように、ＳＴ座標空間には左入力領域、遊び領域、及び右入力領域がそれぞれ設定される。遊び領域とは、その領域にプレイヤの重心位置が位置しているときにはプレイヤによる意図的な重心移動が行われていないと判断されるような位置である。言い換えると、プレイヤの重心位置が遊び領域に位置している場合には、プレイヤによる意図的な重心移動が行われていないと判断され、プレイヤの重心位置が遊び領域からずれている場合（すなわち左入力領域、或いは右入力領域に位置している場合）には、プレイヤによる意図的な重心移動が行われていると判断される。
【００９１】
本実施形態では、Ｓ座標値のみで左入力領域、遊び領域、及び右入力領域をそれぞれ設定する。具体的には、図９に一例として示すように、遊び領域と左入力領域との境界線（以下、左境界線ＳＬと称す）は、Ｓ座標値が−０．７である直線であり、遊び領域と右入力領域との境界線（以下、右境界線ＳＲと称す）は、Ｓ座標値が０．７である直線である。
【００９２】
図１０は、横軸をＳ座標軸とし、縦軸を時間軸として、Ｓ軸方向に関するプレイヤの重心位置の遷移の一例を破線で示す図である。図１０に示すように、重心位置が右入力領域に進入すると、右踏み込みが発生したと判断され、それに応じて、仮想ゲーム空間のキャラクタが右足を踏み下ろして歩みを進める。また、重心位置が左入力領域に進入すると、左踏み込みが発生したと判断され、それに応じて、仮想ゲーム空間のキャラクタが左足を踏み下ろして歩みを進める。より具体的には、重心位置のＳ座標値と±０．７の閾値を比較し、重心位置のＳ座標値が０．７以上となったときに右踏み込みが発生したと判断され、重心位置のＳ座標値が−０．７以下となったときに左踏み込みが発生したと判断される。
【００９３】
なお、当該ビデオゲームでは、現実世界における歩行と同様に、仮想ゲーム空間のキャラクタが、同一の足（右足または左足）を２回以上連続して踏み下ろすことができないように制限されている。したがって、仮想ゲーム空間におけるキャラクタを歩行させるために、プレイヤは、重心位置を右入力領域と左入力領域に交互に進入させる必要がある。
【００９４】
以上が、本実施形態における第１の入力判定処理の説明である。
【００９５】
ところで、上記の第１の入力判定処理のみでは、プレイヤが荷重コントローラ３６上の偏った位置で足踏みを行うと、キャラクタをうまく歩行させられない場合がある。図１１は、図１０と同様に横軸をＳ座標軸とし、縦軸を時間軸として、プレイヤが荷重コントローラ３６上の偏った位置（中央より右手寄り）で足踏みを行ったときの重心位置の遷移の一例を破線で示す図である。この場合、図１１に示すように、プレイヤは足踏みをしているのにも拘わらず、重心位置を右入力領域と左入力領域に交互に進入させることができず、キャラクタをうまく歩行させることができない。
【００９６】
また、上記の第１の入力判定処理のみでは、プレイヤが荷重コントローラ３６上で足踏みを行っているときの左足の着地位置と右足の着地位置が近い場合に、キャラクタをうまく歩行させられない場合がある。図１２は、図１１と同様に、横軸をＳ座標軸とし、縦軸を時間軸として、プレイヤが荷重コントローラ３６上で足踏みを行っており、かつ左足の着地位置と右足の着地位置が近いときの重心位置の遷移の一例を破線で示す図である。この場合、図１２に示すように、プレイヤは足踏みをしているのにも拘わらず、重心位置を左入力領域及び右入力領域の少なくともいずれか一方に進入させることができず（図１２に示す例では左入力領域にも右入力領域にも進入させることができていない）、キャラクタをうまく歩行させることができない。
【００９７】
そこで、本実施形態では、上記のような状況においてもプレイヤがキャラクタをうまく歩行させることができるように、上記の第１の入力判定処理に加えて（もしくは、上記の第１の入力判定処理に代えて）、第２の入力判定処理を行う。以下、第２の入力判定処理について詳細に説明する。
【００９８】
第２の入力判定処理では、プレイヤが足踏み操作をしているかどうかを、現在の重心位置だけではなく、重心位置の履歴も参照して判断する。
【００９９】
図１３は、本実施形態における第２の入力判定処理の手法を説明する図である。図１３は、図１２と同様に、横軸をＳ座標軸とし、縦軸を時間軸として、重心位置の遷移の一例を示す図である。本実施形態では、図１３の（Ａ）に示すように、常に少なくとも３０フレームに相当する時間（１秒間に６０フレーム分のゲーム画像を生成する場合には０．５秒）だけ遡った過去から現在までの期間（以下、履歴期間ΔＴと称す）における重心位置の履歴を記憶領域（例えば外部メインメモリ４６）に記憶する。そして、履歴として記憶されている重心位置の中で最も小さいＳ座標値（以下、最小値Ｓｍｉｎと称す）と最も大きいＳ座標値（以下、最大値Ｓｍａｘと称す）を検出する。そして、図１３の（Ｂ）に示すように、最小値Ｓｍｉｎおよび最大値Ｓｍａｘに応じて、最新の重心位置ｓ１（言い換えると、入力判定処理対象の重心位置）を補正する。以下、補正後の重心位置を、補正重心位置ｓ２と称す。重心位置ｓ１から補正重心位置ｓ２への変換は、重心位置の実際の変動範囲の最小値Ｓｍｉｎおよび最大値Ｓｍａｘが、重心位置の変動可能範囲の下限値（ここでは−１）および上限値（ここでは１）にそれぞれ変換されるような線形変換関数（図１４参照）を用いて行うことができる。重心位置ｓ１と補正重心位置ｓ２の関係は、下記の数式で表される。
【０１００】
ｓ２＝｛２／（Ｓｍａｘ−Ｓｍｉｎ）｝・｛ｓ１−（Ｓｍａｘ＋Ｓｍｉｎ）／２｝
【０１０１】
上記のようにして補正重心位置ｓ２が求まると、つづいて、当該補正重心位置ｓ２が、左入力領域、遊び領域、及び右入力領域のいずれの領域に存在するかを判定する。具体的には、上述した第１の入力判定処理と同様に、補正重心位置ｓ２を±０．７の閾値と比較して判定する。これにより、例えば図１３の（Ａ）に示すように重心位置が遷移をしていたとしても、プレイヤが足踏み操作をしているか否かを正確に判断できる。以上が、本実施形態における第２の入力判定処理の説明である。
【０１０２】
上記のように重心位置を補正することにより、重心位置の変動範囲に応じて重心位置が正規化されるので、図１１のように重心位置の変動範囲が所望位置からずれている場合や、図１２のように重心位置の変動範囲の大きさが所望の大きさよりも小さい場合であっても、重心位置に応じた処理を適切に行うことができる。
【０１０３】
なお、上述した第２の入力判定処理は、重心位置の変動範囲（すなわち最小値Ｓｍｉｎ〜最大値Ｓｍａｘ）の広さ（以下、変動幅ΔＳと称す）に応じて、一時的に無効にしてもよい（すなわち、第２の入力判定処理自体を行わないようにしてもよいし、第２の入力判定処理自体は行うけれどもその結果を利用しないようにしてもよい）。例えば、プレイヤが荷重コントローラ３６上で静止していたとしても、重心位置が僅かに変動していることがある。このような場合に検出される重心位置は、図１５に一例として示すように、相対的に小さい変動範囲ΔＳで振動する。このため、プレイヤが静止しているときに、静止しているのにも拘わらず入力の誤判定が発生する場合がある。したがって、このような誤判定を防ぐために、変動幅ΔＳが所定の幅閾値（例えば０．５）未満であるときには、第２の入力判定処理を無効にするようにしてもよい。これにより、プレイヤが足踏み操作を行っていないときに発生し得る入力の誤判定をなくすことができる。
【０１０４】
なお、上記のように、変動幅ΔＳが所定の幅閾値未満であるときに第２の入力判定処理を無効にした場合、プレイヤがゆっくりと足踏みをした場合に、それを検出できない可能性がある。図１６は、プレイヤがゆっくりと足踏みしたときの重心位置の遷移の一例を示す図である。プレイヤがゆっくりと足踏みをした場合には、重心位置が図１６に示すように緩やかに変化するので、その結果、履歴期間ΔＴにおける変動幅ΔＳが上記所定の幅閾値を下回ってしまい、上記の第２の入力判定処理のみではプレイヤの足踏み操作を検知できないことになる。したがって、このような状況でもプレイヤの足踏み操作を正しく検出できるように、少なくとも第２の入力判定処理を無効にしている間は、前述の第１の入力判定処理によってプレイヤの足踏み操作を検出するのが好ましい。
【０１０５】
また、上述した第２の入力判定処理は、最新の重心位置ｓ１と、その直前に検出された重心位置（以下、前回重心位置ｓｐと称す）との差の絶対値、すなわち、重心位置の変化量（より一般的には、単位時間あたりの重心位置の変化量）に応じて、一時的に無効にするようにしてもよい。図１７は、プレイヤが足踏みを停止したときの重心位置の遷移の一例を示す図である。図１７の例では、プレイヤが足踏みを停止したことに伴って、履歴期間ΔＴにおける最小値Ｓｍｉｎが徐々に増加し、結果として補正重心位置ｓ２の値が−０．７以下となり、左踏み込みが発生したと誤判定される。したがって、このような誤判定を防ぐために、重心位置の変化量が所定の変化閾値未満であるときには、第２の入力判定処理を無効にするようにしてもよい。これにより、プレイヤが足踏み操作を停止した後に発生し得る入力の誤判定をなくすことができる。
【０１０６】
次に、本実施形態におけるゲーム装置１２のＣＰＵ４０の処理の流れについて説明する。
【０１０７】
図１８は、本実施形態において外部メインメモリ４６に記憶されるコンピュータプログラム及びデータの一例を示している。なお、外部メインメモリ４６の代わりに内部メインメモリ４２ｅやその他のメモリが利用されても構わない。
【０１０８】
情報処理プログラム８０は、ＣＰＵ４０にビデオゲームを実行させるための複数のプログラムコードから成るコンピュータプログラムであって、当該ビデオゲームの実行に先立って、光ディスク１８やフラッシュメモリ４４等のコンピュータ読み取り可能な記憶媒体からロードされて外部メインメモリ４６に格納される。なお、情報処理プログラム８０は無線通信モジュール５０等を介して他のコンピュータシステム（例えば、ゲームプログラム配信サーバや、他のゲーム装置）からゲーム装置１２に供給されても構わない。
【０１０９】
重心位置８１は、荷重コントローラ３６の台３６ａ上におけるプレイヤの重心位置（最新の重心位置）を示す２次元座標データである。なお、重心位置８１は必ずしも２次元座標データである必要はなく、情報処理プログラム８０において重心位置のＳ座標値しか利用しない場合には、外部メインメモリ４６に重心位置８１としてＳ座標値のみ記憶するようにしても構わない。
【０１１０】
履歴８２は、上述したように履歴期間ΔＴにおける重心位置の履歴を示すデータである。
【０１１１】
最小値８３は、履歴期間ΔＴにおける重心位置の最小値Ｓｍｉｎを示すデータである。
【０１１２】
最大値８４は、履歴期間ΔＴにおける重心位置の最大値Ｓｍａｘを示すデータである。
【０１１３】
変動幅８５は、履歴期間ΔＴにおける重心位置の変動範囲の大きさ（上述した変動幅ΔＳ）を示すデータである。
【０１１４】
補正重心位置８６は、上述した補正重心位置ｓ２を示すデータである。
【０１１５】
右入力済みフラグ８７は、重心位置８１または補正重心位置８６が右入力領域に進入したときにオンに設定され、左入力領域に進入したときにオフに設定されるフラグである。
【０１１６】
左入力済みフラグ８８は、重心位置８１または補正重心位置８６が左入力領域に進入したときにオンに設定され、右入力領域に進入したときにオフに設定されるフラグである。
【０１１７】
以下、図１９Ａおよび図１９Ｂのフローチャートを参照して、情報処理プログラム８０に基づくＣＰＵ４０の処理の流れを説明する。
【０１１８】
情報処理プログラム８０の実行が開始されると、図１９ＡのステップＳ１０において、ＣＰＵ４０は初期化処理を行う。初期化処理には、右入力済みフラグ８７および左入力済みフラグ８８をオフに設定する処理などが含まれる。
【０１１９】
ステップＳ１１において、ＣＰＵ４０は、プレイヤの重心位置を取得する。具体的には、ＣＰＵ４０は、荷重コントローラ３６からの信号に基づいて、当該信号に含まれる４つの荷重センサ３６ｂの荷重値から重心位置を計算し、外部メインメモリ４６に記憶されている重心位置８１を更新する。
【０１２０】
ステップＳ１２において、ＣＰＵ４０は、ステップＳ１１で取得した重心位置を、外部メインメモリ４６に記憶されている履歴８２に追加する。このとき、ＣＰＵ４０は必要に応じて、履歴期間ΔＴよりも古い重心位置を履歴８２から削除する。
【０１２１】
ステップＳ１３において、ＣＰＵ４０は、履歴８２として記憶されている重心位置の中から最小値Ｓｍｉｎおよび最大値Ｓｍａｘを検出して、外部メインメモリ４６に最小値８３および最大値８４として記憶する。
【０１２２】
ステップＳ１４において、ＣＰＵ４０は、最小値８３および最大値８４に基づいて変動幅ΔＳを計算し、外部メインメモリ４６に変動幅８５として記憶する。
【０１２３】
ステップＳ１５において、ＣＰＵ４０は、重心位置８１を、前述したように最小値８３および最大値８４に基づいて補正することによって、補正重心位置を計算し、外部メインメモリ４６に補正重心位置８６として記憶する。
【０１２４】
ステップＳ１６において、ＣＰＵ４０は、外部メインメモリ４６に記憶されている変動幅８５を参照し、変動幅ΔＳが０．５以上であるか否かを判断する。そして、変動幅ΔＳが０．５以上である場合は処理をステップＳ１７に進め、そうでない場合は処理を図１９ＢのステップＳ３０に進める。したがって、変動幅ΔＳが０．５以上でない場合は、後述するステップＳ１８〜Ｓ２６の処理（上記第２の入力判定処理に相当）はスキップされる。
【０１２５】
ステップＳ１７において、ＣＰＵ４０は、外部メインメモリ４６に記憶されている履歴８２を参照して、最新の重心位置ｓ１と前回重心位置ｓｐに基づいて重心位置の変化量を計算し、当該変化量が予め定められた変化閾値Ｓｔｈ以上かどうかを判断する。そして、当該変化量が変化閾値Ｓｔｈ以上である場合には、処理をステップＳ１８に進め、そうでない場合には、処理を図１９ＢのステップＳ３０に進める。したがって、重心位置の変化量が変化閾値Ｓｔｈ以上でない場合は、後述するステップＳ１８〜Ｓ２６の処理（上記第２の入力判定処理に相当）はスキップされる。
【０１２６】
ステップＳ１８において、ＣＰＵ４０は、外部メインメモリ４６に記憶されている補正重心位置８６を参照し、補正重心位置ｓ２が存在する領域（左入力領域／遊び領域／右入力領域）を判定する。より詳細には、ＣＰＵ４０は、ｓ２≦−０．７である場合に補正重心位置ｓ２が左入力領域に存在すると判定し、処理をステップＳ１９に進める。また、ＣＰＵ４０は、−０．７＜ｓ２＜０．７である場合に補正重心位置ｓ２が遊び領域に存在すると判定し、処理を図１９ＢのステップＳ３０に進める。また、ＣＰＵ４０は、ｓ２≧０．７である場合に補正重心位置ｓ２が右入力領域に存在していると判定し、処理をステップＳ２３に進める。
【０１２７】
ステップＳ１９において、ＣＰＵ４０は、左入力済みフラグ８８がオンかどうかを判断する。そして、左入力済みフラグ８８がオンである場合には処理を図１９ＢのステップＳ３０に進め、左入力済みフラグ８８がオフである場合には処理をステップＳ２０に進める。したがって、左入力済みフラグ８８がオンである場合（すなわち、キャラクタの左足制御が行われた後、キャラクタの右足制御がまだ行われていない状況の場合）は、後述するステップＳ２０〜Ｓ２２の処理はスキップされるので、キャラクタの左足制御が行われた後にさらに左足制御が行われることは無い。
【０１２８】
ステップＳ２０において、ＣＰＵ４０は、キャラクタの左足制御（仮想ゲーム空間におけるキャラクタの左足を前に進める処理）を行う。具体的には、キャラクタの動作を定義したモーションデータにしたがって、キャラクタが左足を前に進めるようにキャラクタの姿勢を制御するとともに、仮想ゲーム空間におけるキャラクタの位置を更新することによって、キャラクタの移動制御を行う。
【０１２９】
ステップＳ２１において、ＣＰＵ４０は、左入力済みフラグ８８をオンに設定する。
【０１３０】
ステップＳ２２において、ＣＰＵ４０は、右入力済みフラグ８７をオフに設定する。
【０１３１】
ステップＳ２３において、ＣＰＵ４０は、右入力済みフラグ８７がオンかどうかを判断する。そして、右入力済みフラグ８７がオンである場合には処理を図１９ＢのステップＳ３０に進め、右入力済みフラグ８７がオフである場合には処理をステップＳ２４に進める。したがって、右入力済みフラグ８７がオンである場合（すなわち、キャラクタの右足制御が行われた後、キャラクタの左足制御がまだ行われていない状況の場合）は、後述するステップＳ２４〜Ｓ２６の処理はスキップされるので、キャラクタの右足制御が行われた後にさらに右足制御が行われることは無い。
【０１３２】
ステップＳ２４において、ＣＰＵ４０は、キャラクタの右足制御（仮想ゲーム空間におけるキャラクタの右足を前に進める処理）を行う。具体的には、キャラクタの動作を定義したモーションデータにしたがって、キャラクタが右足を前に進めるようにキャラクタの姿勢を制御するとともに、仮想ゲーム空間におけるキャラクタの位置を更新することによって、キャラクタの移動制御を行う。
【０１３３】
ステップＳ２５において、ＣＰＵ４０は、右入力済みフラグ８７をオンに設定する。
【０１３４】
ステップＳ２６において、ＣＰＵ４０は、左入力済みフラグ８８をオフに設定する。
【０１３５】
ステップＳ３０〜Ｓ３８の処理は、重心位置ｓ１（すなわち、補正前の重心位置）に基づいて行われる、前述の第１の入力判定処理に相当する処理である。
【０１３６】
ステップＳ３０において、ＣＰＵ４０は、外部メインメモリ４６に記憶されている重心位置８１を参照し、重心位置ｓ１が存在する領域（左入力領域／遊び領域／右入力領域）を判定する。より詳細には、ＣＰＵ４０は、ｓ１≦−０．７である場合に重心位置ｓ１が左入力領域に存在すると判定し、処理をステップＳ３１に進める。また、ＣＰＵ４０は、−０．７＜ｓ１＜０．７である場合に重心位置ｓ１が遊び領域に存在すると判定し、処理をステップＳ３９に進める。また、ＣＰＵ４０は、ｓ１≧０．７である場合に重心位置ｓ１が右入力領域に存在していると判定し、処理をステップＳ３５に進める。
【０１３７】
ステップＳ３１において、ＣＰＵ４０は、左入力済みフラグ８８がオンかどうかを判断する。そして、左入力済みフラグ８８がオンである場合には処理をステップＳ３９に進め、左入力済みフラグ８８がオフである場合には処理をステップＳ３２に進める。したがって、左入力済みフラグ８８がオンである場合（すなわち、キャラクタの左足制御が行われた後、キャラクタの右足制御がまだ行われていない状況の場合）は、後述するステップＳ３２〜Ｓ３４の処理はスキップされるので、キャラクタの左足制御が行われた後にさらに左足制御が行われることは無い。
【０１３８】
ステップＳ３２において、ＣＰＵ４０は、キャラクタの左足制御（仮想ゲーム空間におけるキャラクタの左足を前に進める処理）を行う。
【０１３９】
ステップＳ３３において、ＣＰＵ４０は、左入力済みフラグ８８をオンに設定する。
【０１４０】
ステップＳ３４において、ＣＰＵ４０は、右入力済みフラグ８７をオフに設定する。
【０１４１】
ステップＳ３５において、ＣＰＵ４０は、右入力済みフラグ８７がオンかどうかを判断する。そして、右入力済みフラグ８７がオンである場合には処理をステップＳ３９に進め、右入力済みフラグ８７がオフである場合には処理をステップＳ３６に進める。したがって、右入力済みフラグ８７がオンである場合（すなわち、キャラクタの右足制御が行われた後、キャラクタの左足制御がまだ行われていない状況の場合）は、後述するステップＳ３６〜Ｓ３８の処理はスキップされるので、キャラクタの右足制御が行われた後にさらに右足制御が行われることは無い。
【０１４２】
ステップＳ３６において、ＣＰＵ４０は、キャラクタの右足制御（仮想ゲーム空間におけるキャラクタの右足を前に進める処理）を行う。
【０１４３】
ステップＳ３７において、ＣＰＵ４０は、右入力済みフラグ８７をオンに設定する。
【０１４４】
ステップＳ３８において、ＣＰＵ４０は、左入力済みフラグ８８をオフに設定する。
【０１４５】
ステップＳ３９において、ＣＰＵ４０は、ゲームが終了したかどうかを判断し、ゲームが終了した場合には情報処理プログラム８０の実行を終了し、ゲームが続行している場合には、処理は図１９ＡのステップＳ１１に戻る。
【０１４６】
以上のようなＣＰＵ４０の処理により、前述した第１の入力判定処理および第２の入力判定処理が実現される。
【０１４７】
なお、図１９Ａおよび図１９Ｂのフローチャートは単なる一例に過ぎず、同様の結果が得られるのであれば、これらのフローチャートとは異なるフローチャートにしたがってＣＰＵ４０を動作させても構わない。
【０１４８】
以上のように、上記実施形態によれば、重心位置の遷移の履歴に基づいて重心位置を補正するので、図１１や図１２のように重心位置が遷移する場合でもプレイヤの足踏み操作を適切に検出することができ、プレイヤの操作感を向上させることができる。
【０１４９】
また、上記実施形態では、重心位置ｓ１から補正重心位置ｓ２への変換は、最小値Ｓｍｉｎおよび最大値Ｓｍａｘが、重心位置の変動可能範囲の下限値（ここでは−１）および上限値（ここでは１）にそれぞれ変換されるような線形変換関数を用いて行っているが、本発明はこれに限らない。例えば、最小値Ｓｍｉｎおよび最大値Ｓｍａｘが、予め定めた第１の固定値（例えば−０．９）および予め定めた第２の固定値（例えば０．９）にそれぞれ変換されるような線形変換関数を用いて、重心位置ｓ１を補正重心位置ｓ２に変換するようにしてもよい。また、例えば、最小値Ｓｍｉｎと最大値Ｓｍａｘの中央位置（すなわち、（Ｓｍｉｎ＋Ｓｍａｘ）／２）を計算し、重心位置ｓ１から当該中央位置を減算した結果を補正重心位置ｓ２として用いてもよい（すなわち、中央位置に対する重心位置ｓ１の相対位置に基づいて入力判定処理を行ってもよい）。
【０１５０】
また、上記実施形態では、履歴期間ΔＴにおける重心位置の変動範囲に基づいて重心位置ｓ１を補正重心位置ｓ２に変換し、当該補正重心位置ｓ２と判定閾値（−０．７および０．７）とを比較することによって、プレイヤが足踏み操作を行っているかどうかを判定していた。しかしながら、これに代えて、図２０に一例として示すように、履歴期間ΔＴにおける重心位置の変動範囲に基づいて判定閾値（−０．７および０．７）を補正判定閾値に変換し、重心位置ｓ１と当該補正判定閾値とを比較することによって、プレイヤが足踏み操作を行っているかどうかを判定するようにしても、同様の効果が得られる。判定閾値から補正判定閾値への変換は、重心位置の変動可能範囲の下限値（ここでは−１）および上限値（ここでは１）が、最小値Ｓｍｉｎおよび最大値Ｓｍａｘにそれぞれ変換されるような線形変換関数を用いて行うことができる。また、判定閾値から補正判定閾値への変換は、予め定めた第１の固定値（例えば−０．９）および予め定めた第２の固定値（例えば０．９）が、最小値Ｓｍｉｎおよび最大値Ｓｍａｘにそれぞれ変換されるような線形変換関数を用いて行ってもよい。
【０１５１】
また、上記実施形態では、右境界線ＳＲおよび左境界線ＳＬのＳ座標値（すなわち判定閾値）をそれぞれ−０．７、及び０．７としたが、これらの値は、必要に応じた任意の値であってもよいし、互いに異なる値であってもよい。
【０１５２】
また、上記実施形態では、変動幅ΔＳが０．５未満であるときに第２の入力判定処理を一時的に無効にするようにしているが、これは単なる一例に過ぎず、変動幅ΔＳと比較する数値は０．５以外の値であってもよい。上記実施形態で説明した他の任意の数値（閾値）についても同様である。
【０１５３】
また、上記実施形態では、３０フレームに相当する時間を履歴期間ΔＴとしたが、履歴期間ΔＴの長さは必要に応じて他の任意の時間に設定してもよいし、必ずしも固定の長さでなくてもよい。例えば、情報処理プログラム８０の実行を開始してから現在までの期間を履歴期間ΔＴとしてもよい。この場合、情報処理プログラム８０の実行を開始してから現在までの期間において検出された重心位置を全て履歴８２として外部メインメモリ４６に記憶するようにしてもよいし、情報処理プログラム８０の実行を開始してから現在までに検出された重心位置の最小値および最大値だけを履歴８２として外部メインメモリ４６に記憶しておいて、それらの値を随時更新するようにしてもよい。また例えば、重心位置の極小値および極大値を随時検出するようにし、重心位置の最新の極小値および最新の極大値だけを履歴８２として外部メインメモリ４６に記憶しておき、新たな極小値または極大値が検出される度にそれらの値を随時更新するようにしてもよい。この場合、図２１に示すように、外部メインメモリ４６に記憶されている最新の極小値および最新の極大値をそれぞれ上記ＳｍｉｎおよびＳｍａｘとみなすことで、上記実施形態と同様の効果が得られる。さらに、この場合には、履歴期間ΔＴにおいて検出された重心位置を全て外部メインメモリ４６に記憶するのではなく、最新の極小値および最新の極大値だけを外部メインメモリ４６に記憶しておけばよいので、記憶領域を節約することができるというさらなる効果が得られる。なお、新たに検出された重心位置が、外部メインメモリ４６に記憶されている最新の極小値よりも小さい場合には、外部メインメモリ４６に記憶されている最新の極小値の値を、当該新たに検出された重心位置の値に更新するようにしてもよい。同様に、新たに検出された重心位置が、外部メインメモリ４６に記憶されている最新の極大値よりも大きい場合には、外部メインメモリ４６に記憶されている最新の極大値の値を、当該新たに検出された重心位置の値に更新するようにしてもよい。
【０１５４】
また、上記実施形態では、ステップＳ１５で補正重心位置ｓ２を計算した後に、ステップＳ１６およびステップＳ１７において、第２の入力判定処理（ステップＳ１８〜Ｓ２６）をスキップするかどうかを判定している。しかしながら、他の実施例では、ステップＳ１６の処理を、ステップＳ１５の処理の前に行うようにしてもよい。これにより、変動幅ΔＳが０．５未満であるときに、ステップＳ１５の処理（補正重心位置の計算処理）を省略することができ、ＣＰＵ４０の処理負担を減らすことができる。また、また、ステップＳ１７の処理を、ステップＳ１３の処理の前に行うようにしてもよい。これにより、重心位置の変化量が変化閾値Ｓｔｈ未満であるときに、ステップＳ１３〜Ｓ１５の処理を省略することができ、ＣＰＵ４０の処理負担を減らすことができる。
【０１５５】
また、上記実施形態では、第１の入力判定処理と第２の入力判定処理の２種類の入力判定処理を行っているが、本発明はこれに限らず、第２の入力判定処理のみを行う（すなわちステップＳ３０〜Ｓ３８の処理を行わない）ようにしてもよい。もしくは、第２の入力判定処理が一時的に無効になっている間（すなわち、ステップＳ１６またはステップＳ１７でＮｏと判定された場合）のみ、ステップＳ３０〜Ｓ３８の処理を行うようにしてもよい。
【０１５６】
また、上記実施形態では、右足制御と左足制御が必ず交互に行われる例を説明したが、他の実施例では、右足制御または左足制御のいずれか一方が連続して行われ得るようにしてもよい。
【０１５７】
また、上記実施形態では、重心位置（または補正重心位置）と判定閾値との大小関係に応じて所定の処理（右足制御、左足制御）を行う例を説明したが、本発明はこれに限らない。例えば、補正重心位置の値（−１〜１）に比例するように、所定のゲームパラメータの値を変化させるようにしてもよい。
【０１５８】
また、上記実施形態では、重心位置のＳ座標値のみを用いて入力判定処理（第１の入力判定処理および第２の入力判定処理）を行う例を説明した。しかしながら、他の実施例では、重心位置のＴ座標値のみを用いて入力判定処理をしてもよいし、Ｓ座標値及びＴ座標値のそれぞれについて同様の手法で入力判定処理をしてもよい。
【０１５９】
また、上記実施形態では、プレイヤの足踏み操作を検出して、当該足踏み操作に応じて仮想ゲーム空間のキャラクタの足を制御する例を説明したが、本発明はこれに限らない。例えば、プレイヤの足踏み操作に応じて音楽を出力するような音楽演奏アプリケーションや、プレイヤの足踏みの速さを計測するような体力測定アプリケーションにも適用することができる。また、足踏み操作に限らず、重心を左右方向や前後方向に往復移動させる操作や、右手と左手で荷重コントローラ３６を交互に押す操作の検出にも本発明を適用することができる。
【０１６０】
また、上記実施形態では重心位置を２次元的に検出可能な荷重コントローラ３６を利用する例を説明したが、このような荷重コントローラ３６の代わりに、重心位置を１次元的にのみ検出可能（すなわち、特定の一方向に関する重心位置のみを検出可能）な重心位置検出装置を利用しても構わない。
【０１６１】
また、上記実施形態では、本発明をゲーム装置に適用した例を説明したが、本発明はこれに限らず、他の任意の情報処理装置に適用可能である。
【符号の説明】
【０１６２】
１０    ゲームシステム
１２    ゲーム装置
１８    光ディスク
２２    コントローラ
３４    モニタ
３４ａ    スピーカ
３６    荷重コントローラ
３６ｂロードセル（荷重センサ）
４０    ＣＰＵ
４２    システムＬＳＩ
４２ａ    入出力プロセッサ
４２ｂ    ＧＰＵ
４２ｃ    ＤＳＰ
４２ｄ    ＶＲＡＭ
４２ｅ    内部メインメモリ
４４    フラッシュメモリ
４６    外部メインメモリ
４８    ＲＯＭ／ＲＴＣ
５２    無線コントローラモジュール
５４    ディスクドライブ
５６    ＡＶＩＣ
５８    ＡＶコネクタ
６０    拡張コネクタ
１００    マイコン
１０２    ＡＤコンバータ
１０４    ＤＣ−ＤＣコンバータ
１０６    無線モジュール
１０８    増幅器
【図１】
0005610735.tif 000002
【図２】
0005610735.tif 000003
【図３】
0005610735.tif 000004
【図４】
0005610735.tif 000005
【図５】
0005610735.tif 000006
【図６】
0005610735.tif 000007
【図７】
0005610735.tif 000008
【図８】
0005610735.tif 000009
【図９】
0005610735.tif 000010
【図１０】
0005610735.tif 000011
【図１１】
0005610735.tif 000012
【図１２】
0005610735.tif 000013
【図１３】
0005610735.tif 000014
【図１４】
0005610735.tif 000015
【図１５】
0005610735.tif 000016
【図１６】
0005610735.tif 000017
【図１７】
0005610735.tif 000018
【図１８】
0005610735.tif 000019
【図１９Ａ】
0005610735.tif 000020
【図１９Ｂ】
0005610735.tif 000021
【図２０】
0005610735.tif 000022
【図２１】
0005610735.tif 000023