(57)【特許請求の範囲】
【請求項１】
コンピュータグラフィックスによりアニメーション映像をディスプレイに表示するために用いられるプログラム処理方法であって、表示オブジェクトに対応する複数のプログラムルーチンと、少なくとも１つの表示オブジェクトに対応するプログラムルーチンを起動するための起動命令を含むエントリルーチンとを有するアニメーションプログラムを入力するステップと、前記エントリルーチンを起動するステップと、前記エントリルーチンに含まれる起動命令に応答して、前記表示オブジェクトに対応するプログラムルーチンを起動するステップと、前記プログラムルーチンが複数個起動した時に各プログラムルーチンの一部を順次時分割処理し、各プログラムルーチンに対応するオブジェクトを各々発生するステップと、発生した複数のオブジェクトを一表示単位としてディスプレイ表示するステップとを含み、少なくとも１つの前記表示オブジェクトに対応するプログラムルーチンは、他の表示オブジェクトを新たに表示するために、前記表示オブジェクトに対応するプログラムルーチンを新たに起動する起動命令を含み、さらに、この起動命令に応答して他の表示オブジェクトを新たに表示するステップと、を含むプログラム処理方法。
【請求項２】
前記表示オブジェクトに対応するプログラムルーチンは、短期的命令と長期的命令を含み、前記複数のオブジェクト画像を表示するステップは、短期的命令を処理した後には同じプログラムルーチンの次の命令を実行し、長期的命令を処理した後には当該プログラムルーチンの実行を保留して次のプログラムルーチンの実行を行うことにより時分割処理を行う特許請求の範囲請求項１に記載のプログラム処理方法。
【請求項３】
前記表示オブジェクトに対応するプログラムルーチンは、主としてオブジェクトの移動を制御する移動制御ルーチンと、主としてオブジェクトの表示態様を制御する表示制御ルーチンを含み、前記複数のオブジェクト画像を表示するステップは、移動制御ルーチンと表示制御ルーチンを前記時分割処理によって各々実行することにより、対応するオブジェクト画像を表示する特許請求の範囲請求項１に記載のプログラム処理方法。
【請求項４】
コンピュータグラフィックスによりアニメーション映像をディスプレイに表示するために用いられるアニメーション表示装置であって、表示オブジェクトに対応する複数のプログラムルーチンおよび少なくとも１つのオブジェクトに対応する起動命令を含むアニメーションプログラムを入力する入力手段と、前記アニメーションプログラムを記憶する記憶手段と、実行すべき前記プログラムルーチンを識別する識別データを記憶する識別データ記憶手段と、アニメーションプログラムを実行することにより、前記起動命令に応答して対応するプログラムルーチンの識別データを前記識別データ記憶手段に記憶し、識別データに基づいて複数のプログラムルーチンを時分割処理する処理手段と、前記処理手段の時分割処理によって、複数のプログラムルーチンの各々に対応して発生される表示オブジェクトを合成し、一表示単位としてディスプレイに出力する表示画像出力手段とを含み、少なくとも１つの前記表示オブジェクトに対応するプログラムルーチンは、他の表示オブジェクトを新たに表示するために、前記表示オブジェクトに対応するプログラムルーチンを新たに起動する起動命令を含み、さらに、この起動命令に応答して他の表示オブジェクトを新たに表示する手段と、を備えるアニメーション表示装置。
【請求項５】
前記プログラムルーチンは、複数の表示画像の出力にまたがって実行される長期的命令を含み、前記処理手段は長期的命令の実行に対応して、前記識別データ記憶手段に記憶された識別データに基づいて前記プログラムルーチンを順次実行し、前記時分割処理を達成する請求項４に記載のアニメーション表示装置。
【請求項６】
前記識別データ記憶手段は、プログラムルーチン上の実行すべき命令位置を記憶するプログラムカウンタ記憶手段と、長期的命令の実行回数の計数値を記憶するフレームカウンタ記憶手段と、を含む請求項５に記載のアニメーション表示装置。
【請求項７】
コンピュータグラフィックスによりアニメーション映像をディスプレイに表示するアニメーション表示装置を制御する方法であって、
表示オブジェクトに対応する複数のプログラムルーチンと、少なくとも１つの表示オブジェクトに対応するプログラムルーチンを起動するための起動命令を含むエントリルーチンとを有するアニメーションプログラムが入力されるステップと、
前記エントリルーチンを起動するステップと、
前記エントリルーチンに含まれる起動命令に応答して、前記表示オブジェクトに対応するプログラムルーチンを起動するステップと、
前記プログラムルーチンが複数個起動した時に各プログラムルーチンの一部を順次時分割処理し、各プログラムルーチンに対応するオブジェクトを各々発生するステップと、発生した複数のオブジェクトを一表示単位としてディスプレイ表示するステップとを含み、少なくとも１つの前記表示オブジェクトに対応するプログラムルーチンは、他の表示オブジェクトを新たに表示するために、前記表示オブジェクトに対応するプログラムルーチンを新たに起動する起動命令を含み、さらに、この起動命令に応答して他の表示オブジェクトを新たに表示するステップと、を含むアニメーション表示装置の制御方法。
【請求項８】
コンピュータグラフィックスによりアニメーション映像をディスプレイに表示するアニメーション表示装置を制御する方法であって、
表示オブジェクトに対応するプログラムルーチンを起動するための起動命令を含むエントリルーチンを起動するステップと、
前記エントリルーチンに含まれる起動命令に応答して、前記表示オブジェクトに対応するプログラムルーチンを起動するステップと、
前記プログラムルーチンが複数個起動した時に各プログラムルーチンの一部を順次時分割処理し、各プログラムルーチンに対応するオブジェクトを各々発生するステップと、
発生した複数のオブジェクトを一表示単位としてディスプレイ表示するステップとを含み、少なくとも１つの前記表示オブジェクトに対応するプログラムルーチンは、他の表示オブジェクトを新たに表示するために、前記表示オブジェクトに対応するプログラムルーチンを新たに起動する起動命令を含み、さらに、この起動命令に応答して他の表示オブジェクトを新たに表示するステップと、を含むアニメーション表示装置の制御方法。
【請求項９】
前記表示オブジェクトに対応するプログラムルーチンは、短期的命令と長期的命令を含み、
前記複数のオブジェクト画像を表示するステップは、短期的命令を処理した後には同じプログラムルーチンの次の命令を実行し、長期的命令を処理した後には当該プログラムルーチンの実行を保留して次のプログラムルーチンの実行を行うことにより時分割処理を行う特許請求の範囲請求項７または８に記載のアニメーション表示装置の制御方法。
【請求項１０】
前記表示オブジェクトに対応するプログラムルーチンは、主としてオブジェクトの移動を制御する移動制御ルーチンと、主としてオブジェクトの表示態様を制御する表示制御ルーチンを含み、
前記複数のオブジェクト画像を表示するステップは、移動制御ルーチンと表示制御ルーチンを前記時分割処理によって各々実行することにより、対応するオブジェクト画像を表示する特許請求の範囲請求項７または８に記載のアニメーション表示装置の制御方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本願発明は、プログラム処理方法およびそれを用いたアニメーション表示装置に関し、特に、例えば、コンピュータグラフィックスによりアニメーション映像を表示するためのプログラム処理方法およびアニメーション表示装置に関する。より具体的には、初心者が小規模のアニメーション映像を作成する場合に、簡便に表示シーケンスを定義できるようにするためのものである。
【０００２】
【従来の技術】
従来のプログラム記述言語としては、ＢＡＳＩＣやＣ言語といったものがある。これらはパーソナルコンピュータのプログラムを作成するための汎用のプログラム記述言語であり、アニメーション表示のみならず、データベースやワードプロセッサ、あるいは表計算ソフト等のプログラム開発に広く用いられている。
【０００３】
これらのプログラム記述言語は、演算命令，Ｉ／Ｏ制御命令および分岐命令を含む。また、Ｉ／Ｏ制御命令は、表示制御命令，フロッピーディスク制御命令，プリンタ制御命令およびネットワーク制御命令等を含む。熟練したプログラマーは、これら命令を組み合わせて、大規模で複雑なプログラムを作成できる。
【０００４】
分岐命令は、絶対分岐命令，条件分岐命令，ループ命令およびサブルーチン命令等を含む。サブルーチン命令は、サブルーチンコール命令とリターン命令を含み、プログラムの構造化に用いられる。プログラマーは、プログラムの各部分を機能的に分類し、サブルーチンとしてこれを整理する。サブルーチンは、メインルーチン上あるいはサブルーチン上からサブルーチンコール命令を用いて呼び出され、特定の処理を目的として利用される。呼び出されたサブルーチンは、終端に設置されるリターン命令によってその処理を終了し、呼び出された元のプログラム（すなわちサブルーチンコール命令が実行されたプログラム）に復帰するよう制御される。
【０００５】
図１は、従来のサブルーチンを用いた場合のプログラムフローである。従来のプログラムの流れは、図１に示すようにメインルーチンからサブルーチンへ移行し、予め指定された処理を終了した後、再びメインルーチンへ復帰する。このようなサブルーチン手法は、回帰型サブルーチンと考えられる。この方法によれば、プログラムフローの道筋が一義的に決定されるため、プログラマーが処理の流れを把握しやすく、不具合が生じた時にプログラムを修正する作業（以降デバッグと呼ぶ）を比較的容易に行うことができる。
【０００６】
一方、メインルーチンとサブルーチンとの組み合わせによるプログラム処理以外の処理方法としては、マルチタスクと呼ばれる手法がある。マルチタスクは、複数のプログラムを時分割で並列動作させる手法であり、これを用いることによって複数のプログラムがあたかも同時に実行されているかのように処理される。この手法は、例えばワードプロセッサにおいて、文章を編集しながら他の文章を印刷する場合に用いられる。
【０００７】
【発明が解決しようとする課題】
従来のプログラム記述言語は、熟練したプログラマーが大規模で複雑なプログラムを作成するのに適しているが、初心者が簡単なアニメーション映像を表示するためにこれを用いる場合、大変な熟練を要する。なぜならば、これらのプログラム記述言語は、プログラムの流れを制御するための分岐命令を熟知しなければ、表示制御命令を有効的に利用することができないためである。そのため、比較的簡単なアニメーション映像プログラムを手軽に、しかも大量に作成するための方法が求められている。例えば、衛星データ放送や文字放送に代表されるデータ放送において、放送局は常にデータを視聴者に供給する義務を有するので、プログラムを迅速かつ用意に作成できることが要求されるからである。通常のＴＶ放送であれば、ＴＶカメラによって比較的容易にデータを作成することが可能であるが、データ放送の場合は、データの供給源が熟練したプログラマーに依存し、かつデータの作成に多大の時間を要する。
【０００８】
また、従来のプログラム記述言語は、コンピュータのＣＰＵにとって処理しやすいプログラム構造を持つため、人間の通常の思考形態とはかけはなれた論理構造を有する。例えば、図２に示すアニメーション画像を生成する場合、人間の思考形態では、「左から右へ飛んできた矢１００が右から左へ飛んできた板１０２に衝突したとき、矢１００はまっすぐ突き抜けるが、板１０２は２つに分裂して一方（１０４）が左上に、他方（１０６）が左下に回転しながら飛んでゆく」というように、個々の物体（オブジェクト）の動きに分けて認識される。これに対して従来のプログラム記述言語では、「全体的な時間進行の中で、各々の矢１００，板１０２，分裂した板１０４および１０６がどの位置に存在する。」というように、連続的な時間経過における全物体の座標位置の変化が重要であるため、プログラマは個々の物体の動きを時間軸を基準として統合するという作業が必要であった。熟練したプログラマならば無意識のうちに個別物体の動きを時間経過によって統合し、これをプログラム記述言語で容易に表現することができる。しかし、初心者にはこの時間経過による統合を概念的に把握することが難しく、よほど熟練しなければ正常に動作するプログラムを作成することが困難である。
【０００９】
時間経過による統合が必要な理由は、回帰型サブルーチンにある。従来のプログラム記述言語のような回帰型サブルーチンは、プログラムの流れを追うには便利であるが、反面、異なるサブルーチンを同時に処理することができない。例えば図２において、矢１００を動かすサブルーチンと板１０２を動かすサブルーチンを別々にプログラムすると、これを同時に処理することができないため、矢１００と板１０２を同時に動かすことができない。この場合は、２つのサブルーチンを時分割的に処理するように矢と板を時間軸で統合した統合プログラムを作成する必要が生ずる。
【００１０】
一方、マルチタスクを用いて複数のサブルーチンを同時に処理するという初期的な試みもなされている。前述のワードプロセッサーでは、マルチタスク処理により、文章編集と文章印刷の２つのサブルーチンを同時に処理している。しかしながら、従来のマルチタスク処理では、各々のサブルーチンの間に関連性がなく、２つのサブルーチンが単純に並列的に処理されているだけのものであった。したがって、例えば矢が動くプログラムと板が動くプログラムを準備しても、各々の時間軸方向の調整をとることができないため、１つのプログラムから他のプログラムへの切換タイミングを結果的に所望する物体が表示されるようプログラム毎に調整する必要がある。
【００１１】
従って、従来のマルチタスク処理では、時分割処理の切り替えタイミングが各々のサブルーチンによって任意に決定されるため、全体的なプログラムの進行状況を一義的に決定することができない。したがって各々のサブルーチンを関連付け、多くのサブルーチンを同時に動作させると、特定の処理がどのタイミングで行われるかがを判別できずデバッグが困難になるという問題点があった。
【００１２】
それゆえに、本願発明の目的は、初心者や未熟なプログラマーでも、コンピュータグラフィックスを用いて比較的小規模のアニメーション表示プログラムを容易に作成することが可能な、プログラム処理方法およびアニメーション表示装置を提供することである。
【００１３】
本願発明の他の目的は、個々の非回帰型サブルーチンを時間的に関連付けながらも、デバッグが容易なプログラム処理方法およびアニメーション表示装置を提供することである。
【００１４】
【課題を解決するための手段】
本願第１の発明のプログラム処理方法は、コンピュータグラフィックスによりアニメーション映像をディスプレイに表示するために用いられるプログラム処理方法において、表示オブジェクトに対応する複数のプログラムルーチン（図６のＵＮＩＴ１〜ＵＮＩＴ４）と、少なくとも１つの表示オブジェクトに対応するプログラムルーチンを起動するための起動命令を含むエントリルーチン（ＵＮＩＴ０）とを有するアニメーションプログラムを入力するステップ（Ｓ１，Ｓ２）と、前記エントリルーチンを起動するステップ（Ｓ３）と、前記エントリルーチンに含まれる起動命令に応答して、前記表示オブジェクトに対応するプログラムルーチンを起動するステップ（図９のＳ４４）と、前記プログラムルーチンが複数個起動した時に順次各プログラムルーチンの一部を時分割処理し、各プログラムルーチンに対応するオブジェクトを各々発生するステップ（図１５のＳ４６０，Ｓ４６２）と、発生した複数のオブジェクトを一表示単位としてディスプレイ表示するステップ（図８のＳ６）とを含み、少なくとも１つの表示オブジェクトに対応するプログラムルーチンは、他の表示オブジェクトを新たに表示するために、該表示オブジェクトに対応するプログラムルーチンを新たに起動する起動命令を含み、この起動命令に応答して他の表示オブジェクトを新たに表示するステップとを含む。
【００１５】
本願第２の発明のアニメーション表示装置は、コンピュータグラフィックスによりアニメーション映像をディスプレイに表示するために用いられるものであって、表示オブジェクトに対応する複数のプログラムルーチンおよび少なくとも１つの表示オブジェクトに対応する起動命令を含むアニメーションプログラムを入力する入力手段（実施例との対応関係を示せば、放送受信アダプタ４）と、前記アニメーションプログラムを記憶する記憶手段（メモリパック７）と、実行すべき前記プログラムルーチンを識別する識別データを記憶する識別データ記憶手段（図７のアクティブユニット記憶領域）と、アニメーションプログラムを実行することにより、前記起動命令に応答して対応するプログラムルーチンの識別データを前記識別データ記憶手段に記憶し、識別データに基づいて複数のプログラムルーチンを時分割処理する処理手段（ＣＰＵ２４）と、前記処理手段の時分割処理によって、複数のプログラムルーチンの各々に対応して発生される表示オブジェクトを合成し、一表示単位としてディスプレイに出力する表示画像出力手段（ＰＰＵ２８）とを含み、少なくとも１つの表示オブジェクトに対応するプログラムルーチンは、他の表示オブジェクトを新たに表示するために、該表示オブジェクトに対応するプログラムルーチンを新たに起動する起動命令を含み、この起動命令に応答して他の表示オブジェクトを新たに表示する手段とを備える。
【００１６】
【作用】
キーボード，外部記憶媒体，モデムまたはデータ放送受信装置からアニメーションプログラムが入力される。アニメーションプログラムは、表示オブジェクトに対応する複数のプログラムルーチンと、動作を開始するためのエントリルーチンとを含む。次にアニメーション表示装置は、エントリルーチンを起動する。エントリルーチンは、プログラムルーチンの起動命令を含む。この起動命令によって前記表示オブジェクトに対応するプログラムルーチンが起動する。これら複数のプログラムルーチンを時分割で処理することにより、複数のオブジェクト画像を同時に生成する。又、表示オブジェクトのプログラムルーチンから新たな他の表示オブジェクトの表示を可能とし、両表示オブジェクト間の表示タイミングを合わせ易くする。時分割処理が一巡すると、アニメーション表示装置は生成されたオブジェクト画像を１画面分の表示データとしてディスプレイ上に表示する。
【００１７】
また、入力手段は、アニメーションプログラムを入力する。記憶手段は、入力手段によって入力されたアニメーションプログラムを記憶する。処理手段は記憶手段に記憶されたアニメーションプログラムに含まれる起動命令に応答して、実行すべきプログラムルーチンの識別データを識別データ記憶手段に登録し、この登録情報に基づいてプログラムルーチンを時分割に処理する。処理された各プログラムルーチンは対応するオブジェクトを発生し、表示画像出力手段は発生した複数のオブジェクトを１画面分の表示データとしてディスプレイに出力する。又、表示オブジェクトのプログラムルーチンから新たな他の表示オブジェクトの表示を可能とし、両表示オブジェクト間の表示タイミングを合わせ易くする。
【００１８】
プログラムルーチンは対応するオブジェクト画像を表示する。また、複数のプログラムルーチンは時分割で実行される。そのため、オブジェクト別にプログラムルーチンを作成するだけで、自動的に複数のオブジェクトが同時に表示される。又、表示オブジェクトのプログラムルーチンから新たな他の表示オブジェクトの表示を可能とし、両表示オブジェクト間の表示タイミングを合わせ易くする。このため初心者でも簡便にアニメーション画像を作成することができる。また、オブジェクトの表示を変更したい場合でも、プログラムルーチンがオブジェクトに対応しているため、容易にプログラムを変更できる。
【００１９】
この発明の目的、特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかになろう。
【００２０】
【実施例】
図３は本願発明のアニメーション表示装置の一例のブロック図である。この実施例のアニメーション表示装置は、ゲーム機に放送受信アダプタを接続することにより衛星データ放送を受信し、受信したデータに基づいてアニメーション映像を再生するものである。具体的には、アニメーション表示装置（画像表示装置）の一例のゲーム機２には、放送受信アダプタ４、メモリカートリッジ６およびコントローラ８が接続される。メモリカートリッジ６には、受信したデータを保存するためのメモリパック７が接続される。コントローラ８は、ユーザーが操作情報を入力するために用いられる。
【００２１】
ＢＳアンテナ１０は、衛星データ放送を受信し、その受信データをＢＳチューナ１２に与える。ＢＳチューナ１２は、複数の衛星放送の中から特定のチャンネルを検波し、副搬送波で伝送されるＰＣＭデジタル音声信号およびデジタルデータを放送受信アダプタ４に出力する。ＰＣＭデコーダ２２は、ＢＳチューナ１２から与えられたＰＣＭデジタル音声信号をデコードし、Ｄ−Ａコンバータ２３を介してアナログステレオオーディオ信号を生成し、ゲーム機２内のミキサー３８に出力する。データチャンネルデコーダ２０は、ＢＳチューナ１２から与えられたデジタルデータをデコードする。
【００２２】
カートリッジ６内のＲＯＭ４６は、データ放送受信プログラムに加えて、アニメーション表示プログラムを実行するためのインタプリタプログラムを記憶する。ゲーム機２内のＣＰＵ２４は、ＲＯＭ４６に記憶されたデータ放送受信プログラムに基づいて、前記データチャンネルデコーダ２０に対して受信すべきデジタルデータを指定する。データチャンネルデコーダ２０は、ＣＰＵ２４から指定されたデジタルデータのみをデコードし、内部バッファにストアする。ＣＰＵ２４は、定期的にデータチャンネルデコーダ２０を監視し、データが受信された場合にこの受信データをワークＲＡＭ２６，ＰＳ−ＲＡＭ４４，Ｓ−ＲＡＭ４２またはフラッシュメモリ４９のいずれかのメモリに転送する。
【００２３】
転送先のメモリは、受信データの種類によって決定される。例えばＣＰＵ２４は、放送メニューのような頻繁に受信すべき放送データを、揮発性のメモリであるワークＲＡＭ２６またはＰＳ−ＲＡＭ４４に記憶させ、環境設定データをＳ−ＲＡＭ４２に記憶させ、さらにアニメーション表示プログラムをフラッシュメモリ４９に保存する。
【００２４】
データ放送によって与えられる複数のアニメーション表示プログラムは、主としてフラッシュメモリ４９に記憶され、ＲＯＭ４６内のインタプリタプログラムによって解釈され、実行される。フラッシュメモリ４９を含むメモリパック７は、コネクタ４７および４８によって着脱自在に構成される。なお、アニメーション表示プログラムを、Ｓ−ＲＡＭ４２，ＰＳ−ＲＡＭ４４またはＷＯＲＫ−ＲＡＭ２６に記憶されてもよい。
【００２５】
ＣＰＵ２４は、コントローラ８から入力される操作情報に基づいて、前記複数のアニメーション表示プログラムの内の１つを、ＲＯＭ４６に記憶されたインタプリタプログラムを用いて実行し、画像データおよび音声データを生成する。ＣＰＵ２４によって生成された画像データは、ＰＰＵ２８を介してビデオＲＡＭ３０に格納される。また、ＣＰＵ２４によって生成された音声データはＡＰＵ３４を介してオーディオＲＡＭ３６に格納される。
【００２６】
ＰＰＵ２８は、ビデオＲＡＭ３０のデータに基づいて、Ｄ−Ａコンバータ３１およびビデオエンコーダ３２と協働してビデオ信号を生成し、ＴＶ１４に与える。また、ＰＰＵ２８は、ＴＶの垂直ブランキング信号に同期して、ＣＰＵ２４に割り込み信号を発生する。ＡＰＵ３４は、オーディオＲＡＭ３６のデータに基づいて、Ｄ−Ａコンバータ３７と協働してオーディオ信号を生成し、ミキサー３８に出力する。ミキサー３８は、Ｄ−Ａコンバータ３７からのオーディオ信号と、ＰＣＭデコーダ２２からのオーディオ信号とを合成し、ＴＶ１４に与える。
【００２７】
図４は本願発明のプログラム処理方法の概念図である。メインプログラム５０は、実行時にプログラムカウンタ５０ａ，フレームカウンタ５０ｂおよび対応ワークエリア５０ｃを与えられる。メインプログラム５０は、オブジェクトの表示に際して、必要となるオブジェクトと同数のユニットプログラムを起動する。例えば、表示オブジェクト数が２の場合には、図４に示すようにユニットプログラム５２、５４を起動する。
【００２８】
ユニットプログラム５２は、主として表示オブジェクトの移動を司るユニットルーチン５２ａと、主として表示オブジェクトのアニメーションパターンを司るアニメルーチン５２ｂとを含む。ユニットルーチン５２ａおよびアニメルーチン５２ｂには、実行時にプログラムカウンタ５２ａａ，５２ｂａとフレームカウンタ５２ａｂ，５２ｂｂと対応ワークエリア５２ａｃ，５２ｂｃとが各々与えられる。
【００２９】
プログラムカウンタは、対応するルーチンまたはプログラムにおいて実行すべき命令の位置を示すポインタであり、命令が進行するたびに更新される。フレームカウンタは、表示すべきオブジェクトの表示シーケンスを制御するためのシーケンスカウンタであり、ＴＶの垂直ブランキングに対応して更新される。また、対応ワークエリアは、表示すべきオブジェクトの位置や属性を示すデータを記憶するメモリ領域を示すアドレス値である。ユニットルーチンとアニメルーチンは同じ対応ワークエリアを与えられ、オブジェクトを表示するために必要な各種データを共有する。プログラムポインタ，フレームカウンタおよび対応ワークエリアは、例えば図３のワークＲＡＭ２６上に記憶される。
【００３０】
ユニットプログラム５４は、ユニットプログラム５２と同じ内部構成を持つ。ユニットプログラムが起動すると、メインプログラムと、各々のユニットプログラムのユニットルーチンおよびアニメルーチンとはそれぞれマルチタスク手法により並列処理される。
【００３１】
図２のオブジェクトを図４に対応させた場合、ユニットプログラム５２を矢１００に、ユニットプログラム５４を板１０２に対応させることができる。この時点では、ユニットプログラム５２と５４とが並列動作しているため、別々に作成された矢のプログラムと板のプログラムが同時に処理される。具体的には、矢が左から右に動くと同時に、板が右から左へと移動する。各々のプログラムの進行がフレームカウンタによってＴＶの垂直ブランキングに同期して制御されるため、ユニットプログラム間で動作スピードを調整する必要はない。
【００３２】
ユニットプログラム５４は、プログラムの終了直前に同様の構造を持つユニットプログラム５６および５８を生成する。すなわち、ユニットプログラム５４は、板１０２が矢１００に当たって消滅したとき、分裂した板の破片１０４および１０５を生成する。この時点で並列処理されるユニットプログラムは、矢１００と分裂後の板１０４および１０５だけとなり、それぞれ別個に作成された各オブジェクトのアニメーションプログラムにしたがって各オブジェクトが表示される。
【００３３】
ここで、矢１００が２つに折れるという画像を必要とする場合には、折れた矢の表示プログラムを別途作成し、矢１００に対応するユニットルーチン５２に折れた矢の表示プログラムの起動命令を含めればよい。また、既に表示されているオブジェクトとは無関係に新たなオブジェクトを発生させる場合には、メインプログラムに当該プログラムの起動命令を含めればよい。
【００３４】
このように本願発明によると、各オブジェクトに着目してプログラムを作成するだけで、結果的に各々のオブジェクトが連動したアニメーション映像を生成することが可能であるため、時間経過に基づいて各オブジェクト表示プログラムを統合する必要が無く、初心者にも容易にプログラムを作成することが可能となる。
【００３５】
図５は、本願発明のプログラム処理方法を用いた場合のプログラムフローである。メインプログラム５０はユニットプログラム５２および５４を生成し、ユニットプログラム５４はユニットプログラム５６、５８を生成する。図の中で上下方向に並ぶプログラムは、マルチタスクによって同時処理される。ユニットプログラム５４はユニットプログラム５２より遅れて起動するが、この時間差はＴＶの１フィールド（すなわち約１６．７ｍＳ）より格段に小さいため、実際の表示においては時間差は生じない。これは、ユニットプログラム５６とユニットプログラム５６においても同様である。
【００３６】
メインプログラム５０は、ユニットプログラム５４を生成した時点で処理を終了してもよいが、全体を通しての時間を管理するために、何もしない命令（ｎｏｐ命令）を一定時間実行した後、プログラムの終了を意味するエンドマーク表示用ユニットプログラムを起動してもよい。また、メインプログラム５０にもアニメルーチンを対応させ、マーカーが画面上を移動するようプログラムしてもよい。こうすることにより、実行時の時間の進みかたを視覚的に確認することができる。
【００３７】
図６は具体的なアニメーション表示プログラムの一例である。メインプログラム５０は、ユニットプログラムを起動するための命令であるｕＰＵＴ命令を含む。このｕＰＵＴ命令は３つのパラメータを必要とする。第１のパラメータはユニットルーチンの開始アドレス（ＵＮＩＴ１およびＵＮＩＴ２）であり、第２のパラメータは当該ユニットにより処理されるオブジェクトの水平方向の初期座標（Ｘ１およびＸ２）であり、第３のパラメータは同じくオブジェクトの垂直方向の初期座標（Ｙ１およびＹ２）である。
【００３８】
ｕＰＵＴ命令によってユニットルーチンが起動されると、当該ユニットルーチン専用のプログラムカウンタ，フレームカウンタおよび対応ワークエリアがアクティブユニットリストに登録され、前記ユニットルーチンの開始アドレスがプログラムカウンタにセットされ、前記オブジェクトの初期座標が対応ワークエリアにセットされる。アクティブユニットリストとは、マルチタスクによって同時処理されるべきプログラムルーチンの一覧表であり、主としてワークＲＡＭ２６に設けられる。なお、アクティブユニットリストに登録された時点では、まだこれらのユニットルーチンは実行されない。ｕＰＵＴ命令は複数フレームにまたがるような長期的命令ではないため、メインルーチン５０は、２つのユニットルーチンを起動後ｕＥＮＤ命令によってただちに処理を終了する。
【００３９】
メインルーチン５０が終了すると、アクティブユニットリストが検索され、次の実行プログラムであるユニットルーチン５２ａの処理が開始される。ユニットルーチン５２ａはアニメルーチンを起動するための命令であるｕＡＮＩＭＥ命令と、オブジェクトを移動させるための命令であるｕＭＯＶＥ命令を含む。ｕＡＮＩＭＥ命令は、アニメルーチンの開始アドレス（Ａ）をパラメータとして持ち、ｕＭＯＶＥ命令は処理フレーム数（Ｍ）、移動パラメータ（Ｉ１，Ｊ１）をパラメータとして持つ。
【００４０】
ｕＡＮＩＭＥ命令が実行されると、ｕＰＵＴ命令と同様に当該アニメルーチン専用のプログラムカウンタおよびフレームカウンタがアクティブユニットリストに登録され、前記ユニットルーチンの開始アドレスがプログラムカウンタにセットされる。また、ｕＡＮＩＭＥ命令のあるユニットルーチンと共通の対応ワークエリアがアニメルーチンに割り当てられる。ｕＡＮＩＭＥ命令もｕＰＵＴ命令と同様に長期的命令ではないため、アニメルーチン起動後はただちに次のｕＭＯＶＥ命令が実行される。
【００４１】
ｕＭＯＶＥ命令が実行されると、指定された処理フレーム数がフレームカウンタにセットされ、速度ベクトルという形で与えられる移動パラメータが、対応ワークメモリのオブジェクト位置データに加算される。これによってオブジェクトの位置が変化する。ｕＭＯＶＥ命令は長期的命令であるため、フレームカウンタの制御を伴う。移動パラメータ加算後、フレームカウンタがデクリメントされ、フレームカウンタの値が０ならば続けて次の命令を処理し、０でなければユニットルーチン５２ａの処理を保留して、アクティブユニットリストを検索し、次の実行プログラムであるユニットルーチン５４ａの処理を開始する。
【００４２】
ユニットルーチン５４ａは、ユニットルーチン５２ａと同様に、ｕＡＮＩＭＥ命令によってアニメルーチン５４ｂを起動した後、ｕＭＯＶＥ命令によってオブジェクトの位置を変化させる。ユニットルーチン５４ａ用に設けられたフレームカウンタがデクリメントされ、次の命令を実行するか、ユニットルーチン５４ａの処理を保留にするかが決定される。ユニットルーチン５４ａの処理が保留になった場合、アクティブユニットリストが検索され、次の実行プログラムであるアニメルーチン５２ｂの処理が開始される。
【００４３】
アニメルーチン５２ｂはｕＰＯＳＥ命令を含む。ｕＰＯＳＥ命令は、処理フレーム数「８」と、表示データの格納アドレス（ＤＡ１）をパラメータとして持つ。ｕＰＯＳＥ命令が実行されると、処理フレーム数がアニメルーチン５２ｂ用に設けられたフレームカウンタにセットされ、対応ワークエリアのオブジェクト位置データに基づいてＤＡ１に格納されたオブジェクト画像データを表示バッファに転送する。
【００４４】
ｕＰＯＳＥ命令は長期的命令であり、オブジェクト画像表示後フレームカウンタがデクリメントされ、次の命令を実行するか、アニメルーチン５２ｂの処理を保留にするかが決定される。ユニットルーチン５４ａの処理が保留になった場合、次の実行プログラムであるアニメルーチン５４ｂの処理が開始される。アニメルーチン５４ｂにおいて、アニメルーチン５２ｂと同様にｕＰＯＳＥ命令が実行され、対応するオブジェクト画像データ（ＤＢ１）が表示バッファに転送される。その後フレームカウンタがデクリメントされ、次の命令を実行するか、アニメルーチン５４ｂの処理を保留にするかが決定される。
【００４５】
アニメルーチン５４ｂの処理が保留になった時点で、アクティブユニットリストに登録されているプログラムルーチンの実行が一巡したことになる。ここでこれらアニメーションプログラムは、ＴＶの垂直ブランキングが発生し、ブランキング処理がなされるまで、保留状態を維持する。ブランキング処理において、表示バッファに書き込まれた画像データがビデオＲＡＭに転送され、次のフレームにおいて転送された画像データが表示される。
【００４６】
ブランキング処理が終了すると、ユニットルーチン５２ａの処理が再開される。ここで、メインプログラム５０がもうすでに処理を終了している点に留意すべきである。メインプログラム５０はｕＥＮＤ命令によってアクティブユニットリスト上の登録を抹消されているため、すでにマルチタスク処理の対象外となっている。
【００４７】
ユニットルーチン５２ａは、前回と同じｕＭＯＶＥ命令を実行する。ただしこの場合には、処理フレーム数（Ｍ）はフレームカウンタにはセットされない。フレームカウンタには前回デクリメントしたフレーム数が記憶されており、ｕＭＯＶＥ命令がオブジェクトの位置を変化させると、再度フレームカウンタがデクリメントされる。このように長期的命令では、ＴＶフィールドに同期してフレームカウンタがデクリメントされ、フレームカウンタの値が０になるまで同じ処理が繰り返される。
【００４８】
同じように、ユニットルーチン５４ｂではｕＭＯＶＥ命令が、アニメルーチン５２ｂおよび５４ｂではｕＰＯＳＥ命令が、それぞれ対応するフレームカウンタの値が０になるまで繰り返される。ここで、各ルーチンの命令が８回繰り返し処理された場合、アニメルーチン５２ｂのｕＰＯＳＥ命令が真っ先にフレームカウンタを０にする。アニメルーチン５２ｂにおいてフレームカウンタが０になると対応するプログラムカウンタが歩進され、次の命令が実行される。
【００４９】
次もやはりｕＰＯＳＥ命令であるが、オブジェクト画像データがＤＡ１からＤＡ２に変化している。また、その次のｕＪＵＭＰ命令によってこれら２つのｕＰＯＳＥ命令がくり返し実行されるようにプログラムされている。これにより、アニメルーチン５２ｂは、ＤＡ１とＤＡ２を８フィールド毎に交互に表示し、オブジェクトの形状に関するアニメーション画像を制御する。
【００５０】
ＴＶフィールドがＭ回経過すると、ユニットルーチン５２ａで次のｕＭＯＶＥ命令が実行されるとともにユニットルーチン５４ａで２つのｕＰＵＴ命令およびｕＥＮＤ命令が連続的に実行される。一方のｕＰＵＴ命令でユニットルーチン５６ａが起動し、もう一方のｕＰＵＴ命令でユニットルーチン５８ａが起動する。両ユニットルーチンはそれぞれ対応のアニメルーチン５６ｂおよび５８ｂを起動し、これによってオブジェクト画像ＤＢ１が消滅すると同時にＤＣ１からＤＣ４によって表現されるオブジェクト画像およびＤＤ１からＤＤ４によって表現されるオブジェクトオブジェクト画像が出現する。
【００５１】
上記のプログラムは図２の絵を表示するためのプログラム例であり、ユニットルーチン５２ａとアニメルーチン５２ｂが矢のプログラムに対応し、ユニットルーチン５４ａとアニメルーチン５４ｂが板のプログラムに対応し、ユニットルーチン５６ａ，５８ａ，アニメルーチン５６ｂおよび５８ｂが分裂した板のプログラムに対応している。
【００５２】
このようなプログラム処理方法によると、板の分裂制御はプログラム構造によって自動的に決定され、矢と板の衝突タイミングは処理フレーム数Ｍによって容易に調整されるため、プログラムの際に全オブジェクトの座標を経過時間において統合する必要が無く、初心者でも容易にプログラムを行うことが可能になる。また、オブジェクトと処理ルーチンとが明確に対応しているためデバッグを容易に行うことができる。
【００５３】
なお、ｕＭＯＶＥ命令において、移動パラメータに速度ベクトルの代わりに最終到達座標を指定することにより、さらにプログラム作成を簡便にすることが可能である。この場合には、処理フレーム数と現在の位置データおよび最終到達座標に基づいて速度ベクトルを予め計算するようにすればよい。
【００５４】
図７は、前述のプログラム処理方法を実現するためのメモリマップの一例である。ＲＡＭエリア６０は図３のワークＲＡＭ２６，ＰＳ−ＲＡＭ４４およびＳ−ＲＡＭ４２に対応し、ＲＯＭエリア６２はＲＯＭ４６およびフラッシュメモリ４９に対応する。
【００５５】
ＲＯＭエリア６２は、プログラム領域６２ａとオブジェクト描画データ領域６２ｂを含む。プログラム領域６２ａは、メインプログラム５０，ユニットルーチン５２ａ，５４ａ，５６ａ，５８ａ，アニメルーチン５２ｂ，５４ｂ，５６ｂおよび５８ｂを含む。また、オブジェクト描画データ領域６２ｂは、オブジェクト描画データＤＡ１，ＤＡ２，ＤＢ１，ＤＣ１，ＤＣ２，ＤＣ３，ＤＣ４，ＤＤ１，ＤＤ２，ＤＤ３およびＤＤ４を含む。これらのルーチンおよびデータは、主としてデータ放送によって伝送され、フラッシュメモリ４９に記憶される。しかし、予めＲＯＭ４６に使用頻度の高いオブジェクト描画データを記憶しておくことにより、伝送するデータ量を減少させることができる。
【００５６】
メインルーチン，ユニットルーチンおよびアニメルーチンの各命令は、中間言語として伝送され、記憶される。例えば、前述のｕＰＵＴ命令は、命令コード０１Ｈとして記憶される。これによって、各ルーチンは高速に伝送され、少ない記憶容量でフラッシュメモリ４９に記憶される。
【００５７】
またＲＯＭエリア６２は、前述の様々なプログラムをマルチタスクを用いて実行するためのインタプリタプログラムを記憶するインタプリタ領域６２ｃを含む。インタプリタ領域６２ｃは、主としてＲＯＭ４６内に割り当てられるが、放送によってインタプリタプログラムが伝送されたときにフラッシュメモリ４９内に設けられてもよい。また、基本的な命令を含むインタプリタプログラム本体はＲＯＭ４６上に記憶され、放送によって伝送された追加すべき命令を含むサブインタプリタはフラッシュメモリ４９上に記憶されてもよい。この場合、サブインタプリタは、インタプリタ本体から適時利用される。
【００５８】
ＲＡＭエリア６０は、アクティブユニットリスト記憶領域６０ａ，対応ワークエリア記憶領域６０ｂおよび実行ユニットポインタ領域６０ｃを含む。アクティブユニットリスト領域６０ａは、各ユニットプログラムに対応するプログラムカウンタ，フレームカウンタおよび対応ワークアドレスを含む。
【００５９】
対応ワークエリア記憶領域６０ｂは、ユニットの位置や属性を示すデータを記憶する。実行ユニットポインタ６０ｃは、実行中のユニットプログラムに対応するアクティブユニットリスト上のアドレスを記憶する。実行ユニットポインタ６０ｃは、ＴＶの垂直ブランキングに同期してリセットされ、ユニットプログラムが消滅、あるいは処理を保留するのに対応して歩進される。その結果、次に実行すべきユニットルーチンまたはアニメルーチンのアクティブユニットリスト上のアドレスを順次指定する。
【００６０】
実行されるべきユニットプログラムは、アクティブユニットリスト領域６０ａに専用のプログラムカウンタおよびフレームカウンタが登録され、対応ワークエリア領域に専用の作業領域が割り当てられ、割り当てられた作業領域領域を示す対応ワークアドレスがアクティブユニットリストに登録されることによって能動化される。
【００６１】
能動化されたユニットプログラムが実行ユニットポインタ６０ｃによって順次スキャンされることに応じて、対応するＲＯＭエリア６２上のプログラムが実行される。メインルーチン，ユニットルーチンおよびアニメルーチンは、全てアクティブユニットリスト上で同等のマルチタスクプログラムとして扱われ、リストへの登録順に実行される。
【００６２】
ここで、各アニメルーチンがユニットルーチン上から起動している点に着目すべきである。なぜなら、これによってアニメルーチンは対応するユニットルーチンよりも必ずアクティブユニットリスト上の登録が遅れる。したがって、ユニットルーチンによってオブジェクトの位置が変更された後に、アニメルーチンによってその位置にオブジェクトが表示されることになる。
【００６３】
これを応用して、１つのユニットルーチンに複数のアニメルーチンを対応させることにより、複数のオブジェクト描画データの組み合わせで１つのオブジェクトを形成してもよい。この場合でも対応ワークアドレスは各アニメルーチンに対してすべて共通に与えられるため、複数のオブジェクト描画データは各々相対的に所定の位置を保ったまま画面上を移動することになる。
【００６４】
なお、アニメルーチンを持たないユニットルーチンがあっても良い。例えば、ユニットルーチンは、ＢＧＭを発生させるためのサウンド発生プログラムを持っていてもよい。また、ユニットルーチンは、コントローラ８を監視することによりボタンが押された場合にデータ放送受信メニューを発生するプログラムを持っていてもよい。どちらの場合にも画像とは無関係のユニットルーチンであるため、アニメルーチンを特に指定する必要はない。
【００６５】
さらに、アニメルーチンをユニットルーチン内に組み込むことにより、専用のアニメルーチンを持たないように構成することも可能である。例えば、図２における板のように、対応するオブジェクト描画データが１つ（図６におけるＤＢ１）しか無い場合、ＡＮＩＭＥ命令に代えて直接ＰＯＳＥ命令をユニットルーチンに記述することができる。
【００６６】
この場合、ユニットルーチンの対応ワークエリアには、組込みアニメルーチンであることを示すフラグと、実行すべき命令（例えばＰＯＳＥ命令）の位置を示すアドレスが記憶される。動作においては、ユニットルーチンの処理終了後、このフラグが参照され、指定されたアドレスの命令が実行されることにより、オブジェクトが表示される。
【００６７】
また、組込みアニメルーチンと同様に、複数の命令からなるアニメルーチンを対応ワークエリアを用いて処理するようにしてもよい。この場合には、アクティブユニットリスト上にアニメルーチンは登録されず、対応ワークエリア上にはアニメルーチンのプログラムカウンタとともに、アニメルーチン用のフレームカウンタが設けられる。ユニットルーチン終了時にこれらプログラムカウンタおよびフレームカウンタが参照され、自動的に対応するアニメルーチンが実行される。
【００６８】
図８は本願のプログラム処理方法の全体的な流れを示すフローチャートである。アニメーション表示装置の電源が投入されると、Ｓ１においてアニメーションプログラムが放送受信アダプタ４（図３）を介して受信される。受信されたアニメーションプログラムは、Ｓ２においてメモリパック７（図３）に保存され、Ｓ３においてＣＰＵ２４（図３）により起動される。
【００６９】
Ｓ３においてアニメーションプログラムが起動されると、Ｓ４においてエントリルーチンであるメインプログラム５０（図４）が実行される。メインプログラム５０は、Ｓ４においてユニットプログラム５２および５４（図４）を起動する。起動されたユニットプログラム５２および５４は、Ｓ４においてメインプログラム５０とともに時分割処理される。また、Ｓ４において、ユニットプログラム５４は、ユニットプログラム５６および５８を起動し、時分割処理される。Ｓ４の一連の処理をユニット処理と呼び、この詳細は図９を用いて後述する。
【００７０】
Ｓ４において各プログラムは、他のプログラムの起動制御とともに対応する表示オブジェクトの生成を行う。Ｓ４の時分割処理が一巡すると、Ｓ６において生成された複数の表示オブジェクトが１画面分の画像データとして表示される。実際には、Ｓ６は前述のブランキング処理に対応し、ビデオＲＡＭ３０（図３）へ画像データを転送し、画像データを表示する。Ｓ４のユニット処理とＳ６のブランキング処理は、ＴＶのフィールド周波数に対応して交互に実行される。
【００７１】
図９は、ユニット処理のフローチャートである。ユニット処理はアクティブユニットリストの管理および各ユニットプログラムの実行を行うインタプリタによって実施される。インタプリタは、アクティブユニットリストの登録内容にしたがって各ユニットプログラムを実行し、各ユニットプログラム内の起動命令にしたがって指定のプログラムをアクティブユニットリストに登録する。そしてインタプリタは新たに登録されたユニットプログラムをさらに実行する。
【００７２】
ユニット処理では、Ｓ４１においてまずユニットポインタが初期化され、アクティブユニットリストに登録されている先頭のユニットプログラムが指定される。次にＳ４２において指定されたアクティブユニットのプログラムカウンタが参照され、Ｓ４３においてプログラムカウンタによって示される命令がフェッチされる。フェッチされた命令は、Ｓ４４において実行される。
【００７３】
Ｓ４４において実行された命令がルーチンの終了を意味する命令（例えばｕＥＮＤ命令）であった場合には、処理がＳ４５からＳ５１へ移行する。そうでない場合には、処理がＳ４５からＳ４６へ移行し、Ｓ４４において実行された命令が長期的命令であったかどうかがチェックされる。Ｓ４４において実行された命令が例えばｕＰＵＴ等の即時実行命令であった場合には、Ｓ４６からＳ４７に処理が移行し、プログラムカウンタを次の命令位置まで歩進して、再度Ｓ４３からの処理を繰り返す。
【００７４】
Ｓ４４において実行された命令が例えばｕＭＯＶＥ等の長期的命令であった場合には、Ｓ４８においてフレームカウンタ制御が行なわれる。もし、フレームカウンタの値が０である場合には、Ｓ４４で実行された長期的命令のパラメータである処理フレーム数をフレームカウンタにセットし、フレームカウンタの値をデクリメントする。フレームカウンタの値が０でなかった場合には単にデクリメントのみを行う。
【００７５】
Ｓ４８のデクリメントによってフレームカウンタが１から０に変化すると、当該長期的命令の実行が指定された処理フレーム数だけ行なわれたことを意味する。したがってこの場合、コマンドエンドとしてＳ４９からＳ５０へ処理が移行し、プログラムカウンタが歩進される。デクリメントによってフレームカウンタの値が０にならなかった場合には、長期的命令はまだ指定した回数分だけ処理を終えていないということになり、処理をＳ４９からＳ５１に移行して、プログラムカウンタを現行のまま保持する。
【００７６】
次にＳ５１においてユニットポインタが歩進され、アクティブユニットリスト上の次のルーチンのプログラムカウンタ位置が示される。アクティブユニットリストに次のルーチンがある場合には、Ｓ５２からＳ４２に移行して、前述と同様に次のルーチンを処理する。もし、アクティブユニットリストに次のルーチンがない場合には、ユニットエンドとしてＳ５２からＳ５３へ処理が移行し、垂直ブランキングを待ってユニット処理を終了する。
【００７７】
ユニット処理が終了すると、ただちにブランキング処理が実行される。また、ブランキング処理が終了すると、ただちに再度ユニット処理が実行される。もし、ユニット処理の処理時間がＴＶのフィールド表示期間を越えた場合は、複数ＴＶフィールドを用いてアクティブユニットリストのルーチン処理を一巡させる。この場合でもＳ５３で最終的に垂直ブランキングと同期をとっているため、各ルーチン間のフレームカウントスピードには結果的にばらつきが出ず、ユニット処理は常にＴＶフィールドに同期して実行される。
【００７８】
図１０は図９のＳ４４において、ｕＰＵＴ命令を実行するためのプログラムフローチャートである。ｕＰＵＴ命令が実行されると、Ｓ４１０においてパラメータに記述された起動アドレスがプログラムカウンタとしてアクティブユニットリスト上に登録され、Ｓ４１２において専用のフレームカウンタが準備される。また、Ｓ４１４において、対応ワークエリアが確保され、対応ワークアドレスがアクティブユニットリストに登録される。さらに対応ワークエリア内に、パラメータとして与えられているオブジェクトの初期位置データが記憶される。
【００７９】
図１１は、ｕＡＮＩＭＥ命令を実行するためのプログラムフローチャートである。ｕＡＮＩＭＥ命令が実行されると、Ｓ４２０においてパラメータに記述された起動アドレスがプログラムカウンタとしてアクティブユニットリスト上に登録され、Ｓ４２２において専用のフレームカウンタが準備される。また、Ｓ４２４において、ｕＡＮＩＭＥ命令のあるユニットルーチンと同じ対応ワークエリアアドレスが、アクティブユニットリストに登録される。
【００８０】
図１２は、ｕＥＮＤ命令を実行するためのプログラムフローチャートである。ｕＥＮＤ命令が実行されると、Ｓ４３０およびＳ４３２においてｕＥＮＤ命令のあるユニットルーチンのプログラムカウンタおよびフレームカウンタがアクティブユニットリスト上から削除される。また、Ｓ４３４において対応ワークエリアのメモリ領域が開放され、対応ワークアドレスがアクティブユニットリスト上から削除される。
【００８１】
さらに、Ｓ４３６において、ｕＥＮＤ命令のあるユニットルーチンと対応関係にある（例えば、共通のワークエリアを持つ）アニメルーチンが検索され、Ｓ４３８において、発見されたアニメルーチンのプログラムカウンタ，フレームカウンタおよび対応ワークアドレスがアクティブユニットリスト上から削除される。
【００８２】
図１３は、ｕＪＵＭＰ命令を実行するためのプログラムフローチャートである。ｕＪＵＭＰ命令が実行されると、Ｓ４４０において、パラメータに記述された指定アドレスが、実行中のルーチンに対応するプログラムカウンタにセットされる。これにより次の命令実行時には、指定アドレスから命令フェッチを行うようになる。
【００８３】
図１４は、ｕＭＯＶＥ命令を実行するためのプログラムフローチャートである。ｕＭＯＶＥ命令が実行されると、Ｓ４５０において当該ｕＭＯＶＥコマンドが第１回目の実行であるか否かが判断される。第１回目の実行時の場合には、Ｓ４５２において移動パラメータのセットが行なわれる。もし、移動パラメータが最終到達座標である場合には、ここで速度ベクトルが計算され、対応ワークエリアに保存される。また、移動パラメータが速度ベクトルそのものである場合には、単に対応ワークエリアに速度ベクトルを書き移す。
【００８４】
第２回目以降の実行時には、Ｓ４５４において対応ワークエリア上の位置データと、第１回目の実行時に保存された速度ベクトルが加算され、新たな位置データとして記憶される。与えられた移動パラメータが速度ベクトルであるか最終到達座標であるかは、専用の識別フラグをパラメータに加えることによって区別してもよいし、ｕＭＯＶＥ命令とは異なる命令を用意することにより、一方を速度ベクトル用の命令、他方を最終到達座標用の命令として区別してもよい。
【００８５】
図１５は、ｕＰＯＳＥ命令を実行するためのプログラムフローチャートである。ｕＰＯＳＥ命令が実行されると、Ｓ４６０において対応ワークエリアからオブジェクト位置データが読み出され、Ｓ４６２において読み出されたオブジェクト位置と、指定されたオブジェクト描画データに基づいてオブジェクトが表示される。ただし、この段階では単に表示バッファに表示に必要なデータを転送する作業のみが行なわれ、実際のビデオＲＡＭへの書き込みはブランキング処理においてなされる。
【００８６】
これらの命令はほんの一例であり、実際にはより多くの、またより複雑な命令が準備される。しかしながら、本願のプログラム処理方法の構成上、プログラムの流れを制御するための命令は従来のプログラム記述言語に比べて極めて少なくできる。そのため、プログラムそのものは、オブジェクトの移動制御あるいはアニメーション制御のための複雑な命令を準備しても構造的に単純であるため、初心者でも容易にプログラムを作成可能である。
【００８７】
以上は本願発明を衛星放送を利用したデータ放送で行う例について述べたが、本願のプログラム処理方法によれば簡単なアニメーションプログラムを大量に作成するのに便利であるため、単方向大量通信用のプログラムにおいてその効果を最大限に発揮する。しかし、本願は、広く一般的にプログラムを入力してアニメーションを表示する機器すべてに応用することが可能である。また、本願実施例では、アニメーションプログラムを実行するためにインタプリタを用いたが、コンパイラを用いて実行形式のプログラムに変換した後にこれを実行するようにしてもよい。
【００８８】
【発明の効果】
本願発明を用いると、時間的に各サブルーチンに関連を持たせたマルチタスク処理により自動的に経過時間の統合が行なわれる。そのため、初心者や未熟なプログラマーでも物体個々の動きを記述するだけで容易にコンピュータグラフィックスを用いたアニメーション表示プログラムを作成可能である。
【００８９】
また、１つのルーチンから他の複数のルーチンを起動できるため、ドミノ倒しのように連鎖的に各ルーチン処理が実行に移される。したがって、特別なプログラムフロー制御命令を用いることなく、簡単なプログラムで複雑なアニメーション画像を作成できる。
【００９０】
また、各サブルーチンがＴＶフィールド周波数に関連して動作するとともに、サブルーチンに対応してオブジェクトの表示が行なわれるため、表示を変更したい場合にプログラムのどの部分を修正すべきかを容易に特定できる。すなわち、プログラムのデバッグ作業が容易である。
【００９１】
さらに、オブジェクト単位で動作を指定すればそのままアニメーションプログラムとして利用できるため、対話形式でオブジェクトの動作を指定するようなアニメーションプログラム作成ツールの開発が容易である。このため、アニメーションプログラムが簡便に作成可能となる。
【００９２】
このように、初心者でも簡便にプログラムを作成できる本願のプログラム処理方法は、比較的小規模なアニメーションプログラムを大量に必要とするデータ放送等に好適する。これによって放送局は、放送用のデータを大量に、しかも安価に入手可能となる。
【図面の簡単な説明】
【図１】従来のサブルーチンを用いた場合のプログラムフローである。
【図２】アニメーション画像の一例である。
【図３】本願発明のアニメーション表示装置の一例のブロック図である。
【図４】本願発明のプログラム処理方法の概念図である。
【図５】本願発明のプログラム処理方法を用いた場合のプログラムフローである。
【図６】具体的なアニメーション表示プログラムの一例である。
【図７】本願のプログラム処理方法を実現するためのメモリマップの一例である。
【図８】本願のプログラム処理方法の全体的な流れを示すフローチャートである。
【図９】ユニット処理のフローチャートである。
【図１０】ｕＰＵＴ命令を実行するためのプログラムフローチャートである。
【図１１】ｕＡＮＩＭＥ命令を実行するためのプログラムフローチャートである。
【図１２】ｕＥＮＤ命令を実行するためのプログラムフローチャートである。
【図１３】ｕＪＵＭＰ命令を実行するためのプログラムフローチャートである。
【図１４】ｕＭＯＶＥ命令を実行するためのプログラムフローチャートである。
【図１５】ｕＰＯＳＥ命令を実行するためのプログラムフローチャートである。
【図１】
0003734528.tif 000002
【図５】
0003734528.tif 000003
【図２】
0003734528.tif 000004
【図３】
0003734528.tif 000005
【図４】
0003734528.tif 000006
【図６】
0003734528.tif 000007
【図７】
0003734528.tif 000008
【図８】
0003734528.tif 000009
【図９】
0003734528.tif 000010
【図１０】
0003734528.tif 000011
【図１１】
0003734528.tif 000012
【図１２】
0003734528.tif 000013
【図１３】
0003734528.tif 000014
【図１４】
0003734528.tif 000015
【図１５】
0003734528.tif 000016