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