(57)【特許請求の範囲】
【請求項１】
表示装置の表示対象となる画像データを記憶する表示メモリと、
前記画像データの構成単位となるスプライトの表示属性を示す属性データを格納するスプライト属性テーブルと、
前記スプライト属性テーブルに格納された属性データに従って、スプライトの画像データを前記表示メモリ内の画像データに反映させる描画処理を実行するスプライトレンダリングプロセッサと、
ＣＰＵからの指示に従って、転送対象である属性データを含むとともに、前記転送対象である属性データの前記スプライト属性テーブルへの転送を指示するテーブルライトコマンドを含むアニメーション実行プログラムを外部メモリから読み出して実行し、前記テーブルライトコマンドに従って前記転送対象である属性データを前記スプライト属性テーブルに転送するアニメーション実行エンジンとを具備し、
前記アニメーション実行エンジンは、前記アニメーション実行プログラムが、垂直ブランク期間の数の指定を伴うインターバルコマンドを含む場合に、前記インターバルコマンドの実行時、前記インターバルコマンドにおいて指定された数の垂直ブランク期間が終了するのを待って、前記インターバルコマンドの後続のコマンドを実行することを特徴とする画像表示装置。
【請求項２】
前記外部メモリは、スプライトのパターンデータとともに前記アニメーション実行プログラムを記憶するパターンメモリであり、
前記スプライトレンダリングプロセッサは前記パターンメモリに記憶されたスプライトのパターンデータを前記描画処理に利用することを特徴とする請求項１に記載の画像表示装置。
【請求項３】
前記スプライト属性テーブルは２個あり、
前記アニメーション実行エンジンは、前記アニメーション実行プログラムが、前記２個のスプライト属性テーブルの一方を描画用とし、かつ、他方を更新用とすることを指示するフリップコマンドを含む場合に、当該フリップコマンドに従って、前記２個のスプライト属性テーブルの一方を描画用とし、かつ、他方を更新用とするものであり、前記描画用のスプライト属性テーブルを前記スプライトレンダリングプロセッサの描画処理に利用させるとともに、前記更新用のスプライト属性テーブルを前記属性データの転送先とすることを特徴とする請求項１または２に記載の画像表示装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報表示機器等に好適な画像表示装置に関する。
【背景技術】
【０００２】
この種の画像表示装置として、表示対象であるスプライトの表示位置、倍率等の表示属性を示す属性データを格納したスプライト属性テーブルを備え、このスプライト属性テーブル内の属性データに従ってスプライトの画像を表示器に表示する画像表示装置が各種提案されている（例えば特許文献１参照）。
【０００３】
この種の画像表示装置において、スプライトの表示位置を変化させることにより表示器にアニメーション表示を行わせる場合がある。図５は、このようなアニメーション表示機能を備えた従来の画像表示装置１０の一部の構成を示すブロック図である。
【０００４】
図５において、表示メモリ３は、図示しない表示器に表示させる画像データを記憶するメモリである。この表示メモリ３は、フレーム単位（一画面単位）で画像データを記憶するフレームメモリであってもよく、ライン単位（一水平走査線単位）で画像データを記憶するラインメモリであってもよい。スプライト属性テーブル１Ａおよび１Ｂは、上述したようにスプライトの表示属性を示す属性データを格納するテーブルである。このスプライト属性テーブル１Ａおよび１Ｂは交互に一方が描画用のスプライト属性テーブルとして、他方が更新用のスプライト属性テーブルとして選択される。スプライトレンダリングプロセッサ２は、図示しないパターンメモリに記憶されたスプライトのパターンデータを読み出して、表示メモリ３に格納することにより表示器の表示画面にスプライトの画像を反映させる描画処理を実行する。その際に、スプライトレンダリングプロセッサ２は、スプライト属性テーブル１Ａまたは１Ｂのうち描画用になっている方のスプライト属性テーブルを参照し、例えば属性データが示す表示位置にスプライトが表示されるように表示メモリ３におけるスプライトのパターンデータの格納アドレスを決定する等の処理を行う。
【０００５】
このような画像表示装置１０にアニメーション表示を行わせる場合、画像表示装置１０を制御するＣＰＵは、スプライト属性テーブル１Ａまたは１Ｂのうち更新用になっている方のスプライト属性テーブル内の属性データを書き換え、この属性データの書き換えを行った更新用のスプライト属性テーブルを描画用のスプライト属性テーブルに切り換える、という処理を繰り返す。
【０００６】
図６はこのようなアニメーション表示の動作例を示すタイムチャートである。この図６に示す例において、ＶＳＹＮＣ＿Ｎは、表示器に与えられる垂直同期信号であり、この垂直同期信号ＶＳＹＮＣ＿Ｎの立ち下がりから次の立ち下がりまでの期間が１フレーム分の画像表示を行う１垂直走査期間（１フレーム）である。また、表示メモリ３は、２フレーム分の画像データを記憶可能なフレームメモリである。
【０００７】
図６に示す例において、フレーム１では、スプライト属性テーブル１Ａが更新用、スプライト属性テーブル１Ｂが描画用となっている。そこで、ＣＰＵは、更新用のスプライト属性テーブル１Ａに属性データ１を書き込む。次にフレーム２になると、スプライト属性テーブル１Ａが描画用、スプライト属性テーブル１Ｂが更新用となる。そこで、スプライトレンダリングプロセッサ２は、描画用のスプライト属性テーブル１Ａ内の属性データ１に従って、スプライトのパターンデータを表示メモリ３に格納する描画処理を実行する。一方、ＣＰＵは、更新用のスプライト属性テーブル１Ｂに属性データ２を書き込む。
【０００８】
次にフレーム３になると、スプライト属性テーブル１Ａが更新用、スプライト属性テーブル１Ｂが描画用となる。そこで、スプライトレンダリングプロセッサ２は、描画用のスプライト属性テーブル１Ｂ内の属性データ２に従って、スプライトのパターンデータを表示メモリ３に格納する描画処理を実行する。一方、ＣＰＵは、更新用のスプライト属性テーブル１Ａに属性データ３を書き込む。これらの動作と並行し、フレーム３では、フレーム２において表示メモリ３に格納された画像データ、すなわち、属性データ１に従って描画されたスプライトのパターンデータが表示メモリ３から読み出され、表示器に表示される。
【０００９】
次にフレーム４になると、スプライト属性テーブル１Ａが描画用、スプライト属性テーブル１Ｂが更新用となる。そこで、スプライトレンダリングプロセッサ２は、描画用のスプライト属性テーブル１Ａ内の属性データ３に従って、スプライトのパターンデータを表示メモリ３に格納する描画処理を実行する。一方、ＣＰＵは更新用のスプライト属性テーブル１Ｂに属性データ４を書き込む。これらの動作と並行し、フレーム４では、フレーム３において表示メモリ３に格納された画像データ、すなわち、属性データ２に従って描画されたスプライトのパターンデータが表示メモリ３から読み出され、表示器に表示される。
【００１０】
以上のように、スプライトの描画に用いられる属性データが属性データ１→属性データ２→属性データ３→属性データ４→…という具合に切り換えられる。これにより表示器におけるスプライトの表示態様が変化し、アニメーションが表示される。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０００−３５７８１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ところで、上述した従来の画像表示装置は、アニメーション表示を行うためにＣＰＵがスプライト属性テーブルに属性データを頻繁に書き込まねばならず、アニメーション表示のためのＣＰＵの負担が重いという問題があった。
【００１３】
この発明は、以上説明した事情に鑑みてなされたものであり、ＣＰＵに大きな負担を与えることなくアニメーション表示を行うことができる画像表示装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
この発明は、表示装置の表示対象となる画像データを記憶する表示メモリと、前記画像データの構成単位となるスプライトの表示属性を示す属性データを格納するスプライト属性テーブルと、前記スプライト属性テーブルに格納された属性データに従って、スプライトの画像データを前記表示メモリ内の画像データに反映させる描画処理を実行するスプライトレンダリングプロセッサと、ＣＰＵからの指示に従って、転送対象である属性データを含むとともに、前記転送対象である属性データの前記スプライト属性テーブルへの転送を指示するテーブルライトコマンドを含むアニメーション実行プログラムを外部メモリから読み出して実行し、前記テーブルライトコマンドに従って前記転送対象である属性データを前記スプライト属性テーブルに転送するアニメーション実行エンジンとを具備することを特徴とする画像表示装置を提供する。
【００１５】
かかる発明によれば、アニメーション実行エンジンが、ＣＰＵからの指示に従って、テーブルライトコマンドを含むアニメーション実行プログラムを外部メモリから読み出して実行し、テーブルライトコマンドの実行タイミングにおいて転送対象である属性データをスプライト属性テーブルに転送する。従って、ＣＰＵに大きな負担を与えることなく、アニメーション表示を行うことができる。
【図面の簡単な説明】
【００１６】
【図１】この発明の一実施形態による画像表示装置の構成を示すブロック図である。
【図２】同実施形態においてアニメーション実行プログラムを構成する各種のコマンドの構成を示す図である。
【図３】同実施形態の第１の動作例を示すタイムチャートである。
【図４】同実施形態の第２の動作例を示すタイムチャートである。
【図５】従来の画像表示装置の一部の構成を示すブロック図である。
【図６】同画像表示装置がアニメーション表示を行う場合の動作例を示すタイムチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を参照し、この発明の実施の形態を説明する。
図１は、この発明の一実施形態による画像表示装置１００の構成を示すブロック図である。この画像表示装置１００は、ＣＰＵ２０１からの指示に従い、ＲＯＭ（Read Only Memory；読み出し専用メモリ）等による外部メモリであるパターンメモリ２０２からスプライトのパターンデータを読み出して、表示対象の画像データを生成し、ＬＣＤ（Liquid Crystal Display；液晶表示器）２０３に表示させる装置である。ここで、パターンメモリ２０２には、圧縮符号化されたスプライトのパターンデータの他、アニメーション実行プログラムが記憶されている。このアニメーション実行プログラムは、アニメーション表示のための各種の制御を指示するコマンドの集合体である。
【００１８】
次に画像表示装置１００の構成について説明する。レジスタ１０１は、画像表示装置１００内の各部の制御に用いられる制御情報を記憶する手段である。本実施形態では、ＣＰＵ２０１と、画像表示装置１００内に設けられたアニメーション実行エンジン１２０がこのレジスタ１０１への制御情報の書き込みを行う。
【００１９】
スプライト属性テーブル１０２Ａおよび１０２Ｂは、表示対象であるスプライト毎にその表示属性を示す属性データを記憶するスプライト属性記憶手段であり、例えばＲＡＭ（Random Access Memory）により構成されている。なお、スプライト属性テーブル１０２Ａおよび１０２Ｂは、別個のＲＡＭにより実現されるものであってもよく、共通のＲＡＭの異なるエリアにより実現されるものであってもよい。スプライトレンダリングプロセッサ１１０は、このスプライト属性テーブル１０２Ａおよび１０２Ｂに記憶されたスプライトの属性データに従って描画処理を行うプロセッサである。なお、この描画処理の詳細については後述する。そして、アニメーション実行エンジン１２０は、パターンメモリ２０２内のアニメーション実行プログラムを実行し、スプライト属性テーブル１０２Ａおよび１０２Ｂの属性データの書き換え等を行う手段である。
【００２０】
本実施形態では、ＣＰＵ２０１とアニメーション実行エンジン１２０の両方がスプライト属性テーブル１０２Ａおよび１０２Ｂの属性データの書き換えを行う。さらに詳述すると、本実施形態においてスプライト属性テーブル１０２Ａおよび１０２Ｂの各々は、ＣＰＵ２０１によって属性データの書き換えが行われるＣＰＵ制御エリアと、アニメーション実行プログラムに基づき、アニメーション実行エンジン１２０により属性データの書き換えが行われるプログラム制御エリアとに区分されて使用される。そして、本実施形態においてスプライト属性テーブル１０２Ａおよび１０２Ｂの各ＣＰＵ制御エリアは、一方が属性データの書き換えを受け付ける更新用エリアとなる場合に他方が描画処理において参照される描画用エリアとなるように切り換え制御が行われる。また、スプライト属性テーブル１０２Ａおよび１０２Ｂの各プログラム制御エリアは、各ＣＰＵ制御エリアとは独立に、一方が属性データの書き換えを受け付ける更新用エリアとなる場合に他方が描画処理において参照される描画用エリアとなるように切り換え制御が行われる。
【００２１】
パターンデータデコーダ１０３は、表示対象であるスプライトのパターンデータをパターンメモリ２０２から読み出して復号化を行い、スプライトを構成する各画素の色を示す画像データを出力する装置である。
【００２２】
カラーパレット１０４は、表示対象であるスプライトの画像データが画素の色をカラーコードにより表現したものである場合に、その画像データを表示に用いることが可能なＲ、Ｇ、ＢあるいはＹ、Ｕ、Ｖ等の画素の色成分の強さを示す画像データに変換する変換テーブルであり、ＲＡＭ等により構成されている。本実施形態では、ＣＰＵ２０１とアニメーション実行エンジン１２０がカラーパレット１０４の内容の更新を行うことが可能である。
【００２３】
表示メモリ１０５は、ＬＣＤ２０３に表示させる画像データを記憶するメモリである。この表示メモリ１０５は、フレーム単位で画像データを記憶するフレームメモリであってもよく、ライン単位で画像データを記憶するラインメモリであってもよい。
【００２４】
スプライトレンダリングプロセッサ１１０は、ＬＣＤ２０３の垂直走査周期毎に、スプライト属性テーブル１０２Ａおよび１０２Ｂの各ＣＰＵ制御エリアおよび各プログラム制御エリアのうち描画用エリアとなっているエリア内の属性データに従って、スプライトの画像データを表示メモリ１０５内の画像データに反映させる描画処理を実行する。さらに詳述すると、スプライトレンダリングプロセッサ１１０は、１垂直走査周期の垂直ブランク期間の終了タイミングにおいて、スプライト属性テーブル１０２Ａおよび１０２Ｂの各ＣＰＵ制御エリアおよび各プログラム制御エリアのうち描画用エリアとなっている各エリアを検知し、この描画用エリア内の属性データが示すスプライトのパターンデータの復号化をパターンデータデコーダ１０３に実行させ、パターンデータデコーダ１０３により得られるスプライトの画像データを表示メモリ１０５に格納する。その際、パターンデータデコーダ１０３により得られるスプライトの画像データがカラーコードにより表現されたものである場合にその画像データのＲ、Ｇ、Ｂ形式あるいはＹ、Ｕ、Ｖ形式等の画像データへの変換をカラーパレット１０４に行わせる。また、スプライトの画像データを表示メモリ１０５に格納するに当たっては、描画用エリア内の属性データが示す各スプライトの表示位置等の表示属性に従って、表示メモリ１０５における画像データの格納先のアドレスや格納タイミングの制御等を行う。
【００２５】
表示スキャン制御部１０６は、垂直同期信号ＶＳＹＮＣ＿Ｎや水平同期信号ＨＳＹＮＣ＿Ｎ等、ＬＣＤ２０３の表示制御の同期信号を発生し、ＬＣＤ２０３と読み出し制御部１０７に供給する回路である。読み出し制御部１０７は、表示スキャン制御部１０６が出力する同期信号に従って、表示メモリ１０５から画像データを読み出し、ＬＣＤ２０３に供給する。
【００２６】
スプライトレンダリングプロセッサ１１０による表示メモリ１０５への画像データの書き込み（描画）と読み出し制御部１０７による表示メモリ１０５からの画像データの読み出しの態様は、表示メモリ１０５がフレームメモリである場合とラインメモリである場合とで異なったものとなる。
【００２７】
前者の場合、例えば２つのフレームメモリが表示メモリ１０５として用いられる。これらの２つのフレームメモリは、各垂直走査周期において一方が描画用、他方が表示用となり、垂直走査周期が切り換わる毎に描画用であったフレームメモリが表示用に、表示用であったフレームメモリが描画用に切り換わる。そして、各垂直走査周期において、スプライトレンダリングプロセッサ１１０は、１フレーム分の画像データを描画用のフレームメモリに書き込み、読み出し制御部１０７は、表示用のフレームメモリから画像データを読み出してＬＣＤ２０３に供給する。
【００２８】
後者の場合、例えば２ライン分のラインメモリが表示メモリ１０５として用いられる。これらの２つのラインメモリは、各水平走査周期において一方が描画用、他方が表示用となり、水平走査周期が切り換わる毎に描画用であったラインメモリが表示用に、表示用であったラインメモリメモリが描画用に切り換わる。そして、各水平走査周期において、スプライトレンダリングプロセッサ１１０は、１ライン分の画像データを描画用のラインメモリに書き込み、読み出し制御部１０７は、水平同期信号ＨＳＹＮＣ＿Ｎに同期して、表示用のラインメモリから画像データを読み出してＬＣＤ２０３に供給する。
【００２９】
アニメーション実行エンジン１２０は、レジスタ１０１を介して与えられるＣＰＵ２０１からの指示に従い、パターンメモリ２０２からアニメーション実行プログラムを読み出して実行する。そして、アニメーション実行エンジン１２０は、アニメーション実行プログラムに従い、スプライト属性テーブル１０２Ａおよび１０２Ｂの各プログラム制御エリアを更新用エリアとするか描画用エリアとするかの切り換え制御を行いつつ、更新用のエリア内の属性データの書き換えを行う。
【００３０】
図２は、本実施形態においてアニメーション実行プログラムを構成する各種のコマンドの構成を示す図である。各コマンドは、エンドコマンドを除き、１バイトのオペコードと１または複数バイトのオペランドとにより構成されている。図２では、各コマンドのオペコードの欄に、そのオペコードがＡＳＣＩＩコード体系において示す文字が示されている（例えばスタートコマンドのオペコードはＡＳＣＩＩコード体系において文字“Ｓ”を示す）。
【００３１】
スタートコマンドは、アニメーション実行プログラムの先頭に配置されるコマンドであり、オペランドとしてループ回数を伴う。このループ回数は、アニメーション実行プログラムがループ区間を含む場合において、そのループ区間の終点から始点に戻る回数、すなわち、ループ区間の繰り返し回数よりも１だけ少ない数値を示す。エンドコマンドは、アニメーション実行プログラムの最後に配置されるコマンドであり、オペコードのみからなる。
【００３２】
ループコマンドは、上述したループ区間を指定するコマンドであり、アニメーション実行プログラムにおいてループ区間の終点となる位置に配置される。また、ループコマンドは、オペランドとして戻りアドレスと繰り返しモード値を伴う。ここで、戻りアドレスは、ループ区間の始点がループコマンドの格納されているアドレス（ループ区間の終点）から何個前のアドレスかを指示するデータである。また、繰り返しモード値は、ループ区間の終点から始点への戻り回数を指定するものであり、「０」と「１」の２通りの値をとり得る。繰り返しモード値「０」は、スタートコマンドのオペランドであるループ回数だけループ区間の始点に戻ることを指示するものである。また、繰り返しモード値「１」は、スタートコマンドのオペランドであるループ回数に拘束されず、ループ区間の始点に戻る動作を無限に繰り返すことを指示するものである。
【００３３】
インターバルコマンドは、待機を指示するコマンドである。このインターバルコマンドは、垂直ブランク待ち回数、すなわち、待機すべき垂直ブランク期間の終了点の個数を指定するオペランドを有する。アニメーション実行エンジン１２０は、このインターバルコマンドを実行した場合、オペランドが示す垂直ブランク待ち回数分の垂直ブランク期間が発生するのを待ち、最後の垂直ブランク期間が終了したとき、後続のコマンドを実行する。このインターバルコマンドは、テーブルライトコマンドの実行タイミングの調整手段等として有用である。
【００３４】
フリップコマンドは、スプライト属性テーブル１０２Ａおよび１０２Ｂに記憶されたスプライトの属性データを描画処理に使用させるための制御を指示するコマンドである。より具体的には、このフリップコマンドは、スプライト属性テーブル１０２Ａおよび１０２Ｂの各プログラム制御エリアを描画用エリアとするか更新用エリアとするかの切り換えを行うフリップ動作を指示するコマンドであり、必須のオペランドとしてフリップモード値を、任意的なオペランドとしてレイヤ開始アドレスＬＹＳＡＭおよびレイヤ終了アドレスＬＹＥＡＭを伴う。
【００３５】
フリップモード値は、フリップ動作の種類を指定するオペランドであり、実行条件フラグＣＳＹと、アドレス書き換えフラグＬＹＡと、テーブル切り換え制御データＬＹＢＳＥＬとを含む。ここで、実行条件フラグＣＳＹは、フリップコマンドの実行条件を指定するフラグである。アニメーション実行エンジン１２０は、ＣＳＹ＝“０”であるフリップコマンドをフェッチした場合、そのフリップコマンドを即時実行する。ＣＳＹ＝“１”であるフリップコマンドは、少なくともＣＰＵ２０１から同期信号が受信されることを実行の条件する実行条件付きコマンドである。アニメーション実行エンジン１２０は、このＣＳＹ＝“１”であるフリップコマンドをフェッチした場合、同期信号としてのイネーブル信号ＥＮがＣＰＵ２０１から受信されるまで待機し、このイネーブル信号ＥＮを受信した次の垂直ブランク期間の開始タイミングにおいて、このフリップコマンドを実行する。
【００３６】
アドレス書き換えフラグＬＹＡは、スプライト属性テーブル１０２Ａおよび１０２Ｂの各々において、当該アニメーション実行プログラムに対応したプログラム制御エリアの開始点を示すレイヤ開始アドレスＬＹＳＡＭと終了点を示すレイヤ終了アドレスＬＹＥＡＭを書き換えるか否かを指示するフラグである。レイヤ開始アドレスＬＹＳＡＭおよびレイヤ終了アドレスＬＹＥＡＭの書き換えを行わない場合にはＬＹＡ＝“０”、書き換えを行う場合にはＬＹＡ＝“１”とされる。
【００３７】
テーブル切り換え制御データＬＹＢＳＥＬは、スプライト属性テーブル１０２Ａおよび１０２Ｂの各プログラム制御エリアを描画用エリアとするか更新用エリアとするかの切り換え態様を指示する２ビットのデータである。さらに詳述すると、ＬＹＢＳＥＬ＝１Ｘｂ（ｂはバイナリ、Ｘは不定）であるフリップコマンドは、スプライト属性テーブル１０２Ａおよび１０２Ｂの各プログラム制御エリアのうち更新用エリアとなっているものを描画用エリアに、描画用エリアとなっているものを更新用エリアに切り換えることを指示するものである。また、ＬＹＢＳＥＬ＝００ｂであるフリップコマンドは、スプライト属性テーブル１０２Ａのプログラム制御エリアを描画用エリアに、スプライト属性テーブル１０２Ｂのプログラム制御エリアを更新用エリアに切り換えることを指示するものである。また、ＬＹＢＳＥＬ＝０１ｂであるフリップコマンドは、スプライト属性テーブル１０２Ｂのプログラム制御エリアを描画用エリアに、スプライト属性テーブル１０２Ａのプログラム制御エリアを更新用エリアに切り換えることを指示するものである。
【００３８】
レイヤ開始アドレスＬＹＳＡＭおよびレイヤ終了アドレスＬＹＥＡＭは、ＬＹＡ＝“１”である場合にフリップコマンドに付加されるオペランドである。このＬＹＡ＝“１”であるフリップコマンドが実行されると、プログラム制御エリアの開始アドレスおよび終了アドレスがオペランドにより指定されたレイヤ開始アドレスＬＹＳＡＭおよびレイヤ終了アドレスＬＹＥＡＭに変更される。
【００３９】
本実施形態において、フリップコマンドの実行の効果は、フリップコマンドの実行タイミングの次の垂直ブランク終了タイミングにおいて発生する。すなわち、例えばＬＹＢＳＥＬ＝１Ｘｂであるフリップコマンドが実行された場合、各垂直走査期間の垂直ブランク期間の終了タイミングのうちそのフリップコマンドの実行タイミングの次に現れる終了タイミングにおいて、それまで更新用エリアとなっていたプログラム制御エリアが描画用エリアに、描画用エリアとなっていたプログラム制御エリアが更新用エリアに切り換えられる。
【００４０】
テーブルライトコマンドは、スプライト属性テーブル１０２Ａまたは１０２Ｂの各プログラム制御エリアのうち更新用エリアとなっているプログラム制御エリア内において、オペランドにより指定されたエリアに、オペランドにより指定されたデータを書き込むことを指示するコマンドである。このテーブルライトコマンドは、オペランドとして、更新用エリアであるプログラム制御エリアに対する書き込みバイト数と、更新用エリアであるプログラム制御エリアにおいてデータの書き込み先となるエリアの開始点である書き込み開始アドレス（スプライト属性テーブル内における相対アドレス）と、上記書き込みバイト数と同じバイト数の書き込みデータとを有している。
【００４１】
テーブルサイクルライトコマンドは、スプライト属性テーブル１０２Ａまたは１０２Ｂの各プログラム制御エリアのうち更新用エリアとなっているプログラム制御エリア内において、オペランドにより指定されたエリアに、オペランドにより指定されたデータを繰り返し書き込むことを指示するコマンドである。このテーブルサイクルライトコマンドは、オペランドとして、更新用エリアであるプログラム制御エリアに対して繰り返し書き込むデータのバイト数である繰り返しバイト数と、更新用エリアであるプログラム制御エリアにおいてデータの書き込み先となるエリアの開始点である書き込み開始アドレスと、同エリアの終点である書き込み終了アドレスと、上記繰り返しバイト数と同じバイト数の書き込みデータとを有している。
【００４２】
このテーブルサイクルライトコマンドは、スプライト属性テーブル１０２Ａおよび１０２Ｂの初期化に用いられるコマンドである。本実施形態において、スプライト属性テーブル１０２Ａおよび１０２Ｂは、１アドレス当たりのデータ幅が１２バイトである。従って、１２バイトの初期化データを書きこみデータとするテーブルサイクルライトコマンドを繰り返し実行することにより、スプライト属性テーブル１０２Ａおよび１０２Ｂの全エリアを初期化することが可能である。スプライト属性テーブル１０２Ａおよび１０２Ｂの初期化は、アニメーションの切り替え時等に行われる。
【００４３】
パレットライトコマンドは、カラーパレット１０４において、オペランドにより指定されたエリアに、オペランドにより指定されたデータを書き込むことを指示するコマンドである。このパレットライトコマンドは、オペランドとして、カラーパレット１０４に対する書き込みバイト数と、カラーパレット１０４においてデータの書き込み先となるエリアの開始点である書き込み開始アドレスと、上記書き込みバイト数と同じバイト数の書き込みデータとを有している。
【００４４】
レジスタライトコマンドは、レジスタ１０１において、オペランドにより指定されたエリアに、オペランドにより指定されたデータを書き込むことを指示するコマンドである。このレジスタライトコマンドは、オペランドとして、レジスタ１０１に対する書き込みバイト数と、レジスタ１０１においてデータの書き込み先となるエリアの開始点である書き込み開始アドレスと、上記書き込みバイト数と同じバイト数の書き込みデータとを有している。
【００４５】
以上がアニメーション実行プログラムを構成する各コマンドの構成である。アニメーション実行エンジン１２０は、これらの各コマンドを解釈して実行する機能を備えている。
【００４６】
本実施形態において、アニメーション実行エンジン１２０は、時分割制御により複数のアニメーション実行プログラムを同時に並列実行することが可能である。レジスタ１０１には、アニメーション実行エンジン１２０が同時に並列実行することが可能なアニメーション実行プログラムと同数の実行制御情報記憶エリアが設けられている。各実行制御情報記憶エリアには、実行対象であるアニメーション実行プログラムのパターンメモリ２０２内における格納開始アドレスと、３種類の実行制御フラグＰＬＡＹ、ＰＡＵＳＥ、ＳＴＯＰとが記憶される。
【００４７】
１個のアニメーション実行プログラムの実行制御の態様は次の通りである。まず、アニメーション実行エンジン１２０は、ＣＰＵ２０１によって、ある実行制御情報記憶エリアのフラグＰＬＡＹが“１”、フラグＰＡＵＳＥが“０”、フラグＳＴＯＰが“０”とされたとき、パターンメモリ２０２内において同実行制御情報記憶エリアに記憶された格納開始アドレスから始まるエリア内のアニメーション実行プログラムの実行を開始する。
【００４８】
また、アニメーション実行エンジン１２０は、同実行制御情報記憶エリアにおいて実行制御フラグの状態がＰＬＡＹ＝“１”、ＰＡＵＳＥ＝“０”、ＳＴＯＰ＝“０”の状態からＰＬＡＹ＝“０”、ＰＡＵＳＥ＝“１”、ＳＴＯＰ＝“０”の状態になったとき、アニメーション実行プログラムの実行を一時停止する。
【００４９】
また、アニメーション実行エンジン１２０は、同実行制御情報記憶エリアにおいて実行制御フラグの状態がＰＬＡＹ＝“０”、ＰＡＵＳＥ＝“１”、ＳＴＯＰ＝“０”の状態からＰＬＡＹ＝“１”、ＰＡＵＳＥ＝“０”、ＳＴＯＰ＝“０”の状態に戻ったとき、一時停止したアドレスからアニメーション実行プログラムの実行を再開する。
【００５０】
また、アニメーション実行エンジン１２０は、同実行制御情報記憶エリアにおいて実行制御フラグの状態がＰＬＡＹ＝“０”、ＰＡＵＳＥ＝“０”、ＳＴＯＰ＝“１”とされたとき、パターンメモリ２０２内において同実行制御情報記憶エリアに記憶された格納開始アドレスから始まるエリア内のアニメーション実行プログラムの実行を終了する。
【００５１】
以上、１個のアニメーション実行プログラムの実行制御の態様を説明したが、複数のアニメーション実行プログラムが並列実行される場合の実行制御の態様も同様である。
【００５２】
また、以上説明した情報の他、各アニメーション実行プログラムに対応した各実行制御情報記憶エリアには、スプライト属性テーブル１０２Ａおよび１０２Ｂにおける当該アニメーション実行プログラムに対応したプログラム制御エリアの範囲を示すレイヤ開始アドレスＬＹＳＡＭおよびレイヤ終了アドレスＬＹＥＡＭが記憶される。さらに各アニメーション実行プログラムに対応した各実行制御情報記憶エリアには、スプライト属性テーブル１０２Ａおよび１０２Ｂにおける当該アニメーション実行プログラムに対応した各プログラム制御エリアのうちいずれが描画用エリアで、いずれが更新用エリアであるかを示すテーブル状態フラグＬＹＢＳＥＬＭが記憶される。
【００５３】
あるアニメーション実行プログラムに対応したプログラム制御エリア内のテーブル状態フラグＬＹＢＳＥＬＭが“０”である場合、そのアニメーション実行プログラムに対応した各プログラム制御エリアのうちスプライト属性テーブル１０２Ａ内のプログラム制御エリアが描画用エリアであり、スプライト属性テーブル１０２Ｂ内のプログラム制御エリアが更新用エリアである。これに対し、状態フラグＬＹＢＳＥＬＭが“１”である場合、スプライト属性テーブル１０２Ｂ内のプログラム制御エリアが描画用エリアであり、スプライト属性テーブル１０２Ａ内のプログラム制御エリアが更新用エリアである。
【００５４】
各アニメーション実行プログラムに対応したプログラム制御エリア内のテーブル状態フラグＬＹＢＳＥＬＭは、アニメーション実行エンジン１２０が当該アニメーション実行プログラム内のフリップコマンドに従って書き換える。当該アニメーション実行プログラムに対応したプログラム制御エリアの範囲を示すレイヤ開始アドレスＬＹＳＡＭおよびレイヤ終了アドレスＬＹＥＡＭも同様であり、アニメーション実行エンジン１２０が当該アニメーション実行プログラム内のフリップコマンドに従って書き換える。
【００５５】
以上説明した各アニメーション実行プログラムに対応した各実行制御情報記憶エリアの他、レジスタ１０１には、ＣＰＵ２０１によるアニメーション表示の実行を制御するための制御情報を記憶する実行制御情報記憶エリアが設けられている。このＣＰＵ２０１によるアニメーション表示用の実行制御情報記憶エリアには、スプライト属性テーブル１０２Ａおよび１０２Ｂにおける各ＣＰＵ制御エリアのうちいずれが描画用エリアで、いずれが更新用エリアであるかを示すテーブル状態フラグＬＹＢＳＥＬＣが記憶される。このテーブル状態フラグＬＹＢＳＥＬＣが“０”である場合、スプライト属性テーブル１０２Ａ内のＣＰＵ制御エリアは描画用エリアであり、スプライト属性テーブル１０２Ｂ内のＣＰＵ制御エリアは更新用エリアである。これに対し、テーブル状態フラグＬＹＢＳＥＬＣが“１”である場合、スプライト属性テーブル１０２Ｂ内のＣＰＵ制御エリアが描画用エリアであり、スプライト属性テーブル１０２Ａ内のＣＰＵ制御エリアが更新用エリアである。テーブル状態フラグＬＹＢＳＥＬＣの内容は、ＣＰＵ２０１が更新用エリアであるＣＰＵ制御エリアに属性データを書き込んだ後に出力するイネーブル信号ＥＮおよび表示スキャン制御部１０６が出力する垂直同期信号ＶＳＹＮＣ＿Ｎに基づき、アニメーション実行エンジン１２０が書き換える。さらに詳述すると、アニメーション実行エンジン１２０は、イネーブル信号ＥＮが受信された後の垂直走査周期の開始点に対して所定の位相を持った基準タイミング、具体的にはその垂直走査周期の垂直ブランク期間の終了タイミングにおいてテーブル状態フラグＬＹＢＳＥＬＣを反転させる。なお、このようなテーブル状態フラグＬＹＢＳＥＬＣの切り換えは、アニメーション実行エンジン１２０以外の装置に行わせるようにしてもよい。
【００５６】
図３は、本実施形態の第１の動作例を示すタイムチャートである。この図において、Ｓはスタートコマンド、Ｔはテーブルライトコマンド、Ｆはフリップコマンド、Ｉはインターバルコマンドを示す。また、フリップコマンドＦは、全てＣＳＹ＝“０”、ＬＹＡ＝“０”、ＬＹＢＳＥＬ＝１Ｘｂのフリップコマンドである。この第１の動作例では、スプライト属性テーブル１０２Ａおよび１０２Ｂの各ＣＰＵ制御エリアの属性データの書き換えは行われない。従って、ＣＰＵ２０１によるイネーブル信号ＥＮの出力も行われず、テーブル状態フラグＬＹＢＳＥＬＣは“０”を維持している。この第１の動作例では、アニメーション実行エンジン１２０のみがスプライト属性テーブル１０２Ａおよび１０２Ｂの各プログラム制御エリアの属性データの書き換えを行い、ＬＣＤ２０３にアニメーション表示を行わせている。
【００５７】
第１の動作例において、フレーム１では、ＣＰＵ２０１がレジスタ１０１のあるアニメーション実行プログラムに対応した実行制御記憶エリアに実行制御フラグとしてＰＬＡＹ＝“１”、ＰＡＵＳＥ＝“０”、ＳＴＯＰ＝“０”を書き込んでいる。そして、フレーム１において、アニメーション実行エンジン１２０は、パターンメモリ２０２内の各アニメーション実行プログラムのうちその実行制御記憶エリア内の格納開始アドレスにより特定されるアニメーション実行プログラムの実行を開始している。
【００５８】
まず、アニメーション実行エンジン１２０は、アニメーション実行プログラムの先頭のスタートコマンドＳを実行する。次にアニメーション実行エンジン１２０は、２番目のコマンドであるテーブルライトコマンドＴを実行する。この例では、この時点において、当該アニメーション実行プログラムに対応した実行制御記憶エリア内のテーブル状態フラグＬＹＢＳＥＬＭが“０”であり、スプライト属性テーブル１０２Ａのプログラム制御エリアが描画用エリア、スプライト属性テーブル１０２Ｂのプログラム制御エリアが更新用エリアとなっている。このため、アニメーション実行エンジン１２０は、スプライト属性テーブル１０２Ｂのプログラム制御エリア内において、テーブルライトコマンドＴのオペランド（書き込み開始アドレス）により指定されたエリアに、オペランドにより指定されたデータ（書き込みデータ）を転送する。次にアニメーション実行エンジン１２０は、３番目のコマンドであるフリップコマンドＦをフェッチする。このフリップコマンドＦは、ＣＳＹ＝“０”であるフリップコマンドであるため、アニメーション実行エンジン１２０は、このフリップコマンドＦを即時実行する。ただし、フリップコマンドＦの実行の効果は、この時点では発生せず、次の垂直ブランク期間の終了タイミングにおいて発生することとなる。
【００５９】
次にアニメーション実行エンジン１２０は、４番目のコマンドであるインターバルコマンドＩを実行する。この例において、インターバルコマンドのオペランドが示す垂直ブランク待ち回数は「１」となっている。このため、アニメーション実行エンジン１２０は、フレーム２において垂直ブランク期間が終了するまで５番目のコマンドの実行を待つ。
【００６０】
フレーム２の垂直ブランク期間が終了すると、上述したフリップコマンドＦの実行の効果が発生する。すなわち、当該アニメーション実行プログラムに対応した実行制御記憶エリア内のテーブル状態フラグＬＹＢＳＥＬＭが“０”から“１”に反転し、スプライト属性テーブル１０２Ａのプログラム制御エリアが更新用エリア、スプライト属性テーブル１０２Ｂのプログラム制御エリアが描画用エリアとなる。この結果、フレーム２における垂直ブランク期間の後の表示期間では、フレーム１においてテーブルライトコマンドＴによりスプライト属性テーブル１０２Ｂのプログラム制御エリア（フレーム１では更新用エリア）に書き込まれた属性データが描画処理に使用される。また、フレーム２の垂直ブランク期間が終了すると、４番目のインターバルコマンドＩのオペランドにより指定された垂直ブランク待ち回数に関する条件が満たされるため、アニメーション実行エンジン１２０は、５番目のコマンドであるテーブルライトコマンドＴを実行する。この場合、アニメーション実行エンジン１２０は、スプライト属性テーブル１０２Ａのプログラム制御エリアにおいて、テーブルライトコマンドＴのオペランド（書き込み開始アドレス）により指定されたエリアに、オペランドにより指定されたデータ（書き込みデータ）を転送する。次にアニメーション実行エンジン１２０は、６番目のコマンドであるフリップコマンドＦをフェッチして直ちに実行する。この場合も、フリップコマンドＦの実行の効果は、この時点では発生せず、次のフレーム３の垂直ブランク期間の終了タイミングにおいて発生することとなる。
【００６１】
次にアニメーション実行エンジン１２０は、７番目のコマンドであるインターバルコマンドＩを実行する。この例において、インターバルコマンドＩのオペランドが示す垂直ブランク待ち回数は「１」となっている。このため、アニメーション実行エンジン１２０は、フレーム３において垂直ブランク期間が終了するまで８番目のコマンドの実行を待つ。
【００６２】
以下、同様であり、図示の例では、フレーム３では、８〜１０番目のコマンドであるテーブルライトコマンドＴ、フリップコマンドＦおよびインターバルコマンドＩが順次実行された後、インターバルコマンドＩの作用によりフレーム４の垂直ブランク期間の終了までの待ち時間が発生し、フレーム４では、１１〜１３番目のコマンドであるテーブルライトコマンドＴ、フリップコマンドＦおよびインターバルコマンドＩが順次実行される。
【００６３】
このように、図３に示す例では、アニメーション実行プログラムを構成する各コマンドに従って、１フレーム毎にスプライト属性テーブル１０２Ａおよび１０２Ｂの各プログラム制御エリアのうち更新用エリアへの属性データの転送が行われ、スプライトの表示位置等の表示属性の更新が行われるとともに、テーブル状態フラグＬＹＢＳＥＬＭの反転、すなわち、更新用エリアの描画用エリアへの切り換え、描画用エリアの更新用エリアへの切り換えが行われる。一方、スプライトレンダリングプロセッサ１１０は、各フレームにおいて、スプライト属性テーブル１０２Ａおよび１０２Ｂの各プログラム制御エリアのうち描画用エリアとなっているエリア内の属性データに従ってスプライトの表示メモリ１０５への描画を行う。従って、本実施形態によれば、ＣＰＵ２０１の負担を招くことなく、ＬＣＤ２０３にアニメーション表示を行わせることができる。
【００６４】
また、本実施形態によれば、アニメーション実行プログラムにおいてインターバルコマンドを用いることができるので、図３に示すように、インターバルコマンドＩとテーブルライトコマンドＴを組み合わせて使用することによりテーブルライトコマンドＴの実行タイミング（より具体的には前後したテーブルライトコマンドＴの実行間隔）を調整し、かつ、垂直走査周期に同期させることができる。従って、アニメーション実行プログラムのプログラミングにおいて、アニメーションにおけるスプライトの動きのタイミング制御を容易に行うことができる。
【００６５】
なお、図３に示す例では、各インターバルコマンドＩのオペランドである垂直ブランク待ち回数を「１」としたため、１フレーム毎にテーブルライトコマンドＴが実行され、スプライト属性テーブル１０２Ａおよび１０２Ｂの各プログラム制御エリアのうち更新用エリアへの属性データの転送が行われた。しかし、各インターバルコマンドＩのオペランドである垂直ブランク待ち回数を例えば「２」とすれば、２フレームに１回の割合でテーブルライトコマンドＴが実行され、更新用エリアであるプログラム制御エリアへの属性データの転送が行われることとなる。このように本実施形態によれば、インターバルコマンドＩのオペランドである垂直ブランク待ち回数を調整することにより、スプライトの動きの速さを決定するフレームレートを調整することができる。
【００６６】
また、本実施形態によれば、アニメーション実行プログラムにおいて、図３に示すように、フリップコマンドＦ（ＣＳＹ＝“０”、ＬＹＡ＝“０”、ＬＹＢＳＥＬ＝１Ｘｂ）とテーブルライトコマンドＴを組み合わせて使用することができる。このようにすることにより、テーブルライトコマンドＴの実行により属性データの更新された更新用のスプライト属性テーブルを直ちに描画用に切り換え、更新された属性データを用いた描画をスプライトレンダリングプロセッサ１１０に行わせることができる。
【００６７】
また、図３に示す例ではアニメーション実行プログラムに用いられていないが、本実施形態では、アニメーション実行プログラムにおいてループコマンドを使用することができる。このループコマンドを使用した場合、アニメーション実行プログラムにおいてループ区間内のコマンドをアニメーション実行エンジン１２０に繰り返し実行させることができ、アニメーション実行プログラムの全体のバイト数を大きくすることなく、例えばスプライトの周期的な動きを伴うようなアニメーションを表示させることができる。
【００６８】
また、図３に示す例ではアニメーション実行プログラムに用いられていないが、本実施形態では、アニメーション実行プログラムにおいてパレットライトコマンドを使用することができる。このパレットライトコマンドをアニメーション実行プログラムに使用した場合、ＣＰＵ２０１の負担を招くことなく、例えばアニメーションの途中の任意のタイミングにおいてスプライトの表示色を変更するといった演出が可能になる。
【００６９】
図４は、本実施形態の第２の動作例を示すタイムチャートである。この第２の動作例において、フリップコマンドＦは、全てＣＳＹ＝“１”、ＬＹＡ＝“０”、ＬＹＢＳＥＬ＝１Ｘｂの実行条件付きフリップコマンドである。この第２の動作例では、ＣＰＵ２０１によりスプライト属性テーブル１０２Ａおよび１０２Ｂの各ＣＰＵ制御エリアの属性データの書き換えが行われている。そして、ＣＰＵ２０１は、スプライト属性テーブル１０２Ａおよび１０２Ｂの各ＣＰＵ制御エリアのうち更新用のエリアへの属性データの転送を終える毎にイネーブル信号ＥＮを出力している。このイネーブル信号ＥＮの出力の効果は、イネーブル信号ＥＮが出力された後の垂直走査周期の開始点に対して所定の位相を持った基準タイミング、具体的にはイネーブル信号ＥＮの出力後の最初の垂直ブランク終了タイミングに発生する。すなわち、イネーブル信号ＥＮが出力された場合、各フレームの各垂直ブランク期間の各終了タイミングのうちそのイネーブル信号ＥＮが出力された後の最初の終了タイミングにおいて、テーブル状態フラグＬＹＢＳＥＬＣが反転する。また、第２の動作例では、このようなＣＰＵ２０１によるＣＰＵ制御エリア内の属性データの書き換えと並行し、アニメーション実行エンジン１２０がスプライト属性テーブル１０２Ａおよび１０２Ｂの各プログラム制御エリアの属性データの書き換えを行う。
【００７０】
上述した第１の動作例と同様、ＣＰＵ２０１は、フレーム１においてレジスタ１０１のあるアニメーション実行プログラムに対応した実行制御記憶エリアに実行制御フラグとしてＰＬＡＹ＝“１”、ＰＡＵＳＥ＝“０”、ＳＴＯＰ＝“０”を書き込み、そのアニメーション実行プログラムを起動している。
【００７１】
１番目のスタートコマンドＳ、２番目のテーブルライトコマンドＴの実行に関しては、上記第１の動作例と同様である。アニメーション実行エンジン１２０は、フレーム１において１番目のスタートコマンドＳの実行後、２番目のテーブルライトコマンドＴを実行し、その時点において更新用エリアであるスプライト属性テーブル１０２Ｂのプログラム制御エリアにアニメーションの最初の一画面に対応した属性データを書き終える。その後、アニメーション実行エンジン１２０は、３番目のコマンドであるフリップコマンドＦをフェッチする。このフリップコマンドＦは、ＣＳＹ＝“１”を含む実行条件付きフリップコマンドである。このため、アニメーション実行エンジン１２０は、このフリップコマンドＦを直ちには実行せず、ＣＰＵ２０１がイネーブル信号ＥＮを出力するのを待つ。
【００７２】
一方、フレーム１においてアニメーション実行プログラムの実行開始を指示したＣＰＵ２０１は、その後、ＣＰＵ制御エリアに対し、アニメーションの最初の一画面に対応した属性データを書き込む。この例では、当初、テーブル状態フラグＬＹＢＳＥＬＣは“０”となっているため、ＣＰＵ２０１から出力される最初の一画面に対応した属性データは、スプライト属性テーブル１０２ＢのＣＰＵ制御エリアに書き込まれる。そして、ＣＰＵ２０１は、スプライト属性テーブル１０２ＢのＣＰＵ制御エリアへの最初の一画面に対応した属性データの書き込みを終えると、フレーム２において、イネーブル信号ＥＮを出力する。
【００７３】
このように、フレーム２においてイネーブル信号ＥＮが出力されると、アニメーション実行エンジン１２０は、待機させていたフリップコマンドＦをフレーム３の垂直ブランク期間の開始タイミングにおいて実行する。このフリップコマンドＦの実行の効果は、同垂直ブランク期間の終了タイミングにおいて発生することとなる。フリップコマンドＦの実行を終えたアニメーション実行エンジン１２０は、同垂直ブランク期間内に４番目のコマンドであるインターバルコマンドＩを実行する。この例において、インターバルコマンドのオペランドが示す垂直ブランク待ち回数は「１」となっている。このため、アニメーション実行エンジン１２０は、その時点において継続中のフレーム３の垂直ブランク期間が終了するまで５番目のコマンドの実行を待つ。
【００７４】
フレーム３の垂直ブランク期間が終了すると、フレーム２において行われたイネーブル信号ＥＮの出力の効果が発生する。すなわち、テーブル状態フラグＬＹＢＳＥＬＣが“０”から“１”に反転する。これによりスプライト属性テーブル１０２ＡのＣＰＵ制御エリアが更新用エリア、スプライト属性テーブル１０２ＢのＣＰＵ制御エリアが描画用エリアとなる。この結果、フレーム３の垂直ブランク期間の後の表示期間では、ＣＰＵ２０１がスプライト属性テーブル１０２ＢのＣＰＵ制御エリア（フレーム１では更新用エリア、フレーム３の表示期間では描画用エリア）に書き込んだ最初の一画面に対応した属性データが描画処理に用いられる。
【００７５】
また、フレーム３の垂直ブランク期間が終了すると、上述したフリップコマンドＦの実行の効果が発生する。すなわち、実行中のアニメーション実行プログラムに対応した実行制御記憶エリア内のテーブル状態フラグＬＹＢＳＥＬＭが“０”から“１”に反転する。これにより、スプライト属性テーブル１０２Ａのプログラム制御エリアが更新用エリア、スプライト属性テーブル１０２Ｂのプログラム制御エリアが描画用となる。この結果、フレーム３の垂直ブランク期間の後の表示期間では、フレーム１においてテーブルライトコマンドＴに従ってスプライト属性テーブル１０２Ｂのプログラム制御エリア（フレーム１では更新用エリア、フレーム３の表示期間では描画用エリア）に書き込まれた最初の一画面に対応した属性データが描画処理に用いられる。
【００７６】
このように、本実施形態によれば、ＣＰＵ２０１によるイネーブル信号ＥＮの出力タイミングの次の垂直ブランク終了タイミングにおいて更新用のＣＰＵ制御エリアと描画用のＣＰＵ制御エリアとの切り換えを行わせ、かつ、その切り換えと同時に実行条件付きフリップコマンドによる更新用のプログラム制御エリアと描画用のプログラム制御エリアの切り換えを行わせることができる。従って、本実施形態によれば、アニメーション実行エンジン１２０がアニメーション実行プログラムに従ってプログラム制御エリアに最初の一画面に対応した属性データを書き込むタイミングと、ＣＰＵ２０１がＣＰＵ制御エリアに最初の一画面に対応した属性データを書き込みタイミングとがずれたとしても、アニメーション実行プログラムが書き込んだ最初の一画面に対応した属性データとＣＰＵ２０１が書き込んだ最初の一画面に対応した属性データが同一フレームにおいて描画処理に使用され、ＣＰＵ２０１によるアニメーション表示とアニメーション実行プログラムによるアニメーション表示とが同時に開始される。
【００７７】
フレーム３の垂直ブランク期間が終了すると、４番目のインターバルコマンドＩのオペランドにより指定された垂直ブランク待ち回数に関する条件が満たされるため、アニメーション実行エンジン１２０は、５番目のコマンドであるテーブルライトコマンドＴを実行する。この時点では、テーブル状態フラグＬＹＢＳＥＬＭが“１”であり、スプライト属性テーブル１０２Ａのプログラム制御エリアが更新用エリア、スプライト属性テーブル１０２Ｂのプログラム制御エリアが描画用となっている。そこで、アニメーション実行エンジン１２０は、スプライト属性テーブル１０２Ａのプログラム制御エリア内のテーブルライトコマンドＴのオペランド（書き込み開始アドレス）により指定されたエリアに、オペランドにより指定されたデータ（書き込みデータ）を転送する。
【００７８】
次にアニメーション実行エンジン１２０は、６番目のコマンドであるフリップコマンドＦをフェッチする。このフリップコマンドＦは、ＣＳＹ＝“１”を含む実行条件付きフリップコマンドである。このため、アニメーション実行エンジン１２０は、このフリップコマンドＦを直ちには実行せず、ＣＰＵ２０１がイネーブル信号ＥＮを出力するのを待つ。
【００７９】
一方、ＣＰＵ２０１は、更新用エリアであるスプライト属性テーブル１０２ＡのＣＰＵ制御エリアに対し、アニメーションの２番目の画面に対応した属性データを書き込む。そして、この属性データの書き込みを終えると、ＣＰＵ２０１は、フレーム４においてイネーブル信号ＥＮを出力する。
【００８０】
このように、フレーム４においてイネーブル信号ＥＮが出力されると、アニメーション実行エンジン１２０は、待機させていたフリップコマンドＦをフレーム５の垂直ブランク期間の開始タイミングにおいて実行する。このフリップコマンドＦの実行の効果は、同垂直ブランク期間の終了タイミングにおいて発生することとなる。フリップコマンドＦの実行を終えたアニメーション実行エンジン１２０は、同垂直ブランク期間内に７番目のコマンドであるインターバルコマンドＩを実行する。この例において、インターバルコマンドのオペランドが示す垂直ブランク待ち回数は「１」となっている。このため、アニメーション実行エンジン１２０は、その時点において継続中のフレーム５の垂直ブランク期間が終了するまで８番目のコマンドの実行を待つ。
【００８１】
フレーム５の垂直ブランク期間が終了すると、フレーム４において行われたイネーブル信号ＥＮの出力の効果が発生する。すなわち、テーブル状態フラグＬＹＢＳＥＬＣが“１”から“０”に反転する。これによりスプライト属性テーブル１０２ＢのＣＰＵ制御エリアが更新用エリア、スプライト属性テーブル１０２ＡのＣＰＵ制御エリアが描画用エリアとなる。この結果、フレーム５の垂直ブランク期間の後の表示期間では、ＣＰＵ２０１によってスプライト属性テーブル１０２ＡのＣＰＵ制御エリア（フレーム４では更新用エリア、フレーム５の表示期間では描画用エリア）に書き込まれた２番目の画面に対応した属性データが描画処理に用いられる。
【００８２】
また、フレーム５の垂直ブランク期間が終了すると、上述したフリップコマンドＦの実行の効果が発生する。すなわち、実行中のアニメーション実行プログラムに対応した実行制御記憶エリア内のテーブル状態フラグＬＹＢＳＥＬＭが“１”から“０”に反転する。これにより、スプライト属性テーブル１０２Ｂのプログラム制御エリアが更新用エリア、スプライト属性テーブル１０２Ａのプログラム制御エリアが描画用エリアとなる。この結果、フレーム５の垂直ブランク期間の後の表示期間では、フレーム３においてテーブルライトコマンドＴに従ってスプライト属性テーブル１０２Ａのプログラム制御エリア（フレーム３では更新用エリア、フレーム５の表示期間では描画用エリア）に書き込まれた２番目の画面に対応した属性データが描画処理に用いられる。
【００８３】
以下同様であり、本実施形態では、ＣＰＵ２０１が３番目、４番目、…の各画面に対応した属性データをＣＰＵ制御エリアに書き込んでイネーブル信号ＥＮを出力する毎に、描画用のＣＰＵ制御エリアと更新用のＣＰＵ制御エリアの切り換えが行われ、この切り換えと同期し、描画用のプログラム制御エリアと更新用のプログラム制御エリアとの切り換えが行われる。従って、ＣＰＵ２０１により出力される３番目、４番目、…の各画面に対応した属性データが描画処理に使用されるタイミングに同期して、アニメーション実行プログラムによりプログラム制御エリアに書き込まれる３番目、４番目、…の各画面に対応した属性データが描画処理に使用される。従って、本実施形態によれば、アニメーションの表示開始以後も、ＣＰＵ２０１によるアニメーション表示とアニメーション実行プログラムによるアニメーション表示との同期が維持される。
【００８４】
以上説明した第２の動作例において、アニメーション表示のフレームレートは、ＣＰＵ２０１がイネーブル信号ＥＮの出力を行う時間密度により決定される。図４に示す例では、ＣＰＵ２０１が２フレームに１回の割合でイネーブル信号ＥＮを出力しているため、アニメーションの画面も２フレームに１回の割合で切り換わる。しかし、これよりもアニメーションのフレームレートを高くする必要がある場合には、イネーブル信号ＥＮを出力する時間密度を高くすればよく、アニメーションのフレームレートを低くする必要がある場合には、イネーブル信号ＥＮを出力する時間密度を低くすればよい。
【００８５】
また、図４に示す例では、１種類のアニメーション実行プログラムしか実行されていないが、本実施形態では、ＣＰＵ２０１によるＣＰＵ制御データの属性データの更新と並行し、複数種類のアニメーション実行プログラムを時分割制御によりアニメーション実行エンジン１０２に並列実行させることができる。その際、各アニメーション実行プログラムに対応したプログラム制御エリアに関して、スプライト属性テーブル１０２Ａおよび１０２Ｂのうちいずれのプログラム制御エリアを描画用エリアとし、いずれのプログラム制御エリアを更新用エリアとするかの切り換え制御は、各アニメーション実行プログラム毎に独立して行われる。
【００８６】
従って、例えばフリップコマンドとして実行条件付きフリップコマンド（ＣＳＹ＝“１”）を使用した第１のアニメーション実行プログラムと、実行条件を伴わないフリップコマンド（ＣＳＹ＝“０”）を使用した第２のアニメーション実行プログラムをアニメーション実行エンジン１２０に並列実行させることもできる。その場合、第１のアニメーション実行プログラムにおける実行条件付きフリップコマンドは、ＣＰＵ２０１からのイネーブル信号ＥＮの出力を待って実行され、第２のアニメーション実行プログラムにおける実行条件を伴わないフリップコマンドは、ＣＰＵ２０１によるイネーブル信号ＥＮの出力を待たずに即時実行される。従って、ＣＰＵ２０１によるアニメーション表示に同期した第１のアニメーション実行プログラムによるアニメーション表示と、ＣＰＵ２０１によるアニメーション表示に同期しない第２のアニメーション実行プログラムによるアニメーション表示とを同時進行させることも可能である。
【００８７】
＜他の実施形態＞
以上、この発明の実施形態を説明したが、この発明には、他にも各種の実施形態が考えられる。例えば次の通りである。
【００８８】
（１）上記実施形態では、２個のスプライト属性テーブル１０２Ａおよび１０２Ｂを設け、一方を更新用として属性データの更新を行いつつ、他方を描画用として描画処理に用いた。しかし、例えば描画を垂直走査周期内の特定の期間のみ実行する、といった制約を設けるのであれば、それ以外の期間を利用して、属性データの更新を行うようにすればよい。従って、このような態様においては、スプライト属性テーブルを１個にしてもよい。
【００８９】
（２）上記実施形態では、アニメーション実行プログラムの構成として、テーブルライトコマンドが転送対象のデータをオペランドとして含む構成を採用したが、各テーブルライトコマンドの転送対象のデータをアニメーション実行プログラム内の特定の領域にまとめて配置する構成を採用してもよい。この態様によれば、アニメーション実行プログラムが同一内容を属性データの転送を指示するテーブルライトコマンドを複数含む場合に、それらのテーブルライトコマンド間で転送対象の属性データを共用し、アニメーション実行プログラム全体のデータ量を減らすことができる。
【００９０】
（３）上記実施形態では、アニメーション実行エンジン１２０およびＣＰＵ２０１の両方がスプライト属性テーブル１０２Ａおよび１０２Ｂに属性データを書き込み、ＬＣＤ２０３にアニメーション表示を行わせるようにした。しかし、アニメーション実行エンジン１２０のみがスプライト属性テーブル１０２Ａおよび１０２Ｂに属性データを書き込み、ＬＣＤ２０３にアニメーション表示を行わせる態様も考えられる。この態様では、スプライト属性テーブル１０２Ａおよび１０２ＢをＣＰＵ制御エリアとプログラム制御エリアに区分する必要はない。
【符号の説明】
【００９１】
１００……画像表示装置、１０１……レジスタ、１０２Ａ，１０２Ｂ……スプライト属性テーブル、１０３……パターンデータデコーダ、１０４……カラーパレット、１０５……表示メモリ、１０６……表示スキャン制御部、１０７……読み出し制御部、１１０……スプライトレンダリングプロセッサ、１２０……アニメーション実行エンジン、２０１……ＣＰＵ、２０２……パターンメモリ、２０３……ＬＣＤ。
【図１】
0005407590.tif 000002
【図２】
0005407590.tif 000003
【図３】
0005407590.tif 000004
【図４】
0005407590.tif 000005
【図５】
0005407590.tif 000006
【図６】
0005407590.tif 000007