(57)【要約】【構成】ゲームシステム１０は、表示装置３４に表示されたゲーム画面内の任意の点を指し示すポインティング装置２６と、ポインティング装置に設けられる加速度センサとを備える。ゲームシステム１０のプロセサは、ポインティング装置によって指し示される点の位置を繰り返し特定し、特定される位置の変化を検出する。また、加速度センサによって検知される加速度に基づいてポインティング装置の運動方向を判別する。そして、位置変化が検出されたとき当該位置変化に基づいてゲーム処理を実行し、位置変化が検出されないときには判別された運動方向に基づいてゲーム処理を実行する。【効果】ポインティング装置による指し示し位置の特定が困難な状況でも、その運動方向を利用して、支障なくゲーム処理を進行させることができる。【選択図】図１
2007300953.tif 000002
【特許請求の範囲】
【請求項１】
ゲーム処理の進行に応じて更新されるゲーム画面を表示する表示装置と、前記表示装置によって表示されたゲーム画面内の任意の点を指し示すポインティング装置と、前記ポインティング装置に設けられる加速度センサとを備えるゲームシステムのプロセサに、
前記ポインティング装置によって指し示される点の位置を単位時間毎に特定する位置特定ステップ、
前記位置特定ステップによって特定される位置の変化を検出する位置変化検出ステップ、
前記加速度センサによって検知される加速度に基づいて前記ポインティング装置の運動方向を判別する第１方向判別ステップ、および
前記位置変化検出ステップによって位置変化が検出されたとき当該位置変化に基づいて前記ゲーム処理を実行し、前記位置変化検出ステップによって位置変化が検出されないときには前記第１方向判別ステップによって判別された運動方向に基づいて前記ゲーム処理を実行するゲーム処理ステップを実行させるための、ゲームプログラム。
【請求項２】
前記プロセサに、前記加速度センサによって検知される加速度が閾値以上であるか否かを判別する加速度判別ステップをさらに実行させ、
前記位置特定ステップは前記加速度判別ステップによって加速度が閾値以上であると判別されている期間にだけ位置特定を行う、請求項１記載のゲームプログラム。
【請求項３】
前記プロセサに、前記位置特定ステップによって前記期間内に検出された複数の位置のうち最初に検出された位置と最後に検出された位置とに基づいて前記ポインティング装置の運動方向を判別する第２方向判別ステップをさらに実行させる、請求項２記載のゲームプログラム。
【請求項４】
前記第１方向判別ステップは前記期間にだけ方向判別を行う、請求項３記載のゲームプログラム。
【請求項５】
前記ゲーム処理は前記ポインティング装置の運動に対応する前記ゲーム画面内の軌跡を決定する処理を含み、
前記ゲーム処理ステップは、前記位置変化検出ステップによって位置変化が検出されたとき前記位置特定ステップによって特定された複数の位置のうち最初に特定された位置と最後に特定された位置とに基づいて前記軌跡を決定し、前記位置変化検出ステップによって位置変化が検出されないときには前記第１方向判別ステップによって判別された運動方向と既定位置とに基づいて前記軌跡を決定する、請求項１ないし４のいずれかに記載のゲームプログラム。
【請求項６】
前記プロセサに、
前記加速度センサによって検知される加速度の変化を累積加算することによって前記ポインティング装置と共に運動するローカル座標系における当該ポインティング装置の速度方向を算出する第１方向算出ステップ、
前記加速度センサによって検知される加速度を累積加算することによって前記ローカル座標系における重力方向を算出する第２方向算出ステップ、および
前記第２方向算出ステップによって算出された重力方向を静止座標系における重力方向と一致させるような回転演算を前記第１方向算出ステップによって算出された速度方向に対して施すことによって前記静止座標系における速度方向を算出する第３方向算出ステップをさらに実行させ、
前記第１方向判別ステップの判別は前記第３方向算出ステップの算出結果に基づく、請求項１ないし５のいずれかに記載のゲームプログラム。
【請求項７】
前記加速度センサは３方向の加速度成分を検出し、
前記第１方向算出ステップ，前記第２方向算出ステップおよび前記回転演算ステップの各々は前記３方向のうちいずれか２つに対応する２つの加速度成分について算出を行い、
前記加速度判別ステップは前記３方向のうち残りの１つに対応する加速度成分について判別を行う、請求項６記載のゲームプログラム。
【請求項８】
前記加速度センサは所定の検知可能範囲を有し、
前記プロセサに、前記ポインティング装置の加速度が前記検知可能範囲を超えるとき前記加速度センサによって検知された加速度を補正する補正ステップをさらに実行させる、請求項６または７記載のゲームプログラム。
【請求項９】
前記補正ステップは前記ポインティング装置の加速度が前記検知可能範囲内にあるときに前記加速度センサによって検知された加速度で規定されるベジェ曲線を利用して補正を行う、請求項８記載のゲームプログラム。
【請求項１０】
前記プロセサに、
前記加速度センサによって検知された加速度を累積加算することによって前記ポインティング装置と共に運動するローカル座標系における重力方向を算出する重力方向算出ステップ、および
静止座標系における重力方向を前記重力方向算出ステップによって算出された重力方向と一致させるような回転処理を前記加速度センサによって検知される加速度に対して施すことによって前記静止座標系における加速度の方向を算出する加速度方向算出ステップをさらに実行させ、
前記第１方向判別ステップの判別は前記加速度方向算出ステップの算出結果に基づく、請求項１ないし５のいずれかに記載のゲームプログラム。
【請求項１１】
前記加速度センサは３方向の加速度成分を検出し、
前記方向算出ステップおよび前記加速度算出ステップの各々は前記３方向に対応する３つの加速度成分について算出を行う、請求項１０記載のゲームプログラム。
【請求項１２】
前記ゲームシステムは前記表示装置の画面近傍に設けられる複数の発光素子をさらに備え、
前記光学式ポインティング装置は前記複数の発光素子を含む被写界を撮像する撮像装置を含み、
前記位置特定ステップは前記撮像装置によって撮像された被写界像に基づいて前記ポインティング装置の指し示す位置を特定する、請求項１ないし１１のいずれかに記載のゲームプログラム。
【請求項１３】
ゲーム処理の進行に応じて更新されるゲーム画面を表示する表示装置、
前記表示装置によって表示されたゲーム画面内の任意の点を指し示すポインティング装置、
前記ポインティング装置に設けられる加速度センサ、
前記ポインティング装置によって指し示される点の位置を単位時間毎に特定する位置特定手段、
前記位置特定手段によって特定される位置の変化を検出する位置変化検出手段、
前記加速度センサによって検知される加速度に基づいて前記ポインティング装置の運動方向を判別する第１方向判別手段、および
前記位置変化検出手段によって位置変化が検出されたとき当該位置変化に基づいて前記ゲーム処理を実行し、前記位置変化検出手段によって位置変化が検出されないときには前記第１方向判別手段によって判別された運動方向に基づいて前記ゲーム処理を実行するゲーム処理手段を備える、ゲームシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ゲームプログラムおよびゲームシステムに関し、特にたとえば、光学式ポインティング装置と加速度センサとを利用する、ゲームプログラムおよびゲームシステムに関する。
【背景技術】
【０００２】
従来のこの種のシステムとしては、特許文献１に開示されたものが知られている。この従来技術は、受光センサおよび傾きセンサが設けられたガン型コントローラ（ポインティング装置）と、ディスプレイとを備える。ディスプレイのラスタ走査による光量を受光センサで検出し、検出結果に基づいて着弾位置を求める。また、ガン型コントローラの傾きを傾きセンサで検知し、攻撃モードと防御モードとを検知結果に応じて切り換える。
【特許文献１】特開２００１−１０４６４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、従来技術では、傾きセンサ（加速度センサ）は、モード切り換えといった、ポインティングとは無関係の処理に利用されるに過ぎない。このため、受光センサが走査線などの光源（マーカ）を検知できない状況では、ポインティング装置によって指し示される位置を特定できず、ゲームの進行に支障をきたす。
【０００４】
それゆえに、この発明の主たる目的は、ポインティング装置によって指し示される位置の特定が困難な状況でもゲーム処理を進行させることができる、ゲームプログラムおよびゲームシステムを提供することである。
【課題を解決するための手段】
【０００５】
請求項１の発明に従うゲームプログラムは、ゲームシステム（１０：実施例で相当する参照符号。以下同じ）のプロセサ（３６）に、位置特定ステップ（Ｓ３５）、位置変化検出ステップ（Ｓ４１，Ｓ４３，Ｓ９３）、第１方向判別ステップ（Ｓ９７）およびゲーム処理ステップ（Ｓ２５）を実行させる。ゲームシステムは、ゲーム処理の進行に応じて更新されるゲーム画面を表示する表示装置（３４）と、表示装置によって表示されたゲーム画面内の任意の点を指し示すポインティング装置（２６）と、ポインティング装置に設けられる加速度センサ（６８）とを備える。
【０００６】
位置特定ステップは、ポインティング装置によって指し示される点の位置を単位時間毎に特定する。位置変化検出ステップは、位置特定ステップによって特定される位置の変化を検出する。第１方向判別ステップは、加速度センサによって検知される加速度に基づいてポインティング装置の運動方向を判別する。ゲーム処理ステップは、位置変化検出ステップによって位置変化が検出されたとき当該位置変化に基づいてゲーム処理を実行し、位置変化検出ステップによって位置変化が検出されないときには第１方向判別ステップによって判別された運動方向に基づいてゲーム処理を実行する。
【０００７】
請求項１の発明では、ポインティング装置によって指し示される点の位置は、位置特定ステップによって単位時間毎に特定される。位置変化検出ステップは、こうして特定される位置の変化を検出する。第１方向判別ステップは、ポインティング装置の運動方向を加速度センサによって検知される加速度に基づいて判別する。ゲーム処理ステップは、位置変化検出ステップによって位置変化が検出されればこの位置変化に基づいてゲーム処理を実行し、位置変化が検出されなければ第１方向判別ステップによって判別された運動方向に基づいてゲーム処理を実行する。
【０００８】
請求項１の発明によれば、ポインティング装置によって指し示される点の位置変化を検出できるときはこの位置変化に基づいてゲーム処理を実行し、位置変化を検出できないときは加速度センサの検知結果から判別される運動方向に基づいてゲーム処理を実行するので、ポインティング装置による指し示し位置の特定が困難な状況でも、その運動方向を利用して支障なくゲーム処理を進行させることができる。なお、ここでいう運動方向には、速度方向および加速度方向の少なくとも一方が含まれる。
【０００９】
請求項２の発明に従うゲームプログラムは、請求項１に従属し、プロセサに加速度判別ステップ（Ｓ５）をさらに実行させる。加速度判別ステップは、加速度センサによって検知される加速度が閾値以上であるか否かを判別する。位置特定ステップは、加速度判別ステップによって加速度が閾値以上であると判別されている期間にだけ位置特定を行う。
【００１０】
請求項２の発明では、加速度センサによって検知される加速度が閾値以上であるか否かが加速度判別ステップによって判別される。位置特定ステップの位置特定は、加速度が閾値以上であると判別されている期間にだけ行われる。
【００１１】
請求項２の発明によれば、位置特定を効率よく行える。また、手ぶれなど、プレイヤの意図しないポインティング装置の動きによって、誤ってゲーム処理が進行するのを防ぐことができる。
【００１２】
請求項３の発明に従うゲームプログラムは、請求項２に従属し、プロセサに第２方向判別ステップ（Ｓ９５）をさらに実行させる。第２方向判別ステップは、位置特定ステップによって上記の期間内に検出された複数の位置のうち、最初に検出された位置と最後に検出された位置とに基づいて、ポインティング装置の運動方向を判別する。
【００１３】
請求項３の発明では、ポインティング装置の運動方向が第２方向判別ステップによって判別される。この判別は、位置特定ステップによって上記期間内に検出された複数の位置のうち、最初に検出された位置と最後に検出された位置とに基づいて行われる。
【００１４】
請求項３の発明によれば、運動方向を簡単に精度よく判別できる。
【００１５】
請求項４の発明に従うゲームプログラムは、請求項３に従属する。第１方向判別ステップは、上記の期間にだけ方向判別を行う。
【００１６】
請求項４の発明によれば、運動方向の判別を効率よく行える。また、意図しない運動による誤ったゲーム処理の進行を防ぐことができる。
【００１７】
請求項５の発明に従うゲームプログラムは、請求項１ないし４のいずれかに従属する。ゲーム処理は、ポインティング装置の運動に対応するゲーム画面内の軌跡を算出する処理を含む。ゲーム処理ステップは、位置変化検出ステップによって位置変化が検出されたとき位置特定ステップによって特定された複数の位置に基づいて軌跡を決定し、位置変化検出ステップによって位置変化が検出されないときには第１方向判別ステップによって判別された運動方向と既定位置とに基づいて軌跡を決定する。
【００１８】
請求項５の発明では、ポインティング装置の運動に対応するゲーム画面内の軌跡を決定する処理が、ゲーム処理には含まれる。ゲーム処理ステップは、位置変化検出ステップによって位置変化が検出されれば、位置特定ステップによって特定された複数の位置のうち最初に特定された位置と最後に特定された位置とに基づいて軌跡を決定する。一方、位置変化検出ステップによって位置変化が検出されなければ、第１方向判別ステップによって判別された運動方向と既定位置とに基づいて軌跡を決定する。
【００１９】
請求項５の発明によれば、たとえ位置変化が検出されなくても、判別された運動方向に基づいて軌跡を決定できる。また、もし位置変化が検出されれば、特定された複数の位置のうち最初と最後に特定された２つの位置に基づいて、軌跡を精度よく決定できる。
【００２０】
請求項６の発明に従うゲームプログラムは、請求項１ないし５のいずれかに従属し、プロセサに第１方向算出ステップ（Ｓ１７），第２方向算出ステップ（Ｓ１９），第３方向算出ステップ（Ｓ２１）をさらに実行させる。第１方向算出ステップは、加速度センサによって検知される加速度の変化を累積加算することによって、ポインティング装置と共に運動するローカル座標系におけるポインティング装置の速度方向を算出する。第２方向算出ステップは、加速度センサによって検知される加速度を累積加算することによって、ローカル座標系における重力方向を算出する。
【００２１】
第３方向算出ステップは、第２方向算出ステップによって算出された重力方向を静止座標系における重力方向と一致させるような回転演算を第１方向算出ステップによって算出された速度方向に対して施すことによって、静止座標系における速度方向を算出する。第１方向判別ステップの判別は、かかる第３方向算出ステップの算出結果に基づく。
【００２２】
請求項６の発明では、第１方向算出ステップが加速度センサによって検知される加速度の変化を累積加算し、これによってローカル座標系におけるポインティング装置の速度方向が求まる。また、第２方向算出ステップが加速度センサによって検知される加速度を累積加算し、これによってローカル座標系における重力方向が求まる。
【００２３】
第３方向算出ステップは、第２方向算出ステップによって算出された重力方向を静止座標系における重力方向と一致させるような回転演算を、第１方向算出ステップによって算出された速度方向に対して施す。これによって、静止座標系における速度方向が求まる。第１方向判別ステップの判別は、かかる第３方向算出ステップの算出結果、つまり静止座標系における速度方向に基づく。
【００２４】
請求項６の発明によれば、静止座標系における速度方向を用いて、ポインティング装置の姿勢に関わらず、的確なゲーム処理を行える。
【００２５】
請求項７の発明に従うゲームプログラムは、請求項６に従属する。加速度センサは３方向の加速度成分を検出し、第１方向算出ステップ，第２方向算出ステップおよび第３方向算出ステップの各々は、これら３方向のうちいずれか２つに対応する２つの加速度成分について算出を行う。加速度判別ステップは、上記の３方向のうち残りの１つに対応する加速度成分について判別を行う。
【００２６】
請求項７の発明によれば、第１〜第３方向算出ステップの算出は３方向のうちの２方向の加速度成分についてだけ行うので、処理負荷が軽減される。加速度判別ステップの判別は残り１方向の加速度成分に基づいて行うので、単一の３方向加速度センサを利用して、ゲーム進行の的確化および効率化が図れる。
【００２７】
請求項８の発明に従うゲームプログラムは、請求項６または７に従属し、プロセサに補正ステップ（Ｓ１５）をさらに実行させる。加速度センサは、所定の検知可能範囲を有する。補正ステップは、ポインティング装置の加速度が上記の検知可能範囲を超えるとき加速度センサによって検知された加速度を補正する。
【００２８】
請求項８の発明では、ポインティング装置の加速度が加速度センサの検知可能範囲を超えたとき検知された加速度は、補正ステップによって補正される。
【００２９】
請求項９の発明に従うゲームプログラムは、請求項８に従属する。補正ステップは、ポインティング装置の加速度が検知可能範囲内にあるときに加速度センサによって検知された加速度で規定されるベジェ曲線（Ｃ）を利用して補正を行う。
【００３０】
請求項８および９の発明によれば、方向判別の精度が高まり、加速度センサの検知可能範囲を超えるような運動にも対応できる。
【００３１】
請求項１０の発明に従うゲームプログラムは、請求項１ないし５のいずれかに従属し、プロセサに重力方向算出ステップ（Ｓ１６５〜Ｓ１７７）および加速度方向算出ステップ（Ｓ１０５）をさらに実行させる。重力方向算出ステップは、加速度センサによって検知された加速度を累積加算することによって、ポインティング装置と共に運動するローカル座標系における重力方向を算出する。
【００３２】
加速度方向算出ステップは、静止座標系における重力方向を方向算出ステップによって算出された重力方向と一致させるような回転処理を、加速度センサによって検知される加速度に対して施すことによって、静止座標系における加速度の方向を算出する。第１方向判別ステップの判別は、かかる加速度方向算出ステップの算出結果に基づく。
【００３３】
請求項１０の発明では、重力方向算出ステップが、加速度センサによって検知された加速度を累積加算し、これによって、ポインティング装置と共に運動するローカル座標系における重力方向が求まる。加速度方向算出ステップは、静止座標系における重力方向を方向算出ステップによって算出された重力方向と一致させるような回転処理を、加速度センサによって検知される加速度に対して施す。これによって、静止座標系における加速度の方向が求まる。第１方向判別ステップの判別は、かかる加速度方向算出ステップの算出結果、つまり静止座標系における加速度の方向に基づく。
【００３４】
請求項１０の発明によれば、静止座標系における加速度方向を用いて、ポインティング装置の姿勢に関わらず、的確なゲーム処理を行える。
【００３５】
請求項１１の発明に従うゲームプログラムは、請求項１０に従属する。加速度センサは３方向の加速度成分を検出し、方向算出ステップおよび加速度算出ステップの各々はこれら３方向に対応する３つの加速度成分について算出を行う。
【００３６】
請求項１１の発明によれば、算出された加速度を３次元のゲーム画面表示に反映させることが可能となる。また、２次元のゲーム画面を表示する場合でも加速度を用いたゲーム進行の的確化が図れる。
【００３７】
請求項１２の発明に従うゲームプログラムは、請求項１ないし１１のいずれかに従属する。ゲームシステムは、表示装置の画面近傍に設けられる複数の発光素子（２４ａ，２４ｂ）をさらに備え、光学式ポインティング装置は、これら複数の発光素子を含む被写界を撮像する撮像装置（７２）を含む。位置特定ステップは、撮像装置によって撮像された被写界像に基づいて、ポインティング装置の指し示す位置を特定する。
【００３８】
請求項１２の発明では、表示装置の画面近傍に複数の発光素子が設けられる。これら複数の発光素子を含む被写界は、光学式ポインティング装置に設けられた撮像装置によって撮像される。位置特定ステップは、撮像装置によって撮像された被写界像に基づいて、ポインティング装置の指し示す位置を特定する。
【００３９】
請求項１３の発明に従うゲームシステムは、ゲーム処理の進行に応じて更新されるゲーム画面を表示する表示装置（３４）、表示装置によって表示されたゲーム画面内の任意の点を指し示すポインティング装置（２６）、ポインティング装置に設けられる加速度センサ（６８）、ポインティング装置によって指し示される点の位置を単位時間毎に特定する位置特定手段（Ｓ３５）、位置特定手段によって特定される位置の変化を検出する位置変化検出手段（Ｓ４１，Ｓ４３，Ｓ９３）、加速度センサによって検知される加速度に基づいてポインティング装置の運動方向を判別する第１方向判別手段（Ｓ９７）、および位置変化検出手段によって位置変化が検出されたとき当該位置変化に基づいてゲーム処理を実行し、位置変化検出手段によって位置変化が検出されないときには第１方向判別手段によって判別された運動方向に基づいてゲーム処理を実行するゲーム処理手段（Ｓ２５）を備える。
【００４０】
請求項１３の発明でも、請求項１の発明と同様、ポインティング装置による指し示し位置の特定が困難な状況でも、その運動方向を利用して支障なくゲーム処理を進行させることができる。
【発明の効果】
【００４１】
この発明によれば、ポインティング装置によって指し示される位置の特定が困難な状況でも、支障なくゲーム処理を進行させることができる。
【００４２】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００４３】
図１を参照して、この発明の一実施例であるゲームシステム１０は、ビデオゲーム装置１２を含む。ビデオゲーム装置１２は、略立方体のハウジング１４を含み、ハウジング１４の上端には光ディスクドライブ１６が設けられる。光ディスクドライブ１６には、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク１８が装着される。ハウジング１４の前面には複数の（この実施例では４つの）コネクタ２０が設けられる。これらのコネクタ２０は、ケーブル（図示せず）によってコントローラ（図示せず）をビデオゲーム装置１２に接続するためのものである。
【００４４】
ただしこの実施例では、微弱電波による無線送信機能を有するコントローラ２６と、微弱電波による無線受信機能を有する無線受信ユニット２２とが用いられる。すなわち、ビデオゲーム装置１２のいずれか１つのコネクタ２０に無線受信ユニット２２が装着される。装着された無線受信ユニット２２は、コントローラ２６からの無線信号を受信し、受信された信号をコネクタ２０を通してビデオゲーム装置１２に入力する。なお、無線通信機能は、微弱電波を利用するものに限らず、赤外線など他の電磁波を利用するものであってもよい。
【００４５】
コントローラ２６は、平面矩形の長手形状を有し、片手で把持可能な大きさである。コントローラ２６の上面には、操作スイッチ２６Ａが設けられる。なお、コントローラ２６の形状は、平面矩形とは限らず、楕円形などでもよい。スイッチ２６Ａは、上面に限らず、下面，或いは側面などに設けられてもよい。操作スイッチ２６Ａは、１つの十字スイッチおよび複数のボタンスイッチ等で構成される。十字スイッチは、たとえばプレイヤオブジェクトの移動方向を指示するために用いられる。ボタンスイッチは、たとえばプレイヤオブジェクトの動作を指示するために利用される。十字スイッチまたは複数のボタンスイッチは、さらに、たとえばメニュー選択やポインタあるいはカーソル移動を制御するためにも利用される。
【００４６】
ビデオゲーム装置１２のハウジング１４の前面であり、コネクタ２０の下方には、１つまたは複数の（この実施例では２つの）メモリスロット２８が設けられる。このメモリスロット２８にはメモリカード３０が挿入される。メモリカード３０は、光ディスク１８から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（ゲームの結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。
【００４７】
ビデオゲーム装置１２のハウジング１４の後面には、ＡＶケーブルコネクタ（図示せず）が設けられ、そのコネクタを用いて、ＡＶケーブル３２を通してビデオゲーム装置１２にモニタ３４を接続する。このモニタ３４は典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２は、ビデオゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ビデオゲームのゲーム画像が表示され、左右のスピーカ３４ａからゲーム音楽や効果音などのステレオゲーム音声が出力される。
【００４８】
このゲームシステム１０において、プレイヤがコントローラ２６を利用してゲームをプレイするためには、プレイヤはまずビデオゲーム装置１２の電源をオンし、次いで、ゲームのソフトウェアをストアしている適宜の光ディスク１８を選択し、その光ディスク１８をビデオゲーム装置１２のディスクドライブ１６にローディングする。応じて、ビデオゲーム装置１２がその光ディスク１８にストアされているソフトウェアに基づいてゲームを実行し始めるようにする。プレイヤはビデオゲーム装置１２に入力を与えるためにコントローラ２６を操作する。たとえば、操作スイッチ２６Ａのどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。
【００４９】
また、ディスプレイ３４の画面近傍に、各々が赤外光を発する２つのＬＥＤモジュール２４ａおよび２４ｂを設置することで、コントローラ２６はポインティングデバイスとしても機能する。すなわち、コントローラ２６は、２つのＬＥＤモジュール２４ａおよび２４ｂの各々からの赤外光を撮影し、その撮影画像中の２つのマーカ（２個の赤外光源）の各々の位置や大きさの変化に応じた操作信号を取得する。この取得した操作信号に基づいてコントローラ２６が指し示す画面上の位置が算出される。これにより、スイッチやボタンによる操作とは異なり、画面内における座標の直接入力や回転の直接入力が可能となる。このためコントローラ２６は、ダイレクトポインティングデバイス（ＤＰＤ）とも呼ばれる。
【００５０】
図２は、図１実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。ビデオゲーム装置１２には、中央処理ユニット（以下、「ＣＰＵ」という。）３６が設けられる。このＣＰＵ３６は、コンピュータ或いはプロセサなどとも呼ばれ、ビデオゲーム装置１２の全体的な制御を担当する。ＣＰＵ３６ないしコンピュータは、ゲームプロセサとして機能し、このＣＰＵ３６には、バスを介して、メモリコントローラ３８が接続される。メモリコントローラ３８は主として、ＣＰＵ３６の制御の下で、バスを介して接続されるメインメモリ４０の書込みや読出しを制御する。このメモリコントローラ３８にはＧＰＵ（Graphics Processing Unit:グラフィックス処理装置） ４２が接続される。
【００５１】
ＧＰＵ４２は、描画手段の一部を形成し、たとえばシングルチップＡＳＩＣで構成され、メモリコントローラ３８を介してＣＰＵ３６からのグラフィクスコマンド（graphics command ：作画命令） を受け、そのコマンドに従って、ジオメトリユニット４４およびレンダリングユニット４６によって３次元（３Ｄ）ゲーム画像を生成する。つまり、ジオメトリユニット４４は、３次元座標系の各種オブジェクトやオブジェクト（複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも３つの頂点座標によって定義される多角形平面をいう。）の回転，移動，変形等の座標演算処理を行う。レンダリングユニット４６は、各種オブジェクトの各ポリゴンにテクスチャ（Texture ：模様画像）を貼り付けるなどの画像生成処理を施す。したがって、ＧＰＵ４２によって、ゲーム画面上に表示すべき３Ｄ画像データが作成され、その画像データがフレームバッファ４８内に記憶される。
【００５２】
なお、ＧＰＵ４２が作画コマンドを実行するにあたって必要なデータ（プリミティブまたはポリゴンやテクスチャ等）は、ＧＰＵ４２がメモリコントローラ３８を介して、メインメモリ４０から入手する。
【００５３】
フレームバッファ４８は、たとえばラスタスキャンモニタ３４の１フレーム分の画像データを描画（蓄積）しておくためのメモリであり、ＧＰＵ４２によって１フレーム毎に書き換えられる。具体的には、フレームバッファ４８は、１画素（ピクセル）毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、Ｒ，Ｇ，Ｂ，Ａについてのデータであり、たとえば、８ビットのＲ（赤）データ、８ビットのＧ（緑）データ、８ビットのＢ（青）データおよび８ビットのＡ（アルファ）データである。なお、Ａデータは、マス
ク（マット画像）についてのデータである。後述のビデオＩ／Ｆ５８がメモリコントローラ３８を介してフレームバッファ４８のデータを読み出すことによって、モニタ３４の画面上に３Ｄゲーム画像が表示される。
【００５４】
また、Ｚバッファ５０は、フレームバッファ４８に対応する画素数×１画素当たりの奥行きデータのビット数に相当する記憶容量を有し、フレームバッファ４８の各記憶位置に対応するドットの奥行き情報または奥行きデータ（Ｚ値）を記憶するものである。
【００５５】
なお、フレームバッファ４８およびＺバッファ５０は、ともにメインメモリ４０の一部を用いて構成されてもよく、また、これらはＧＰＵ４２の内部に設けられてもよい。
【００５６】
メモリコントローラ３８はまた、ＤＳＰ（Digital Signal Processor）５２を介して、オーディオ用のＲＡＭ（以下、「ＡＲＡＭ」という。）５４に接続される。したがって、メモリコントローラ３８は、メインメモリ４０だけでなく、サブメモリとしてのＡＲＡＭ５４の書込みおよび／または読出しを制御する。
【００５７】
ＤＳＰ５２は、サウンドプロセサとして働き、メインメモリ４０に記憶されたサウンドデータ（図示せず）を用いたり、ＡＲＡＭ５４に書き込まれている音波形データ（図示せず）を用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
【００５８】
メモリコントローラ３８は、さらに、バスによって、各インタフェース（Ｉ／Ｆ）５６，５８，６０，６２および６４に接続される。コントローラＩ／Ｆ５６は、無線受信ユニット２２を介してビデオゲーム装置１２に接続されるコントローラ２６のためのインタフェースである。コントローラ２６は、操作スイッチ２６Ａの操作信号で微弱電波を変調し、この微弱電波信号を送信する（詳細は後述）。無線受信ユニット２２は、こうしてコントローラ２６から送信される微弱電波信号を受信し、受信された微弱電波信号を操作信号に復調する。コントローラＩ／Ｆ５６は、無線受信ユニット２２によって復調された操作信号をメモリコントローラ３８を通してＣＰＵ３６に与える。
【００５９】
ビデオＩ／Ｆ５８は、フレームバッファ４８にアクセスし、ＧＰＵ４２で作成した画像データを読み出して、画像信号または画像データ（ディジタルＲＧＢＡピクセル値）をＡＶケーブル３２（図１）を介してモニタ３４に与える。
【００６０】
外部メモリＩ／Ｆ６０は、ビデオゲーム装置１２の前面に挿入されるメモリカード３０（図１）をメモリコントローラ３８に連係させる。それによって、メモリコントローラ３８を介して、ＣＰＵ３６がこのメモリカード３０にデータを書込み、またはメモリカード３０からデータを読み出すことができる。オーディオＩ／Ｆ６２は、メモリコントローラ３８を通してＤＳＰ５２から与えられるオーディオデータまたは光ディスク１８から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号（音声信号）をモニタ３４のスピーカ３４ａに与える。
【００６１】
そして、ディスクＩ／Ｆ６４は、ディスクドライブ１６をメモリコントローラ３８に接続し、したがって、ＣＰＵ３６がディスクドライブ１６を制御する。このディスクドライブ１６によって光ディスク１８から読み出されたプログラムデータやテクスチャデータ等が、ＣＰＵ３６の制御の下で、メインメモリ４０に書き込まれる。
【００６２】
コントローラ２６の電気的な構成は、図３に示される。図３を参照して、コントローラ２６は、撮像情報演算ユニット７０を含む。撮像情報演算ユニット７０は、コントローラ２６の先端部分に設けられる赤外線撮像装置７２と、この撮像装置７２で撮影した画像データを処理するための画像処理回路７４とを有する。撮像装置７２は、図示するように、ＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子７２ｃを含み、その撮像素子７２ｃの前方には、赤外線フィルタ（赤外線だけを通すフィルタ）７２ａおよびレンズ７２ｃを配置している。したがって、この撮像装置７２では、赤外線だけを検出して画像データを作成する。そして、画像処理回路７４は、撮像装置７２から得られた赤外画像データを処理して、高輝度部分を検知し、それの重心位置や面積を検出して、それらのデータを出力する。この高輝度部分の位置や面積のデータが、画像処理回路７４からＣＰＵ６６に入力される。
【００６３】
コントローラ２６はまた、加速度センサ６８を含む。加速度センサ６８からは、Ｘ，ＹおよびＺ（図１参照）の３軸の直線成分の加速度データ（加速度信号）が出力される。これらの３軸で構成されるＸＹＺ座標系は、コントローラ２６（加速度センサ６８）と共に移動／回転する（以下“ローカル座標系”とも呼ぶ）。
【００６４】
ＣＰＵ６６には、この加速度センサ６８からの加速度データと、上述の操作スイッチ２６Ａからの操作信号とがさらに入力される。ＣＰＵ６６は、操作スイッチ２６Ａからの操作信号に基づいて、そのときどのスイッチやボタンが操作されているかを検出する。そして、この操作データを、加速度データおよび高輝度部分データとともに、一連のコントローラデータとして出力し、無線モジュール７６に入力する。無線モジュール７６は、所定周波数の搬送波をこのコントローラデータで変調し、その微弱電波信号をアンテナ７８から放射する。
【００６５】
ゲームシステム１００でこのようなコントローラ２６を利用してゲームをプレイするとき、プレイヤは、図４に示すように、一方の手でコントローラ２６を把持する。そして、コントローラ２６の先端部分の撮像装置７２がディスプレイ３４の画面を向くようにする。ディスプレイ３４の画面近傍に設置された２つのＬＥＤモジュール２４ａおよび２４ｂからはそれぞれ赤外線が出力され、一方、プレイヤが把持したコントローラ２６の撮像装置７２には上述のように赤外線フィルタ７２ａ（図３参照）が組み込まれている。
【００６６】
画像処理回路７４は、その赤外線を含む撮影画像を処理することによって、ＬＥＤモジュール２４ａおよび２４ｂの位置や面積情報を高輝度点の情報として取得する。こうして取得された輝点の位置や大きさのデータがコントローラ２６から無線（微弱電波）でビデオゲーム装置１２に送信される。ゲーム装置１２は、受信した輝点の位置や大きさのデータを用いて、コントローラ２６による画面上の指示位置を算出する。具体的には、２つの輝点の中点の位置が、コントローラ２６の向いている位置すなわち指示位置として採用される。プレイヤがコントローラ２６を動かすと、輝点の位置や大きさのデータが変化するため、それを利用して、ビデオゲーム装置１２のＣＰＵ３６はコントローラ２６の動きに対応した操作信号を取得することができ、それに従って画面の指示位置の変化に応じたゲーム処理を進行させることができる。
【００６７】
このように、撮像情報演算ユニット７０によってマーカ（この実施例ではＬＥＤからの赤外光）を撮影し、その撮影画像中のマーカの位置や大きさの変化に応じた操作信号を取得することができるため、指で操作する操作スイッチや操作キーあるいは操作ボタンによる操作とは異なり、画面内における座標直接入力や回転の直接入力が可能となる。ただし、このような撮像情報演算ユニットの原理自体は、特許第３４２２３８３号等に記載されているようによく知られているので、ここでは、これ以上の説明は省略する。
【００６８】
ところで、上記のような画像処理によるＤＰＤ機能は、撮像装置７２の撮像エリア内にマーカが存在しなければ有効に働かない。ある種のゲームでは、こうして画像処理回路７４から有効な操作信号（ＤＰＤ座標データ、すなわちコントローラ２６によって指し示される画面上の位置）が得られない期間、加速度センサ６８からの加速度データが利用される。このようなゲームとしては、以下で説明する薪割りゲームがある。
【００６９】
薪割りゲームでは、図５〜図７に示すように、ディスプレイ３４に薪Ｗが表示される。プレイヤは、コントローラ２６を斧Ｈに見立てて、表示された薪Ｗを割る。たとえば、プレイヤがコントローラ２６を下向きに振り下ろせば、薪Ｗは縦に割れる（図５参照）。また、プレイヤがコントローラ２６を斜め向きに振れば、薪Ｗは斜めに割れる（図６参照）。また、プレイヤがコントローラ２６を横向きに振れば、薪Ｗは横に割れる（図７参照）。
【００７０】
すなわち、プレイヤがコントローラ２６を所望の向きに振ると、コントローラ２６からはその運動に応じた加速度データが送信される。また、撮像装置７２がマーカを捕捉している期間は、さらにＤＰＤ座標データが送信される。ビデオゲーム装置１２は、コントローラ２６からＤＰＤ座標データを受信できればこのＤＰＤ座標データに基づいて、これを受信できなければ加速度データに基づいて、コントローラ２６の振り方向を算出する。そして、薪Ｗを算出された方向に切断する。
【００７１】
なお、この実施例では、切断面は常に薪Ｗの中心を通る。このため、振り方向だけを算出しているが、ＤＰＤ座標データまたは加速度データに基づいてさらに切断点の位置を求め、求められた切断点を通るように切断してもよい（図２５，図２６参照：後述）。
【００７２】
図８には、薪割りゲームをプレイする場合のメインメモリ４０のメモリマップが示される。メインメモリ４０は、プログラム記憶領域１００およびデータ記憶領域１２０を含む。図８を参照して、プログラム記憶領域１００には、ゲーム処理プログラム１０２と、加速度検出プログラム１０４と、加速度補正プログラム１０６と、移動方向ベクトル算出プログラム１０８と、重力方向ベクトル算出プログラム１１０と、振り方向ベクトル算出プログラム１１２と、ＤＰＤ座標検出プログラム１１４と、切断方向決定プログラム１１６とを含む。
【００７３】
ゲーム処理プログラム１０２は、薪割りゲームの進行に必要な基本処理、たとえばコントローラ２６からの信号を受信する受信処理，薪を割る動画像（図５〜図７参照）を表示するための画像処理などを実行する。加速度検出プログラム１０４は、コントローラ２６からの信号に基づいてこのコントローラ２６の加速度を検出する。
【００７４】
加速度補正プログラム１０６は、加速度検出プログラム１０４によって検出された加速度を補正する。詳しくは、加速度センサは、Ｘ，ＹおよびＺの各軸について−２．２Ｇ〜２．２Ｇの範囲の値を出力するような特性を持つ。従って、コントローラ２６がこの範囲を超える加速度を持つ場合、加速度センサの出力は、図１０（Ａ）に示されるように−２．２Ｇおよび２．２Ｇの各位置で値がつぶれる。加速度補正プログラム１０６は、かかる出力値を図１０（Ｂ）のように補正する。なお、図１１，図１２，図１３（Ａ）および図１３（Ｂ）は、加速度補正プログラム１０６による補正方法を図解したものである（後述）。
【００７５】
移動方向ベクトル算出プログラム１０８は、必要に応じて補正された後の加速度値に基づいて移動方向ベクトル（Ｖｍ：図９（Ａ）参照）を算出する。重力方向ベクトル算出プログラム１１０は、必要に応じて補正された後の加速度値に基づいて重力方向ベクトル（Ｖg：図９（Ｂ）参照）を算出する。振り方向ベクトル算出プログラム１１２は、算出された移動方向ベクトルおよび算出された重力方向ベクトルに基づいて振り方向ベクトル（Ｖs：図９（Ｃ）参照）を算出する。
【００７６】
ＤＰＤ座標検出プログラム１１４は、コントローラ２６からの信号に基づいてＤＰＤ座標を検出する。切断方向決定プログラム１１６は、算出された振り方向ベクトルおよび検出されたＤＰＤ座標のいずれかに基づいて切断方向を決定する。
【００７７】
データ記憶領域１２０には、加速度バッファ１２２，補正済み加速度バッファ１２４，変数／フラグ保持領域１２６および行列保持領域１２８などが形成される。なお、図示は省略するが、ゲーム画面の画像データや、上記各プログラム（１０２〜１１６）による処理結果などもまた、データ記憶領域１２０に記憶される。
【００７８】
加速度バッファ１２２は、加速度検出プログラム１０４によって検出された３成分の加速度のうち、Ｚ成分が所定条件（後述）を満たす場合のＸ成分およびＹ成分を記憶する。補正済み加速度バッファ１２４は、加速度補正プログラム１０６によって補正された後のＸ成分およびＹ成分（以下、この補正後のＸ，Ｙ成分からなる２次元ベクトルを単に“加速度ベクトル”と呼ぶ）を記憶する。変数／フラグ保持領域１２６は、各プログラムによって参照される変数やフラグ（たとえばｂＤＰＤＤａｔａＥｎａｂｌｅ，ｎＤａｔａなど：後述）を保持する。行列保持領域１２８は、振り方向ベクトル算出プログラム１１２が振り方向ベクトルを算出する際に利用する回転行列（またはこれと同等の演算式：後述する式（３）および（４）を参照）を保持する。
【００７９】
ここで、この実施例の加速度センサ出力に基づく振り方向決定方法について詳しく説明する。まず、その原理を図９（Ａ）〜図９（Ｃ）により説明する。図９（Ａ）を参照して、移動方向ベクトルＶｍは、ＸＹ平面内におけるコントローラ２６の移動方向を示す２次元単位ベクトルであって、補正済み加速度バッファ１２４内の加速度ベクトルに基づいて、次式（１）により算出される。
【００８０】
Ｖｍ＝Σ〔｜Ａｔ＋１−Ａｔ｜（Ａｔ＋１−Ａｔ）〕  …（１）
ここで、Ａｔは時刻ｔにおける加速度ベクトルであり、Σは振り始め時刻から振り終わり時刻までの総和を意味する。
【００８１】
このように、単位時間あたりの加速度変化を示すベクトル（Ａｔ＋１−Ａｔ）にその大きさ｜Ａｔ＋１−Ａｔ｜を乗じ、これを振り始め時刻から振り終わり時刻までの期間に渡って積分する。このため、移動方向ベクトルＶｍは、速度のディメンションを持つ。なお、加速度変化の大きさを乗じたのは、加速度変化の大きい部分を相対的に高く評価するためである。図９（Ａ）のＶｍは、上式（１）の算出結果を正規化したものである。
【００８２】
こうして得られる移動方向ベクトルＶｍはローカル座標系（Ｘ−Ｙ座標系）に従うため、これを静止座標系（Ｘ０−Ｙ０座標系：図１参照）に従うように回転させる必要がある。このための回転演算は、図９（Ｂ）に示すような重力方向ベクトルＶｇから求まる。
【００８３】
図９（Ｂ）の重力方向ベクトルＶｇは、次式（２）により算出される。
【００８４】
Ｖｇ＝ΣＡｔ  …（２）
ここで、Ａｔは時刻ｔにおける加速度ベクトルであり、Σは振り始め時刻から振り終わり時刻までの総和を意味する。
【００８５】
このように、加速度ベクトルＡｔを振り始め時刻から振り終わり時刻までの時間に渡って積分することで、コントローラ２６の運動による加減速成分は相殺され、重力成分だけが抽出される。図９（Ｂ）のＶｇは、上式（２）の算出結果を正規化したものである。
【００８６】
こうして算出された重力方向ベクトルＶｇを鉛直下向きに回転させるような演算を移動方向ベクトルＶｍに対して施せば、図９（Ｃ）に示すような、静止座標系に従う振り方向ベクトルＶｓが得られる。
【００８７】
従って、振り方向ベクトルＶｓ＝（ｓｘ，ｓｙ）は、Ｖｍ＝（ｍｘ，ｍｙ），Ｖｇ＝（ｇｘ，ｇｙ）として、次式（３）および（４）により算出される。
【００８８】
ｓｘ＝−ｇｙ×ｍｘ＋ｇｘ×ｍｙ  …（３）
ｓｙ＝−ｇｘ×ｍｘ−ｇｙ×ｍｙ  …（４）
次に、図１０（Ａ）および図１０（Ｂ）に示す加速度補正方法の詳細を図１１，図１２，図１３（Ａ）および図１３（Ｂ）により説明する。なお、コントローラ２６の加速度が加速度センサ６８の検知範囲（−２．２Ｇ〜２．２Ｇ）内に収まれば、かかる補正は不要である。十分に広い検知範囲を有する加速度センサを用いる場合も同様である。
【００８９】
この実施例の補正処理では、図１１に示すような２次のベジェ曲線Ｃを利用する。図１１を参照して、ベジェ曲線Ｃは、４つの制御点Ｐ０〜Ｐ３およびパラメータｕ（０≦ｕ≦１）に対し、次式（５）〜（９）のように記述される。
【００９０】
Ｐ＝Ｐ０Ｂｅｚ０＋Ｐ１Ｂｅｚ１＋Ｐ２Ｂｅｚ２＋Ｐ３Ｂｅｚ３  …（５）
Ｂｅｚ０＝（１−ｕ）３  …（６）
Ｂｅｚ１＝３ｕ（１−ｕ）２  …（７）
Ｂｅｚ２＝３ｕ２（１−ｕ）  …（８）
Ｂｅｚ３＝ｕ３  …（９）
従って、４つの制御点Ｐ０〜Ｐ３を決めれば、パラメータｕを０〜１の範囲で指定することで、曲線Ｃ上の任意の点Ｐを求めることができる。そこで、図１１に示すように、値がつぶれる直前の加速度を制御点Ｐ０に対応させ、値がつぶれた直後の加速度を制御点Ｐ３に対応させる。そして、ＶＡ＝Ｐ０−Ａ，ＶＢ＝Ｐ３−Ｂとして、残り２つの制御点Ｐ１およびＰ２を次式（１０）および（１１）により計算する。
【００９１】
Ｐ１＝Ｐ０＋（ＶＡ＋Ｖ０×Ｋ０）×ｎ×Ｋ１  …（１０）
Ｐ２＝Ｐ３＋（ＶＢ＋Ｖ０×Ｋ０）×ｎ×Ｋ１  …（１１）
ここで、ｎは値がつぶれた加速度点の個数（図１１の例では黒点で示された４個）であり、Ｋ０およびＫ１は認識具合調整用のスカラー値である。こうしてＶＡやＶＢにＶ０を定数倍したものを乗じることで、ＶＡおよびＶＢの一方が何らかのエラーによって適切でない場合でも、見当違いの方向に補正がなされることがないようにしている。
【００９２】
また、Ｖ０は、補正前の加速度データ系列つまり加速度バッファ１２２（図８参照）内の加速度データの大まかな並び方向を示す単位ベクトルであり（図１３（Ａ）参照）、補正前の加速度データ系列に対して前述の式（１）を適用することにより得られる。
【００９３】
なお、Ｖ０の向きは、補正する方向に合わせて（すなわちデータ系列をどちら向き膨らませるかに応じて）、適宜反転される。具体的には、（Ｐ０＋Ｐ３）とＶ０との内積が負のとき（すなわち両者のなす角が鈍角のとき）だけ、Ｖ０を反転させる。たとえば図１３（Ａ）では、Ｘ＝２．２ＧおよびＸ＝−２．２Ｇの２箇所で補正が行われるが、前者すなわちＸ＝２．２Ｇでの補正はＶ０とは逆向きであるため、Ｖ０は図１３（Ｂ）に示すように反転される。一方、後者での補正はＶ０と同じ向きであるため、Ｖ０の反転は不要である。
【００９４】
こうして４つの制御点Ｐ０〜Ｐ３が求まれば、上式（５）〜（９）でパラメータｕを変化させつつベジェ曲線Ｃ上のｎ個の点を求め、求められたｎ個の点を補正後の加速度データとする。そして、かかる補正計算を、値がつぶれている全ての箇所で実行する。たとえば図１３（Ａ）では、Ｘ＝２．２Ｇの近傍で４個の点を求め、そしてＸ＝−２．２Ｇの近傍で３個の点を求めることになる。
【００９５】
薪割りゲームで切断方向を決定するにあたり、ＣＰＵ３６は、図１４〜図１９のフローチャートに従う処理を実行する。まず図１４を参照して、ステップＳ１では、ｂＤＰＤＤａｔａＥｎａｂｌｅに“ｆａｌｓｅ”をセットし、ｎＤａｔａには“０”をセットする。なお、ｂＤＰＤＤａｔａＥｎａｂｌｅは有効なＤＰＤ座標が得られているかどうかを示すフラグであり、有効なＤＰＤ座標が得られないときは“ｆａｌｓｅ”がセットされ、有効なＤＰＤ座標が得られたとき“ｔｒｕｅ”がセットされる。ｎＤａｔａは検出された加速度ベクトルの個数を意味する変数である。
【００９６】
ステップＳ３では、加速度センサ６８の検出値を取込み、取り込まれた値つまりＸ，Ｙ，Ｚの３方向の加速度値をａｃｃ．ｘ，ａｃｃ．ｙ，ａｃｃ．ｚにそれぞれセットする。ステップＳ５ではａｃｃ．ｚが１．１Ｇを上回るか否かを判別し、ＮＯであればステップＳ３に戻る。
【００９７】
ステップＳ５でＹＥＳであれば、ステップＳ７に移って、１．１Ｇを上回ると判別されたａｃｃ．ｚに対応するａｃｃ．ｘおよびａｃｃ．ｙ（Ｘ，Ｙ成分からなる２次元の加速度ベクトル）を加速度バッファ１２２（図８参照）に記録する。そして、ステップＳ９でｎＤａｔａをインクリメントした後、ステップＳ２９に移る。
【００９８】
ステップＳ５でＮＯであれば、ｎＤａｔａが定数Ｄ（たとえば“２０”）を超えたか否かをステップＳ１１で判別する。ステップＳ１１でＮＯ、すなわち加速度バッファ１２２に記録された加速度ベクトルの個数がＤ以下であれば、ステップＳ２７でｎＤａｔａに“０”をセットした後、ステップＳ２９に進む。
【００９９】
ステップＳ１１でＹＥＳであれば、その絶対値が２．２Ｇを超えるような加速度成分（ａｃｃ．ｘまたはａｃｃ．ｙ）が加速度バッファ１２２内に存在するか否かをステップＳ１３で判別する。ステップＳ１３でＮＯであればステップＳ１７に進み、ＹＥＳであればステップＳ１５で、図１０〜図１２，図１３（Ａ）および図１３（Ｂ）に示すような加速度補正処理（前述）を実行する。補正後の加速度ベクトルは、補正済み加速度バッファ１２４に記録される。記録後、ステップＳ１７に移る。
【０１００】
ステップＳ１７では、補正済み加速度バッファ１２４に記録された補正済み加速度ベクトル（補正が行われなかった場合には加速度バッファ１２２に記録された加速度ベクトル）に基づいて、移動方向ベクトルＶｍ（図９（Ａ）参照）を算出する。ステップＳ１９では、同じく補正済み加速度ベクトル（ないしは加速度ベクトル）に基づいて、重力方向ベクトルＶｇ（図９（Ｂ）参照）を算出する。ステップＳ２１では、算出された移動方向ベクトルＶｍおよび算出された重力方向ベクトルＶｇに基づいて、振り方向ベクトルＶｓ（図９（Ｃ）参照）を算出する。
【０１０１】
ステップＳ２３では、ステップＳ２１で算出された振り方向ベクトルＶｓまたは後述するステップＳ２９〜Ｓ４３で求められる２個のＤＰＤ座標間の傾きから、切断方向を決定する。そして、ステップＳ２５で成功演出処理を実行し、ステップＳ１に戻る。成功演出処理では、決定された切断方向に応じて、図５〜図７のような画面が表示される。
【０１０２】
図１５を参照して、ステップＳ２９ではｎＤａｔａが“０”よりも大きいか否かを判別し、ここでＹＥＳであればステップＳ３３に移る。ステップＳ２９でＮＯであれば、ｎＤａｔａ＝０（すなわち、１．１Ｇより大きいＺ軸方向の加速度が検出されていない、または１．１Ｇより大きいＺ軸方向の加速度が連続して検出された個数が所定数（定数Ｄ）以下である）であるので、薪割り運動のような振り動作ではないと判断して、ステップＳ３１でｂＤＰＤＤａｔａＥｎａｂｌｅに“ｆａｌｓｅ”をセットした後、ステップＳ３３を経てステップＳ４５に移る。すなわち、薪割り運動に基づいたＤＰＤ座標が得られないと判断して、有効なＤＰＤ座標が得られないことを示すフラグをセットする。ステップＳ３３では、コントローラ２６から有効なＤＰＤ座標（画面上の指示位置）が検出されたか否かを判別し、ここでＮＯであればステップＳ４５に進む。
【０１０３】
ステップＳ３３でＹＥＳであれば、ステップＳ３５〜Ｓ４３の一連の処理を経てステップＳ４５に移る。ステップＳ３５では、得られたＤＰＤ座標をＤＰＤＰｏｓにセットする。ステップＳ３７では、ｂＤＰＤＤａｔａＥｎａｂｌｅが“ｔｒｕｅ”であるか否かを判別する。ここでＹＥＳであればステップＳ４３に進み、ＮＯであればステップＳ３９およびＳ４１を経てステップＳ４３に進む。
【０１０４】
ステップＳ３９では有効なＤＰＤ座標が得られたと判断して、ｂＤＰＤＤａｔａＥｎａｂｌｅに“ｔｒｕｅ”をセットし、ステップＳ４１では有効なＤＰＤ座標の最初の検出座標を示すＤＰＤＦｉｒｓｔにＤＰＤＰｏｓをセットする。
【０１０５】
ステップＳ４３では、有効なＤＰＤ座標の最後の検出座標を示すＤＰＤＬａｓｔにＤＰＤＰｏｓをセットする。そしてステップＳ４５で終了操作が行われたか否かを判別し、ＮＯであればステップＳ３に戻り、処理を繰り返す。ＹＥＳであれば、この切断方向決定処理を終了する。この図１４および図１５の処理を単位時間毎に繰り返し実行することによって、所定の加速度（Ｚ軸方向に１．１Ｇより大きい加速度）が連続して検出されている間、ＤＰＤＬａｓｔの値が更新されるので、最終的にその期間の最後のＤＰＤ座標がＤＰＤＬａｓｔにセットされる。
【０１０６】
上記ステップＳ１７の移動方向ベクトル算出処理は、図１６のサブルーチンに従う。図１６を参照して、ステップＳ６１では、前述の式（１）により移動方向ベクトルＶｍを算出する（詳細は前述）。ステップＳ６３では、算出された移動方向ベクトルＶｍを正規化する。そして上位層のルーチンに復帰する。
【０１０７】
上記ステップＳ１９の重力方向ベクトル算出処理は、図１７のサブルーチンに従う。図１７を参照して、ステップＳ７１では、前述の式（２）により重力方向ベクトルＶｇを算出する（詳細は前述）。ステップＳ７３では、算出された重力方向ベクトルＶｇを正規化する。そして上位層のルーチンに復帰する。
【０１０８】
上記ステップＳ２１の振り方向ベクトル算出処理は、図１８のサブルーチンに従う。図１８を参照して、ステップＳ８１では、移動方向ベクトルＶｍおよび重力方向ベクトルＶｇから、行列保持領域１２８に保持された回転行列（これは前述の式（３）および（４）と同等である）により、振り方向ベクトルＶｓを算出する（詳細は前述）。そして上位層のルーチンに復帰する。
【０１０９】
上記ステップＳ２３の切断方向決定処理は、図１９のサブルーチンに従う。図１９を参照して、ステップＳ９１では、ｂＤＰＤＤａｔａＥｎａｂｌｅが“ｔｒｕｅ”であるか否かを判別し、ＹＥＳであれば有効なＤＰＤ座標が得られているので、ステップＳ９３で、ＤＰＤＬａｓｔとＤＰＤＦｉｒｓｔとの差が“０”でないか否かを判別する。ここでＹＥＳであれば、すなわちＤＰＤＬａｓｔ≠ＤＰＤＦｉｒｓｔであれば、有効なＤＰＤ座標の開始点と終了点の座標変化に基づいてコントローラ２６の振り方向が特定できるので、ステップＳ９５で｛ＤＰＤＬａｓｔ−ＤＰＤＦｉｒｓｔ｝の傾き、すなわちＤＰＤＦｉｒｓｔからＤＰＤＬａｓｔに向かうベクトルの傾きを求め、これを切断方向とする。ステップＳ９１およびＳ９３の各々でＮＯであれば、有効なＤＰＤ座標の開始点と終了点の座標変化に基づくコントローラ２６の振り方向が特定できないので、ステップＳ９７に移り、ステップＳ２１で求めた振り方向ベクトルＶｓを切断方向とする。切断方向が決定されると、上位層のルーチンに復帰する。
【０１１０】
以上から明らかなように、この実施例（第１実施例）では、ゲームシステム（１０）は、ゲーム処理の進行に応じて更新されるゲーム画面を表示する表示装置（３４）と、表示装置によって表示されたゲーム画面内の任意の点を指し示すポインティング装置（２６）と、ポインティング装置に設けられる加速度センサ（６８）とを備える。ゲームシステム（１０）のプロセサ（３６）は、ポインティング装置によって指し示される点の位置を繰り返し特定し（Ｓ３５）、特定される位置の変化を検出する（Ｓ４１，Ｓ４３，Ｓ９３）。また、加速度センサによって検知される加速度に基づいてポインティング装置の運動方向を判別し（Ｓ９７）、そして、位置変化が検出されたとき当該位置変化に基づいてゲーム処理を実行し、位置変化が検出されないときには判別された運動方向に基づいてゲーム処理を実行する（Ｓ２５）。
【０１１１】
このように、ポインティング装置によって指し示される画面上の点の位置変化を検出できるときはこの位置変化に基づいてゲーム処理を実行し、位置変化を検出できないときは加速度センサの検知結果から判別される運動方向に基づいてゲーム処理を実行するので、ポインティング装置による指し示し位置の特定が困難な状況でも、その運動方向を利用してゲーム処理を支障なく進行させることができる。
【０１１２】
また、プロセサは、加速度センサによって検知される加速度が閾値以上であるか否かを判別し（Ｓ５）、加速度が閾値以上であると判別されている期間にだけ位置特定を行う。これにより、位置特定を効率よく行え、また、手ぶれなどプレイヤの意図しないポインティング装置の動きにより誤ってゲーム処理が進行するのを防ぐことができる。
【０１１３】
また、プロセサは、加速度センサによって検知される加速度の変化を累積加算することによって、ポインティング装置と共に運動するローカル座標系におけるポインティング装置の速度方向を算出する（Ｓ１７）。また、加速度センサによって検知される加速度を累積加算することによってローカル座標系における重力方向を算出する（Ｓ１９）。そして、算出された重力方向を静止座標系における重力方向と一致させるような回転演算を算出された速度方向に対して施すことによって、静止座標系における速度方向を算出する（Ｓ２１）。これにより、静止座標系における速度方向を用いて、ポインティング装置の姿勢に関わらず、的確なゲーム処理を行える。
【０１１４】
また、上記の各算出処理は、加速度センサから出力されるＸＹＺ方向の３加速度成分のうちＸＹ方向に対応する２つの加速度成分について行われ、加速度の判別処理はＺ方向に対応する加速度成分について行われる。このため、単一の３方向加速度センサを利用して、ゲーム進行の的確化および効率化が図れる。
【０１１５】
以下には、この発明の他の実施例について説明する。この実施例のハードウエア構成は前述の実施例と同様であり、図１〜図３を流用する。この実施例でも薪割りゲームをプレイするが、そのプレイ方法やゲーム画面は前実施例と同様なので、図４〜図７を流用する。この実施例の薪割りゲームでも、有効なＤＰＤ座標が得られた場合はこれに基づいて切断方向を決定し、そうでなければ加速度センサ６８の出力値（ＸＹＺ３方向の加速度成分）から切断方向を決定する。前実施例との相違は、加速度センサ６８の出力値から切断方向を決定する処理にある。
【０１１６】
すなわち、加速度センサ６８の出力値から切断方向を決定する際、前実施例では、そのＸＹ成分だけを２次元の加速度ベクトルとしてバッファに記録し、バッファに蓄積された加速度ベクトルから移動方向ベクトルおよび重力方向ベクトルを算出し、そしてＸ−Ｙ空間内で（すなわちローカル座標系において）重力方向ベクトルを鉛直下方に向かせるような回転演算を移動方向ベクトルに対して施した。これにより、静止座標系における（すなわちＸ０−Ｙ０空間内での）振り方向、つまり切断方向が求まる。
【０１１７】
一方、この実施例では、加速度センサ６８の出力値つまりＸＹＺ成分を有する３次元の加速度ベクトルをバッファに記録し、バッファに蓄積された加速度ベクトルを積算してｔｏｔａｌベクトル（すなわちローカル座標系における重力方向ベクトル）を求め、静止座標系における重力ベクトル方向（鉛直下方向）をｔｏｔａｌベクトル方向に向かせるような回転演算を加速度ベクトルに対して施し、回転後の加速度ベクトル（すなわち静止座標系における加速度ベクトル）から重力ベクトルを減算し、そして減算後の加速度ベクトルのＸＹ成分を切断方向とする。
【０１１８】
薪割りゲームをプレイするときのメインメモリ４０のメモリマップを図２０に示す。図２０を参照して、プログラム記憶領域１００には、ゲーム処理プログラム２０２と、加速度検出プログラム２０４と、加速度ベクトル処理プログラム２０６と、ＤＰＤ座標検出プログラム２０８と、切断方向決定プログラム２１０とを含む。
【０１１９】
ゲーム処理プログラム２０２は、図８のゲーム処理プログラム１０２と同様、薪割りゲームの進行に必要な基本処理を実行する。加速度検出プログラム２０４は、図８の加速度検出プログラム１０４と同様、コントローラ２６の加速度を検出する。加速度ベクトル処理プログラム２０６は、加速度ベクトルからのｔｏｔａｌベクトルの算出，加速度ベクトルの回転，回転後の加速度ベクトルからの重力ベクトルの減算といった一連の処理を実行する。ＤＰＤ座標検出プログラム２０８は、図８のＤＰＤ座標検出プログラム１１４と同様、ＤＰＤ座標を検出する。切断方向決定プログラム２１０は、上記のような一連の処理を経た後の加速度ベクトルおよび検出されたＤＰＤ座標のいずれかに基づいて切断方向を決定する。
【０１２０】
データ記憶領域１２０には、加速度バッファ２２２，変数／フラグ保持領域２２４および行列保持領域２２６などが形成される。加速度バッファ２２２は、加速度検出プログラム１０４によって検出された３成分の加速度を記憶する。変数／フラグ保持領域２２４は、上記の各プログラム（２０２〜２１０）によって参照される変数やフラグを保持する。行列保持領域２２６は、加速度ベクトル処理プログラム２０６による回転処理で利用される姿勢変換行列を保持する。
【０１２１】
薪割りゲームで切断方向を決定するにあたり、ＣＰＵ３６は、図２１〜図２４のフローチャートに従う処理を実行する。まず図２１を参照して、ステップＳ１０１では、ｂＤＰＤＤａｔａＥｎａｂｌｅに“ｆａｌｓｅ”をセットし、ｎＤａｔａには“０”をセットする。ステップＳ１０３では、姿勢変換行列を求める（後述）。
【０１２２】
ステップＳ１０５では、まずコントローラ２６から加速度を取得し、取得された加速度（Ｘ，Ｙ，Ｚ成分）をａｃｃ１（ａｃｃ１．ｘ，ａｃｃ１．ｙ，ａｃｃ１．ｚ）にセットし、ａｃｃ１を姿勢変換行列で回転させ、そして回転結果をａｃｃ２にセットする。次に、ａｃｃ２から重力ベクトルを減算し、減算結果をａｃｃ３にセットする。次に、ａｃｃ３の大きさを求め、結果をｓｉｚｅにセットする。
【０１２３】
ステップＳ１０７では、ｎＤａｔａが“０”より大きいか否かを判別し、ＮＯであればステップＳ１３１に進む。ＹＥＳであれば、ステップＳ１０９〜Ｓ１２３を経てステップＳ１３１に進む。
【０１２４】
ステップＳ１０９では、（ｍ＿ａｃｃ．ｘ，ｍ＿ａｃｃ．ｙ）と（ａｃｃ３．ｘ，ａｃｃ３．ｙ）との内積が負であるか否か、つまりこれら２つのベクトルのなす角が鈍角であるかを判別する。ここでｍ＿ａｃｃ．ｘおよびｍ＿ａｃｃ．ｙは、ａｃｃの大きさが最大のときのａｃｃ．ｘおよびａｃｃ．ｙを意味する。要するに、振り動作の終わりに検出される逆向きの加速度を検出することによって振り動作が終わったか否かをここでは判別している。
【０１２５】
ステップＳ１０９でＹＥＳであれば、ステップＳ１２５でｎＤａｔａが定数Ａ以上であるか否かを判別する。ステップＳ１２５でＮＯであればステップＳ１２３に移り、ＹＥＳであればステップＳ１２７で切断方向を決定（後述）した後、ステップＳ１２９で成功演出を行い、そしてステップＳ１０１に戻る。
【０１２６】
ステップＳ１０９でＮＯであれば、ステップＳ１１１でｍ＿ｓｉｚｅがｓｉｚｅよりも小さいか否かを判別する。ここでｍ＿ｓｉｚｅはｓｉｚｅの最大値を意味する。ステップＳ１１１でＮＯであればステップＳ１１５に進み、ＹＥＳであればステップＳ１１３を経てステップＳ１１５に進む。ステップＳ１１３では、ｍ＿ｓｉｚｅにｓｉｚｅをセットし、そしてａｃｃ３の大きさをｓｉｚｅにセットする。
【０１２７】
ステップＳ１１５ではｎＤａｔａをインクリメントし、続くステップＳ１１７でｎＤａｔａが定数Ｂ（＞定数Ａ）よりも大きいか否かを判別する。ここでＹＥＳであればステップＳ１２７に移り、ＮＯであればステップＳ１１９に進む。ステップＳ１１９では、過去ｎ回分の加速度ベクトルを加速度バッファ２２２から取得し、取得されたｎ個の加速度ベクトルの各々の大きさを求め、求められた大きさが重力加速度に近いものの個数を計数し、そして計数結果をＭにセットする。セット後、ステップＳ１２１に移る。
【０１２８】
ステップＳ１２１では、Ｍが定数（たとえば“５”）より大きいか否かを判別する。ここでＮＯであればステップＳ１３１に進み、ＹＥＳであればステップＳ１２３を経てステップＳ１３１に移る。ステップＳ１２３では、ｎＤａｔａに“０”をセットする。なお、ステップＳ１２１およびＳ１２３は要するに、現在検出中の運動が薪割り運動であるのかどうか（すなわちプレイヤが薪を割るべくコントローラ２６を振っているのかどうか）を判別して、薪割り運動でなければ（単なる回転運動などであれば）ｎＤａｔａをリセットするという処理である。
【０１２９】
図２２を参照して、ステップＳ１３１では、ｎＤａｔａが“０”より大きいか否かを判別する。ここでＹＥＳであればステップＳ１３９に進み、ＮＯであればステップＳ１３３〜Ｓ１３７を経てステップＳ１３９に進む。ステップＳ１３３では、ｂＤＰＤＤａｔａＥｎａｂｌｅに“ｆａｌｓｅ”をセットする。ステップＳ１３５では、ｓｉｚｅが定数より大きいか否かを判別し、ここでＮＯであればステップＳ１５１に進む。ステップＳ１３５でＹＥＳであればステップＳ１３７で、ｍ＿ｓｉｚｅにｓｉｚｅをセットし、ｍ＿ａｃｃにａｃｃ３をセットし、そしてｎＤａｔａに“１”をセットする。
【０１３０】
ステップＳ１３９では、コントローラ２６から有効なＤＰＤ座標が得られたか否かを判別する。ここでＮＯであればステップＳ１５１に進み、ＹＥＳであればステップＳ１４１〜Ｓ１４９を経てステップＳ１５１に進む。ステップＳ１４１では、取得されたＤＰＤ座標をＤＰＤＰｏｓにセットする。ステップＳ１４３では、ｂＤＰＤＤａｔａＥｎａｂｌｅが“ｔｒｕｅ”であるか否かを判別する。ここでＹＥＳであればステップＳ１４９に進み、ＮＯであればステップＳ１４５およびＳ１４７を経てステップＳ１４９に進む。
【０１３１】
ステップＳ１４５ではｂＤＰＤＤａｔａＥｎａｂｌｅに“ｔｒｕｅ”をセットし、ステップＳ１４７ではＤＰＤＦｉｒｓｔにＤＰＤＰｏｓをセットする。
【０１３２】
ステップＳ１４９では、ＤＰＤＬａｓｔにＤＰＤＰｏｓをセットする。そしてステップＳ１５１で終了操作が行われたか否かを判別し、ＮＯであればステップＳ１０３に戻る。ＹＥＳであれば、この切断方向決定処理を終了する。
【０１３３】
上記ステップＳ１０３の姿勢変換行列を求める処理は、図２３のサブルーチンに従う。図２３を参照して、ステップＳ１６１ではｔｏｔａｌおよびｎＤａｔａ２の各々に“０”をセットし、ステップＳ１６３ではｉに“０”をセットし、そしてステップＳ１６５〜Ｓ１７３のループ処理に入る。なお、ｔｏｔａｌは、検出された加速度ベクトルのうち重力加速度に近いものを加算した結果のベクトルであり、ｎＤａｔａ２は検出された加速度ベクトルのうち重力加速度に近いものの個数を意味する変数である。
【０１３４】
ステップＳ１６５では、ｉが“６４”より小さいか否かを判別する。ステップＳ１６５でＹＥＳであれば、ステップＳ１６７でａｃｃにｉ個前の加速度ベクトルをセットする。ステップＳ１６９では、ａｃｃの大きさが０．８以上１．２以下であるか否かを判別する。ここでＮＯであればステップＳ１７３に進み、ＹＥＳであればステップＳ１７１を経てステップＳ１７３に進む。ステップＳ１７１では、ｔｏｔａｌにａｃｃを加算して、この加算結果をｔｏｔａｌとすると共に、ｎＤａｔａ２をインクリメントする。そしてステップＳ１７３でｉをインクリメントした後、ステップＳ１６５に戻る。
【０１３５】
このような一連の処理が反復されることでｉが“６４”に達すると、ステップＳ１６５でＮＯと判別し、このループを抜けてステップＳ１７５に移る。ステップＳ１７５では、ｎＤａｔａ２が４８より大きいか否かを判別する。つまり、過去６４回分の加速度ベクトルの中に大きさが０．８〜１．２のものが４８個以上含まれるかどうかが判別される。ここでＹＥＳであれば、静止座標系における重力ベクトル方向をｔｏｔａｌベクトル方向に回転させる行列（ないしは同等の演算式）を求め、これを姿勢変換行列として行列保持領域２２６に記録する。そして上位層のルーチンに復帰する。
【０１３６】
ステップＳ１７５でＮＯであればステップＳ１７９に移り、前回の姿勢変換行列つまり行列保持領域２２６に保持されている姿勢変換行列をステップＳ１０５の回転処理で使用することを決定する。そして上位層のルーチンに復帰する。
【０１３７】
上記ステップＳ１２７の切断方向決定処理は、図２４のサブルーチンに従う。図２４を参照して、ステップＳ１９１では、ｂＤＰＤＤａｔａＥｎａｂｌｅが“ｔｒｕｅ”であるか否かを判別し、ＹＥＳであればステップＳ１９３で、ＤＰＤＬａｓｔとＤＰＤＦｉｒｓｔとの差が“０”でないか否かを判別する。ここでＹＥＳであれば、ステップＳ１９５で｛ＤＰＤＬａｓｔ−ＤＰＤＦｉｒｓｔ｝の傾きを求め、これを切断方向とする。ステップＳ１９１およびＳ１９３の各々でＮＯであれば、ステップＳ１９７に移って、ｍ＿ａｃｃのＸＹ成分からなる２次元ベクトルの傾きを求め、これを切断方向とする。切断方向が決定されると、上位層のルーチンに復帰する
以上から明らかなように、この実施例（第２実施例）によれば、前実施例と同様、ポインティング装置（２６）による指し示し位置の特定が困難な状況でも、その運動方向を利用してゲーム処理を進行させることができる。
【０１３８】
また、この実施例では、プロセサ（３６）は、加速度センサ（６８）によって検知された加速度を累積加算することによって、ポインティング装置と共に運動するローカル座標系における重力方向を算出（Ｓ１６５〜Ｓ１７７）する。また、静止座標系における重力方向を算出された重力方向と一致させるような回転処理を加速度センサによって検知される加速度に対して施すことによって、静止座標系における加速度の方向を算出する（Ｓ１０５）。これにより、静止座標系における加速度方向を用いて、ポインティング装置の姿勢に関わらず、的確なゲーム処理を行える。
【０１３９】
また、この実施例では、上記の各算出処理は、ＸＹＺ３方向に対応する３つの加速度成分について行うので、算出された加速度を３次元のゲーム画面に反映させることが可能となり、また、２次元のゲーム画面を表示する場合でも加速度を用いたゲーム進行の的確化が図れる。
【０１４０】
なお、上記２つの実施例（第１実施例および第２実施例）の各々では、所定位置（具体的には薪Ｗの中心：図５〜図７参照）を切断中心位置としたが、２つ以上の有効なＤＰＤ座標が得られた場合は、最初のＤＰＤ座標を切断開始位置とし、最後のＤＰＤ座標を切断終了位置としてもよい。そうでない場合（すなわち加速度センサ６８の出力値に基づいて切断方向を決定する場合）には、所定位置を切断中心位置とする。
【０１４１】
第１実施例にこのような変更を加えるには、ステップＳ２３とステップＳ２５（図１４参照）との間に切断位置決定ステップ（Ｓ２４）を挿入すればよい。このステップＳ２４は、図２５のサブルーチンに従う。図２５を参照して、ステップＳ９１およびＳ９３（図１９参照）と同等のステップＳ２０１およびＳ２０３の各々でＹＥＳであれば、ステップＳ２０５でＤＰＤＦｉｒｓｔ，ＤＰＤＬａｓｔをそれぞれ切断開始位置，切断終了位置とする。ステップＳ２０１およびＳ２０３の各々でＮＯであれば、ステップＳ２０７で所定位置を切断中心位置とする。
【０１４２】
一方、第２実施例においては、ステップＳ１２７とステップＳ１２９（図２１参照）との間に切断位置決定ステップ（Ｓ１２８）を挿入する。このステップＳ１２８は、図２６のサブルーチンに従う。図２６を参照して、ステップＳ１９１およびＳ１９３（図２４参照）と同等のステップＳ２１１およびＳ２１３の各々でＹＥＳであれば、ステップＳ２１５でＤＰＤＦｉｒｓｔ，ＤＰＤＬａｓｔをそれぞれ切断開始位置，切断終了位置とする。ステップＳ２１１およびＳ２１３の各々でＮＯであれば、ステップＳ２１７で所定位置を切断中心位置とする。
【０１４３】
なお、上述の実施例では、ディスプレイ３４の表示画面近傍にＬＥＤモジュール２４ａおよび２４ｂを設け、コントローラ２６にＬＥＤモジュール２４ａおよび２４ｂから出力される赤外光を撮像するための撮像装置を設けることによってコントローラ２６の位置を検出するようにしたが、これに限られる必要はない。例えば、コントローラ２６にＬＥＤモジュールを設け、ディスプレイ３４の表示画面近傍に撮像装置を設けるようにしてもよい。また、撮像装置に代えて受光センサ等を用いてもよい。
【０１４４】
また、上述の実施例では、画面内の任意の点を指し示すポインティング装置として、撮像装置を備えたものを採用したが、画面の位置を指示できるものであれば、他の方法を用いてもよい。例えば、コントローラ２６の十字キー等を操作することに画面内を移動するカーソルの位置によって任意の点を指し示すようにしてもよい。また、モニタ画面にタッチパネルを設置し、モニタをペン等で直接タッチすることによって画面内の任意の点を指示するようにしてもよい。また、マウス等の画面上の位置座標を指定する他のポインティングデバイスを用いて、当該マウス等から出力される出力値に基づいて画面内の任意の点を指示するようにしてもよい。このとき、ペンやマウス等の動きを検出可能な加速度センサ等をペンやマウス等に設けておけばよい。
【０１４５】
以上では、ゲームシステム１０を用いて説明したが、この発明は、ゲーム処理の進行に応じて更新されるゲーム画面を表示する表示装置と、表示装置によって表示されたゲーム画面内の任意の点を指し示すポインティング装置と、ポインティング装置に設けられる加速度センサとを備えるシステムに適用できる。
【図面の簡単な説明】
【０１４６】
【図１】この発明の一実施例を示す図解図である。
【図２】図１実施例（第１実施例）の電気的な構成の一部を示すブロック図である。
【図３】図１実施例の電気的な構成の他の一部を示すブロック図である。
【図４】図１実施例でゲームをプレイする方法を示す図解図である。
【図５】図１実施例に適用されるゲーム画面の一例を示す図解図である。
【図６】図１実施例に適用されるゲーム画面の他の一例を示す図解図である。
【図７】図１実施例に適用されるゲーム画面のその他の一例を示す図解図である。
【図８】図１実施例に適用されるメモリマップを示す図解図である。
【図９】（Ａ）〜（Ｃ）は図１実施例に適用される切断方向決定方法を示す図解図である。
【図１０】（Ａ）および（Ｂ）は図１実施例に適用される加速度補正方法を示す図解図である。
【図１１】図１０（Ａ）および図１０（Ｂ）の方法を詳細に説明するための図解図である。
【図１２】図１０（Ａ）および図１０（Ｂ）の方法を詳細に説明するための図解図である。
【図１３】（Ａ）および（Ｂ）は図１０（Ａ）および図１０（Ｂ）の方法を詳細に説明するための図解図である。
【図１４】図１実施例に適用されるＣＰＵ動作の一部を示すフロー図である。
【図１５】図１実施例に適用されるＣＰＵ動作の他の一部を示すフロー図である。
【図１６】図１実施例に適用されるＣＰＵ動作のその他の一部を示すフロー図である。
【図１７】図１実施例に適用されるＣＰＵ動作のさらにその他の一部を示すフロー図である。
【図１８】図１実施例に適用されるＣＰＵ動作の他の一部を示すフロー図である。
【図１９】図１実施例に適用されるＣＰＵ動作のその他の一部を示すフロー図である。
【図２０】他の実施例（第２実施例）に適用されるメモリマップを示す図解図である。
【図２１】他の実施例に適用されるＣＰＵ動作の一部を示すフロー図である。
【図２２】他の実施例に適用されるＣＰＵ動作の他の一部を示すフロー図である。
【図２３】他の実施例に適用されるＣＰＵ動作のその他の一部を示すフロー図である。
【図２４】他の実施例に適用されるＣＰＵ動作のさらにその他の一部を示すフロー図である。
【図２５】その他の実施例（第１実施例の変形例）に適用されるＣＰＵ動作の一部を示すフロー図である。
【図２６】さらにその他の実施例（第２実施例の変形例）に適用されるＣＰＵ動作の一部を示すフロー図である。
【符号の説明】
【０１４７】
１０  …ゲームシステム
１２  …ビデオゲーム装置
１８  …光ディスク
２４ａ，２４ｂ  …ＬＥＤモジュール
２２  …無線受信ユニット
２６  …コントローラ
２６Ａ  …操作スイッチ
３４  …モニタ
３６  …ＣＰＵ
４０  …メインメモリ
６８  …加速度センサ
７２  …撮像装置
７４  …画像処理回路
７６  …無線モジュール
【図１】
2007300953.tif 000003
【図２】
2007300953.tif 000004
【図３】
2007300953.tif 000005
【図４】
2007300953.tif 000006
【図５】
2007300953.tif 000007
【図６】
2007300953.tif 000008
【図７】
2007300953.tif 000009
【図８】
2007300953.tif 000010
【図９】
2007300953.tif 000011
【図１０】
2007300953.tif 000012
【図１１】
2007300953.tif 000013
【図１２】
2007300953.tif 000014
【図１３】
2007300953.tif 000015
【図１４】
2007300953.tif 000016
【図１５】
2007300953.tif 000017
【図１６】
2007300953.tif 000018
【図１７】
2007300953.tif 000019
【図１８】
2007300953.tif 000020
【図１９】
2007300953.tif 000021
【図２０】
2007300953.tif 000022
【図２１】
2007300953.tif 000023
【図２２】
2007300953.tif 000024
【図２３】
2007300953.tif 000025
【図２４】
2007300953.tif 000026
【図２５】
2007300953.tif 000027
【図２６】
2007300953.tif 000028