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