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