(57)【特許請求の範囲】
【請求項１】
第１の操作装置と、当該第１の操作装置に対する操作に基づいてゲーム処理を実行するゲーム処理部とを含むゲームシステムであって、
前記第１の操作装置は、
方向入力部と、
前記第１の操作装置の姿勢を算出するための物理量を取得するセンサ部と、
ゲーム画像を表示する表示部とを備え、
前記ゲーム処理部は、
前記センサ部によって取得された物理量に基づいて前記第１の操作装置の姿勢を算出する姿勢算出部と、
前記第１の操作装置の姿勢に基づいて仮想空間内における仮想カメラの姿勢を制御するカメラ姿勢制御部と、
前記方向入力部に対する入力に基づいて前記仮想カメラの位置を制御するカメラ位置制御部と、
前記表示部に表示すべき前記ゲーム画像を前記仮想カメラの位置および姿勢に基づいて生成する画像生成部とを含み、
前記ゲーム処理部は、前記仮想空間内における所定のオブジェクトの位置を前記方向入力部に対する入力に基づいて制御するオブジェクト制御部をさらに備え、
前記カメラ位置制御部は、前記所定のオブジェクトが前記仮想カメラの視野範囲内に含まれるように前記仮想カメラの位置を制御する、ゲームシステム。
【請求項２】
前記オブジェクト制御部は、前記方向入力部に対する入力に基づいて前記所定のオブジェクトの姿勢を制御し、
前記カメラ姿勢制御部は、少なくとも所定方向に関して前記オブジェクト制御部によって前記所定のオブジェクトの姿勢が変化した場合、当該所定方向に関して前記所定のオブジェクトの姿勢と前記仮想カメラの姿勢とが一致するように前記仮想カメラの姿勢を変化させる、請求項１に記載のゲームシステム。
【請求項３】
前記オブジェクト制御部は、所定方向に関して前記第１の操作装置の姿勢の変化に応じて前記仮想カメラの姿勢が変化した場合、当該所定方向に関して前記所定のオブジェクトの姿勢と前記仮想カメラの姿勢とが一致するように前記オブジェクトの姿勢を変化させる、請求項１または請求項２に記載のゲームシステム。
【請求項４】
前記オブジェクト制御部は、少なくとも所定の速度以上で前記所定方向に関して前記第１の操作装置の姿勢の変化に応じて前記仮想カメラの姿勢が変化した場合、前記オブジェクトの姿勢を前記仮想カメラに追従して変化させることで前記オブジェクトの姿勢を前記仮想カメラの姿勢と一致させる、請求項３に記載のゲームシステム。
【請求項５】
前記オブジェクト制御部は、前記第１の操作装置が備える第１の方向入力部に対する第１の方向入力に応じて、前記仮想カメラの視線方向の成分を有する所定の第１の移動方向への前記所定のオブジェクトの移動を制御するとともに、前記第１の操作装置が備える第２の方向入力部に対する第２の方向入力に応じて、前記第１の移動方向に垂直な方向でかつ前記表示部の画面の上下方向に対応する第２の移動方向への前記所定のオブジェクトの移動を制御する、請求項１から請求項４のいずれか１項に記載のゲームシステム。
【請求項６】
前記オブジェクト制御部は、前記第１および第２の方向入力部のうちの一方の方向入力部に対する第３の方向入力に応じて、前記第１および第２の移動方向に垂直な第３の移動方向への前記所定のオブジェクトの移動を制御する、請求項５に記載のゲームシステム。
【請求項７】
前記オブジェクト制御部は、前記第１および第２の方向入力部のうちの他方の方向入力部に対する第４の方向入力に応じて前記オブジェクトの姿勢を制御する、請求項６に記載のゲームシステム。
【請求項８】
前記方向入力部は、少なくとも上下左右の方向を入力可能であり、
前記第１の方向入力および第２の方向入力は、上下方向の入力であって、
前記第３の方向入力および第４の方向入力は、左右方向の入力である、請求項６または請求項７に記載のゲームシステム。
【請求項９】
前記第１の操作装置は、押圧可能なキー操作部をさらに備え、
前記オブジェクト制御部は、前記キー操作部に対するキー操作に応じて前記所定のオブジェクトに所定の動作を行わせる、請求項１から請求項８のいずれか１項に記載のゲームシステム。
【請求項１０】
前記第１の操作装置は、前記表示部の画面上に設けられるタッチパネルをさらに備え、
前記オブジェクト制御部は、前記タッチパネルに対する操作に応じて前記所定のオブジェクトに所定の動作を行わせる、請求項１から請求項９のいずれか１項に記載のゲームシステム。
【請求項１１】
前記方向入力部は、前記表示部の左右に設けられる第１の方向入力部と第２の方向入力部とを含み、
各前記方向入力部は、２次元の任意の方向に移動可能な操作部材を移動させることによる入力操作が可能である、請求項１から請求項１０のいずれか１項に記載のゲームシステム。
【請求項１２】
前記センサ部は慣性センサを含む、請求項１から請求項１１のいずれか１項に記載のゲームシステム。
【請求項１３】
前記ゲーム処理部は、前記表示部の画面上の位置を特定する所定の操作に応じて、当該位置に対応する前記仮想空間内の位置に向かって射撃を行う処理を実行する、請求項１から請求項１２のいずれか１項に記載のゲームシステム。
【請求項１４】
前記ゲームシステムは、
前記ゲーム処理部を備え、前記表示部とは異なる所定の表示装置にゲーム画像を出力するゲーム装置と、
前記第１の操作装置とは異なる、１以上の第２の操作装置とを含み、
前記ゲーム処理部は、前記第１の操作装置に対する操作と前記第２の操作装置に対する操作とに基づいてゲーム処理を実行し、
前記画像生成部は、前記表示部に表示するためのゲーム画像、および、前記所定の表示装置に表示するためのゲーム画像をそれぞれ生成する、請求項１から請求項１３のいずれか１項に記載のゲームシステム。
【請求項１５】
前記ゲーム処理部は、前記方向入力部に対する入力に基づいて前記仮想空間における３次元の各方向への移動動作が制御される第１のオブジェクトに、前記第１の操作装置に対する操作に基づいて射撃動作を行わせるとともに、前記仮想空間における所定面上を移動可能な第２のオブジェクトに、前記第２の操作装置に対する操作に基づいて移動動作および射撃動作を行わせる、請求項１４に記載のゲームシステム。
【請求項１６】
前記ゲームシステムは、前記ゲーム処理部を備えるゲーム装置を含み、
前記ゲーム装置は、前記ゲーム画像を圧縮して無線送信する画像送信部を備え、
前記第１の操作装置は、前記画像送信部によって送信されてくる圧縮されたゲーム画像を受信して伸張する画像受信部を備え、
前記表示部は、前記画像受信部によって伸張されたゲーム画像を表示する、請求項１から請求項１３のいずれか１項に記載のゲームシステム。
【請求項１７】
前記第１の操作装置は、前記ゲーム処理部を含む携帯型ゲーム装置である、請求項１から請求項１３のいずれか１項に記載のゲームシステム。
【請求項１８】
第１の操作装置に対する操作に基づいてゲーム処理を実行する１以上のゲーム装置によって実行されるゲーム処理方法であって、
前記第１の操作装置は、
方向入力部と、
前記第１の操作装置の姿勢を算出するための物理量を取得するセンサ部と、
ゲーム画像を表示する表示部とを備え、
前記センサ部によって取得された物理量に基づいて前記第１の操作装置の姿勢を算出する姿勢算出ステップと、
前記第１の操作装置の姿勢に基づいて仮想空間内における仮想カメラの姿勢を制御するカメラ姿勢制御ステップと、
前記方向入力部に対する入力に基づいて前記仮想カメラの位置を制御するカメラ位置制御ステップと、
前記表示部に表示すべき前記ゲーム画像を前記仮想カメラの位置および姿勢に基づいて生成する第１画像生成ステップとを含み、
前記仮想空間内における所定のオブジェクトの位置を前記方向入力部に対する入力に基づいて制御するオブジェクト制御ステップをさらに含み、
前記カメラ位置制御ステップにおいて前記ゲーム装置は、前記所定のオブジェクトが前記仮想カメラの視野範囲内に含まれるように前記仮想カメラの位置を制御する、ゲーム処理方法。
【請求項１９】
前記オブジェクト制御ステップにおいて前記ゲーム装置は、前記方向入力部に対する入力に基づいて前記所定のオブジェクトの姿勢を制御し、
前記カメラ姿勢制御ステップにおいて前記ゲーム装置は、少なくとも所定方向に関して前記オブジェクト制御ステップによって前記所定のオブジェクトの姿勢が変化した場合、当該所定方向に関して前記所定のオブジェクトの姿勢と前記仮想カメラの姿勢とが一致するように前記仮想カメラの姿勢を変化させる、請求項１８に記載のゲーム処理方法。
【請求項２０】
前記オブジェクト制御ステップにおいて前記ゲーム装置は、所定方向に関して前記第１の操作装置の姿勢の変化に応じて前記仮想カメラの姿勢が変化した場合、当該所定方向に関して前記所定のオブジェクトの姿勢と前記仮想カメラの姿勢とが一致するように前記オブジェクトの姿勢を変化させる、請求項１８または請求項１９に記載のゲーム処理方法。
【請求項２１】
前記オブジェクト制御ステップにおいて前記ゲーム装置は、少なくとも所定の速度以上で前記所定方向に関して前記第１の操作装置の姿勢の変化に応じて前記仮想カメラの姿勢が変化した場合、前記オブジェクトの姿勢を前記仮想カメラに追従して変化させることで前記オブジェクトの姿勢を前記仮想カメラの姿勢と一致させる、請求項２０に記載のゲーム処理方法。
【請求項２２】
前記オブジェクト制御ステップにおいて前記ゲーム装置は、前記第１の操作装置が備える第１の方向入力部に対する第１の方向入力に応じて、前記仮想カメラの視線方向の成分を有する所定の第１の移動方向への前記所定のオブジェクトの移動を制御するとともに、前記第１の操作装置が備える第２の方向入力部に対する第２の方向入力に応じて、前記第１の移動方向に垂直な方向でかつ前記表示部の画面の上下方向に対応する第２の移動方向への前記所定のオブジェクトの移動を制御する、請求項１８から請求項２１のいずれか１項に記載のゲーム処理方法。
【請求項２３】
前記オブジェクト制御ステップにおいて前記ゲーム装置は、前記第１および第２の方向入力部のうちの一方の方向入力部に対する第３の方向入力に応じて、前記第１および第２の移動方向に垂直な第３の移動方向への前記所定のオブジェクトの移動を制御する、請求項２２に記載のゲーム処理方法。
【請求項２４】
前記オブジェクト制御ステップにおいて前記ゲーム装置は、前記第１および第２の方向入力部のうちの他方の方向入力部に対する第４の方向入力に応じて前記オブジェクトの姿勢を制御する、請求項２３に記載のゲーム処理方法。
【請求項２５】
前記方向入力部は、少なくとも上下左右の方向を入力可能であり、
前記第１の方向入力および第２の方向入力は、上下方向の入力であって、
前記第３の方向入力および第４の方向入力は、左右方向の入力である、請求項２３または請求項２４に記載のゲーム処理方法。
【請求項２６】
前記第１の操作装置は、押圧可能なキー操作部をさらに備え、
前記オブジェクト制御ステップにおいて前記ゲーム装置は、前記キー操作部に対するキー操作に応じて前記所定のオブジェクトに所定の動作を行わせる、請求項１８から請求項２５のいずれか１項に記載のゲーム処理方法。
【請求項２７】
前記第１の操作装置は、前記表示部の画面上に設けられるタッチパネルをさらに備え、
前記オブジェクト制御ステップにおいて前記ゲーム装置は、前記タッチパネルに対する操作に応じて前記所定のオブジェクトに所定の動作を行わせる、請求項１８から請求項２６のいずれか１項に記載のゲーム処理方法。
【請求項２８】
前記表示部の画面上の位置を特定する所定の操作に応じて、当該位置に対応する前記仮想空間内の位置に向かって射撃を行う処理を実行する射撃処理ステップをさらに含む、請求項１８から請求項２７のいずれか１項に記載のゲーム処理方法。
【請求項２９】
前記第１の操作装置に対する操作と、前記第１の操作装置とは異なる１以上の第２の操作装置に対する操作とに基づいて所定のゲーム処理を実行するゲーム処理ステップと、
前記ゲーム処理ステップによるゲーム処理の結果に基づいて、前記表示部とは異なる所定の表示装置に表示するためのゲーム画像を生成する第２画像生成ステップとを含む、装置に表示するためのゲーム画像をそれぞれ生成する、請求項１８から請求項２８のいずれか１項に記載のゲーム処理方法。
【請求項３０】
前記ゲーム処理ステップにおいて前記ゲーム装置は、前記方向入力部に対する入力に基づいて前記仮想空間における３次元の各方向への移動動作が制御される第１のオブジェクトに、前記第１の操作装置に対する操作に基づいて射撃動作を行わせるとともに、前記仮想空間における所定面上を移動可能な第２のオブジェクトに、前記第２の操作装置に対する操作に基づいて移動動作および射撃動作を行わせる、請求項２９に記載のゲーム処理方法。
【請求項３１】
操作装置に対する操作に基づいてゲーム処理を実行するゲーム装置であって、
前記操作装置は、
方向入力部と、
前記操作装置の姿勢を算出するための物理量を取得するセンサ部と、
ゲーム画像を表示する表示部とを備え、
前記センサ部によって取得された物理量に基づいて前記操作装置の姿勢を算出する姿勢算出部と、
前記操作装置の姿勢に基づいて仮想空間内における仮想カメラの姿勢を制御するカメラ姿勢制御部と、
前記方向入力部に対する入力に基づいて前記仮想カメラの位置を制御するカメラ位置制御部と、
前記表示部に表示すべき前記ゲーム画像を前記仮想カメラの位置および姿勢に基づいて生成する画像生成部とを備え、
前記ゲーム装置は、前記仮想空間内における所定のオブジェクトの位置を前記方向入力部に対する入力に基づいて制御するオブジェクト制御部をさらに備え、
前記カメラ位置制御部は、前記所定のオブジェクトが前記仮想カメラの視野範囲内に含まれるように前記仮想カメラの位置を制御する、ゲーム装置。
【請求項３２】
前記オブジェクト制御部は、前記方向入力部に対する入力に基づいて前記所定のオブジェクトの姿勢を制御し、
前記カメラ姿勢制御部は、少なくとも所定方向に関して前記オブジェクト制御部によって前記所定のオブジェクトの姿勢が変化した場合、当該所定方向に関して前記所定のオブジェクトの姿勢と前記仮想カメラの姿勢とが一致するように前記仮想カメラの姿勢を変化させる、請求項３１に記載のゲーム装置。
【請求項３３】
前記オブジェクト制御部は、所定方向に関して前記操作装置の姿勢の変化に応じて前記仮想カメラの姿勢が変化した場合、当該所定方向に関して前記所定のオブジェクトの姿勢と前記仮想カメラの姿勢とが一致するように前記オブジェクトの姿勢を変化させる、請求項３１または請求項３２に記載のゲーム装置。
【請求項３４】
前記オブジェクト制御部は、少なくとも所定の速度以上で前記所定方向に関して前記操作装置の姿勢の変化に応じて前記仮想カメラの姿勢が変化した場合、前記オブジェクトの姿勢を前記仮想カメラに追従して変化させることで前記オブジェクトの姿勢を前記仮想カメラの姿勢と一致させる、請求項３３に記載のゲーム装置。
【請求項３５】
前記オブジェクト制御部は、前記操作装置が備える第１の方向入力部に対する第１の方向入力に応じて、前記仮想カメラの視線方向の成分を有する所定の第１の移動方向への前記所定のオブジェクトの移動を制御するとともに、前記操作装置が備える第２の方向入力部に対する第２の方向入力に応じて、前記第１の移動方向に垂直な方向でかつ前記表示部の画面の上下方向に対応する第２の移動方向への前記所定のオブジェクトの移動を制御する、請求項３１から請求項３４のいずれか１項に記載のゲーム装置。
【請求項３６】
前記オブジェクト制御部は、前記第１および第２の方向入力部のうちの一方の方向入力部に対する第３の方向入力に応じて、前記第１および第２の移動方向に垂直な第３の移動方向への前記所定のオブジェクトの移動を制御する、請求項３５に記載のゲーム装置。
【請求項３７】
前記オブジェクト制御部は、前記第１および第２の方向入力部のうちの他方の方向入力部に対する第４の方向入力に応じて前記オブジェクトの姿勢を制御する、請求項３６に記載のゲーム装置。
【請求項３８】
操作装置に対する操作に基づいてゲーム処理を実行するゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
前記操作装置は、
方向入力部と、
前記操作装置の姿勢を算出するための物理量を取得するセンサ部と、
ゲーム画像を表示する表示部とを備え、
前記センサ部によって取得された物理量に基づいて前記操作装置の姿勢を算出する姿勢算出手段と、
前記操作装置の姿勢に基づいて仮想空間内における仮想カメラの姿勢を制御するカメラ姿勢制御手段と、
前記方向入力部に対する入力に基づいて前記仮想カメラの位置を制御するカメラ位置制御手段と、
前記表示部に表示すべき前記ゲーム画像を前記仮想カメラの位置および姿勢に基づいて生成する画像生成手段として前記コンピュータを機能させ、
前記ゲームプログラムは、前記仮想空間内における所定のオブジェクトの位置を前記方向入力部に対する入力に基づいて制御するオブジェクト制御手段として前記コンピュータをさらに機能させ、
前記カメラ位置制御手段は、前記所定のオブジェクトが前記仮想カメラの視野範囲内に含まれるように前記仮想カメラの位置を制御する、ゲームプログラム。
【請求項３９】
前記オブジェクト制御手段は、前記方向入力部に対する入力に基づいて前記所定のオブジェクトの姿勢を制御し、
前記カメラ姿勢制御手段は、少なくとも所定方向に関して前記オブジェクト制御手段によって前記所定のオブジェクトの姿勢が変化した場合、当該所定方向に関して前記所定のオブジェクトの姿勢と前記仮想カメラの姿勢とが一致するように前記仮想カメラの姿勢を変化させる、請求項３８に記載のゲームプログラム。
【請求項４０】
前記オブジェクト制御手段は、所定方向に関して前記操作装置の姿勢の変化に応じて前記仮想カメラの姿勢が変化した場合、当該所定方向に関して前記所定のオブジェクトの姿勢と前記仮想カメラの姿勢とが一致するように前記オブジェクトの姿勢を変化させる、請求項３８または請求項３９に記載のゲームプログラム。
【請求項４１】
前記オブジェクト制御手段は、少なくとも所定の速度以上で前記所定方向に関して前記操作装置の姿勢の変化に応じて前記仮想カメラの姿勢が変化した場合、前記オブジェクトの姿勢を前記仮想カメラに追従して変化させることで前記オブジェクトの姿勢を前記仮想カメラの姿勢と一致させる、請求項４０に記載のゲームプログラム。
【請求項４２】
前記オブジェクト制御手段は、前記操作装置が備える第１の方向入力部に対する第１の方向入力に応じて、前記仮想カメラの視線方向の成分を有する所定の第１の移動方向への前記所定のオブジェクトの移動を制御するとともに、前記操作装置が備える第２の方向入力部に対する第２の方向入力に応じて、前記第１の移動方向に垂直な方向でかつ前記表示部の画面の上下方向に対応する第２の移動方向への前記所定のオブジェクトの移動を制御する、請求項３８から請求項４１のいずれか１項に記載のゲームプログラム。
【請求項４３】
前記オブジェクト制御手段は、前記第１および第２の方向入力部のうちの一方の方向入力部に対する第３の方向入力に応じて、前記第１および第２の移動方向に垂直な第３の移動方向への前記所定のオブジェクトの移動を制御する、請求項４２に記載のゲームプログラム。
【請求項４４】
前記オブジェクト制御手段は、前記第１および第２の方向入力部のうちの他方の方向入力部に対する第４の方向入力に応じて前記オブジェクトの姿勢を制御する、請求項４３に記載のゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム空間における複数の方向に対する入力指示を行うゲームシステム、ゲーム装置、ゲームプログラム、および、ゲーム処理方法に関する。
【背景技術】
【０００２】
従来、ゲーム空間における複数の方向に対する入力指示を行うことができるゲームシステムがある。例えば非特許文献１に記載のゲームでは、２つの方向入力手段（スティックやボタン等）を用いて、ゲーム空間内におけるプレイヤキャラクタおよび視点（仮想カメラ）の複数の移動方向に対して指示を行うことができる。具体的には、上記ゲームにおいては、コントローラに設けられたスティックを用いて、プレイヤキャラクタの前後方向の移動、および、左右方向の回転を指示することができる。さらに、コントローラに設けられた方向入力ボタンを用いて、プレイヤキャラクタの左右方向の平行移動、および、視線の上下方向の変更を指示することができる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】ゴールデンアイ００７、［ｏｎｌｉｎｅ］、２０１０年１０月２９日検索、インターネット＜ＵＲＬ：http://www.nintendo.co.jp/n01/n64/software/nus_p_ngej/＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上記非特許文献１に記載のゲームの操作方法では、２つの方向入力手段のみでオブジェクトまたは仮想カメラの移動方向を制御するので、特定の方向に対して入力指示を行うことができず、同時に指示可能な方向が十分ではない場合があった。具体的には、上記ゲームの操作方法では、プレイヤキャラクタを上下方向に移動させる指示を行うことはできない。なお、多数の方向に対する指示を可能とするためには、１種類の入力指示についてゲーム空間における２種類の方向を割り当て、切り替え操作に応じて当該２種類の方向を切り替える方法も考えられる。しかし、この方法では切り替え操作が必要となるので、上記２種類の方向に対して入力指示を同時に行うことができない。以上より、従来のゲームにおいては、複数の方向に対する入力指示については、プレイヤが入力操作を快適に行うことができない場合があった。
【０００５】
それ故、本発明の目的は、複数の方向に対する入力指示に関する操作性を向上することができるゲームシステム、ゲーム装置、ゲームプログラム、および、ゲーム処理方法を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の（１）〜（１８）の構成を採用した。
【０００７】
（１）
本発明の一例は、第１の操作装置と、当該第１の操作装置に対する操作に基づいてゲーム処理を実行するゲーム処理部とを含むゲームシステムである。
第１の操作装置は、方向入力部と、センサ部と、表示部とを備える。センサ部は、第１の操作装置の姿勢を算出するための物理量を取得する。表示部は、ゲーム画像を表示する。
ゲーム処理部は、姿勢算出部と、カメラ姿勢制御部と、カメラ位置制御部と、画像生成部とを含む。姿勢算出部は、センサ部によって取得された物理量に基づいて第１の操作装置の姿勢を算出する。カメラ姿勢制御部は、第１の操作装置の姿勢に基づいて仮想空間内における仮想カメラの姿勢を制御する。カメラ位置制御部は、方向入力部に対する入力に基づいて仮想カメラの位置を制御する。画像生成部は、表示部に表示すべきゲーム画像を仮想カメラの位置および姿勢に基づいて生成する。
【０００８】
上記「第１の操作装置」とは、方向入力部、センサ部、および表示部を備える任意の装置を含む概念であり、後述する実施形態における端末装置や、下記（１８）における携帯型ゲーム装置を含む概念である。
上記「ゲームシステム」は、第１の操作装置とゲーム処理部とを含んでいればよく、後述する実施形態や下記（１５）〜（１７）のように、複数の装置で構成されるものであってもよいし、下記（１８）における携帯型ゲーム装置のように１体のゲーム装置として構成されるものであってもよい。
上記「方向入力部」は、後述する実施形態におけるアナログスティックの他、十字ボタンや、タッチパネルや、タッチパッド等、少なくとも上下方向および左右方向の２つの方向を入力可能な入力装置であればよい。
上記「物理量」とは、それに基づいて操作装置の姿勢を算出（推測）することができればどのようなものであってもよい。また、上記「センサ部」は、このような「物理量」を検出することができればどのようなものであってもよい。例えば、「センサ部」は、後述する実施形態における角速度センサや加速度センサといった慣性センサの他、磁気センサであってもよいし、カメラであってもよい。なお、センサ部が磁気センサである場合には、磁気センサによって検出される方位の情報が上記物理量に相当する。また、センサ部がカメラである場合には、撮像された画像に関する数値（例えば各画素値）、あるいは、当該画像から得られる数値（例えば、撮像された画像内における所定の撮像対象の位置座標）が上記物理量に相当する。
上記「カメラ位置制御部」は、方向入力部に対する入力から直接、仮想カメラの位置を算出してもよいし、下記（２）や後述する実施形態のように、方向入力部に対する入力に基づいて制御される所定のオブジェクトの位置に応じて仮想カメラの位置を制御するものであってもよい。
【０００９】
上記（１）の構成によれば、複数の方向入力部に対する操作によって仮想カメラの位置が制御されるとともに、第１の操作装置の姿勢を変化させる操作によって仮想カメラの姿勢が制御される。つまり、プレイヤは、複数の方向入力部を用いて複数種類の方向入力指示を行うことができるとともに、第１の操作装置の姿勢を変化させる操作によっても方向入力指示を行うことができる。しかも、プレイヤは、これらの方向入力指示を同時に行うことができ、仮想カメラの移動操作および回転操作を同時に行うことができる。以上のように、上記（１）の構成によれば、複数の方向に対する入力指示に関する操作性を向上することができる。
【００１０】
また、上記（１）の構成によれば、仮想カメラの姿勢は第１の操作装置の姿勢に基づいて制御されるので、プレイヤは第１の操作装置の姿勢を変化させる操作によって、第１の操作装置に表示されるゲーム画像の視線方向を容易かつ直感的な操作で変化させることができる。
【００１１】
（２）
ゲーム処理部は、仮想空間内における所定のオブジェクトの位置を方向入力部に対する入力に基づいて制御するオブジェクト制御部をさらに備えていてもよい。このとき、カメラ位置制御部は、所定のオブジェクトが仮想カメラの視野範囲内に含まれるように仮想カメラの位置を制御する。
【００１２】
上記（２）の構成によれば、プレイヤは、方向入力部に対する操作によって所定のオブジェクト（および仮想カメラ）を移動させることができるとともに、第１の操作装置の姿勢を変化させる操作によって、当該所定のオブジェクトを見る視点および視線を変化させることができる。これによれば、所定のオブジェクトを移動させつつ、当該オブジェクトの周囲を見回すといったゲーム操作を容易に行うことができる。
【００１３】
（３）
オブジェクト制御部は、方向入力部に対する入力に基づいて所定のオブジェクトの姿勢を制御してもよい。このとき、カメラ姿勢制御部は、少なくとも所定方向に関してオブジェクト制御部によって所定のオブジェクトの姿勢が変化した場合、当該所定方向に関して所定のオブジェクトの姿勢と仮想カメラの姿勢とが一致するように仮想カメラの姿勢を変化させる。
【００１４】
上記（３）の構成によれば、プレイヤは、方向入力部に対する操作によって所定のオブジェクトの姿勢を変化させることができる。また、上記（３）の構成によれば、所定方向に関して、方向入力部に対する操作によって所定のオブジェクトの姿勢が変化した場合には、所定のオブジェクトの姿勢に一致するように仮想カメラの姿勢も変化する。これによれば、上記所定方向に関しては所定のオブジェクトと仮想カメラとの向きが一致するので、ゲーム画像における視線方向と、ゲーム画像に含まれる操作対象（オブジェクト）の向きとが異なることによる違和感を防止することができ、当該オブジェクトの操作性をより向上することができる。
【００１５】
（４）
オブジェクト制御部は、所定方向に関して第１の操作装置の姿勢の変化に応じて仮想カメラの姿勢が変化した場合、当該所定方向に関して所定のオブジェクトの姿勢と仮想カメラの姿勢とが一致するようにオブジェクトの姿勢を変化させてもよい。
【００１６】
上記（４）の構成によれば、所定方向に関して、第１の操作装置の姿勢を変化させる操作によって仮想カメラの姿勢が変化した場合には、仮想カメラの姿勢に一致するように所定のオブジェクトの姿勢も変化する。これによれば、上記所定方向に関しては所定のオブジェクトと仮想カメラとの向きが一致するので、ゲーム画像における視線方向と、ゲーム画像に含まれる操作対象の向きとが異なることによる違和感を防止することができ、当該オブジェクトの操作性をより向上することができる。
【００１７】
（５）
オブジェクト制御部は、少なくとも所定の速度以上で所定方向に関して第１の操作装置の姿勢の変化に応じて仮想カメラの姿勢が変化した場合、オブジェクトの姿勢を仮想カメラに追従して変化させることでオブジェクトの姿勢を仮想カメラの姿勢と一致させてもよい。
【００１８】
上記（５）においては、オブジェクト制御部は、少なくとも所定の速度以上で仮想カメラの姿勢が変化した場合に、オブジェクトの姿勢を仮想カメラの姿勢に追従させればよい。したがって、上記所定の速度よりも低い速度で仮想カメラの姿勢が変化する場合には、オブジェクトの姿勢を仮想カメラの姿勢に合わせて（遅れずに）変化させてもよいし、オブジェクトの姿勢を仮想カメラの姿勢に追従して（遅れが生じるように）変化させてもよい。
【００１９】
上記（５）の構成によれば、第１の操作装置の姿勢を変化させる操作によって所定の速度以上で仮想カメラの姿勢が変化する場合には、オブジェクトの姿勢は、仮想カメラの姿勢に追従して変化する。これによれば、仮想カメラの姿勢変化に合わせてオブジェクトの姿勢が急激に変化することを防止することができるので、オブジェクトの動作が不自然になることを防止することができる。
【００２０】
（６）
オブジェクト制御部は、第１の操作装置が備える第１の方向入力部に対する第１の方向入力に応じて、仮想カメラの視線方向の成分を有する所定の第１の移動方向への所定のオブジェクトの移動を制御する。それとともに、オブジェクト制御部は、第１の操作装置が備える第２の方向入力部に対する第２の方向入力に応じて、第１の移動方向に垂直な方向でかつ表示部の画面の上下方向に対応する第２の移動方向への所定のオブジェクトの移動を制御してもよい。
【００２１】
上記「第１の移動方向」は、当該視線方向と平行な方向に限らず、仮想カメラの視線方向の成分を有する方向であればよい。また、上記「第２の移動方向」は、第１の移動方向に垂直な方向であって、かつ、その方向に所定のオブジェクトが移動した場合に、画面上において所定のオブジェクトが画面の上下方向に移動しているように見える方向であればよい。
【００２２】
上記（６）の構成によれば、プレイヤは、第１の方向入力部と第２の方向入力部とに対して操作を行うことで、所定のオブジェクトを仮想カメラの視線方向に移動させるとともに、画面の上下方向に移動させることができる。これによれば、プレイヤは、画面の奥行き方向と上下方向との両方にオブジェクトを同時に移動させることができるので、３次元空間内におけるオブジェクトの移動操作の操作性を向上することができる。
【００２３】
（７）
オブジェクト制御部は、第１および第２の方向入力部のうちの一方の方向入力部に対する第３の方向入力に応じて、第１および第２の移動方向に垂直な第３の移動方向への所定のオブジェクトの移動を制御してもよい。
【００２４】
上記（７）の構成によれば、プレイヤは、２つの方向入力部に対する操作によって所定のオブジェクトを３次元空間の各方向に移動させることができるので、３次元空間におけるオブジェクトの移動操作をより容易にすることができる。
【００２５】
（８）
オブジェクト制御部は、第１および第２の方向入力部のうちの他方の方向入力部に対する第４の方向入力に応じてオブジェクトの姿勢を制御してもよい。
【００２６】
上記（８）の構成によれば、プレイヤは、方向入力部によってオブジェクトを３次元空間の各方向に移動させるだけでなく、オブジェクトの姿勢を変化させることができる。
【００２７】
（９）
方向入力部は、少なくとも上下左右の方向を入力可能であってもよい。このとき、第１の方向入力および第２の方向入力は、上下方向の入力である。第３の方向入力および第４の方向入力は、左右方向の入力である。
【００２８】
上記（９）の構成によれば、画面の奥行き方向および上下方向に対応するオブジェクトの移動が、方向入力部に対する上下方向の入力に応じて行われるので、プレイヤは、自然な操作感覚でオブジェクトを容易に操作することができる。
【００２９】
（１０）
第１の操作装置は、押圧可能なキー操作部をさらに備えていてもよい。このとき、オブジェクト制御部は、キー操作部に対するキー操作に応じて所定のオブジェクトに所定の動作を行わせる。
【００３０】
上記（１０）の構成によれば、プレイヤは、キー操作部に対する操作によってオブジェクトに所定の動作を行わせることができる。これによれば、所定のオブジェクトを移動させつつ、当該オブジェクトの周囲を見回しながら、適宜のタイミングで当該オブジェクトに所定の動作を行わせるといったゲーム操作を容易に行うことができる。
【００３１】
（１１）
第１の操作装置は、表示部の画面上に設けられるタッチパネルをさらに備えていてもよい。このとき、オブジェクト制御部は、タッチパネルに対する操作に応じて所定のオブジェクトに所定の動作を行わせる。
【００３２】
上記（１１）の構成によれば、プレイヤは、タッチパネルに対する操作によってオブジェクトに所定の動作を行わせることができる。これによれば、所定のオブジェクトを移動させつつ、当該オブジェクトの周囲を見回しながら、適宜のタイミングで当該オブジェクトに所定の動作を行わせるといったゲーム操作を容易に行うことができる。
【００３３】
（１２）
複数の方向入力部は、表示部の左右に設けられる第１の方向入力部と第２の方向入力部であってもよい。このとき、各方向入力部は、２次元の任意の方向に移動可能な操作部材を移動させることによる入力操作が可能である。
【００３４】
上記（１２）の構成によれば、２つの方向入力部が表示部の左右に設けられるので、プレイヤは、画面の左右両側を把持することによって、２つの方向入力部に対する操作を行うことができるとともに、第１の操作装置の姿勢を変化させる操作を行うことができる。これによれば、これらの操作を同時に行うことが容易になるので、第１の操作装置の操作性を向上することができる。また、プレイヤは、操作部材に対する入力操作によって、詳細な方向を入力することができる。
【００３５】
（１３）
センサ部は慣性センサを含んでいてもよい。
【００３６】
上記「慣性センサ」は、どのような慣性センサでもよいが、例えば３軸の加速度センサおよび３軸のジャイロセンサであってもよい。
【００３７】
上記（１３）の構成によれば、慣性センサを用いることによって、第１操作装置の動きや姿勢を精度良く検出することができる。
【００３８】
（１４）
ゲーム処理部は、表示部の画面上の位置を特定する所定の操作に応じて、当該位置に対応する仮想空間内の位置に向かって射撃を行う処理を実行してもよい。
【００３９】
上記（１４）の構成によれば、画面に向かって射撃操作を行う射撃ゲームにおいて、プレイヤは、第１の操作装置を用いたゲーム操作によってゲーム画像の視点の移動および視線方向の変更を容易に行うことができる。すなわち、上記（１４）の構成によれば、視点の移動や視線方向の変更といった複雑な操作を第１の操作装置によって簡単に行うことができる射撃ゲームを提供することができる。
【００４０】
（１５）
ゲームシステムは、ゲーム装置と、１以上の第２の操作装置とを含んでいてもよい。ゲーム装置は、ゲーム処理部を備え、表示部とは異なる所定の表示装置にゲーム画像を出力する。第２の操作装置は、第１の操作装置とは異なる操作装置である。このとき、ゲーム処理部は、第１の操作装置に対する操作と第２の操作装置に対する操作に基づいてゲーム処理を実行する。画像生成部は、表示部に表示するためのゲーム画像、および、所定の表示装置に表示するためのゲーム画像をそれぞれ生成する。
【００４１】
上記「ゲーム装置」は、ゲーム処理を実行し、ゲーム処理に基づいて画像を生成する情報処理装置であればどのようなものであってもよい。上記ゲーム装置は、ゲーム専用の情報処理装置であってもよいし、一般的なパーソナルコンピュータのような多用途の情報処理装置であってもよい。
上記「第２操作装置」は、後述する実施形態におけるコントローラの他、プレイヤがゲーム操作のための入力を行うことが可能な操作装置であればどのようなものであってもよい。
【００４２】
上記（１５）の構成によれば、第１の操作装置を操作するプレイヤ（第１プレイヤと呼ぶ）が表示部に表示されるゲーム画像を見てプレイし、第２の操作装置を操作するプレイヤ（第２プレイヤ）が所定の表示装置に表示されるゲーム画像を見てプレイする、複数人プレイのゲームを提供することができる。ここで、第１プレイヤは、第１の操作装置の姿勢を変化させることで視線方向を自由に変化させることができるので、仮想空間内を広く見渡すことができる。そのため、例えば第２の操作装置が複数であり、１人の第１プレイヤと複数人の第２プレイヤとが対戦する場合であっても、第１プレイヤが不利になりすぎることがないので、上記（１５）の構成は、１人対複数人の対戦ゲームに適用すると有効である。
【００４３】
（１６）
ゲーム処理部は、方向入力部に対する入力に基づいて仮想空間における３次元の各方向への移動動作が制御される第１のオブジェクトに、第１の操作装置に対する操作に基づいて射撃動作を行わせるとともに、仮想空間における所定面上を移動可能な第２のオブジェクトに、第２の操作装置に対する操作に基づいて移動動作および射撃動作を行わせてもよい。
【００４４】
上記「第１のオブジェクト」は、後述する実施形態におけるヘリコプターの他、第１の操作装置に対する操作に基づいて仮想空間における３次元の各方向に移動可能なオブジェクトであればどのようなものであってよい。
上記「第２のオブジェクト」は、後述する実施形態におけるプレイヤオブジェクトの他、第１の操作装置に対する操作に基づいて仮想空間における所定面（例えば仮想空間に形成される地面）上を移動可能なオブジェクトであればどのようなものであってもよい。
【００４５】
上記（１６）の構成によれば、仮想空間を３次元的に移動可能な第１のオブジェクトと、仮想空間の所定面上を移動可能な第２のオブジェクトとが対戦する形式の射撃ゲームを実現することができる。ここで、第１の操作装置を操作するプレイヤは、３次元空間の前後、左右、および上下方向に第１のオブジェクトを移動させることができるとともに、視線方向（射撃方向）を自由に変化させることができる。すなわち、上記プレイヤは、第１オブジェクトの移動動作および射撃動作の操作を第１の操作装置によって容易に行うことができる。
【００４６】
（１７）
ゲームシステムは、ゲーム処理部を備えるゲーム装置を含んでいてもよい。このとき、ゲーム装置は、ゲーム画像を圧縮して無線送信する画像送信部を備える。第１の操作装置は、画像送信部によって送信されてくる圧縮されたゲーム画像を受信して伸張する画像受信部を備える。表示部は、画像受信部によって伸張されたゲーム画像を表示する。
【００４７】
上記（１７）の構成によれば、プレイヤが把持して使用する第１の操作装置と、第１の操作装置とは別体のゲーム装置とによってゲームシステムが構成される。ここで、第１の操作装置は画像データの伸張処理を少なくとも実行すればよく、ゲーム処理についてはゲーム装置側で実行すればよく、第１の操作装置側の処理負荷を所定の範囲に抑えることができる。第１の操作装置には高い情報処理能力が要求されないので、プレイヤが手に持って使用する第１の操作装置の小型化・軽量化が容易になり、製造も容易になる。さらに、上記（１７）の構成によれば、ゲーム画像は、圧縮されてゲーム装置から第１の操作装置へ送信されるので、ゲーム画像を高速に無線送信することができ、ゲーム処理が行われてからゲーム画像が表示されるまでの遅延を少なくすることができる。
【００４８】
（１８）
第１の操作装置は、ゲーム処理部を含む携帯型ゲーム装置であってもよい。
【００４９】
上記（１８）の構成によれば、携帯型ゲーム装置によってゲームシステムを実現することができる。
【００５０】
本発明の別の一例は、上記（１）〜（１８）のゲームシステムにおけるゲーム処理部を備えるゲーム装置の形態であってもよい。また、本発明の別の一例は、ゲーム装置のコンピュータを上記ゲーム処理部における各部と同等の手段として機能させるゲームプログラムの形態であってもよい。さらに、本発明の別の一例は、上記（１）〜（１８）の入力システムまたはゲームシステムにおいて行われるゲーム処理方法の形態であってもよい。
【発明の効果】
【００５１】
本発明によれば、複数の方向入力部に対する操作によって仮想カメラの位置を制御することができるとともに、第１の操作装置の姿勢を変化させる操作によって仮想カメラの姿勢を制御することができる。これによって、複数の方向入力部に対する操作と、第１の操作装置の姿勢を変化させる操作とを同時に行うことができ、複数の方向に対する入力指示に関する操作性を向上することができる。
【図面の簡単な説明】
【００５２】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の内部構成を示すブロック図
【図３】コントローラ５の外観構成を示す斜視図
【図４】コントローラ５の外観構成を示す斜視図
【図５】コントローラ５の内部構造を示す図
【図６】コントローラ５の内部構造を示す図
【図７】コントローラ５の構成を示すブロック図
【図８】端末装置７の外観構成を示す図
【図９】ユーザが端末装置７を把持した様子を示す図
【図１０】端末装置７の内部構成を示すブロック図
【図１１】本実施形態における端末用ゲーム画像の一例を示す図
【図１２】本実施形態におけるテレビ用ゲーム画像の一例を示す図
【図１３】左アナログスティック５３Ａに対する操作とヘリコプター８０の動作との対応を示す図
【図１４】右アナログスティック５３Ｂに対する操作とヘリコプター８０の動作との対応を示す図
【図１５】端末装置７の姿勢と仮想カメラの姿勢との対応を示す図
【図１６】仮想カメラ９０の姿勢変化に追従してヘリコプター８０の姿勢が変化する様子を示す図
【図１７】仮想カメラ９０の姿勢変化に追従してヘリコプター８０の姿勢が変化する様子を示す図
【図１８】ゲーム処理において用いられる各種データを示す図
【図１９】ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャート
【図２０】図１９に示すゲーム制御処理（ステップＳ４）の詳細な流れを示すフローチャート
【図２１】図２０に示す姿勢算出処理（ステップＳ１１）の詳細な流れを示すフローチャート
【図２２】図２０に示すオブジェクト制御処理（ステップＳ１２）の詳細な流れを示すフローチャート
【発明を実施するための形態】
【００５３】
［１．ゲームシステムの全体構成］
以下、図面を参照して、本発明の一実施形態に係るゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。図１において、ゲームシステム１は、テレビジョン受像器等に代表される据置型のディスプレイ装置（以下、「テレビ」と記載する）２、据置型のゲーム装置３、光ディスク４、コントローラ５、マーカ装置６、および、端末装置７を含む。ゲームシステム１は、コントローラ５を用いたゲーム操作に基づいてゲーム装置３においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をテレビ２および／または端末装置７に表示するものである。
【００５４】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるための情報処理プログラム（典型的にはゲームプログラム）が記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されている情報処理プログラムを読み出して実行することによってゲーム処理を実行する。
【００５５】
ゲーム装置３には、テレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理によって得られるゲーム画像を表示する。テレビ２はスピーカ２ａ（図２）を有しており、スピーカ２ａは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、ゲーム装置３と据置型の表示装置とは一体となっていてもよい。また、ゲーム装置３とテレビ２との通信は無線通信であってもよい。
【００５６】
テレビ２の画面の周辺（図１では画面の上側）には、マーカ装置６が設置される。詳細は後述するが、ユーザ（プレイヤ）はコントローラ５を動かすゲーム操作を行うことができ、マーカ装置６は、コントローラ５の動きや位置や姿勢等をゲーム装置３が算出するために用いられる。マーカ装置６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）であり、テレビ２の前方に向かって赤外光を出力する。マーカ装置６はゲーム装置３に接続されており、ゲーム装置３はマーカ装置６が備える各赤外ＬＥＤの点灯を制御することが可能である。なお、マーカ装置６は可搬型であり、ユーザはマーカ装置６を自由な位置に設置することができる。図１ではマーカ装置６がテレビ２の上に設置された態様を表しているが、マーカ装置６を設置する位置および向きは任意である。
【００５７】
コントローラ５は、自機に対して行われた操作の内容を表す操作データをゲーム装置３に与えるものである。コントローラ５とゲーム装置３とは無線通信によって通信可能である。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。また、本実施形態では、ゲームシステム１に含まれるコントローラ５は１つとするが、ゲーム装置３は複数のコントローラと通信可能であり、所定台数のコントローラを同時に使用することによって複数人でゲームをプレイすることが可能である。コントローラ５の詳細な構成については後述する。
【００５８】
端末装置７は、ユーザが把持可能な程度の大きさであり、ユーザは端末装置７を手に持って動かしたり、あるいは、端末装置７を自由な位置に配置したりして使用することが可能である。詳細な構成は後述するが、端末装置７は、表示手段であるＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）５１、および、入力手段（後述するタッチパネル５２やジャイロセンサ６４等）を備える。端末装置７とゲーム装置３とは無線（有線であってもよい）によって通信可能である。端末装置７は、ゲーム装置３で生成された画像（例えばゲーム画像）のデータをゲーム装置３から受信し、画像をＬＣＤ５１に表示する。なお、本実施形態では表示装置としてＬＣＤを用いているが、端末装置７は、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置等、他の任意の表示装置を有していてもよい。また、端末装置７は、自機に対して行われた操作の内容を表す操作データをゲーム装置３に送信する。
【００５９】
［２．ゲーム装置３の内部構成］
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の内部構成を示すブロック図である。ゲーム装置３は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００６０】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００６１】
システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００６２】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。なお、本実施形態においては、ゲーム装置３は、テレビ２に表示するゲーム画像と、端末装置７に表示するゲーム画像との両方を生成する。以下では、テレビ２に表示されるゲーム画像を「テレビ用ゲーム画像」と呼び、端末装置７に表示されるゲーム画像を「端末用ゲーム画像」と呼ぶことがある。
【００６３】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。なお、本実施形態においては、ゲーム音声についてもゲーム画像と同様、テレビ２のスピーカから出力するゲーム音声と、端末装置７のスピーカから出力するゲーム音声との両方が生成される。以下では、テレビ２から出力されるゲーム音声を「テレビ用ゲーム音声」と呼び、端末装置７から出力されるゲーム音声を「端末用ゲーム音声」と呼ぶことがある。
【００６４】
上記のようにゲーム装置３において生成される画像および音声のうちで、テレビ２において出力される画像および音声のデータは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、テレビ２に画像が表示されるとともにスピーカ２ａから音が出力される。
【００６５】
また、ゲーム装置３において生成される画像および音声のうちで、端末装置７において出力される画像および音声のデータは、入出力プロセッサ１１ａ等によって端末装置７へ送信される。入出力プロセッサ１１ａ等による端末装置７へのデータの送信については後述する。
【００６６】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、ネットワーク通信モジュール１８、コントローラ通信モジュール１９、拡張コネクタ２０、メモリカード用コネクタ２１、コーデックＬＳＩ２７に接続される。また、ネットワーク通信モジュール１８にはアンテナ２２が接続される。コントローラ通信モジュール１９にはアンテナ２３が接続される。コーデックＬＳＩ２７は端末通信モジュール２８に接続され、端末通信モジュール２８にはアンテナ２９が接続される。
【００６７】
ゲーム装置３は、インターネット等のネットワークに接続して外部情報処理装置（例えば他のゲーム装置や、各種サーバ等）と通信を行うことが可能である。すなわち、入出力プロセッサ１１ａは、ネットワーク通信モジュール１８およびアンテナ２２を介してインターネット等のネットワークに接続し、ネットワークに接続される外部情報処理装置と通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、ネットワーク通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、外部情報処理装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２およびネットワーク通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と外部情報処理装置との間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。また、フラッシュメモリ１７にはゲームプログラムが記憶されてもよい。
【００６８】
また、ゲーム装置３は、コントローラ５からの操作データを受信することが可能である。すなわち、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３およびコントローラ通信モジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００６９】
また、ゲーム装置３は、端末装置７との間で画像や音声等のデータを送受信することが可能である。入出力プロセッサ１１ａは、端末装置７へゲーム画像（端末用ゲーム画像）を送信する場合、ＧＰＵ１１ｂが生成したゲーム画像のデータをコーデックＬＳＩ２７へ出力する。コーデックＬＳＩ２７は、入出力プロセッサ１１ａからの画像データに対して所定の圧縮処理を行う。端末通信モジュール２８は、端末装置７との間で無線通信を行う。したがって、コーデックＬＳＩ２７によって圧縮された画像データは、端末通信モジュール２８によってアンテナ２９を介して端末装置７へ送信される。なお、本実施形態では、ゲーム装置３から端末装置７へ送信される画像データはゲームに用いるものであり、ゲームにおいては表示される画像に遅延が生じるとゲームの操作性に悪影響が出る。そのため、ゲーム装置３から端末装置７への画像データの送信に関しては、できるだけ遅延が生じないようにすることが好ましい。したがって、本実施形態では、コーデックＬＳＩ２７は、例えばＨ．２６４規格といった高効率の圧縮技術を用いて画像データを圧縮する。なお、それ以外の圧縮技術を用いてもよいし、通信速度が十分である場合には無圧縮で画像データを送信する構成であってもよい。また、端末通信モジュール２８は、例えばＷｉ−Ｆｉの認証を受けた通信モジュールであり、例えばＩＥＥＥ８０２．１１ｎ規格で採用されるＭＩＭＯ（Ｍｕｌｔｉｐｌｅ  Ｉｎｐｕｔ  Ｍｕｌｔｉｐｌｅ  Ｏｕｔｐｕｔ）の技術を用いて端末装置７との間の無線通信を高速に行うようにしてもよいし、他の通信方式を用いてもよい。
【００７０】
また、ゲーム装置３は、画像データの他、音声データを端末装置７へ送信する。すなわち、入出力プロセッサ１１ａは、ＤＳＰ１１ｃが生成した音声データを、コーデックＬＳＩ２７を介して端末通信モジュール２８へ出力する。コーデックＬＳＩ２７は、音声データに対しても画像データと同様に圧縮処理を行う。音声データに対する圧縮の方式は、どのような方式であってもよいが、圧縮率が高く、音声の劣化が少ない方式が好ましい。また、他の実施形態においては、音声データは圧縮されずに送信されてもよい。端末通信モジュール２８は、圧縮された画像データおよび音声データを、アンテナ２９を介して端末装置７へ送信する。
【００７１】
さらに、ゲーム装置３は、上記画像データおよび音声データの他に、必要に応じて各種の制御データを端末装置７へ送信する。制御データは、端末装置７が備える構成要素に対する制御指示を表すデータであり、例えばマーカ部（図１０に示すマーカ部５５）の点灯を制御する指示や、カメラ（図１０に示すカメラ５６）の撮像を制御する指示等を表す。入出力プロセッサ１１ａは、ＣＰＵ１０の指示に応じて制御データを端末装置７へ送信する。なお、この制御データに関して、本実施形態ではコーデックＬＳＩ２７はデータの圧縮処理を行わないが、他の実施形態においては圧縮処理を行うようにしてもよい。なお、ゲーム装置３から端末装置７へ送信される上述のデータは、必要に応じて暗号化がされていてもよいし、されていなくともよい。
【００７２】
また、ゲーム装置３は、端末装置７から各種データを受信可能である。詳細は後述するが、本実施形態では、端末装置７は、操作データ、画像データ、および音声データを送信する。端末装置７から送信される各データはアンテナ２９を介して端末通信モジュール２８によって受信される。ここで、端末装置７からの画像データおよび音声データは、ゲーム装置３から端末装置７への画像データおよび音声データと同様の圧縮処理が施されている。したがって、これら画像データおよび音声データについては、端末通信モジュール２８からコーデックＬＳＩ２７に送られ、コーデックＬＳＩ２７によって伸張処理が施されて入出力プロセッサ１１ａに出力される。一方、端末装置７からの操作データに関しては、画像や音声に比べてデータ量が少ないので、圧縮処理が施されていなくともよい。また、必要に応じて暗号化がされていてもよいし、されていなくともよい。したがって、操作データは、端末通信モジュール２８で受信された後、コーデックＬＳＩ２７を介して入出力プロセッサ１１ａに出力される。入出力プロセッサ１１ａは、端末装置７から受信したデータを、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００７３】
また、ゲーム装置３は、他の機器や外部記憶媒体に接続することが可能である。すなわち、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタである。拡張コネクタ２０に対しては、外部記憶媒体のようなメディアを接続したり、他のコントローラ等の周辺機器を接続したり、有線の通信用コネクタを接続することによってネットワーク通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００７４】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、図示しないＡＣアダプタによって外部の電源からゲーム装置３の各構成要素に対して電力が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００７５】
なお、他の実施形態においては、ゲーム装置３が備える各構成要素のうちでいくつかの構成要素は、ゲーム装置３とは別体の拡張機器として構成されてもよい。このとき、拡張機器は、例えば上記拡張コネクタ２０を介してゲーム装置３と接続されるようにしてもよい。具体的には、拡張機器は、例えば上記コーデックＬＳＩ２７、端末通信モジュール２８およびアンテナ２９の各構成要素を備えており、拡張コネクタ２０に対して着脱可能であってもよい。これによれば、上記各構成要素を備えていないゲーム装置に対して上記拡張機器を接続することによって、当該ゲーム装置を端末装置７と通信可能な構成とすることができる。
【００７６】
［３．コントローラ５の構成］
次に、図３〜図７を参照して、コントローラ５について説明する。図３は、コントローラ５の外観構成を示す斜視図である。図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００７７】
図３および図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。ユーザは、コントローラ５に設けられたボタンを押下すること、および、コントローラ５自体を動かしてその位置や姿勢（傾き）を変えることによってゲーム操作を行うことができる。
【００７８】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。本明細書では、これらのボタン３２ａ〜３２ｈが設けられるハウジング３１の上面を「ボタン面」と呼ぶことがある。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行する情報処理プログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、ユーザがホームボタン３２ｆまたは電源ボタン３２ｈを誤って押下することを防止することができる。
【００７９】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、他のセンサユニットやコントローラ）を接続するために利用される。また、ハウジング３１の後面におけるコネクタ３３の両側には、上記他の機器が容易に離脱することを防止するために係止穴３３ａが設けられている。
【００８０】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をユーザに通知したり、コントローラ５の電池残量をユーザに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００８１】
また、コントローラ５は撮像情報演算部３５（図６）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００８２】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４７（図５）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００８３】
次に、図５および図６を参照して、コントローラ５の内部構造について説明する。図５および図６は、コントローラ５の内部構造を示す図である。なお、図５は、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６は、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６に示す斜視図は、図５に示す基板３０を裏面から見た斜視図となっている。
【００８４】
図５において、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、およびスピーカ４７等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ軸方向）に関してコントローラ５の中心よりも前方に配置されている。また、無線モジュール４４（図６）およびアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００８５】
一方、図６において、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００８６】
さらに、基板３０の下主面上には、上記マイコン４２およびバイブレータ４６が設けられている。バイブレータ４６は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４６が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４６は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４６がコントローラ５の中心よりも端側に配置することによって、バイブレータ４６の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５および図６に示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４７に音声信号を出力するアンプ等を備えている。
【００８７】
なお、図３〜図６に示したコントローラ５の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。また、本実施形態では、撮像手段による撮像方向はＺ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【００８８】
図７は、コントローラ５の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、撮像情報演算部３５、通信部３６、加速度センサ３７、およびジャイロセンサ４８を備えている。コントローラ５は、自機に対して行われた操作内容を表すデータを操作データとしてゲーム装置３へ送信するものである。なお、以下では、コントローラ５が送信する操作データを「コントローラ操作データ」と呼び、端末装置７が送信する操作データを「端末操作データ」と呼ぶことがある。
【００８９】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を表す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００９０】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００９１】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、撮像対象となる端末装置７のマーカ部５５およびマーカ装置６は、赤外光を出力するマーカで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、撮像対象（マーカ部５５および／またはマーカ装置６）の画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（傾斜角度）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００９２】
なお、他の実施形態においては、コントローラ５は画像処理回路４１を備えていない構成であってもよく、撮像画像自体がコントローラ５からゲーム装置３へ送信されてもよい。このとき、ゲーム装置３は、画像処理回路４１と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【００９３】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。なお、加速度センサ３７は、例えば静電容量式のＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍ）型加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００９４】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ５を基準に設定されるＸＹＺ座標系（コントローラ座標系）における３次元のベクトルとして表される。
【００９５】
加速度センサ３７が検出した加速度を表すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（傾斜角度）や動きに対応して変化するので、ゲーム装置３は取得された加速度データを用いてコントローラ５の向きや動きを算出することができる。本実施形態では、ゲーム装置３は、取得された加速度データに基づいてコントローラ５の姿勢や傾斜角度等を算出する。
【００９６】
なお、加速度センサ３７（後述する加速度センサ６３についても同様）から出力される加速度の信号に基づいて、ゲーム装置３のプロセッサ（例えばＣＰＵ１０）またはコントローラ５のプロセッサ（例えばマイコン４２）等のコンピュータが処理を行うことによって、コントローラ５に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ３７を搭載するコントローラ５が静止状態であることを前提としてコンピュータ側の処理が実行される場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合）、コントローラ５が現実に静止状態であれば、検出された加速度に基づいてコントローラ５の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ３７の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かによって、コントローラ５が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ３７の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ５がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ３７からの出力に基づいてコントローラ５の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ５の傾斜方向を算出するようにしてもよい。このように、加速度センサ３７をプロセッサと組み合わせて用いることによって、コントローラ５の傾斜角度または姿勢を判定することができる。
【００９７】
一方、コントローラ５が動的な状態（コントローラ５が動かされている状態）であることを前提とする場合には、加速度センサ３７は重力加速度に加えてコントローラ５の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ５の動き方向を知ることができる。また、コントローラ５が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ５の傾きを知ることが可能である。なお、他の実施例では、加速度センサ３７は、内蔵の加速度検出手段で検出された加速度信号をマイコン４２に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ３７が静的な加速度（例えば、重力加速度）を検出するために用いられる場合、加速度信号を傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００９８】
ジャイロセンサ４８は、３軸（本実施形態では、ＸＹＺ軸）回りの角速度を検出する。本明細書では、コントローラ５の撮像方向（Ｚ軸正方向）を基準として、Ｘ軸回りの回転方向をピッチ方向、Ｙ軸回りの回転方向をヨー方向、Ｚ軸回りの回転方向をロール方向と呼ぶ。ジャイロセンサ４８は、３軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。例えば、ジャイロセンサ４８は、３軸ジャイロセンサであってもよいし、２軸ジャイロセンサと１軸ジャイロセンサとを組み合わせて３軸周りの角速度を検出するものであってもよい。ジャイロセンサ４８で検出された角速度を表すデータは、通信部３６へ出力される。また、ジャイロセンサ４８は１軸または２軸回りの角速度を検出するものであってもよい。
【００９９】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。
【０１００】
操作部３２、撮像情報演算部３５、加速度センサ３７、およびジャイロセンサ４８からマイコン４２へ出力されたデータは、一時的にメモリ４３に格納される。これらのデータは、操作データ（コントローラ操作データ）としてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３のコントローラ通信モジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ５から送信される。微弱電波信号はゲーム装置３側のコントローラ通信モジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、コントローラ５から取得した操作データを用いてゲーム処理を行う。なお、通信部３６からコントローラ通信モジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で操作データをゲーム装置３のコントローラ通信モジュール１９へ出力する。
【０１０１】
以上のように、コントローラ５は、自機に対する操作を表す操作データとして、マーカ座標データ、加速度データ、角速度データ、および操作ボタンデータを送信可能である。また、ゲーム装置３は、上記操作データをゲーム入力として用いてゲーム処理を実行する。したがって、上記コントローラ５を用いることによって、ユーザは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ５自体を動かすゲーム操作を行うことができる。例えば、コントローラ５を任意の姿勢に傾ける操作、コントローラ５によって画面上の任意の位置を指示する操作、および、コントローラ５自体を動かす操作等を行うことが可能となる。
【０１０２】
また、本実施形態において、コントローラ５は、ゲーム画像を表示する表示手段を有しないが、例えば電池残量を表す画像等を表示するための表示手段を有していてもよい。
【０１０３】
［４．端末装置７の構成］
次に、図８〜図１０を参照して、端末装置７の構成について説明する。図８は、端末装置７の外観構成を示す図である。図８における（ａ）図は端末装置７の正面図であり、（ｂ）図は上面図であり、（ｃ）図は右側面図であり、（ｄ）図は下面図である。また、図９は、ユーザが端末装置７を把持した様子を示す図である。
【０１０４】
図８に示されるように、端末装置７は、大略的には横長の長方形の板状形状であるハウジング５０を備える。ハウジング５０は、ユーザが把持することができる程度の大きさである。したがって、ユーザは、端末装置７を持って動かしたり、端末装置７の配置位置を変更したりすることができる。
【０１０５】
端末装置７は、ハウジング５０の表面にＬＣＤ５１を有する。ＬＣＤ５１は、ハウジング５０の表面の中央付近に設けられる。したがって、ユーザは、図９に示すようにＬＣＤ５１の両側部分のハウジング５０を持つことによって、ＬＣＤ５１の画面を見ながら端末装置を持って動かすことができる。なお、図９ではユーザがＬＣＤ５１の左右両側の部分のハウジング５０を持つことで端末装置７を横持ちで（横に長い向きにして）持つ例を示しているが、端末装置７を縦持ちで（縦に長い向きにして）持つことも可能である。
【０１０６】
図８の（ａ）図に示すように、端末装置７は、操作手段として、ＬＣＤ５１の画面上にタッチパネル５２を有する。本実施形態では、タッチパネル５２は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。また、タッチパネル５２はシングルタッチ方式でもよいし、マルチタッチ方式であってもよい。本実施形態では、タッチパネル５２として、ＬＣＤ５１の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル５２の解像度とＬＣＤ５１の解像度が一致している必要はない。タッチパネル５２に対する入力は通常タッチペンを用いて行われるが、タッチペンに限らずユーザの指でタッチパネル５２に対する入力をすることも可能である。なお、ハウジング５０には、タッチパネル５２に対する操作を行うために用いられるタッチペンを収納するための収納穴が設けられていてもよい。このように、端末装置７はタッチパネル５２を備えるので、ユーザは、端末装置７を動かしながらタッチパネル５２を操作することができる。つまりユーザは、ＬＣＤ５１の画面を動かしつつ、その画面に対して直接（タッチパネル５２によって）入力を行うことができる。
【０１０７】
図８に示すように、端末装置７は、操作手段として、２つのアナログスティック５３Ａおよび５３Ｂと、複数のボタン５４Ａ〜５４Ｌとを備えている。各アナログスティック５３Ａおよび５３Ｂは、方向を指示するデバイスである。各アナログスティック５３Ａおよび５３Ｂは、ユーザの指で操作されるスティック部がハウジング５０の表面に対して任意の方向（上下左右および斜め方向の任意の角度）にスライド（または傾倒）することができるように構成されている。また、左アナログスティック５３ＡはＬＣＤ５１の画面の左側に、右アナログスティック５３ＢはＬＣＤ５１の画面の右側にそれぞれ設けられる。したがって、ユーザは、左右いずれの手でもアナログスティックを用いて方向を指示する入力を行うことができる。また、図９に示すように、各アナログスティック５３Ａおよび５３Ｂは、ユーザが端末装置７の左右部分を把持した状態で操作可能な位置に設けられるので、ユーザは、端末装置７を持って動かす場合においても各アナログスティック５３Ａおよび５３Ｂを容易に操作することができる。
【０１０８】
各ボタン５４Ａ〜５４Ｌは、所定の入力を行うための操作手段である。以下に示すように、各ボタン５４Ａ〜５４Ｌは、ユーザが端末装置７の左右部分を把持した状態で操作可能な位置に設けられる（図９参照）。したがって、ユーザは、端末装置７を持って動かす場合においてもこれらの操作手段を容易に操作することができる。
【０１０９】
図８の（ａ）図に示すように、ハウジング５０の表面には、各操作ボタン５４Ａ〜５４Ｌのうち、十字ボタン（方向入力ボタン）５４Ａと、ボタン５４Ｂ〜５４Ｈとが設けられる。つまり、これらのボタン５４Ａ〜５４Ｇは、ユーザの親指で操作可能な位置に配置されている（図９参照）。
【０１１０】
十字ボタン５４Ａは、ＬＣＤ５１の左側であって、左アナログスティック５３Ａの下側に設けられる。つまり、十字ボタン５４Ａはユーザの左手で操作可能な位置に配置されている。十字ボタン５４Ａは、十字の形状を有しており、上下左右の方向を指示することが可能なボタンである。また、ボタン５４Ｂ〜５４Ｄは、ＬＣＤ５１の下側に設けられる。これら３つのボタン５４Ｂ〜５４Ｄは、左右両方の手で操作可能な位置に配置されている。また、４つのボタン５４Ｅ〜５４Ｈは、ＬＣＤ５１の右側であって、右アナログスティック５３Ｂの下側に設けられる。つまり、４つのボタン５４Ｅ〜５４Ｈはユーザの右手で操作可能な位置に配置されている。さらに、４つのボタン５４Ｅ〜５４Ｈは、（４つのボタン５４Ｅ〜５４Ｈの中心位置に対して）上下左右の位置関係となるように配置されている。したがって、端末装置７は、ユーザに上下左右の方向を指示させるためのボタンとして４つのボタン５４Ｅ〜５４Ｈを機能させることも可能である。
【０１１１】
また、図８の（ａ）図、（ｂ）図、および（ｃ）図に示すように、第１Ｌボタン５４Ｉおよび第１Ｒボタン５４Ｊは、ハウジング５０の斜め上部分（左上部分および右上部分）に設けられる。具体的には、第１Ｌボタン５４Ｉは、板状のハウジング５０における上側の側面の左端に設けられ、上側および左側の側面から露出している。また、第１Ｒボタン５４Ｊは、ハウジング５０における上側の側面の右端に設けられ、上側および右側の側面から露出している。このように、第１Ｌボタン５４Ｉは、ユーザの左手人差し指で操作可能な位置に配置され、第１Ｒボタン５４Ｊは、ユーザの右手人差し指で操作可能な位置に配置される（図９参照）。
【０１１２】
また、図８の（ｂ）図および（ｃ）図に示すように、第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌは、板状のハウジング５０の裏面（すなわちＬＣＤ５１が設けられる表面の反対側の面）に突起して設けられる足部５９Ａおよび５９Ｂに配置される。具体的には、第２Ｌボタン５４Ｋは、ハウジング５０の裏面の左側（表面側から見たときの左側）のやや上方に設けられ、第２Ｒボタン５４Ｌは、ハウジング５０の裏面の右側（表面側から見たときの右側）のやや上方に設けられる。換言すれば、第２Ｌボタン５４Ｋは、表面に設けられる左アナログスティック５３Ａの概ね反対側の位置に設けられ、第２Ｒボタン５４Ｌは、表面に設けられる右アナログスティック５３Ｂの概ね反対側の位置に設けられる。このように、第２Ｌボタン５４Ｋは、ユーザの左手中指で操作可能な位置に配置され、第２Ｒボタン５４Ｌは、ユーザの右手中指で操作可能な位置に配置される（図９参照）。また、第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌは、図８の（ｃ）図に示すように、上記足部５９Ａおよび５９Ｂの斜め上方を向く面に設けられ、斜め上方を向くボタン面を有する。ユーザが端末装置７を把持した場合には中指は上下方向に動くと考えられるので、ボタン面を上方に向けることで、ユーザは第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌを押下しやすくなる。また、ハウジング５０の裏面に足部が設けられることにより、ユーザはハウジング５０を把持しやすくなり、かつ、足部にボタンが設けられることで、ハウジング５０を把持したまま操作しやすくなる。
【０１１３】
なお、図８に示す端末装置７に関しては、第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌが裏面に設けられるので、ＬＣＤ５１の画面（ハウジング５０の表面）が上を向いた状態で端末装置７を載置させる場合、画面が完全に水平にはならない場合がある。そのため、他の実施形態においては、ハウジング５０の裏面に３つ以上の足部が形成されてもよい。これによれば、ＬＣＤ５１の画面が上を向いた状態では足部が床面に接することで床面に載置できるので、画面が水平になるように端末装置７を載置することができる。また、着脱可能な足部を追加することで端末装置７を水平に載置するようにしてもよい。
【０１１４】
各ボタン５４Ａ〜５４Ｌには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン５４Ａおよびボタン５４Ｅ〜５４Ｈは方向指示操作や選択操作等に用いられてもよいし、各ボタン５４Ｂ〜５４Ｅは決定操作やキャンセル操作等に用いられてもよい。
【０１１５】
なお、図示しないが、端末装置７は、端末装置７の電源をオン／オフするための電源ボタンを有している。また、端末装置７は、ＬＣＤ５１の画面表示をオン／オフするためのボタンや、ゲーム装置３との接続設定（ペアリング）を行うためのボタンや、スピーカ（図１０に示すスピーカ６７）の音量を調節するためのボタンを有していてもよい。
【０１１６】
図８の（ａ）図に示すように、端末装置７は、マーカ５５Ａおよびマーカ５５Ｂからなるマーカ部（図１０に示すマーカ部５５）をハウジング５０の表面に備えている。マーカ部５５は、ＬＣＤ５１の上側に設けられる。各マーカ５５Ａおよびマーカ５５Ｂは、マーカ装置６の各マーカ６Ｒおよび６Ｌと同様、１以上の赤外ＬＥＤで構成される。マーカ部５５は、上述のマーカ装置６と同様、コントローラ５の動き等をゲーム装置３が算出するために用いられる。また、ゲーム装置３はマーカ部５５が備える各赤外ＬＥＤの点灯を制御することが可能である。
【０１１７】
端末装置７は、撮像手段であるカメラ５６を備えている。カメラ５６は、所定の解像度を有する撮像素子（例えば、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等）と、レンズとを含む。図８に示すように、本実施形態では、カメラ５６はハウジング５０の表面に設けられる。したがって、カメラ５６は、端末装置７を持っているユーザの顔を撮像することができ、例えばＬＣＤ５１を見ながらゲームを行っている時のユーザを撮像することができる。
【０１１８】
なお、端末装置７は、音声入力手段であるマイク（図１０に示すマイク６９）を備えている。ハウジング５０の表面には、マイクロフォン用孔６０が設けられる。マイク６９はこのマイクロフォン用孔６０の奥のハウジング５０内部に設けられる。マイクは、ユーザの音声等、端末装置７の周囲の音を検出する。
【０１１９】
端末装置７は、音声出力手段であるスピーカ（図１０に示すスピーカ６７）を備えている。図８の（ｄ）図に示すように、ハウジング５０の下側側面にはスピーカ孔５７が設けられる。スピーカ６７の出力音はこのスピーカ孔５７から出力される。本実施形態では、端末装置７は２つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔５７が設けられる。
【０１２０】
また、端末装置７は、他の装置を端末装置７に接続するための拡張コネクタ５８を備えている。本実施形態においては、図８の（ｄ）図に示すように、拡張コネクタ５８は、ハウジング５０の下側側面に設けられる。なお、拡張コネクタ５８に接続される他の装置はどのようなものであってもよく、例えば、特定のゲームに用いるコントローラ（銃型のコントローラ等）やキーボード等の入力装置であってもよい。他の装置を接続する必要がなければ、拡張コネクタ５８は設けられていなくともよい。
【０１２１】
なお、図８に示した端末装置７に関して、各操作ボタンやハウジング５０の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
【０１２２】
次に、図１０を参照して、端末装置７の内部構成について説明する。図１０は、端末装置７の内部構成を示すブロック図である。図１０に示すように、端末装置７は、図８に示した構成の他、タッチパネルコントローラ６１、磁気センサ６２、加速度センサ６３、ジャイロセンサ６４、ユーザインタフェースコントローラ（ＵＩコントローラ）６５、コーデックＬＳＩ６６、スピーカ６７、サウンドＩＣ６８、マイク６９、無線モジュール７０、アンテナ７１、赤外線通信モジュール７２、フラッシュメモリ７３、電源ＩＣ７４、および電池７５を備える。これらの電子部品は、電子回路基板上に実装されてハウジング５０内に収納される。
【０１２３】
ＵＩコントローラ６５は、各種の入出力部に対するデータの入出力を制御するための回路である。ＵＩコントローラ６５は、タッチパネルコントローラ６１、アナログスティック５３（アナログスティック５３Ａおよび５３Ｂ）、操作ボタン５４（各操作ボタン５４Ａ〜５４Ｌ）、マーカ部５５、磁気センサ６２、加速度センサ６３、およびジャイロセンサ６４に接続される。また、ＵＩコントローラ６５は、コーデックＬＳＩ６６と拡張コネクタ５８に接続される。また、ＵＩコントローラ６５には電源ＩＣ７４が接続され、ＵＩコントローラ６５を介して各部に電力が供給される。電源ＩＣ７４には内蔵の電池７５が接続され、電力が供給される。また、電源ＩＣ７４には、コネクタ等を介して外部電源から電力を取得可能な充電器７６またはケーブルを接続することが可能であり、端末装置７は、当該充電器７６またはケーブルを用いて外部電源からの電力供給と充電を行うことができる。なお、端末装置７は、図示しない充電機能を有するクレイドルに端末装置７を装着することで充電を行うようにしてもよい。
【０１２４】
タッチパネルコントローラ６１は、タッチパネル５２に接続され、タッチパネル５２の制御を行う回路である。タッチパネルコントローラ６１は、タッチパネル５２からの信号に基づいて所定の形式のタッチ位置データを生成してＵＩコントローラ６５へ出力する。タッチ位置データは、タッチパネル５２の入力面において入力が行われた位置の座標を表す。なお、タッチパネルコントローラ６１は、タッチパネル５２からの信号の読み込み、および、タッチ位置データの生成を所定時間に１回の割合で行う。また、ＵＩコントローラ６５からタッチパネルコントローラ６１へは、タッチパネル５２に対する各種の制御指示が出力される。
【０１２５】
アナログスティック５３は、ユーザの指で操作されるスティック部がスライドした（または傾倒した）方向および量を表すスティックデータをＵＩコントローラ６５へ出力する。また、操作ボタン５４は、各操作ボタン５４Ａ〜５４Ｌに対する入力状況（押下されたか否か）を表す操作ボタンデータをＵＩコントローラ６５へ出力する。
【０１２６】
磁気センサ６２は、磁界の大きさおよび方向を検知することで方位を検出する。検出された方位を示す方位データは、ＵＩコントローラ６５へ出力される。また、ＵＩコントローラ６５から磁気センサ６２へは、磁気センサ６２に対する制御指示が出力される。磁気センサ６２に関しては、ＭＩ（磁気インピーダンス）素子、フラックスゲートセンサ、ホール素子、ＧＭＲ（巨大磁気抵抗）素子、ＴＭＲ（トンネル磁気抵抗）素子、あるいはＡＭＲ（異方性磁気抵抗）素子等を用いたセンサがあるが、方位を検出することができればどのようなものが用いられてもよい。なお、厳密には、地磁気以外に磁界が発生している場所においては、得られた方位データは方位を示さないことになるが、そのような場合であっても、端末装置７が動いた場合には方位データが変化するため、端末装置７の姿勢の変化を算出することができる。
【０１２７】
加速度センサ６３は、ハウジング５０の内部に設けられ、３軸（図８の（ａ）図に示すｘｙｚ軸）方向に沿った直線加速度の大きさを検出する。具体的には、加速度センサ６３は、ハウジング５０の長辺方向をｘ軸、ハウジング５０の短辺方向をｙ軸、ハウジング５０の表面に対して垂直な方向をｚ軸として、各軸の直線加速度の大きさを検出する。検出された加速度を表す加速度データはＵＩコントローラ６５へ出力される。また、ＵＩコントローラ６５から加速度センサ６３へは、加速度センサ６３に対する制御指示が出力される。加速度センサ６３は、本実施形態では例えば静電容量式のＭＥＭＳ型加速度センサであるとするが、他の実施形態においては他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ６３は１軸または２軸方向を検出する加速度センサであってもよい。
【０１２８】
ジャイロセンサ６４は、ハウジング５０の内部に設けられ、上記ｘ軸、ｙ軸およびｚ軸の３軸周りの角速度を検出する。検出された角速度を表す角速度データは、ＵＩコントローラ６５へ出力される。また、ＵＩコントローラ６５からジャイロセンサ６４へは、ジャイロセンサ６４に対する制御指示が出力される。なお、３軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ６４はジャイロセンサ４８と同様、２軸ジャイロセンサと１軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ６４は１軸または２軸方向を検出するジャイロセンサであってもよい。
【０１２９】
ＵＩコントローラ６５は、上記の各構成要素から受け取ったタッチ位置データ、スティックデータ、操作ボタンデータ、方位データ、加速度データ、および角速度データを含む操作データをコーデックＬＳＩ６６に出力する。なお、拡張コネクタ５８を介して端末装置７に他の装置が接続される場合には、当該他の装置に対する操作を表すデータが上記操作データにさらに含まれていてもよい。
【０１３０】
コーデックＬＳＩ６６は、ゲーム装置３へ送信するデータに対する圧縮処理、および、ゲーム装置３から送信されたデータに対する伸張処理を行う回路である。コーデックＬＳＩ６６には、ＬＣＤ５１、カメラ５６、サウンドＩＣ６８、無線モジュール７０、フラッシュメモリ７３、および赤外線通信モジュール７２が接続される。また、コーデックＬＳＩ６６はＣＰＵ７７と内部メモリ７８を含む。端末装置７はゲーム処理自体を行なわない構成であるが、端末装置７の管理や通信のための最小限のプログラムを実行する必要がある。電源投入時にフラッシュメモリ７３に格納されたプログラムを内部メモリ７８に読み出してＣＰＵ７７が実行することで、端末装置７が起動する。また、内部メモリ７８の一部の領域はＬＣＤ５１のためのＶＲＡＭとして使用される。
【０１３１】
カメラ５６は、ゲーム装置３からの指示に従って画像を撮像し、撮像した画像データをコーデックＬＳＩ６６へ出力する。また、コーデックＬＳＩ６６からカメラ５６へは、画像の撮像指示等、カメラ５６に対する制御指示が出力される。なお、カメラ５６は動画の撮影も可能である。すなわち、カメラ５６は、繰り返し撮像を行って画像データをコーデックＬＳＩ６６へ繰り返し出力することも可能である。
【０１３２】
サウンドＩＣ６８は、スピーカ６７およびマイク６９に接続され、スピーカ６７およびマイク６９への音声データの入出力を制御する回路である。すなわち、コーデックＬＳＩ６６から音声データを受け取った場合、サウンドＩＣ６８は当該音声データに対してＤ／Ａ変換を行って得られる音声信号をスピーカ６７へ出力し、スピーカ６７から音を出力させる。また、マイク６９は、端末装置７に伝わる音（ユーザの音声等）を検知して、当該音を示す音声信号をサウンドＩＣ６８へ出力する。サウンドＩＣ６８は、マイク６９からの音声信号に対してＡ／Ｄ変換を行い、所定の形式の音声データをコーデックＬＳＩ６６へ出力する。
【０１３３】
コーデックＬＳＩ６６は、カメラ５６からの画像データ、マイク６９からの音声データ、および、ＵＩコントローラ６５からの操作データを、端末操作データとして無線モジュール７０を介してゲーム装置３へ送信する。本実施形態では、コーデックＬＳＩ６６は、画像データおよび音声データに対して、コーデックＬＳＩ２７と同様の圧縮処理を行う。上記端末操作データ、ならびに、圧縮された画像データおよび音声データは、送信データとして無線モジュール７０に出力される。無線モジュール７０にはアンテナ７１が接続されており、無線モジュール７０はアンテナ７１を介してゲーム装置３へ上記送信データを送信する。無線モジュール７０は、ゲーム装置３の端末通信モジュール２８と同様の機能を有している。すなわち、無線モジュール７０は、例えばＩＥＥＥ８０２．１１ｎの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。送信されるデータは必要に応じて暗号化されていてもよいし、されていなくともよい。
【０１３４】
以上のように、端末装置７からゲーム装置３へ送信される送信データには、操作データ（端末操作データ）、画像データ、および音声データが含まれる。なお、拡張コネクタ５８を介して端末装置７に他の装置が接続される場合には、当該他の装置から受け取ったデータが上記送信データにさらに含まれていてもよい。また、赤外線通信モジュール７２は、他の装置との間で例えばＩＲＤＡの規格に従った赤外線通信を行う。コーデックＬＳＩ６６は、赤外線通信によって受信したデータを、必要に応じて上記送信データに含めてゲーム装置３へ送信してもよい。
【０１３５】
また、上述のように、ゲーム装置３から端末装置７へは、圧縮された画像データおよび音声データが送信される。これらのデータはアンテナ７１および無線モジュール７０を介してコーデックＬＳＩ６６に受信される。コーデックＬＳＩ６６は、受信した画像データおよび音声データを伸張する。伸張された画像データはＬＣＤ５１へ出力され、画像がＬＣＤ５１に表示される。また、伸張された音声データはサウンドＩＣ６８へ出力され、サウンドＩＣ６８はスピーカ６７から音を出力させる。
【０１３６】
また、ゲーム装置３から受信されるデータに制御データが含まれる場合、コーデックＬＳＩ６６およびＵＩコントローラ６５は、制御データに従った制御指示を各部に行う。上述のように、制御データは、端末装置７が備える各構成要素（本実施形態では、カメラ５６、タッチパネルコントローラ６１、マーカ部５５、各センサ６２〜６４、および赤外線通信モジュール７２）に対する制御指示を表すデータである。本実施形態では、制御データが表す制御指示としては、上記各構成要素を動作させたり、動作を休止（停止）させたりする指示が考えられる。すなわち、ゲームで使用しない構成要素については電力消費を抑えるために休止させてもよく、その場合、端末装置７からゲーム装置３へ送信される送信データには、休止した構成要素からのデータが含まれないようにする。なお、マーカ部５５は赤外ＬＥＤであるので、制御は単に電力の供給のＯＮ／ＯＦＦでよい。
【０１３７】
以上のように、端末装置７は、タッチパネル５２、アナログスティック５３、および操作ボタン５４といった操作手段を備えるが、他の実施形態においては、これらの操作手段に代えて、または、これらの操作手段とともに、他の操作手段を備える構成であってもよい。
【０１３８】
また、端末装置７は、端末装置７の動き（位置や姿勢、あるいは、位置や姿勢の変化を含む）を算出するためのセンサとして、磁気センサ６２、加速度センサ６３、およびジャイロセンサ６４を備えるが、他の実施形態においては、これらのセンサのうち１つまたは２つのみを備える構成であってもよい。また、他の実施形態においては、これらのセンサに代えて、または、これらのセンサとともに、他のセンサを備える構成であってもよい。
【０１３９】
また、端末装置７は、カメラ５６およびマイク６９を備える構成であるが、他の実施形態においては、カメラ５６およびマイク６９を備えていなくてもよく、また、いずれか一方のみを備えていてもよい。
【０１４０】
また、端末装置７は、端末装置７とコントローラ５との位置関係（コントローラ５から見た端末装置７の位置および／または姿勢等）を算出するための構成としてマーカ部５５を備える構成であるが、他の実施形態ではマーカ部５５を備えていない構成としてもよい。また、他の実施形態では、端末装置７は、上記位置関係を算出するための構成として他の手段を備えていてもよい。例えば、他の実施形態においては、コントローラ５がマーカ部を備え、端末装置７が撮像素子を備える構成としてもよい。さらにこの場合、マーカ装置６は赤外ＬＥＤに代えて、撮像素子を備える構成としてもよい。
【０１４１】
［５．ゲーム処理の概要］
次に、本実施形態のゲームシステム１において実行されるゲーム処理の概要について説明する。本ゲーム処理によって実行されるゲームは、端末装置７と複数のコントローラ５とを操作装置として用いて、複数人のプレイヤが対戦する形式の射撃ゲームである。なお、本実施形態においては、ゲームシステム１が４つのコントローラ５を含み、４つのコントローラ５が用いられる場合について説明する。つまり、本実施形態においては、端末装置７を操作する１人のプレイヤと、４つのコントローラ５を１つずつ操作する４人のプレイヤとの合計５人のプレイヤによってゲームがプレイされる。なお、他の実施形態においては、コントローラ５の数はいくつであってもよい。
【０１４２】
図１１は、本実施形態における端末用ゲーム画像の一例を示す図である。図１１に示すように、端末装置７には端末用ゲーム画像として、ヘリコプターオブジェクト（以下、単にヘリコプターと記載する）８０を含む仮想のゲーム空間の画像、および、カーソル８１の画像が表示される。また、状況によっては、コントローラ５を用いた操作対象である、プレイヤを模したオブジェクト（プレイヤオブジェクトと呼ぶ）が表示されることもある。ヘリコプター８０は、端末装置７に対する操作に従って動作が制御される。本実施形態においては、ヘリコプター８０は、ゲーム空間における３次元の各方向に移動可能である。具体的には、ヘリコプター８０は、前後、左右、および上下方向に移動（平行移動）が可能であるとともに、ヨー方向（上下方向を軸とした回転方向）およびロール方向（前後方向を軸とした回転方向）に回転することが可能である。なお、ロール方向の回転については、ゲームによっては行わなくともよく、ヨー方向の回転だけであってもよい。また、端末装置７を操作するプレイヤは、ヘリコプター８０に射撃動作を行わせることができる。すなわち、ヘリコプター８０は、所定の射撃操作（例えば、第１Ｌボタン５４Ｉまたは第１Ｒボタン５４Ｊを押下する操作）が行われたことに応じて、カーソル８１が指し示す位置に向かって弾を発射する動作を行う。
【０１４３】
図１２は、本実施形態におけるテレビ用ゲーム画像の一例を示す図である。図１２に示すように、テレビ用ゲーム画像の領域はコントローラ５の数（換言すれば、コントローラ５を用いるプレイヤの人数。ここでは４つ）に分割される。分割された１つの領域には、コントローラ５を用いた操作の対象であるプレイヤオブジェクトを含むゲーム空間の画像と、カーソルとが含まれる。図１２においては、各コントローラ５に対応する操作対象であるプレイヤオブジェクト８２〜８５が、４つの領域に１つずつ表示されるとともに、カーソル８６〜８９が各領域に１つずつ表示される。また、状況によっては、各領域には、他の領域に対応するプレイヤオブジェクトや、ヘリコプター８０が表示されることもある。プレイヤは、コントローラ５を操作することによって、プレイヤオブジェクトに地上を移動させたり、カーソルが指し示す位置に向かって射撃動作を行わせたりすることが可能である。
【０１４４】
端末装置７を操作するプレイヤは、端末装置７を操作することによってヘリコプター８０を移動させつつ射撃を行い、プレイヤオブジェクトに弾を当てる。一方、各コントローラ５を操作する各プレイヤは、コントローラ５を操作することによってプレイヤオブジェクト８２〜８５を移動させつつ射撃を行い、ヘリコプター８０に弾を当てる。このように、本ゲームは、ヘリコプター８０とプレイヤオブジェクト８２〜８５との間で互いに弾を撃ち合って対戦する射撃ゲームである。
【０１４５】
以下、端末装置７に対する操作について詳細に説明する。まず、図１３および図１４を参照して、端末装置７を用いてヘリコプター８０を操作する方法について説明する。本実施形態においては、ヘリコプター８０は、端末装置７が備える２つのアナログスティック５３に対する操作によって制御される。具体的には、ヘリコプター８０の移動（平行移動）と、ヨー方向に関する回転とが制御される。
【０１４６】
図１３は、左アナログスティック５３Ａに対する操作とヘリコプター８０の動作との対応を示す図である。図１３に示すように、左アナログスティック５３Ａに対する上方向の入力に応じて、ヘリコプター８０は前方向に平行移動（前進）し、左アナログスティック５３Ａに対する下方向の入力に応じて、ヘリコプター８０は後方向に平行移動（後退）する。また、左アナログスティック５３Ａの左方向に対する入力に応じて、ヘリコプター８０は左方向に平行移動し、左アナログスティック５３Ａに対する右方向の入力に応じて、ヘリコプター８０は右方向に平行移動する。
【０１４７】
図１４は、右アナログスティック５３Ｂに対する操作とヘリコプター８０の動作との対応を示す図である。図１４に示すように、右アナログスティック５３Ｂに対する上方向の入力に応じて、ヘリコプター８０は上方向に移動（上昇）し、右アナログスティック５３Ｂに対する下方向の入力に応じて、ヘリコプター８０は下方向に移動（下降）する。また、右アナログスティック５３Ｂに対する左方向の入力に応じて、ヘリコプター８０は左方向に回転（左旋回）し、右アナログスティック５３Ｂに対する右方向の入力に応じて、ヘリコプター８０は右方向に回転（右旋回）する。
【０１４８】
以上のように、本実施形態においては、プレイヤは、２つのアナログスティック５３に対する方向入力操作によって３次元的にヘリコプター８０を移動させることが可能である。なお、詳細は後述するが、本実施形態においては、端末装置７をヨー方向に回転させることによってもヘリコプター８０の位置・姿勢は変化する。また、ピッチ方向の回転によってヘリコプター８０の姿勢がさらに変化するようにしてもよい。ここでは、端末装置７におけるロール方向、ヨー方向、およびピッチ方向とは、端末装置７の画面（ＬＣＤ５１）に垂直な軸（図８に示すｚ軸）が水平方向と平行な所定方向を向く状態にある端末装置７のｚ軸回りの回転方向、ｙ軸回りの回転方向、およびｘ軸回りの回転方向を指す。
【０１４９】
次に、図１５を参照して、端末装置７に表示される端末用ゲーム画像の視点を操作する方法、すなわち、端末用ゲーム画像を生成するための仮想カメラを操作する方法について説明する。本実施形態においては、上記仮想カメラは、端末装置７の姿勢に基づいて制御される。具体的には、仮想カメラの姿勢は、現実空間における端末装置７の姿勢に応じた姿勢となるように制御され、仮想カメラの位置は、ヘリコプター８０が仮想カメラの視野範囲（撮影範囲）に含まれるように制御される。
【０１５０】
図１５は、端末装置７の姿勢と仮想カメラの姿勢との対応を示す図である。図１５においては、端末装置７のｚ軸が水平方向と平行となる所定の基準状態にある場合において、仮想カメラ９０は仮想空間における水平方向と平行な所定の基準姿勢となる。ここで、仮想カメラ９０は、端末装置７が上記基準状態から回転した方向に応じた方向に、回転量に応じた回転量だけ、仮想カメラ９０を基準姿勢から回転させた姿勢となるように制御される。例えば、基準姿勢から右を向くように（ヨー方向に）端末装置７が回転された場合、仮想カメラ９０は、上記基準姿勢から右を向くように（ヨー方向に）回転する。また、基準姿勢から下を向くように（ピッチ方向に）端末装置７が回転された場合、仮想カメラ９０は、上記基準姿勢から下を向くように（ピッチ方向に）回転する。また、図示しないが、基準姿勢から画面に垂直な軸回りに（ロール方向に）端末装置７が回転された場合、仮想カメラ９０は、視線方向の軸回りに（ロール方向に）回転する。このように、本実施形態においては、現実空間における端末装置７の姿勢と仮想のゲーム空間における仮想カメラ９０の姿勢とが対応するように制御される。これによって、プレイヤは、端末装置７を用いた容易かつ直感的な操作で端末用ゲーム画像の視線の向きを変更することができる。
【０１５１】
また、仮想カメラ９０の位置は、ヘリコプター８０が視野範囲に含まれるように制御される。具体的には、仮想カメラ９０は、ヘリコプター８０の位置Ｐを向き、当該位置Ｐから所定距離だけ離れた位置に設定される。したがって、基準姿勢から右を向くように端末装置７が回転された場合、仮想カメラ９０は上記基準姿勢から左方向に移動され、基準姿勢から下を向くように端末装置７が回転された場合、仮想カメラ９０は上記基準姿勢から上方向に移動する（図１５参照）。なお、他の実施形態においては、仮想カメラ９０はヘリコプター８０の位置に設定されてもよい。つまり、端末装置７には、いわゆる一人称視点のゲーム画像が表示されてもよい。また、仮想カメラ９０とヘリコプター８０の距離がゲームの状況によって変わる場合があってもよい。
【０１５２】
以上のように、本実施形態においては、端末装置７の２つのアナログスティック５３に対する操作と、端末装置７自体の姿勢を変化させる操作とによって、ヘリコプター８０を３次元的に移動させることができるとともに、ヘリコプター８０を見る視線（仮想カメラ９０）を３次元的に変化させることができる。すなわち、本実施形態によれば、複数の方向に対する入力指示（ヘリコプター８０および仮想カメラ９０を移動・回転させる指示）を、端末装置７を用いて直感的な操作で容易に行うことができ、複数の方向に対する入力指示に関する操作性を向上することができる。
【０１５３】
なお、２つのアナログスティック５３に対する入力操作によるヘリコプター８０の制御と、端末装置７の姿勢操作による仮想カメラ９０の制御とを独立して単に実行するとすれば、プレイヤが操作に違和感を抱くおそれがある。そこで、本実施形態においては、ヘリコプター８０および仮想カメラ９０に対して以下の制御が行われる。
【０１５４】
本実施形態では、右アナログスティック５３Ｂに対する左右方向の入力によってヘリコプター８０がヨー方向（ゲーム空間における鉛直軸回りの回転方向）に回転した場合、仮想カメラ９０は、ヨー方向に関してヘリコプター８０と同じ方向を向くように制御される。つまり、ヨー方向に関しては、右アナログスティック５３Ｂに対する入力によってヘリコプター８０の姿勢が変化した場合には、仮想カメラ９０の姿勢はヘリコプター８０と一致するように変化する。この理由は、ヨー方向に関しては、ヘリコプター８０の向きと仮想カメラ９０の向きとが一致していないと、ヘリコプター８０の操作に対してプレイヤが違和感を抱くおそれがあるからである。具体的に説明すると、本実施形態においては、ヘリコプター８０は、左アナログスティック５３Ａに対する上下方向の入力に応じてヘリコプター８０を基準とした前後方向に移動する。そのため、ヨー方向に関してヘリコプター８０の向きと仮想カメラ９０の向きとが一致していない場合には、上記上下方向の入力によってヘリコプター８０が画面の奥行き方向とは異なる方向に移動する。このように、上下方向の入力が画面の奥行き方向に対応していない場合には、プレイヤが違和感を抱くおそれがある。なお、右アナログスティック５３Ｂに対する操作によるヘリコプター８０の回転に応じて仮想カメラ９０の姿勢を変化させると、現実空間における端末装置７の姿勢と、仮想空間における仮想カメラ９０の姿勢との対応関係が変化してしまう。しかし、ヨー方向（左右方向）に関しては、上記対応関係が変化しても、ユーザが違和感を抱くおそれはないと考えられる。以上の理由より、本実施形態においては、ヨー方向に関してはヘリコプター８０と仮想カメラ９０との姿勢を一致させるようにしている。ただし、ヘリコプター８０の姿勢と仮想カメラ９０の姿勢は常に完全に一致していなくともよく、ユーザが違和感を抱かないように、ヘリコプター８０の姿勢を仮想カメラ９０の姿勢に追従させるようにすればよい。
【０１５５】
さらに、本実施形態では、ヨー方向に関して端末装置７の姿勢を変化させることによって仮想カメラ９０の姿勢が変化した場合、ヘリコプター８０の姿勢は、ヨー方向に関して仮想カメラ９０の姿勢と一致するように制御される。ここで、プレイヤは端末装置７を自由な速度で回転させることができ、端末装置７の姿勢を比較的高速に変化させることが可能であるので、仮想カメラ９０の姿勢は、端末装置７の姿勢に合わせて比較的高速に変化する。しかし、ヘリコプター８０の姿勢を仮想カメラの９０の姿勢変化に合わせて高速に変化させると、ヘリコプター８０の動作が不自然になってしまう。そのため、本実施形態では、端末装置７の姿勢が変化することによって仮想カメラ９０の姿勢が変化する場合、ヘリコプター８０の姿勢は仮想カメラ９０の姿勢に追従して（若干遅れて）変化するように制御される。このとき、右アナログスティック５３Ｂの左右方向の入力があった場合には、ゲーム装置３は、ヘリコプター８０の姿勢をさらに変化させるようにしてもよい。
【０１５６】
図１６および図１７は、仮想カメラ９０の姿勢変化に追従してヘリコプター８０の姿勢が変化する様子を示す図である。端末装置７の姿勢が変化した場合には、図１６に示すように、端末装置７の姿勢変化に合わせて仮想カメラ９０の姿勢（および位置）が変化する。この場合、図１７に示すように、ヘリコプター８０の姿勢は、所定の速度以下の回転速度で仮想カメラ９０の姿勢を追従するように変化し、最終的に仮想カメラ９０の姿勢と一致する（図１７に示す矢印参照）。このように、仮想カメラ９０の姿勢が変化した場合には、ヘリコプター８０の姿勢は仮想カメラ９０の姿勢から遅れて変化する。これによって、端末装置７の姿勢の変化に応じてヘリコプター８０の姿勢が急激に変化することを防止することができ、ヘリコプター８０に自然な動作を行わせることができる。
【０１５７】
［６．ゲーム処理の詳細］
次に、本ゲームシステムにおいて実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図１８は、ゲーム処理において用いられる各種データを示す図である。図１８において、ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図１８に示すように、ゲーム装置３のメインメモリには、ゲームプログラム１００、端末操作データ１０１、コントローラ操作データ１０７、および処理用データ１０８が記憶される。なお、メインメモリには、図１８に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームに使用される音声データ等、ゲームに必要なデータが記憶される。
【０１５８】
ゲームプログラム１００は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム１００は、光ディスク４に代えて、フラッシュメモリ１７やゲーム装置３の外部装置から（例えばインターネットを介して）取得されてもよい。また、ゲームプログラム１００に含まれる一部（例えば、コントローラ５および／または端末装置７の姿勢を算出するためのプログラム）については、ゲーム装置３内に予め記憶されていてもよい。
【０１５９】
端末操作データ１０１は、端末装置７に対するプレイヤの操作を表すデータである。端末操作データ１０１は、端末装置７から送信されてゲーム装置３において取得され、メインメモリに記憶される。端末操作データ１０１は、角速度データ１０２、加速度データ１０３、タッチ位置データ１０４、操作ボタンデータ１０５、および、スティックデータ１０６を含む。なお、メインメモリには、最新の（最後に取得された）ものから順に所定個数の端末操作データが記憶されてもよい。
【０１６０】
角速度データ１０２は、ジャイロセンサ６４によって検出された角速度を表すデータである。本実施形態では、角速度データ１０２は、図８に示すｘｙｚの３軸回りのそれぞれの角速度を表すものであるが、他の実施形態においては、任意の１軸以上の軸回り角速度を表すものであればよい。
【０１６１】
加速度データ１０３は、加速度センサ６３によって検出された加速度（加速度ベクトル）を表すデータである。本実施形態では、加速度データ１０３は、図８に示すｘｙｚの３軸の方向に関する加速度を各成分とする３次元の加速度を表すものであるが、他の実施形態においては、任意の１以上の方向に関する加速度を表すものであればよい。
【０１６２】
タッチ位置データ１０４は、タッチパネル５２の入力面において入力が行われた位置（タッチ位置）を表すデータである。本実施形態では、タッチ位置データ１０４は、上記入力面上の位置を示すための２次元座標系の座標値を表す。なお、タッチパネル５２がマルチタッチ方式である場合には、タッチ位置データ１０４は複数のタッチ位置を表すこともある。
【０１６３】
操作ボタンデータ１０５は、端末装置７に設けられる、押圧可能なキー操作部（各操作ボタン５４Ａ〜５４Ｌ）に対する入力状態を表すデータである。具体的には、操作ボタンデータ１０５は、各操作ボタン５４Ａ〜５４Ｌが押下されているか否かを表す。
【０１６４】
スティックデータ１０６は、各アナログスティック５３Ａおよび５３Ｂのスティック部がスライドした（または傾倒した）方向および量を表すデータである。アナログスティック５３は、２次元の任意の方向に移動可能な操作部材（スティック部）を移動することによる入力操作が可能な入力装置であり、スティックデータ１０６は、当該操作部材が操作された方向（操作方向）および量（操作量）を表すものである。本実施形態においては、アナログスティック５３に対する操作量および操作方向は、左右方向に関する操作量をｘ成分とし、上下方向に関する操作量をｙ成分とする２次元座標によって表されるものとする。
【０１６５】
なお、端末操作データ１０１には、上記データ１０２〜１０５の他、磁気センサ６２によって検出された方位を表す方位データが含まれていてもよい。また、本実施形態においては、端末操作データ１０１の他、カメラ画像データおよび／またはマイク音データが端末装置７からゲーム装置３へ送信されてもよい。カメラ画像データは、端末装置７のカメラ５６によって撮像された画像（カメラ画像）を表すデータである。マイク音データは、端末装置７のマイク６９によって検出された音声（マイク音）を表すデータである。なお、これらカメラ画像データおよびマイク音データは、コーデックＬＳＩ６６によって圧縮されてゲーム装置３へ送信され、ゲーム装置３においてコーデックＬＳＩ２７によって伸張されてメインメモリに記憶されてもよい。
【０１６６】
なお、端末操作データ１０１は、方向を指示する入力を表すデータと、端末装置７の姿勢を算出するための物理量を表すデータとを少なくとも含んでいればよい。なお、上記「方向を指示する入力を表すデータ」は、本実施形態ではスティックデータ１０６であるが、他の実施形態においては、十字ボタン５４Ａに対する入力を表すデータや、４つのボタン５４Ｅ〜５４Ｈに対する入力を表すデータであってもよい。また、上記物理量を表すデータは、本実施形態では加速度データ１０３、角速度データ１０２、および方位データであるが、他の実施形態においては、端末操作データ１０１は、これら３つのデータのうちいずれか１つまたは２つを含むものであってもよい。また、端末装置７が他の入力手段（例えば、タッチパッドや、コントローラ５の撮像手段等）を有する場合には、端末操作データ１０１は、当該他の入力手段から出力されるデータを含んでいてもよい。
【０１６７】
コントローラ操作データ１０７は、コントローラ５に対するユーザ（プレイヤ）の操作を表すデータである。コントローラ操作データ１０７は、コントローラ５から送信されてゲーム装置３において取得され、メインメモリに記憶される。上述のように、コントローラ操作データ１０７は、上記加速度センサ３７およびジャイロセンサ４８の検出結果を表すデータ、各操作ボタン３２ａ〜３２ｉに対する入力状態を表すデータ、および、上記マーカ座標を表すデータを含む。本実施形態においては、４つのコントローラ５からそれぞれ送信されてくる４つのコントローラ操作データ１０７がメインメモリにそれぞれ記憶される。メインメモリには、４つのコントローラ５毎に最新の（最後に取得された）ものから順に所定個数のコントローラ操作データが記憶されてもよい。
【０１６８】
なお、コントローラ操作データ１０７は、コントローラ５を操作するユーザの操作を表すものであればよく、上記の各データの一部のみを含むものであってもよい。また、コントローラ５が他の入力手段（例えば、タッチパネルやアナログスティック等）を有する場合には、コントローラ操作データ１０７は、当該他の入力手段に対する操作を表すデータを含んでいてもよい。
【０１６９】
処理用データ１０８は、後述するゲーム処理（図１９）において用いられるデータである。処理用データ１０８は、端末姿勢データ１０９、オブジェクト姿勢データ１１０、オブジェクト位置データ１１１、カメラ姿勢データ１１２、および、カメラ位置データ１１３を含む。なお、図１８に示すデータの他、処理用データ１０８は、ゲームに登場する各種オブジェクトに設定される各種パラメータを表すデータ等、ゲーム処理において用いられる各種データを含む。
【０１７０】
端末姿勢データ１０９は、端末装置７の姿勢を表すデータである。端末装置７の姿勢は、例えば、所定の基準姿勢から現在の端末装置７の姿勢への回転を表す回転行列によって表現されてもよいし、３次のベクトルまたは３つの角度によって表現されてもよい。また、本実施形態においては、端末装置７の姿勢として３次元空間における姿勢が用いられるが、他の実施形態においては、２次元平面における姿勢が用いられてもよい。本実施形態では、端末姿勢データ１０９は、上記端末操作データに含まれる加速度データ１０３および角速度データ１０２に基づいて算出される。端末姿勢データ１０９の算出方法についてはステップＳ１１で後述する。
【０１７１】
オブジェクト姿勢データ１１０は、仮想のゲーム空間におけるヘリコプター８０の姿勢を表すデータである。また、オブジェクト位置データ１１１は、仮想のゲーム空間におけるヘリコプター８０の位置を表すデータである。詳細はステップＳ１２で後述するが、オブジェクト姿勢データ１１０およびオブジェクト位置データ１１１は、上記スティックデータ１０６と上記端末姿勢データ１０９とに基づいて算出される。
【０１７２】
カメラ姿勢データ１１２は、仮想のゲーム空間における仮想カメラ９０の姿勢を表すデータである。カメラ位置データ１１３は、仮想のゲーム空間における仮想カメラ９０の位置を表すデータである。詳細はステップＳ１３で後述するが、カメラ姿勢データ１１２およびカメラ位置データ１１３は、上記スティックデータ１０６と上記端末姿勢データ１０９とに基づいて算出される。
【０１７３】
なお、ヘリコプター８０および仮想カメラ９０の姿勢は、例えば、回転行列によって表現されてもよいし、３次のベクトルまたは３つの角度によって表現されてもよい。また、ヘリコプター８０および仮想カメラ９０の位置は、ゲーム空間内の位置を表すための３次元座標系の座標値によって表現される。
【０１７４】
次に、ゲーム装置３において行われるゲーム処理の詳細を、図１９〜図２３を用いて説明する。図１９は、ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。なお、ゲーム装置３においては、電源投入後にゲームプログラムがすぐに実行される構成であってもよいし、電源投入後にまず所定のメニュー画面を表示する内蔵プログラムが実行され、その後ユーザによってゲームの開始が指示されたことに応じてゲームプログラムが実行される構成であってもよい。図１９に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【０１７５】
なお、図１９〜図２３に示すフローチャートの各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、上記フローチャートの各ステップの処理をＣＰＵ１０が実行するものとして説明するが、上記フローチャートの一部のステップの処理を、ＣＰＵ１０以外のプロセッサや専用回路が実行するようにしてもよい。
【０１７６】
まずステップＳ１において、ＣＰＵ１０は初期処理を実行する。初期処理は、仮想のゲーム空間を構築し、ゲーム空間に登場する各オブジェクトを初期位置に配置したり、ゲーム処理で用いる各種パラメータの初期値を設定したりする処理である。なお、本実施形態においては、初期処理において、ヘリコプター８０の初期位置および初期姿勢を表すデータがそれぞれオブジェクト位置データ１１１およびオブジェクト姿勢データ１１０としてメインメモリに記憶される。また、仮想カメラ９０は、ヘリコプター８０の位置を向き、当該位置から所定距離だけ離れた位置となるように初期位置および初期姿勢が設定される。仮想カメラ９０の初期位置および初期姿勢を表すデータは、それぞれカメラ位置データ１１３およびカメラ姿勢データ１１２としてメインメモリに記憶される。ステップＳ１の次にステップＳ２の処理が実行される。以降、ステップＳ２〜Ｓ９の一連の処理からなる処理ループが所定時間（１フレーム時間）に１回の割合で繰り返し実行される。
【０１７７】
ステップＳ２において、ＣＰＵ１０は、４つのコントローラ５から送信されてくるコントローラ操作データをそれぞれ取得する。各コントローラ５はコントローラ操作データをゲーム装置３へ繰り返し送信するので、ゲーム装置３においては、コントローラ通信モジュール１９が各コントローラ操作データを逐次受信し、受信された各コントローラ操作データが入出力プロセッサ１１ａによってメインメモリに逐次記憶される。送受信の間隔はゲームの処理時間よりも短い方が好ましく、例えば２００分の１秒である。ステップＳ２においては、ＣＰＵ１０は、最新のコントローラ操作データ１０７をメインメモリから読み出す。ステップＳ２の次にステップＳ３の処理が実行される。
【０１７８】
ステップＳ３において、ＣＰＵ１０は、端末装置７から送信されてくる端末操作データを取得する。端末装置７は、端末操作データをゲーム装置３へ繰り返し送信するので、ゲーム装置３は端末操作データを逐次受信する。ゲーム装置３においては、端末通信モジュール２８が端末操作データを逐次受信し、入出力プロセッサ１１ａが端末操作データをメインメモリに逐次記憶する。ステップＳ３においては、ＣＰＵ１０は、最新の端末操作データ１０７をメインメモリから読み出す。ステップＳ３の次にステップＳ４の処理が実行される。
【０１７９】
ステップＳ４において、ＣＰＵ１０はゲーム制御処理を実行する。ゲーム制御処理は、プレイヤによるゲーム操作に従ってゲーム空間内のオブジェクトを動作させる処理等を実行し、ゲームを進行させる処理である。具体的には、本実施形態におけるゲーム制御処理においては、ヘリコプター８０および仮想カメラ９０を制御する処理、および、プレイヤオブジェクトを制御する処理等が実行される。以下、図２０を参照して、ゲーム制御処理の詳細について説明する。
【０１８０】
図２０は、図１９に示すゲーム制御処理（ステップＳ４）の詳細な流れを示すフローチャートである。ゲーム制御処理においてはまずステップＳ１１において、ＣＰＵ１０は、姿勢算出処理を実行する。姿勢算出処理は、端末操作データ１０１に基づいて端末装置７の姿勢を算出する処理である。以下、図２１を参照して、姿勢算出処理の詳細について説明する。
【０１８１】
図２１は、図２０に示す姿勢算出処理（ステップＳ１１）の詳細な流れを示すフローチャートである。姿勢算出処理においてはまずステップＳ２１において、ＣＰＵ１０は、角速度データ１０２に基づいて端末装置７の姿勢（第１姿勢と呼ぶ）を算出する。角速度に基づく第１姿勢を算出する方法はどのような方法であってもよいが、当該第１姿勢は、前回の姿勢（前回に算出された姿勢）と、今回の角速度（今回の処理ループにおけるステップＳ３で取得された角速度）とを用いて算出される。具体的には、ＣＰＵ１０は、前回の姿勢を今回の角速度で単位時間分だけ回転させることによって姿勢を算出する。なお、前回の姿勢は、メインメモリに記憶されている端末姿勢データ１０９により表され、今回の角速度は、メインメモリに記憶されている角速度データ１０２により表される。したがって、ＣＰＵ１０は、メインメモリから端末姿勢データ１０９および角速度データ１０２を読み出して、端末装置７の姿勢を算出する。以上のようにして算出された「角速度に基づく姿勢」を表すデータはメインメモリに記憶される。ステップＳ２１の次にステップＳ２２の処理が実行される。
【０１８２】
なお、上記ステップＳ２１において角速度から姿勢を算出する場合、初期姿勢を定めておくのがよい。つまり、端末装置７の姿勢を角速度から算出する場合には、ＣＰＵ１０は、最初に端末装置７の初期姿勢を設定しておく。端末装置７の初期姿勢は、加速度データに基づいて算出されてもよいし、端末装置７を特定の姿勢にした状態でプレイヤに所定の操作を行わせることで、所定の操作が行われた時点における特定の姿勢を初期姿勢として設定するようにしてもよい。なお、空間における所定方向を基準とした絶対的な姿勢として端末装置７の姿勢を算出する場合には上記初期姿勢を算出することが良いが、例えばゲーム開始時点における端末装置７の姿勢を基準とした相対的な姿勢として端末装置７の姿勢を算出する場合には、上記初期姿勢は算出されなくても良い。
【０１８３】
ステップＳ２２において、ＣＰＵ１０は、端末装置７の加速度に基づいて端末装置７の姿勢（第２姿勢と呼ぶ。）を算出する。具体的には、ＣＰＵ１０は、メインメモリから加速度データ１０３を読み出して、加速度データ１０３に基づいて第２姿勢を算出する。ここで、端末装置７がほぼ静止している状態では、端末装置７に対して加えられる加速度は重力加速度に相当する。したがって、この状態では、検出された重力加速度の方向（重力方向）に対する端末装置７の向き（姿勢）を当該加速度データ１０３に基づいて算出することができる。このように、加速度センサ３７が重力加速度を検出する状況では、重力方向を基準とした第２姿勢を加速度データ１０３に基づいて算出することができる。以上のようにして算出された第２姿勢を表すデータはメインメモリに記憶される。ステップＳ２２の次にステップＳ２３の処理が実行される。
【０１８４】
ステップＳ２３において、ＣＰＵ１０は、加速度に基づく第２姿勢を用いて、角速度に基づく第１姿勢を補正する。具体的には、ＣＰＵ１０は、これらの姿勢を表すデータをメインメモリから読み出し、第１姿勢を第２姿勢へ所定の割合で近づける補正を行う。この所定の割合は、予め定められた固定値であってもよいし、検出される加速度等に応じて設定されてもよい。例えば、ＣＰＵ１０は、検出される加速度の大きさが重力加速度の大きさに近い場合には、第１姿勢を第２姿勢へ近づける割合を大きくし、検出される加速度の大きさが重力加速度の大きさから離れている場合には、当該割合を小さくするようにしてもよい。補正は、第１姿勢を重力加速度が示す姿勢に近づける補正であるので、必ずしも第２姿勢を算出して記憶する必要はなく、第１姿勢によって示される下方向が、加速度ベクトルに近づくように、第１姿勢を回転させるだけでもよい。また、加速度に基づく姿勢に関しては、重力方向を軸とする回転方向については姿勢を算出することができないので、当該回転方向に関しては補正が行われなくてもよい。
【０１８５】
本実施形態においては、上記ステップＳ２３の処理における補正後の姿勢を表すデータが端末姿勢データ１０９としてメインメモリに記憶される。上記ステップＳ２３の後、ＣＰＵ１０は姿勢算出処理を終了する。ステップＳ１１の姿勢算出処理の次に、ステップＳ１２の処理が実行される。
【０１８６】
なお、ＣＰＵ１０は、磁気センサ６２によって検出される方位データから、端末装置７を基準とした所定の方位（すなわち、所定の方位を基準とした端末装置７の姿勢）を知ることができる。したがって、他の実施形態においては、ＣＰＵ１０は、角速度データ１０２および加速度データ１０３に加えて、上記方位データをさらに用いて端末装置７の姿勢を算出してもよい。方位データを用いて端末装置７の姿勢を算出する場合には、実空間における所定方向を基準とした絶対的な姿勢を算出することができるので、端末装置７の姿勢をより正確に算出することができる。なお、方位データに関して、地磁気以外の磁界が発生している場所においては、方位データは厳密には絶対的な方位（北等）を示さないことになるが、その場所における磁界の方向に対する端末装置７の相対的な方向が示されるので、そのような場合であっても端末装置７の姿勢を算出することが可能である。また、他の実施形態においては、上記３つのデータのうち１つまたは２つに基づいて姿勢を算出するようにしてもよい。
【０１８７】
ステップＳ１２において、ＣＰＵ１０はオブジェクト制御処理を実行する。オブジェクト制御処理は、端末装置７に対する操作に基づいてヘリコプター８０の動作を制御し、仮想カメラ９０を設定する処理である。以下、図２２を参照して、オブジェクト制御処理の詳細について説明する。
【０１８８】
図２２は、図２０に示すオブジェクト制御処理（ステップＳ１２）の詳細な流れを示すフローチャートである。オブジェクト制御処理においてはまずステップＳ３１において、ＣＰＵ１０は、上記ステップＳ１１で算出された端末装置７の姿勢に基づいて仮想カメラ９０の姿勢を制御する。仮想カメラ９０の姿勢の制御方法は、端末装置７の姿勢に応じて仮想カメラ９０の姿勢が変化するものであればどのような方法であってもよいが、本実施形態では、現実空間における端末装置７の姿勢に対応するように仮想カメラ９０の姿勢が制御される（図１５参照）。具体的には、端末装置７の姿勢がある状態から変化した場合、仮想カメラ９０は、当該ある状態の時の仮想カメラ９０の姿勢から、端末装置７の変化方向に応じた方向に、変化量に応じた量だけ回転される。ステップＳ３１における具体的な処理としては、ＣＰＵ１０は、端末姿勢データ１０９をメインメモリから読み出し、端末装置７の姿勢に基づいて仮想カメラ９０の姿勢を算出する。そして、算出された姿勢を表すデータを新たなカメラ姿勢データ１１２としてメインメモリに記憶する。ステップＳ３１の次にステップＳ３２の処理が実行される。
【０１８９】
ステップＳ３２において、ＣＰＵ１０は、ヘリコプター８０のヨー方向に関する姿勢が、仮想カメラ９０の姿勢と異なっているか否かを判定する。具体的には、ＣＰＵ１０は、オブジェクト姿勢データ１１０およびカメラ姿勢データ１１２をメインメモリから読み出し、両者の姿勢がヨー方向に関して異なるか否かを判定する。ステップＳ３２の判定結果が肯定である場合、ステップＳ３３の処理が実行される。一方、ステップＳ３２の判定結果が否定である場合、ステップＳ３３の処理がスキップされてステップＳ３４の処理が実行される。
【０１９０】
ステップＳ３３において、ＣＰＵ１０は、仮想カメラ９０の姿勢を追従するようにヘリコプター８０を回転させる。具体的には、ヘリコプター８０は、仮想カメラ９０の姿勢に近づく方向へ、所定の回転量だけ回転される。この所定の回転量は、予め定められており、例えば、後述するステップＳ３７における回転量の最大値と等しいかあるいは同程度の大きさに設定される。また、所定の回転量以下の回転量だけ回転させるとヘリコプター８０の姿勢と仮想カメラ９０の姿勢とが一致する場合は、両者が一致する回転量だけヘリコプター８０は回転される。ステップＳ３３の具体的な処理としては、ＣＰＵ１０は、オブジェクト姿勢データ１１０およびカメラ姿勢データ１１２をメインメモリから読み出し、オブジェクト姿勢データ１１０が表す姿勢を上記の方法に従って回転させた回転後の姿勢を算出する。回転後の姿勢を表すデータは新たなオブジェクト姿勢データ１１０としてメインメモリに記憶される。ステップＳ３３の次にステップＳ３４の処理が実行される。
【０１９１】
上記ステップＳ３３の処理によれば、ヨー方向に関しては、仮想カメラ９０の姿勢に追従するようにヘリコプター８０が回転する。これによって、仮想カメラ９０の姿勢とヘリコプター８０の姿勢とは一致することとなる。これによれば、ヨー方向に関してヘリコプター８０の向きと仮想カメラ９０の向きとが一致していないことによってプレイヤが操作に違和感を抱くことを防止することができ、ヘリコプター８０の操作性を向上することができる。また、上記ステップＳ３３の処理によれば、仮想カメラ９０の姿勢に追従する際のヘリコプター８０の回転速度が所定速度以下に抑えられるので、仮想カメラ９０が速く回転する場合でもヘリコプター８０を自然に動作させることができる。なお、他の実施形態においては、上記ステップＳ３９において、ＣＰＵ１０は、仮想カメラ９０の姿勢と一致するようにヘリコプター８０の姿勢を制御するようにしてもよい。また、他の実施形態においては、端末装置７の姿勢変化に応じた仮想カメラ９０の姿勢変化の速度が所定値以上である場合には、仮想カメラ９０に追従するようにヘリコプター８０を回転させ、当該仮想カメラ９０の姿勢変化の速度が所定値よりも小さい場合には、仮想カメラ９０に一致するにヘリコプター８０を回転させてもよい。
【０１９２】
また、他の実施形態において、ヘリコプター８０の姿勢と仮想カメラ９０の姿勢とを一致させる必要性が低い場合には、上記ステップＳ３２およびＳ３３の処理は実行されなくてもよい。例えば、ヘリコプター８０の後方からヘリコプター８０の正面方向を見たゲーム画像がテレビ２に表示される場合には、端末装置７に表示されるゲーム画像ではヘリコプター８０の姿勢と仮想カメラ９０の姿勢とを一致させなくてもよいので、上記ステップＳ３２およびＳ３３の処理は実行されなくてもよい。
【０１９３】
ステップＳ３４において、ＣＰＵ１０は、左アナログスティック５３Ａの上下方向に関する入力に基づいて、ヘリコプター８０の前後方向の移動を制御する。ステップＳ３４における具体的な制御方法はどのような方法であってもよいが、本実施形態においては、ヘリコプター８０は、上下方向に関する左アナログスティック５３Ａの操作量に応じた移動量だけ前後方向に移動される。具体的には、ＣＰＵ１０は、スティックデータ１０６をメインメモリから読み出し、左アナログスティック５３Ａに対する操作を表す２次元座標系のｙ成分値（上下方向の傾倒量を表す）に応じて前後方向の移動量を算出する。次に、ＣＰＵ１０は、ヘリコプター８０の移動前の位置を、ヘリコプター８０を基準とした前後方向へ、上記算出された移動量だけ移動させた移動後の位置を算出する。なお、上記「ヘリコプター８０の移動前の位置」は、オブジェクト位置データ１１１によって表され、「ヘリコプター８０を基準とした前後方向」は、オブジェクト姿勢データ１１０から決められる。したがって、ＣＰＵ１０は、オブジェクト姿勢データ１１０およびオブジェクト位置データ１１１をメインメモリから読み出し、これらのデータを用いて上記移動後の位置を算出する。算出された移動後の位置を表すデータは新たなオブジェクト位置データ１１１としてメインメモリに記憶される。ステップＳ３４の次にステップＳ３５の処理が実行される。
【０１９４】
ステップＳ３５において、ＣＰＵ１０は、左アナログスティック５３Ａの左右方向に関する入力に基づいて、ヘリコプター８０の左右方向の移動を制御する。ステップＳ３５における具体的な制御方法はどのような方法であってもよいが、本実施形態においては、上記ステップＳ３４に準じた方法で左右方向の移動が制御される。具体的には、ＣＰＵ１０は、スティックデータ１０６をメインメモリから読み出し、左アナログスティック５３Ａに対する操作を表す２次元座標系のｘ成分値（左右方向の傾倒量を表す）に応じて左右方向の移動量を算出する。次に、ＣＰＵ１０は、オブジェクト姿勢データ１１０およびオブジェクト位置データ１１１をメインメモリから読み出し、ヘリコプター８０の移動前の位置を、ヘリコプター８０を基準とした左右方向へ、上記算出された移動量だけ移動させた移動後の位置を算出する。算出された移動後の位置を表すデータは新たなオブジェクト位置データ１１１としてメインメモリに記憶される。ステップＳ３５の次にステップＳ３６の処理が実行される。
【０１９５】
ステップＳ３６において、ＣＰＵ１０は、右アナログスティック５３Ｂの上下方向に関する入力に基づいて、ヘリコプター８０の上下方向の移動を制御する。ステップＳ３６における具体的な制御方法はどのような方法であってもよいが、本実施形態においては、上記ステップＳ３４に準じた方法で上下方向の移動が制御される。具体的には、ＣＰＵ１０は、スティックデータ１０６をメインメモリから読み出し、右アナログスティック５３Ｂに対する操作を表す２次元座標系のｙ成分値（上下方向の傾倒量を表す）に応じて左右方向の移動量を算出する。次に、ＣＰＵ１０は、オブジェクト姿勢データ１１０およびオブジェクト位置データ１１１をメインメモリから読み出し、ヘリコプター８０の移動前の位置を、ヘリコプター８０を基準とした上下方向へ、上記算出された移動量だけ移動させた移動後の位置を算出する。算出された移動後の位置を表すデータは新たなオブジェクト位置データ１１１としてメインメモリに記憶される。ステップＳ３６の次にステップＳ３７の処理が実行される。
【０１９６】
以上のステップＳ３４〜Ｓ３６の処理によって、アナログスティック５３に対する入力に基づいてヘリコプター８０の位置が制御される。具体的には、アナログスティック５３に対する入力に応じてヘリコプター８０が３次元の各方向（前後、左右、および上下方向）へ移動されることとなる。なお、上記ステップＳ３４〜Ｓ３６の一連の処理は１フレーム処理中に実行されるので、プレイヤは、ヘリコプター８０を各方向に同時に移動させることができる。つまり、プレイヤが左アナログスティック５３Ａを斜め方向に入力した場合や、各アナログスティック５３Ａおよび５３Ｂを同時に入力した場合には、ヘリコプター８０は斜め方向に移動する。
【０１９７】
なお、本実施形態においては、左アナログスティック５３Ａに対する上下方向の入力が、ヘリコプター８０の前後方向に対応し、左アナログスティック５３Ａに対する左右方向の入力が、ヘリコプター８０の左右方向に対応し、右アナログスティック５３Ｂに対する上下方向の入力が、ヘリコプター８０の上下方向に対応している。ここで、他の実施形態においては、方向入力部（アナログスティック５３）に対する入力方向と、操作対象（ヘリコプター８０）の移動方向との対応関係は、どのようなものであってもよい。例えば、他の実施形態においては、右アナログスティック５３Ｂに対する左右方向の入力が、ヘリコプター８０の左右方向に対応してもよい（このとき、左アナログスティック５３Ａに対する左右方向の入力が、ヘリコプター８０の左右方向の回転に対応していてもよい）。また、例えば、左アナログスティック５３Ａと右アナログスティック５３Ｂとの役割を本実施形態とは逆にしてもよい。なお、画面の奥行き方向（仮想カメラ９０の視線方向。ここでは、ヘリコプター８０の前後方向）の移動、および、画面の上下方向（ここでは、ヘリコプター８０の上下方向）の移動については、方向入力部に対する上下方向の入力が対応付けられることが好ましい。これによれば、プレイヤは、自然な操作感覚でオブジェクトを容易に操作することができるからである。
【０１９８】
ステップＳ３７において、ＣＰＵ１０は、右アナログスティック５３Ｂの左右方向に関する入力に基づいて、ヘリコプター８０のヨー方向（左右方向）の回転を制御する。ステップＳ３７における具体的な制御方法はどのような方法であってもよいが、本実施形態においては、ヘリコプター８０は、左右方向に関する右アナログスティック５３Ｂの操作量に応じた回転量だけヨー方向に回転される。具体的には、ＣＰＵ１０は、スティックデータ１０６をメインメモリから読み出し、右アナログスティック５３Ｂに対する操作を表す２次元座標系のｘ成分値（左右方向の傾倒量を表す）に応じて回転量を算出する。次に、ＣＰＵ１０は、オブジェクト姿勢データ１１０をメインメモリから読み出し、オブジェクト姿勢データ１１０が表す回転前の姿勢を上記回転量だけ回転させた回転後の姿勢を算出する。算出された回転後の姿勢を表すデータは新たなオブジェクト姿勢データ１１０としてメインメモリに記憶される。ステップＳ３７の次にステップＳ３８の処理が実行される。
【０１９９】
上記ステップＳ３７のように、本実施形態においては、方向入力部（アナログスティック５３）に対する操作に基づいてヘリコプター８０の姿勢が制御された。ここで、他の実施形態においては、ヘリコプター８０の姿勢は、方向入力部（アナログスティック５３）に対する操作に基づいて制御されなくてもよく、この場合には上記ステップＳ３７の処理は実行されなくてもよい。
【０２００】
なお、以上のステップＳ３４〜Ｓ３７の処理においては、ヘリコプター８０の移動量または回転量は、アナログスティック５３の操作量（スライド量）に応じた量となるように算出された。ここで、他の実施形態においては、ヘリコプター８０の移動量または回転量は、予め定められた固定量であってもよい。また、方向入力部としてタッチパネルが用いられてもよく、この場合には、タッチパネルに対する入力により決められる線分（入力された軌跡を表す線分でもよいし、入力面上の所定位置からタッチ位置までの線分でもよい。）の長さに応じた量となるように、上記移動量または回転量が算出されてもよい。
【０２０１】
なお、他の実施形態においては、上記ステップＳ３７の処理によるヘリコプター８０の回転が行われる場合（すなわち、右アナログスティック５３Ｂに対して左右方向の入力がある場合）には、上記ステップＳ３３の処理は実行されなくてもよい。つまり、右アナログスティック５３Ｂに対して左右方向の入力がある場合には当該入力に応じた回転が優先され、仮想カメラ９０に追従する回転は、当該入力が終了した後で行われるようにしてもよい。また、上記とは逆に、仮想カメラ９０に追従する回転が優先されてもよい。つまり、仮想カメラ９０に追従する回転が行われる場合（ステップＳ３３の処理が実行される場合）には、上記ステップＳ３７の処理がスキップされてもよい。
【０２０２】
ステップＳ３８において、ＣＰＵ１０は、ヘリコプター８０がヨー方向に関して回転したか否かを判定する。ステップＳ３８の判定処理は、アナログスティック５３に対する入力によってヘリコプター８０がヨー方向（左右方向）に回転したか否かを判定するための処理であり、右アナログスティック５３Ｂの左右方向に関する入力があったか否かによって行うことができる。具体的には、ＣＰＵ１０は、メインメモリから読み出したスティックデータ１０６を参照することで上記の判定を行う。ステップＳ３８の判定結果が肯定である場合、ステップＳ３９の処理が実行される。一方、ステップＳ３８の判定結果が否定である場合、ステップＳ３９の処理がスキップされてステップＳ４０の処理が実行される。
【０２０３】
ステップＳ３９において、ＣＰＵ１０は、ヘリコプター８０のヨー方向の姿勢に合わせて仮想カメラ９０をヨー方向に回転させる。すなわち、仮想カメラ９０の姿勢は、ヨー方向に関してヘリコプター８０の姿勢が回転した角度と同じ角度だけ回転される。具体的には、ＣＰＵ１０は、オブジェクト姿勢データ１１０をメインメモリから読み出し、変更後の仮想カメラ９０の姿勢を算出する。そして、変更後の仮想カメラ９０の姿勢を表すデータを新たなカメラ姿勢データ１１２としてメインメモリに記憶する。ステップＳ３９の次にステップＳ４０の処理が実行される。
【０２０４】
本実施形態においては、ヨー方向に関してヘリコプター８０の姿勢と仮想カメラ９０の姿勢とを一致させるべく、上記ステップＳ３８およびＳ３９の処理が実行された。ここで、他の実施形態においては、ＣＰＵ１０は、ヨー方向以外のピッチ方向および／またはロール方向についてもステップＳ３８およびＳ３９と同様の処理を実行し、ヘリコプター８０の姿勢と仮想カメラ９０の姿勢とを一致させるようにしてもよい。
【０２０５】
ステップＳ４０において、ＣＰＵ１０は、ヘリコプター８０が仮想カメラ９０の視野範囲内に含まれるように仮想カメラ９０の位置を制御する。仮想カメラ９０の位置は、ヘリコプター８０の位置と仮想カメラ９０の姿勢とに基づいて設定される。具体的には、ＣＰＵ１０は、オブジェクト位置データ１１１およびカメラ姿勢データ１１２をメインメモリから読み出し、仮想カメラ９０がヘリコプター８０の位置を向き、かつ、当該位置から所定距離だけ離れた位置となるように仮想カメラ９０の位置を算出する（図１５参照）。そして、算出された位置を表すデータをカメラ位置データ１１３としてメインメモリに記憶する。なお、上記ステップＳ４０では、方向入力部（アナログスティック５３）に対する入力に基づいて制御されるヘリコプター８０の位置に基づいて、仮想カメラ９０の位置が制御されるので、本実施形態では、方向入力部に対する入力に基づいて仮想カメラ９０の位置が制御されるとも言える。ステップＳ４０の次にステップＳ４１の処理が実行される。
【０２０６】
なお、他の実施形態において、例えば端末用ゲーム画像をヘリコプター８０から見た一人称視点の画像とする場合には、ヘリコプター８０と同じ位置に仮想カメラ９０を設定してもよい。
【０２０７】
ステップＳ４１において、ＣＰＵ１０は、ヘリコプター８０による射撃動作を制御する。具体的には、ＣＰＵ１０はまず、操作ボタンデータ１０５をメインメモリから読み出し、所定の射撃操作（例えば、第１Ｌボタン５４Ｉまたは第１Ｒボタン５４Ｊを押下する操作）が行われたか否かを判定する。射撃操作が行われた場合、ＣＰＵ１０は、カーソル８１が指し示す（ゲーム空間内の）位置に向かって弾を発射する動作をヘリコプター８０に行わせる。なお、他の実施形態においては、上記射撃操作は、タッチパネル５２に対する操作であってもよい。すなわち、ＣＰＵ１０は、タッチパネル５２に対する操作が行われた場合、タッチ位置が指し示すゲーム空間内の位置に向かって弾を発射する動作をヘリコプター８０に行わせるようにしてもよい。ステップＳ４１の後、ＣＰＵ１０は、オブジェクト制御処理を終了する。
【０２０８】
また、本実施形態においては、上記ステップＳ４１において操作対象のオブジェクト（ヘリコプター８０）に射撃動作を行わせるようにしたが、他の実施形態においては、操作対象のオブジェクトに他の動作を行わせるようにしてもよい。例えば、ＣＰＵ１０は、操作対象のオブジェクトに他の攻撃動作を行わせるようにしてもよいし、アイテムを使用する動作等を行わせるようにしてもよい。
【０２０９】
上記オブジェクト制御処理によれば、仮想のゲーム空間内におけるヘリコプター８０の動作が、方向入力部（アナログスティック５３）に対する入力に基づいて制御される。ここで、本実施形態では、各アナログスティック５３に対する上下方向の入力が、ヘリコプター８０の前後方向と上下方向との移動にそれぞれ対応付けられている（ステップＳ３４およびＳ３６）ので、プレイヤは、自然な操作感覚でヘリコプター８０を容易に操作することができる。また、左アナログスティック５３Ａに対する左右方向の入力が、ヘリコプター８０の左右方向の移動に対応付けられている（ステップＳ３５）ので、各アナログスティック５３を用いてヘリコプター８０を３次元空間の各方向に移動させることができる。さらに、右アナログスティック５３Ｂに対する左右方向の入力が、ヘリコプター８０のヨー方向の回転に対応付けられている（ステップＳ３７）ので、ヘリコプター８０を平行移動させるだけでなくヘリコプター８０の姿勢を変化させることができる。
【０２１０】
なお、他の実施形態においては、ＣＰＵ１０は、端末装置７のロール方向あるいはピッチ方向に関する姿勢に応じて、ヘリコプター８０の姿勢および／または位置を制御するようにしてもよい。例えば、端末装置７が所定の基準状態からロール方向に傾いた場合、当該基準状態からの傾き量に応じた回転量だけヘリコプター８０をロール方向に回転させてもよい。なお、上記所定の基準状態とは、例えば端末装置７のｘ軸が水平となる所定の状態である。さらに、上記の場合、ＣＰＵ１０は、傾き量に応じた移動量だけヘリコプター８０を左右方向に移動させてもよい。なお、このときヘリコプター８０を移動させる方向は、ヘリコプター８０の左右方向でもよいし、ゲーム空間における水平方向であってもよい。なお、ピッチ方向についてもロール方向と同様に、端末装置７が所定の基準状態からピッチ方向に傾いた場合、ＣＰＵ１０は、当該基準状態からの傾き量に応じた回転量だけヘリコプター８０をピッチ方向に回転させてもよい。
【０２１１】
また、上記オブジェクト制御処理によれば、端末装置７の姿勢に応じて仮想カメラ９０の姿勢が変化する（ステップＳ３１）。これによれば、プレイヤは端末装置７の姿勢を変化させる操作によってゲーム画像における視線方向を変化させることができ、直感的な操作で容易に視線方向を変化させることができる。また、プレイヤは、端末装置７の姿勢を変化させる操作と、各アナログスティック５３に対する操作とを同時に行うことができるので、ヘリコプター８０に関する操作を容易に行うことができる。
【０２１２】
また、上記オブジェクト制御処理によれば、アナログスティック５３に対する入力によってヨー方向に関してヘリコプター８０の姿勢が変化した場合（ステップＳ３８でＹｅｓの場合）、ヨー方向に関してヘリコプター８０の姿勢と同じだけ仮想カメラ９０の姿勢が回転するように、仮想カメラ９０の姿勢が変化される（ステップＳ３９）。したがって、ヨー方向に関してはヘリコプター８０の向きと仮想カメラ９０の向きとを対応させることができ、両者の向きが異なることによってプレイヤが操作に違和感を抱くことを防止することができる。なお、他の実施形態において、ヘリコプター８０の姿勢と仮想カメラ９０の姿勢とを一致させる必要性が低い場合には、上記ステップＳ３２およびＳ３３の処理と同様、ステップＳ３８およびＳ３９の処理は実行されなくてもよい。
【０２１３】
図２０の説明に戻り、ステップＳ１２のオブジェクト制御処理の次にステップＳ１３〜Ｓ１５の一連の処理が実行される。ステップＳ１３〜Ｓ１５の一連の処理は、プレイヤオブジェクト８２〜８５の動作を制御するとともに、プレイヤオブジェクト８２〜８５を表示するための仮想カメラを制御する処理である。なお、ステップＳ１３〜Ｓ１５の一連の処理は、プレイヤオブジェクト毎に実行される。すなわち、本実施形態においてはプレイヤオブジェクトは４つであるので、４つの各プレイヤオブジェクト８２〜８５について上記ステップＳ１３〜Ｓ１５の処理が実行される。
【０２１４】
ステップＳ１３において、ＣＰＵ１０は、コントローラ５に対する操作に基づいてプレイヤオブジェクトの移動を制御する。具体的には、ＣＰＵ１０は、コントローラ操作データ１０７をメインメモリから読み出し、コントローラ操作データ１０７に基づいてプレイヤオブジェクトを移動させる。移動後の位置を表すデータはメインメモリに記憶される。なお、プレイヤオブジェクトに対する制御方法はどのようなものであってもよい。例えば、プレイヤオブジェクトは、コントローラ５の十字ボタン３２ａに対する方向入力に応じた方向に所定の速度で移動してもよい。また、アナログスティックを有する機器がコントローラ５に接続されて使用される場合には、当該アナログスティックに対する方向入力に基づいてプレイヤオブジェクトの移動が制御されてもよい。ステップＳ１３の次にステップＳ１４の処理が実行される。
【０２１５】
ステップＳ１４において、ＣＰＵ１０は、テレビ用ゲーム画像を生成するための仮想カメラの位置および姿勢を制御する。この仮想カメラは、プレイヤオブジェクトが視野範囲に含まれるように制御されればどのように制御されてもよい。例えば、ＣＰＵ１０は、プレイヤオブジェクトの後方であってプレイヤオブジェクトの位置よりやや上方の位置に、プレイヤオブジェクトの方を向く姿勢で仮想カメラを設定する。設定された仮想カメラの位置および姿勢を表すデータはメインメモリに記憶される。なお、本実施形態においては、テレビ２の画面は４分割されてテレビ２には４つのゲーム画像が表示されるので、上記仮想カメラは４つ設定される。また、４つの仮想カメラは、４つのプレイヤオブジェクトに１つずつ対応し、対応するプレイヤオブジェクトが視野範囲に含まれるように制御される。ステップＳ１４の次にステップＳ１５の処理が実行される。
【０２１６】
ステップＳ１５において、ＣＰＵ１０は、プレイヤオブジェクトによる射撃動作を制御する。具体的には、ＣＰＵ１０はまず、カーソル（図１２に示すカーソル８６〜８９）の位置を算出する。カーソルの位置はどのように決定されてもよいが、例えば、コントローラ５の撮像方向（図３に示すＺ軸）が指し示す画面上の位置がカーソルの位置として算出されてもよい。なお、この位置は、上述のマーカ座標から算出することができる。また、例えば、カーソルの位置は、コントローラ５の十字ボタン３２ａに対する方向入力に応じて移動するように算出されてもよい。次に、ＣＰＵ１０は、コントローラ操作データ１０７をメインメモリから読み出し、所定の射撃操作（例えば、Ａボタン３２ｄを押下する操作）が行われたか否かを判定する。射撃操作が行われた場合、ＣＰＵ１０は、カーソルが指し示す（ゲーム空間内の）位置に向かって弾を発射する動作をプレイヤオブジェクトに行わせる。ステップＳ１５の次にステップＳ１６の処理が実行される。
【０２１７】
ステップＳ１６において、ＣＰＵ１０は、その他のゲーム進行処理を行う。その他のゲーム進行処理とは、上記ステップＳ１１〜Ｓ１５の処理以外にステップＳ４のゲーム制御処理において実行される処理である。上記その他のゲーム進行処理には、例えば、ヘリコプター８０およびプレイヤオブジェクト８２〜８５以外の他のオブジェクト（例えば射撃動作によって発射された弾等）の動作を制御する処理や、ヘリコプター８０およびプレイヤオブジェクト８２〜８５に弾が当たったか否かを判定する処理や、弾が当たったオブジェクトのパラメータ（例えば体力を表すパラメータ）を変化させる処理等が含まれる。上記の処理の他、ステップＳ１６においてはゲームの進行に必要な処理が適宜実行される。上記ステップＳ１６の後、ＣＰＵ１０はゲーム制御処理を終了する。
【０２１８】
図１９の説明に戻り、ステップＳ４（ゲーム制御処理）の次のステップＳ５において、テレビ２に表示するためのテレビ用ゲーム画像がＣＰＵ１０およびＧＰＵ１１ｂによって生成される。すなわち、ＣＰＵ１０およびＧＰＵ１１ｂは、ステップＳ４のゲーム制御処理の結果を表すデータをメインメモリから読み出し、また、ゲーム画像を生成するために必要なデータをＶＲＡＭ１１ｄから読み出し、テレビ用ゲーム画像を生成する。本実施形態では、まず、上記ステップＳ１４で設定された各仮想カメラに基づいて、仮想カメラから見たゲーム空間を表す画像がそれぞれ生成され、生成された各画像の上にカーソルの画像が追加される。そして、４つの各画像を１つの画像とすることでテレビ用ゲーム画像が生成される。生成されたテレビ用ゲーム画像はＶＲＡＭ１１ｄに記憶される。上記ステップＳ５の次にステップＳ６の処理が実行される。
【０２１９】
ステップＳ６において、端末装置７に表示するための端末用ゲーム画像がＣＰＵ１０およびＧＰＵ１１ｂによって生成される。すなわち、ＣＰＵ１０およびＧＰＵ１１ｂは、ステップＳ４のゲーム制御処理の結果を表すデータをメインメモリから読み出し、また、ゲーム画像を生成するために必要なデータをＶＲＡＭ１１ｄから読み出し、端末用ゲーム画像を生成する。本実施形態では、ＣＰＵ１０はカメラ姿勢データ１１２およびカメラ位置データ１１３をメインメモリから読み出し、仮想カメラから見たゲーム空間を表す画像がＣＰＵ１０およびＧＰＵ１１ｂによって生成される。また、生成された画像の所定位置（例えば、画像の中心よりやや上方の位置（図１１参照））にカーソル８１の画像が追加されることで、端末用ゲーム画像が生成される。生成された端末用ゲーム画像はＶＲＡＭ１１ｄに記憶される。上記ステップＳ６の次にステップＳ７の処理が実行される。
【０２２０】
ステップＳ７において、ＣＰＵ１０は、テレビ２へゲーム画像を出力する。具体的には、ＣＰＵ１０は、ＶＲＡＭ１１ｄに記憶されたテレビ用ゲーム画像のデータをＡＶ−ＩＣ１５へ送る。これに応じて、ＡＶ−ＩＣ１５はテレビ用ゲーム画像のデータをＡＶコネクタ１６を介してテレビ２へ出力する。これによって、テレビ用ゲーム画像がテレビ２に表示される。また、ステップＳ７においては、ゲーム画像のデータと共にゲーム音声のデータがテレビ２へ出力され、テレビ２のスピーカ２ａからゲーム音声が出力されてもよい。ステップＳ７の次にステップＳ８の処理が実行される。
【０２２１】
ステップＳ８において、ＣＰＵ１０は、端末装置７へゲーム画像を送信する。具体的には、ＶＲＡＭ１１ｄに記憶された端末用ゲーム画像の画像データは、ＣＰＵ１０によってコーデックＬＳＩ２７に送られ、コーデックＬＳＩ２７によって所定の圧縮処理が行われる。圧縮処理が施された画像のデータは、端末通信モジュール２８によってアンテナ２９を介して端末装置７へ送信される。端末装置７は、ゲーム装置３から送信されてくる画像のデータを無線モジュール７０によって受信し、受信された画像データに対してコーデックＬＳＩ６６によって所定の伸張処理が行われる。伸張処理が行われた画像データはＬＣＤ５１に出力される。これによって、端末用ゲーム画像がＬＣＤ５１に表示される。また、ステップＳ８においては、ゲーム画像のデータと共にゲーム音声のデータが端末装置７へ送信され、端末装置７のスピーカ６７からゲーム音声が出力されてもよい。ステップＳ８の次にステップＳ９の処理が実行される。
【０２２２】
なお、本実施形態においては、カーソル８１はＬＣＤ５１の画面の所定位置に表示される。したがって、プレイヤは、端末装置７の姿勢を変化させる操作によって、仮想カメラの姿勢（ゲーム画像における視線方向）を変化させることで、カーソル８１が指し示す位置（すなわち、射撃方向）を変化させることができる。これによれば、プレイヤは、端末装置７の姿勢を変化させることで射撃方向を容易かつ迅速に変化させることができる。
【０２２３】
ステップＳ９において、ＣＰＵ１０は、ゲームを終了するか否かを判定する。ステップＳ９の判定は、例えば、ゲームオーバーになったか否か、あるいは、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ９の判定結果が否定の場合、ステップＳ２の処理が再度実行される。一方、ステップＳ９の判定結果が肯定の場合、ＣＰＵ１０は図１９に示すゲーム処理を終了する。以降、ステップＳ２〜Ｓ９の一連の処理は、ステップＳ９でゲームを終了すると判定されるまで繰り返し実行される。
【０２２４】
以上に説明したゲーム処理によれば、２つのアナログスティック５３に対する操作による方向入力指示と、端末装置７自体の姿勢を変化させる操作による方向入力指示とによって、操作対象（ヘリコプター８０および仮想カメラ９０）の位置および姿勢を３次元的に変化させることができる。本実施形態によれば、複数の方向に関する方向入力指示を、端末装置７を用いて容易に行うことができ、複数の方向に関する方向入力指示の操作性を向上することができる。
【０２２５】
［７．変形例］
上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成で本発明を実施することも可能である。
【０２２６】
（端末装置の姿勢の算出に関する変形例）
上記実施形態においては、端末装置７の姿勢は、端末装置７が有する慣性センサ（加速度センサ６３およびジャイロセンサ６４）の検出結果を用いて算出された。ここで、他の実施形態においては、端末装置７の姿勢の算出方法はどのような方法であってもよい。例えば、他の実施形態においては、端末装置７が有する他のセンサ部（例えば磁気センサ６２やカメラ５６）の検出結果を用いて端末装置７の姿勢が算出されてもよい。また、例えば、ゲームシステム１が端末装置７を撮像するカメラを端末装置７とは別に備えている場合には、ゲーム装置３は当該カメラで端末装置７を撮像した撮像結果を取得し、撮像結果を用いて端末装置７の姿勢を算出するようにしてもよい。
【０２２７】
（端末装置７による操作対象に関する変形例）
上記実施形態においては、端末装置７の操作対象、すなわち、アナログスティック５３によって位置が制御されるとともに端末装置７の姿勢によって姿勢が制御される操作対象は、ヘリコプター８０および仮想カメラ９０であった。ここで、端末装置７の操作対象は、仮想空間に配置されるどのようなものであってもよい。例えば、他の実施形態においては、端末装置７の操作対象は仮想カメラのみであってもよいし、所定のオブジェクトのみであってもよい。
【０２２８】
（ゲーム内容に関する変形例）
上記実施形態においては、複数人のプレイヤが対戦する形式のゲームを例として説明したが、他の実施形態においては、ゲームの内容はどのようなものであってもよい。例えば、他の実施形態においては、飛行機や車等の移動体オブジェクトを操作装置７によって操作する１人プレイのゲームが実行されてもよい。また、他の実施形態においては、操作対象となるオブジェクトが配置されず（または表示されず）、仮想カメラ（ゲーム画像の視点および視線方向）を端末装置７によって操作するゲームが実行されてもよい。
【０２２９】
（ゲームシステム１の構成に関する変形例）
上記実施形態においては、ゲームシステム１は、操作装置として機能する端末装置７およびコントローラ５と、ゲーム処理を実行するゲーム装置３とを含む構成であった。ここで、ゲームシステムは、操作装置と、操作装置に対する操作に基づいてゲーム処理を実行するゲーム処理部とを含む構成であればどのような構成であってもよい。例えば、他の実施形態においては、操作装置（上記実施形態で言えば端末装置７）がゲーム処理部を含む構成であってもよい。つまり、ゲームシステムが１つの携帯型のゲーム装置によって実現されてもよい。また、他の実施形態においては、ゲームシステムが複数の端末装置７を備え、複数人のプレイヤが端末装置７を用いて操作対象（ヘリコプター８０および仮想カメラ９０）を操作するようにしてもよい。
【０２３０】
（ゲーム処理を実行する情報処理装置に関する変形例）
上記実施形態においては、ゲームシステム１において実行される一連のゲーム処理をゲーム装置３が実行したが、ゲーム処理の一部は他の装置によって実行されてもよい。例えば、他の実施形態においては、ゲーム処理の一部（例えば、端末用ゲーム画像の生成処理）を端末装置７が実行するようにしてもよい。また、他の実施形態では、互いに通信可能な複数の情報処理装置を有するゲームシステムにおいて、当該複数の情報処理装置がゲーム処理を分担して実行するようにしてもよい。
【産業上の利用可能性】
【０２３１】
本発明は、複数の方向に対する入力指示に関する操作性を向上すること等を目的として、ゲームシステムやゲーム装置に利用することが可能である。
【符号の説明】
【０２３２】
１  ゲームシステム
２  テレビ
３  ゲーム装置
４  光ディスク
５  コントローラ
７  端末装置
１０  ＣＰＵ
１１ｅ  内部メインメモリ
１２  外部メインメモリ
３５  撮像情報演算部
３７  加速度センサ
４４  無線モジュール
４８  ジャイロセンサ
５１  ＬＣＤ
５２  タッチパネル
５３  アナログスティック
５４  操作ボタン
６２  磁気センサ
６３  加速度センサ
６４  ジャイロセンサ
６６  コーデックＬＳＩ
７０  無線モジュール
８０  ヘリコプターオブジェクト
８１  カーソル
９０  仮想カメラ
１００  ゲームプログラム
１０１  端末操作データ
１０９  端末姿勢データ
１１０  オブジェクト姿勢データ
１１１  オブジェクト位置データ
１１２  カメラ姿勢データ
１１３  カメラ位置データ
【図１】
0005829020.tif 000002
【図２】
0005829020.tif 000003
【図３】
0005829020.tif 000004
【図４】
0005829020.tif 000005
【図５】
0005829020.tif 000006
【図６】
0005829020.tif 000007
【図７】
0005829020.tif 000008
【図８】
0005829020.tif 000009
【図９】
0005829020.tif 000010
【図１０】
0005829020.tif 000011
【図１１】
0005829020.tif 000012
【図１２】
0005829020.tif 000013
【図１３】
0005829020.tif 000014
【図１４】
0005829020.tif 000015
【図１５】
0005829020.tif 000016
【図１６】
0005829020.tif 000017
【図１７】
0005829020.tif 000018
【図１８】
0005829020.tif 000019
【図１９】
0005829020.tif 000020
【図２０】
0005829020.tif 000021
【図２１】
0005829020.tif 000022
【図２２】
0005829020.tif 000023