(57)【要約】【課題】ラインバッファ方式の画像処理装置において描画対象のラインに複数のスプライトが含まれている場合であっても、描画性能が極端に低下しないようにする。【解決手段】スプライトの圧縮データを格納したＲＯＭを画像処理装置に接続するＲＯＭインタフェースに複数のコードバッファを設け、読み出し対象の圧縮データ毎に何れかのコードバッファを割り当てる。そして、割り当てたコードバッファに空きがある限り圧縮データを所定データ量ずつ読み出して当該コードバッファに保持するとともに、当該圧縮データの復号が完了した時点でその割り当てを解除する。【選択図】図１
2013109190.tif 000002
【特許請求の範囲】
【請求項１】
各々スプライトの画像データに圧縮符号化を施して得られた複数の圧縮データを格納したＲＯＭから、読み出しを指示された圧縮データを読み出して出力するＲＯＭインタフェースと、
表示器における１ライン分の画像データを記憶するラインバッファと、
前記ＲＯＭインタフェースを介して読み出される圧縮データを復号する復号化部と、
各水平走査期間において表示対象とする１ライン分の画像データを生成するのに必要な圧縮データの読み出しを前記ＲＯＭインタフェースに指示し、当該指示に応じて前記ＲＯＭインタフェースから出力される圧縮データを前記復号化部によって復号し、１ライン分の画像データを生成して前記ラインバッファに書き込む画像データ生成部と、を備え、
前記ＲＯＭインタフェースは、
複数のバッファ領域を有するコードバッファと、
圧縮データの読み出しを指示される毎に、前記複数のバッファ領域のうちの未割り当てのものを選択し当該圧縮データの読み出しに割り当て、当該バッファ領域に空がある間、当該圧縮データを前記ＲＯＭから読み出して書き込む処理を継続するコードバッファ管理手段と、
を具備することを特徴とする画像処理装置。
【請求項２】
前記コードバッファ管理手段は、圧縮データの読み出しを指示されるのに応じて当該圧縮データの読み出しに割り当てたバッファ領域について、当該圧縮データの復号が完了したことを契機としてその割り当てを解除することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記コードバッファ管理手段は、読み出しを指示された圧縮データを所定のデータ量ずつ前記ＲＯＭから読み出して当該圧縮データの読み出しに割り当てたバッファ領域に書き込むとともに、当該圧縮データのデータサイズに応じて前記データ量を調整することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記コードバッファ管理手段は、読み出しを指示された圧縮データを所定のデータ量ずつ前記ＲＯＭから読み出して当該圧縮データの読み出しに割り当てたバッファ領域に書き込むとともに、前記ＲＯＭに格納されている圧縮データのデータサイズの分布に応じて前記データ量を調整することを特徴とする請求項１または２に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、１ライン分の記憶容量を有するラインバッファを利用して画像データの描画および表示器への表示を行う画像処理装置に関する。
【背景技術】
【０００２】
周知の通り、ゲーム機等のアミューズメント機器では、描画アプリケーションに従って静止画や動画の画像データをバッファに書き込む描画処理とバッファ内の画像データを読み出して表示器に表示させる表示処理が同時並行的に進められる。このような描画処理および表示処理を行う画像処理装置としては、１フレーム分の画像データを記憶するフレームバッファを備えたフレームバッファ方式の画像処理装置と、１ライン分の画像データを記憶するラインバッファを備えたラインバッファ方式の画像処理装置がある。なお、ラインバッファ方式の画像処理装置に関する文献として例えば特許文献１がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２１５２５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
描画アプリケーションに従って表示器に表示される静止画や動画が各種のスプライトを配列して構成されている場合、これらスプライトの画像データは例えばＪＰＥＧ（Joint Photographic Experts Group）等の高圧縮符号化アルゴリズムにより圧縮符号化されてアミューズメント機器に実装されることが一般的である。具体的には、各種スプライトの画像データに圧縮符号化を施して得られる圧縮データを格納したＲＯＭを画像処理装置のＲＯＭインタフェースに接続し、スプライトの表示を行う都度、当該ＲＯＭから該当する圧縮データを読み出して復号する、といった具合である。したがって、各スプライトの画像データが圧縮符号化されてアミューズメント機器に実装される場合、そのアミューズメント機器における画像の表示性能は、ＲＯＭからの圧縮データの読み出しに要する時間と、読み出した圧縮データの復号に要する時間に依存する。近年では画像処理装置の高速化が進んでいる。このため、圧縮データの復号に要する時間に比較してＲＯＭからの圧縮データの読み出しに要する時間の占める割合が大きくなっており、画像の表示性能は、後者の時間によって決まることが多い。前述したラインバッファ方式の画像処理装置では、１ライン分の画像データの生成をする毎にＲＯＭからの圧縮データの読み出しが行われることになるため、描画対象のラインが複数のスプライトを横切っている場合に画像の表示性能が大きく低下する虞がある。
【０００５】
この発明は、以上説明した事情に鑑みてなされたものであり、ラインバッファ方式の画像処理装置において描画対象のラインが複数のスプライトを横切っている場合であっても、描画性能が大きく低下しないようにする技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、この発明は、各々スプライトの画像データに圧縮符号化を施して得られた複数の圧縮データを格納したＲＯＭから、読み出しを指示された圧縮データを読み出して出力するＲＯＭインタフェースと、表示器における１ライン分の画像データを記憶するラインバッファと、前記ＲＯＭインタフェースを介して読み出される圧縮データを復号する復号化部と、各水平走査期間において表示対象とする１ライン分の画像データを生成するのに必要な圧縮データの読み出しを前記ＲＯＭインタフェースに指示し、当該指示に応じて前記ＲＯＭインタフェースから出力される圧縮データを前記復号化部によって復号して１ライン分の画像データを生成し、前記ラインバッファに書き込む画像データ生成部と、を備え、前記ＲＯＭインタフェースは、複数のバッファ領域を有するコードバッファと、圧縮データの読み出しを指示される毎に、前記複数のバッファ領域のうちの未割り当てのものを選択し当該圧縮データの読み出しに割り当て、当該バッファ領域に空がある間、当該圧縮データを前記ＲＯＭから読み出して書き込む処理を継続するコードバッファ管理手段と、を具備することを特徴とする画像処理装置、を提供する。
【０００７】
画像処理装置の描画性能を向上させる方策としては、ＲＯＭから読み出した画像データを一時的に記憶するコードバッファをＲＯＭインタフェースに設け、読み出しを指示された圧縮データが当該コードバッファに記憶されている場合には、当該コードバッファから圧縮データを読み出すことでＲＯＭからの圧縮データの読み出し回数を削減し、表示性能を向上させることが考えられる。しかし、ラインバッファ方式の画像処理装置では、ＲＯＭインタフェースにコードバッファを設けたとしても、描画対象のラインが複数のスプライトを横切っている場合における画像の表示性能の低下をくい止めることは難しい。その理由は、以下の通りである。描画対象のラインが複数のスプライトを横切っている場合には、描画対象のスプライトが切り換る毎にコードバッファの格納内容が破棄され、読み出し先のアドレスを切り換える処理が行われる。このアドレス切り換え時のオーバーヘッドによって帯域がロスされ、描画性能の低下を招くからである。スプライト等の圧縮データを記憶するＲＯＭとしてＳＰＩ（Serial Port Interface）ＲＯＭを用いると、ＳＰＩＲＯＭではデータ読み出し等のためのコマンド設定に十数クロック要するため、上記オーバーヘッドに起因した帯域ロスは大きな問題となる。
【０００８】
これに対して、本発明の画像処理装置においては、コードバッファは複数のバッファ領域を有しており、コードバッファ管理手段は、圧縮データの読み出しを指示される毎にそれら複数のバッファ領域のうちの未割り当てのものを１つ選択して当該圧縮データの読み出しに割り当てる。したがって、描画対象のラインが複数のスプライトを横切っている場合であっても、未割り当てのバッファ領域がある間は、描画対象のスプライトの切り換えに起因してバッファ領域の格納内容が破棄されることはなく、読み出し先のアドレスを切り換える必要もない。つまり、本発明によれば、ラインバッファ方式の画像処理装置において描画対象のラインが複数のスプライトを横切っている場合であっても、読み出し先のアドレスの切り換えに起因したオーバーヘッドが生じることはなく、表示性能が大きく低下することはない。
【０００９】
ここで、各圧縮データの読み出しに割り当てた各バッファ領域をどのようなタイミングで解放する（すなわち、その割り当てを解除する）のかについては種々の態様が考えられる。例えば、未割り当てのバッファ領域がある間は割り当て済みのバッファ領域の解放を行わず、未割り当てのバッファ領域がない状態において新たな圧縮データの読み出しを指示されたことを契機として何れかのバッファ領域を解放し、当該新たな圧縮データの読み出しに割り当てる態様が考えられる。なお、割り当て済みのバッファ領域のうちの何れを解放するのかについては、復号化の完了（すなわち、圧縮符号化前の画像データ全体の復元が完了した）した圧縮データを格納しているバッファ領域の何れか１つを解放する態様や、直近の所定期間における使用頻度（バッファ領域からのデータの読み出し頻度）が最も低いバッファ領域を解放する態様、最も古い割り当てのバッファ領域を解放する態様が考えられる。また、圧縮データの復号が完了した時点でその圧縮データの読み出しに割り当てたバッファ領域を解放する態様も考えられる。圧縮データの復号が完了した以上、当該バッファ領域に格納されている圧縮データを用いて再度復号化を行う必要はないと考えられるからである。
【００１０】
また、ＲＯＭから圧縮データを読み出す際の読み出し態様としては、データ末尾の端数を除いて所定のデータ量ずつ読み出す態様や、コードバッファ管理手段にかかっている処理負荷或いは上記読み出しに利用可能な帯域幅に応じてデータ読み出し量を動的に調整（処理負荷が軽いほど或いは帯域幅が広いほどデータ読み出し量を多くするなど）しつつ読み出す態様が考えられる。例えば前者の態様の具体例としては、ＲＯＭから読み出す圧縮データのデータサイズに応じてデータ読み出し量を調整する態様（データサイズが大きいほど一回当りのデータ読み出し量を多くする態様）やＲＯＭに格納されている圧縮データのデータサイズの分布に応じて、データ読み出し量を調整する態様が考えられる。
【図面の簡単な説明】
【００１１】
【図１】この発明による画像処理装置の一実施形態である画像表示ＬＳＩ１００を含むアミューズメント機器の構成を示すブロック図である。
【図２】同実施形態において属性データ記憶部１０２に記憶されるスプライト属性データの内容を示す図である。
【図３】同実施形態におけるコードバッファ管理テーブル１０４Ｃの格納内容の一例を示す図である。
【図４】同実施形態におけるワークメモリ１０８と管理テーブル１０９との関係を示す図である。
【図５】同実施形態において実行される各表示対象についての画像データ生成処理の実行手順を説明する図である。
【図６】同実施形態における各表示対象についての画像データ生成処理の実行スケジュールを例示する図である。
【図７】同実施形態における複数の復号化処理の並列実行の態様を示す図である。
【図８】同実施形態において行われる１ライン分の描画処理を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照し、この発明の実施の形態を説明する。
（Ａ：構成）
図１は、この発明による画像処理装置の一実施形態である画像表示ＬＳＩ（Large  Scale  Integrated  circuit；大規模集積回路）１００を含むアミューズメント機器の構成を示すブロック図である。図１では、画像表示ＬＳＩ１００の機能の理解を容易にするため、同画像表示ＬＳＩ１００に接続されたホストＣＰＵ２０１と、ＬＣＤ（Liquid  Crystal  Display；液晶表示器）２０２と、ＲＯＭ２０３が同画像表示ＬＳＩ１００とともに図示されている。これらのうちホストＣＰＵ２０１は、アミューズメント機器全体を制御するプロセッサであり、画像表示ＬＳＩ１００に対しては、ＬＣＤ２０２にスプライトやアウトラインフォント等の画像を表示させるためのコマンドやデータを供給する。ＲＯＭ２０３には、各種のスプライト、アウトラインフォント等の表示対象についての圧縮形式または非圧縮形式の画像データやアルファブレンディングに用いる圧縮形式または非圧縮形式のアルファデータが記憶されている。
【００１３】
図１に示すように、画像表示ＬＳＩ１００は、ＣＰＵインタフェース１０１と、属性データ記憶部１０２と、コントローラ１０３と、ＲＯＭインタフェース１０４と、画像データ生成部１０５と、復号化部１０６と、ＭＭＵ（Memory  Management  Unit；メモリ管理装置）１０７と、ＳＲＡＭ（Static  Random  Access  Memory；スタティックランダムアクセスメモリ）等によるワークメモリ１０８と、管理テーブル１０９と、画像出力部１１０と、ラインバッファ描画部１１２とを有している。
【００１４】
ＣＰＵインタフェース１０１は、ホストＣＰＵ２０１から供給されるコマンドやデータを受け取って、画像表示ＬＳＩ１００内の関係する各部に供給するインタフェースである。属性データ記憶部１０２は、ホストＣＰＵ２０１からＣＰＵインタフェース１０１を介して供給される属性データを記憶する回路である。ここで、属性データは、スプライト、アウトラインフォント等の各表示対象の表示属性を示すデータであり、各垂直走査期間において、ＬＣＤ２０２に表示する表示対象毎にホストＣＰＵ２０１から供給され、ＣＰＵインタフェース１０１によって属性データ記憶部１０２に格納される。
【００１５】
図２はこの種の属性データの一例としてスプライトの表示属性を示すスプライト属性データの内容を示すものである。このスプライト属性データにおいて、Ｙ表示位置ＤＯＹおよびＸ表示位置ＤＯＸは、ＬＣＤ２０２の表示画面における当該スプライトの左上頂点の垂直方向表示位置および水平方向表示位置を各々指定するデータである。パターンネームＰＮは、ＲＯＭ２０３内の当該スプライトの画像データへのアクセスに用いるパターンネーム、具体的には当該画像データのＲＯＭ２０３内における格納開始アドレスである。ＹスプライトサイズＳＺＹおよびＸスプライトサイズＳＺＸは、当該スプライトのＹ方向のドット数およびＸ方向のドット数を示す。表示色モードＣＬＭおよびパレット選択データＰＬＴＩは、当該スプライトの各構成ドットの表示色の演算に用いられるデータである。アルファブレンディングモードＭＸＳＬおよびアルファ係数ＭＸは、当該スプライトの構成ドットとその背景の構成ドットとの間で行うアルファブレンディングの態様を指定するデータである。Ｙ拡大縮小率ＭＡＧＹは、当該スプライトのＹスプライトサイズＳＺＹに対するＬＣＤ２０２の表示画面における当該スプライトのＹ方向のドット数の比率、Ｘ拡大縮小率ＭＡＧＸは、当該スプライトのＸスプライトサイズＳＺＸに対するＬＣＤ２０２の表示画面における当該スプライトのＸ方向のドット数の比率である。このＹ拡大縮小率ＭＡＧＹおよびＸ拡大縮小率ＭＡＧＸと、上述したＹスプライトサイズＳＺＹおよびＸスプライトサイズＳＺＸと、Ｙ表示位置ＤＯＹおよびＸ表示位置ＤＯＸとに基づき、ＬＣＤ２０２の表示画面における当該スプライトの各構成ドットの垂直方向および水平方向の位置を算出することができる。
【００１６】
透明色指定データＴＰは、当該スプライトの表示時に当該スプライト内に透明な表示対象として扱うドットがあるか否かを指定するデータである。圧縮非圧縮指定データＣＯＭＰＥは、ＲＯＭ２０３に記憶された当該スプライトの画像データが圧縮形式の画像データであるか非圧縮形式の画像データであるかを示すデータである。圧縮モードＣＯＭＰＭは、当該スプライトの画像データが圧縮形式の画像データである場合における圧縮アルゴリズムを指定するデータである。
【００１７】
仮想アドレスＷＡＤＲＳは、当該スプライトの画像データをワークメモリ１０８に格納する際に、当該スプライトの画像データを識別するために発生される仮想アドレスのうち最初に発生される仮想アドレスである。ＬＯＣＫビットは、当該スプライトの画像データをロックするか否か、すなわち、当該スプライトの画像データを記憶しているワークメモリ１０８内の格納領域への上書きを禁止するか否かを示すビットである。ＮＯＤＥＣビットは、当該スプライトの画像データの復号化処理が不要か否かを示すビットである。ＵＬＯＣＫビットは、当該スプライトの画像データのロックを解除するか否かを示すビットである。
【００１８】
コントローラ１０３は、各垂直走査期間において、各表示対象の画像データのＬＣＤ２０２での表示に先行して、各表示対象の画像データの生成を画像データ生成部１０５に順次指令する回路である。具体的には、コントローラ１０３は、各垂直走査期間において、属性データ記憶部１０２に記憶された各表示対象の属性データに基づき、各表示対象の画像データを生成する処理の実行スケジュールを作成し、この実行スケジュールに従って、各表示対象についての画像データ生成指示を画像データ生成部１０５に供給する。なお、このコントローラ１０３によって行われる実行スケジュールの作成については、説明の重複を避けるため、本実施形態の動作説明において詳細を明らかにする。
【００１９】
画像出力部１１０は、各々１ライン分の画像データを記憶可能な容量を持ったラインバッファ１１１Ａおよび１１１Ｂを有している。これらのラインバッファ１１１Ａおよび１１１Ｂは、一方が書き込み用ラインバッファ、他方が読み出し用ラインバッファとされ、ＬＣＤ２０２の水平同期信号に同期して、その時点までに書き込み用ラインバッファであったものが読み出し用ラインバッファとされ、読み出し用ラインバッファであったものが書き込み用ラインバッファとされる。各水平走査期間では、読み出し用ラインバッファに記憶された１ライン分の画像データが読み出され、ＬＣＤ２０２に供給されて表示される一方、１水平走査期間後に表示される１ライン（以下、表示予定ラインという）分の画像データがラインバッファ描画部１１２によって書き込み用バッファに書き込まれる。なお、ラインバッファ描画部１１２については後述する。
【００２０】
ＲＯＭインタフェース１０４には、ＲＯＭ２０３が接続される。ＲＯＭインタフェース１０４は、画像データ生成部１０５から与えられる指示に応じてＲＯＭ２０３から圧縮形式または非圧縮形式の画像データを読み出し、画像データ生成部１０５に出力する。図１に示すように、ＲＯＭインタフェース１０４は、コントローラ１０４Ａ、コードバッファ１０４Ｂおよびコードバッファ管理テーブル１０４Ｃを含んでいる。コードバッファ１０４Ｂは、ＲＯＭ２０３から読み出される圧縮形式または非圧縮形式の画像データを一時的に記憶するバッファである。本実施形態では、後述する復号化部１０６が複数のスプライト等の圧縮データの復号化処理を時分割制御により並列実行する場合があるため、コードバッファ１０４Ｂには、スプライト等の圧縮データを一次記憶するための複数のバッファ領域（本実施形態では、１６個のバッファ領域）が設けられている。コードバッファ１０４Ｂに設けるバッファ領域の数については、水平走査方向に並べて配置可能なスプライト等の個数の上限に応じて定めれば良い。
【００２１】
コントローラ１０４Ａは、画像データ生成部１０５から圧縮形式または非圧縮形式の画像データの読み出しを指示される毎に、複数のバッファ領域のうちの未割り当てのもの（すなわち、他の画像データの読み出しに使用されていないもの）を１つ選択して当該画像データの読み出しに割り当て、当該バッファ領域に空がある間、当該画像データを所定データ量ずつＲＯＭ２０３から読み出して当該バッファ領域に書き込む処理を行う。コードバッファ管理テーブル１０４Ｃには、各バッファ領域の使用状況（画像データの読み出しに使用されているか否かなど）を示す情報が格納される。コントローラ１０４Ａはコードバッファ管理テーブル１０４Ｃの格納内容を参照して、未割り当てのバッファ領域の選択等を行う。このように、コントローラ１０４Ａとコードバッファ管理テーブル１０４Ｃは、画像データ生成部１０５により読み出しを指示された画像データに対するバッファ領域の割り当て、および当該バッファ領域への画像データの書き込み、を制御するコードバッファ管理手段の役割を果たす。
【００２２】
より詳細に説明すると、コードバッファ管理テーブル１０４Ｃには、コードバッファ１０４Ｂの各バッファ領域に対応付けて当該バッファ領域に読み込む画像データ（本実施形態では、スプライト）に関する情報および当該バッファの使用状況を示す情報が格納される。コントローラ１０４Ａは、コードバッファ管理テーブル１０４Ｃの格納内容の参照および更新を行うことで、読み出しを指示された画像データに対するバッファ領域の割り当て、各バッファ領域へのデータの書き込み或いはバッファ領域からのデータの読み出し、およびバッファ領域の解放を行う。図３は、コードバッファ管理テーブル１０４Ｃの格納内容の一例を示す図である。図３に示すように、コードバッファ管理テーブル１０４Ｃには、コードバッファ１０４Ｂの複数のバッファ領域の各々を示すコードバッファ番号ＣＰに対応付けて、使用状態ビットｖａｌｉｄ、スプライトネームＳＰＮ、ラスタブロックサイズＲＢＳ、仮想メモリアドレスＶＭＡ、仮想メモリ最終アドレスＶＭＥＡ、仮想メモリワークアドレスＶＭＷＡ、ＲＯＭアドレスＲＡ、コードバッファリードポインタＣＢＲＰ、およびコードバッファライトポインタＣＢＷＰが格納される。
【００２３】
コードバッファ番号ＣＰは、コードバッファ１０４Ｂ内の複数のバッファ領域の各々を一意に識別するための識別子であり、具体的には、コードバッファ１４０Ｂの記憶領域における各バッファ領域の先頭アドレスである。使用状態ビットｖａｌｉｄは、当該使用状態ビットｖａｌｉｄに対応するバッファ領域（当該使用状態ビットｖａｌｉｄに対応付けてコードバッファ管理テーブル１０４Ｃに格納されているコードバッファ番号ＣＰの示すバッファ領域：以下、同様）が画像データの読み出しに割り当てられているか否かを示す。この使用状態ビットｖａｌｉｄには、対応するバッファ領域が画像データの読み出しに割り当てられている場合には“１”がセットされ、逆に未割り当てであれば“０”がセットされる。スプライトネームＳＰＮには、対応するバッファ領域に読み出される画像データの表すスプライトのスプライト番号が格納され、ラスタブロックサイズＲＢＳには、同スプライトのラスタブロックサイズ（当該画像データが圧縮データであればその復号を行う際の処理単位）がセットされる。
【００２４】
仮想メモリアドレスＶＭＡには、対応するバッファ領域に読み出される画像データ（圧縮形式の画像データであれば、その圧縮データを復号して得られる画像データ）についての仮想メモリ空間におけるラスタブロックの先頭アドレスがセットされ、仮想メモリ終了アドレスＶＭＥＡには、同最終ラスタブロックの先頭アドレスがセットされる。仮想メモリワークアドレスＶＭＷＡには、当該バッファ領域に読み出された画像データの処理の際に画像データ生成部１０５（圧縮形式の画像データであれば、画像データ生成部１０５および復号化部１０６）が使用するワークメモリの先頭アドレスがセットされる。ＲＯＭアドレスＲＡには、当該バッファ領域に読み込むべき画像データについてのＲＯＭ２０３における格納アドレスがセットされる。コードバッファリードポインタＣＢＲＰは、当該バッファ領域におけるビット単位のリードポインタであり、コードバッファライトポインタＣＢＷＰは、対応するバッファ領域におけるビット単位のライトポインタである。ここで、リードポインタとは、バッファ領域から未処理のデータ（圧縮形式の画像データあれば未復号のデータ）の読み出し開始位置を示すポインタであり、ライトポインタとはバッファ領域に新たなデータを書き込む際の書き込み開始位置を示すポインタである。コードバッファリードポインタＣＢＲＰおよびコードバッファライトポインタＣＢＷＰの初期値は、対応するバッファ領域の先頭アドレスである。
【００２５】
コントローラ１０４Ａは、画像データ生成部１０５から圧縮形式または非圧縮形式の画像データの読み出しを指示されると、まず、各バッファ領域の使用状態ビットｖａｌｉｄを参照し、使用状態ビットｖａｌｉｄが“０”のバッファ領域のうちの１つ（例えば、コードバッファ番号ＣＰが最も若いもの）を選択する。そして、コントローラ１０４Ａは、選択したバッファ領域のコードバッファ番号ＣＰに対応付けてコードバッファ管理テーブル１０４Ｃに格納されているスプライトネームＳＰＮに当該読み出しを指示された画像データの表すスプライトのスプライト番号をセットする等、コードバッファ管理テーブル１０４Ｃの格納内容を更新し、さらに当該コードバッファ番号ＣＰに対応する使用状態ビットｖａｌｉｄを“１”に更新する。これにより、画像データ生成部１０５から読み出しを指示された画像データに対するバッファ領域の割り当てが実現される。
【００２６】
以降、コントローラ１０４Ａは、仮想メモリ終了アドレスＶＭＥＡを先頭アドレスとして格納するべきデータが画像データ生成部１０５によって生成（或いは復号化部１０６によって復号）されるまで、以下の（Ｓ１）、(Ｓ２)および（Ｓ３）の処理を繰り返し実行する。
（Ｓ１）当該バッファ領域に空きがある間（すなわち、コードバッファライトポインタＣＢＷＰが当該バッファ領域の末尾に達するまで）、上記画像データを所定データ量ずつＲＯＭ２０３から読み出して当該バッファ領域に書き込み、コードバッファライトポインタＣＢＷＰを更新する処理。
（Ｓ２）当該バッファ領域からデータを読み出して画像データ生成部１０５（或いは復号化部１０６）に与え、コードバッファリードポインタＣＢＲＰを更新する処理。
（Ｓ３）コードバッファライトポインタＣＢＷＰとコードバッファリードポインタＣＢＲＰの両者がバッファ領域の末尾に達したことを契機として両者を初期値にリセットする処理。
そして、コントローラ１０４Ａは、仮想メモリ終了アドレスＶＭＥＡを先頭アドレスとして格納するべきデータが画像データ生成部１０５によって生成（或いは復号化部１０６によって復号）されると、使用状態ビットｖａｌｉｄを“０”に戻して上記割り当てを解除する。
以上がＲＯＭインタフェース１０４の構成である。
【００２７】
画像データ生成部１０５は、復号化部１０６を利用することにより、コントローラ１０３からの画像データ生成指示により指示された表示対象の画像データを生成し、ＭＭＵ１０７を介してワークメモリ１０８に格納する画像データ生成処理を実行する回路である。
【００２８】
さらに詳述すると、画像データ生成処理では、画像データ生成部１０５は、コントローラ１０３から表示対象（例えばスプライトとする）についての画像データ生成指示を受け取ったとき、属性データ記憶部１０２内の当該スプライトのスプライト属性データを参照してパターンネームＰＮを取得し、当該パターンネームＰＮの示す画像データの読み出しをＲＯＭインタフェース１０４に指示する。前述したように、ＲＯＭインタフェース１０４のコントローラ１０４Ａは、画像データ生成部１０５により画像データの読み出しを指示されると、コードバッファ１０４Ｂの複数のバッファ領域のうちの未割り当てのものを１つ選択し、該当する画像データをＲＯＭ２０３から読み出して当該バッファ領域に書き込む。また、画像データ生成部１０５は、当該スプライトの画像データが圧縮形式の画像データであることをスプライト属性データの圧縮非圧縮指定データＣＯＭＰＥが示している場合には、スプライト属性データの圧縮モードＣＯＭＰＭを復号化部１０６に通知するとともに、ＲＯＭ２０３からコードバッファ１０４Ｂに読み出された画像データ（この場合は圧縮データ）を復号化部１０６に供給する処理をコントローラ１０４Ａに実行させ、復号化部１０６にその圧縮データの復号化処理を実行させる。
【００２９】
本実施形態では、復号化部１０６があるスプライトの圧縮データの復号化処理を開始した後、その復号化処理が終了する前に、別のスプライトの圧縮データの復号化処理の実行を画像データ生成部１０５から命じられる場合がある。このような要求に対応するため、復号化部１０６は、時分割制御により複数のスプライトについての復号化処理を並列実行可能な構成となっている。コードバッファ１０４Ｂには複数のバッファ領域が設けられており、これら複数のバッファ領域のうちの未割り当てのものを１つ選択してＲＯＭ２０３から画像データを読み出す処理がコントローラ１０４Ａによって実行される。そして、復号化部１０６は、コードバッファ１０４Ｂの各バッファ領域から各スプライトの圧縮データを順次読み出して、復号化処理を実行する。
【００３０】
画像データ生成処理では、このような復号化処理により得られる各スプライトの画像データを後述するワークメモリ１０８の１ページの記憶容量に対応したデータ量に区切り、区切った各画像データについて仮想アドレスを生成する。
【００３１】
この仮想アドレスの生成方法には各種の態様が考えられる。ある好ましい態様では、復号化処理により得られたスプライトを構成する各ドットについて仮想アドレスを発生する。具体的には、そのスプライトのパターン名に基づいて、例えばそのスプライトを構成する各ドットの仮想アドレスの上位アドレスを決定し、そのスプライトを構成する各ドットのスプライト内のＹアドレスおよびＸアドレスに基づいて、各ドットの仮想アドレスの中位アドレスおよび下位アドレスを決定する。スプライト内において各ドットのラスタスキャンを行った場合において、各ドットの仮想アドレスがラスタスキャン順に１ＬＳＢずつ大きくなるように、各ドットの仮想アドレスを定めるのである。そして、スプライトの画像データを複数ページに区切る場合には、各ページの最初のエリアに格納するドットの仮想アドレスを各ページに対応した仮想アドレスとするのである。
【００３２】
画像データ生成処理では、このようにして生成した画像データと仮想アドレスとをＭＭＵ１０７に供給し、画像データをワークメモリ１０８に格納させる。また、画像データ生成処理では、スプライトの画像データについて生成した仮想アドレスのうち最初のもの（例えばスプライトの左上頂点のドットの仮想アドレス）を当該スプライト属性データの一部である仮想アドレスＷＡＤＲＳとして属性データ記憶部１０２に格納する。
【００３３】
ＭＭＵ１０７、ワークメモリ１０８および管理テーブル１０９は、仮想メモリシステムを構成している。図４はワークメモリ１０８と管理テーブル１０９との関係を示す図である。図４に示すように、ワークメモリ１０８の実アドレス空間は、所定容量（例えば２５６バイト）のページに区切られている。管理テーブル１０９は、ワークメモリ１０８の各ページに対応付けて、当該ページに記憶されたデータの仮想アドレスと、当該ページ内のデータをロックするか否か、すなわち、当該ページへのデータの上書きを禁止する否かを示すＰＬＯＣＫビットと、当該ページに有効な画像データが記憶されているか否かを示すＶＡＬＩＤビットとを格納するテーブルである。ここで、各ページに対応したＰＬＯＣＫビットは当該ページ内のデータをロックするときには“１”、ロックしないときには“０”とされる。また、各ページに対応したＶＡＬＩＤビットは当該ページ内のデータが有効であるときには“１”、無効であるときには“０”とされる。
【００３４】
ＭＭＵ１０７は、画像データ生成部１０５からあるスプライトの画像データと仮想アドレスとを受け取ったとき、ワークメモリ１０８の各ページの中から管理テーブル１０９内のＶＡＬＩＤビットが“０”になっているページを探し、そのページを画像データの書き込み先とする。そして、ＭＭＵ１０７は、属性データ記憶部１０２内のそのスプライトに対応した属性データのＬＯＣＫビットを参照し、そのスプライトのＬＯＣＫビットが“０”であれば、そのスプライトの画像データの書き込み先であるページに対応したＰＬＯＣＫビットを“０”とし、そのスプライトのＬＯＣＫビットが“１”であれば、そのスプライトの画像データの書き込み先であるページに対応したＰＬＯＣＫビットを“１”とする。そして、ＭＭＵ１０７は、スプライトの画像データの書き込み先であるページへの書き込みを開始し、書き込みが完了したときＶＡＬＩＤビットを“１”とする。
【００３５】
管理テーブル１０９においてＶＡＬＩＤビットが“１”となっているページ内の画像データが後述する描画処理により読み出され、表示に使用された場合、ＭＭＵ１０７は、当該ＶＡＩＬＤビットの更新を行う。すなわち、ＭＭＵ１０７は、管理テーブル１０９において当該ページに対応したＰＬＯＣＫビットが“０”になっている場合、当該ページに対応したＶＡＬＩＤビットを“０”とし、当該ページに対応したＰＬＯＣＫビットが“１”になっている場合、当該ページに対応したＶＡＬＩＤビットを“１”のままにする。
【００３６】
ラインバッファ描画部１１２は、各水平走査期間において、次の水平走査期間においてＬＣＤ２０２に表示させる１ライン分の画像データを生成し、この１ライン分の画像データを画像出力部１１０の書き込み用ラインバッファに書き込む描画処理を実行する手段である。
【００３７】
この描画処理では、属性データ記憶部１０２内の各属性データを参照することにより、表示予定ラインが横切る各表示対象（例えばスプライトとする）を探索し、その探索結果である各スプライトの画像データのうち表示予定ライン上を占める１ライン分の各スプライトの画像データをＭＭＵ１０７を介してワークメモリ１０８から読み出す。
【００３８】
ここで、表示対象がスプライトを拡大または縮小したものである場合もある。そのような場合、そのスプライトのスプライト属性データのＹ拡大縮小率ＭＡＧＹおよびＸ拡大縮小率ＭＡＧＸに従って拡大縮小処理を施した場合の画像データ、すなわち、Ｙ方向サイズがＳＺＹ＊ＭＡＧＹ（＊は乗算）、Ｘ方向サイズがＳＺＸ＊ＭＡＧＸのスプライトの画像データを想定する。そして、この画像データにおいて表示予定ライン上を占める画像データを得るためのバイリニアフィルタ演算に用いる画像データ（スプライトにおいて拡大縮小後に表示予定ラインを挟むこととなる２本のライン上の画像データ）の仮想アドレスを演算し、その仮想アドレスに対応した画像データをＭＭＵ１０７を介してワークメモリ１０８から読み出し、当該表示ライン上を占める画像データを演算する。
【００３９】
そして、描画処理では、必要に応じて各スプライト間でアルファブレンディングを行いながら、ワークメモリ１０８から読み出したデータに基づいて生成した各スプライトの１ライン分の画像データを、各スプライトのスプライト属性データの属性データ記憶部１０２内での並び順に合わせて順次重ね合わせ、表示予定ライン上の画像データを生成する。このような作業を画像出力部１１０の書き込み用バッファを使用して行うのである。
【００４０】
（Ｂ：動作）
図５は本実施形態において実行される複数のスプライトについての画像データ生成処理の実行手順を説明する図である。また、図６は図５に示す各スプライトについての画像データ生成処理の実行スケジュールを例示する図である。図７は、本実施形態における複数の復号化処理の並列実行の態様を示す図である。以下、これらの図を参照し、本実施形態の動作を説明する。
【００４１】
ある垂直走査期間において、属性データ記憶部１０２に、図５左側に示すように、スプライトＳＰ０〜ＳＰ４のスプライト属性データが記憶されていたとする。この場合において、コントローラ１０３は、各スプライト属性データのＹ表示位置ＤＯＹおよびＸ表示位置ＤＯＸと、ＹスプライトサイズＳＺＹおよびＸスプライトサイズＳＺＸとに基づき、各スプライトＳＰ０〜ＳＰ４の画像データ（復号化処理を経ており、拡大縮小処理を経ていないもの）がそのままＬＣＤ２０２に表示された場合における表示画面内の占有領域を求める。図５右側はその結果を示すものである。
【００４２】
次にコントローラ１０３は、各スプライトを所定ライン数からなるラスタブロックに区切り、ラスタブロック単位で画像データ生成処理の実行スケジュールを生成する。さらに詳述すると、コントローラ１０３は、各ラスタブロックの表示画面内での位置を求める。図５右側に示す例では、スプライトＳＰ０はＬＣＤ２０２の表示画面の全領域を占める背景画像であり、ラスタブロックＳＰ０−０〜ＳＰ０−６に分割されている。また、スプライトＳＰ１はラスタブロックＳＰ１−０〜ＳＰ１−２に分割され、スプライトＳＰ２はラスタブロックＳＰ２−０〜ＳＰ２−１に分割され、スプライトＳＰ３はラスタブロックＳＰ３−０〜ＳＰ３−２に分割され、スプライトＳＰ４はラスタブロックＳＰ４−０〜ＳＰ４−２に分割されている。
【００４３】
次にコントローラ１０３は、表示画面の上から下に向かって、ラスタブロックを探索してゆく。この場合、表示画面を上から下に探索してゆくと、各ラスタブロックが、ＳＰ０−０→ＳＰ４−０→ＳＰ０−１→ＳＰ２−０→ＳＰ４−１→…→ＳＰ０−６→ＳＰ１−２という順に出現する。そこで、コントローラは、この表示画面を上から下へ探索していったときの各ラスタブロックの出現順に、各ラスタブロックについての画像データ生成処理の実行する旨の実行スケジュールを作成する。その結果を図６に示す。
【００４４】
図６において、ＳＥＱ＿ＮＯは、各ラスタブロックの画像データ生成処理の実行の順番である。図５によると、ラスタブロックＳＰ０−１の最上ラインとラスタブロックＳＰ２−０の最上ラインは、表示画面における垂直方向の位置が同じである。しかし、属性データ記憶部１０２において、ラスタブロックＳＰ０−１が属するスプライトＳＰ０のスプライト属性データは、ラスタブロックＳＰ２−０が属するスプライトＳＰ２のスプライト属性データよりも前のアドレスに記憶されている。このため、ラインバッファ描画部１１２は、ラスタブロックＳＰ０−１およびラスタブロックＳＰ２−０を横切る表示予定ライン上の画像データを生成する際、まず、ラスタブロックＳＰ０−１における表示予定ライン上の画像データをワークメモリ１０８から読み出して画像出力部１１０の書き込み用ラインバッファに書き込み、次にラスタブロックＳＰ２−０における表示予定ライン上の画像データをワークメモリ１０８から読み出して画像出力部１１０の書き込み用ラインバッファに書き込むことになる。このように、ラスタブロックＳＰ０−１とラスタブロックＳＰ２−０とでは、ラスタブロックＳＰ０−１の画像データの方が描画処理に先に使用されるので、図６に示す実行スケジュールでは、ラスタブロックＳＰ０−１はＳＥＱ＿ＮＯ＝３、ラスタブロックＳＰ２−０はＳＥＱ＿ＮＯ＝４としている。他の同時に出現する複数のラスタブロックについても同様な取扱いをしている。
【００４５】
そして、コントローラ１０３は、このようにして得られた実行スケジュールにおいて、ＳＥＱ＿ＮＯ＝１にスケジューリングされたラスタブロックＳＰ０−０の画像データ生成処理からＳＥＱ＿ＮＯ＝１８にスケジューリングされたラスタブロックＳＰ１−２の画像データ生成処理までの各画像データ生成処理の実行指示を画像データ生成部１０５に順次送るのである。その際、コントローラ１０３は、各ラスタブロックのＬＣＤ２０２での表示に間に合うように、各ラスタブロックについての画像データ生成処理の実行指示の出力タイミングを、各ラスタブロックの表示タイミングに対して所定の余裕時間だけ先行させる。
【００４６】
画像データ生成部１０５では、このようにしてコントローラ１０３から出力される実行指示を受け取ると、実行指示により指示されたラスタブロックについての画像データ生成処理（復号化部１０６に実行させる復号化処理を含む）を実行する。この場合において、画像データ生成部１０５が、あるスプライトの最初のラスタブロックについての画像データ生成処理の実行指示を受け取ったとき、先行して開始した他のスプライトの全てのラスタブロックについての画像データ生成処理が完了していない場合がある。このような場合、画像データ生成部１０５は、複数のスプライトについての画像データ生成処理を時分割制御により並列実行する。図７はこの場合の画像データ生成処理の並列実行の態様を示すものである。
【００４７】
本実施形態では、スプライトの圧縮データのコードバッファ１０４Ｂへの取り込みをスプライト単位で行い、各スプライトの画像データ生成処理（復号化処理を含む）をラスタブロック単位で切り換えて実行する。さらに詳述すると、次の通りである。
【００４８】
まず、画像データ生成部１０５は、あるスプライト（例えばスプライト１とする）の最初のラスタブロックについての画像データ生成処理の実行指示を受け取ったとき、そのスプライト１のスプライトネームＰＮをＲＯＭインタフェース１０４に与え、ＲＯＭ２０３からの画像データの読み出しを指示する。この指示に応じて、ＲＯＭインタフェース１０４のコントローラ１０４Ａは、コードバッファ１０４Ｂの複数のバッファ領域のうち、その時点において未割り当てのバッファ領域のうちの１つをコードバッファ管理テーブル１０４Ｃの格納内容を参照して選択する。以下では、バッファ領域ＣＢ０が選択され、このバッファ領域ＣＢ０のコードバッファ番号ＣＰは０であるとする。
【００４９】
次いで、コントローラ１０４Ａは、コードバッファ番号ＣＰ＝０に対応付けてコードバッファ管理テーブル１０４Ｃに格納されているスプライトネームＳＰＮ、ラスタブロックサイズＲＢＳ、仮想メモリアドレスＶＭＡ、仮想メモリ最終アドレスＶＭＥＡ、仮想メモリワークアドレスＶＭＷＡ、およびＲＯＭアドレスＲＡにスプライト１に対応したデータをセットし、さらにコードバッファリードポインタＣＢＲＰ、およびコードバッファライトポインタＣＢＷＰに初期値（バッファ領域ＣＢ０の先頭を示す値）をセットし、使用状態ビットｖａｌｉｄを“１”に書き換える。これにより、バッファ領域ＣＢ０がスプライト１の画像データの読み出しに割り当てられ、その画像データの読み出しに使用されるのである。そして、コントローラ１０４Ａは、スプライト１の圧縮データをＲＯＭ２０３から読み出してバッファ領域ＣＢ０に格納する処理を、バッファ領域ＣＢ０に空きがある間継続する。この間、コントローラ１０４Ａは、バッファ領域ＣＢ０に圧縮データを書き込む毎に、バッファ領域ＣＢ０に対応するコードバッファライトポインタＣＢＷＰを更新する。
【００５０】
次いで、画像データ生成部１０５は、スプライト１の最初のラスタブロックの画像データ生成処理を立ち上げる。この画像データ生成処理において、復号化部１０６は、コントローラ１０４Ａを介してバッファ領域ＣＢ０から圧縮データを読み出して、その復号化を行い、スプライト１の最初のラスタブロックの画像データを生成する。これと並列に、コントローラ１０４Ａは、バッファ領域ＣＢ０からの画像データの読み出しに応じてコードバッファ管理テーブル１０４Ｃの格納内容（具体的には、コードバッファ番号ＣＰ＝０に対応付けられたコードバッファリードポインタＣＢＲＰ）を更新する。画像データ生成部１０５は、復号化部１０６によって生成された画像データと、この画像データについて発生した仮想アドレスとをＭＭＵ１０７に送り、ワークメモリ１０８に格納させる。この場合、ＭＭＵ１０７は、画像データ生成部１０５から矩形領域（ラスタブロックをページ容量に合わせて区切ったもの）の各画素の画像データをラスタスキャン順に選択し、例えばページ内の連続した記憶領域に順次格納する。
【００５１】
次に、画像データ生成部１０５がスプライト１の最初のラスタブロックの画像データ生成処理を実行している間に、画像データ生成部１０５に対して、他のスプライト（例えばスプライト２とする）の最初のラスタブロックについての画像データ生成処理の実行指示が与えられたとする。この場合、画像データ生成部１０５は、そのスプライト２の圧縮データの取り込みをＲＯＭインタフェース１０４のコントローラ１０４Ａに指示する。この指示に応じて、コントローラ１０４Ａは、その時点において未割り当てのバッファ領域のうちの１つをコードバッファ管理テーブル１０４Ｃの格納内容を参照して選択する。以下では、バッファ領域ＣＢ３が選択され、このバッファ領域ＣＢ３のコードバッファ番号ＣＰは３であるとする。コントローラ１０４Ａは、前述したスプライト１の圧縮データの読み出しの場合と同様に、バッファ領域ＣＢ３をスプライト２の圧縮データの読み出しに割り当て、当該圧縮データをＲＯＭ２０３から読み出してバッファ領域ＣＢ３に格納する処理を、バッファ領域ＣＢ３に空きがある間継続する。この間、コントローラ１０４Ａは、バッファ領域ＣＢ３に圧縮データを書き込む毎に、バッファ領域ＣＢ３に対応するコードバッファライトポインタＣＢＷＰを更新する。
【００５２】
次いで、画像データ生成部１０５は、スプライト１の最初のラスタブロックの画像データ生成処理が完了するのを待って、スプライト２の最初のラスタブロックの画像データ生成処理を立ち上げる。その際、画像データ生成部１０５は、スプライト１の最初のラスタブロックの画像データ生成処理の処理結果をスタックに退避させる。この処理結果がスプライト１の後続のラスタブロックについての復号化処理等に必要になるからである。
【００５３】
そして、新たに立ち上げられた画像データ生成処理において、復号化部１０６は、コントローラ１０４Ａを介してバッファ領域ＣＢ３から圧縮データを読み出してその復号化を行い、スプライト２の最初のラスタブロックの画像データを生成する。コントローラ１０４Ａは、前述したバッファ領域ＣＢ０からの画像データの読み出しの際と同様に、バッファ領域ＣＢ３からの画像データの読み出しに応じてコードバッファ管理テーブル１０４Ｃの格納内容（具体的には、コードバッファ番号ＣＰ＝３に対応するコードバッファリードポインタＣＢＲＰ）を更新する。画像データ生成部１０５は、復号化部１０６によって生成された画像データと、その画像データについて発生した仮想アドレスとをＭＭＵ１０７に送り、ワークメモリ１０８に格納させる。
【００５４】
その後、画像データ生成部１０５がスプライト２の最初のラスタブロックの画像データ生成処理を実行している間に、画像データ生成部１０５に対して、スプライト１の２番目のラスタブロックについての画像データ生成処理の実行指示が与えられたとする。この場合、画像データ生成部１０５は、スプライト２の最初のラスタブロックの画像データ生成処理が完了するのを待って、スプライト１の２番目のラスタブロックの画像データ生成処理を立ち上げる。そして、画像データ生成部１０５は、スタックに退避させた上記処理結果を取り込んで、スプライト１の２番目のラスタブロックの画像データ生成処理を実行する。
【００５５】
この画像データ生成処理において、復号化部１０６は、バッファ領域ＣＢ０に対応するコードバッファリードポインタＣＢＲＰが示す位置から圧縮データの読み出しをコントローラ１０４Ａに再開させ、読み出された圧縮データの復号化を行い、スプライト１の２番目のラスタブロックの画像データを生成する。画像データ生成部１０５は、復号化部１０６によって生成された画像データと、その画像データについて発生した仮想アドレスとをＭＭＵ１０７に送り、ワークメモリ１０８に格納させる。以後、ラスタブロックについての画像データ生成処理の実行指示が画像データ生成部１０５に与えられる都度、同様な処理が繰り返される。
【００５６】
前述したように、本実施形態では、スプライトの画像データの読み出しにコードバッファ１０４Ｂの何れかのバッファ領域が割り当てられると、当該バッファ領域に格納されたスプライトの圧縮データが全て読み出され、当該スプライトについての復号化処理が完了するまで、その割り当てが維持される。従って、復号化部１０６は、最大、コードバッファ１０４Ｂ内のバッファ領域と同じ個数のスプライトの圧縮データについての復号化処理を並列実行することが可能である。
【００５７】
前掲図６には、各スプライトの圧縮データを格納するのに使用されたコードバッファ１０４Ｂのバッファ領域が示されている。この図６に示す例では、スプライトＳＰ１の最初のラスタブロックＳＰ１−０についての画像データ生成処理の実行指示（ＳＥＱ＿ＮＯ＝１３）が発生するとき、コードバッファ１０４Ｂのバッファ領域ＣＢ１に格納されたスプライトＳＰ４の圧縮データは全て読み出され、スプライトＳＰ４の全ラスタブロックについての画像データ生成処理（復号化処理を含む）が完了している。このため、スプライトＳＰ１の最初のラスタブロックＳＰ１−０についての画像データ生成処理の実行指示が発生したとき、コントローラ１０４Ａは、その時点において空いているバッファ領域ＣＢ１にスプライトＳＰ１の圧縮データを取り込んでいる。
【００５８】
ラインバッファ描画部１１２は、上述した画像データ生成処理を繰り返す間、これと並行し、水平同期信号に同期して、１ライン分の画像データの描画処理を繰り返す。図８はこの１ライン分の描画処理の内容を例示するものである。
【００５９】
まず、図８（ａ）では、前掲図５の例において、拡大縮小処理を経たラスタブロックＳＰ４−２、ＳＰ３−０、ＳＰ０−２を横切る位置に表示予定ラインがある。ここで、各スプライトのスプライト属性データが図５左側に示すように属性データ記憶部１０２に記憶されているものとすると、ラインバッファ描画部１１２は、表示予定ラインが横切る拡大縮小後のラスタブロックＳＰ４−２、ＳＰ３−０、ＳＰ０−２のうちラスタブロックＳＰ０−２の画像データであって、表示予定ライン上に位置する１ライン分の画像データを最初の生成対象とする。何故ならばラスタブロックＳＰ４−２、ＳＰ３−０、ＳＰ０−２が各々属する各スプライトのスプライト属性データは、ＳＰ０→ＳＰ３→ＳＰ４の順に属性データ記憶部１０２に記憶されているからである（図５左側参照）。そして、ラインバッファ描画部１１２は、ラスタブロックＳＰ０−２の表示予定ライン上の１ライン分の画像データを生成するための画像データをＭＭＵ１０７を介してワークメモリ１０８から読み出し、この読み出しデータを用いて拡大縮小処理を実行し、１ライン分の画像データを生成し、画像出力部１１０の書き込み用ラインバッファに書き込む（図８（ｂ）参照）。
【００６０】
次にラインバッファ描画部１１２は、拡大縮小後のラスタブロックＳＰ３−０の画像データであって、表示予定ライン上に位置する１ライン分の画像データを生成するのに必要な画像データをＭＭＵ１０７を介してワークメモリ１０８から読み出す（図８（ｃ）参照）。そして、スプライトＳＰ３のスプライト属性データにおいてアルファブレンディングを行うべき旨の指定がされている場合には、ラスタブロックＳＰ３−０の一部である表示予定ライン上の画像データと、既に画像出力部１１０の書き込み用ラインバッファに記憶されたラスタブロックＳＰ０−２の一部である１ライン分の画像データとを用いてアルファブレンディングを実行する。これにより、アルファブレンディング後の１ライン分の画像データが書き込み用ラインバッファ内に残る（図８（ｄ）参照）。
【００６１】
次にラインバッファ描画部１１２は、拡大縮小後のラスタブロックＳＰ４−２の画像データであって、表示予定ライン上に位置する１ライン分の画像データを生成するのに必要な画像データをＭＭＵ１０７を介してワークメモリ１０８から読み出す（図８（ｅ）参照）。そして、スプライトＳＰ４のスプライト属性データにおいてアルファブレンディングを行うべき旨の指定がされている場合には、このラスタブロックＳＰ４−２の一部である表示予定ライン上の画像データと、既に画像出力部１１０の書き込み用ラインバッファに記憶された１ライン分の画像データとを用いてアルファブレンディングを実行する。これによりアルファブレンディング後の１ライン分の画像データが書き込み用ラインバッファ内に残る（図８（ｆ）参照）。
【００６２】
以上のようにして表示予定ラインにおいて表示させる１ライン分の画像データが完成し、書き込み用バッファに格納される。そして、水平走査期間が切り換わると、書き込み用バッファは読み出し用バッファとなり、この読み出し用バッファに記憶された１ライン分の画像データが読み出されてＬＣＤ２０２に供給され、ＬＣＤ２０２の表示画面に表示される。
【００６３】
ＭＭＵ１０７は、ラインバッファ描画部１１２が以上のような１ライン分の描画処理を水平同期信号に同期して繰り返す間、ワークメモリ１０８の各ページの画像データの読み出し状況を監視する。そして、あるページに記憶された最後の画像データが読み出されて１ライン分の描画処理に使用された場合、ＭＭＵ１０７は、原則として、管理テーブル１０９において、そのページに対応付けられたＶＡＬＩＤビットを“０”とし、そのページを他の画像データの格納のために解放する。このようなページの解放動作により、ワークメモリ１０８の全ページが塞がるのを回避することができる。従って、少ない容量のワークメモリ１０８により、描画処理に用いる画像データを格納することができる。
【００６４】
以上、スプライトの表示を中心に説明を行ったが、アウトラインフォント等の表示に関しても同様である。本実施形態によれば、コントローラ１０３は、各垂直走査期間において、各表示対象の画像データのＬＣＤ２０２での表示に先行して、各表示対象の画像データの生成を画像データ生成部１０５に順次指令し、画像データ生成部１０５は、指令された表示対象の画像データを生成し、仮想メモリとしてのワークメモリ１０８にＭＭＵ１０７を介して格納する。
【００６５】
一方、ラインバッファ描画部１１２は、このワークメモリ１０８内の画像データに基づいて、各水平走査期間において表示する１ライン分の画像データを生成する。また、ＭＭＵ１０７は、ワークメモリ１０８において画像データを記憶しているページのうち表示のために使用された画像データを記憶するページを新たな画像データの記憶に備えて解放する。従って、ワークメモリ１０８は、小容量のもので済む。また、画像データ生成部１０５が表示対象の画像データを生成する期間は、１水平走査期間内に限定されないので、非圧縮の画像データやライン単位での復号化が可能な低圧縮の画像データに限らず、ライン単位での復号化を行うことのできない高圧縮の画像データを用いて表示対象の画像データを生成することができる。従って、本実施形態によれば、ラインバッファ方式の画像処理装置でありながら、高解像度かつフルカラーの表示を実現することができるという効果がある。
【００６６】
加えて、本実施形態においては、コードバッファ１０４Ｂは複数のバッファ領域を有しており、コントローラ１０４Ａは、画像データ生成部１０５から圧縮データの読み出しを指示される毎にそれら複数のバッファ領域のうちの未割り当てのものを１つ選択し、当該圧縮データの読み出しに割り当てる。したがって、描画対象のラインが複数のスプライトを横切っている場合であっても、未割り当てのバッファ領域がある間は、描画対象のスプライトが切り換ってもバッファ領域の格納内容が破棄されることはなく、読み出し先のアドレスを切り換える必要もない。つまり、本実施形態によれば、ラインバッファ方式の画像処理装置において描画対象のラインが複数のスプライトを横切っている場合であっても、読み出し先のアドレスの切り換えに起因したオーバーヘッドが生じることはなく、表示性能が大きく低下することはない。
【００６７】
（Ｃ：変形）
以上、この発明の一実施形態について説明したが、この発明には他にも実施形態が考えられる。例えば次の通りである。
（１）同一のスプライトについて複数の属性データが属性データ記憶部１０２に書き込まれる場合が考えられる。例えば同一のスプライト（例えばスプライトＳＰとする）を複数の表示位置（例えば表示位置Ｐ１およびＰ２とする）に表示させるような場合である。この場合の対処法に関する態様としては次の２つが考えられる。
【００６８】
第１の態様では、コントローラ１０３は、同一内容の２個のスプライトＳＰの画像データを画像データ生成部１０５に生成させ、ＭＭＵ１０７を介してワークメモリ１０８にそれらのスプライトＳＰの画像データを記憶させる。第２の態様では、コントローラ１０３は、１つのスプライトＳＰの画像データを画像データ生成部１０５に生成させ、ＭＭＵ１０７を介してワークメモリ１０８にそれらのスプライトの画像データを記憶させる。
【００６９】
第１の態様では、例えば表示位置がＰ１であるスプライトＳＰのみについて属性データのＬＯＣＫビットを“１”とした場合、表示位置がＰ１であるスプライトの画像データを記憶するページのＰＬＯＣＫビットのみが“１”とされ、表示位置がＰ２であるスプライトの画像データを記憶するページのＰＬＯＣＫビットは“０”とされる。この場合、ＰＬＯＣＫビットが“０”であるページは、記憶している画像データが表示に使用された時点で解放されるが、ＰＬＯＣＫビットが“１”であるページは、記憶している画像データが表示に使用されても解放されない。従って、一時的に２個のスプライトＳＰの画像データをワークメモリ１０８に記憶させる場合が起こりうるが、一方のスプライトＳＰの画像データが表示に使用された時点でその画像データを記憶していたページが解放されるので、ワークメモリ１０８に必要な記憶容量を節約することができる。
【００７０】
第２の態様では、例えば表示位置がＰ１であるスプライトＳＰのみについて属性データのＬＯＣＫビットを“１”とした場合、そのＬＯＣＫビットが“０”となるまで、スプライトＳＰの画像データを記憶するページのＰＬＯＣＫビットを“１”とする必要がある。従って、ＰＬＯＣＫビットの更新の制御がやや複雑になる。しかし、この第２の態様は、同一種類のスプライトＳＰの画像データを複数位置に表示させるような場合に、１個のスプライトＳＰの画像データのみをワークメモリ１０８に記憶させればよく、ワークメモリ１０８の記憶容量を節約することができる。
【００７１】
（２）仮想アドレスの生成方法は、上記実施形態のものに限定されない。例えばスプライトの画像データを複数ページに分割してワークメモリ１０８に格納する場合、同一スプライトの画像データの各部を記憶する各ページに対応付ける仮想アドレスを連続したアドレスとしてもよい。要は、ラインバッファ描画部１１２が表示対象ライン上のスプライトの画像データを生成するとき、その素材となる画像データを記憶しているページに対応付けられた仮想アドレスをラインバッファ描画部１１２が属性データ記憶部１０２内の属性データを参照することにより求めることができればよい。
【００７２】
（３）上記実施形態においてＭＭＵ１０７は、ＰＬＯＣＫビットが“０”であり、かつ、ＶＡＬＩＤビットが“１”であるページに関して、そのページ内の全ての画像データがＬＣＤ２０２での表示に使用されたとき、そのページに対応したＶＡＬＩＤビットを“０”とし、そのページを他の画像データの記憶のために解放した。しかし、このようにする代わりに、１フレーム分の表示が終わる毎に、ＰＬＯＣＫビットが“０”であるページに対応したＶＡＬＩＤビットを“０”としてもよい。
【００７３】
（４）上記実施形態では、コントローラ１０３の負担を減らすため、拡大縮小前の各ラスタブロックの表示位置に基づいて、各ラスタブロックの画像データ生成処理の実行スケジュールをコントローラ１０３に生成させた。しかし、コントローラ１０３の演算能力に余裕がある場合には、コントローラ１０３に属性データ記憶部１０２内のスプライトの拡大縮小率を参照させて、拡大縮小後の各ラスタブロックの表示位置を求めさせ、この拡大縮小後の各ラスタブロックの表示位置に基づいて、各ラスタブロックの画像データ生成処理の実行スケジュールを生成させてもよい。
【００７４】
（５）上述した実施形態では、圧縮データの復号を完了した時点で当該圧縮データの読み出しに割り当てたバッファ領域を解放した。しかし、未割り当てのバッファ領域がある間は割り当て済みのバッファ領域の解放を行わず、未割り当てのバッファ領域がない状態において新たな圧縮データの読み出しを指示された時点で何れかのバッファ領域を解放し、当該新たな圧縮データの読み出しに割り当てるようにしても良い。なお、割り当て済みのバッファ領域のうちの何れを解放するのかについては、直近の所定期間における使用頻度（バッファ領域からのデータの読み出し頻度）が最も低いバッファ領域を解放する態様や、最も古い割り当てのバッファ領域を解放する態様が考えられる。
【００７５】
（６）ＲＯＭ２０３からコードバッファ１０４Ｂのバッファ領域に画像データを読み出す際のデータ読み出し量を当該画像データのデータサイズに応じて調整しても良い。例えば、ＲＯＭ２０３からコードバッファ１０４Ｂのバッファ領域に読み出す画像データのデータサイズが、Ｍ（２以上の自然数）バイト以下であれば、一回当りのデータ読み出し量をＭバイトとし、同データサイズがＭ＋１バイト以上１０×Ｍバイト以下であれば、一回当りのデータ読み出し量を２×Ｍバイトとし、同データサイズが１０×Ｍ＋１バイト以上１００×Ｍバイト以下であれば、一回当りのデータ読み出し量を１０×Ｍバイトとする、といった具合である。このようなことを実現するには、一回当りのデータ読み出し量とそのデータ読み出し量を適用する画像データのデータサイズの範囲とを対応付けるテーブルをＲＯＭインタフェース１０４に予め記憶させておき、このテーブルの格納内容を参照して一回当りのデータ読み出し量を決定する処理をコントローラ１０４Ａに実行させるようにすれば良い。
【００７６】
また、ＲＯＭ２０３に格納されている画像データのデータサイズの分布に基づいてデータ読み出し量を調整しても良い。例えば、ＲＯＭ２０３に格納されている複数の圧縮データの大半が比較的データサイズの小さいもの（例えば、Ｍ（Ｍは２以上の自然数）バイト未満のもの）である場合には、コントローラ１０４ＡによるＲＯＭ２０３からコードバッファ１０４Ｂのバッファ領域へのデータ読み出しをＭバイトずつ実行させる、といった具合である。このようにすると、ＲＯＭ２０３に格納されている複数の圧縮データの大半のものが１回のデータ読み出しでＲＯＭ２０３からバッファ領域へ読み出されることになる。また、このようなことを実現するための方策としては、ＲＯＭ２０３に格納されている複数の圧縮データのデータサイズの分布を求める分布算出処理と、当該分布の特徴を示す特徴量（平均値や標準偏差、或いは最頻出値）を算出する統計量算出処理と、ＲＯＭ２０３からバッファ領域へのデータ読み出し量を当該統計量に基づいて設定するデータ読み出し量設定処理とをコントローラ１０４Ａに実行させるようにすれば良い。例えば、上記分布としてヒストグラムを用いる場合には上記統計量として最頻出値を用い、上記データ読み出し量として当該最頻出値を設定するようにすれば良い。
【００７７】
また、上記実施形態では、ＲＯＭ２０３からの圧縮データの読み出しを所定データ量ずつ行ったが、コントローラ１０４Ａにかかっている処理負荷或いはＲＯＭ２０３からのデータ読み出しに利用可能な帯域幅に応じてデータ読み出し量を動的に調整する（処理負荷が軽いほど或いは帯域幅が広いほどデータ読み出し量を大きくするなど）ようにしても勿論良い。
【符号の説明】
【００７８】
１００……画像表示ＬＳＩ、１０１……ＣＰＵインタフェース、１０２……属性データ記憶部、１０３……コントローラ、１０４……ＲＯＭインタフェース、１０４Ａ……コントローラ、１０４Ｂ……コードバッファ、１０４Ｃ……コードバッファ管理テーブル、１０５……画像データ生成部、１０６……復号化部、１０７……ＭＭＵ、１０８……ワークメモリ、１０９……管理テーブル、１１０……画像出力部、１１１Ａ，１１１Ｂ……ラインバッファ、１１２……ラインバッファ描画部、２０１……ホストＣＰＵ、２０２……ＬＣＤ、２０３……ＲＯＭ。
【図１】
2013109190.tif 000003
【図２】
2013109190.tif 000004
【図３】
2013109190.tif 000005
【図４】
2013109190.tif 000006
【図５】
2013109190.tif 000007
【図６】
2013109190.tif 000008
【図７】
2013109190.tif 000009
【図８】
2013109190.tif 000010