以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。また、消費カロリーの単位「Cal」=単位「kcal」である。
(実施の形態1)
図1は、本発明の実施の形態1によるマットシステムの全体構成を示す図である。図1に示すように、このマットシステムは、アダプタ1、カートリッジ3、マットユニット7、及びテレビジョンモニタ5を備える。アダプタ1には、カートリッジ3が装着される。また、アダプタ1は、AVケーブル9により、テレビジョンモニタ5に接続される。
マットユニット7は、マット2及び回路ボックス4により構成される。回路ボックス4は、マット2の一方端部に取り付けられる。回路ボックス4の表面には、電源スイッチ8が設けられ、一方端部には、赤外線のみを透過する赤外線フィルタ6が取り付けられる。赤外線フィルタ6の裏側には、赤外発光ダイオード210及び212(後述)が配置される。一方、マット2の表面には、4つの踏み領域ST1,ST2,ST3及びST4が形成される。マット2の内部には、踏み領域ST1,ST2,ST3及びST4に対応して、フットスイッチSW1,SW2,SW3及びSW4が設けられる。踏み領域ST1,ST2,ST3及びST4が踏まれると、対応するフットスイッチSW1,SW2,SW3及びSW4がオンになる。
図2は、図1のアダプタ1及びカートリッジ3の斜視図である。図3は、アダプタ1の後方側からの斜視図である。
図2に示すように、アダプタ1は、上面、下面、左右の側面、前面、及び背面を有する平たい直方体形状を有する。アダプタ1の前面左側には、電源スイッチ45、リセットスイッチ43、及び、電源ランプ41、が設けられ、前面右側には、赤外線フィルタ33が設けられる。この赤外線フィルタ33は、赤外線以外の光をカットして、赤外線だけを透過させるフィルタであり、この赤外線フィルタ33の裏側には、赤外線センサ(後述のIR受信回路71を構成)が配置されている。また、アダプタ1の上面の前縁近傍には、方向キー37a〜37dが設けられる。さらに、方向キー37aの左側には、キャンセルキー39が設けられ、方向キー37dの右側には、決定キー35が設けられる。
図3に示すように、アダプタ1の背面には、AVジャック83、電源ジャック85、ビデオジャック81V、Lチャンネルオーディオジャック81L、及び、Rチャンネルオーディオジャック81R、が設けられる。なお、ビデオジャック81V、Lチャンネルオーディオジャック81L、及び、Rチャンネルオーディオジャック81R、を包括して表現するときは、AVジャック81と表記する。AVジャック83は、外部出力端子であり、AVケーブル9を介して、テレビジョンモニタ5の外部入力端子に接続される。一方、AVジャック81は、様々な外部機器(例えば、DVD(digital versatile disc)プレーヤ)の出力端子に接続することができる入力端子である。
アダプタ1の上面中央には開口が形成されており、その中にはアダプタ1の上面とほぼ面一となるように天板31が配置されている。アダプタ1の内部には、天板31を上方向に付勢するとともに、天板31の上面が上記した高さとなるように天板31を支持する昇降機構が設けられている。この昇降機構により、天板31は、開口部内を昇降自在に設けられている。この天板31にカートリッジ3を置いて、押下げ、さらに、カートリッジ3前面側にスライドさせて、コネクタ32にカートリッジ3を装着する(図1参照)。このカートリッジ3には、後述の高速プロセッサ91及びメモリ93等が内蔵されている。また、当然、昇降機構によって天板31の下方向への移動量は規制され、天板31上のカートリッジ3を下方向に押下げた場合、カートリッジ3は所定位置で止まる。
図2に戻って、カートリッジ3は、平たい直方体状のものである。カートリッジ3の本体正面には、後述の端子t1〜t24を含む接合部57が設けられ、アダプタ1のコネクタ32に接続される。
図4は、アダプタ1の内部構成を示すブロック図である。図4に示すように、このアダプタ1は、コネクタ32、拡張コネクタ63、拡張コネクタ周辺回路65、リセットスイッチ43、水晶発振回路67、キーブロック69、赤外線信号受信回路(IR受信回路)71、オーディオアンプ73、内部電源電圧発生回路75、AC/DCコンバータ等からなる電源回路79、電源スイッチ45、スイッチングレギュレータ77、電源ジャック85、AVジャック83、ビデオジャック81V、Lチャンネルオーディオジャック81L、及びRチャンネルオーディオジャック81Rを含む。コネクタ32は、24本の端子T1〜T24を含み、接地されたシールド部材61で覆われている。コネクタ32の端子T1,T2,T22,T24は接地される。
図示しない電源ケーブルから供給される交流電圧は、電源ジャック85を介して、電源回路79に与えられる。電源回路79は、与えられた交流電圧を、直流電圧に変換し、これを電源電圧Vcc0として、ラインw20に出力する。電源スイッチ45は、オンの場合、ラインw20とラインw54とを接続して、スイッチングレギュレータ77に電源電圧Vcc0を与えるとともに、ラインw9からのビデオ信号VD及びラインw12,w13からのオーディオ信号AL2,AR2をそれぞれ、ラインw14,w15,w16に出力して、AVジャック83に与える。従って、これらのビデオ信号VD及びオーディオ信号AL2,AR2は、AVケーブル9を介して、テレビジョンモニタ5に与えられ、テレビジョンモニタ5は、ビデオ信号VDに応じた映像を映し出し、また、オーディオ信号AL2,AR2に応じた音声をスピーカ(図示せず)から出力する。
一方、電源スイッチ45は、オフの場合、ラインw17,w18,w19をそれぞれ、ラインw14,w15,w16に接続する。これにより、ビデオジャック81Vから入力されたビデオ信号、オーディオジャック81Lから入力されたLチャンネルオーディオ信号、及び、オーディオジャック81Rから入力されたRチャンネルオーディオ信号、がAVジャック83に与えられる。従って、ジャック81V,81L,81Rからのビデオ信号及びオーディオ信号は、AVジャック83から、AVケーブル9を介して、テレビジョンモニタ5に与えられる。このように、電源スイッチ45がオフの場合は、外部機器からジャック81V,81L,81Rに入力されたビデオ信号及びオーディオ信号を、テレビジョンモニタ5に出力できる。
スイッチングレギュレータ77は、電源スイッチ45がオンの場合、電源回路79よりラインw54を介して電源電圧Vcc0を受け、ラインw50とw22との上にそれぞれ接地電位GNDと電源電圧Vcc1とを発生する。一方、スイッチングレギュレータ77は、電源スイッチ45がオフの場合は、電源電圧Vcc0の供給を受けないので、電源電圧Vcc1を発生しない。
内部電源電圧発生回路75は、スイッチングレギュレータ77から与えられた接地電位GND及び電源電圧Vcc1に基づいてラインw23,w24及びw25上にそれぞれ電源電圧Vcc2、Vcc3及びVcc4を発生する。ラインw22は、コネクタ32の端子T7,T8に接続され、ラインw23は、コネクタ32の端子T11,T12接続され、ラインw24は、コネクタ32の端子T15,T16に接続され、ラインw25は、コネクタ32の端子T18,T19に接続される。Vcc0>Vcc1>Vcc2>Vcc3>Vcc4とする。なお、電源スイッチ45がオフの場合は、電源電圧Vcc1は発生しないため、電源電圧Vcc1,Vcc2,Vcc3及びVcc4が、コネクタ32を介して、カートリッジ3に供給されることはない。
オーディオアンプ73は、端子T21に接続されたラインw11からのRチャンネルオーディオ信号AR1及び端子T20に接続されたラインw10からのLチャンネルオーディオ信号AL1を増幅して、増幅後のRチャンネルオーディオ信号AR2及びLチャンネルオーディオ信号AL2をそれぞれ、ラインw13及びw12に出力する。ビデオ信号VDを電源スイッチ45に入力するラインw9は、コネクタ32の端子T23に接続される。
ラインw9、w12及びw13を円筒形のフェライト87で覆うことにより、これらのラインから電磁波が外部に放射されることを防止する。
上記赤外線センサを含むIR(infrared ray)受信回路71は、受信したデジタル変調された赤外線信号を、デジタル復調して、ラインw8に出力する。ラインw8は、コネクタ32の端子T17に接続される。
キーブロック69は、キャンセルキー39、方向キー37a〜37d、及び決定キー35、並びに、図示しないシフトレジスタを含む。このシフトレジスタは、各キー39,37a〜37d,35及び後述の端子TE7からパラレルに入力される信号をシリアル信号に変換して、ラインw3に出力する。このラインw3は、コネクタ32の端子T6に接続される。また、キーブロック69には、端子T10に接続されるラインw5から、クロックが入力され、端子T9に接続されるラインw4から、制御信号が入力される。
水晶発振回路67は、一定周波数(例えば、3.579545MHz)のクロックを発振して、ラインw2に供給する。ラインw2は、コネクタ32の端子T3に接続される。
リセットスイッチ43は、システムをリセットするためのリセット信号をラインw1に出力する。ラインw1は、コネクタ32の端子T4に接続される。
拡張コネクタ63は第1の端子〜第9の端子(これらを以後TE1〜TE9と呼ぶ。)を有している。端子TE2,TE4及びTE6は、拡張コネクタ周辺回路65を介して、それぞれ、コネクタ32の端子T13,T14及びT5に接続される。従って、端子TE2、TE4及びTE6を介して、拡張コネクタ63に接続された外部機器に信号の入出力を行なうことができる。端子TE9及びTE8には、それぞれ、ラインw4及びw5が接続される。従って、拡張コネクタ63に接続された外部機器に対して、端子TE8を介して、キーブロック69へのクロックと同じクロックを供給でき、また、端子TE9を介して、キーブロック69への制御信号と同じ制御信号を供給できる。
端子TE3及びTE5には、拡張コネクタ周辺回路65を介して、それぞれ、電源電圧Vcc1及びVcc2が与えられる。従って、拡張コネクタ63に接続された外部機器に対して、端子TE3及びTE5を通じて電源電圧Vcc1及びVcc2を供給できる。端子TE1は接地される。端子TE7は、拡張コネクタ周辺回路65を介して、キーブロック69に含まれる上述のシフトレジスタの所定入力端子に接続される。
図5は、カートリッジ3の内部構成を示すブロック図である。図5に示すように、カートリッジ3は、高速プロセッサ91、メモリ93、EEPROM(electrically erasable programmable read only memory)308、RTC(real time clock)310、端子t1〜t24、アドレスバス95、データバス97、及び振幅設定回路99を含む。振幅設定回路99は、抵抗101及び103を含む。
高速プロセッサ91は、リセット信号を入力するリセット入力/RESET、クロックSCLK2を入力するクロック入力XT、データの入出力のための入出力ポート(I/Oポート)IO0〜IOn(nは自然数。例えば、n=23)、アナログ信号を入力するためのアナログ入力ポートAIN0〜AINk(kは自然数。例えば、k=5)、オーディオ信号AL1,AR1を出力するためのオーディオ出力AL,AR、ビデオ信号VDを出力するためのビデオ出力VO、制御信号(例えば、チップイネーブル信号、アウトプットイネーブル信号、ライトイネーブル信号等)を出力するための制御信号出力ポート、データバス、及び、アドレスバス、を含む。メモリ93は、アドレスバス、データバス、及び、制御信号(例えば、チップイネーブル信号、アウトプットイネーブル信号、ライトイネーブル信号等)を入力するための制御信号入力ポートを含む。メモリ93は、例えば、ROM(read only memory)やフラッシュメモリ等の任意のメモリを使用できる。
高速プロセッサ91の制御信号出力ポートは、メモリ93の制御信号入力ポートに接続される。高速プロセッサ91のアドレスバス及びメモリ93のアドレスバスは、アドレスバス95に接続される。高速プロセッサ91のデータバス及びメモリ93のデータバスは、データバス97に接続される。ここで、高速プロセッサ91の制御信号出力ポートは、例えば、アウトプットイネーブル信号を出力するOE出力ポート、チップイネーブル信号を出力するCE出力ポート、ライトイネーブル信号を出力するWE出力ポート、等を含む。また、メモリ93の制御信号入力ポートは、例えば、高速プロセッサ91のOE出力ポートに接続されるOE入力ポート、高速プロセッサ91のCE出力ポートに接続されるCE入力ポート、高速プロセッサ91のWE出力ポートに接続されるWE入力ポート、等を含む。
メモリ93は、チップイネーブル信号が入力されたときに、自分がアクセス先として選択されたと認識し、これとほぼ同時に入力されたアドレス信号及びアウトプットイネーブル信号に応答して、データ信号を出力する。アドレス信号は、アドレスバス95を介してメモリ93に入力され、データ信号は、データバス97を介して高速プロセッサ91に入力される。また、メモリ93は、チップイネーブル信号が入力されたときに、自分がアクセス先として選択されたと認識し、これとほぼ同時に入力されたアドレス信号及びライトイネーブル信号に応答して、データ信号を取込み、書き込みを行なう。アドレス信号は、アドレスバス95を介してメモリ93に入力され、データ信号は、高速プロセッサ91からデータバス97を介してメモリ93に入力される。
EEPROM308は、高速プロセッサ91の所定のいくつかのI/Oポート(例えば、IO22及びIO23)に接続され、高速プロセッサ91から、I/OポートIO22を介してクロック信号が与えられると共に、I/OポートIO23を介してデータの読み書きやコマンドの送信が行われる。RTC310は、水晶発信器(図示せず)に基づいて計時を行い、時刻情報を生成して、高速プロセッサ91に与える。RTC310は、高速プロセッサ91の所定のいくつかのI/Oポート(例えば、IO19及びIO20)に接続され、IOポートIO19を介して高速プロセッサ91からクロック信号が与えられると共に、IOポートIO20を介して高速プロセッサ91からコマンドが与えられ、IOポートIO20を介して高速プロセッサ91へ上記時刻情報を与える。
端子t1〜t24は、カートリッジ3がアダプタ1に装着されたとき、アダプタ1のコネクタ32の端子T1〜T24に一対一に接続される。端子t1,t2,t22,t24は、接地される。端子t3は、振幅設定回路99に接続される。つまり、振幅設定回路99の抵抗101の一方端は端子t3に接続され、他方端は、高速プロセッサ91のクロック入力XT及び抵抗103の一方端に接続される。抵抗103の他方端は接地される。このように、振幅設定回路99は、抵抗分圧回路である。
アダプタ1の水晶発振回路67が発振したクロックSCLK1は、端子t3を介して、振幅設定回路99に入力され、クロックSCLK1より振幅が小さいクロックSCLK2が生成されて、クロック入力XTに供給される。つまり、クロックSCLK2の振幅は、抵抗101と抵抗103との比で定まる値に設定される。
端子t4は、高速プロセッサ91のリセット入力/RESETに接続される。端子t4をリセット入力/RESETに接続するラインには、抵抗105の一方端及びコンデンサ107の一方端が接続される。抵抗105の他方端には電源電圧Vcc3が供給され、コンデンサ107の他方端は接地される。
端子t5,t13及びt14は、それぞれ、高速プロセッサ91のI/OポートIO12,IO13及びIO14に接続される。従って、高速プロセッサ91は、端子t5,t13及びt14を介して、図5の拡張コネクタ63に接続された外部機器に信号を入出力できる。
端子t7,t8からは、電源電圧Vcc1が供給される。端子t11,t12からは、電源電圧Vcc2が供給される。端子t15,t16からは、電源電圧Vcc3が供給される。端子t18,t19からは、電源電圧Vcc4が供給される。電源電圧Vcc2は、高速プロセッサ91のアナログ回路に供給され、電源電圧Vcc3は、高速プロセッサ91のデジタル回路に供給される。
端子t6,t9,t10及びt17は、それぞれ、高速プロセッサ91のI/OポートIO15,IO16,IO17及びIO18に接続される。従って、高速プロセッサ91は、端子t6を介して、キーブロック69からの出力信号を受けることができる。また、高速プロセッサ91は、端子t9を介して、拡張コネクタ63に接続された外部機器及びキーブロック69に制御信号を与えることができる。さらに、高速プロセッサ91は、端子t10を介して、拡張コネクタ63に接続された外部機器及びキーブロック69にクロックを与えることができる。さらに、高速プロセッサ91は、端子t17を介して、IR受信回路71の出力信号を受け取ることができる。
端子t20及びt21は、それぞれ、高速プロセッサ91のオーディオ出力AL及びARに接続される。端子t23は、高速プロセッサ91のビデオ出力VOに接続される。従って、高速プロセッサ91は、端子t20及びt21を介して、アダプタ1のオーディオアンプ73に、オーディオ信号AL1及びAR1を与えることができ、また、端子t23を介して、アダプタ1の電源スイッチ45に、ビデオ信号VDを与えることができる。
カートリッジ3には、シールド113が施してある。シールド113を設けることで、高速プロセッサ91等の回路から発生する電磁波が、外部に放射されることを極力防止できる。
ここで、高速プロセッサ91の内部構成を簡単に説明する。高速プロセッサ91は、図示しないが、CPU(central processing unit)、グラフィックプロセッサ、サウンドプロセッサおよびDMAコントローラ等を含むとともに、アナログ信号を取り込むときに用いられるA/Dコンバータや、キー操作信号や赤外線信号のような入力信号を受けかつ出力信号を外部機器に与える入出力制御回路を含む。
CPUは、メモリ93に格納されたプログラムに従い、各種演算やシステム全体の制御を行う。
グラフィックプロセッサは、メモリ93に格納されたデータを基に、グラフィックデータを合成し、さらにこれを基にテレビジョンモニタ5に合わせたビデオ信号VDを生成して出力する。ここで、グラフィックデータは、グラフィックプロセッサによって、バックグラウンドスクリーンとスプライトとビットマップスクリーンとから合成される。バックグラウンドスクリーンは、矩形の画素集合の二次元配列からなり、テレビジョンモニタ5のスクリーンを全て覆う大きさを持つ。奥行きのある背景を形成できるように、バックグラウンドスクリーンとして、第1のバックグラウンドスクリーンと第2のバックグラウンドスクリーンとが用意される。スプライトは、テレビジョンモニタ5のスクリーンのいずれの位置にでも配置可能な1つの矩形の画素集合からなる。ビットマップスクリーンは自由に大きさと位置を設定可能な二次元ピクセル配列からなる。
また、高速プロセッサ91は、図示しないピクセルプロッタを含み、このピクセルプロッタは、ピクセル単位での描画を実行する。サウンドプロセッサは、メモリ93に格納されたデータを基に、サウンドデータを合成し、さらにこれを基にオーディオ信号AL1及びAR1を生成して出力する。サウンドデータは、基本の音色となるPCM(パルスコードモジュレーション)データに対し、ピッチ変換及び振幅変調を行い合成される。振幅変調では、CPUによって指示されるボリューム制御の他に、楽器の波形を再現するためのエンベロープ制御の機能が用意される。
また、高速プロセッサ91には、図示しないが内部メモリが設けられ、ワーキング領域、カウンタ領域、レジスタ領域、テンポラリデータ領域、及び/又はフラグ領域等として利用される。
図6は、図1のマットユニット7の内部構成を示すブロック図である。図6に示すように、マットユニット7は、赤外発光部200、MCU(micro controler unit)202、モード設定部204、及びキーマトリクス206を含む。赤外発光部200、MCU202、モード設定部204、及びキーマトリクス206の一部(つまり、フットスイッチSW1〜SW4以外の回路)は、回路ボックス4に内蔵される。キーマトリクス206の他の部分(つまり、フットスイッチSW1〜SW4)は、マット2の内部に設けられる。
モード設定部204は、キーマトリクス206のタイプに応じて、4つのモードMO1〜MO4を設定する。MCU202は、その内部のROM(図示せず)に格納されたプログラムに従って、各種演算を実行する。具体的には、MCU202は、モード設定部204によって設定されたモードに応じて、キーマトリクス206に対して、キースキャンを実行する。そして、MCU202は、赤外発光部200を駆動して、アダプタ1のIR受信回路71へキースキャン結果を送信する。
図7は、図6の赤外発光部200及びモード設定部204の回路図である。図7に示すように、モード設定部204は、2つのショートランド218及び220を含む。ショートランド218及び220のそれぞれを、ショートあるいはオープンにして、MCU202のI/OポートIO2及びIO3のそれぞれに、「1(ハイ)」あるいは「0(ロー)」を設定する。I/OポートIO2及びIO3に設定された値によって、モードMO1〜MO4のうちのいずれかのモードが設定される。
赤外発光部200は、抵抗素子207,208、赤外発光ダイオード210,212、トランジスタ214、及び抵抗素子216を含む。直列接続された抵抗素子207及び赤外発光ダイオード210、並びに直列接続された抵抗素子208及び赤外発光ダイオード212は、電源電位Vccとトランジスタ214のコレクタとの間に並列に接続される。トランジスタ214のエミッタは接地され、そのベースとMCU202のI/OポートIO1との間には、抵抗素子216が接続される。
MCU202のI/OポートIO1に「1(ハイ)」が設定されたときは、トランジスタ214がオンして、赤外発光ダイオード210,212が点灯し、一方、MCU202のI/OポートIO1に「0(ロー)」が設定されたときは、トランジスタ214がオフして、赤外発光ダイオード210,212が消灯する。
MCU202は、キースキャンの結果に応じて、I/OポートIO1に値を設定し、トランジスタ214のオン/オフを制御して、赤外発光ダイオード210及び212を点灯し、あるいは消灯する。これにより、キースキャンの結果が、アダプタ1のIR受信回路71に送信され、さらに、IR受信回路71から、端子T17及びt17を介して、高速プロセッサ91に与えられる。高速プロセッサ91は、この受信データにより、マット2のフットスイッチSW1〜SW4のオン/オフ情報を取得し、その情報に応じた演算処理を実行して、ビデオ信号VD及びオーディオ信号AL1,AR1を生成する。
図8は、図6のキーマトリクス206の回路図である。図8に示すように、フットスイッチSW1の一方接点と電源Vccとの間に、抵抗素子222a及び226aが直列に接続される。抵抗素子222aと226aとの接続点には、キャパシタ224a及びI/OポートIO4(入力)が接続される。フットスイッチSW2の一方接点と電源Vccとの間に、抵抗素子222b及び226bが直列に接続される。抵抗素子222bと226bとの接続点には、キャパシタ224b及びI/OポートIO5(入力)が接続される。
フットスイッチSW3の一方接点と電源Vccとの間に、抵抗素子222c及び226cが直列に接続される。抵抗素子222cと226cとの接続点には、キャパシタ224c及びI/OポートIO6(入力)が接続される。フットスイッチSW4の一方接点と電源Vccとの間に、抵抗素子222d及び226dが直列に接続される。抵抗素子222dと226dとの接続点には、キャパシタ224d及びI/OポートIO7(入力)が接続される。
フットスイッチSW1〜SW4の他方接点は、共通に、I/OポートIO8(出力)に接続される。このようなキーマトリクス206を搭載するときは、モードMO4が設定され、モード設定部204のショートランド218及び220はともにオープンになっている。
MCU202は、キースキャンの際、I/OポートIO8に「0(ロー)」を設定する。そして、MCU202は、各I/OポートIO4〜IO7の値を読み込む。例えば、フットスイッチSW1がオンのときは、抵抗素子222aと226aとの接続点がローレベルになり、I/OポートIO4に「0(ロー)」が設定される。一方、フットスイッチSW1がオフのときは、抵抗素子222aと226aとの接続点がハイレベルになり、I/OポートIO4に「1(ハイ)」が設定される。このように、フットスイッチがオンのときは対応するI/Oポートに「0」が設定され、オフのときは対応するI/Oポートに「1」が設定される。
図9は、図6のキーマトリクス206の他の例の回路図である。この図に示すキーマトリクス206を搭載するときは、モードMO1が設定され、モード設定部204のショートランド218及び220はともにショートされている。
図9に示すように、25個のキースイッチSW1〜SW25が、マトリクス状に配置されている。言うまでもなく、図9のキーマトリクス206を内蔵するマットには、キースイッチSW1〜SW25に対応して、踏み領域ST1〜ST25(図示せず)が、5行5列の正方配列として設けられている。また、出力同士で電流が流れることを防止するために、キースイッチSW1〜SW25に対応して、出力側に、ショットキダイオードD1〜D25が接続されている。
キースイッチSW1〜SW5の一方端は、ダイオードD1〜D5を介して、I/OポートIO9(出力)に接続され、キースイッチSW6〜SW10の一方端は、ダイオードD6〜D10を介して、I/OポートIO10(出力)に接続され、キースイッチSW11〜SW15の一方端は、ダイオードD11〜D15を介して、I/OポートIO11(出力)に接続され、キースイッチSW16〜SW20の一方端は、ダイオードD16〜D20を介して、I/OポートIO12(出力)に接続され、キースイッチSW21〜SW25の一方端は、ダイオードD21〜D25を介して、I/OポートIO13(出力)に接続される。
抵抗素子230aは、電源電位VccとI/OポートIO4(入力)との間に接続される。抵抗素子230bは、電源電位VccとI/OポートIO5(入力)との間に接続される。抵抗素子230cは、電源電位VccとI/OポートIO6(入力)との間に接続される。抵抗素子230dは、電源電位VccとI/OポートIO7(入力)との間に接続される。抵抗素子230eは、電源電位VccとI/OポートIO8(入力)との間に接続される。
MCU202は、キースキャンを行う際、I/OポートIO9〜IO13(出力)に順次、「0(ロー)」を設定していき、I/OポートIO4〜IO8(入力)の値を読み込む。これにより、MCU202は、全キースイッチSW1〜SW25のオン/オフ情報を取得できる。
図10は、図6のMCU202による処理の流れを示すフローチャートである。図10に示すように、ステップS1にて、MCU202は、その内部の各制御レジスタを初期化する。ステップS2にて、MCU202は、その内部のRAM(図示せず)をクリアする。ステップS3にて、MCU202は、各I/Oポートを初期値にセットする。ステップS4にて、MCU202は、暴走監視のためのウォッチドッグ(図示せず)をリセットする。ステップS5にて、MCU202は、オプションコードを読み込む。オプションコードは、モード設定部204によって設定されたI/OポートIO2及びIO3の値である。
ステップS6にて、MCUは、スリープ状態か否かを判断して、スリープ状態の場合はステップS1に進み、そうでない場合はステップ7に進む。ステップS7では、MCU202は、キーマトリクス206に対して、モード設定部204が設定したモードに応じたキースキャンを実行する。ステップS8にて、MCU202は、キースキャンの結果に応じて、RAMにIR(infrared ray)出力パターンをセットする。IR出力パターンは、キースキャンの結果を示すパターンである。
ステップS9にて、セットしたIR出力パターンが、前回のキースキャンの結果に応じたIR出力パターンと同じか否かを判断し、変化している場合はステップS11に進み、変化していない場合はステップS10に進む。ステップS10では、MCU202は、所定時間が経過したか否かを判断し、経過していない場合はステップ6に進み、経過した場合はステップS11に進む。
ステップS11では、MCU202は、RAMに設定されたIRパターンに応じて、I/OポートIO1の値を設定し、赤外発光ダイオード210及び212を駆動して、アダプタ1のIR受信回路71にIRパターン、つまりキースキャンの結果を送信する。その後、ステップS6に進む。
図11は、図1のマット2の構造を示す分解斜視図である。図11に示すように、マット2は、裏面シート520、緩衝シート518、下部電極シート514、絶縁性のスペーサ510、上部電極シート506、パッド504−1〜504−4、緩衝シート502、及び表面シート500を含む。
最下層には、裏面シート520が設けられ、裏面シート520の上層には、緩衝シート518が設けられ、緩衝シート518の上層には、下部電極シート514が設けられ、下部電極シート514の上層には、スペーサ510が設けられ、スペーサ510の上層には、上部電極シート506が設けられ、上部電極シート506の上層には、パッド504−1〜504−4が設けられ、パッド504−1〜504−4の上層には、緩衝シート502が設けられ、緩衝シート502の上層(マット2の最上層)には、表面シート500が設けられる。
下部電極シート514には、導電領域516−1〜516−4及びそれらを接続する導電領域LOが形成される。スペーサ510には、導電領域516−1〜516−4の各々に対応する領域に、複数の孔512が形成される。上部電極シート506には、下部電極シート514の導電領域516−1〜516−4に対応して、導電領域508−1〜508−4が形成される。さらに、上部電極シート506には、導電領域508−1に接続される導電領域LN1、導電領域508−2に接続される導電領域LN2、導電領域508−3に接続される導電領域LN3、及び、導電領域508−4に接続される導電領域LN4が形成される。
下部電極シート514の導電領域516−1〜516−4と上部電極シート506の導電領域508−1〜508−4とが、スペーサ510を挟んで、対向するように、下部電極シート514、スペーサ510、及び、上部電極シート506、が積層される。従って、導電領域516−1〜516−4及びLOは、下部電極シート514の上面に形成され、導電領域508−1〜508−4及びLN1〜LN4は、上部電極シート506の下面に形成される。なお、導電領域508−1〜508−4及びLN1〜LN4は、上部電極シート506の下面に形成されるため、図11では、これらを破線で表している。
ここで、下部電極シート110の導電領域516−1と、上部電極シート506の導電領域508−1と、スペーサ510のこれらに対応する領域(複数の孔512を含む。)と、でフットスイッチSW1が形成される。導電領域516−2と、導電領域508−2と、スペーサ510のこれらに対応する領域(複数の孔512を含む。)と、でフットスイッチSW2が形成される。導電領域516−3と、導電領域508−3と、スペーサ510のこれらに対応する領域(複数の孔512を含む。)と、でフットスイッチSW3が形成される。導電領域516−4と、導電領域508−4と、スペーサ510のこれらに対応する領域(複数の孔512を含む。)と、でフットスイッチSW4が形成される。例えば、以上のようなフットスイッチSW1〜SW4は、メンブレンスイッチである。
表面シート500と緩衝シート502とは、両面テープ(図示せず)により接着される。この場合、踏み領域ST1とST2との境界、踏み領域ST2とST3との境界、踏み領域ST3とST4との境界に沿って、両面テープが貼り付けられる。また、パッド504−1〜504−4の表面と緩衝シート502とは、両面テープ(図示せず)により接着され、パッド504−1〜504−4の裏面と上部電極シート506とは、両面テープ(図示せず)により接着される。
そして、以上のように積層された裏面シート520、緩衝シート518、下部電極シート514、スペーサ510、上部電極シート506、パッド504−1〜504−4、緩衝シート502、及び表面シート500は、布製テープ(図示せず)により縁どられ、糸(図示せず)で縫い付けられる。このようにして、マット2が構成される。使用する布製テープは、例えば、バイアステープである。
なお、表面シート500の材質は、例えば、EVA(エチレン酢酸ビニル共重合体)である。また、緩衝シート502、パッド504−1〜504−4、及び緩衝シート518の材質は、例えば、発泡ポリエチレンである。また、電極シート506及び514は、例えば、ポリプロピレン製の透明シートである。また、裏面シート520の材質は、例えば、発泡EVAである。
図1に戻って、本実施の形態では、透明の表面シート500の裏面にスクリーン印刷を施して、図1に示す図柄を表している。
さて、以上のように、本実施の形態では、マットユニット7による検知結果を赤外線によりアダプタ1に送信し、さらにその検知結果は高速プロセッサ91に与えられる。このように、マットユニット7による検知結果を無線で送信しているため、マットユニット7の設置場所の制限が緩和される。また、有線の場合と比較して、プレイヤがその有線につまずく事もなく、安全性をより確保できる。
(実施の形態2)
本発明の実施の形態2による疑似体験装置のハードウエアとして、実施の形態1のマットシステムのハードウエアを使用する。
図12は、本発明の実施の形態2による疑似体験装置によって、図1のテレビジョンモニタ5に表示される画面の例示図である。図12に示すように、テレビジョンモニタ5には、道路画像を含む背景401、人間を模した操作オブジェクト400、障害オブジェクト423、経過時間表示部402、及びステップ数表示部404を含む画面が表示される。
プレイヤが、図1のマット2上において、足踏みをすると、フットスイッチSW1〜SW4からのオン/オフ信号により、高速プロセッサ91は、プレイヤによる足踏みを検知して、足踏みの速さに応じて、背景401及び操作オブジェクト400のアニメーション速度を調整する。これにより、プレイヤの足踏みの速さに応じた速度で、操作オブジェクト400が前方へ進む様子が表現される。言い換えると、プレイヤは、足踏みの速度を調整することで、操作オブジェクト400の前進速度を制御できる。なお、「前方」とは、高速プロセッサ91により生成される仮想空間における前方である。
経過時間表示部402には、スタート時からの経過時間が表示される。ステップ数表示部404には、スタート時からのプレイヤのステップ数が表示される。
図13は、本発明の実施の形態2による疑似体験装置によって、図1のテレビジョンモニタ5に表示される画面の他の例示図である。図13に示すように、テレビジョンモニタ5には、背景401、操作オブジェクト400、障害オブジェクト425、経過時間表示部402、及びステップ数表示部404を含む画面が表示される。
プレイヤが、マット2上で踏み位置をシフト(サイドステップ)すると、フットスイッチSW1〜SW4からのオン/オフ信号により、高速プロセッサ91は、プレイヤによる踏み位置のシフトを検知して、シフト後の踏み位置に応じて、操作オブジェクト400を左あるいは右に移動させる。これにより、プレイヤは、踏み位置を調整することで、操作オブジェクト400を左あるいは右に移動させることができる。なお、「左」及び「右」とは、高速プロセッサ91により生成される仮想空間における左及び右である。
図14は、本発明の実施の形態2による疑似体験装置によって、図1のテレビジョンモニタ5に表示される画面のさらに他の例示図である。図14に示すように、テレビジョンモニタ5には、背景401、操作オブジェクト400、障害オブジェクト410、経過時間表示部402、及びステップ数表示部404を含む画面が表示される。
プレイヤが、マット2上でジャンプすると、フットスイッチSW1〜SW4からのオン/オフ信号により、高速プロセッサ91は、プレイヤによるジャンプを検知して、操作オブジェクト400をジャンプさせる。これにより、プレイヤは、マット2上でジャンプすることで、操作オブジェクト400をジャンプさせることができる。なお、「ジャンプ」とは、高速プロセッサ91により生成される仮想空間でのジャンプである。
図15は、本発明の実施の形態2による疑似体験装置によって、図1のテレビジョンモニタ5に表示される画面のさらに他の例示図である。図15に示すように、テレビジョンモニタ5には、背景401、操作オブジェクト400、障害オブジェクト412、経過時間表示部402、及びステップ数表示部404を含む画面が表示される。
プレイヤが、マット2にのった状態で、片手あるいは両手をマット2に押し付けると、フットスイッチSW1〜SW4からのオン/オフ信号により、高速プロセッサ91は、プレイヤがしゃがんだことを検知して、操作オブジェクト400をしゃがませる。これにより、プレイヤは、マット2上でしゃがむことで、操作オブジェクト400をしゃがませることができる。なお、「しゃがむ」とは、高速プロセッサ91により生成される仮想空間でしゃがむことである。
図12〜図15を参照して、プレイヤは、マット2上の足踏み速度を調整することで、操作オブジェクト400の前進速度を調整しながら、操作オブジェクト400を前方へ進めて行くと共に、踏み位置のシフト(サイドステップ)、ジャンプ、あるいはしゃがみ動作を行いながら、障害オブジェクト423,425,410及び412を回避していく。
また、障害オブジェクト423,425,410及び412には、動作指示マークが表されており、プレイヤに対して、動く方向が指示される。つまり、障害オブジェクト423には、「×」なる動作指示マークが表され、障害オブジェクト425には、左向き矢印の動作指示マーク(左にステップすることを指示)が表され、障害オブジェクト410には、上向き矢印の動作指示マーク(ジャンプすることを指示)が表され、障害オブジェクト412には、下向き矢印の動作指示マーク(しゃがむことを指示)が表されている。なお、図示していないが、右向き矢印の動作指示マーク(右にステップすることを指示)が表された障害オブジェクトも用意される。
以上の結果、障害オブジェクト423,425,410及び412は、指示オブジェクトと呼ぶこともできる。
図16は、本発明の実施の形態2による疑似体験装置によって、図1のテレビジョンモニタ5に表示される画面のさらに他の例示図である。図16に示すように、一定の条件で、忍者オブジェクト414が出現する。プレイヤは、忍者オブジェクト414が着地したタイミングで、忍者オブジェクト414の出現位置に対応する踏み領域を踏み込んで、対応するフットスイッチをオンにすることで、忍者オブジェクト414への攻撃をヒットさせることができる。図中、左側の忍者オブジェクト414には、攻撃のヒットを示すエフェクトが加えられている。
なお、忍者オブジェクト414の出現位置として、画面水平方向(操作オブジェクト400の進行方向に垂直な方向)に4箇所が設定される。この4箇所の出現位置は、ぞれぞれ、踏み領域ST1〜ST4(フットスイッチSW1〜SW4)に対応している。また、ヒット数表示部418には、攻撃がヒットした忍者オブジェクト414の数が表示される。
図17は、本発明の実施の形態2による疑似体験装置によって、図1のテレビジョンモニタ5に表示される結果画面の例示図である。図17に示すように、スタートから一定時間(例えば、5分)が経過すると、プレイ終了となり、結果画面が表示される。この結果画面には、障害オブジェクト423,425,410及び412の回避回数及び1回当たりのポイント(Action point)、忍者オブジェクト414の攻撃ヒット回数及び1回当たりのポイント(Ninja point)、並びに、それらの合計ポイント(Total point)、さらに消費カロリー(Cal)が表示される。さらに、ランク(Action Star Rank)が表示される(図では、「Dランク」)。なお、障害オブジェクト423,425,410及び412の回避割合を表示することもできる。また、障害オブジェクト423,425,410及び412の回避割合を合計ポイントに乗算した結果に応じて、ランクを決定することもできる。
次に、操作オブジェクト400の動きと、マット2のフットスイッチSW1〜SW4(踏み領域ST1〜ST4)との関係について説明する。
図18は、図1のマット2のフットスイッチSW1〜SW4のオン/オフのパターンを示す図解図である。図18において、斜線部は、オンしている(踏まれている)フットスイッチ(踏み領域)を示している。図18に示すように、フットスイッチSW1〜SW4のオン/オフのパターンとして、14通りを想定している。
図19は、操作オブジェクト400の動作の説明図である。図19に示すように、高速プロセッサ91は、背景401の道路画像が、左レーンL、中央レーンC、及び右レーンRからなるものとして処理を行う。マット2が図18H及び図18Iの状態を交互に繰り返すときは、左レーンLにおいて前進する操作オブジェクト400が表示される。マット2が図18I及び図18Jの状態を交互に繰り返すときは、中央レーンCにおいて前進する操作オブジェクト400が表示される。マット2が図18J及び図18Kの状態を交互に繰り返すときは、右レーンRにおいて前進する操作オブジェクト400が表示される。
マット2が図18B、図18D、及び図18Cの状態で、プレイヤがジャンプしたときは、それぞれ、左レーンL、中央レーンC、及び右レーンRでジャンプする操作オブジェクト400が表示される。
マット2が図18E、図18G、及び図18Fの状態では、それぞれ、左レーンL、中央レーンC、及び右レーンRにしゃがんだ操作オブジェクト400が表示される。ここで、マット2が図18Eの状態では、プレイヤが、踏み領域ST1及びST2にのって、一方の手で、踏み領域ST3を押していると判断する(しゃがんだ状態)。マット2が図18Gの状態では、プレイヤが、踏み領域ST2及びST3にのって、左右の手で、踏み領域ST1及びST4を押していると判断する(しゃがんだ状態)。マット2が図18Fの状態では、プレイヤが、踏み領域ST3及びST4にのって、他方の手で、踏み領域ST2を押していると判断する(しゃがんだ状態)。
プレイヤの足踏みの位置が、図18H及び図18Iの状態から、図18I及び図18Jの状態へシフトしたとき、操作オブジェクト400は、左レーンLから中央レーンCに移動する。プレイヤの足踏みの位置が、図18H及び図18Iの状態から、図18J及び図18Kの状態へシフトしたとき、操作オブジェクト400は、左レーンLから右レーンRに移動する。
プレイヤの足踏みの位置が、図18I及び図18Jの状態から、図18H及び図18Iの状態へシフトしたとき、操作オブジェクト400は、中央レーンCから左レーンLに移動する。プレイヤの足踏みの位置が、図18I及び図18Jの状態から、図18J及び図18Kの状態へシフトしたとき、操作オブジェクト400は、中央レーンCから右レーンRに移動する。
プレイヤの足踏みの位置が、図18J及び図18Kの状態から、図18I及び図18Jの状態へシフトしたとき、操作オブジェクト400は、右レーンRから中央レーンCに移動する。プレイヤの足踏みの位置が、図18J及び図18Kの状態から、図18H及び図18Iの状態へシフトしたとき、操作オブジェクト400は、右レーンRから左レーンLに移動する。
図20は、操作オブジェクト400の動作、モーション番号、操作オブジェクトのアニメーション時間、背景のアニメーション時間、両足接地時間、及び平均ステップ間隔を関連付けたテーブル(以下、「アニメーション制御テーブル」と呼ぶ。)の説明図である。図20に示すように、モーション番号「0」〜「6」は、操作オブジェクト400の各動作に割り当てられた番号である。
本実施の形態では、操作オブジェクト400の動作映像として、停止状態、歩行状態(遅い歩行、普通の歩行、速い歩行)、及び、ランニング状態(遅いランニング、普通のランニング、速いランニング)を用意する。具体的には、操作オブジェクト400が停止している1コマの画像、操作オブジェクト400が歩いている12コマの画像、及び操作オブジェクト400が走っている12コマの画像が用意される。なお、ここでは、オブジェクトあるいは背景のアニメーションに関して、「コマ」とは、アニメーション(動画)を構成する画像要素(静止画)の各々を意味する。また、本実施の形態では、背景401の映像として、32コマの画像が用意される。
そして、操作オブジェクト400の遅い歩行、普通の歩行、及び速い歩行は、操作オブジェクト400が歩いている12コマの各画像の再生時間(アニメーション時間)並びに背景401の再生時間(アニメーション時間)を調整することにより表現される。同様に、操作オブジェクト400の遅いランニング、普通のランニング、及び速いランニングは、操作オブジェクト400が走っている12コマの各画像の再生時間(アニメーション時間)並びに背景401の再生時間(アニメーション時間)を調整することにより表現される。
つまり、遅い歩行、普通の歩行、及び速い歩行のそれぞれに対して、アニメーション時間T1,T2及びT3が割り当てられる。なお、T1>T2>T3、である。また、遅いランニング、普通のランニング、及び速いランニングのそれぞれに対して、アニメーション時間S1,S2及びS3が割り当てられる。なお、S1>S2>S3、である。停止状態では、1コマの画像の表示が継続する。
また、遅い歩行、普通の歩行、速い歩行、遅いランニング、普通のランニング、及び速いランニングのそれぞれに対して、背景401のアニメーション時間Tb1,Tb2,Tb3,Tb4,Tb5及びTb6が割り当てられる。なお、Tb1>Tb2>Tb3>Tb4>Tb5>Tb6、である。停止状態では、1コマの画像の表示が継続する。
プレイヤの両足接地時間tbは、フットスイッチSW1〜SW4のうちの2つがオンである期間である。両足接地時間tbが、所定時間s1(例えば、50ビデオフレーム)より長いときは、停止した操作オブジェクト400及び背景401が表示される。また、プレイヤの両足接地時間tbが所定時間s1以下であり、所定時間s2(例えば、7ビデオフレーム)以上の場合は、歩行する操作オブジェクト400が表示される。一方、プレイヤの両足接地時間tbが所定時間s2より小さい場合は、走る操作オブジェクト400が表示される。
平均ステップ間隔tsについて説明する。フットスイッチSW1〜SW4のうち、あるフットスイッチがオンになってから、別のフットスイッチがオンになるまでの期間を、プレイヤのステップ間隔とする。このステップ間隔の平均を平均ステップ間隔tsと呼ぶ。本実施の形態では、最新及び過去の計4つのステップ間隔の平均を平均ステップ間隔tsとしている。なお、平均ステップ間隔tsは整数として得られる。
高速プロセッサ91は、計測した両足接地時間tbが、tb>s1の場合、あるいは、算出した平均ステップ間隔tsが、ts>s1の場合は、停止状態(モーション番号0)を選択する。また、高速プロセッサ91は、両足接地時間tbと定数s2との大小を判断して、その結果に応じて、歩行状態(モーション番号1〜3)、あるいはランニング状態(モーション番号4〜6)のいずれかの動作状態を選択する。そして、選択した動作状態が歩行状態の場合は、平均ステップ間隔tsが属する範囲に対応するモーション番号(1〜3のいずれか)を選択する。一方、選択した動作状態がランニング状態の場合は、平均ステップ間隔tsが属する範囲に対応するモーション番号(4〜6のいずれか)を選択する。
さらに、高速プロセッサ91は、選択したモーション番号の移動平均Mavを算出する。本実施の形態では、最新及び過去に選択された計8つのモーション番号の移動平均Mavを算出する(次式)。次式において、「Sum/8」は、前回求めた移動平均である。なお、移動平均Mavは整数として得られる。
Sum#=Sum−(Sum/8)+最新のモーション番号 …(1)
Mav=Sum#/8 …(2)
そして、高速プロセッサ91は、アニメーション制御テーブルを参照して、移動平均Mavの値と同一のモーション番号が割り当てられた動作状態の操作オブジェクト400及び背景401のアニメーション映像を生成する。
図21は、本発明の実施の形態2による疑似体験装置を構成する図5の高速プロセッサ91による全体処理の流れの一例を示すフローチャートである。図21に示すように、ステップS1にて、高速プロセッサ91は、システム全体の初期設定を実行する。具体的には、システム及び各変数を初期化する。
ステップS2にて、高速プロセッサ91は、スタート時からの経過時間を算出する。本実施の形態では、1/60秒ごとにビデオフレームの更新を行うので(後述のステップS15)、経過ビデオフレーム数を計数することにより、経過時間を算出できる。ステップS3にて、高速プロセッサ91は、一定時間Tc(例えば、5分)が経過したか否かを判断して、経過した場合はステップS18に進み、それ以外はステップS4に進む。
ステップS4では、高速プロセッサ91は、プレイヤの消費カロリー算出のための第1の前処理を実行する。ステップS5にて、高速プロセッサ91は、プレイヤのステップ間隔を計測して、平均ステップ間隔tsを算出する。ステップS6にて、高速プロセッサ91は、プレイヤの両足接地時間tbをカウントする。
ステップS7にて、高速プロセッサ91は、過去レーンの情報及びフットスイッチSW1〜SW4の最新のオン/オフ情報に基づいて、操作オブジェクト400が、次のビデオフレームで位置すべきレーン(以下、「現レーン」と呼ぶ。)を決定する。過去レーンは、現在表示中の操作オブジェクト400が位置するレーンである。ここで、レーンは、左レーンL、中央レーンC、あるいは右レーンRを意味する(図19参照)。
ステップS8にて、高速プロセッサ91は、現レーンの情報及び過去レーンの情報に基づいて、プレイヤがサイドステップをしたか否かを判定する。ステップS9にて、高速プロセッサ91は、過去レーンの情報及びフットスイッチSW1〜SW4の最新のオン/オフ情報に基づいて、プレイヤがしゃがんだか否かを判定する。ステップS10にて、高速プロセッサ91は、プレイヤがジャンプしたか否かを判定する。具体的には、無入力(全フットスイッチSW1〜SW4がオフ)になる直前において、両足接地時間tbが一定時間tj(例えば、10ビデオフレーム)を超えている場合に、プレイヤがジャンプしたと判断される。
ステップS11にて、高速プロセッサ91は、平均ステップ間隔ts、モーション番号の移動平均Mav、及びアニメーション制御テーブルに基づいて、モーション番号を取得する(図20参照)。ステップS12にて、高速プロセッサ91は、取得したモーション番号に応じて、背景401及び操作オブジェクト400のアニメーションを制御する。
ステップS13にて、高速プロセッサ91は、一定条件が成立したときに、障害オブジェクト423,425,410若しくは412又は忍者オブジェクト414を表示するための処理を実行する。具体的には、高速プロセッサ91は、該当するオブジェクトを表す画像データの格納位置情報及び表示位置情報を内部メモリ(図示せず)にセットする。
ここで、一定条件について説明する。背景として、例えば、32コマの連続した画像が用意される。そして、これらの画像をループ再生することにより、操作オブジェクト400が前方に進んでいく様子が表現される。この場合、各コマの再生時間を調整することにより、操作オブジェクト400が前方に進む際の速度を表現する。上記の一定条件は、背景画像の何コマ目という形式で設定される。
ステップS14にて、高速プロセッサ91は、操作オブジェクト400と表示された障害オブジェクト423,425,410若しくは412とが仮想空間において衝突したか否かを判定し、それらの回避回数をカウントする。また、高速プロセッサ91は、フットスイッチSW1〜SW4のオン/オフ情報並びに忍者オブジェクト414の着地位置及び着地タイミングに基づいて、忍者オブジェクト414に攻撃がヒットしたか否かを判定し、攻撃のヒット数をカウントする。また、ヒットしたときのエフェクト表示のための処理が実行される。具体的には、エフェクトを表す画像データの格納位置情報及び表示位置情報を内部メモリ(図示せず)にセットする。
さて、一方、ステップS18では、高速プロセッサ91は、プレイヤの消費カロリー算出のための第2の前処理を実行する。ステップS19にて、高速プロセッサ91は、消費カロリー算出のための第1及び第2の前処理の結果に基づいて、プレイヤの消費カロリーを算出する。ステップS20にて、高速プロセッサ91は、結果画面表示(図17参照)のための処理を実行する。具体的には、高速プロセッサ91は、結果画面を構成する背景や各オブジェクト(文字や数字等)を表す画像データの格納位置情報及び表示位置情報を内部メモリ(図示せず)にセットする。
ステップS15では、ビデオ同期信号による割り込みがあれば、ステップS16に進み、割り込みがなければ、同じステップS15に戻る。ビデオ同期信号による割り込みは、例えば、1/60秒間隔で発生する。
ビデオ同期信号による割り込みに応じて、ステップS16では、高速プロセッサ91は、ステップS12〜S14あるいはS20で設定された情報(画像データ格納位置情報及び表示位置情報)に基づいて、テレビジョンモニタ5の表示画像(ビデオフレーム)を更新する。また、ビデオ同期信号による割り込みに応じて、ステップS17の音声処理が実行され、これによって、音楽や効果音が出力される。そして、処理はステップS2に進む。
アダプタ1のIR受信回路71からの信号がローレベルからハイレベルに遷移したことに応答して、つまり、I/OポートIO18の値がローレベルからハイレベルに遷移したことに応答して、割り込みが発生し、ステップS21の赤外線コード(IRコード)取得処理が実行される。
図22は、図21のステップS21のIRコード取得処理の流れの一例を示すフローチャートである。このIRコード取得処理は、タイマ割り込みによって処理するため、最初のステップS31では、高速プロセッサ91は、タイマ割り込みがセットされているかどうか判断する。「NO」ならステップS32でタイマ割り込みを設定して、「YES」ならそのまま、ステップS33に進む。
ステップS33では、高速プロセッサ91は、内部メモリ(図示せず)にIRコード取得用のテンポラリデータ領域を確保する。そして、次のステップS34で、IR受信回路71からの出力信号が入力されるI/OポートIO18のデータを読込む。次のステップS35では、高速プロセッサ91は、テンポラリデータを右シフトし、ステップS34で読込んだデータをそのテンポラリデータの最上位ビットとする。
その後、ステップS36で全ビットの取得を完了したかどうか判断し、「NO」ならステップS38で次のタイマ割り込みを待機する。「YES」なら、ステップS37でタイマ割り込みを解除して、ステップS39で、テンポラリデータをIRコードとしてコピーする。高速プロセッサ91は、このIRコード、つまり、マット2のフットスイッチSW1〜SW4のオン/オフ情報を用いて図21の処理を実行する。
なお、上記の通り、図22の処理は、IRコード取得処理の開始の際に、I/OポートIO18の値がローレベルからハイレベルに遷移したことに応答して呼び出される割り込みハンドラであると同時に、タイマ割り込みに応答して呼び出される割り込みハンドラでもある。図23は、図21のステップS5のステップ間隔計測処理の流れの一例を示すフローチャートである。図23に示すように、ステップS50にて、高速プロセッサ91は、前回取得したIRコード(フットスイッチSW1〜SW4のオン/オフ情報)及び今回取得したIRコード(フットスイッチSW1〜SW4のオン/オフ情報)に基づいて、フットスイッチSW1〜SW4のオフからオンへの遷移発生の有無をチェックする。ステップS51にて、高速プロセッサ91は、遷移が発生している場合は、ステップS52に進み、遷移が発生していない場合は、ステップS55に進む。
ステップS55では、高速プロセッサ91は、プレイヤのステップ間隔を示すステップ間隔カウンタCtを1つインクリメントして、メインルーチンにリターンする。一方、ステップS52では、高速プロセッサ91は、オフからオンへの遷移が発生したフットスイッチの数をステップ数Ntlに加算する。つまり、ステップ数Ntlは、オフからオンへの遷移発生の総数を示す。ステップ数Ntlの最終結果が、プレイヤの総ステップ数となる。ステップS553では、高速プロセッサ91は、ステップ間隔カウンタCtの最新及び過去の計4つの値の平均値(平均ステップ間隔)tsを算出する。そして、ステップS54にて、高速プロセッサ91は、ステップ間隔カウンタCt及びプレイヤの両足接地時間を示す両足接地カウンタtbをクリアして、メインルーチンにリターンする。
図24は、図21のステップS6の両足接地カウント処理の流れの一例を示すフローチャートである。図24に示すように、高速プロセッサ91は、ステップS60にて、今回取得したIRコード、つまり、フットスイッチSW1〜SW4のオン/オフ情報をチェックする。ステップS61にて、高速プロセッサ91は、2つ以上のフットスイッチがオンの場合は、ステップS62に進んで、両足接地カウンタtbを1つインクリメントし、それ以外はメインルーチンにリターンする。
図25は、図21のステップS7の現レーン決定処理の流れの一例を示すフローチャートである。図25に示すように、ステップS80にて、高速プロセッサ91は、過去レーンを示すフラグ(以下、「過去レーンフラグ」と呼ぶ。)に応じて、今回取得したIRコード、つまり、フットスイッチSW1〜SW4のオン/オフ情報をチェックする。具体的には、過去レーンフラグが左レーンLを示している場合は、フットスイッチSW3及びSW4のオン/オフ情報をチェックする。過去レーンフラグが中央レーンCを示している場合は、フットスイッチSW1及びSW4のオン/オフ情報をチェックする。過去レーンフラグが右レーンRを示している場合は、フットスイッチSW1及びSW2のオン/オフ情報をチェックする。
ステップS81にて、高速プロセッサ91は、ステップS80のチェック結果及び過去レーンフラグに応じて、現レーンを示すフラグ(以下、「現レーンフラグ」と呼ぶ。)に値をセットする。具体的には、過去レーンフラグが左レーンLを示している場合において、フットスイッチSW3がオンのときは、中央レーンCを示す値に現レーンフラグをセットし、フットスイッチSW4がオンのときは、右レーンRを示す値に現レーンフラグをセットする。過去レーンフラグが中央レーンCを示している場合において、フットスイッチSW1がオンのときは、左レーンLを示す値に現レーンフラグをセットし、フットスイッチSW4がオンのときは、右レーンRを示す値に現レーンフラグをセットする。過去レーンフラグが右レーンRを示している場合において、フットスイッチSW2がオンのときは、中央レーンCを示す値に現レーンフラグをセットし、フットスイッチSW1がオンのときは、左レーンLを示す値に現レーンフラグをセットする。
図26は、図21のステップS8のサイドステップ判定処理の流れの一例を示すフローチャートである。図26に示すように、ステップS90にて、高速プロセッサ91は、操作オブジェクト400がジャンプ中であることを示すジャンプフラグ、操作オブジェクト400がサイドに移動中(サイドステップ中)であることを示すサイドステップフラグ、及び操作オブジェクト400がしゃがんでいることを示すしゃがみフラグを参照して、それらの全てがオフ(「0」)の場合はステップS91に進み、それ以外はメインルーチンにリターンする。
ステップS91では、高速プロセッサ91は、現レーンフラグと過去レーンフラグとを比較する。ステップS92にて、高速プロセッサ91は、比較の結果、現レーンフラグが示すレーンと過去レーンフラグが示すレーンとが相違する場合は、ステップS93に進む。つまり、現レーンフラグの値と過去レーンフラグの値とが相違する場合は、次のビデオフレームで操作オブジェクト400を表示するときのレーンが変わることを意味する。
従って、ステップS93にて、高速プロセッサ91は、レーン変化に応じて、サイドステップフラグの値をセットする。レーン変化の態様としては、左レーンLから中央レーンCへの変化、左レーンLから右レーンRへの変化、中央レーンCから左レーンLへの変化、中央レーンCから右レーンRへの変化、右レーンRから中央レーンCへの変化、右レーンRから左レーンLへの変化がある。従って、サイドステップフラグは、それらのいずれかを示す値にセットされる。なお、レーン変化がない場合は、サイドステップフラグはオフ(「0」)である。ステップS94にて、高速プロセッサ91は、現レーンフラグの値を過去レーンフラグにセットして、メインルーチンにリターンする。
図27は、図21のステップS9のしゃがみ判定処理の流れの一例を示すフローチャートである。図27に示すように、ステップS110にて、高速プロセッサ91は、過去レーンフラグをチェックする。ステップS111にて、高速プロセッサ91は、過去レーンフラグが中央レーンCを示している場合はステップS112に進み、それ以外はステップS115に進む。過去レーンフラグには、図26のステップS94で、現レーンフラグの値がセットされているので、図27の処理では、過去レーンフラグは、次のビデオフレームで操作オブジェクト400が位置するレーンを示すことになる。
ステップS112にて、高速プロセッサ91は、今回取得したIRコードを参照して、フットスイッチSW1〜SW4のオン/オフをチェックする。ステップS113にて、高速プロセッサ91は、全フットスイッチSW1〜SW4がオンの場合はステップS120に進み、それ以外はステップS114に進む。
ステップS115では、高速プロセッサ91は、過去レーンフラグが左レーンLを示している場合はステップS116に進み、それ以外は、つまり、過去レーンフラグが右レーンRを示している場合はステップS118に進む。ステップS116にて、高速プロセッサ91は、今回取得したIRコードを参照して、フットスイッチSW1〜SW3のオン/オフをチェックする。ステップS117にて、高速プロセッサ91は、フットスイッチSW1〜SW3が全てオンの場合はステップS120に進み、それ以外はステップS114に進む。
ステップS118では、今回取得したIRコードを参照して、フットスイッチSW2〜SW4のオン/オフをチェックする。ステップS119にて、高速プロセッサ91は、フットスイッチSW2〜SW4が全てオンの場合はステップS120に進み、それ以外はステップS114に進む。
ステップS120では、高速プロセッサ91は、プレイヤがしゃがんだと判断して、しゃがみフラグをオンにし、メインルーチンにリターンする。一方、ステップS114では、高速プロセッサ91は、プレイヤはしゃがんでいないと判断して、しゃがみフラグをオフにし、メインルーチンにリターンする。
図28は、図21のステップS10のジャンプ判定処理の流れの一例を示すフローチャートである。図28に示すように、ステップS125にて、高速プロセッサ91は、今回取得したIRコードを参照して、フットスイッチSW1〜SW4のオン/オフをチェックする。ステップS126にて、高速プロセッサ91は、全フットスイッチSW1〜SW4がオフの場合はステップS127に進み、それ以外はメインルーチンにリターンする。
ステップS127にて、高速プロセッサ91は、両足接地カウンタtbの値(つまり、両足接地時間tb)が、一定時間tjより大きい場合は、プレイヤがジャンプしたと判断してステップS128に進み、それ以外はメインルーチンにリターンする。ステップS128では、高速プロセッサ91は、ジャンプフラグをオンにして、メインルーチンにリターンする。
図29は、図21のステップS11のモーション番号登録処理の流れの一例を示すフローチャートである。図29及び図20を参照して、ステップS130にて、高速プロセッサ91は、両足接地時間tbが定数s1より大きいか否かを判断し、大きい場合はステップS132に進み、それ以外はステップS131に進む。ステップS131では、高速プロセッサ91は、平均ステップ間隔tsが定数s1より大きいか否かを判断して、大きい場合はステップS132に進み、それ以外はステップS133に進む。
ステップS132では、高速プロセッサ91は、モーション番号1を選択する。一方、ステップS133では、高速プロセッサ91は、両足接地時間tbが定数s2より小さいか否かを判断し、小さい場合はステップS134に進み、それ以外はステップS135に進む。
ステップS134では、高速プロセッサ91は、平均ステップ間隔tsが属する範囲(s1≧ts>u1、u1≧ts>u2、およびu2≧ts>u3のいずれか)に対応するモーション番号(4、5及び6のいずれか)を選択する。モーション番号4〜6はランニング状態を示す。一方、ステップS135では、高速プロセッサ91は、平均ステップ間隔tsが属する範囲(s1≧ts>t1、t1≧ts>t2、およびt2≧ts>t3のいずれか)に対応するモーション番号(1、2及び3のいずれか)を選択する。モーション番号1〜3は歩行状態を示す。
ステップS136では、高速プロセッサ91は、ステップS132,S134及び/又はS135で選択したモーション番号の移動平均Mavを式(1)及び式(2)により算出する。ステップS137にて、高速プロセッサ91は、モーション番号の移動平均Mavをインデックスとして、アニメーション制御テーブルを参照し、モーション番号を取得して登録する。そして、メインルーチンにリターンする。
図30は、図21のステップS12のアニメーション制御処理の流れの一例を示すフローチャートである。図30に示すように、ステップS140にて、高速プロセッサ91は、ジャンプフラグのオン/オフをチェックして、オンの場合はステップS141に進み、オフの場合はステップS144に進む。
ステップS141では、高速プロセッサ91は、操作オブジェクト400をジャンプさせるべく、ジャンプアニメーションを設定する。具体的には、操作オブジェクト400のジャンプ画像は複数コマから構成されており、各コマの再生時間に応じて、各コマの画像データ格納位置情報及び表示位置情報を内部メモリ(図示せず)にセットする。ステップS142にて、高速プロセッサ91は、操作オブジェクト400のジャンプアニメーションが終了したか否かを判断して、終了している場合は、ステップS143でジャンプフラグをオフにして、ステップS151に進み、終了していない場合はそのままステップS151に進む。
一方、ステップS144では、高速プロセッサ91は、サイドステップフラグを参照して、オフ(「0」)ならばステップS148に進み、オンならばステップS145に進む。ステップS145では、高速プロセッサ91は、操作オブジェクト400をサイドステップさせるべく、サイドステップフラグが示すサイドステップの態様に応じて、サイドステップアニメーションを設定する。具体的には、操作オブジェクト400のサイドステップ画像は複数コマから構成されており、サイドステップフラグの値及び各コマの再生時間に応じて、各コマの画像データ格納位置情報及び表示位置情報を内部メモリ(図示せず)にセットする。ステップS146にて、操作オブジェクト400のサイドステップアニメーションが終了したか否かを判断して、終了している場合は、ステップS147でサイドステップフラグをオフにして、ステップS151に進み、終了していない場合はそのままステップS151に進む。
一方、ステップS148では、高速プロセッサ91は、しゃがみフラグを参照して、オフならばステップS150に進み、オンならばステップS149に進む。ステップS149では、高速プロセッサ91は、操作オブジェクト400をしゃがませるべく、しゃがみアニメーションを設定する。具体的には、操作オブジェクト400のしゃがみ画像は複数コマから構成されており、各コマの再生時間に応じて、各コマの画像データ格納位置情報及び表示位置情報を内部メモリ(図示せず)にセットする。ステップS149の後にステップS151に進まないのは、操作オブジェクト400をしゃがませるときは背景を静止させるからである。また、ステップS149の後に、しゃがみフラグをオフにしないのは、フットスイッチSW1〜SW4の状態が変化しない限り、しゃがんだ操作オブジェクト400の表示を持続させるからである。
一方、ステップS150では、図29のステップS137で登録されたモーション番号に応じて、操作オブジェクト400のアニメーションを設定する。なぜなら、ジャンプフラグ、サイドステップフラグ、及びしゃがみフラグの全てがオフだから、操作オブジェクト400の動作状態は、起立したままの停止状態、歩行状態、あるいはランニング状態のいずれかだからである。具体的には、モーション番号0が登録されているときは、起立して停止している操作オブジェクト400の画像データの格納位置情報及び表示位置情報を内部メモリ(図示せず)にセットし、モーション番号1〜6のいずれかが登録されているときは、アニメーション制御テーブルの対応するアニメーション時間(操作オブジェクト)に従って、各コマの画像データの格納位置情報及び表示位置情報を内部メモリ(図示せず)にセットする。
ステップS151では、高速プロセッサ91は、図29のステップS137で登録されたモーション番号に応じて、背景を制御する。具体的には、登録されたモーション番号に対応する、アニメーション制御テーブルのアニメーション時間(背景)に従って、各コマの画像データの格納位置情報及び表示位置情報を内部メモリ(図示せず)にセットする。
ここで、図21のステップS4及びS18の処理の詳細を説明する前に、いくつかの事柄を説明する。まず、関連事項として、仮想空間で操作オブジェクト400が歩行あるいはランニングするコースについて説明する。コースは、例えば、16個のコースセグメントを任意に組み合わせることにより構成される。そして、コースセグメント上の所定の各位置に、障害オブジェクト423,425,410,412及び/又は忍者オブジェクト414が配置される。この場合、コースセグメントの始端からの距離で、障害オブジェクトや忍者オブジェクトの配置を設定する。この距離は、仮想空間内での距離である。
仮想空間内の距離の表現方法の一例を説明する。上記のように、道路画像を含む背景401として、32コマの連続した背景画像が用意される。そして、背景画像が1コマ進むことを、操作オブジェクト400が仮想空間で一定距離進むことに対応させる。従って、本実施の形態では、仮想空間内での距離を、背景画像のコマ数によって表現する。このため、コースセグメントの全長や、コースセグメントの始端からの距離は、背景画像のコマ数によって表現されることになる。なお、本実施の形態では、各コースセグメントの全長を同一とする。ただし、異ならせることもできる。
コースセグメントの全長やコースセグメントに配置された障害オブジェクトの種類や数を考慮して、当該コースセグメントにおいて、操作オブジェクト400が、歩行あるいはランニングすべきステップ数Nsp(以下、「想定ステップ数Nsp」と呼ぶ。)、ショートサイドステップすべき数Nss(以下、「想定ショートサイドステップ数Nss」と呼ぶ。)、ロングサイドステップすべき数Nls(以下、「想定ロングサイドステップ数Nls」と呼ぶ。)、ジャンプすべき数Njp(以下、「想定ジャンプ数Njp」と呼ぶ。)、及びしゃがみ動作すべき数Ndw(以下、「想定しゃがみ数」と呼ぶ。)を設定する。各コースセグメントに配置された障害オブジェクトの種類や数は異なっているので、想定ステップ数Nsp、想定ショートサイドステップ数Nss、想定ロングサイドステップ数Nls、想定ジャンプ数Njp、及び想定しゃがみ数Ndwも異なる値に設定される。
ここで、ショートサイドステップとは、操作オブジェクト400が隣接するレーンに移動することを意味し、ロングサイドステップとは、操作オブジェクト400が、中央レーンCを飛び越えて、レーン移動することを意味する。また、プレイヤが、図18H、図18Iに示す踏み位置から、図18I、図18Jに示す踏み位置へ移動すること、その逆の移動、図18I、図18Jに示す踏み位置から、図18J、図18Kに示す踏み位置へ移動すること、あるいは、その逆の移動を、プレイヤのショートサイドステップと呼ぶ。プレイヤが、図18H、図18Iに示す踏み位置から、図18J、図18Kに示す踏み位置へ移動すること、及びその逆の移動を、プレイヤのロングサイドステップと呼ぶ。
一方、プレイヤが踏み動作(ステップ)するときの消費カロリーを実測し、1回の踏み動作(ステップ)に対する消費カロリーCsp(以下、「単位ステップカロリーCsp」と呼ぶ。)を算出する。1回の踏み動作とは、片足を上げて下ろす動作である。つまり、プレイヤの1回の踏み動作は、高速プロセッサ91がカウントする1ステップに対応する(図23のステップS52参照)。
また、プレイヤがショートサイドステップするときの消費カロリーを実測し、1回のショートサイドステップに対する消費カロリーを算出する。上記のように、図23のステップS52では、フットスイッチのオフからオンへの遷移を1ステップとカウントする。従って、プレイヤがショートサイドステップを1回したときのステップ数は、3ステップとなる。このため、1回のショートサイドステップに対する消費カロリーから、(2×単位ステップカロリーCsp)を差し引いた値を、「単位ショートサイドステップカロリーCss」とする。つまり、プレイヤがショートサイドステップする際の着地の2ステップは、単なる踏み動作とみなされる。
さらに、プレイヤがロングサイドステップするときの消費カロリーを実測し、1回のロングサイドステップに対する消費カロリーを算出する。そして、ショートサイドステップの場合と同様に、1回のロングサイドステップに対する消費カロリーから、(2×単位ステップカロリーCsp)を差し引いた値を、「単位ロングサイドステップカロリーCls」とする。つまり、プレイヤがロングトサイドステップする際の着地の2ステップは、単なる踏み動作とみなされる。
さらに、プレイヤがジャンプするときの消費カロリーを実測し、1回のジャンプに対する消費カロリーを算出する。プレイヤがジャンプを1回したときのステップ数は、4ステップとなる。このため、1回のジャンプに対する消費カロリーから、(2×単位ステップカロリーCsp)を差し引いた値を、「単位ジャンプカロリーCjp」とする。つまり、プレイヤがジャンプする際の踏み込みの2ステップは、単なる踏み動作とみなされる。
さらに、プレイヤがしゃがむときの消費カロリーを実測し、1回のしゃがみ動作に対する消費カロリーを算出する。プレイヤが両手をつくしゃがみ動作(図18G参照)を1回したときのステップ数は、4ステップとなる。このため、1回のしゃがみ動作に対する消費カロリーから、(2×単位ステップカロリーCsp)を差し引いた値を、「単位しゃがみカロリーCdw」とする。つまり、プレイヤがしゃがむ際の踏み込みの2ステップは、単なる踏み動作とみなされる。
これまで説明してきたように、フットスイッチSW1〜SW4のオン/オフ情報に従って、操作オブジェクト400は動作する。つまり、プレイヤの動きに応答して、操作オブジェクト400は動作する。従って、操作オブジェクト400の動きの種類(ショートサイドステップ/ロングサイドステップ/ジャンプ/しゃがみ/歩行/ランニング)とプレイヤの動きの種類とは、ほぼ一致あるいは一致すると考えられる。言い換えると、プレイヤは操作オブジェクト400と同様の動きをしている。従って、1コースセグメント当たりのプレイヤの消費カロリーCsgを次式により計算できる。
Csg=Cbn+Nrs×Csp …(3)
Cbn=Cas×(Nrs/Nsp) …(4)
Cas=(Nss×Css+Nls×Cls+Njp×Cjp+Ndw×Cdw) …(5)
従って、プレイ終了後(つまり、一定時間Tc経過後)の消費カロリーCtlは、コースセグメントごとに算出された消費カロリーCsgの和であり、次式のようになる。
Ctl=ΣCsg …(6)
ここで、式(3)のボーナス消費カロリーCbnについて説明する。歩行やランニングといった通常の踏み動作による消費カロリーは、式(3)の第2項(Nrs×Csp)によって表される。つまり、実ステップ数Nrsと単位ステップカロリーCspとの積によって表される。実ステップ数Nrsは、操作オブジェクト400が1コースセグメントの始端から終端に到達した際の、プレイヤの実際のステップ数である。ところが、サイドステップ、ジャンプ、及びしゃがみといった動作は、通常の踏み動作よりも多くのカロリーを消費する。この分を考慮したのがボーナス消費カロリーCbnである。
式(4)の想定ボーナス消費カロリーCasは、式(5)から分かるように、1コースセグメントに出現した全ての障害オブジェクトを操作オブジェクト400が回避しながら1コースセグメントの始端から終端に到達した際に、プレイヤが、サイドステップ、ジャンプ、及びしゃがみといった動作によって消費すると想定した消費カロリーである。一方、式(4)の(Nrs/Nsp)は、操作オブジェクト400が1コースセグメントの何割を進んだかを表す。
従って、実ステップ数Nrs=想定ステップ数Nspの場合は、想定ボーナス消費カロリーCasが、そのまま、式(3)の第2項に加算される。実ステップ数Nrs>想定ステップ数Nspの場合は、コースセグメントにおいて、プレイヤがより多くの踏み動作を行ったことになるため、それに応じて、想定ボーナス消費カロリーCasより大きいボーナス消費カロリーCbnが、式(3)の第2項に加算される。一方、実ステップ数Nrs<想定ステップ数Nspの場合は、コースセグメントにおいて、プレイヤがより少ない踏み動作を行ったことになるため、それに応じて、想定ボーナス消費カロリーCasより小さいボーナス消費カロリーCbnが、式(3)の第2項に加算される。
言うまでもないが、プログラムによる計算処理において、式(3)〜式(6)をそのまま実行する必要はなく、これらを展開及び/又は変形して、使用することができる。以下の例でも、これらの式をそのまま実行しているわけではなく、展開及び変形して使用している。
図31は、図21のステップS4の消費カロリー算出のための第1前処理の流れの一例を示すフローチャートである。図31に示すように、ステップS21にて、高速プロセッサ91は、操作オブジェクト400がコースセグメントの終端に到達したか否かを判断し、到達した場合はステップS22に進み、それ以外はメインルーチンにリターンする。
ステップS22にて、高速プロセッサ91は、当該コースセグメントに割り当てられた想定ステップ数Nspを累算する。従って、この処理により、1プレイ中で使用した最後のコースセグメントを除く全コースセグメントに対する想定ステップ数Nspの合計を得ることができる。
ステップS23にて、高速プロセッサ91は、当該コースセグメントに割り当てられた想定ショートサイドステップ数Nssを累算する。従って、この処理により、1プレイ中で使用した最後のコースセグメントを除く全コースセグメントに対する想定ショートサイドステップ数Nssの合計を得ることができる。
ステップS24にて、高速プロセッサ91は、当該コースセグメントに割り当てられた想定ロングサイドステップ数Nlsを累算する。従って、この処理により、1プレイ中で使用した最後のコースセグメントを除く全コースセグメントに対する想定ロングサイドステップ数Nlsの合計を得ることができる。
ステップS25にて、高速プロセッサ91は、当該コースセグメントに割り当てられた想定ジャンプ数Njpを累算する。従って、この処理により、1プレイ中で使用した最後のコースセグメントを除く全コースセグメントに対する想定ジャンプ数Njpの合計を得ることができる。
ステップS26にて、高速プロセッサ91は、当該コースセグメントに割り当てられた想定しゃがみ数Ndwを累算して、メインルーチンにリターンする。従って、この処理により、1プレイ中で使用した最後のコースセグメントを除く全コースセグメントに対する想定しゃがみ数Ndwの合計を得ることができる。
図32は、図21のステップS18の消費カロリー算出のための第2前処理の流れの一例を示すフローチャートである。図32に示すように、ステップS160にて、高速プロセッサ91は、最後のコースセグメントにおいて操作オブジェクト400が進んだ割合Rを算出する。
ステップS161にて、高速プロセッサ91は、最後のコースセグメントの想定ステップ数Nspに割合Rを乗算する。ステップS162にて、高速プロセッサ91は、上記乗算結果(ステップS161)を想定ステップ数の累算結果(ステップS22)に加算する。
ステップS163にて、高速プロセッサ91は、最後のコースセグメントの想定ショートサイドステップ数Nssに割合Rを乗算する。ステップS164にて、高速プロセッサ91は、上記乗算結果(ステップS163)を想定ショートサイドステップ数の累算結果(ステップS23)に加算する。
ステップS165にて、高速プロセッサ91は、最後のコースセグメントの想定ロングサイドステップ数Nlsに割合Rを乗算する。ステップS166にて、高速プロセッサ91は、上記乗算結果(ステップS165)を想定ロングサイドステップ数の累算結果(ステップS24)に加算する。
ステップS167にて、高速プロセッサ91は、最後のコースセグメントの想定ジャンプ数Njpに割合Rを乗算する。ステップS168にて、高速プロセッサ91は、上記乗算結果(ステップS167)を想定ジャンプ数の累算結果(ステップS25)に加算する。
ステップS169にて、高速プロセッサ91は、最後のコースセグメントの想定しゃがみ数Ndwに割合Rを乗算する。ステップS170にて、高速プロセッサ91は、上記乗算結果(ステップS169)を想定しゃがみ数の累算結果(ステップS26)に加算する。
ここで、ステップS161,S163,S165,S167及びS169の処理により、最後のコースセグメントの途中で一定時間Tcが経過してプレイが終了した場合でも、最終的な操作オブジェクト400の位置に応じた想定ステップ数、想定ショートサイドステップ数、想定ロングサイドステップ数、想定ジャンプ数、及び想定しゃがみ数を得ることができる。
また、ステップS162,S164,S166,S168及びS170の処理により、1プレイ中に使用した全コースセグメントについての、想定ステップ数の合計、想定ショートサイドステップ数の合計、想定ロングサイドステップ数の合計、想定ジャンプ数の合計、及び想定しゃがみ数の合計を得ることができる。
図21に戻って、ステップS19では、ステップS18で得られた想定ステップ数の合計、想定ショートサイドステップ数の合計、想定ロングサイドステップ数の合計、想定ジャンプ数の合計、及び想定しゃがみ数の合計、並びに、ステップS52で得られたプレイヤのステップ数の合計Ntlに基づいて、プレイヤの消費カロリーCtlを算出する。
つまり、想定ショートサイドステップ数の合計に単位ショートサイドステップカロリーCssを乗算したものと、想定ロングサイドステップ数の合計に単位ロングサイドステップカロリーClsを乗算したものと、想定ジャンプ数の合計に単位ジャンプカロリーCjpを乗算したものと、想定しゃがみ数の合計に単位しゃがみカロリーCdwを乗算したものと、を加算する。そして、その加算結果に、(プレイヤの総ステップ数Ntl/想定ステップ数の合計)を乗算する。さらに、この乗算結果に、(プレイヤの総ステップ数Ntl×単位ステップカロリーCsp)を乗算する。この乗算結果が、式(6)のプレイヤの消費カロリーCtlとなる。
上記のようなステップS4、ステップS5、ステップS18、及びステップS19の処理を実行することにより、結果として、式(3)〜式(6)を実行したことになる。
ここで、高速プロセッサ91は、プレイヤが入力したプレイヤの年令、性別、及び体重を加味して、より詳細な消費カロリーCrlを算出することもできる。この点を詳細に説明する。
上述した単位ステップカロリーCsp、単位ショートサイドステップカロリーCss、単位ロングサイドステップカロリーCls、単位ジャンプカロリーCjp、及び単位しゃがみカロリーCdwを、基準となる人間の単位時間及び単位重量当たりの値として得ておく。本実施の形態では、20歳の日本人女性の単位時間(1分)及び単位重量(1kg)当たりの値を実測しておく(cal/分・kg)。
そうすると、ステップS19で算出した消費カロリーCtlは、単位時間及び単位重量あたりの値となるので、高速プロセッサ91は、プレイ時間Tc及びプレイヤが入力した自身の体重(kg)を、消費カロリーCtlに乗算する。これにより、プレイヤの体重が加味された消費カロリーCwhを得る。
また、年令係数ACを設定する。本実施の形態では、20歳以上59歳までは、年令係数AC=0.008、60歳以上では、年令係数AC=0.006、とする。そして、高速プロセッサ91は、プレイヤが入力した年令Agを用いて、次式により、年令を加味した消費カロリーCagを算出する。
Cag=Cwh×(1−(Ag−20)×AC) …(7)
さらに、性別係数SCを設定する。本実施の形態では、女性を基準としているので、プレイヤが入力した性別が男性の場合に、消費カロリーCagに性別係数SCを乗算する。本実施の形態では、性別係数SC=1.347とする。
つまり、最終的な消費カロリーCrlは、プレイヤが男性の場合は、式(8)で算出され、女性の場合は、式(9)で算出される。
Crl=Cag×SC …(8)
Crl=Cag×1 …(9)
さらに、人種係数ECを用意して、人種を考慮した消費カロリーを算出することもできる。上記では、基準となる人間が日本人であるため、例えば、プレイヤがアメリカ人の場合は、男性及び女性のそれぞれに対して人種係数EC(例えば、男1.10、女1.13)を用意して、消費カロリーCrlに乗算することにより、最終的な消費カロリーを得ることができる。
さて、高速プロセッサ91は、上記のような処理を行う前に、下記のようなチュートリアル(個別指導)画面を表示する処理を行うこともできる。
図33は、図1のテレビジョンモニタ5に表示されるチュートリアル画面(停止)の例示図である。図33に示すように、この画面は、操作オブジェクト400、指導文表示部454、ガイドオブジェクト450、及びマットオブジェクト452を含む。マットオブジェクト452は、マット2に対応し、マットオブジェクト452の領域f1〜f4は、それぞれ、マット2の踏み領域ST1〜ST4に対応している。
このチュートリアル画面は、操作オブジェクト400を停止させるための方法をプレイヤに教えるものである。この画面では、ガイドオブジェクト450が、マットオブジェクト452の領域f2及びf3に停止している状態、及び、操作オブジェクト400が中央レーンCに停止している状態が示されている。プレイヤは、ガイドオブジェクト450の動作を見ることで、操作オブジェクト400を停止させる方法を把握できる。
図34は、図1のテレビジョンモニタ5に表示されるチュートリアル画面(歩行/ランニング)の例示図である。図34に示すように、このチュートリアル画面は、操作オブジェクト400を歩行あるいはランニングさせるための方法をプレイヤに教えるものである。この画面では、ガイドオブジェクト450が、マットオブジェクト452の領域f2及びf3上で足踏みしている様子、及び、操作オブジェクト400が中央レーンCを歩行あるいはランニングしている様子が示される。プレイヤは、ガイドオブジェクト450の動作を見ることで、操作オブジェクト400を歩行あるいはランニングさせる方法を把握できる。
図35は、図1のテレビジョンモニタ5に表示されるチュートリアル画面(ジャンプ)の例示図である。図35に示すように、このチュートリアル画面は、操作オブジェクト400をジャンプさせるための方法をプレイヤに教えるものである。この画面では、ガイドオブジェクト450が、マットオブジェクト452上でジャンプしている様子、及び、操作オブジェクト400が中央レーンCでジャンプしている様子が示される。プレイヤは、ガイドオブジェクト450の動作を見ることで、操作オブジェクト400をジャンプさせる方法を把握できる。
図36は、図1のテレビジョンモニタ5に表示されるチュートリアル画面(しゃがみ)の例示図である。図36に示すように、このチュートリアル画面は、操作オブジェクト400をしゃがませるための方法をプレイヤに教えるものである。この画面では、ガイドオブジェクト450が、マットオブジェクト452の領域f3及びf4にのって起立した状態からしゃがんで、領域f2に左手をつく様子、及び、操作オブジェクト400が右レーンRでしゃがむ様子が示される。プレイヤは、ガイドオブジェクト450の動作を見ることで、操作オブジェクト400をしゃがませる方法を把握できる。
図37は、図1のテレビジョンモニタ5に表示されるチュートリアル画面(サイドステップ)の例示図である。図37に示すように、このチュートリアル画面は、操作オブジェクト400をサイドステップさせるための方法をプレイヤに教えるものである。この画面では、ガイドオブジェクト450が、マットオブジェクト452の領域f2及びf3から領域f1及びf2にステップする様子、及び、操作オブジェクト400が中央レーンCから左レーンLにサイドステップする様子が示される。プレイヤは、ガイドオブジェクト450の動作を見ることで、操作オブジェクト400をサイドステップせる方法を把握できる。
図38は、本発明の実施の形態2による疑似体験装置の第1変形例の説明図である。図38に示すように、第1変形例では、高速プロセッサ91は、テレビジョンモニタ5に、図38に示す映像を表示する。具体的には、テレビジョンモニタ5には、背景422、キャラクタ420、ペースメーカ424、右上に経過時間、左上にプレイヤとキャラクタ420との仮想空間上での差を視覚的に示すもの、及び、右下にプレイヤのステップ数(フットスイッチSW1〜SW4のオフからオンへの遷移の回数)が表示される。
高速プロセッサ91は、プログラムに規定された速度で、キャラクタ420を仮想空間内で前方へ移動させる(走らせる)。この速度は、一定速度でなくてもよい。
プレイヤは、キャラクタ420の動きに合わせて、マット2の上で足踏みをして、踏み領域ST1〜ST4を踏み込み、フットスイッチSW1〜SW4のオフからオンへの遷移を発生させる。高速プロセッサ91は、フットスイッチSW1〜SW4のオフからオンへの遷移のたびに、仮想空間の背景422を後方に移動させ、プレイヤがあたかも仮想空間内を前方へ移動しているかのような映像をテレビジョンモニタ5に表示する。この場合、高速プロセッサ91は、フットスイッチSW1〜SW4のオフからオンへの遷移と遷移との時間間隔に応じて、背景422を後方に移動させる速度を変化させる。つまり、その時間間隔が長ければ(プレイヤの足踏みが遅い)、速度を遅くし、短ければ(プレイヤの足踏みが速い)、速度を速くする。このように、背景422は、常にプレイヤからの視点で表示される。
従って、プレイヤが、キャラクタ420の移動速度に応じた足踏みを行うと、キャラクタ420は、常に同じ大きさで表示され、つまり、仮想空間内をあたかもキャラクタ420と同じ速度で走っているような表示が行われる。プレイヤが、キャラクタ420の移動速度に応じた足踏みよりも遅い足踏みをすると、背景422の後方への移動も遅くなり、キャラクタ420は、先に行ってしまい、小さくなっていく。ただし、キャラクタ420が、仮想空間上のプレイヤの位置から一定距離だけ先に進んだ場合は、キャラクタ420を停止させる。プレイヤが、キャラクタ420の移動速度に応じた足踏みよりも速い足踏みをすると、背景422の後方への移動も速くなり、キャラクタ420に追いつき、ついには追い越してしまう。
ここで、プレイヤの足踏みを支援すべくペースメーカ424が表示されている。このペースメーカ424は、人間の全体像を表す形状をしており、キャラクタ420の移動速度に応じた足踏みをするアニメーションである。プレイヤは、このペースメーカ424を見ることによっても、キャラクタ420の速度に応じた足踏みが可能になる。
また、フットスイッチSW4のオフからオンへの遷移が発生したときに、高速プロセッサ91は、画面を左方向にスクロールさせる。一方、フットスイッチSW1のオフからオンへの遷移が発生したときに、高速プロセッサ91は、画面を右方向にスクロールさせる。このようにすることで、プレイヤの左右の移動をテレビジョンモニタ5の映像に反映できる。
図39は、本発明の実施の形態2による疑似体験装置の第2変形例の説明図である。図39を参照して、プレイヤは、テレビジョンモニタ5に表示されたキャラクタ430をマット2により操作できる。言い換えると、高速プロセッサ91は、キャラクタ430をテレビジョンモニタ5に表示し、フットスイッチSW1〜SW4のオフからオンへの遷移に応じて、キャラクタ430の手足を動かすことができる。具体的には、フットスイッチSW1のオフからオンへの遷移で、キャラクタ430の左足を動かし、フットスイッチSW2のオフからオンへの遷移で、キャラクタ430の左手を動かし、フットスイッチSW3のオフからオンへの遷移で、キャラクタ430の右手を動かし、フットスイッチSW4のオフからオンへの遷移で、キャラクタ430の右足を動かす。
さて、以上のように、本実施の形態では、操作オブジェクト400は、プレイヤが行う様々な動作(静止状態、歩行動作、ランニング動作、サイドステップ動作、ジャンプ動作、及びしゃがみ動作)と同様の動作を行う。従って、プレイヤは、これらの動作をすることによって、操作オブジェクト400を通じて、自分があたかも仮想空間で動作をしているかのような感覚を持つことができる。つまり、仮想空間を擬似的に体験できる。
また、本実施の形態では、プレイヤの踏込みのみに基づく動作(静止状態、歩行動作、ランニング動作、サイドステップ動作、及びジャンプ動作)だけでなく、しゃがみ動作をも容易に検知できる。なぜならば、両足で2つの踏み領域を踏んでいるときは、2つのフットスイッチが入力を検知するところ、プレイヤが、片手あるいは両手を踏み領域についているときは、さらに1つあるいは2つのフットスイッチが入力を検知し、このような場合は、プレイヤがしゃがんだと想定できるからである。
さらに、本実施の形態では、プレイヤの実ステップ数Nrsさえ計測すれば、プレイヤが消費したエネルギーの概算値を算出できる(式(3)参照)。しかも、プレイヤの実ステップ数Nrsに応じて、予め定められた動作に対する予め定められたエネルギー値(つまり、想定ボーナス消費カロリー)Cas(式(5)参照)を修正して(式(4)参照)、その修正値(つまり、ボーナス消費カロリー)Cbnを加算しているので(式(3)参照)、算出するエネルギー値の精度の向上を図ることができる。
つまり、予め定められた動作は、通常のステップではなく、ショートサイドステップ動作、ロングサイドステップ動作、ジャンプ動作、及びしゃがみ動作を含む特別の動作であるところ、プレイヤが、通常のステップ以外にこれらの動作を行うと想定して、通常のステップに基づく消費エネルギーに、これらの動作を加味することにより、算出するエネルギー値の精度の向上を図っている。
上記のように、テレビジョンモニタ5に表示された仮想空間内のコースに、プレイヤに対して動作を指示するための指示オブジェクト(つまり、障害オブジェクト)423,425,410及び412を出現させている。従って、プレイヤは、指示された動きを行おうとするため、コースの始端から終端までの間にプレイヤがどのような動きをするのかを予測できる。この予測に基づいて、想定ボーナス消費カロリーCasを設定する。
想定ボーナス消費カロリーCasを修正しているのは、実ステップ数Nrlに関係なく一律に、想定ボーナス消費カロリーCasを加算したのでは、プレイヤの動きを反映したことにならず、むしろ精度が低下するからである。
(実施の形態3)
本発明の実施の形態3によるエクササイズ支援装置のハードウエアとして、実施の形態1のマットシステムのハードウエアを使用する。
図40は、本発明の実施の形態3によるエクササイズ支援装置によって、図1のテレビジョンモニタ5に表示される画面の例示図である。図40に示すように、高速プロセッサ91は、マット2に対応したマットオブジェクト415、キャラクタ406、キャラクタ406に対するマットオブジェクト411、時間表示部421、失敗数表示部404、及び装飾インジケータ416をテレビジョンモニタ5に表示する。マットオブジェクト415は、マット2の踏み領域ST1(フットスイッチSW1)〜ST4(フットスイッチSW4)のそれぞれ対応した応答オブジェクトF1〜F4からなる。
また、応答オブジェクトF1に対応する移動経路(応答オブジェクトF1を通る垂線上)、応答オブジェクトF2に対応する移動経路(応答オブジェクトF2を通る垂線上)、応答オブジェクトF3に対応する移動経路(応答オブジェクトF3を通る垂線上)、及び応答オブジェクトF4に対応する移動経路(応答オブジェクトF4を通る垂線上)の各々には、単数又は複数の移動オブジェクト408及び/又は409が表示される。
各移動オブジェクトは、移動経路の上端に出現し、上から下へ所定の加速度で落下する。この場合、移動オブジェクトの出現間隔は、音楽に合った間隔に設定される。移動オブジェクト408は、片足でマット2の踏み領域ST1〜ST4の1つを踏むことを指示し、移動オブジェクト409は、両足でマット2の踏み領域ST1〜ST4の1つを踏むことを指示する。
高速プロセッサ91は、踏み領域が踏まれて、対応するフットスイッチのオフからオンへの遷移を検知する。そして、高速プロセッサ91は、オフからオンの遷移を検知したフットスイッチ(踏み領域)に対応する応答オブジェクトを緑色に変更し、すぐに元の色に戻す。従って、プレイヤが、踏み領域を踏み込んだ瞬間、踏み込まれた踏み領域に対応する応答オブジェクトの色が緑に変化して元に戻る。
ただし、応答オブジェクトに、対応する移動オブジェクトが到達したときに、対応するフットスイッチのオフからオンへの遷移があったときは(つまり、ヒットしたとき)、高速プロセッサ91は、その応答オブジェクトを赤色に変更し、すぐに元の色に戻す。図40の例では、応答オブジェクトF3の領域399が赤色に変化する様子が示されている。高速プロセッサ91は、このようなヒット時には、所定の音をテレビジョンモニタ5から出力するとともに、ヒットした移動オブジェクトを反対方向に移動して(跳ね返して)、画面の上端で消滅させる。一方、移動オブジェクトが、対応する応答オブジェクトに到達したタイミングで、対応するフットスイッチのオフからオンへの遷移がない場合は(つまり、失敗したとき)、高速プロセッサ91は、その時点でその移動オブジェクトを消滅させる。
上述のように、移動オブジェクトの出現間隔は、音楽に合った間隔に設定される。従って、プレイヤが、移動オブジェクトが対応する応答オブジェクトに到達したタイミングで、対応する踏み領域を踏み込むと(つまり、対応するフットスイッチをオフからオンにすることにより)、結果的に音楽に合った踏み動作を行うことになる。
さらに、マットオブジェクト411の領域f1〜f4は、それぞれ、踏み領域ST1〜ST4に対応している。従って、高速プロセッサ91は、マットオブジェクト411(つまり、領域f1〜f4)上でキャラクタ406の足を動かして、踏み領域ST1〜ST4を踏み込むタイミングをガイドする。もちろん、このタイミングは、移動オブジェクトが対応する応答オブジェクトに到達するタイミングに合致している。また、高速プロセッサ91は、音楽に合わせて、キャラクタ406の手を動かして、プレイヤに対し手の動きもガイドする。
このように、移動オブジェクト408及び409やキャラクタ406に従って、踏み動作や手を動かす動作を行うだけで、音楽に合った運動を行うことができる。言い換えると、音楽に合わせて、手足を動かすので、楽しく運動することができる。従って、挫折しがちな運動を継続的に行う手助けができる。
本実施の形態では、キャラクタ406がエアロビクスダンスを行うことにより、プレイヤに対して、手足の動きをガイド(マット2の踏み位置のガイドを含む。)する例を挙げる。高速プロセッサ91は、時間表示部421に、音楽の経過時間あるいは残り時間を表示する。また、高速プロセッサ91は、失敗数表示部404に、踏み動作の失敗数、つまり、跳ね返されずに消滅した移動オブジェクトの数を表示する。さらに、高速プロセッサ91は、画面上端での移動オブジェクトの数、つまり、移動オブジェクトの出現時点の数に応じて、装飾インジケータ416の色を変化させる。つまり、装飾インジケータ416は、4分割されており、例えば、出現した移動オブジェクトの数が1つのときは、分割された1つ分の色を変化させる。この処理は、移動オブジェクトが出現するたびに行われる。この各分割領域は、さらに、5分割されており、高速プロセッサ91は、所定時間が経過するたびに、上から順番に1個ずつ元の色に戻していく。
高速プロセッサ91は、キャラクタ406がガイドする手足の動き(エアロビクスダンス)に沿って、プレイヤが運動したときの消費カロリーを計算して、テレビジョンモニタ5に表示する(後述の図41参照)。例えば、モデルとなる人間が、キャラクタ406がガイドする手足の動きに沿った運動をしたときの消費カロリーを予め測定して、その値を得ておく。そして、プレイヤから入力された、プレイヤの体重、性別、及び年齢を加味して、モデルの消費カロリーを修正して、そのプレイヤの消費カロリーとする。
図41は、図1のテレビジョンモニタ5に表示される結果画面の例示図である。図41に示すように、1エクササイズが終了すると、結果画面が表示される。この結果画面は、運動量表示部419および時間表示部403を含む。運動量表示部419には、1エクササイズでの総ステップ数及び消費カロリーが表示される。時間表示部403には、1エクササイズの時間が表示される。
次に、高速プロセッサ91がメロディを再生する際に用いるメロディ用楽譜データについて説明する。メロディ用楽譜データは、メロディ制御情報が時系列に配置されたデータである。
図42は、メロディ用楽譜データの説明図である。図42に示すように、メロディ制御情報は、コマンド、ノートナンバ/待機時間情報、ベロシティ、ゲートタイム、及び楽器指定情報からなる。
ノートオンは、音を出すコマンド、待機は、待機時間を設定するコマンド、である。待機時間は、次のコマンドを読み出すまでの時間(ある音符から次の音符までの時間)である。ノートナンバは、音の高さ(ピッチ)を指定する情報である。待機時間情報は、設定する待機時間を指定する情報である。楽器指定情報は、どの楽器の音色を使うかを指定する情報である。ベロシティは、音の強弱の情報、つまり、音量の情報、である。ゲートタイムは、音が発音される長さである。
次に、高速プロセッサ91がキャラクタ406の動きを制御するために使用するダンスコード用楽譜データについて説明する。ダンスコード用楽譜データは、ダンス制御情報が時系列に配置されたデータである。
図43Aは、ダンスコード用楽譜データの説明図である。図43Aに示すように、ダンス制御情報は、コマンド、ノートナンバ/待機時間情報、ベロシティ、及び楽器指定情報からなる。ダンスコード用楽譜データでは、楽器指定情報は、音楽を奏でる楽器(音色)を示す番号ではなく、言わば、キャラクタ406にダンスをさせる楽器を示す番号である。このような楽器指定情報により、ダンスコード用楽譜データが、音楽を奏でる楽譜データではなく、キャラクタ406にダンスを行わせる楽譜データであることが示される。
従って、ノートオンは、音を出すコマンドではなく、キャラクタ406の動作を指定することを示すコマンドである。また、ノートナンバは、音の高さ(ピッチ)を指定する情報ではなく、また、ベロシティは、音の強弱の情報ではない。ノートナンバ及びベロシティは、キャラクタ406にどのような動作をさせるかを指示する情報であり、ノートナンバ及びベロシティの組み合わせにより、ダンスコードが生成されて、このダンスコードにより、キャラクタ406の動作が指定される。この点を詳しく説明する。
図43Bは、ノートナンバとベロシティとダンスコードとキャラクタ406の動作との関係図である。図43Bに示すように、ノートナンバとベロシティとの組み合わせによりダンスコードが規定される。そして、ダンスコードによって、キャラクタ406の動作が指定される。つまり、ノートナンバとベロシティとの組み合わせによりキャラクタ406の動作が指定されることになる。本実施の形態では、キャラクタ406の動作として、約100種類の動作を用意する。この約100種類のそれぞれの動作を「単位動作」と呼ぶことにする。また、単位動作を表すアニメーションを、「単位アニメーション」と呼ぶこともある。
例えば、ダンスコード00hで指定される単位動作「待機1」は、キャラクタ406がマットオブジェクト411の領域f2及びf3を踏んで起立している画像を示す。また、例えば、ダンスコード03hで指定される単位動作「移動右1」は、キャラクタ406がマットオブジェクト411の領域f1及びf2から領域f1及びf3に足を移動する(つまり、領域f2を踏んだ足を領域f3に移動する)アニメーション画像を示す。このように、様々なダンスコードによって様々な単位動作を指定できる。もちろん、単位動作には、キャラクタ406の足だけでなく、手を含む体全体の動きが含まれる。
このようなダンスコードで指定される単位動作の組み合わせにより、キャラクタ406が行うエアロビクスダンスが構成される。なお、本実施の形態では、ノートナンバ「81」は、ダンスコード用楽譜データの先頭に配置するダミーデータであり、ダンスコードの規定には用いられない。こうすることで、メロディ用楽譜データとダンスコード用楽譜データとの先頭を揃えている。
次に、高速プロセッサ91が移動オブジェクト408及び409を制御するために使用する移動オブジェクト用楽譜データについて説明する。移動オブジェクト用楽譜データは、移動オブジェクト制御情報が時系列に配置されたデータである。
図44Aは、移動オブジェクト用楽譜データの説明図である。図44Aに示すように、移動オブジェクト制御情報は、コマンド、ノートナンバ/待機時間情報、及び、楽器指定情報、からなる。
移動オブジェクト用楽譜データでは、楽器指定情報は、音楽を奏でる楽器(音色)を示す番号ではなく、言わば、移動オブジェクト408及び409を出現させる楽器を示す番号である。このような楽器指定情報により、移動オブジェクト用楽譜データが、音楽を奏でる楽譜データではなく、移動オブジェクト408及び409を出現させる楽譜データであることが示される。
従って、ノートオンは、音を出すコマンドではなく、移動オブジェクト408及び409を出現させるコマンドである。そして、ノートナンバは、音の高さ(ピッチ)を指定する情報ではなく、どの移動オブジェクトをどの移動経路に出現させるかを示す情報である。この点を詳しく説明する。
図44Bは、移動オブジェクト用楽譜データで使用されるノートナンバと、移動経路/移動オブジェクトと、の関係図である。図44Bに示すように、例えば、ノートナンバ「76」は、移動オブジェクト408を移動経路Lに出現させることを意味する。また、例えば、ノートナンバ「65」は、移動オブジェクト409を移動経路Lに出現させることを意味する。
ここで、応答オブジェクトF1に立てた仮想垂線に沿った経路を移動経路L、応答オブジェクトF2に立てた仮想垂線に沿った経路を移動経路CL、応答オブジェクトF3に立てた仮想垂線に沿った経路を移動経路CR、応答オブジェクトF4に立てた仮想垂線に沿った経路を移動経路Rと呼ぶ。
また、例えば、ノートナンバ「81」は、移動オブジェクト用楽譜データの先頭に配置するダミーデータであり、どの移動オブジェクトをどの移動経路に出現させるかを示す情報ではない。こうすることで、メロディ用楽譜データと移動オブジェクト用楽譜データとの先頭を揃えている。また、例えば、ノートナンバ「79」は、エクササイズ終了を意味するデータであり、移動オブジェクト用楽譜データの最後尾に配置される。なお、ノートナンバ「79」は、どの移動オブジェクトをどの移動経路に出現させるかを示す情報ではない。
次に、高速プロセッサ91によるキャラクタ406の制御(ダンスコード登録、ダンス管理、及びダンス制御)について説明する。
図45は、ダンスコード用楽譜データの例示図である。図46は、図45のダンスコード用楽譜データに基づくダンス管理及び制御の説明図である。図47は、図46のダンス管理及び制御の説明のためのタイムチャートである。
図46の示すように、高速プロセッサ91は、キャラクタ406の制御のために、内部メモリ(図示せず)に、バッファ領域(ダンス管理バッファBm及びダンス制御バッファBc)を確保する。ダンス管理バッファBmは、ビデオフレーム数情報を格納するバッファ700及びダンスコードを格納するバッファ701からなる。各バッファ700及び701は、FIFO(first−infirst−out)構造を有し、例えば、記憶容量は8バイトである。
また、ダンス制御バッファBcは、再生時間情報Pfを格納するバッファ702、ダンスコードを格納するバッファ703、及び再生カウンタPcを格納するバッファ704からなる。再生カウンタPcは、ビデオフレームが更新されるたびに、1つカウントアップされる。各バッファ702〜704の記憶容量は、例えば、1バイトである。
高速プロセッサ91は、ダンス制御バッファBcに格納された値に基づいて、再生するコマを決定する。この点を詳細に説明する。ダンスコードが示すアニメーション画像のコマ数を「St」、再生するコマの番号(以下、「再生コマ番号」と呼ぶ。)を「Sc」とする。本実施の形態では、高速プロセッサ91は、次式により、再生コマ番号Scを算出して、再生コマ番号Scが示すコマをテレビジョンモニタ5に表示する。
Sc=St×(Pc/Pf) …(10)
ただし、小数点以下は切り捨てる。また、アニメーション画像を構成する各コマの番号は、「0」から開始するとする。また、図中、再生時間情報Pf及び再生カウンタPcは、ビデオフレーム数で表している。
以上の点を踏まえて、図45〜図47を参照しながら、キャラクタ406の制御について、具体例を挙げながら説明する。
まず、高速プロセッサ91は、ダンス制御バッファBcのバッファ702,703及び704にそれぞれ、再生時間「255」、ダンスコード「00h」、及び「0」を初期値として格納し(図46(a))、再生カウンタPcのインクリメントを開始する。この初期値が、後述の楽曲に合わせる必要のないキャラクタ406のアニメーション(楽曲の再生を待っている待機状態のキャラクタ406のアニメーション)に相当する。
高速プロセッサ91は、開始ノートナンバ「81」の次のコマンドが待機であるため、待機時間として設定されたビデオフレーム数「60」だけ、ダンスコード用楽譜データからの情報の読み出しを待機する(図45参照)。この間、高速プロセッサ91は、再生カウンタPcのカウントアップを行いながら、再生コマ番号Scを算出して、キャラクタ406の動作を制御する。
高速プロセッサ91は、待機時間としてのビデオフレーム数「60」が経過したときに、次のコマンド(ノートオン)を読み出して、対応するノートナンバ「58」及びベロシティ「100」からダンスコード「01h」を生成する(図45参照)。そして、生成したダンスコード「01h」をバッファ701の最後尾(この場合は最後尾=先頭)に、ビデオフレーム数「255」をバッファ700の最後尾(この場合は最後尾=先頭)に格納する(図46(b))。
次のコマンドは「待機」であるため、高速プロセッサ91は、待機時間として設定されたビデオフレーム数「60」だけ、ダンスコード用楽譜データからの情報の読み出しを待機する(図45参照)。この間も、高速プロセッサ91は、再生カウンタPcのカウントアップを行いながら、再生コマ番号Scを算出して、キャラクタ406の動作を制御する。また、この間、高速プロセッサ91は、バッファ700のビデオフレーム数のカウントダウンを行う。
高速プロセッサ91は、待機時間としてのビデオフレーム数「60」が経過したときに、次のコマンド(ノートオン)を読み出して、対応するノートナンバ「58」及びベロシティ「100」からダンスコード「01h」を生成する(図45参照)。そして、生成したダンスコード「01h」をバッファ701の最後尾に、ビデオフレーム数「255」をバッファ700の最後尾に格納する(図46(c))。
次のコマンドは「待機」であるため、高速プロセッサ91は、待機時間として設定されたビデオフレーム数「60」だけ、ダンスコード用楽譜データからの情報の読み出しを待機する(図45参照)。この間も、高速プロセッサ91は、再生カウンタPcのカウントアップを行いながら、再生コマ番号Scを算出して、キャラクタ406の動作を制御するとともに、バッファ700のビデオフレーム数のカウントダウンを行う。
高速プロセッサ91は、待機時間としてのビデオフレーム数「60」が経過したときに、次のコマンド(ノートオン)を読み出して、対応するノートナンバ「58」及びベロシティ「100」からダンスコード「01h」を生成する(図45参照)。そして、生成したダンスコード「01h」をバッファ701の最後尾に、ビデオフレーム数「255」をバッファ700の最後尾に格納する(図46(d))。
次のコマンドは「待機」であるため、高速プロセッサ91は、待機時間として設定されたビデオフレーム数「120」だけ、ダンスコード用楽譜データからの情報の読み出しを待機する(図45参照)。この間も、高速プロセッサ91は、再生カウンタPcのカウントアップを行いながら、再生コマ番号Scを算出して、キャラクタ406の動作を制御するとともに、バッファ700のビデオフレーム数のカウントダウンを行う。
ところが、設定された待機時間が経過する前に、つまり、ビデオフレーム数「75」が経過したときに、再生カウンタPc=再生時間情報Pfとなる時間が到来する。このとき、高速プロセッサ91は、バッファ700及び701の先頭のビデオフレーム数「60」及びダンスコード「01h」を取り出して、それぞれを、バッファ702及び703に格納すると共に、再生カウンタPcを「0」にする(図46(e))。
高速プロセッサ91は、ビデオフレーム数「45」の経過により、待機時間が終了すると、コマンド(ノートオン)を読み出して、対応するノートナンバ「48」及びベロシティ「70」からダンスコード「02h」を生成する(図45参照)。そして、生成したダンスコード「02h」をバッファ701の最後尾に、ビデオフレーム数「255」をバッファ700の最後尾に格納する(図46(f))。
次のコマンドは「待機」であるため、高速プロセッサ91は、待機時間として設定されたビデオフレーム数「120」だけ、ダンスコード用楽譜データからの情報の読み出しを待機する(図45参照)。この間も、高速プロセッサ91は、再生カウンタPcのカウントアップを行いながら、再生コマ番号Scを算出して、キャラクタ406を制御するとともに、バッファ700のビデオフレーム数のカウントダウンを行う。
ところが、設定された待機時間が経過する前に、つまり、ビデオフレーム数「15」が経過したときに、再生カウンタPc=再生時間情報Pfとなる時間が到来する。このとき、高速プロセッサ91は、バッファ700及び701の先頭のビデオフレーム数「60」及びダンスコード「01h」を取り出して、それぞれを、バッファ702及び703に格納する(図46(g))。
さらに、設定された待機時間が経過する前に、つまり、ビデオフレーム数「60」が経過したときに、再生カウンタPc=再生時間情報Pfとなる時間が到来する。このとき、高速プロセッサ91は、バッファ700及び701の先頭のビデオフレーム数「60」及びダンスコード「01h」を取り出して、それぞれを、バッファ702及び703に格納する(図46(h))。
高速プロセッサ91は、ビデオフレーム数「45」の経過により、待機時間が終了すると、コマンド(ノートオン)を読み出して、対応するノートナンバ「48」及びベロシティ「70」からダンスコード「02h」を生成する(図45参照)。そして、生成したダンスコード「02h」をバッファ701の最後尾に、ビデオフレーム数「255」をバッファ700の最後尾に格納する(図46(i))。
次のコマンドは「待機」であるため、高速プロセッサ91は、待機時間として設定されたビデオフレーム数「60」だけ、ダンスコード用楽譜データからの情報の読み出しを待機する(図45参照)。この間も、高速プロセッサ91は、再生カウンタPcのカウントアップを行いながら、再生コマ番号Scを算出して、キャラクタ406を制御するとともに、バッファ700のビデオフレーム数のカウントダウンを行う。
ところが、設定された待機時間が経過する前に、つまり、ビデオフレーム数「15」が経過したときに、再生カウンタPc=再生時間情報Pfとなる時間が到来する。このとき、高速プロセッサ91は、バッファ700及び701の先頭のビデオフレーム数「120」及びダンスコード「02h」を取り出して、それぞれを、バッファ702及び703に格納する(図46(j))。
高速プロセッサ91は、ビデオフレーム数「45」の経過により、待機時間が終了すると、コマンド(ノートオン)を読み出して、対応するノートナンバ「60」及びベロシティ「100」からダンスコード「00h」を生成する(図45参照)。そして、生成したダンスコード「00h」をバッファ701の最後尾に、ビデオフレーム数「255」をバッファ700の最後尾に格納する(図46(k))。
ビデオフレーム数「75」が経過し、再生カウンタPc=再生時間情報Pfになると、高速プロセッサ91は、バッファ700及び701の先頭のビデオフレーム数「120」及びダンスコード「02h」を取り出して、それぞれを、バッファ702及び703に格納すると共に、再生カウンタPcを「0」にする(図46(l))。
さらに、ビデオフレーム数「120」が経過して、再生カウンタPc=再生時間情報Pfになると、高速プロセッサ91は、バッファ700及び701の先頭のビデオフレーム数「60」及びダンスコード「00h」を取り出して、それぞれを、バッファ702及び703に格納すると共に、再生カウンタPcを「0」にする(図46(m))。
そして、高速プロセッサ91は、再生カウンタPc=再生時間情報Pfとなるまで、最後のダンスコード「00h」が示すアニメーション画像をテレビジョンモニタ5に表示する(図46(n))。
上記例を別の観点から説明する。図45及び図47から分かるように、単位動作を表すアニメーションの再生終了点は指定されるが、再生開始点は指定されていない。例を挙げて詳しく説明する。図47を参照して、ダンス管理バッファBmに四番目に登録されるダンスコード「02h」に着目する(図47の上から5段目)。ダンスコード「02h」の一つ前のダンスコード「01h」の再生終了点が、ダンスコード「02h」の再生開始点になっている。一方、このダンスコード「02h」の再生終了点は、このダンスコード「02h」がダンス管理バッファBmに登録される時に登録されるビデオフレーム数「255」により指定されている。つまり、登録からビデオフレーム数「255」が経過した時が、このダンスコード「02h」の再生終了点となる。他のダンスコードについても同様である。
同じ例を用いて、再生時間がどのようにして決定されるかを説明する。これは、ダンスコード「02h」を登録するタイミングにより決定される。図47から分かるように、注目しているダンスコード「02h」の登録は、一つ前のダンスコード「01h」の登録から、ビデオフレーム数「120」が経過した時である。このビデオフレーム数「120」が結果的にダンスコード「02h」の再生時間を表すことになる。つまり、図45のダンスコード用楽譜データにおいて、このダンスコード「02h」(つまり、ノートナンバ「48」及びベロシティ「70」)に対応するノートオンコマンドの一つ前の待機コマンドに対応する待機時間「120」が、このダンスコード「02h」の再生時間を表す。
このことから、ダンスコード用楽譜データが、このダンスコード「02h」の再生終了点を指定していることが理解できる。他のダンスコードについても同様である。このように、ノートオンと待機との関係は、メロディ用楽譜データとは逆の関係になっている。つまり、メロディ用楽譜データでは、ノートオンコマンドの次の(つまり、1つ後の)待機コマンドが、そのノートオンコマンドで指定される音符の長さを示す。このことから、メロディ用楽譜データが、その音符の再生開始点を指定していることが理解できる。この点は、移動オブジェクト用楽譜データも同様である。
以上のように、ノートオンコマンドの一つ前の待機コマンドで、そのノートオンコマンドに対応するノートナンバ及びベロシティで規定されるダンスコードの登録タイミングを制御する(図45参照)。そして、そのダンスコードの登録と同時にビデオフレーム数「255」のカウントダウンを開始する。これらは、ダンス管理バッファBmで実行される(図46参照)。さらに、ダンス制御バッファBcに格納されたダンスコードの再生が終了した時に、ダンス管理バッファBmの先頭のビデオフレーム数及びダンスコードがダンス制御バッファBcに格納されると共に、再生カウンタPcがクリアされる。これにより、新たなダンスコードの再生が開始される(図46参照)。このように、一つ前のダンスコードの再生終了点が、新たなダンスコードの再生開始点となる(図47参照)。
この場合、ダンス制御バッファBcに格納されたダンスコードの再生が終了した時の、ダンス管理バッファBmの先頭のビデオフレーム数は、先頭のダンスコードの再生時間を表している(図46参照)。なぜなら、図47に示すように、当該先頭のダンスコードの登録は、当該再生が終了したダンスコードがダンス管理バッファBmに登録されてから、当該先頭のダンスコードの再生時間を表す待機時間(図45参照)が経過した時に行われ、しかも、ダンス管理バッファBmに登録されるビデオフレーム数の初期値(つまり、「255」)は、全てのダンスコードで同一だからである。
図48は、本発明の実施の形態3によるエクササイズ支援装置を構成する図5の高速プロセッサ91による全体処理の流れの一例を示すフローチャートである。図48に示すように、ステップS200にて、高速プロセッサ91は、システム全体の初期設定を実行する。具体的には、システム及び各変数を初期化する。
ステップS201にて、高速プロセッサ91は、メロディ用楽譜データの先頭に楽譜データポインタをセットする。この楽譜データポインタは、メロディ用楽譜データの読み出し位置を指定するポインタである。ステップS202にて、高速プロセッサ91は、メロディ用実行待機カウンタに時間tをセットする。
ステップS203にて、高速プロセッサ91は、ダンスコード用楽譜データの先頭に楽譜データポインタをセットする。この楽譜データポインタは、ダンスコード用楽譜データの読み出し位置を指定するポインタである。ステップS204にて、高速プロセッサ91は、ダンスコード用実行待機カウンタに時間0をセットする。
ステップS205にて、高速プロセッサ91は、移動オブジェクト用楽譜データの先頭に楽譜データポインタをセットする。この楽譜データポインタは、移動オブジェクト用楽譜データの読み出し位置を指定するポインタである。ステップS206にて、高速プロセッサ91は、移動オブジェクト用実行待機カウンタに時間0をセットする。
ステップS207にて、高速プロセッサ91は、ダンス制御バッファBcに初期値を設定する。つまり、高速プロセッサ91は、バッファ702,703及び704にそれぞれ、再生時間「255」、ダンスコード00h、及び「0」を初期値として格納する(図46(a)参照)。
ステップS208にて、高速プロセッサ91は、エクササイズ終了フラグを参照して、オンの場合は(つまり、エクササイズ終了の場合は)、ステップS218に進み、それ以外は、ステップS209に進む。ステップS209では、高速プロセッサ91は、キャラクタ406に対するダンス管理処理を実行する。ステップS210にて、高速プロセッサ91は、キャラクタ406に対するダンス制御処理を実行する。
ステップS211にて、高速プロセッサ91は、移動オブジェクト408及び409並びに応答オブジェクトF1〜F4の制御を実行する。ステップS212にて、高速プロセッサ91は、各フットスイッチSW1〜SW4のオフからオンへの遷移を検知して、プレイヤのステップ数Ntlを計数する。プレイヤのステップ数は、フットスイッチのオフからオンへの遷移の回数である。ステップS213にて、高速プロセッサ91は、ビデオフレームが更新されるたびに、カウンタを1つインクリメントして、エクササイズ開始から終了までの経過時間Tcを算出する。ステップS214にて、高速プロセッサ91は、装飾インジケータ416の制御を実行する。
一方、ステップS218では、高速プロセッサ91は、ステップS212で計数したプレイヤのステップ数Ntlに応じて、消費カロリーを算出する。この点を詳細に説明する。キャラクタ406が1エクササイズで行うエアロビクスダンスと同じエアロビクスダンスを、モデルとなる人間が行ったときの消費カロリーCst(以下、「想定消費カロリーCst」と呼ぶ。)を予め実測して得ておく。そして、この想定消費カロリーCst、キャラクタ406が1エクササイズで行うステップ数(以下、「想定ステップ数Nst」と呼ぶ。)、及びステップS212で計数したプレイヤの総ステップ数Ntlに基づいて、次式により、プレイヤの消費カロリーCtlを算出する。
Ctl=Cst×(Ntl/Nst) …(11)
ここで、高速プロセッサ91は、プレイヤが入力したプレイヤの年令、性別、及び体重を加味して、より詳細な消費カロリーCrlを算出することもできる。この点を詳細に説明する。
上述した想定消費カロリーCstを、基準となる人間の単位時間及び単位重量当たりの値として得ておく。本実施の形態では、20歳の日本人女性の単位時間(1分)及び単位重量(1kg)当たりの値を実測しておく(cal/分・kg)。
そうすると、ステップS18で算出した消費カロリーCtlは、単位時間及び単位重量あたりの値となるので、高速プロセッサ91は、プレイ時間Tc及びプレイヤが入力した自身の体重(kg)を、消費カロリーCtlに乗算する。これにより、プレイヤの体重が加味された消費カロリーCwhを得る。
また、実施の形態2と同じ年令係数ACを設定する。高速プロセッサ91は、プレイヤが入力した年令Agを用いて、式(7)により、年令を加味した消費カロリーCagを算出する。
さらに、実施の形態2と同じ性別係数SCを設定する。本実施の形態では、女性を基準としているので、プレイヤが入力した性別が男性の場合に、消費カロリーCagに性別係数SCを乗算する。
つまり、最終的な消費カロリーCrlは、プレイヤが男性の場合は、式(8)で算出され、女性の場合は、式(9)で算出される。
さらに、実施の形態2と同様に、人種係数ECを用意して、人種を考慮した消費カロリーを算出することもできる。
ステップS219では、高速プロセッサ91は、結果画面表示(図41参照)のための処理を実行する。具体的には、高速プロセッサ91は、プレイヤの総ステップ数Ntl、プレイヤの消費カロリーCrl、及び経過時間Tcに応じて、結果画面を構成する背景や各オブジェクト(文字や数字等)を表す画像データの格納位置情報及び表示位置情報を内部メモリ(図示せず)にセットする。
さて、ステップS215では、ビデオ同期信号による割り込みがあれば、ステップS216に進み、割り込みがなければ、同じステップS215に戻る。ビデオ同期信号による割り込みは、例えば、1/60秒間隔で発生する。
ビデオ同期信号による割り込みに応じて、ステップS216では、高速プロセッサ91は、ステップS210〜S214あるいはS219で設定された情報(画像データ格納位置情報及び表示位置情報)に基づいて、テレビジョンモニタ5の表示画像(ビデオフレーム)を更新する。また、ビデオ同期信号による割り込みに応じて、ステップS217の音声処理が実行され、これによって、音楽や効果音が出力される。そして、処理はステップS208に進む。
アダプタ1のIR受信回路71からの信号がローレベルからハイレベルに遷移したことに応答して、つまり、I/OポートIO18の値がローレベルからハイレベルに遷移したことに応答して、割り込みが発生し、ステップS220の赤外線コード(IRコード)取得処理が実行される。ステップS220の処理の詳細は、図21のステップS21と同じであり、説明を省略する。
図49は、図48のステップS209のダンス管理処理の流れの一例を示すフローチャートである。図49に示すように、ステップS230にて、高速プロセッサ91は、ダンス制御バッファBcの再生カウンタPcを1つインクリメントする。ステップS231にて、高速プロセッサ91は、ダンス管理バッファBmに登録されているダンスコードに対応するビデオフレーム数を全てデクリメントする。
ステップS232にて、高速プロセッサ91は、ダンス制御バッファBcを参照して、再生カウンタPcの値と再生時間Pfとが同じ場合は、ステップS233に進み、それ以外はメインルーチンにリターンする。ステップS233にて、高速プロセッサ91は、ダンス管理バッファBmを参照して、ダンスコードの登録の有無を判断して、登録がある場合はステップS234に進み、それ以外はメインルーチンにリターンする。ステップS234にて、高速プロセッサ91は、ダンス管理バッファBmの先頭のダンスコード及びビデオフレーム数をダンス制御バッファBcに格納すると共に、再生カウンタPcをクリアして、メインルーチンにリターンする。
図50は、図48のステップS210のダンス制御処理の流れの一例を示すフローチャートである。図50に示すように、ステップS240にて、高速プロセッサ91は、ダンス制御バッファBcを参照して、式(10)を用いて、再生するコマの番号Scを算出する。ステップS241にて、高速プロセッサ91は、ステップ240で算出した再生コマ番号が示すコマの画像データの格納位置情報および表示位置情報を内部メモリ(図示せず)に格納して、メインルーチンにリターンする。
図51は、図48のステップS211の移動オブジェクト/応答オブジェクト制御処理の流れの一例を示すフローチャートである。図51に示すように、ステップS250にて、高速プロセッサ91は、移動オブジェクトの新規登録の有無を確認して、新規に移動オブジェクトが登録されていれば、ステップS251に進み、新規登録がなければステップS252に進む。
ステップS251では、高速プロセッサ91は、新規に登録された移動オブジェクトの出現処理を実行する。具体的には、高速プロセッサ91は、移動オブジェクトの画像データ格納位置情報及び表示位置情報を、内部メモリ(図示せず)にセットする。
ステップS252にて、高速プロセッサ91は、フットスイッチのオフからオンへの遷移の発生の有無を判断して、遷移が発生した場合はステップS253へ進み、それ以外はステップS258に進む。ステップS253にて、高速プロセッサ91は、応答オブジェクトを緑色に変更する処理を実行する。ステップS254にて、高速プロセッサ91は、移動オブジェクトがヒットレンジ内か否かを判断して、ヒットレンジ内であればステップS255に進み、それ以外ではステップS258に進む。
ここで、ヒットレンジは、応答オブジェクトが位置するラインを下端とした所定範囲のことであり、プレイヤは、移動オブジェクトがヒットレンジ内に存在するときに、対応する踏み領域を踏み込んで、対応するフットスイッチをオンさせることにより、移動オブジェクトを打ち返すことができる(ヒット)。
ステップS255では、高速プロセッサ91は、応答オブジェクトを赤色に変更する処理を実行する。ステップS256にて、高速プロセッサ91は、移動オブジェクトの初速度を、現在の速度の2倍に設定する。ステップS257にて、高速プロセッサ91は、ステップS256で設定した初速度を基に、移動オブジェクトの表示座標を算出し、内部メモリ(図示せず)にセットする。これにより、移動オブジェクトは2倍の速度で、上方向に打ち返される。
一方、ステップS258では、高速プロセッサ91は、移動オブジェクトが、画面下端の消滅位置に到達したか否かを判断して、到達していればステップS259に進み、到達していない場合はステップS261に進む。ステップS259では、高速プロセッサ91は、その移動オブジェクトの消滅処理を実行する。具体的には、高速プロセッサ91は、その移動オブジェクトの表示座標を、テレビジョンモニタ5の画面外の座標とする。これにより、打ち返しを失敗した移動オブジェクトは、画面下端で消滅する。そして、ステップS260にて、高速プロセッサ91は、打ち返しの失敗回数を示す失敗カウンタNfをインクリメントする。
一方、ステップS261では、高速プロセッサ91は、移動オブジェクトが、画面上端の消滅位置に到達したか否かを判断して、到達していればステップS262に進み、そうでない場合(つまり、移動経路の途中に存在する場合)ステップS263に進む。ステップS262では、高速プロセッサ91は、その移動オブジェクトの消滅処理を実行する。この点は、画面下端での消滅処理と同様である。
一方、ステップS263では、高速プロセッサ91は、移動オブジェクトの位置の更新処理を行う。具体的には、高速プロセッサ91は、現在設定されている初速度及び加速度に基づいて、移動オブジェクトの表示座標を算出して、内部メモリ(図示せず)にセットする。従って、現在設定されている初速度に応じて、移動オブジェクトは、上向あるいは下方向に移動する。
さて、ステップS264では、高速プロセッサ91は、ステップS252〜S263の処理が全ての移動オブジェクトに対して終了したか否かを判断し、終了していない場合はステップS252に進み、終了している場合はステップS265に進む。ステップS265では、高速プロセッサ91は、全応答オブジェクトに対して、ステップS252〜S264の処理が終了したか否かを判断し、終了していない場合はステップS252に進み、終了している場合はメインルーチンにリターンする。
図52は、図48のステップS217の音声処理の流れの一例を示すフローチャートである。図52に示すように、ステップS280にて、高速プロセッサ91は、メロディの再生処理を実行する。ステップS281にて、高速プロセッサ91は、ダンスコードの登録処理を実行する。ステップS282にて、高速プロセッサ91は、移動オブジェクトの登録処理を実行する。ステップS283にて、高速プロセッサ91は、移動オブジェクトがヒットした時の効果音の発音のための処理を実行する。
図53は、図52のステップS280のメロディ再生処理の流れの一例を示すフローチャートである。図53に示すように、ステップS300にて、高速プロセッサ91は、メロディ用の実行待機カウンタをチェックする。メロディ用の実行待機カウンタの値が「0」ならば、ステップS303へ進み、「0」でないならば、ステップS302へ進んで、実行待機カウンタをデクリメントし、リターンする。
ステップS303では、高速プロセッサ91は、メロディ用の楽譜データポインタの指すコマンドを読み出して解釈する。コマンドがノートオンであれば、ステップS306に進み、それ以外であれば、つまり、待機であれば、ステップS305に進む(ステップS304)。
ステップS306にて、高速プロセッサ91は、メロディ用楽譜データポインタが指すメロディ制御情報に応じて、音符の再生を開始する。ステップS307にて、高速プロセッサ91は、再生中の音符のゲートタイムの残り時間をチェックする。ステップS308にて、高速プロセッサ91は、ゲートタイムが終了した場合は、ステップS309に進んで、その音符の再生を終了して、ステップS310に進む。一方、ステップS308では、ゲートタイムが終了していない場合は、ステップS310にそのまま進む。ステップS310では、高速プロセッサ91は、再生中の全音符について、ステップS307の処理を終了したかどうかを判断し、終了していなければステップS307に進み、終了していれば、ステップS311に進む。
一方、ステップS305では、高速プロセッサ91は、メロディ用の実行待機カウンタに待機時間をセットする。ステップS311では、高速プロセッサ91は、メロディ用の楽譜データポインタをインクリメントして、リターンする。
図54は、図52のステップS281のダンスコード登録処理の流れの一例を示すフローチャートである。図54に示すように、ステップS320にて、高速プロセッサ91は、ダンスコード用の実行待機カウンタをチェックする。ダンスコード用の実行待機カウンタの値が「0」ならば、ステップS323へ進み、「0」でないならば、ステップS322へ進んで、実行待機カウンタをデクリメントし、リターンする(ステップS321)。
一方、ステップS323にて、高速プロセッサ91は、ダンスコード用の楽譜データポインタの指すコマンドを読み出して解釈する。コマンドがノートオンであれば、ステップS326に進み、それ以外であれば、つまり、待機であれば、ステップS325に進む(ステップS324)。
ステップS326では、高速プロセッサ91は、読み出したノートナンバが開始ノートナンバの場合はステップS329へ進み、それ以外のノートナンバの場合はステップS327へ進む。ステップS327では、高速プロセッサ91は、読み出したノートナンバ及びベロシティからダンスコードを生成する。ステップS328にて、高速プロセッサ91は、ダンス管理バッファBmに、生成したダンスコードを新規に登録すると共に、ビデオフレーム数「255」も併せて登録する。
一方、ステップS325では、高速プロセッサ91は、ダンスコード用の実行待機カウンタに待機時間をセットする。ステップS329では、高速プロセッサ91は、ダンスコード用の楽譜データポインタをインクリメントして、リターンする。
図55は、図52のステップS282の移動オブジェクト登録処理の流れの一例を示すフローチャートである。図55に示すように、ステップS340にて、高速プロセッサ91は、移動オブジェクト登録用の実行待機カウンタをチェックする。移動オブジェクト登録用の実行待機カウンタの値が「0」ならば、ステップS343へ進み、「0」でないならば、ステップS342へ進む(ステップS341)。ステップS342では、高速プロセッサ91は、移動オブジェクト登録用の実行待機カウンタをデクリメントして、リターンする。
一方、ステップS343では、高速プロセッサ91は、移動オブジェクト登録用の楽譜データポインタの指すコマンドを読み出して解釈する。コマンドがノートオンであれば、ステップS346に進む(ステップS344)。一方、コマンドが、ノートオンでなければ、即ち、待機であれば、ステップS345に進む。ステップS345では、高速プロセッサ91は、移動オブジェクト登録用の実行待機カウンタに待機時間をセットする。
一方、ノートナンバが音楽終了を意味するものであれば、ステップS347に進み、そうでなければ、ステップS348に進む(ステップS346)。ステップS347では、高速プロセッサ91は、エクササイズ終了フラグをオンにする。
一方、ノートナンバが音楽開始を意味するものであれば、ステップS350に進み、そうでなければ、ステップS349に進む(ステップS348)。ステップS349では、高速プロセッサ91は、新規に移動オブジェクトを登録する。具体的には、新規移動オブジェクトの初期速度、初期座標、及び加速度を設定する。ステップS350では、高速プロセッサ91は、移動オブジェクト登録用の楽譜データポインタをインクリメントし、リターンする。
図56は、図1のテレビジョンモニタ5に表示される選択画面の例示図である。図56は、図40の映像と合わせて流れる音楽の選択画面であり、曲のタイトルが表示される。プレイヤは、踏み領域ST1〜ST4(フットスイッチSW1〜SW4)を踏み込んで、所望の曲を選択できる。選択された曲に応じて、キャラクタ406の動きや、移動オブジェクトの数及び出現タイミングが変わる。また、曲のタイトルと関連付けて、その音楽に合わせてキャラクタ406の動きに沿った動作を行ったときの消費カロリー、つまり、上記した想定消費カロリーCstが表示される。
図57は、図1のテレビジョンモニタ5に表示される選択画面の他の例示図である。図58は、図57の画面の次に表示される画面の例示図である。高速プロセッサ91は、図56の選択画面に替えて、図57及び図58に示す画面を表示することもできる。図57に示すように、この画面では、エクササイズの難易度を設定する欄「Level」及び1エクササイズで再生される楽曲数を設定する欄「Music」が含まれる。プレイヤが、この画面で、難易度及び楽曲数を設定すると、図58の画面に、設定された難易度及び楽曲数に応じて決定された曲のリストが表示される。なお、設定された難易度及び曲に応じて、キャラクタ406の動きや、移動オブジェクトの数及び出現タイミングが変わる。また、図56と同様に、曲のタイトルと関連付けて、その音楽に合わせてキャラクタ406の動きに沿った動作を行ったときの消費カロリーが表示される。
また、図58の画面には、曲のリストを挟むように、マット2の踏み領域ST2及びST3に印刷された三角形のアイコンと同じ三角オブジェクトが表示される。プレイヤが、踏み領域ST2あるいはST3を踏んで、フットスイッチSW2あるいはSW3をオンにすると、曲のリストが他の曲のリストに入れ替わる。曲のリストは複数用意されており、フットスイッチSW2あるいはSW3のオンに合わせて、ループして表示される。ループの方向は、フットスイッチSW2とフットスイッチSW3とで逆である。
さて、以上のように、本実施の形態では、プレイヤは、移動オブジェクト408及び409並びに応答オブジェクトF1〜F4(マットオブジェクト415)により踏み位置及びタイミングを認識できるだけでなく、キャラクタ406及び領域f1〜f4(マットオブジェクト411)によってもそれらを認識できる。従って、プレイヤは、指示される動きの認識がより容易になって、エクササイズ環境の向上を図ることができる。しかも、キャラクタ406は体全体の動きを指示するため、プレイヤは、踏み動作だけでなく、体全体を使ったエクササイズを行うことができる。
また、本実施の形態では、応答オブジェクトF1〜F4(マットオブジェクト415)及び領域f1〜f4(マットオブジェクト411)は、対応する踏み領域ST1〜ST4(マット2)を模した形態を有している。従って、エクササイズする際の臨場感を高めることができるし、また、プレイヤにとって、指示される動きの認識がより一層容易になる。
さらに、本実施の形態によれば、キャラクタ406の単位アニメーション(単位動作)の組み合わせと単位アニメーション(単位動作)の再生時間とを、楽曲に応じて変更するだけで、楽曲に応じたキャラクタ406のアニメーションを行うことができる。従って、楽曲ごとにアニメーション画像を用意する必要はなく、記憶容量の削減を図ることができる。
さらに、本実施の形態では、単位アニメーションの再生開始前に、単位アニメーションの再生終了点を指定するので、単位アニメーションの再生開始時には、既に、単位アニメーションの再生終了点が分かっている(図47参照)。
従って、再生開始時に再生終了点が分かるので、再生開始時に単位アニメーションを構成する各コマの再生時間を算出することができる。このため、キャラクタ406のアニメーションを構成する最後の単位アニメーションの再生開始時が到来したときに、直ちに、その最後の単位アニメーションの再生を行うことができる。
ちなみに、再生開始点を指定して単位アニメーションを再生する場合において、再生開始時点の到来後直ちに最後の単位アニメーションを再生しようとすれば、再生時間あるいは再生終了点の指定が必要となる。このように、最後の単位アニメーションの再生において、再生のために必要なパラメータが増加する。
本実施の形態によれば、パラメータの増加を招くことなしに、再生開始時点の到来後直ちに最後の単位アニメーションの再生を開始できる。
さらに、本実施の形態によれば、図46のダンス制御バッファBcのバッファ702に登録された終点値及びバッファ704に登録された基準値「0」に基づいて、バッファ703に登録されたダンスコードが示す単位アニメーションを再生しているときにおいて(再生中において)、ダンス管理バッファBmへの設定の指示を受けるたびに、一定値「255」(単位アニメーションの再生終了点に相当)及びダンスコードがダンス管理バッファBmに順次設定される。ダンス制御バッファBcのバッファ702に登録された終点値及びバッファ704に登録された基準値「0」とは、それぞれ、既に述べた再生時間情報Pfおよび再生カウンタPcの初期値と同一のものである。そして、ダンス制御バッファBcにおいて、基準値「0」を起点としたアップカウントの結果が終点値に等しくなったときに、つまり、現在の単位アニメーションの再生が終了したときに、ダンス管理バッファBmのバッファ700に最先に設定された一定値「255」を起点としたダウンカウントの結果、バッファ701に最先に設定されたダンスコード、及び基準値「0」を新たにダンス制御バッファBcに登録して、これらの登録情報に基づいて、新たな単位アニメーションの再生を開始する。
このように、単位アニメーションの再生中に、将来再生する単位アニメーションに対する一定値「255」(単位アニメーションの再生終了点に相当)及びダンスコードをバッファリングすることにより、再生中の単位アニメーションの再生終了点において、次の単位アニメーションの再生終了点が分かるので、再生中の単位アニメーションの再生終了点を再生開始点として、次の単位アニメーションを再生することが可能になる。
上記では(図40参照)、キャラクタ406のアニメーションは、楽曲に合わせて行われる(楽曲に同期している)。以上のように、本実施の形態では、バッファリング機構を用いてアニメーションを再生しているため、キャラクタ406のアニメーションは、上記一定値「255」に相当する時間だけ遅れて再生される(図47参照)。従って、楽曲の再生を上記一定値「255」に相当する時間だけ遅らせて再生することにより(図47参照)、楽曲の再生タイミングと、アニメーションの再生タイミングと、を一致させることができ、楽曲に合わせて動作するキャラクタ406のアニメーションを行うことができる。
ちなみに、キャラクタ406のアニメーションの開始前の上記一定値「255」に相当する期間では、楽曲に合わせる必要のないキャラクタ406のアニメーション(言わば、楽曲の再生を待っている待機状態のキャラクタ406のアニメーション)が再生される(図47の最上段参照)。つまり、この場合、図46(a)に示すバッファ702の値「255」が上記一定値であり、バッファ703のダンスコード「00h」が、楽曲に合わせる必要のないキャラクタ406のアニメーションを示す。
(実施の形態4)
本発明の実施の形態4によるエンターテインメント装置のハードウエアとして、実施の形態1のマットシステムのハードウエアを使用する。上記のエクササイズ支援装置と異なる点を中心に説明する。
図59は、本発明の実施の形態4によるエンターテインメント装置によって、図1のテレビジョンモニタ5に表示される画面の例示図である。図60は、図1のテレビジョンモニタ5に表示される画面の他の例示図である。図59に示すように、画面には、マット2の踏み領域ST1〜ST4に対応して、応答オブジェクトF1〜F4が表示される。そして、4つの応答オブジェクトF1〜F4に対応した4つの移動経路を、画面上端から下端に向かって各移動オブジェクト408が移動する。
一方、図60に示すように、プレイヤが踏み領域を踏み込んだことに応答して、つまり、フットスイッチがオンになったことに応答して、その瞬間、対応する応答オブジェクトが第1の形態に変化する(図60ではフットスイッチSW3がオンになって応答オブジェクトF3が第1の形態に変化)。また、プレイヤがタイミング良く踏み領域を踏み込むと、つまり、タイミング良くフットスイッチをオンにすると、対応する応答オブジェクトが第2の形態に変化する(図60ではフットスイッチSW2がタイミング良くオンになって応答オブジェクトF2が第2の形態に変化)。同時に、移動オブジェクトが反対方向に打ち返される。ここで、タイミングが良いとは、移動オブジェクトが応答オブジェクトに到達するタイミングで、その応答オブジェクトに対応するフットスイッチをオンにすることである。
プレイヤが移動オブジェクト408の打ち返しに失敗すると、一回失敗するたびに、円形状のライフ752が1つ消滅する。そして、このライフ752が全て消滅するとゲームオーバーとなる。また、スタートからの経過時間を表す経過時間表示部750が表示される。
移動オブジェクトを音楽に合わせて出現させれば、プレイヤは、音楽と一緒にゲームを楽しむことができる。
図61は、本発明の実施の形態4によるエンターテインメント装置を構成する図5の高速プロセッサ91による全体処理の流れの一例を示すフローチャートである。図61に示すように、ステップS400にて、高速プロセッサ91は、システム全体の初期設定を実行する。具体的には、システム及び各変数を初期化する。
ステップS401にて、高速プロセッサ91は、メロディ用楽譜データの先頭に楽譜データポインタをセットする。ステップS402にて、高速プロセッサ91は、メロディ用実行待機カウンタに時間tをセットする。
ステップS403にて、高速プロセッサ91は、移動オブジェクト用楽譜データの先頭に楽譜データポインタをセットする。ステップS404にて、高速プロセッサ91は、移動オブジェクト用実行待機カウンタに時間0をセットする。
ステップS405にて、高速プロセッサ91は、音楽終了フラグを参照して、オンの場合は(つまり、音楽終了の場合は)、ステップS413に進み、それ以外は、ステップS406に進む。ステップS406では、高速プロセッサ91は、移動オブジェクト408および応答オブジェクトF1〜F4の制御を実行する。この処理は、図48のステップS211の処理と同様である。ただし、ステップS406では、ステップS211の応答オブジェクトの色変更処理に替えて、応答オブジェクトの形態変更処理が実行される。
ステップS407にて、高速プロセッサ91は、各フットスイッチSW1〜SW4のオフからオンへの遷移を検知して、プレイヤのステップ数Ntlを計数する。この処理は、図48のステップS212の処理と同じである。ステップS408にて、高速プロセッサ91は、ビデオフレームが更新されるたびに、カウンタを1つインクリメントして、音楽スタートから終了までの経過時間Tcを算出する。この処理は、図48のステップS213の処理と同じである。ステップS409にて、高速プロセッサ91は、打ち返しの失敗回数に応じて、ライフ752の制御を実行する。
一方、ステップS413では、高速プロセッサ91は、ステップS407で計数したプレイヤのステップ数Ntlに応じて、消費カロリーを算出する。この点は、図48のステップS218と同じである。ステップS414では、高速プロセッサ91は、結果画面表示(図41参照)のための処理を実行する。この点は、図48のステップS219と同じである。
さて、ステップS410にて、ビデオ同期信号による割り込みがあれば、ステップS411に進み、割り込みがなければ、同じステップS410に戻る。ビデオ同期信号による割り込みは、例えば、1/60秒間隔で発生する。
ビデオ同期信号による割り込みに応じて、ステップS411では、高速プロセッサ91は、ステップS406〜S409あるいはS414で設定された情報(画像データ格納位置情報及び表示位置情報)に基づいて、テレビジョンモニタ5の表示画像(ビデオフレーム)を更新する。また、ビデオ同期信号による割り込みに応じて、ステップS412の音声処理が実行され、これによって、音楽や効果音が出力される。そして、処理はステップS405に進む。
アダプタ1のIR受信回路71からの信号がローレベルからハイレベルに遷移したことに応答して、つまり、I/OポートIO18の値がローレベルからハイレベルに遷移したことに応答して、割り込みが発生し、ステップS415の赤外線コード(IRコード)取得処理が実行される。ステップS415の処理の詳細は、図21のステップS21と同じであり、説明を省略する。
(実施の形態5)
本発明の実施の形態5による運動能力計測装置のハードウエアとして、実施の形態1のマットシステムのハードウエアを使用する。本実施の形態では、プレイヤが一定時間内に行ったステップの数を計測するものである。以下、図面を用いて説明する。
図62は、本発明の実施の形態5による運動能力計測装置によって、図1のテレビジョンモニタ5に表示されるレディ画面の例示図である。図63は、図1のテレビジョンモニタ5に表示されるプレイ中画面の例示図である。図64は、図1のテレビジョンモニタ5に表示されるフィニッシュ画面の例示図である。
図62に示すように、高速プロセッサ91が生成するレディ画面には、「Ready」なる文字、ダウンカウンタ765、レコード766、及びマット2に対応したマットオブジェクト760が含まれる。ダウンカウンタ765は10秒から始まり、0秒まで、ダウンカウントを実行する。マットオブジェクト760は、踏み領域F1〜F4に対応して、領域761〜764からなる。そして、プレイヤが踏むべき踏み領域を示すべく、領域762及び763の色を他の領域761及び764の色と異ならせている。レコード766は、これまでにプレイヤが達成した最高ステップ数のことである。
図63に示すように、図62のレディ画面の「Ready」なる文字が「GO」なる文字に変わると、高速プロセッサ91は、ダウンカウンタ765によるカウントダウンを開始する。そして、高速プロセッサ91は、マットオブジェクト760に重なるように、プレイヤの現在のステップ数をリアルタイムに表示する。この場合、フットスイッチのオフからオンへの遷移が発生するたびに、ステップ数が1つ増える。
そして、図64に示すように、高速プロセッサ91は、ダウンカウンタ765によるカウント値が「0」になると(「Finish」なる文字が表示されると)計測を終了する。画面には、マットオブジェクト760に重なるように、プレイヤのステップ数の最終結果が表示される。
つまり、この運動能力計測装置は、マット2の踏み領域ST2及びST3にのったプレイヤが、「Ready」なる文字が「GO」なる文字に変わった時を起点として、一定時間内に、いかに多くのステップを踏むかを計測するものである。
さて、以上のように、本実施の形態では、一定時間内の踏み動作の回数を運動能力の指標としているため、簡易に運動能力の計測が可能である。そして、プレイヤは、一定時間内の踏み動作の回数を指標として、自分の運動能力を知ることができる。
(実施の形態6)
本発明の実施の形態6による反射神経計測装置のハードウエアとして、実施の形態1のマットシステムのハードウエアを使用する。本実施の形態では、プレイヤの反応時間を計測するものである。以下、図面を用いて説明する。
図65は、本発明の実施の形態6による反射神経計測装置によって、図1のテレビジョンモニタ5に表示されるプレイ中画面の例示図である。図66は、図1のテレビジョンモニタ5に表示されるフィニッシュ画面の例示図である。本実施の形態のレディ画面は、図62のレディ画面と同様である。ただし、図62のダウンカウンタ765はなく、また、レコード766は、これまでにプレイヤが達成した最短時間を示す。
図65に示すように、高速プロセッサ91は、レディ画面の「Ready」なる文字が「JUMP」なる文字に変わった時を計測開始時として、マット2からプレイヤの両足が離れるまでの時間、つまり、全てのフットスイッチSW1〜SW4がオフになるまでの時間をカウントする。そして、図66に示すように、高速プロセッサ91は、マットオブジェクト760に重ねて計測結果(計測時間)を表示する。
つまり、この反射神経計測装置は、マット2の踏み領域ST2及びST3にのったプレイヤが、「Ready」なる文字が「JUMP」なる文字に変わった時を起点として、いかに速くジャンプするかを計測するものである。
さて、以上のように、本実施の形態では、動作開始の指示から入力がなくなるまで(つまり、動作開始の指示からプレイヤの両足がマット2から離れるまで)の時間を反射神経の指標としているため、簡易に反射神経の計測が可能である。そして、プレイヤは、動作開始の指示から入力がなくなるまでの時間を指標として、自分の反射神経を知ることができる。
(実施の形態7)
本発明の実施の形態7によるマットシステムのハードウエアとして、実施の形態1のマットシステムのハードウエアを使用する。
図67は、本発明の実施の形態7によるマットシステムによって、図1のテレビジョンモニタ5に表示されるユーザ名入力画面の例示図である。プレイヤは、踏み領域ST1〜ST4(フットスイッチSW1〜SW4)を踏み込んで、ユーザ名入力画面で自分の名前を入力する。
図68は、図1のテレビジョンモニタ5に表示されるユーザ情報入力画面の例示図である。高速プロセッサ91は、ユーザ名入力画面の次に、ユーザ情報入力画面を表示する。プレイヤは、踏み領域ST1〜ST4(フットスイッチSW1〜SW4)を踏み込んで、ユーザ情報入力画面で自分の性別、年齢、及び体重を入力する。
図69は、図1のテレビジョンモニタ5に表示されるプレイモード選択画面の例示図である。高速プロセッサ91は、ユーザ情報入力画面の次に、プレイモード選択画面を表示する。図69に示すように、本実施の形態では、5つのプレイモードが用意される。
高速プロセッサ91は、プレイモード「Step Lively」、プレイモード「Vigorous Step」、プレイモード「Action Run」、プレイモード「Dash」、及びプレイモード「Reflex」では、それぞれ、実施の形態3,4,2,5及び6の処理を実行する。
以下、プレイモード「Step Lively」をエクササイズモード、プレイモード「Vigorous Step」をエンターテインメントモード、プレイモード「Action Run」を疑似体験モード、プレイモード「Dash」を運動能力計測モード、プレイモード「Reflex」を反射神経計測モードと呼ぶ。
本実施の形態では、エクササイズモード、エンターテインメントモード、及び疑似体験モードにおいて算出された消費カロリーを累算して、その結果をグラフで表す。この点を図面を用いて説明する。
図70は、図1のテレビジョンモニタ5に表示されるグラフ画面の例示図である。図70に示すように、このグラフ画面は、グラフ表示部780、運動量表示部782、及び時間表示部784を含む。グラフ表示部780には、直近の14週分の消費カロリーが週単位で棒グラフにより表される。グラフ表示部780では、5月の一日の週、4月の24日の週、4月の17日の週、…というように、横軸を時間軸とし、縦軸をエネルギー軸としている。
この場合、週単位の消費カロリーを表す各バー786は、エクササイズモード(「Action Run」)での消費エネルギーを表す部分と(図中右上がりの斜線部)、エンターテインメントモード(「Vigorous Step」)での消費エネルギーを表す部分と(図中右下がりの斜線部)、エクササイズモード(「Step Lively」)での消費エネルギーを表す部分と(交差した斜線で表された部分)、で色分けされている。
運動量表示部782には、終了した直近のプレイモードでのステップ数及び消費カロリーが表示される。また、時間表示部784には、終了した直近のプレイモードでの経過時間及びミスの数が表示される。ただし、終了した直近のプレイモードが、疑似体験モードの場合は、ミスの数は表示されない。
なお、時間軸の単位は、週単位に限られず、日単位、月単位など、任意に変更できる。例えば、プレイヤが、フットスイッチSW2あるいはSW3をオンにすることにより、時間軸の単位を変えた棒グラフを表示することができる。また、バー786は、プレイモードごとに色分けしたが、模様を変えたり、形状を変えたりなど、視覚的にプレイモードを区別できるようなものであればよい。
図71は、図1のテレビジョンモニタ5に表示されるグラフ画面の他の例示図である。図71のグラフ画面は、プレイヤの日毎の総ステップ数を棒グラフにより表したものであり、これが、高速プロセッサ91により、テレビジョンモニタ5に表示される。ただし、日毎のステップ数ではなく、消費カロリーを表示することもできる。日毎のステップ数や消費カロリーは、その日に行ったエクササイズモード、エンターテインメントモード、及び疑似体験モードでの合計値である。なお、時間軸の単位は、日単位に限られず、週単位、月単位など、任意に変更できる。
ここで、高速プロセッサ91は、日付と対応させて、その日のステップ数及び消費カロリーをEEPROM308に格納する。この場合、高速プロセッサ91は、日付は、RTC310から日付情報を取得する。本実施の形態では、RTC310をカートリッジ3に搭載しているが、マット2の回路ボックス4に設けてもよい。
図72は、本発明の実施の形態7によるマットシステムが実行する処理の遷移を示す図である。図71に示すように、ステップS1000にて、高速プロセッサ91は、テレビジョンモニタ5に、ユーザ名入力画面(図67参照)を表示して、ユーザからの名前情報の入力を受け付け、EEPROM308に格納する。ステップS1001にて、高速プロセッサ91は、ユーザ情報入力画面(図68参照)を表示して、ユーザからのユーザ情報の入力を受け付け、EEPROM308に格納する。
ステップS1002にて、高速プロセッサ91は、プレイモード選択画面(図69参照)を表示して、ユーザからのプレイモードの入力を受け付ける。そして、高速プロセッサ91は、ユーザからの入力に応じて、ステップS1003、ステップS1004、ステップS1005、ステップS1006、及びステップS1007のいずれかの処理を実行する。ステップS1003では、図21の処理を実行する。ただし、ステップS20の結果表示される画面には、消費カロリーは表示されない。ステップS1004では、図48の処理を実行する。ただし、ステップS219の処理は行われない。ステップS1005では、図61の処理を実行する。ただし、ステップS414の処理は行われない。ステップS1006では、実施の形態5の処理を実行する。ステップS1007では、実施の形態6の処理を実行する。
高速プロセッサ91は、ステップS1003、S1004およびS1005のいずれかの処理が終了すると、ステップS1008に進み、グラフ画面(図70参照)を表示する。そして、高速プロセッサ91は、一定時間経過後に、あるいは、プレイヤからのマット2を介した入力に応じて、元のプレイモードの処理に戻る。一方、高速プロセッサ91は、ステップS1006及びステップS1007のいずれかの処理が終了すると、一定時間経過後に、あるいは、プレイヤからのマット2を介した入力に応じて、プレイモード選択画面(図69参照)を表示する。
さて、以上のように、本実施の形態では、ユーザが異なる運動プログラム(エクササイズモード、エンターテインメントモード、あるいは疑似体験モード)を行った場合でも、運動プログラムごとの運動量の推移が、時間軸を共通にして表示される。
つまり、図70に示すように、横軸を時間軸、縦軸を運動量を示す軸とし、所定期間単位(図70では週単位)で、3つの運動プログラムのそれぞれにおける運動量を異なる形態のバーで表し、かつ、異なる形態で表されたそれぞれのバーを縦軸方向に積み重ねてバー786を構成し、グラフ表示している。
このため、ユーザは、運動プログラムごとの運動量の推移だけでなく、トータルの運動量の推移をも容易に把握できる。さらに、全体に占める各運動プログラムの実行割合を容易に把握できるので、各運動プログラムの実行計画の作成が容易になる。
また、本実施の形態では、運動量の指標として、一般的に馴染みの深い消費エネルギーを使用しているため、ユーザにとって、運動量が認識し易くなる。
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
(1)上記では、マット2は、4つのフットスイッチSW1〜SW4を備える。しかし、フットスイッチの数はこれに限定されない。また、フットスイッチSW1〜SW4は、一直線に配列してあるが、フットスイッチの配列はこれに限定されない。例えば、2つのフットスイッチを一直線上に配置し、これに直行する一直線上に、他の2つのフットスイッチを配置することもできる。
(2)上記では、無線により、マットユニット7とアダプタ1とを接続しているが、有線で接続することもできる。また、上記では、赤外線を使用したが、電波を使用することもできる。
(3)上記では、カートリッジ方式を採用しているが、これを採用せず、カートリッジ3に搭載した各機能をアダプタ1に搭載することもできる。また、カートリッジ3に搭載した各機能およびアダプタ1に搭載した各機能を、マットユニット7の回路ボックス4に搭載することもできる。
(4)上記実施の形態2では、キャラクタ406は、人間を模したものであったが、これに限定されない。例えば、動物、モンスター、あるいはロボット等、任意に選択できる。また、画面を複数に分割して、各画面にキャラクタを表示し、複数人でプレイするようにすることもできる。
(5)上記実施の形態3において、表示される映像のストーリーを、ウォームアップ、エクササイズ(図48の処理)、及びクールダウンという三部構成とすることもできる。この場合、ウォームアップ、エクササイズ、及びクールダウンという順で表示する。ウォームアップ及びクールダウンは、例えば、キャラクタ406が一定の動作を繰り返す映像である。この場合、移動オブジェクト408を出現させるか否かは、自由に定めることができる。ただし、ウォームアップでは、移動オブジェクトを出現させることが好ましく、クールダウンでは、移動オブジェクトを出現させないほうが好ましい。エクササイズは、例えば、図48の処理によって実現する。なお、ウォームアップ及びクールダウンは図48と同様の処理で実現できる。
(6)上記実施の形態3において、キャラクタ406をアニメーションする際、単位アニメーションの再生終了点を指定した。ただし、再生開始点を指定することもできる。
(7)上記実施の形態7では、図70のグラフの縦軸をプレイヤの運動量を表すものとして、消費エネルギーを採用し、単位をカロリーとした。ただし、単位はカロリーに限定されず、他のエネルギーの単位を用いることもできる。また、プレイヤの運動量を直接的に表すものとして、消費エネルギーを用いたが、プレイヤの運動量を間接的に表すものを用いることもできる。例えば、りんご何個分に相当する運動を行ったか、何ステップの運動を行ったか等である。図71のグラフについても同様のことが言える。
このように、本明細書において、「運動量」とは、プレイヤがどのくらいの運動を行ったかを定量的に示すもの、を意味する。
(8)上記実施の形態7では、グラフとして棒グラフを採用したが(図70及び図71参照)、折れ線グラフなど様々な形式のグラフ表示を行うことができる。
1…アダプタ、2…マット、3…カートリッジ、4…回路ボックス、5…テレビジョンモニタ、7…マットユニット、71…IR受信回路、91…高速プロセッサ、93…メモリ、200…赤外発光部、202…MCU、204…モード設定部、206…キーマトリクス、308…EEPROM、310…RTC、ST1〜ST4…踏み領域、SW1〜SW4…フットスイッチ。