(57)【特許請求の範囲】
【請求項１】
予め抽出すべき所定色の画像領域を設定する設定手段と、撮像手段と、該撮像手段による撮像領域に含まれる所定色の画像領域を抽出する抽出手段とを備えた画像抽出装置において、
該撮像手段により撮像される撮像領域から前記設定手段によって設定された画像領域が有する所定色と同じ所定色が検知され続ける間、前記抽出手段による抽出動作を禁止すると共に、前記同じ所定色が検知されなくなると、前記抽出手段による抽出動作を開始させる制御手段を備えることを特徴とする画像抽出装置。
【請求項２】
出力すべきオブジェクト画面データを記憶する画像記憶手段と、
該画像記憶手段に記憶されたオブジェクト画面データの表示画面に出力される位置を指定する表示位置指定手段と、
該表示位置指定手段により指定された位置に前記画像記憶手段に記憶されたオブジェクト画面データに対応する画像を出力するよう制御する出力制御手段と、
前記制御手段によって開始された前記抽出手段による抽出動作で抽出された所定色の画像領域の撮像された画面における位置と、前記オブジェクト画面データが表示される位置との位置関係を判断する判断手段と、
該判断手段による判断の内容に基づき、次に表示されるべき画面に対応する信号を生成する信号生成手段と、
を更に有することを特徴とする請求項１に記載の画像抽出装置。
【請求項３】
撮像された画面の色信号に基づいてクロマキー信号を出力する信号出力手段を更に備え、前記制御手段によって開始される前記抽出手段による抽出動作とは、該信号出力手段によって出力されたクロマキー信号を認識することによる、前記所定色の画像領域の抽出である
ことを特徴とする請求項１又は２に記載の画像抽出装置。
【請求項４】
予め抽出すべき所定色の画像領域を設定し、撮像部にて撮像される領域に含まれる所定色の画像領域を抽出する画像抽出方法であって、
前記撮像部にて撮像される撮像領域から予め設定された画像領域が有する所定色と同じ所定色が検知され続ける間、抽出動作を禁止すると共に、前記同じ所定色が検知されなくなると、抽出動作を開始させることを特徴とする画像抽出方法。
【請求項５】
撮像された画面の色信号に基づいてクロマキー信号を出力する信号出力ステップを更に含み、前記開始される抽出動作とは、該信号出力ステップにて出力されたクロマキー信号を認識することによる、前記所定色の画像領域の抽出である
ことを特徴とする請求項４に記載の画像抽出方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、例えばテレビゲームなどにおいて、撮像された画面から、色信号に基づいて特定条件の画像領域を抽出する画像抽出装置及び画像抽出方法に関する。
【０００２】
従来、この種の画像抽出装置としては、撮像された画面のうちの所定色、例えば鮮やかな青色の画像領域をクロマキーとして検出するクロマキー検出装置が知られている。
【０００３】
このようなクロマキー検出装置は、テレビジョン撮影などにおいて画像を合成する目的などに使用されるほか、例えばユーザが持った所定色のバットの位置を順次クロマキー検出し、その検出位置に基づいて表示画像を制御するテレビゲームなどの画像制御装置にも応用することができる。
【０００４】
【発明が解決しようとする課題】
しかし、従来のクロマキー検出装置は、単に撮像された画像のうち所定色の画像を検出するだけであり、例えば、上述したテレビゲームなどにおいて、バットなどの常に動く物体をクロマキー検出したい場合において、背景にバットと同じ色彩を有する対象物が存在する場合には、その対象物がバットなどとして検出されてしまい、目的とするクロマキー検出が行えなくなるおそれがあるという問題点を有していた。
【０００５】
本発明の課題は、撮像された画面から、目的とする画像領域を正確に抽出できるようにすることにある。
【０００６】
【課題を解決するための手段】
本発明の画像抽出装置は、予め抽出すべき所定色の画像領域を設定する設定手段と、撮像手段と、該撮像手段による撮像領域に含まれる所定色の画像領域を抽出する抽出手段とを備えた画像抽出装置において、上記撮像手段により撮像される撮像領域から上記設定手段によって設定された画像領域が有する所定色と同じ所定色が検知され続ける間、上記抽出手段による抽出動作を禁止すると共に、上記同じ所定色が検知されなくなると、上記抽出手段による抽出動作を開始させる制御手段（図３４及び図３５の動作フローチャートを実行する画像認識回路５０８及び図３６〜図３８の動作フローチャートを実行するＣＰＵ５０９）を備える。ここで、画像領域とは、例えばバットなどを持ったユーザの動作を順次撮像して得られるものである。また、上記の抽出動作を禁止している状態と、抽出動作を開始した後の状態は、例えばテレビゲームの例では、それぞれ、ゲーム開始前の状態と、ゲーム開始後の状態に対応する。
【００１１】
加えて、出力すべきオブジェクト画面データを記憶する画像記憶手段（図５におけるアプリケーションＲＯＭ５１４、ＤＲＡＭ５０７等）と、この画像記憶手段に記憶されたオブジェクト画面データの表示画面に出力される位置を指定する表示位置指定手段（図５におけるＣＰＵ５０９等）と、この表示位置指定手段により指定された位置に上記画像記憶手段に記憶されたオブジェクト画面データに対応する画像を出力するよう制御する出力制御手段（図８におけるオブジェクトコントロール回路８０３等）と、上記制御手段によって開始された上記抽出手段による抽出動作で抽出された所定色の画像領域の撮像された画面における位置と、上記オブジェクト画面データが表示される位置との位置関係を判断する判断手段（図１０におけるステップ１００６等を実行する画像認識回路５０８等）と、この判断手段による判断の内容に基づき、次に表示されるべき画面に対応する信号を生成する信号生成手段（図５におけるＣＰＵ５０９等）と、を更に有することも可能である。ここで、画像記憶手段は、オブジェクト画面データを複数記憶するように構成することができる。その場合、表示位置指定手段は、画像記憶手段に記憶された複数のオブジェクト画面データのうち少なくとも１つの種類を指定するように構成されてもよい。また、位置関係とは、例えば互いの位置の重なりである。
【００１２】
また、撮像された画面の色信号に基づいてクロマキー信号を出力する信号出力手段（図７のビデオ信号変換回路５０５におけるクロマキー回路７０６等）を更に備えることも可能であり、この場合、上記制御手段によって開始される上記抽出手段による抽出動作とは、上記信号出力手段によって出力されたクロマキー信号を認識することによる、上記所定色の画像領域の抽出である。
【００１３】
次に、本発明の画像抽出方法は、予め抽出すべき所定色の画像領域を設定し、撮像部にて撮像される領域に含まれる所定色の画像領域を抽出する画像抽出方法であって、上記撮像部にて撮像される撮像領域から予め設定された画像領域が有する所定色と同じ所定色が検知され続ける間、抽出動作を禁止すると共に、前記同じ所定色が検知されなくなると、抽出動作を開始させる（図３４〜図３８の動作フローチャート）。ここで、上記の抽出動作を禁止している状態と、抽出動作を開始した後の状態は、例えばテレビゲームの例では、それぞれ、ゲーム開始前の状態と、ゲーム開始後の状態に対応する。
【００１４】
この本発明の画像抽出方法において、撮像された画面の色信号に基づいてクロマキー信号を出力する信号出力ステップ（図１０の画面認識回路の全体動作フローチャートにおけるステップ１００３等）を更に含むことが可能であり、その場合、上記開始される抽出動作とは、上記信号出力ステップにて出力されたクロマキー信号を認識することによる、上記所定色の画像領域の抽出である。
【００２０】
【作用】
本発明においては、例えばテレビゲームの開始前の状態である第１の状態（上記の抽出動作を禁止している状態）において、例えばバットなどの目的物を示す所定色の画像領域と同じ所定色が検知され続ける限り、上記第１の状態が維持され続ける。その後、上記所定色が検知されなくなると、上記第１の状態の維持が解除（上記の抽出動作が開始）され、例えばテレビゲームの開始後（進行中）の状態である第２の状態が開始され、バットなどの目的物を示す所定色の画像領域が順次得られていく。
【００２５】
このようにすることで、撮像すべき対象が安定した状態に移行してから、すなわち、バットなどの目的物と同じ所定色を有する背景対象物が撮像範囲内からなくなってから、バットなどの目的物のみを示す所定色の画像領域を安定に抽出できる。
【００２７】
更に、第２の状態において、バットを振るユーザなどの現実の情景を撮像して得られる画面から抽出された、バットなどの所定色の画像領域の位置と、オブジェクト画面データの表示画面上での位置との位置関係を判断し、その判断内容に基づき、次に表示されるべき画面に対応する信号が生成されるようにすれば、ユーザは、あたかも実際のプレーをするようにバットを振る動作などを行うことにより、ＣＧ画像などによって表示されるテレビゲームに参加することなどができる。
【００２８】
この場合特に、撮像された画面からバットなどの特定の画像領域を抽出する際、クロマキーなどによる所定色の画像領域として抽出することによって、ユーザの動作を正確に把握することができる。
【００２９】
【実施例】
以下、図面を参照しながら本発明の第１〜第４の実施例について詳細に説明する。
＜実施例におけるユーザの動作の外観と実施例の動作原理＞
第１〜第４の実施例の構成及び具体的な動作について説明する前に、これらの実施例におけるユーザの共通の動作の外観と実施例の共通の動作原理について、簡単に説明する。
【００３０】
第１〜第４の実施例は本発明を野球のテレビゲームに適用したものである。
図１に示されるように、ユーザは、所定色例えば青色に塗られたバット１０１を持って構え、表示装置１０３にＣＧ（コンピュータグラフィックス）画像１０４として表示される、投手が投げたＣＧによるボール１０５に向かって、バット１０１を振る。
【００３１】
カメラ１０２は、バット１０１を持ったユーザが含まれる情景を撮像する。この撮像された画像から、上述の所定色に関するクロマキー信号が抽出されることにより、図２に示されるようなバット１０１の座標マップ２０２が作成され、更に、その座標マップ２０２上でのバット１０１の重心座標（図中×印）が検出される。そして、このバット１０１の座標マップ２０２及び重心座標と、予め記憶されている図２に示されるようなＣＧによるボール１０５の座標２０１及びその重心座標（図中×印）との位置関係２０３が判定されることにより、バット１０１とＣＧによるボール１０５の衝突発生の有無と、衝突が発生した場合におけるバット１０１の重心座標とＣＧによるボール１０５の重心座標との位置関係が抽出される。
【００３２】
図２に示されるように、バット１０１にＣＧによるボール１０５が当ったと判定された場合において、バット１０１の重心座標とＣＧによるボール１０５の重心座標とのずれが所定の許容範囲内にある場合には、例えばユーザがホームランを打ったと判定されＣＧ画像１０４がホームランに対応する画像に変化する。
【００３３】
或いは、図３に示されるように、バット１０１にＣＧによるボール１０５が当ったと判定された場合において、ＣＧによるボール１０５の重心座標がバット１０１の重心座標の下方にずれている場合には、例えばユーザがゴロを打ったと判定されＣＧ画像１０４がゴロに対応する画像に変化する。
【００３４】
更に、図４に示されるように、バット１０１にＣＧによるボール１０５が当ったと判定された場合において、ＣＧによるボール１０５の重心座標がバット１０１の重心座標の上方にずれている場合には、例えばユーザがフライを打ったと判定されＣＧ画像１０４がフライに対応する画像に変化する。
【００３５】
このように、第１〜第４の実施例では、ユーザは、あたかも実際のプレーをするようにバット１０１を振ることにより、ＣＧ画像１０４によって表示されるテレビゲームに参加することができる。
＜実施例の構成＞
上述の動作を実現する第１〜第４の実施例の共通の具体的な構成について、以下に説明する。
【００３６】
図５は、本発明の第１〜第４の実施例の共通の全体構成図である。
まず、クロックドライバー５０２は、ビデオ信号入出力回路５０３を介して発振器（ＯＳＣ）５０４から入力するクロックに基づいて、図１のカメラ１０２内に設けられているＣＣＤ５０１の動作を直接制御すると共に、ＨＳＹＮＣ信号及びＶＳＹＮＣ信号などの同期信号５１９を生成し、それをビデオ信号入出力回路５０３、ＶＤＰ５０６、画像認識回路５０８、及びＣＰＵ５０９に供給する。従って、これらの回路は、同期信号５１９に基づいて、互いに同期して動作することができる。
【００３７】
ＣＣＤ５０１から出力されるＣＣＤ出力信号５１８は、ビデオ信号入出力回路５０３に入力される。
ビデオ信号入出力回路５０３は、ＣＣＤ出力信号５１８をデジタルコンポジットビデオ入力信号５２０に変換する動作、ビデオ信号変換回路５０５からのデジタルコンポジットビデオ出力信号５２１をアナログコンポジットビデオ出力信号５２２に変換する動作を行う。
【００３８】
ビデオ信号入出力回路５０３の構成を図６に示す。
図６において、ＣＣＤ５０１（図５）からのＣＣＤ出力信号５１８は、サンプリング回路６０１によりアナログ的にサンプリングされる。
【００３９】
サンプリング回路６０１の出力は、自動利得調整回路（ＡＧＣ）６０２によって、その振幅レベルが調整される。
ＡＧＣ６０２の出力は、γ補正回路６０３によって、光のパワーに対する信号レベルが所定のγ特性になるように変換される。
【００４０】
γ補正回路６０３の出力は、８ビットＡ／Ｄ変換器６０４によって、８ビットのデジタルコンポジットビデオ入力信号５２０に変換される。このデジタルコンポジットビデオ入力信号５２０は、図５のビデオ信号変換回路５０５に出力される。
【００４１】
一方、ビデオ信号変換回路５０５から出力される８ビットのデジタルコンポジットビデオ出力信号５２１は、８ビットＤ／Ａ変換器６０５により、アナログコンポジットビデオ出力信号５２２に変換される。このアナログコンポジットビデオ出力信号５２２は、図１の表示装置１０３に出力される。この結果、表示装置１０３は、アナログコンポジットビデオ出力信号５２２に対応するＣＧ画像１０４を表示する。
【００４２】
図５に戻り、ビデオ信号変換回路５０５は、デジタルコンポジットビデオ入力信号５２０からクロマキー信号５２３を生成しそれを画像認識回路５０８へ出力する動作、画像認識回路５０８からのスーパーインポーズ信号５２５に基づき、ビデオ信号入出力回路５０３から入力されるデジタルコンポジットビデオ出力信号５２１に対応する色信号又はビデオディスプレイプロセッサ（ＶＤＰ）５０６から出力されるデジタルＲＧＢ信号５２４の何かを選択し、選択された色信号に対応するデジタルコンポジットビデオ出力信号５２１を出力する動作を行う。
【００４３】
ビデオ信号変換回路５０５の構成を図７に示す。
色分離フィルター７０１は、ビデオ信号入出力回路５０３（図５）から入力されるデジタルコンポジットビデオ入力信号５２０を入力し、その信号に対応するＧ（グリーン）信号、Ｃｙ（シアン）信号、及びＹｅ（イエロー）信号の３種類の色信号を出力する。
【００４４】
輪郭補正回路７０２は、上述の３種類の色信号を入力し、これらの色信号によって決定される画像の輪郭を補正する処理を行う。
輪郭補正回路７０２の出力のうち、Ｇ（グリーン）信号以外の信号は、ホワイトバランス回路７０３に入力される。ホワイトバランス回路７０３は、入力信号に対してホワイトバランスの調整を行う。
【００４５】
ホワイトバランス回路７０３の出力は、選択フィルター７０４に入力される。選択フィルター７０４は、入力に対応するＲ（レッド）信号及びＢ（ブルー）信号を出力する。
【００４６】
マトリクス回路７０５は、上述のＲ（レッド）信号、Ｂ（ブルー）信号と、輪郭補正回路７０２から出力されるＧ（グリーン）信号を入力し、これらに対し、次式で示される変換に対応する演算を実行することにより、輝度信号Ｙと、色差信号Ｒ−Ｙ及びＢ−Ｙを出力する。
Ｙ＝  （  ８／２７）Ｒ＋（１６／２７）Ｇ＋（  １／９）Ｂ
Ｒ−Ｙ＝  （１５／２７）Ｒ−（１６／２７）Ｇ−（  １／９）Ｂ
Ｂ−Ｙ＝−（  ８／２７）Ｒ−（１６／２７）Ｇ＋（  ８／９）Ｂ
クロマキー回路７０６は、図９に示されるように、色差信号Ｒ−Ｙが、最小値Ｒ−Ｙｍｉｎから最大値Ｒ−Ｙｍａｘの範囲の値となり、かつ、色差信号Ｂ−Ｙが、最小値Ｂ−Ｙｍｉｎから最大値Ｂ−Ｙｍａｘの範囲の値となったときに、論理値“１”を有するクロマキー信号５２３を出力する。このクロマキー信号５２３は、例えば、図１のバット１０１に対応する鮮やかなブルーを示す色信号が入力されたときに、論理値“１”を示す。このクロマキー信号５２３を用いることにより、後述する画像認識回路５０８（図５）は、ユーザが振るバット１０１の位置を検出することができ、バット１０１とＣＧによるボール１０５とが衝突したか否かを判定できる。
【００４７】
次に、マトリクス回路７０８は、ＶＤＰ５０６からのデジタルＲＧＢ信号５２４を入力し、それらに対応する輝度信号Ｙと、色差信号Ｒ−Ｙ及びＢ−Ｙを出力する。
【００４８】
選択回路７０７は、画像認識回路５０８（図５）からのスーパーインポーズ信号５２５に基づき、マトリクス回路７０５又は７０８の何れかの出力を選択し、変調回路７０９へ出力する。変調回路７０９は、入力に対応するデジタルコンポジットビデオ出力信号５２１を生成し出力する。第１〜第４の実施例では、画像認識回路５０８（図５）からのスーパーインポーズ信号５２５は、選択回路７０７に、マトリクス回路７０８の出力を常に選択させる仕様となっている。この結果、図１の表示装置１０３には、ＶＤＰ５０６によって生成されるデジタルＲＧＢ信号５２４に対応するＣＧ画像１０４が常に表示されることになる。但し、このスーパーインポーズ信号５２５を制御することにより、カメラ１０２の撮像結果に基づいて生成されるデジタルコンポジットビデオ入力信号５２０に対応する実画像とＶＤＰ５０６によって生成されるＣＧ画像を合成し、その合成された画像を表示装置１０３に表示させることも可能である。
【００４９】
図５に戻り、ビデオディスプレイプロセッサ（ＶＤＰ）５０６は、ＣＰＵ５０９からの指定に基づいて、ＣＧ画像１０４を構成するオブジェクト画面データ及びバックグランド画面データをＤＲＡＭ５０７に随時記憶させ、ＣＰＵ５０９からの指定に基づいて、それらのデータを指定された座標位置に配置し、その配置結果に対応するデジタルＲＧＢ信号５２４を生成して、ビデオ信号変換回路５０５へ出力する。この結果、ビデオ信号変換回路５０５は、前述したように、このデジタルＲＧＢ信号５２４に対応するデジタルコンポジットビデオ出力信号５２１を生成し、ビデオ信号入出力回路５０３が、そのデジタルコンポジットビデオ出力信号５２１に対応するアナログコンポジットビデオ出力信号５２２を生成することにより、表示装置１０３（図１）にＣＧ画像１０４が表示されることになる。
【００５０】
ＶＤＰ５０６の構成を図８に示す。
ＣＰＵ５０９からバス５２６上を転送されてくるオブジェクト画面データ及びバックグランド画面データは、ＣＰＵインタフェース回路８０１及びＤＲＡＭコントロール回路８０２を介して、ＤＲＡＭ５０７（図５）に記憶される。
【００５１】
また、ＣＰＵ５０９からバス５２６上を転送されてくるオブジェクトテーブルデータは、ＣＰＵインタフェース回路８０１及びオブジェクトコントロール回路８０３を介して、オブジェクトテーブルＲＡＭ８０４に記憶される。このオブジェクトテーブルデータは、ＤＲＡＭ５０７に記憶されている各オブジェクト画面データとそれぞれに対応するＩＤ番号との対応テーブルを示すテーブルである。ＣＰＵ５０９は、時間経過と共に、各オブジェクト画面データのＣＧ画像１０４（図１）上での表示位置を指定する場合に、各オブジェクト画面データに対応するＩＤ番号と、それぞれの表示位置を指定する。この結果、オブジェクトコントロール回路８０３は、指定されたＩＤ番号に対応するオブジェクト画面データをＤＲＡＭコントロール回路８０２を介してＤＲＡＭ５０７から読み出し、ラインバッファＲＡＭ８０８に展開した後、その内容をＲＧＢ色差データ処理回路８０６に出力する。また、オブジェクトコントロール回路８０３は、ＣＰＵ５０９からの指定に基づいて、現在表示しているボール１０５（図１）を示すオブジェクトの重心位置を、ＣＰＵインタフェース回路８０１からバス５２６を介してＣＰＵ５０９に通知する。
【００５２】
一方、バックグランドコントロール回路８０５は、ＣＰＵ５０９から指定されたバックグランド画面データを、ＲＡＭコントロール回路８０２を介してＤＲＡＭ５０７から読み出し、そのデータに対して表示位置の制御又はスクロールの制御を行った後、ＲＧＢ色差データ処理回路８０６に出力する。
【００５３】
ＲＧＢ色差データ処理回路８０６は、カラールックアップテーブルＲＡＭ８０７内のカラールックアップテーブルを参照することにより、オブジェクトコントロール回路８０３から指定されるオブジェクト画面データ及びバックグランドコントロール回路８０５から指定されるバックグランド画面データに対応するデジタルＲＧＢ信号５２４を生成し、それらをビデオ信号変換回路５０５（図５）に出力する。この場合、ＲＧＢ色差データ処理回路８０６は、表示位置毎に、オブジェクト画面データとバックグランド画面データのどちらを表示させるかを決定するための制御も行う。そして、ＲＧＢ色差データ処理回路８０６は、オブジェクト画面データを出力しているときには、オブジェクト画面データ出力中信号ＹＳＯＢＪ（以下、ＹＳＯＢＪ信号という）の論理値を“１”にし、バックグランド画面データを出力しているときには、バックグランド画面データ出力中信号ＹＳＢＧ（以下、ＹＳＢＧ信号という）の論理値を“１”にする。ＹＳＯＢＪ信号及びＹＳＢＧ信号は、画像認識回路５０８へ出力される。
【００５４】
図５に戻り、画像認識回路５０８は、同期信号５１９に同期して決定されるフレーム周期毎に、ビデオ信号変換回路５０５から入力される１フレーム分のクロマキー信号５２３を内部の２つのクロマキー信号用バッファに交互に保持し、同時に、ＶＤＰ５０６内のＲＧＢ色差データ処理回路８０６から出力される１画面マップ（後述する）分のＹＳＯＢＪ信号を内部の２つのＹＳＯＢＪ信号用バッファに交互に保持する。これと共に、画像認識回路５０８は、前回のフレーム周期において２つのクロマキー信号用バッファのうちの１つに保持された１フレーム分のクロマキー信号５２３に基づいて、ユーザが振るバット１０１（図１）の位置を示す画面マップを作成する。そして、画像認識回路５０８は、この処理の過程において、画面マップ上の現在処理中のブロック位置（後述する）にバット１０１が存在すると判定した場合には、前回のフレーム周期において２つのＹＳＯＢＪ信号用バッファのうちの１つに保持された１画面マップ分のＹＳＯＢＪ信号において、上記ブロック位置に対応するＹＳＯＢＪ信号の論理値が“１”であるか否か、即ち、バット１０１が存在すると判定された現在のブロック位置にボール１０５（図１）を示すオブジェクト画面データが存在するか否かを判定する。このようにして、画像認識回路５０８は、バット１０１とボール１０５との衝突の有無を検出する。また、画像認識回路５０８は、１画面分の画面マップの作成が終了する毎に画面マップ上のバット１０１の重心位置を計算し、計算結果をバス５２６を介してＤＲＡＭ５１０に記憶すると共に、衝突状態を検出した場合には、ＣＰＵ５０９への割込みフラグとして、衝突フラグをセットする。
【００５５】
ＣＰＵ５０９は、ＯＳ  ＲＯＭ５１１に記憶されたオペレーティングシステムに従って動作し、特には図示しないスロットに挿入されたアプリケーションカートリッジ５１３内のアプリケーションＲＯＭ５１４（＃１又は＃２の何れか）からＤＲＡＭ５１０上のプログラム領域にアプリケーションプログラムをロードすることにより、第１〜第４の実施例で説明している野球ゲームなどのテレビゲームを実行する。この場合に、ＣＰＵ５０９は、特には図示しないスタートスイッチ及びストップスイッチなどから入力されるキースキャン信号５２７を処理しながら、時間経過と共に、アプリケーションカートリッジ５１３内のアプリケーションＲＯＭ５１４からＣＧ画像１０４（図１）を構成するオブジェクト画面データ及びバックグランド画面データなどを順次読み出し、同期信号５１９に同期した垂直ブランキング期間内に、それらのデータをバス５２６からＶＤＰ５０６を介してＤＲＡＭ５０７などに転送する。
【００５６】
同時に、ＣＰＵ５０９は、時間経過と共に、ＤＲＡＭ５０７に転送した各オブジェクト画面データのＣＧ画像１０４（図１）上での表示位置を、ＶＤＰ５０６に対して順次指定する。
【００５７】
また、ＣＰＵ５０９は、画像認識回路５０８が衝突状態を検出したことを示す衝突フラグをセットしたタイミングで、衝突フラグ割込み処理を実行する。この割込み処理において、ＣＰＵ５０９は、ＤＲＡＭ５１０に記憶されている画像認識回路５０８が計算した画面マップ上のバット１０１の重心位置と、ＶＤＰ５０６内のオブジェクトコントロール回路８０３から取得した現在表示されているボール１０５（図１）を示すオブジェクトの重心位置との位置関係を判定する。そして、その判定結果に基づき、ＣＰＵ５０９は、必要な画像処理を実行する。
【００５８】
更に、ＣＰＵ５０９は、アプリケーションカートリッジ５１３内の音源回路５１５に必要なデータを順次転送することにより、音源回路５１５に楽音信号の生成を行わせる。また、ＣＰＵ５０９は、必要に応じて、本体内の音源回路５１６に対しても、楽音信号の生成を行わせる。音源回路５１５で生成された楽音信号は、ＣＰＵ５０９及び音源回路５１６を介して、アンプ５１７に送られ、ここで増幅された後、特には図示しないスピーカに、音声出力信号５２８として出力される。
【００５９】
加えて、ＣＰＵ５０９は、アプリケーションカートリッジ５１３が模造されたものでないか否かの検査処理も行う。
次に、上述した構成を有する実施例の具体的な動作につき、以下に順次説明する。
＜第１の実施例の具体的な動作＞
まず、第１の実施例の具体的な動作につき説明する。
【００６０】
図１０は、画像認識回路５０８が特には図示しないメモリに記憶されたプログラムを実行する動作として実現される、全体動作フローチャートである。
画像認識回路５０８は、ビデオ信号変換回路５０５からのクロマキー信号５２３に基づいて、ユーザが振るバット１０１（図１）の位置を示す画面マップを作成し、これに基づいて、ＶＤＰ５０６からＹＳＯＢＪ信号として供給される図１のボール１０５を示すオブジェクト画面データとバット１０１との衝突の有無を検出する。
【００６１】
ここで、図５のＣＣＤ５０１における１画面分の撮像単位であるフレームは、図２６に示されるように、水平方向５７６列×垂直方向１９２行からなる構成を有する。従って、ビデオ信号変換回路５０５から出力されるクロマキー信号５２３は、５７６×１９２画素分の論理値を示す信号となっている。そして、処理負荷を軽減するため、画像認識回路５０８は、図２６に示されるように、クロマキー信号５２３における水平方向６画素×垂直方向２画素からなる合計１２画素分の論理値を、１つの論理値に圧縮する処理を行う。この論理値が格納される単位をブロックと呼ぶ。この結果、図２６に示されるように、クロマキー信号５２３における５７６×１９２画素分の論理値が、水平方向９６列×垂直方向９６行分のブロックの論理値に圧縮されることになる。このような９６×９６ブロック分の論理値の集合によって、クロマキーに関する画面マップが定義される。
【００６２】
一方、ＹＳＯＢＪ信号及びＹＳＢＧ信号によって特定されるオブジェクト画面データ及びバックグランド画面データは、水平方向９６列×垂直方向９６行の解像度で表現されており、従って、ＶＤＰ５０６からこれらの画面データに基づいてデジタルＲＧＢ信号５２４が生成される際には、これらの画面データが表示装置１０３（図１）の表示解像度に合せて伸張される。
【００６３】
図１０において、まず、ステップ１００１で、画像認識回路５０８内の特には図示しないＲＡＭ（後述する図２７参照）の内容がイニシャライズされる。
次に、電源投入後、ステップ１００２で、初期画面マップが作成済みでないと判定された場合には、ステップ１００３で、初期画面マップ作成処理が実行される。
【００６４】
初期画面マップとは、図１のカメラ１０２によって撮像される、バット１０１を持ったユーザが存在しない情景についてのクロマキーに関する画面マップである。初期画面マップを作成する目的は、後述する処理画面マップとしてバット１０１に対応するクロマキーが検出されるときに、バット１０１と同じ色彩の対象物が背景に存在する場合にその背景がバット１０１の誤った位置として検出されてしまうことを防止するために、バット１０１と同じ色彩の背景対象物の位置を予め検出しておくことにある。後述するステップ１００５の処理画面マップ作成処理では、図１のカメラ１０２がバット１０１を持ったユーザが存在する情景を撮像した結果に基づいてフレーム周期毎に処理画面マップが作成されるが、第１の実施例においては、処理画面マップ上でクロマキーに関する部分として認識される位置が、同時に、初期画面マップ上でバット１０１と同じ色彩を有する背景対象物が存在する位置として認識されている場合には、その位置にはバット１０１は存在しないものとして処理されることになる。
【００６５】
ステップ１００３の初期画面マップ作成処理が実行される結果、画像認識回路５０８内の特には図示しないＲＡＭ上に、図２７に示されるデータフォーマットで、９６×９６ブロックのサイズを有する初期画面マップが作成される。なお、このＲＡＭは、１６ビットを１ワードとしてデータを記憶するため、１行分の論理値は６ワード（＝９６／１６）のデータとして記憶される。従って、ＲＡＭ上では、初期画面マップは、６×９６ワード分のデータ領域を占有する。
【００６６】
ステップ１００３の初期画面マップ作成処理の詳細な動作フローチャートを図１１に示す。
以下の処理では、初期画面マップを安定して取得するために、複数フレーム分（複数画面分）のクロマキー信号５２３について処理が繰り返し実行され、画面マップ上のブロック位置毎に各繰返し処理で得られる論理値の論理和（ＯＲ）が演算されることによって、ブロック位置毎の最終的な論理値が決定される。そのために、ステップ１１０１で処理の繰返し回数であるサンプリング回数が設定され、後述するステップ１１１４の判定がＹＥＳとなって１フレーム分の処理が終了する毎に、レジスタｎの値が設定回数に達したと判定されるまで、ステップ１１１６でレジスタｎの値が＋１ずつインクリメントされ、ステップ１１０２〜ステップ１１１４で示されるフレーム毎の処理が実行される。
【００６７】
ここで、特には図示しないが、前述したように、画像認識回路５０８は、それぞれ図２６（ａ）  に示されるサイズを有するクロマキー信号用バッファを２フレーム分（２画面分）有しており、同期信号５１９（図５）に同期して決定されるフレーム周期毎に、ビデオ信号変換回路５０５から入力される図２６（ａ）  に示される１フレーム分のクロマキー信号５２３を、上述の２つのクロマキー信号用バッファに交互に保持する。そして、図１１のステップ１１０２〜ステップ１１１４で示されるフレーム毎の処理は、前回のフレーム周期において２つのクロマキー信号用バッファのうちの１つに保持された１フレーム分のクロマキー信号５２３に対して実行される。このとき同時に、他方のクロマキー信号用バッファには、現在のフレーム周期に対応するクロマキー信号５２３が順次入力されている。そして、ステップ１１１４の判定がＮＯとなる毎に、処理対象となるクロマキー信号用バッファが切り替えられる。
【００６８】
なお、図２６（ａ）  に示されるサイズを有する１つのクロマキー信号用バッファは、各画素に対応してクロマキー信号５２３の“０”又は“１”の論理値を記憶する１ビットのデータを記憶できればよいから、１ビット×５７６×１９２＝１１０５９２ビット＝６９１２ワードの記憶容量を有すればよい。
【００６９】
次に、ステップ１１０２〜ステップ１１１４で示されるフレーム毎の処理の詳細について説明する。
始めに、ステップ１１０２で、生成される初期画面マップの水平方向の列位置を示すレジスタＸと垂直方向の行位置を示すレジスタＹの値が０にリセットされた後、ステップ１１１３でレジスタＸの値がクリアされると共にレジスタＹの値が＋１ずつインクリメントされながら、ステップ１１１４でレジスタＹの値が９６に達した（９５を越えた）と判定されるまで、ステップ１１０３〜ステップ１１１２→ステップ１１１３→ステップ１１１４→ステップ１１０３の処理が繰り返し実行される。このようにして、初期画面マップにおける９６行分の処理が実行される。
【００７０】
また、ステップ１１１１でレジスタＸの値が＋１ずつインクリメントされながら、ステップ１１１２でレジスタＸの値が９６に達した（９５を越えた）と判定されるまで、ステップ１１０３〜ステップ１１１２→ステップ１１０３の処理が繰り返し実行される。このようにして、初期画面マップにおける１行内の９６ブロック分の処理が実行される。
【００７１】
そして、レジスタＸとＹの現在値毎に実行されるステップ１１０３〜ステップ１１１０が、初期画面マップにおける１ブロック分の処理ということになる。以下の説明では、レジスタＸとＹのそれぞれの現在値を単にＸ、Ｙと記載し、現在のＸとＹの各値によって特定されるブロックを処理対象ブロックと呼ぶ。
【００７２】
ステップ１１０３においては、処理対象となっているクロマキー信号用バッファから、水平方向に列位置（６Ｘ＋１）〜（６Ｘ＋６）、垂直方向に行位置（２Ｙ＋１）及び（２Ｙ＋２）におけるクロマキー信号５２３の各論理値が読み出される。例えば、Ｘ＝０、Ｙ＝０なら、水平方向に列位置１〜６、垂直方向に行位置１及び２におけるデータ（図２６（ａ）  のブロック１）が読み出される。また、Ｘ＝１、Ｙ＝０なら、水平方向に列位置７〜１２、垂直方向に行位置１及び２におけるデータ（図２６（ａ）  のブロック２）が読み出される。更に、Ｘ＝０、Ｙ＝１ならば、水平方向に列位置１〜６、垂直方向に行位置３及び４におけるデータ（図２６（ａ）  のブロック９７）が読み出される。
【００７３】
ステップ１１０４では、ステップ１１０３で読み出された処理対象ブロック内の１２画素分のクロマキー信号５２３の論理値のうち、論理値“１”が６画素分以上あるか否かが判定される。
【００７４】
ステップ１１０４の判定がＹＥＳなら、ステップ１１０５で所定のレジスタに処理対象ブロックに対応する論理値として“１”がセットされ、ステップ１１０４の判定がＮＯなら、ステップ１１０６で上記レジスタに論理値として“０”がセットされる。
【００７５】
そして、ステップ１１０７で、現在の処理が、初期画面マップを作成するための前述した複数フレーム分の処理のうち最初のフレーム内の処理であると判定された場合は、ステップ１１１０において、ステップ１１０５又はステップ１１０６で所定のレジスタにセットされた処理対象ブロックの論理値が、ＲＡＭ（図２７）内の初期画面マップ領域における水平方向にＸ列目、垂直方向にＹ行目の処理対象ブロックに対応するアドレスに、そのまま書き込まれる。
【００７６】
一方、ステップ１１０７で、現在の処理が、上記複数フレーム分の処理のうち２つ目以降のフレーム内の処理であると判定された場合には、ＲＡＭ（図２７）内の初期画面マップ領域における水平方向にＸ列目、垂直方向にＹ行目の処理対象ブロックに対応するアドレスの論理値が読み出され、その論理値と、ステップ１１０５又はステップ１１０６で所定のレジスタにセットされた処理対象ブロックの論理値とで、論理和（ＯＲ）が演算され、上記所定のレジスタの内容がその演算結果に書き換えられる。その後、ステップ１１１０において、ＲＡＭ（図２７）内の初期画面マップ領域における水平方向にＸ列目、垂直方向にＹ行目の処理対象ブロックに対応するアドレスの内容が、上記レジスタにセットされた論理値に書き換えられる。
【００７７】
以上のステップ１１０３〜ステップ１１１０の処理が、前述したようにして、初期画面マップの９６×９６ブロック分について繰り返されて１フレーム分の初期画面マップが作成され、更にそのような初期画面マップが複数フレーム分作成され、各ブロック位置毎にフレーム間で論理和が演算されることにより、最終的に、ＲＡＭ（図２７）に１画面分の初期画面マップが得られ、図１０のステップ１００３の処理を終了する。
【００７８】
なお、ステップ１００３の初期画面マップ作成処理は、ステップ１００２で初期画面マップが作成済みでないと判定された場合に自動的に実行されるように構成されているが、例えばユーザが図１のカメラ１０２で撮像されない位置で特には図示しない所定のセットボタンを押したタイミングでステップ１００３の初期画面マップ作成処理が実行されるように構成してもよい。
【００７９】
次に、同期信号５１９（図５）によって決定されるフレーム周期に同期して、図１０のステップ１００４〜ステップ１０１５の処理が繰り返し実行される。ここでは主に、ユーザが振るバット１０１（図１）の位置を示す処理画面マップと後述するステップ１０１１で実行される重心計算処理に必要なデータを順次作成する処理画面マップ作成処理（ステップ１００５）、この処理によりバット１０１の存在が検出されたブロック位置にボール１０５（図１）を示すオブジェクト画面データが存在するか否かを判定する衝突座標検出処理（ステップ１００６）、処理画面マップ上のバット１０１の重心位置を計算する重心計算処理（ステップ１０１１）、及びバット１０１とボール１０５とが衝突したと判定された場合に、ＣＰＵ５０９への割込みフラグとして、衝突フラグをセットする処理（ステップ１０１３）が実行される。
【００８０】
この場合、特には図示しないが、前述したように、画像認識回路５０８は、それぞれ図２６（ａ）  に示されるサイズを有するクロマキー信号用バッファを２フレーム分（２画面分）有しており、同期信号５１９（図５）に同期して決定されるフレーム周期毎に、ビデオ信号変換回路５０５から入力される図２６（ａ）  に示される１フレーム分のクロマキー信号５２３を、２つのクロマキー信号用バッファに交互に保持する。また、特には図示しないが、前述したように、画像認識回路５０８は、それぞれ図２６（ｂ）  に示されるサイズを有するＹＳＯＢＪ信号用バッファを２画面マップ分有しており、同期信号５１９（図５）に同期して決定されるフレーム周期毎に、ＶＤＰ５０６内のＲＧＢ色差データ処理回路８０６から出力される１画面マップ分のＹＳＯＢＪ信号を２つのＹＳＯＢＪ信号用バッファに交互に保持する。そして、図１０のステップ１００４〜ステップ１０１５で示されるフレーム毎の処理は、前回のフレーム周期において２つのクロマキー信号用バッファのうちの１つに保持された１フレーム分のクロマキー信号５２３、及び同じく前回のフレーム周期において２つのＹＳＯＢＪ信号用バッファのうちの１つに保持された１画面マップ分のＹＳＯＢＪ信号に対して、実行される。このとき同時に、他方のクロマキー信号用バッファ及びＹＳＯＢＪ信号用バッファのそれぞれには、現在のフレーム周期に対応するクロマキー信号５２３及びＹＳＯＢＪ信号がそれぞれ順次入力されている。そして、ステップ１０１５の処理が終了する毎に、処理対象となるクロマキー信号用バッファ及びＹＳＯＢＪ信号用バッファが切り替えられる。
【００８１】
図１０において、ステップ１００５の処理画面マップ作成処理とステップ１００６の衝突座標検出処理は、ブロック位置（図２６参照）毎に実行される。
従って、図１１で説明した初期画面マップ作成処理の場合と同様に、まず、ステップ１００４で、生成される処理画面マップの水平方向の列位置を示すレジスタＸと垂直方向の行位置を示すレジスタＹの値が０にリセットされた後に、ステップ１００９でレジスタＸの値がクリアされると共にレジスタＹの値が＋１ずつインクリメントされながら、ステップ１０１０でレジスタＹの値が９６に達した（９５を越えた）と判定されるまで、ステップ１００５〜ステップ１００８→ステップ１００９→ステップ１０１０→ステップ１００５の処理が繰り返し実行される。このようにして処理画面マップにおける９６行分の処理が実行される。
【００８２】
また、ステップ１００７でレジスタＸの値が＋１ずつインクリメントされながら、ステップ１００８でレジスタＸの値が９６に達した（９５を越えた）と判定されるまで、ステップ１００５〜ステップ１００８→ステップ１００５の処理が繰り返し実行される。このようにして、処理画面マップにおける１行内の９６ブロック分の処理が実行される。
【００８３】
そして、レジスタＸとＹの現在値毎に実行されるステップ１００５の処理画面マップ作成処理とステップ１００６の衝突座標検出処理が、処理画面マップにおける１ブロック分の処理ということになる。
【００８４】
なお、ステップ１００４においては、後述するステップ１００５の処理画面マップ作成処理で使用される図２７のＲＡＭに記憶される上端座標と左端座標の値が９７に初期化され、同じく下端座標と右端座標の値が０に初期化され、また、同じく処理画面マップ作成処理で使用される重心計算処理用データＳ＿Ｍ、Ｓ＿ＭｘＸ、及びＳ＿ＭｙＹの値が０に初期化される。なお、これらのデータは、図２７のＲＡＭと同じＲＡＭ内の特には図示しないワーク領域に確保される。
【００８５】
以下の説明では、レジスタＸとＹのそれぞれの現在値を単にＸ、Ｙと記載し、現在のＸとＹの各値によって特定されるブロックを処理対象ブロックと呼ぶ。
ステップ１００５の処理画面マップ作成処理の詳細な動作フローチャートを図１２及び図１３に示す。ここでは、図２７に示されるＲＡＭに記憶される処理画面マップを作成する処理と、同じく図２７に示されるＲＡＭに記憶されるバット１０１の存在範囲を示す上端座標、下端座標、左端座標、及び右端座標を検出する処理、並びに、バット１０１の重心座標を求めるためのデータを計算する処理が実行される。
【００８６】
まず、ステップ１２０１においては、処理対象となっているクロマキー信号用バッファから、水平方向に列位置（６Ｘ＋１）〜（６Ｘ＋６）、垂直方向に行位置（２Ｙ＋１）及び（２Ｙ＋２）におけるクロマキー信号５２３の各論理値が読み出される。初期画面マップ作成処理の場合と同様に、例えば、Ｘ＝０、Ｙ＝１なら、水平方向に列位置１〜６、垂直方向に行位置３及び４におけるデータ（図２６（ａ）  のブロック９７）が読み出される。
【００８７】
ステップ１２０２では、ステップ１２０１で読み出された処理対象ブロック内の１２画素分のクロマキー信号５２３の論理値のうち、論理値“１”が６画素分以上あるか否かが判定される。
【００８８】
ステップ１２０２の判定がＹＥＳで、かつステップ１２０３で特には図示しないリジェクトスイッチがオフなら、ステップ１２０６で所定のレジスタに処理対象ブロックに対応する論理値として“１”がセットされ、ステップ１２０２の判定がＮＯなら、ステップ１２０７で上記レジスタに論理値として“０”がセットされる。
【００８９】
ここで、リジェクトスイッチは、ユーザによって操作される。処理画面マップ上でクロマキーに関する部分として認識される位置が、同時に、初期画面マップ上でバット１０１と同じ色彩を有する背景対象物が存在する位置として認識されている場合に、その位置にはバット１０１は存在しないものとして処理することをユーザが希望する場合には、ユーザはこのスイッチをオンする。
【００９０】
そして、ステップ１２０２の判定がＹＥＳ、即ち、処理対象ブロックがクロマキーに関する部分として認識される場合において、ステップ１２０３で特には図示しないリジェクトスイッチがオンされていると判定される場合は、ステップ１２０４で、ＲＡＭ（図２７）内の初期画面マップ領域から、水平方向にＸ列目、垂直方向にＹ行目の処理対象ブロックと同じブロック位置の論理値が読み出される。
【００９１】
続いて、ステップ１２０５では、その論理値が“１”であるか否かが判定される。
ステップ１２０５の判定がＹＥＳ、即ち、処理画面マップ上でクロマキーに関する部分として認識される処理対象ブロックの位置が、同時に、初期画面マップ上でバット１０１と同じ色彩を有する背景対象物が存在する位置として認識されている場合は、ステップ１２０７で前述の所定のレジスタに論理値として“０”がセットされることにより、そのブロック位置にはバット１０１は存在しないものとして処理される。
【００９２】
一方、ステップ１２０５の判定がＮＯ、即ち、処理画面マップ上でクロマキーに関する部分として認識される処理対象ブロック位置が、初期画面マップ上ではバット１０１と同じ色彩を有する背景対象物が存在する位置として認識されていない場合は、ステップ１２０６で前述した所定のレジスタに論理値として“１”がセットされることにより、そのブロック位置にはバット１０１は存在するものとして処理される。
【００９３】
ステップ１２０７の処理の後、即ち、処理画面マップ上でバット１０１が存在しないと認識された処理対象ブロックについては、後述する図１３のステップ１２１９が実行される。
【００９４】
一方、ステップ１２０６の処理の後、即ち、処理画面マップ上でバット１０１が存在すると認識された処理対象ブロックについては、更に図１３のステップ１２０８〜ステップ１２１８が実行される。ここでは、処理画面マップ上でのバット１０１の存在範囲を示す図２７のＲＡＭに記憶される上端座標、下端座標、左端座標、及び右端座標を更新する処理、並びに、バット１０１の重心座標を求めるためのデータを計算する処理が実行される。
【００９５】
即ち、まず、ステップ１２０８で、値（Ｙ＋１）が、ＲＡＭ（図２７）に記憶されている上端座標の値よりも小さいか否かが判定され、この判定がＹＥＳならば、ステップ１２０９で、上端座標の値が値（Ｙ＋１）に書き換えられる。
【００９６】
ステップ１２０９の後又はステップ１２０８の判定がＮＯの場合には、ステップ１２１０で、値（Ｙ＋１）が、ＲＡＭ（図２７）に記憶されている下端座標の値よりも大きいか否かが判定され、この判定がＹＥＳならば、ステップ１２１１で、下端座標の値が値（Ｙ＋１）に書き換えられる。
【００９７】
ステップ１２１１の後又はステップ１２１０の判定がＮＯの場合には、ステップ１２１２で、値（Ｘ＋１）が、ＲＡＭ（図２７）に記憶されている左端座標の値よりも小さいか否かが判定され、この判定がＹＥＳならば、ステップ１２１３で、左端座標の値が値（Ｘ＋１）に書き換えられる。
【００９８】
ステップ１２１３の後又はステップ１２１２の判定がＮＯの場合には、ステップ１２１４で、値（Ｘ＋１）が、ＲＡＭ（図２７）に記憶されている右端座標の値よりも大きいか否かが判定され、この判定がＹＥＳならば、ステップ１２１５で、右端座標の値が値（Ｘ＋１）に書き換えられる。
【００９９】
以上のステップ１２０８〜ステップ１２１５の処理により、処理画面マップ上で論理値“１”を有するブロックの範囲において、例えば図２８に示されるように、その範囲を示す上端座標、下端座標、左端座標、及び右端座標が図２７のＲＡＭに得られる。この値は、同時に、図５のＤＲＡＭ５１０に転送される。
【０１００】
ステップ１２１５の後又はステップ１２１４の判定がＮＯの場合には、ステップ１２１６で、データＳ＿Ｍの値が＋１だけインクリメントされると共に、ステップ１２１７で、データＳ＿ＭｘＸの値がＸだけインクリメントされ、同様にステップ１２１８で、データＳ＿ＭｙＹの値がＹだけインクリメントされる。これらのデータから重心座標を求める原理については後述する。
【０１０１】
ステップ１２１８の処理の後又は前述したステップ１２０７（図１２）の処理の後は、ステップ１２１９で、図２７に示されるＲＡＭ内の処理画面マップ領域における水平方向にＸ列目、垂直方向にＹ行目の処理対象ブロックに対応するアドレスの内容が、前述したステップ１２０６又はステップ１２０７において所定のレジスタにセットされた論理値に書き換えられる。
【０１０２】
以上の図１２及び図１３の動作フローチャートで示される図１０のステップ１００５の処理画面マップ作成処理が、ステップ１００５〜ステップ１０１０の繰返し処理の一部として実行されることにより、フレーム周期毎に図２７に示されるＲＡＭに１画面分の処理画面マップが作成され、同じく図２７に示されるＲＡＭにバット１０１の存在範囲を示す上端座標、下端座標、左端座標、及び右端座標が得られ、更に、図２７に示されるＲＡＭ上の特には図示しない領域にデータＳ＿Ｍ、Ｓ＿ＭｘＸ、及びＳ＿ＭｙＹが得られる。
【０１０３】
次に、図１０のステップ１００６の衝突検出処理の詳細な動作フローチャートを図１４に示す。
まず、ステップ１４０１で、ＲＡＭ（図２７）内の処理画面マップ領域から、水平方向にＸ列目、垂直方向にＹ行目の処理対象ブロックの論理値が読み出される。
【０１０４】
ステップ１４０２では、その論理値が“１”であるか否か、即ち、処理対象ブロックの位置に、バット１０１が存在するか否かが判定される。
ステップ１４０２の判定がＮＯの場合には、そのまま図１４の衝突検出処理を終了し、図１０の動作フローチャートに戻って次のブロック位置に対する処理が続行される。
【０１０５】
ステップ１４０２の判定がＹＥＳの場合には、ステップ１４０３で、処理対象となっているＹＳＯＢＪ信号用バッファから、水平方向にＸ列目、垂直方向にＹ行目の処理対象ブロックに対応するＹＳＯＢＪ信号（ＣＧデータ）の論理値が読み出される。
【０１０６】
ステップ１４０４では、読み出されたＹＳＯＢＪ信号の論理値が“１”であるか否か、即ち、処理対象ブロックにボール１０５（図１）を示すオブジェクト画面データが存在するか否かが判定される。
【０１０７】
ステップ１４０４の判定がＮＯならば、そのまま図１４の衝突検出処理を終了し、図１０の動作フローチャートに戻って次のブロック位置に対する処理が続行される。
【０１０８】
ステップ１４０４の判定がＹＥＳなら、ステップ１４０５で、所定の衝突レジスタの値が“０”であるか否か、即ち、今まで衝突が検出されておらず今回の衝突検出が初めてであるか否かが判定される。
【０１０９】
ステップ１４０５の判定がＹＥＳの場合には、ステップ１４０６とステップ１４０７で、図２７のＲＡＭ内に保持される最初の衝突座標のＸ座標とＹ座標がレジスタＸ及びＹの各値に更新される。続いて、ステップ１４０８で、衝突レジスタの値が、衝突が発生したことを示す値“１”にセットされる。その後、図１４の衝突検出処理を終了し、図１０の動作フローチャートに戻って次のブロック位置に対する処理が続行される。
【０１１０】
一方、ステップ１４０５の判定がＮＯの場合には、ステップ１４０９とステップ１４１０で、図２７のＲＡＭ内に保持される最後の衝突座標のＸ座標とＹ座標がレジスタＸ及びＹの各値に更新される。その後、図１４の衝突検出処理を終了し、図１０の動作フローチャートに戻って次のブロック位置に対する処理が続行される。
【０１１１】
以上の図１４の動作フローチャートで示される図１０のステップ１００６の衝突検出処理が、ステップ１００５〜ステップ１０１０の処理の繰返しに基づいて処理画面マップの全範囲に渡って実行されることにより、衝突の有無と衝突が発生した処理画面マップ上のブロック範囲が検出される。
【０１１２】
次に、図１０のステップ１０１１の重心計算処理は、１フレーム周期に１回、即ち、１画面分の処理画面マップの作成が終了しステップ１０１０の判定がＹＥＳとなる毎に実行される。この処理では、ＲＡＭ（図２７）に記憶された処理画面マップ上のバット１０１の重心位置が計算される。
【０１１３】
一般に、２次元座標上に存在する領域の重心のｘ座標ＸＧ及びｙ座標ＹＧは、次の数１式及び数２式によって計算することができる。
【０１１４】
【数１】
ＸＧ＝Σ（ｍｘｉ・ｘｉ  ）／Σｍｘｉ＝Σ（ｍｘｉ・ｘｉ  ）／Ｍ
【０１１５】
【数２】
ＹＧ＝Σ（ｍｙｊ・ｙｊ  ）／Σｍｙｊ＝Σ（ｍｙｊ・ｙｊ  ）／Ｍ
ここで、サフィックスｉとｊはそれぞれ列方向（ｘ方向）及び行方向（ｙ方向）の重心計算領域の各位置であり、ｘｉ  とｙｊ  はそれぞれ列方向位置ｉと行方向位置ｊにおけるｘ座標値とｙ座標値であり、ｍｘｉとｍｙｊはそれぞれ列方向位置ｉと行方向位置ｊにおける質量の総和である。また、Ｍは、２次元座標上に存在する領域の質量の総和である。
【０１１６】
ここで、ｘ座標値及びｙ座標値が前述したブロックを単位とする値である場合には、ｍｘｉ及びｍｙｊはそれぞれ列方向ブロック位置ｉ及び行方向ブロック位置ｊにおけるブロックの総数に等価である。そして、前述した図１０のステップ１００５に対応する図１２及び図１３の処理画面マップ作成処理において、数１式及び数２式における分母項である質量Ｍは、図１３のステップ１２１６において面積Ｓ＿Ｍとして計算され、数１式における項Σ（ｍｘｉ・ｘｉ  ）は、図１３のステップ１２１７の繰返しによってデータＳ＿ＭｘＸとして計算され、数２式における項Σ（ｍｙｊ・ｙｊ  ）は、図１３のステップ１２１８の繰返しによってデータＳ＿ＭｙＹとして計算されている。
【０１１７】
上述のデータＳ＿Ｍ、Ｓ＿ＭｘＸ、Ｓ＿ＭｙＹ、並びに数１式と数２式の計算式に基づく図１０のステップ１０１１の重心計算処理の更に詳細な動作フローチャートを図１５に示す。
【０１１８】
即ち、ステップ１５０１で、数１式及び数２式に対応する以下の数３式及び数４式によって、処理画面マップ上に存在するバット１０１の重心座標（ＸＧ、ＹＧ）が得られる。
【０１１９】
【数３】
ＸＧ＝Ｓ＿ＭｘＸ／Ｓ＿Ｍ
【０１２０】
【数４】
ＹＧ＝Ｓ＿ＭｙＹ／Ｓ＿Ｍ
例えば、図２８に示される例では、次式の計算が実行されることにより、重心座標（ＸＧ、ＹＧ）＝（３２．６、１６．１）が得られる。
【０１２１】
0003586880.tif 000002
以上の図１５の動作フローチャートで示される図１０のステップ１０１１の重心計算処理の後、図１０のステップ１０１２で、衝突レジスタの値が“１”になっているか否かが判定される。このレジスタの値は、前述したステップ１００６の衝突座標検出処理において、処理画面マップ上のバット１０１の存在を示す論理値が“１”であるブロックが１つでも、ボール１０５の存在を示すＹＳＯＢＪ信号と重なっている場合に、“１”にセットされる（図１４のステップ１４０８参照）。
【０１２２】
そして、ステップ１０１２の判定がＹＥＳの場合は、ステップ１０１３で、図５のＣＰＵ５０９への割込みフラグである衝突フラグが“１”にセットされる。この結果、ＣＰＵ５０９において後述する衝突フラグ割込み処理（図２０）が発生し、この割込み処理において、図１のバット１０１がボール１０５に当ったことに対応して表示装置１０３に表示されるＣＧ画像１０４を制御する処理が実行される。なお、画像認識回路５０８は、上述の衝突フラグのセット処理と共に、ステップ１０１１で計算した重心座標（ＸＧ、ＹＧ）を、図５のＤＲＡＭ５０７に転送する。また、画像認識回路５０８は、ステップ１００６の衝突座標検出処理によってＲＡＭ（図２６）に記憶した最初の衝突座標及び最後の衝突座標、並びに、ステップ１００５の処理画面マップ作成処理によって上述のＲＡＭに記憶した上端座標、下端座標、左端座標、及び右端座標を、必要に応じて、ＤＲＡＭ５０７に転送する。
【０１２３】
ステップ１０１３の処理の後は、ステップ１０１４で、衝突フラグが“０”に戻ったか否かが判定される。この衝突フラグの値は、ＣＰＵ５０９が実行する後述する衝突フラグ割込み処理が終了する時点で“０”に戻される。この結果、例えばホームラン画像が進行している複数フレーム周期の間は、図５の画像認識回路５０８は図１０の動作フローチャートの処理をステップ１０１４より先に進めないことになる。なお、衝突フラグ割込み処理が実行されている間にも、ステップ１００４〜ステップ１０１５の処理をフレーム周期に同期して進行させる構成にし衝突レジスタの値に応じてＣＰＵ５０９に更に別の割込みがかけられるようにしてもよい。
【０１２４】
衝突フラグの値が“０”に戻りステップ１０１４の判定がＹＥＳとなると、ステップ１０１５で衝突レジスタの値も“０”に戻される。
ステップ１０１５の処理の後又はステップ１０１２の判定がＮＯであった場合には、次のフレーム周期の開始時点に同期してステップ１００４の処理に戻る。この場合、前述したように、処理対象となるクロマキー信号用バッファ及びＹＳＯＢＪ信号用バッファが変更される。
【０１２５】
次に、図１６及び図１７は、図５のＣＰＵ５０９が実行するＣＰＵ処理の動作フローチャートである。
ＣＰＵ５０９は、基本的には、特には図示しないスタートスイッチ及びストップスイッチなどから入力されるキースキャン信号５２７を処理しながら、時間経過と共に、アプリケーションカートリッジ５１３内のアプリケーションＲＯＭ５１４からＣＧ画像１０４（図１）を構成するオブジェクト画面データ、オブジェクトテーブルデータ、及びバックグランド画面データを順次読み出し、同期信号５１９に同期した垂直ブランキング期間内に、それらのデータをバス５２６からＶＤＰ５０６に転送し、更に時間経過と共に、ＤＲＡＭ５０７に転送した各オブジェクト画面データのＣＧ画像１０４（図１）上での表示位置を、ＶＤＰ５０６に対して順次指定する。
【０１２６】
図１６において、まず、ステップ１６０１では、図５のＤＲＡＭ５０７の内容などがイニシャライズされる。
ステップ１６０２では、後述する各種割込み処理が許可される。
【０１２７】
ステップ１６０３では、特には図示しないスロットに挿入された図５のアプリケーションカートリッジ５１３内のアプリケーションＲＯＭ５１４（＃１又は＃２の何れか）から、図５のＤＲＡＭ５１０上のプログラム領域にアプリケーションプログラムがロードされる。以下、ＣＰＵ５０９は、このアプリケーションプログラムに従って、ステップ１６０４以降の動作を実行する。
【０１２８】
ステップ１６０４では、ＣＰＵ５０９内のＤＭＡＣ（ダイレクトメモリアクセスコントローラ）に、ＣＧ画像１０４（図１）を構成するバックグランド画面データのアプリケーションカートリッジ５１３内のアプリケーションＲＯＭ５１４上での読出し開始アドレスと読出しデータ数がセットされる。
【０１２９】
ステップ１６０５では、上記ＤＭＡＣに、ＣＧ画像１０４（図１）を構成する最初のオブジェクト画面データの上記アプリケーションＲＯＭ５１４上での読出し開始アドレスと読出しデータ数がセットされる。
【０１３０】
ステップ１６０６では、上記ＤＭＡＣに、オブジェクトテーブルデータの上記アプリケーションＲＯＭ５１４上での読出し開始アドレスと読出しデータ数がセットされる。このオブジェクトテーブルデータは、前述したように、ＤＲＡＭ５０７に記憶される各オブジェクト画面データとそれぞれに対応するＩＤ番号との対応テーブルを示すテーブルである。
【０１３１】
上記ステップ１６０４〜ステップ１６０６の処理の後、ステップ１６０７で、レジスタＡＣＫＦに“１”がセットされる。そして、ステップ１６０８で、レジスタＡＣＫＦの値が“０”に戻るまで待機状態となる。
【０１３２】
ここで、ＣＰＵ５０９は、同期信号５１９に基づいて決定される各フレーム周期内の垂直ブランキング期間が開始される時点毎に、ステップ１６０８の処理を中断して、図１８の動作フローチャートで示される垂直ブランキング割込み処理を実行する。
【０１３３】
そして、上述のＣＰＵ処理によってレジスタＡＣＫＦに“１”がセットされた場合は、この割込み処理が実行されるタイミングで、ステップ１８０１の判定がＹＥＳとなることにより、前述した図１６のステップ１６０４〜ステップ１６０６の処理によってＣＰＵ５０９内のＤＭＡＣに設定された各データに基づいて、アプリケーションカートリッジ５１３内のアプリケーションＲＯＭ５１４に記憶されている各データがＶＤＰ５０６に転送される。
【０１３４】
即ち、図１６のステップ１６０４〜ステップ１６０６の処理は電源オン直後に実行されるため、図１８のステップ１８０２の判定がＹＥＳとなる。
この結果、まず、ステップ１８０３で、ＤＭＡＣは、ステップ１６０４の処理により設定されたバックグランド画面データの読出し開始アドレスと読出しデータ数に基づいて、アプリケーションＲＯＭ５１４内のバックグランド画面データを、バス５２６を介してＶＤＰ５０６にＤＭＡ転送する。ＶＤＰ５０６は、このバックグランド画面データを、図８のＣＰＵインタフェース回路８０１からＤＲＡＭコントロール回路８０２を介して図５のＤＲＡＭ５０７に転送する。
【０１３５】
次に、ステップ１８０４で、ＤＭＡＣは、ステップ１６０５の処理により設定されたオブジェクト画面データの読出し開始アドレスと読出しデータ数に基づいて、アプリケーションＲＯＭ５１４内のオブジェクト画面データを、バス５２６を介してＶＤＰ５０６にＤＭＡ転送する。ＶＤＰ５０６は、このオブジェクト画面データも、図８のＣＰＵインタフェース回路８０１からＤＲＡＭコントロール回路８０２を介して図５のＤＲＡＭ５０７に転送する。
【０１３６】
更に、ステップ１８０５で、ＤＭＡＣは、ステップ１６０６の処理により設定されたオブジェクトテーブルデータの読出し開始アドレスと読出しデータ数に基づき、アプリケーションＲＯＭ５１４内のオブジェクトテーブルデータを、バス５２６を介してＶＤＰ５０６にＤＭＡ転送する。ＶＤＰ５０６は、このオブジェクトテーブルデータを、ＣＰＵインタフェース回路８０１からオブジェクトコントロール回路８０３を介してオブジェクトテーブルＲＡＭ８０４に転送する。
【０１３７】
その後、ステップ１８０６で、レジスタＡＣＫＦの値が“０”に戻され、図１８に示される垂直ブランキング割込み処理を終了する。
この結果、図１６のステップ１６０８の処理が再開され、この処理における判定がＹＥＳとなることにより、まず、ユーザが特には図示しないスタートスイッチを押しそれに対応するキースキャン信号５２７（図５）が入力されるまで、ステップ１６０９の判定がＮＯ→ステップ１６１２の判定がＮＯ→ステップ１６０９の判定がＮＯ・・・という処理ループが繰り返され、待機状態となる。なお、レジスタＳＴＦの内容は、図１６のステップ１６０１において“０”にイニシャライズされている。
【０１３８】
スタートスイッチが押されそれに対応するキースキャン信号５２７が入力されると、ステップ１６０９の判定がＹＥＳとなる。
この結果、まず、ステップ１６１０において、レジスタｔに時刻０がセットされる。このレジスタｔは、ユーザがスタートスイッチを押することによってゲームを開始させた時点からの経過時刻を示すレジスタであり、このレジスタｔの値は、バス５２６に接続されているクロック回路５１２（図５）から一定時間毎に入力される割込み要求に基づいて実行される、図１９のステップ１９０１として示されるタイマー割込み処理によって、＋１ずつインクリメントされる。
【０１３９】
次に、ステップ１６１１で、レジスタＳＴＦに“１”がセットされる。
この結果、ステップ１６１２の判定がＹＥＳとなり、これ以降、通常は、図１７のステップ１６１３〜ステップ１６１７→ステップ１６１９→ステップ１６０９（図１６）→ステップ１６１２→ステップ１６１３という処理ループが繰り返される。
【０１４０】
上述の処理ループにおいて、ステップ１６１４では、時間経過を示す現在のレジスタｔの値に基づいて、表示をすべきオブジェクト画面データに対応するオブジェクトテーブルデータに対して指定するＩＤ番号が演算され、ステップ１６１５では、現在のレジスタｔの値に基づいて、オブジェクト画面データの表示位置が演算される。これらのデータは、ＤＲＡＭ５０７上の所定のアドレスにセットされ、その読出し開始アドレスと読出しデータ数がＣＰＵ５０９内のＤＭＡＣにセットされる。なお、ステップ１６１４又はステップ１６１５では、後述する音源割込み処理（図２２参照）においてアプリケーションカートリッジ５１３内の音源回路５１５に転送される発音指示データも生成され、ＤＲＡＭ５０７などにセットされる。
【０１４１】
また、オブジェクト画面データを変更する必要がある場合には、ステップ１６１４で、ＣＰＵ５０９内のＤＭＡＣに、新たなオブジェクト画面データに対応するオブジェクトテーブルデータのアプリケーションＲＯＭ５１４上での読出し開始アドレスと読出しデータ数がセットされる。また、ステップ１６１５で、ＤＭＡＣに、新たなオブジェクト画面データのアプリケーションＲＯＭ５１４上での読出し開始アドレスと読出しデータ数がセットされる。
【０１４２】
ステップ１６１６では、レジスタＡＣＫＦに“１”がセットされる。
その後、前述の垂直ブランキング割込み処理が実行されてレジスタＡＣＫＦの値が“０”に戻されるまでは、通常、ステップ１６１７の判定がＮＯ→ステップ１６１９の判定がＮＯ→ステップ１６０９（図１６）の判定がＮＯ→ステップ１６１２の判定がＹＥＳ→ステップ１６１３（図１７）の判定がＮＯ→ステップ１６１７の判定がＮＯ・・・という処理ループが繰り返され、待機状態となる。
【０１４３】
ＣＰＵ５０９は、前述したように、垂直ブランキング期間が開始される時点毎に、上述の処理ループの処理を中断して、図１８の動作フローチャートで示される垂直ブランキング割込み処理を実行する。
【０１４４】
この結果、ステップ１８０１の判定がＹＥＳ→ステップ１８０２の判定がＮＯとなることにより、ステップ１８０４が実行される。
ステップ１８０４では、ＣＰＵ５０９内のＤＭＡＣは、ステップ１６１５の処理による設定に基づいて、オブジェクト画面データの表示位置を示すデータを、バス５２６を介してＶＤＰ５０６にＤＭＡ転送する。また、ステップ１８０５では、ＤＭＡＣは、ステップ１６１４の処理による設定に基づいて、表示を行うべきオブジェクト画面データのＩＤ番号を、バス５２６を介してＶＤＰ５０６にＤＭＡ転送する。この結果、ＶＤＰ５０６内のオブジェクトコントロール回路８０３は、ＣＰＵ５０９から指定されたＩＤ番号によってオブジェクトテーブルＲＡＭ８０４を参照することにより、そのＩＤ番号に対応するオブジェクト画面データをＤＲＡＭコントロール回路８０２を介してＤＲＡＭ５０７から読み出し、ＣＰＵ５０９から指定された表示位置の情報に基づいてラインバッファＲＡＭ８０８に展開した後、その内容をＲＧＢ色差データ処理回路８０６に出力する。
【０１４５】
新たなオブジェクト画面データ及びオブジェクトテーブルデータが転送される場合のステップ１８０４と１８０５の処理は、前述した図１６のステップ１６０４〜ステップ１６０６が実行された直後の場合と同様である。
【０１４６】
その後、ステップ１８０６で、レジスタＡＣＫＦの値が“０”に戻され、図１８に示される垂直ブランキング割込み処理を終了する。
この結果、ＣＰＵ処理における前述した処理ループが再開され、ステップ１６１３の判定がＹＥＳとなることにより、次の画面制御処理が実行される。
【０１４７】
上述の処理ループの実行過程で、ユーザが特には図示しないストップスイッチを押しそれに対応するキースキャン信号５２７（図５）が入力されると、ステップ１６１７の判定がＹＥＳとなる。この結果、ステップ１６１８で、レジスタＳＴＦに“０”がセットされる。従って、この時点以降は、ユーザが特には図示しないスタートスイッチを再び押しそれに対応するキースキャン信号５２７が入力されるまで、ステップ１６０９（図１６）の判定がＮＯ→ステップ１６１２の判定がＮＯ→ステップ１６０９の判定がＮＯ・・・という処理ループが繰り返されて、待機状態となる。なお、レジスタｔの値はクリアされないため、次にスタートスイッチが押されると、ストップスイッチが押された時点からゲームの進行が再開される。
【０１４８】
また、上述の処理ループの実行過程で、レジスタｔの値が予め設定された終了時刻Ｔになると、ステップ１６１９の判定がＹＥＳとなる。この結果、ステップ１６２０で、レジスタｔの値が０にリセットされる。従って、この時点以降は、ゲームが再び最初から繰り返されることになる。
【０１４９】
更に、上述の処理ループの実行過程で、ユーザが特には図示しないスタートスイッチを再度押しそれに対応するキースキャン信号５２７が入力されると、ステップ１６０９の判定がＹＥＳとなる。この結果、ステップ１６１０でレジスタｔの値が強制的に０にリセットされる。従って、この時点以降も、ゲームが再び最初から繰り返されることになる。
【０１５０】
一方、上述の処理ループの実行過程で、画像認識回路５０８によって、前述したように衝突フラグが１にセットされると（図１０のステップ１０１３参照）、ＣＰＵ５０９は、上述の処理ループの処理を中断して、図２０の動作フローチャートで示される衝突フラグ割込み処理を実行する。
【０１５１】
まず、ステップ２００１では、レジスタｔによって示されている現在の時刻ｔが、予め設定された所定の衝突判定期間Ｔ１  〜Ｔ２  の範囲に入っているか否かが判定される。このような衝突判定期間を設けた理由は、本来、図１のバット１０１がボール１０５に当るべき時間以外の時間で、バット１０１に対応するクロマキーがボール１０５に対応するオブジェクト画面データと重なってしまった場合に、誤った処理が実行されてしまうことを防止するためである。
【０１５２】
ステップ２００２においては、画像認識回路５０８からＤＲＡＭ５１０に転送されているバット１０１を示すクロマキーの重心座標が、ＣＰＵ５０９内に取り込まれる。
【０１５３】
ステップ２００３においては、上述のバット１０１を示すクロマキーの重心座標と、ＶＤＰ５０６内のオブジェクトコントロール回路８０３から取得した現在表示されているボール１０５を示すオブジェクト画面データの重心座標との位置関係が判定される。
【０１５４】
この結果、図２に示されるように、２つの重心座標のずれが所定の許容範囲内にある場合には、図１の表示装置１０３上のＣＧ画像１０４を例えばホームランに対応する画像に変化させるべく、ステップ２００４で、第１画像処理が実行される。なお、処理画面マップ上におけるバット１０１を示すクロマキーの重心座標と、ボール１０５を示すオブジェクト画面データの重心座標は、ユーザがバット１０１をちょうどストライクゾーンに対応する位置に振り下ろしたときに一致するように、予め図１のカメラ１０２の方向が調整されているものとする。
【０１５５】
また、図３に示されるように、ボール１０５を示すオブジェクト画面データの重心座標がバット１０１を示すクロマキーの重心座標の下方にずれている場合には、図１の表示装置１０３上のＣＧ画像１０４を例えばゴロに対応する画像に変化させるべく、ステップ２００５で、第２画像処理が実行される。
【０１５６】
更に、図４に示されるように、ボール１０５を示すオブジェクト画面データの重心座標がバット１０１を示すクロマキーの重心座標の上方にずれている場合には、図１の表示装置１０３上のＣＧ画像１０４を例えばフライに対応する画像に変化させるべく、ステップ２００６で、第３画像処理が実行される。
【０１５７】
図２１は、ステップ２００４〜ステップ２００６に示される第１〜第３画像処理を一般的に表した第ｎ画像処理の動作フローチャートである。
ステップ２１０１では、現在の処理が第１、第２、又は第３の何れの画像処理かによって、また、時間経過を示す現在のレジスタｔの値に基づいて、オブジェクト画面データの表示位置が演算される。また、ステップ２１０２では、現在の処理が第１、第２、又は第３の何れの画像処理かによって、また、現在のレジスタｔの値に基づいて、表示をすべきオブジェクト画面データに対応するオブジェクトテーブルデータに対して指定するＩＤ番号が演算される。なお、ステップ２１０１又はステップ２１０２では、後述する音源割込み処理（図２２参照）においてアプリケーションカートリッジ５１３内の音源回路５１５に転送される発音指示データも生成され、ＤＲＡＭ５０７などにセットされる。
【０１５８】
ステップ２１０３では、レジスタＡＣＫＦに“１”がセットされる。
その後、前述した垂直ブランキング割込み処理が実行されてレジスタＡＣＫＦの値が“０”に戻されるまでは、通常は、ステップ２１０４の判定がＮＯ→ステップ２１０５の判定がＮＯ→ステップ２１０６の判定がＮＯ→ステップ２１０４の判定がＮＯ・・・という処理ループが繰り返され、待機状態となる。
【０１５９】
ＣＰＵ５０９は、前述したように、垂直ブランキング期間が開始される時点毎に、上述の処理ループの処理を中断して、図１８の動作フローチャートで示される垂直ブランキング割込み処理を実行する。
【０１６０】
この結果、ステップ１８０１の判定がＹＥＳ→ステップ１８０２の判定がＮＯとなることにより、ステップ１８０４が実行される。
ステップ１８０４では、ＣＰＵ５０９内のＤＭＡＣは、ステップ２１０１の処理による設定に基づいて、オブジェクト画面データの表示位置を示すデータを、バス５２６を介してＶＤＰ５０６にＤＭＡ転送する。また、ステップ１８０５では、ＤＭＡＣは、ステップ２１０２の処理による設定に基づいて、表示を行うべきオブジェクト画面データのＩＤ番号を、バス５２６を介してＶＤＰ５０６にＤＭＡ転送する。この結果、ＶＤＰ５０６内のオブジェクトコントロール回路８０３は、ＣＰＵ５０９から指定されたＩＤ番号によってオブジェクトテーブルＲＡＭ８０４を参照することにより、そのＩＤ番号に対応するオブジェクト画面データをＤＲＡＭコントロール回路８０２を介してＤＲＡＭ５０７から読み出し、ＣＰＵ５０９から指定された表示位置の情報に基づいてラインバッファＲＡＭ８０８に展開した後、その内容をＲＧＢ色差データ処理回路８０６に出力する。
【０１６１】
その後、ステップ１８０６で、レジスタＡＣＫＦの値が“０”に戻され、図１８に示される垂直ブランキング割込み処理を終了する。
この結果、第ｎ画像処理における前述した処理ループが再開され、ステップ２１０６の判定がＹＥＳとなることにより、第ｎ画像処理の次のレジスタｔの値に対応する画面制御処理が実行される。
【０１６２】
上述の処理ループの実行過程で、ユーザが特には図示しないストップスイッチを押しそれに対応するキースキャン信号５２７（図５）が入力されると、ステップ２１０５の判定がＹＥＳとなる。この結果、ステップ２１０８で、レジスタＳＴＦに“０”がセットされ、図２１の第ｎ画像処理を終了する。この結果、後述する図２０のステップ２００７を実行した後に衝突フラグ割込み処理も終了し、ＣＰＵ５０９処理のループに戻る。従って、この時点以降は、ユーザが特には図示しないスタートスイッチを再び押しそれに対応するキースキャン信号５２７が入力されるまで、ステップ１６０９（図１６）の判定がＮＯ→ステップ１６１２の判定がＮＯ→ステップ１６０９の判定がＮＯ・・・という処理ループが繰り返されて、待機状態となる。
【０１６３】
また、図２１の第ｎ画像処理の実行過程で、レジスタｔの値が予め設定された第ｎ画像処理の終了時刻ＥＮＤになると、ステップ２１０４の判定がＹＥＳとなる。この結果、ステップ２１０７で、レジスタｔの値が０にリセットされ、図２１の第ｎ画像処理を終了し、更に、後述する図２０のステップ２００７を実行した後に衝突フラグ割込み処理も終了し、ＣＰＵ５０９処理のループに戻る。従って、この時点以降は、ゲームが再び最初から繰り返されることになる。
【０１６４】
なお、ステップ２１０７で、レジスタｔの値を０にリセットせず、強制的に予め定められた所定の値にセットすることにより、表示装置１０３上のＣＧ画像１０４の表示を、次の場面に移行させることも可能である。
【０１６５】
図２１の第ｎ画像処理を終了した後に実行される図２０の衝突フラグ割込み処理におけるステップ２００７においては、衝突フラグが“０”に戻される。この処理は、前述したように、画像認識回路５０８が実行する図１０に示される動作フローチャートにおいて、ステップ１０１４より先に処理を進ませるための処理である。
【０１６６】
次に、図２２は、ＣＰＵ５０９が実行する音源割込み処理の動作フローチャートである。この割込み処理は、図５のアプリケーションカートリッジ５１３内の音源回路５１５が、後述する音源処理（図２５）を実行する過程において、ＣＰＵ５０９への割込みフラグとして、音源割込み要求フラグをセットした時点で実行される。
【０１６７】
まず、ステップ２２０１では、監視タイマーがリセットされる。監視タイマーは、模造されたアプリケーションカートリッジ５１３の使用を阻止するために使用される。
【０１６８】
上述の監視タイマーの値は、バス５２６に接続されているクロック回路５１２（図５）から一定時間毎に入力される割込み要求に基づいて実行される図２３の動作フローチャートで示される監視タイマーカウント処理のステップ２３０１において、順次インクリメントされる。そして、ステップ２３０２で、この監視タイマーの値が、オーバーフローしたか否かが判定されている。
【０１６９】
ここで、アプリケーションカートリッジ５１３が正規のメーカによって製造されたものである場合には、アプリケーションカートリッジ５１３は、後述する音源処理（図２５）を実行する過程において、ＣＰＵ５０９への割込みフラグである音源割込み要求フラグをセット及びリセットする動作を順次実行する。これに対して、ＣＰＵ５０９は、音源割込み要求フラグがセットされる毎に、図２２の音源割込み処理のステップ２２０１を実行することにより、監視タイマーは適当な時間間隔でリセットされることになる。
【０１７０】
従って、アプリケーションカートリッジ５１３が正規のメーカによって製造されたものである場合には、図２３の監視タイマーカウント処理のステップ２３０２の判定は常にＮＯとなる。
【０１７１】
一方、アプリケーションカートリッジ５１３が模造されたものである場合は、コスト的な理由などからＣＰＵ５０９への割込みフラグである音源割込み要求フラグをセット及びリセットする動作が装備されていない場合がほとんどとなるため、音源回路５１５がＣＰＵ５０９に対して適度に短い時間間隔で音源割込み要求を発生することがなくなり、この結果、監視タイマーがリセットされなくなるか或いは適度に短い時間間隔でリセットされることがなくなり、やがて、監視タイマーがオーバーフローすることにより図２３の監視タイマーカウント処理のステップ２３０２の判定がＹＥＳとなる。
【０１７２】
この場合には、ステップ２３０３で、ＣＰＵ５０９への再度の割込みフラグとして、オーバーフローフラグＯＶＦが１にセットされる。
この結果、ＣＰＵ５０９は、再度の割込み処理として、図２４の動作フローチャートで示されるオーバーフロー割込み処理を実行し、ステップ２４０１で、ＣＰＵ５０９自身の動作を停止（ホールト）させる。
【０１７３】
以上の監視タイマーを使って制御により、模造されたアプリケーションカートリッジ５１３の使用が阻止される。
次に、図２２の音源割込み処理において、ステップ２２０２では、予めＤＲＡＭ５０７上に作成されている発音指示データが、バス５２６を介して、アプリケーションカートリッジ５１３内の音源回路５１５に転送される。この発音指示データは、ＣＰＵ５０９が前述した図１７のステップ１６１４又はステップ１６１５、或いは、図２１のステップ２１０１又はステップ２１０２などのＣＧ画像１０４（図１）の制御処理を実行するのに合せて生成され、ＤＲＡＭ５０７に記憶されている。
【０１７４】
なお、アプリケーションカートリッジ５１３内の音源回路５１５に対してのみではなく、本体側に装備されている音源回路５１６に対しても同様の制御が実行されてもよい。
【０１７５】
以上説明した図１６〜図２４の動作フローチャートで示される各処理が、ＣＰＵ５０９が実行する処理である。
最後に、図２５は、アプリケーションカートリッジ５１３内の音源回路５１５が実行する音源処理の動作フローチャートである。
【０１７６】
アプリケーションカートリッジ５１３が特には図示しないホルダーに装着されると、図２５の動作フローチャートの実行が開始され、まず、ステップ２５０１において、音源回路５１５内部のレジスタやワークＲＡＭの内容などがイニシャライズされる。
【０１７７】
その後、ステップ２５０２〜ステップ２５０７の各処理が、繰り返し実行される。
まず、音源回路５１５は、１発音単位分の楽音信号を生成する毎（例えば数秒分の楽音波形データの読出しを完了する毎）に、ステップ２５０２で、図５のＣＰＵ５０９への割込みフラグである音源割込み要求フラグをセットする。これに対しＣＰＵ５０９は、前述した図２２の音源割込み処理を実行することにより、次の発音単位に対する発音指示データを音源回路５１５に出力する。
【０１７８】
音源回路５１５は、ステップ２５０３において、入力されるデータに変化が起こるまで待機状態とする。入力されるデータに変化が起こると、更にステップ２５０４で、入力されるデータが安定するまで待機状態となる。
【０１７９】
入力されるデータが安定すると、ステップ２５０５で音源割込み要求フラグを０にリセットした後、ステップ２５０６で、入力される発音指示データを解釈する。
【０１８０】
そして、ステップ２５０７で、そのデータに対応する楽音信号を生成する。
１発音単位分の楽音信号の生成を完了すると、音源回路５１５は、再びステップ２５０２を実行し、図５のＣＰＵ５０９への割込みフラグである音源割込み要求フラグをセットする。
【０１８１】
以上のようにして音源回路５１５で生成された楽音信号は、ＣＰＵ５０９及び音源回路５１６を介して、アンプ５１７に送られ、ここで増幅された後、特には図示しないスピーカに、音声出力信号５２８として出力される。
＜第２の実施例の具体的な動作＞
次に、本発明の第２の実施例の具体的な動作について説明する。
【０１８２】
第２の実施例では、ゲームをスタートさせる前に、ユーザが、処理画面マップ上のどのブロック位置がクロマキーに関する部分として認識されているかを確認することを可能にする。前述したように、バット１０１がそれと同じ色彩を有する背景対象物と重なった場合は、そこにはバット１０１は存在しないものとして処理される（図１２のステップ１２０３〜ステップ１２０５参照）。この結果、バット１０１の位置の検出精度が下がり、ゲームの進行に影響を与えるおそれがある。従って、第２の実施例の機能により、ユーザは、バット１０１と同じ色彩を有する背景対象物が存在する位置にバット１０１を持っていかないように注意することができる。
【０１８３】
第２の実施例が前述した第１の実施例と異なる部分は、図５のＣＰＵ５０９が実行するＣＰＵ処理の部分である。図２９〜図３２に、第２の実施例におけるＣＰＵ処理の動作フローチャートを示す。この動作フローチャートは、第１の実施例における図１６に示されるＣＰＵ処理に対応する。
【０１８４】
まず、図２９において、ステップ２９０１〜ステップ２９０３の機能は、図１６のステップ１６０１〜ステップ１６０３の機能と同じである。
次に、ステップ２９０４において、図５のＶＤＰ５０６に対して画面クリア命令が実行される。これによって、図１の表示装置１０３の表示画面がクリアされる。また、ステップ２９０４では、処理画面マップの水平方向の列位置を示すレジスタＸと垂直方向の行位置を示すレジスタＹの値が０にリセットされる。
【０１８５】
続いて、ステップ２９１１でレジスタＸの値がクリアされると共にレジスタＹの値が＋１ずつインクリメントされながら、ステップ２９１２でレジスタＹの値が９６に達した（９５を越えた）と判定されるまで、ステップ２９０５〜ステップ２９０７→ステップ２９１１→ステップ２９１２→ステップ２９０５の処理が繰り返し実行される。このようにして、処理画面マップにおける９６行分の処理が実行される。
【０１８６】
また、ステップ２９１０でレジスタＸの値が＋１ずつインクリメントされながら、ステップ２９０９でレジスタＸの値が９６に達した（９５を越えた）と判定されるまで、ステップ２９０５〜ステップ２９０９→ステップ２９１０の処理が繰り返し実行される。このようにして、処理画面マップにおける１行内の９６ブロック分の処理が実行される。
【０１８７】
そして、レジスタＸとＹの現在値毎に実行されるステップ２９０５〜ステップ２９０８が、処理画面マップにおける１ブロック分の処理ということになる。以下の説明では、レジスタＸとＹのそれぞれの現在値を単にＸ、Ｙと記載し、現在のＸとＹの各値によって特定されるブロックを処理対象ブロックと呼ぶ。
【０１８８】
ステップ２９０５では、図５の画像認識回路５０８内の図２６に示されるＲＡＭの処理画面マップ領域からバス５２６を介して、水平方向に列位置Ｘ、垂直方向に行位置Ｙの処理対象ブロックの位置の論理値が読み出されて、その論理値が“１”であるか否かが判定される。
【０１８９】
ここで、図５の画像認識回路５０８が実行する、前述した図１２の動作フローチャートで示される図１０のステップ１００５の処理画面マップ作成処理において、ユーザが特には図示しないスタートスイッチを押すまでは、特には図示しないリジェクトスイッチは無効にされている。この結果、スタートスイッチが押される前に画像認識回路５０８において実行されている処理画面マップ作成処理では、ステップ１２０３の判定は必ずＮＯとなるため、クロマキー信号５２３に基づいてクロマキーに関する部分として認識されるブロック位置の論理値は、必ず“１”となる。
【０１９０】
なお、リジェクトスイッチは有効にしておき、ステップ２９０５では、図５の画像認識回路５０８内の図２６に示されるＲＡＭの初期画面マップ領域及び処理画面マップ領域の両方の領域からバス５２６を介して、水平方向に列位置Ｘ、垂直方向に行位置Ｙの処理対象ブロックの位置の論理値が読み出されて、その何れかの論理値が“１”であるか否かが判定されるように構成されてもよい。
【０１９１】
図２９の説明に戻って、ステップ２９０５の判定がＮＯならば、ステップ２９０９に進み、次の処理対象ブロックに対する処理に移る。
これに対して、ステップ２９０５の判定がＹＥＳなら、現在の処理対象ブロックの位置には、バット１０１又はバット１０１と同じ色彩を有する背景対象物が存在することになる。
【０１９２】
この場合には、ステップ２９０６で、Ｘ及びＹの値がそれぞれ６倍及び２倍されることにより、処理対象ブロックの位置から元のフレーム上での座標ｘ、ｙが算出され、その算出結果が図５のＤＲＡＭ５０７に記憶される（前述した図２５に関する説明参照）。
【０１９３】
ステップ２９０７では、ＣＰＵ５０９内のＤＭＡＣに、ＤＲＡＭ５０７に記憶された上記表示位置（ｘ、ｙ）を示すデータの読出し開始アドレスと読出しデータ数を示すオブジェクトテーブルデータの転送指示がセットされる。
【０１９４】
また、ステップ２９０８では、クロマキー表示を行わせるための所定のオブジェクト画面データ（例えば矩形オブジェクトなど）の、アプリケーションカートリッジ５１３内のアプリケーションＲＯＭ５１４上での読出し開始アドレスと読出しデータ数がセットされる。
【０１９５】
その後、ステップ２９０９に進み次の処理対象ブロックの位置に対する処理に移る。
以上の動作が９６×９６ブロックのサイズを有する処理画面マップの１画面分に対して実行される結果、ステップ２９１２の判定がＹＥＳとなった時点で、ＣＰＵ５０９内のＤＭＡＣには、バット１０１又はバット１０１と同じ色彩を有する背景対象物が存在するフレーム内位置に所定のオブジェクト画面データを表示させるためのデータ群がセットされたことになる。
【０１９６】
その後、ステップ２９１３で、レジスタＡＣＫＦに“１”がセットされる。そして、ステップ２９１４で、レジスタＡＣＫＦの値が“０”に戻るまで待機状態となる。
【０１９７】
前述したように、ＣＰＵ５０９は、同期信号５１９に基づいて決定される各フレーム周期内の垂直ブランキング期間が開始される時点毎に、ステップ２９１４の処理を中断して、図１８の動作フローチャートで示される垂直ブランキング割込み処理を実行する。これによって、上述したようにしてＤＭＡＣにセットされた、バット１０１又はバット１０１と同じ色彩を有する背景対象物が存在するフレーム内位置に所定のオブジェクト画面データを表示させるためのデータ群が、ＶＤＰ５０６に転送される。そして、ＶＤＰ５０６は、指定されたフレーム内位置に指定されたオブジェクト画面データが配置されたＣＧ画像１０４（図１）を表示する。
【０１９８】
転送が終了すると、レジスタＡＣＫＦの値が“０”に戻され（図１８のステップ１８０６参照）、図１８に示される垂直ブランキング割込み処理を終了するため、再開された図２９のステップ２９１４の判定がＹＥＳとなる。
【０１９９】
従って、ユーザが特には図示しないスタートスイッチを押しそれに対応するキースキャン信号５２７（図５）が入力されるまでの間、ステップ２９１５（図３０）の判定がＮＯとなり、図２９のステップ２９０４〜ステップ２９１４→図３０のステップ２９１５・・・という処理ループが繰り返され、スタート待機状態となる。そして、この間は、上述したように、フレーム周期毎に順次変化する処理画面マップの内容に従って、バット１０１又はバット１０１と同じ色彩を有する背景対象物が存在するフレーム内位置に所定のオブジェクト画面データを表示させるためのデータ群が順次ＶＤＰ５０６に転送され、ＶＤＰ５０６において、指定されたフレーム内位置に指定されたオブジェクト画面データが配置されたＣＧ画像１０４が順次表示される。
【０２００】
以上の動作の結果、図１のカメラ１０２が、例えば図３２（ａ）  に示されるようは情景を撮像している場合、ＣＰＵ５０９からＶＤＰ５０６に対し、図３２（ｂ）  に示されるようなＣＧ画像１０４の表示指示が行われ、ユーザは、図３２（ｃ）  に示されるような、ＣＧ画像１０４とカメラ１０２によって撮像された実画像とが合成された画像を、表示装置１０３上で確認することができる。
【０２０１】
なお、ＣＧ画像１０４とカメラ１０２により撮像された実画像の合成処理は、図５の画像認識回路５０８が特には図示しない制御処理に基づいてビデオ信号変換回路５０５内の選択回路７０７（図７）にスーパーインポーズ信号５２５を出力することにより実現される。
【０２０２】
この場合、バット１０１に対応する部分はユーザの動きに合せて常に動き続けているが、バット１０１と同じ色彩を有する背景対象物の部分は静止している。このようにして、ユーザは、バット１０１と、バット１０１と同じ色彩を有する背景対象物とを確認することができる。
【０２０３】
スタートスイッチが押されそれに対応するキースキャン信号５２７が入力されると、図３０のステップ２９１５の判定がＹＥＳとなる。
その後の図３０のステップ２９１６〜ステップ２９２０、ステップ２９２１〜ステップ２９２３、図３１のステップ２９２４〜ステップ２９３１の機能は、それぞれ、第１の実施例における図１６のステップ１６０４〜ステップ１６０８、ステップ１６１０〜ステップ１６１２、図１７のステップ１６１３〜ステップ１６２０の機能と同じである。
＜第３の実施例の具体的な動作＞
続いて、本発明の第３の実施例の具体的な動作について説明する。
【０２０４】
第３の実施例では、第１の実施例で説明した初期画面マップの作成時に、ユーザが持っているバット１０１が、バット１０１と同じ色彩の背景対象物として初期画面マップに記憶されてしまうことを防止することができる。
【０２０５】
第３の実施例が前述した第１の実施例と異なる部分は、図５の画像認識回路５０８が実行する図１０のステップ１００３の初期画面マップ作成処理である。図３３に、第３の実施例における図１０のステップ１００３の初期画面マップ作成処理の詳細な動作フローチャートを示す。この動作フローチャートは、第１の実施例における図１１に示される動作フローチャートに対応しており、図３３と図１１とで、同じステップ番号が付加されたステップは、同じ機能を有する。
【０２０６】
第３の実施例における図３３の動作フローチャートが第１の実施例における図１１の動作フローチャートと異なる点は、図１１のステップ１１０９が図３３のステップ１１０９′に変更されている点のみである。
【０２０７】
前述したように、第１の実施例に関する図１１の動作フローチャートで示される初期画面マップ作成処理では、初期画面マップを安定して取得するために、複数フレーム分（複数画面分）のクロマキー信号５２３（図５）について処理が繰り返し実行され、ステップ１１０９で、画面マップ上のブロック位置毎に各繰返し処理で得られる論理値の論理和（ＯＲ）が演算された。この結果、上記複数のフレームにおいて撮像された情景内に存在するクロマキーは、全てバット１０１と同じ色彩の背景対象物として初期画面マップに記憶される。
【０２０８】
これに対して、第３の実施例に関する図３３の動作フローチャートで示される初期画面マップ作成処理では、複数フレーム分（複数画面分）のクロマキー信号５２３（図５）について処理が繰り返し実行され、ステップ１１０９′で、画面マップ上のブロック位置毎に各繰返し処理で得られる論理値の論理積（ＡＮＤ）が演算される。
【０２０９】
この結果、上記複数のフレーム期間でユーザが持っているバット１０１が撮像されてしまっても、そのバット１０１に対応するクロマキーは、フレーム間で常にゆれ動いているため、ブロック位置毎にフレーム間で論理積を演算した結果は“０”となる。このようにして、ユーザが持っているバット１０１が、バット１０１と同じ色彩の背景対象物として初期画面マップに記憶されてしまうことを防止することができるのである。
＜第４の実施例の具体的な動作＞
最後に、本発明の第４の実施例の具体的な動作について説明する。
【０２１０】
第４の実施例では、ゲームをスタートさせる場合に、撮像される情景内から、バット１０１と同じ色彩を有する背景対象物が完全になくなったことが検知された場合に初めて、ゲームをスタートできるように動作する。前述したように、バット１０１がそれと同じ色彩を有する背景対象物と重なった場合は、それがバット１０１であるか背景対象物であるか区別がつかなくなる。この結果、バット１０１の位置の検出精度が下がり、ゲームの進行に影響を与えるおそれがある。従って、第４の実施例の機能により、ユーザは、バット１０１と同じ色彩を有する背景対象物が撮像される情景内から完全になくなったことを確認した後にゲームを開始することができる。
【０２１１】
第４の実施例が前述した第１の実施例と異なる部分は、図５の画像認識回路５０８が実行する全体動作フローチャートの処理、及びＣＰＵ５０９が実行するＣＰＵ処理の部分である。
【０２１２】
まず、図３４及び図３５に、第４の実施例において画像認識回路５０８が実行する全体動作フローチャートを示す。この動作フローチャートは、第１の実施例における図１０に示される動作フローチャートに対応する。
【０２１３】
図３４において、まず、ステップ３４０１とステップ３４０２の機能は、図１０のステップ１００１、ステップ１００２の機能と同じである。
次に、ステップ３４０３では、初期画面マップが作成される毎に、レジスタＩＦに“０”がセットされ、この値は図５のバス５２６を介してＣＰＵ５０９に常に通知されている。
【０２１４】
また、ステップ３４０５の初期画面マップ作成処理は、図１０のステップ１００３の処理と同じであり、前述した図１１の動作フローチャートによって示される。
【０２１５】
次に、ステップ３４０６において、ステップ３４０５で生成された初期画面マップの水平方向の列位置を示すレジスタＸと垂直方向の行位置を示すレジスタＹの値が０にリセットされた後、ステップ３４１０でレジスタＸの値がクリアされると共にレジスタＹの値が＋１ずつインクリメントされながら、ステップ３４１１でレジスタＹの値が９６に達した（９５を越えた）と判定されるまで、ステップ３４０７〜ステップ３４０９→ステップ３４１０→ステップ３４１１→ステップ３４０７の処理が繰り返し実行される。このようにして、初期画面マップにおける９６行分の処理が実行される。
【０２１６】
また、ステップ３４０８でレジスタＸの値が＋１ずつインクリメントされながら、ステップ３４０９でレジスタＸの値が９６に達した（９５を越えた）と判定されるまで、ステップ３４０７〜ステップ３４０９→ステップ３４０７、・・・の処理が繰り返し実行される。このようにして、初期画面マップにおける１行内の９６ブロック分の処理が実行される。
【０２１７】
そして、ステップ３４０７において、初期画面マップのレジスタＸとＹの現在値によって特定されるブロック位置毎に、そのブロック位置の論理値が図２６のＲＡＭ内の初期画面マップ領域から読み出され、その論理値が“１”であるか否かが判定される。
【０２１８】
ステップ３４０７の判定がＮＯならば、ステップ３４０８に進んで次のブロック位置に対する処理に移る。
そして、ステップ３４０７の判定がＹＥＳとなったら、再びステップ３４０５の初期画面マップ作成処理に戻る。
【０２１９】
以上のようにして、第４の実施例では、生成された初期画面マップ内に１ブロックでも論理値が“１”である、即ち、１ブロックでもバット１０１と同じ色彩を有する背景対象物が存在すると判定された場合には、ユーザが、バット１０１と同じ色彩を有する背景対象物を撮像される情景内から除去しない限り、又は、撮像範囲をバット１０１と同じ色彩を有する背景対象物が存在しない範囲に移動させない限り、初期画面マップ作成処理が延々と繰り返される。
【０２２０】
撮像される情景内にバット１０１と同じ色彩を有する背景対象物が存在しなくなると、初期画面マップの全ブロックの論理値が“０”となるため、全ブロックについてステップ３４０７の判定がＮＯとなり、やがてステップ３４１１の判定がＹＥＳとなる。
【０２２１】
この結果、図３５のステップ３４１２で、レジスタＩＦの値が“０”にリセットされ、この値が図５のバス５２６を介してＣＰＵ５０９に通知される。
その後のステップ３４１３〜ステップ３４２４の処理は、第１の実施例における図１０のステップ１００４〜ステップ１０１５の処理と同じである。
【０２２２】
なお、第４の実施例では、最終的に得られる初期画面マップの全ブロックの論理値は“０”である。従って、図３５のステップ３４１４の処理画面マップ作成処理に対応する前述した図１２の動作フローチャートにおいて、処理画面マップのブロック位置毎に、その論理値を初期画面マップの対応するブロック位置の論理値と比較する必要はない。従って、ステップ１２０２の判定がＹＥＳとなった場合には、ステップ１２０３〜ステップ１２０５の処理を実行する必要はなく、すぐにステップ１２０６が実行されるように動作する。
【０２２３】
図５の画像認識回路５０８の以上説明した動作に対して、図５のＣＰＵ５０９は、図３６〜図３８に示される動作フローチャートの処理を実行する。この動作フローチャートの機能は、基本的には前述した第２の実施例に関する図２９〜図３１の動作フローチャートの機能と同じである。
【０２２４】
即ち、図３６〜図３８と図２９〜図３１とで、同じステップ番号が付加されたステップは、同じ機能を有する。具体的には、第４の実施例では、第２の実施例の場合と同様に、ゲームをスタートさせる前に、ユーザが、処理画面マップ上のどのブロック位置がクロマキーに関する部分として認識されているかを確認することができる。但し、第４の実施例では、図３４及び図３５の動作フローチャートとして説明したように、図５の画像認識回路５０８において作成される初期画面マップ上の全ブロックの論理値が“０”になった後でないと、図３５のステップ３４１４の処理画面マップ作成処理は実行されない。このため、ゲームをスタートさせる前にユーザが処理画面マップ上で確認するのは、背景対象物ではなくて、ユーザが手に持っているバット１０１の存在するブロック位置ということになる。
【０２２５】
第４の実施例における図３６〜図３８の動作フローチャートが第２の実施例における図２９〜図３１の動作フローチャートと異なる点は、図３０のステップ２９１５が図３７のステップ２９１５′に変更されている点のみである。
【０２２６】
即ち、第２の実施例では、ユーザが特には図示しないスタートスイッチを押せば、ステップ２９１５の判定がＹＥＳとなって、ゲームがスタートした。これに対して、第４の実施例では、図５の画像認識回路５０８からバス５２６を介してＣＰＵ５０９に通知されるレジスタＩＦの値が“０”になるまで、ゲームはスタートしない。
【０２２７】
このレジスタＩＦの値は、撮像される情景からバット１０１と同じ色彩を有する背景対象物が除去されずに初期画面マップ作成処理が繰り返されている間は、図３４のステップ３４０３で“１”にセットされ続けている。そして、撮像される情景からバット１０１と同じ色彩を有する背景対象物が除去され、初期画面マップ上の全てのブロックの論理値が“０”となった時点において、図３５のステップ３４１２において“０”にリセットされる。
【０２２８】
従って、第４の実施例では、撮像される情景からバット１０１と同じ色彩を有する背景対象物が除去された時点で初めて、ゲームのスタートが可能になるのである。
＜他の実施例＞
以上説明した実施例では、ＣＰＵ５０９は、画像認識回路５０８からＤＲＡＭ５１０に転送されてきた処理画面マップ（図２６参照）上のバット１０１の重心位置と、ＶＤＰ５０６内のオブジェクトコントロール回路８０３から取得した現在表示されているボール１０５（図１）を示すオブジェクトの重心位置との位置関係のみに基づいて、図１の表示装置１０３に表示されるＣＧ画像１０４を制御している。しかし、本発明はこれに限られるものではなく、画像認識回路５０８が、図１０のステップ１００６の衝突座標検出処理によってＲＡＭ（図２６）に記憶した最初の衝突座標及び最後の衝突座標、並びに、ステップ１００５の処理画面マップ作成処理によって上述のＲＡＭに記憶したバット１０１の存在範囲を示す上端座標、下端座標、左端座標、及び右端座標を、ＤＲＡＭ５０７に転送するように構成し、これらの各種位置データに基づいて図１の表示装置１０３に表示されるＣＧ画像１０４を制御するように構成されてもよい。
【０２３１】
【発明の効果】
本発明によれば、第１の状態において所定色の画像領域と同じ所定色が検知されなくなってから、第１の状態を解除して第２の状態を開始し、撮像画面内から所定色の画像領域の抽出を行うようにしているので、撮像すべき対象が安定した状態に移行してから、すなわち、バットなどの目的物と同じ所定色を有する背景対象物が撮像範囲内からなくなってから、バットなどの目的物のみを示す所定色の画像領域を安定に抽出できる。
【０２３２】
また、バットを振るユーザなどの現実の情景を撮像して得られる画面から抽出された、バットなどの所定色の画像領域の位置と、オブジェクト画面データの表示画面上での位置との位置関係を判断し、その判断内容に基づき、次に表示されるべき画面に対応する信号が生成されるようにすることも可能であり、そのようにすれば、ユーザは、あたかも実際のプレーをするようにバットを振る動作などを行うことにより、ＣＧ画像などによって表示されるテレビゲームに参加することなどが可能となる。この場合特に、撮像された画面からバットなどの特定の画像領域を抽出する際、クロマキーなどによる所定色の画像領域として抽出することによって、ユーザの動作を正確に把握することが可能となる。
【０２３３】
なお、本発明によれば、ユーザの動作に反応して画像制御を行うテレビゲームだけでなく、現実の様々な情景を撮像した結果に基づいて様々な画像制御を行う装置を実現することが可能となる。
【図面の簡単な説明】
【図１】実施例の動作の外観図（第１〜第４の実施例）である。
【図２】実施例の動作原理図（その１）（第１〜第４の実施例）である。
【図３】実施例の動作原理図（その２）（第１〜第４の実施例）である。
【図４】実施例の動作原理図（その３）（第１〜第４の実施例）である。
【図５】本発明の実施例の全体構成図（第１〜第４の実施例）である。
【図６】ビデオ信号入出力回路の構成図（第１〜第４の実施例）である。
【図７】ビデオ信号変換回路の構成図（第１〜第４の実施例）である。
【図８】ＶＤＰの構成図（第１〜第４の実施例）である。
【図９】クロック回路の説明図（第１〜第４の実施例）である。
【図１０】画像認識回路の全体動作フローチャート（第１、第２、第３の実施例）である。
【図１１】初期画面マップ作成処理の動作フローチャート（第１、第２、第４の実施例）である。
【図１２】処理画面マップ作成処理の動作フローチャート（その１）（第１〜第４の実施例）である。
【図１３】処理画面マップ作成処理の動作フローチャート（その２）（第１〜第４の実施例）である。
【図１４】衝突検出処理の動作フローチャート（第１〜第４の実施例）である。
【図１５】重心計算処理の動作フローチャート（第１〜第４の実施例）である。
【図１６】ＣＰＵ処理の動作フローチャート（その１）（第１、第３の実施例）である。
【図１７】ＣＰＵ処理の動作フローチャート（その２）（第１、第３の実施例）である。
【図１８】垂直ブランキング割込み処理の動作フローチャート（第１〜第４の実施例）である。
【図１９】タイマー割込み処理の動作フローチャート（第１〜第４の実施例）である。
【図２０】衝突フラグ割込み処理の動作フローチャート（第１〜第４の実施例）である。
【図２１】第ｎ画像処理の動作フローチャート（第１〜第４の実施例）である。
【図２２】音源割込み処理の動作フローチャート（第１〜第４の実施例）である。
【図２３】監視タイマーカウント処理の動作フローチャート（第１〜第４の実施例）である。
【図２４】オーバーフロー割込み処理の動作フローチャート（第１〜第４の実施例）である。
【図２５】音源処理の動作フローチャート（第１〜第４の実施例）である。
【図２６】フレームの画素構成と画面マップとの関係図（第１〜第４の実施例）である。
【図２７】画像認識回路のＲＡＭマップを示した図（第１〜第４の実施例）である。
【図２８】上・下・左・右端座標の検出処理の説明図（第１〜第４の実施例）である。
【図２９】ＣＰＵ処理の動作フローチャート（その１）（第２の実施例）である。
【図３０】ＣＰＵ処理の動作フローチャート（その２）（第２の実施例）である。
【図３１】ＣＰＵ処理の動作フローチャート（その３）（第２の実施例）である。
【図３２】第２の実施例の説明図である。
【図３３】初期画面マップ作成処理の動作フローチャート（第３の実施例）である。
【図３４】画像認識回路の全体動作フローチャート（その１）（第４の実施例）である。
【図３５】画像認識回路の全体動作フローチャート（その２）（第４の実施例）である。
【図３６】ＣＰＵ処理の動作フローチャート（その１）（第４の実施例）である。
【図３７】ＣＰＵ処理の動作フローチャート（その２）（第４の実施例）である。
【図３８】ＣＰＵ処理の動作フローチャート（その３）（第４の実施例）である。
【符号の説明】
１０１      バット
１０２      カメラ
１０３      表示装置
１０４      ＣＧ画像
１０５      ボール
５０１      ＣＣＤ
５０２      クロックドライバー
５０３      ビデオ信号入出力回路
５０４      発振器（ＯＳＣ）
５０５      ビデオ信号変換回路
５０６      ＶＤＰ
５０７      ＤＲＡＭ
５０８      画像認識回路
５０９      ＣＰＵ
５１０      ＤＲＡＭ
５１１      ＯＳ  ＲＯＭ
５１２      クロック回路
５１３      アプリケーションカートリッジ
５１４      アプリケーションＲＯＭ
５１５、５１６      音源回路
５１７      アンプ
５１８      ＣＣＤ出力信号
５１９      同期信号
５２０      デジタルコンポジットビデオ入力信号
５２１      デジタルコンポジットビデオ出力信号
５２２      アナログコンポジットビデオ出力信号
５２３      クロマキー信号
５２４      デジタルＲＧＢ信号
５２５      スーパーインポーズ信号
５２６      バス
５２７      キースキャン信号
５２８      音声出力信号５２８
【図１】
0003586880.tif 000003
【図２】
0003586880.tif 000004
【図３】
0003586880.tif 000005
【図４】
0003586880.tif 000006
【図５】
0003586880.tif 000007
【図６】
0003586880.tif 000008
【図７】
0003586880.tif 000009
【図８】
0003586880.tif 000010
【図９】
0003586880.tif 000011
【図１０】
0003586880.tif 000012
【図１１】
0003586880.tif 000013
【図１２】
0003586880.tif 000014
【図１３】
0003586880.tif 000015
【図１４】
0003586880.tif 000016
【図１５】
0003586880.tif 000017
【図１６】
0003586880.tif 000018
【図１７】
0003586880.tif 000019
【図１８】
0003586880.tif 000020
【図１９】
0003586880.tif 000021
【図２０】
0003586880.tif 000022
【図２１】
0003586880.tif 000023
【図２２】
0003586880.tif 000024
【図２３】
0003586880.tif 000025
【図２４】
0003586880.tif 000026
【図２５】
0003586880.tif 000027
【図２６】
0003586880.tif 000028
【図２７】
0003586880.tif 000029
【図２８】
0003586880.tif 000030
【図２９】
0003586880.tif 000031
【図３０】
0003586880.tif 000032
【図３１】
0003586880.tif 000033
【図３２】
0003586880.tif 000034
【図３３】
0003586880.tif 000035
【図３４】
0003586880.tif 000036
【図３５】
0003586880.tif 000037
【図３６】
0003586880.tif 000038
【図３７】
0003586880.tif 000039
【図３８】
0003586880.tif 000040