(57)【要約】【課題】スプライトパターンメモリにおけるブランク空間の発生を抑えつつ、スプライトの圧縮符号化データのデコード結果をライン単位で得ることを可能にする。【解決手段】上記圧縮符号化データを分割して得られる各データとそのデータにライン境界が含まれているか否かを示すフラグとを対応付けて得られるデータブロックを隙間を空けることなくスプライトパターンメモリに格納する。このスプライトパターンメモリから表示対象として指定されたスプライト画像の圧縮符号化データをデータブロック単位で順次読み出し、その圧縮符号化データにライン境界が含まれているか否かをその圧縮符号化データとともに読み出したフラグの値に基づいて判定する。そして、ライン境界を含むと判定した場合に、それまでに読み出した圧縮符号化データからそのライン境界までの１ライン分の画像データをデコードして出力する。【選択図】図２
2010276722.tif 000002
【特許請求の範囲】
【請求項１】
１または複数のスプライト画像の各々の圧縮符号化データを分割して得られる複数のデータの各々とスプライト画像をライン単位で描画した場合におけるライン境界が当該データに存在するか否かを示すフラグとを対応付けたデータブロックをスプライト画像毎に一連の記憶領域に隙間を空けることなく格納したスプライトパターンメモリから、表示対象として指定されたスプライト画像の圧縮符号化データを含むデータブロックを順次読み出す読み出し手段と、
前記読み出し手段により順次読み出されるデータブロックに含まれているフラグに基づいて、ライン境界を含む圧縮符号化データが読み出されたか否かを判定し、ライン境界を含む圧縮符号化データが読み出されたと判定した場合に、前記読み出し手段により読み出された各データブロックに含まれている圧縮符号化データからライン境界までの１ライン分の画像データをデコードして出力するデコード処理手段と、
を有することを特徴とする圧縮符号化データのデコード結果をライン単位で出力する画像処理装置。
【請求項２】
記憶手段を備え、
前記デコード処理手段は、前記読み出し手段により読み出された各データブロックに含まれる圧縮符号化データから１ライン分の画像データをデコードする際に、ライン境界以降の圧縮符号化データを前記記憶手段に格納し、後続ラインについてのデコードの際に使用する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記デコード処理手段は、
圧縮符号化データをデコードするためのメインデコーダおよびサブデコーダを有し、
１ライン分の画像データを得るためのデコードについては前記メインデコーダを用いて行い、ライン境界以降の圧縮符号化データを前記記憶手段に格納する際に、前記サブデコーダを用いて当該圧縮符号化データをデコードして次ライン以降のライン境界を含むか否かを判定し、その判定結果に応じたフラグを当該圧縮符号化データに対応付けて前記記憶手段に書き込み、
表示対象として指定されたスプライト画像の２ライン目以降のデコードを行う際には、ライン境界を含むことを示すフラグを対応付けられた圧縮符号化データが前記記憶手段に記憶されている場合には、当該圧縮符号化データから当該ライン境界までの１ライン分の画像データをデコードして出力する一方、ライン境界を含まないことを示すフラグを対応付けられた圧縮符号化データが前記記憶手段に記憶されている場合には、当該圧縮符号化データと前記読み出し手段により読み出される各データブロックに含まれている圧縮符号化データとから１ライン分の画像データをデコードして出力する
ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記スプライトパターンメモリを有することを特徴とする請求項１から３の何れか１に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、圧縮符号化された画像データを復号する技術に関する。
【背景技術】
【０００２】
ゲーム機などに用いられる画像処理装置の一例としてラインバッファ方式の画像処理ＬＳＩ（Large Scale Integration）が挙げられる（例えば、特許文献１および２参照）。この種の画像処理ＬＳＩでは、ゲームキャラクタなどのスプライト画像を表す画像データ（以下、スプライトデータ）がスプライトパターンメモリに予め格納されており、ゲームの進行に合わせてライン（水平走査線）単位で、スプライトデータに拡大や縮小、回転などの画像処理を施した結果をラインバッファに書き込み、その処理結果に応じた画像をライン単位でＬＣＤ（Liquid Crystal Display）などの表示装置に表示させる、といった処理が行われる。
【先行技術文献】
【非特許文献】
【０００３】
【特許文献１】特開２００５−２５７８８６号公報
【特許文献２】特開２００６−２２７４９８号公報
【特許文献３】特開２００２−３４１８５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この種の画像処理ＬＳＩの商品価値はスプライト描画性能によって大きく左右され、スプライト描画性能は各ラインにて表示可能なスプライト画像の総ドット数によって評価される。つまり、画像処理ＬＳＩのスプライト描画性能は、スプライトパターンメモリとの間のデータ転送量に一部依存する。しかし、現状では、スプライトパターンメモリと画像処理ＬＳＩとの間のデータ転送量には限界があり、充分なスプライト描画性能を得られない場合がある。そこで、スプライトパターンメモリと画像処理ＬＳＩとの間のデータ転送量に限界があることを前提として画像処理ＬＳＩのスプライト描画性能を向上させるための技術が種々提案されており、その一例としては特許文献３に開示されたものが挙げられる。特許文献３に開示された技術では、スプライトデータに圧縮符号化を施してスプライトパターンメモリに格納しておき、スプライトパターンメモリから読み出した圧縮符号化データをデコードして得られる圧縮前の画像データをフレームバッファに書き込むことで、スプライト画像一つ当たりのデータ転送量を削減している。
【０００５】
ラインバッファ方式の画像処理ＬＳＩにおいては、画像データを一ライン分ずつラインバッファに書き込む必要があるため、スプライトデータに圧縮符号化を施す場合には、デコード結果がライン単位で得られることが必要となる。しかし、スプライト画像のフレーム単位でスプライトパターンメモリに格納された圧縮符号化データからデコード結果をライン単位で得ることは難しく、スプライトパターンメモリへの圧縮符号化データの格納態様に何らかの工夫を施す必要がある。例えば、図２（Ｂ）に示すように、各ラインのデコード処理にて必要となる圧縮符号化データを、その先頭がスプライトパターンメモリ内の記憶領域の先頭に位置するように格納するといった具合である。このようにすると、例えば、図２（Ｂ）のスプライト１のライン１についてのデコード結果を得ようとする場合には、アドレス＃０からアドレス＃２の記憶領域に格納されている圧縮符号化データを読み出してデコードを行えば良い。
【０００６】
しかし、図２（Ｂ）に示す格納態様では、同図２（Ｂ）にてハッチングで示すように、各ラインの境界でブランク空間（記憶領域のうち圧縮符号化データの格納に使用されていない領域）が生じ、無駄が多いといった問題がある。また、スプライトパターンメモリからのデータ読み出しは上記記憶領域単位で行われるため、ブランク空間が多数発生すことは、データの転送効率という観点からも好ましくない。
本発明は、上記課題に鑑みて為されたものであり、スプライトパターンメモリにおけるブランク空間の発生を抑えつつ、スプライトの圧縮符号化データのデコード結果をライン単位で取得することを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本発明は、１または複数のスプライト画像の各々の圧縮符号化データを分割して得られる複数のデータの各々とスプライト画像をライン単位で描画した場合におけるライン境界が当該データに存在するか否かを示すフラグとを対応付けたデータブロックをスプライト画像毎に一連の記憶領域に隙間を空けることなく格納したスプライトパターンメモリから、表示対象として指定されたスプライト画像の圧縮符号化データを含むデータブロックを順次読み出す読み出し手段と、前記読み出し手段により順次読み出されるデータブロックに含まれているフラグに基づいて、ライン境界を含む圧縮符号化データが読み出されたか否かを判定し、ライン境界を含む圧縮符号化データが読み出されたと判定した場合に、前記読み出し手段により読み出された各データブロックに含まれている圧縮符号化データからライン境界までの１ライン分の画像データをデコードして出力するデコード処理手段とを有することを特徴とする圧縮符号化データのデコード結果をライン単位で出力する画像処理装置、を提供する。
【０００８】
このような画像処理装置によれば、各データブロックに含まれているフラグを参照してライン境界を検出し、圧縮符号化データのデコード結果をライン単位で取得して後段の回路へ出力することが可能になる。ここで、スプライトパターンメモリにおいては、各データブロックはスプライト画像毎に一連の記憶領域に隙間を空けずに格納されているため、スプライト画像の各ライン境界でブランク空間が発生することはない。つまり、本発明に係る画像処理装置によれば、スプライトパターンメモリにおけるブランク空間の発生を抑えつつ、圧縮符号化データのデコード結果をライン単位で取得することが可能になる。
【０００９】
より好ましい態様の画像処理装置においては、記憶手段を備え、前記デコード処理手段は、前記読み出し手段により読み出された各データブロックに含まれる圧縮符号化データから１ライン分の画像データをデコードする際に、ライン境界以降の圧縮符号化データを前記記憶手段に格納し、後続ラインについてのデコードの際に使用することを特徴とする。このような態様によれば、先行ラインと後続ラインのライン境界を含むデータブロックを後続ラインについてのデコードの際にスプライトパターンメモリから再度読み出す必要はなく、スプライト画像一つ当りのデータ転送回数は従来よりも少なくなり、さらに、スプライト描画性能を向上させることができる。
【００１０】
さらに好ましい態様の画像処理装置においては、前記デコード処理手段は、圧縮符号化データをデコードするためのメインデコーダおよびサブデコーダを有し、１ライン分の画像データを得るためのデコードについては前記メインデコーダを用いて行い、ライン境界以降の圧縮符号化データを前記記憶手段に格納する際に、前記サブデコーダを用いて当該圧縮符号化データをデコードして次ライン以降のライン境界を含むか否かを判定し、その判定結果に応じたフラグを当該圧縮符号化データに対応付けて前記記憶手段に書き込み、表示対象のスプライト画像の２ライン目以降のデコードを行う際には、ライン境界を含むことを示すフラグを対応付けられた圧縮符号化データが前記記憶手段に記憶されている場合には、当該圧縮符号化データから当該ライン境界までの１ライン分の画像データをデコードして出力する一方、ライン境界を含まないことを示すフラグを対応付けられた圧縮符号化データが前記記憶手段に記憶されている場合には、当該圧縮符号化データと前記読み出し手段により読み出された各データブロックに含まれている圧縮符号化データとからライン境界までの１ライン分の画像データをデコードして出力することを特徴とする。この態様によれば、スプライト画像一つ当りのデータ転送回数をさらに削減することが可能になる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態である画像処理ＬＳＩ３００の構成例を示す図である。
【図２】圧縮符号化されたスプライトデータのスプライトパターンメモリへの格納態様の一例を示す図である。
【図３】表示対象のスプライト画像の１ライン目について画像処理ＬＳＩ３００が実行するデコード処理の流れを示すフローチャートである。
【図４】本実施形態におけるデコード処理を説明するための図である。
【図５】本実施形態におけるデコード処理を説明するための図である。
【図６】同２ライン目以降の各ラインについて画像処理ＬＳＩ３００が実行するデコード処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照しつつ本発明の実施形態について説明する。
（Ａ：構成）
図１は、本発明の一実施形態であるラインバッファ方式の画像処理ＬＳＩ３００の構成例を示すブロック図である。画像処理ＬＳＩ３００は、例えばゲーム機などに組み込まれ、そのゲーム機の制御中枢として機能するＣＰＵ（Central Processing Unit）４０２による制御下でゲームキャラクタ等を表すスプライト画像をモニタ４０３に表示させるものである。
【００１３】
スプライトパターンメモリ４０１は、複数種類のスプライト画像の各々のスプライトデータに圧縮符号化を施して得られる各圧縮符号化データを格納したメモリであり、例えばＲＯＭ（Read Only Memory）により構成されている。図２（Ａ）は、スプライトパターンメモリ４０１における圧縮符号化データの格納態様を示す図である。スプライトパターンメモリ４０１の内部は、各々Ｍビット（例えば、Ｍ＝３２）の複数の記憶領域に分割されており、各記憶領域には＃０、＃１・・・＃９、・・・といった具合に各々固有のアドレスが割り当てられている。スプライトパターンメモリ４０１の各記憶領域の最上位ビット（ＭＳＢ）は、ライン境界フラグに割り当てられており、残りのＭ−１ビット分の記憶領域には圧縮符号化データが格納されている。なお、図２（Ａ）のスプライト１についての圧縮符号化データのように、データサイズがＭ−１ビットを超えるものについては、Ｍ−１ビットずつに分割されて格納されている。このスプライトパターンメモリ４０１からのデータの読み出しは、上記アドレスで指定される記憶領域に格納されているデータ単位、すなわち、Ｍビットのデータ（１ビットのライン境界フラグとＭ−１ビットの圧縮符号化データとからなるＭビットのデータ、以下、データブロックと呼ぶ）単位で行われる。
【００１４】
図２（Ａ）に示すようにライン境界フラグは、０または１の値を有し、値が０であるライン境界フラグは後続する圧縮符号化データにライン境界が存在しないことを示し、値が１であるライン境界フラグは後続する圧縮符号化データにライン境界が存在することを示す。このようなライン境界フラグを用いる理由は以下の通りである。すなわち、本実施形態では、図２（Ａ）に示すように、データブロックはスプライト画像毎に一連の記憶領域に隙間を空けることなく格納され、圧縮符号化データの読み出しはデータブロック単位で行われる。一方、画像処理ＬＳＩ３００は、ラインバッファ方式の画像処理デバイスであり、表示対象として指定されたスプライト画像についてのデコード結果をライン単位で得る必要がある。本実施形態では、各データブロックに含まれているライン境界フラグを手掛かりにライン境界を検出し、データブロック単位で読み出される圧縮符号化データからデコード結果をライン単位で得ることを可能にしているのである。また、本実施形態では、スプライト画像毎にデータブロックを一連の記憶領域に隙間を空けることなく格納しているため、スプライト画像を構成する各ラインのライン境界でブランク空間が生じることはなく、図２（Ｂ）に示す格納態様に比較してスプライトパターンメモリ４０１におけるブランク空間の発生が抑えられる。
【００１５】
ＣＰＵ４０２は、各種の制御情報を画像処理ＬＳＩ３００に与える。モニタ４０３は、液晶パネル等による表示装置である。ＣＰＵＩ／Ｆ（インタフェース）３０１は、ＣＰＵ４０２から各種の制御情報を受け取る装置である。記憶部３０２は、例えばＲＡＭ（Random Access Memory）により構成されている。記憶部３０２は、スプライト画像の表示処理におけるワークエリアとして制御部３０３により使用されるとともに、ＣＰＵＩ／Ｆ３０１を介してＣＰＵ４０２から与えられる制御情報を記憶する。ＣＰＵ４０２から与えられる制御情報の一例としては、表示対象のスプライト画像を指定する情報、そのスプライト画像の表示位置やそのスプライト画像に施すレンダリング処理（拡大や回転など）を指定する情報等が挙げられる。ここで、表示対象のスプライト画像を指定する情報には、スプライトパターンメモリ４０１にてそのスプライト画像の圧縮符号化データが格納されている一連の記憶領域のアドレスのうち最も若いもの（以下、格納先アドレス）、そのスプライト画像のライン方向の大きさ（ドット数）、および、そのスプライト画像の垂直走査線方向の大きさ（ライン数）を示す情報等が含まれる。一方、スプライト画像の表示処理にて使用されるエリアとしては、スプライトパターンメモリ４０１からのデータ読み出しタイミングを調整するためのＣＧＦＩＦＯ、ＣＧＦＩＦＯからデコーダ３０５への圧縮符号化データの受け渡しタイミングを調整するためのＥｎｃＦＩＦＯ、各種データを格納するバッファなどが挙げられる（図１では、何れも図示省略）。これらＦＩＦＯやバッファについては後に詳細に説明する。
【００１６】
制御部３０３は、記憶部３０２に記憶された各種の制御情報に従って画像処理ＬＳＩ３００内の各部の制御を行う制御中枢である。パターンメモリＩ／Ｆ３０４は、制御部３０３による制御の下、表示対象として指定されたスプライト画像の圧縮符号化データを含むデータブロックをスプライトパターンメモリ４０１から順次読み出す読み出し手段の役割を果たす装置である。デコーダ３０５は、制御部３０３による制御の下、上記読み出し手段により読み出される各データブロックに含まれている圧縮符号化データにデコードを施し、そのデコード結果をライン単位で後段の回路（本実施形態では、スプライトレンダリングプロセッサ３０６）へ出力するデコード処理手段の役割を担う装置である。図１に示すようにデコーダ３０５は、メインデコーダ３０５Ａとサブデコーダ３０５Ｂとを含んでいる。メインデコーダ３０５Ａとサブデコーダ３０５Ｂは同一のデコード方式で圧縮符号化データのデコードを行うものであるが、各々異なる役割を担っている。メインデコーダ３０５Ａおよびサブデコーダ３０５Ｂの各々が担う役割については後に詳細に説明する。
【００１７】
図１のデコーダ３０５と、スプライトレンダリングプロセッサ３０６と、ラインバッファ３０７Ａおよび３０７Ｂとは、制御部３０３による制御の下、モニタ４０３に表示させるスプライト画像の画像データを１ライン単位で生成し、その画像データをモニタ４０３の表示画面に反映させる処理を行う。より詳細に説明すると、ラインバッファ３０７Ａおよび３０７Ｂは、モニタ４０３の１ライン分の画像データを記憶する容量を各々有している。制御部３０３は、これらのラインバッファ３０７Ａおよび３０７Ｂを交互に使用し、例えばラインバッファ３０７Ａ内の１ライン分の画像データがモニタ４０３に表示される期間には、ラインバッファ３０７Ｂに次の１ライン分の画像データを書き込むレンダリングをスプライトレンダリングプロセッサ３０６に実行させ、ラインバッファ３０７Ｂ内の１ライン分の画像データがモニタ４０３に表示される期間には、ラインバッファ３０７Ａに次の１ライン分の画像データを書き込むレンダリングをスプライトレンダリングプロセッサ３０６に実行させる。
【００１８】
また、制御部３０３は、スプライトレンダリングプロセッサ３０６が行うレンダリングに間に合うように、レンダリングの対象となる１ライン分の画像データをデコーダ３０５に出力させるための制御を行う。なお、モニタ４０３の１ラインに複数種類のスプライト画像を表示させる場合は、制御部３０３は、表示対象である全てのスプライト画像の１ライン分の画像データを得るために必要な圧縮符号化データをスプライトパターンメモリ４０１から読み出してデコーダ３０５に供給し、そのデコードを行わせるための制御を行う。
【００１９】
表示コントローラ３０８、画像データコントローラ３０９およびモニタＩ／Ｆ３１０は、ラインバッファ３０７Ａおよび３０７Ｂから交互に１ライン分の画像データを読み出してモニタ４０３に供給し、モニタ４０３に画像を表示させる手段である。さらに詳述すると、表示コントローラ３０８は、垂直同期信号および水平同期信号をモニタＩ／Ｆ３１０を介してモニタ４０３に供給するとともに、水平同期信号に同期して、画像データコントローラ３０９に画像データの読み出し指令を送る。画像データコントローラ３０９は、画像データの読み出し指令を受け取る毎に、ラインバッファ３０７Ａおよび３０７Ｂを交互に選択し、選択したラインバッファから１ライン分の画像データを読み出して、モニタＩ／Ｆ３１０を介してモニタ４０３に送るのである。
以上が画像処理ＬＳＩ３００の構成である。
【００２０】
（Ｂ：動作）
次いで、画像処理ＬＳＩ３００が実行するデコード処理の流れを説明する。
（Ｂ−１：スプライト画像の１ライン目についてのデコード処理）
図３は、表示対象として指定されたスプライト画像の１ライン目のデコードを行う場合に制御部３０３が実行する処理の流れを示すフローチャートである。なお、処理対象のラインがスプライト画像の１ライン目であるか否かの判定については、例えば、スプライト画像毎にデコード済みのライン数をカウントするラインカウンタを記憶部３０２内に確保し、このラインカウンタの値が初期値（０）である場合に、１ライン目の処理であると判定するようにすれば良い。
【００２１】
制御部３０３は、まず、ＣＰＵ４０２から与えられる格納先アドレスをアドレスバッファ（図３では、「ｂｕｆＡ」と表記）に書き込み（ステップＳＡ１００）、この格納先アドレスの示す記憶領域に格納されているデータブロックを読み出す処理をパターンメモリＩ／Ｆ３０４に実行させる（ステップＳＡ１１０）。例えば、図２（Ａ）に示す態様で圧縮符号化データがスプライトパターンメモリ４０１に格納されているスプライト１が表示対象として指定された場合（すなわち、ＣＰＵ４０２から格納先アドレスとしてアドレス＃０が与えられる場合）には、制御部３０３はアドレス＃０の記憶領域に格納されているデータブロックを読み出す処理をパターンメモリＩ／Ｆ３０４に実行させる。
【００２２】
パターンメモリＩ／Ｆ３０４により読み出されるデータブロックはＣＧＦＩＦＯを介して制御部３０３に与えられる。制御部３０３は、ＣＧＦＩＦＯを介して与えられたデータブロックに含まれているライン境界フラグの値が１であるか否かを判定する（ステップＳＡ１２０）。そして、制御部３０３は、ステップＳＡ１２０の判定結果が“Ｎｏ”である場合には、ステップＳＡ１３０およびステップＳＡ１４０の処理を実行し、逆に、同判定結果が“Ｙｅｓ”である場合には、ステップＳＡ１５０以降の処理を実行する。
【００２３】
ステップＳＡ１３０では、制御部３０３は、ＣＧＦＩＦＯから出力されるデータブロックに含まれている圧縮符号化データをその最下位ビット（ＬＳＢ）から順にＥｎｃＦＩＦＯに書き込む。詳細については後述するが、ＥｎｃＦＩＦＯに書き込まれた圧縮符号化データは、先に書き込まれたものから順に６４ビット単位でメインデコーダ３０５Ａに与えられる。そして、制御部３０３は、アドレスバッファｂｕｆＡに格納されている格納先アドレスを１アドレス分だけ歩進させ（ステップＳＡ１４０）、ステップＳＡ１１０以降の処理を再度実行する。なお、格納先アドレスを１アドレス分だけ歩進させるとは、スプライトパターンメモリ４０１における記憶領域のデータサイズ分だけ大きな値に更新することをいう。これにより、ステップＳＡ１２０の判定結果が“Ｙｅｓ”になるまで（すなわち、表示対象として指定されたスプライト画像の１ライン目と２ライン目のライン境界を含むデータブロックが読み出されるまで）、同１ライン目の圧縮符号化データがＥｎｃＦＩＦＯに順次書き込まれるのである。
【００２４】
例えば、スプライト１が表示対象である場合、まず、アドレス＃０の記憶領域に格納されているデータブロックが読み出される（図４：ステップＳＡ１１０（１回目））。図２（Ａ）に示すように、このデータブロックのライン境界フラグは０であるから、ステップＳＡ１２０の判定結果は“Ｎｏ”になり、同データブロックに含まれている圧縮符号化データをＥｎｃＦＩＦＯに書き込む処理（ステップＳＡ１３０）およびアドレスバッファｂｕｆＡの格納内容を更新する処理（ステップＳＡ１４０）が実行される。その結果、アドレスバッファｂｕｆＡの格納内容はアドレス＃１となり、図４に示すように、ＥｎｃＦＩＦＯには、アドレス＃０の記憶領域に格納されている圧縮符号化データが書き込まれる。
【００２５】
アドレスバッファｂｕｆＡの格納内容の更新後に実行されるステップＳＡ１１０（図４：ステップＳＡ１１０（２回目））にて読み出されるデータブロック（すなわち、アドレス＃１の記憶領域から読み出されるデータブロック）についても、ライン境界フラグの値は０であるから（図２（Ａ）参照）、ステップＳＡ１２０の判定結果は“Ｎｏ”になり、ステップＳＡ１３０およびステップＳＡ１４０の処理が実行される。その結果、アドレスバッファｂｕｆＡの格納内容はアドレス＃２となり、図４に示すように、ＥｎｃＦＩＦＯには、アドレス＃１の記憶領域に格納されている圧縮符号化データが追記され、ステップＳＡ１１０以降の処理が再度実行される。そして、このようにして３回目に実行されるステップＳＡ１１０にて読み出されるデータブロック（すなわち、アドレス＃２の記憶領域に格納されているデータブロック）については、ライン境界フラグが１であるから（図２（Ａ）参照）、ステップＳＡ１２０の判定結果は“Ｙｅｓ”になり、ステップＳＡ１５０以降の処理が実行される。
【００２６】
図３に戻って、ステップＳＡ１２０の判定結果が“Ｙｅｓ”である場合に実行されるステップＳＡ１５０では、制御部３０３は、ステップＳＡ１１０にて読み出したデータブロックに含まれているライン境界フラグおよび圧縮符号化データを各々のバッファへ退避する処理、および上記圧縮符号化データをＥｎｃＦＩＦＯに書き込む処理を実行する。なお、図４では、圧縮符号化データを退避するためのデータバッファはｂｕｆＤと表記されており、ライン境界フラグを格納するためのフラグバッファはｂｕｆＦと表記されている。例えば、図２（Ａ）のスプライト１については、アドレス＃２の記憶領域から読み出したデータブロックに関してステップＳＡ１５０以降の処理が実行される。その結果、アドレスバッファｂｕｆＡはアドレス＃２を格納した状態になり、図４に示すように、ＥｎｃＦＩＦＯは、アドレス＃０、アドレス＃１およびアドレス＃２の各記憶領域から読み出した圧縮符号化データを格納した状態に、フラグバッファｂｕｆＦは１を格納した状態に、データバッファｂｕｆＤはアドレス＃２の記憶領域から読み出した圧縮符号化データを格納した状態になる。
【００２７】
図３に示すデコード処理にてステップＳＡ１５０に後続して実行されるステップＳＡ１６０では、制御部３０３は、ＥｎｃＦＩＦＯに格納されている圧縮符号化データのデコードを行う。より詳細に説明すると、制御部３０３は、ＥｎｃＦＩＦＯに格納されている圧縮符号化データを６４ビットずつメインデコーダ３０５Ａに与えてそのデコードを行う処理を、表示対象として指定されたスプライト画像のライン方向のドット数に応じた数の画素の各々の画素値を表す画像データがメインデコーダ３０５Ａから出力されるまで繰り返し実行する。これにより、表示対象として指定されたスプライト画像の１ライン目のデコードがメインデコーダ３０５Ａによって行われ、そのデコード結果である１ライン分の画像データがレンダリングプロセッサ３０６に与えられる。また、制御部３０３は、この処理の実行過程で、ライン境界フラグが１である圧縮符号化データのうちＥｎｃＦＩＦＯを介してメインデコーダ３０５Ａに与えた部分のビット数（以下、消費ビット数）をカウントし、この消費ビット数または残存ビット数をコード長バッファｂｕｆＬに格納する処理も実行する。
【００２８】
そして、制御部３０３は、データバッファｂｕｆＤおよびフラグバッファｂｕｆＦの格納内容に対して変換処理（ステップＳＡ１７０）を施し、ラインカウンタの値を更新して当該１ライン目のデコード処理を終了する。ここで、変換処理とは、データバッファｂｕｆＤおよびフラグバッファｂｕｆＦの格納内容を後続ラインのデコード処理における使用に適するように変換する処理のことである。より詳細に説明すると、制御部３０３は、まず、データバッファｂｕｆＤの格納内容に対して、コード長バッファｂｕｆＬに格納されている消費ビット数（または残存ビット数）に応じたビット数だけ右ビットシフト（論理シフト）を施す。これにより、データバッファｂｕｆＤに格納されている圧縮符号化データから１ライン目に相当する部分が消去される。次いで、制御部３０３は、ビットシフト後の圧縮符号化データをサブデコーダ３０５Ｂに与えてデコードし、その圧縮符号化データにライン境界が存在するか否かを判定する。具体的には、制御部３０３は、表示対象として指定されたスプライト画像のライン方向のドット数を超える数分の画素の画素値を表す画像データがサブデコーダ３０５Ｂから出力される場合には、ライン境界が存在すると判定し、上記ドット数以下の画素の画素値を表す画像データが出力される場合には、ライン境界は存在しないと判定する。そして、制御部３０３は、ライン境界が存在しないと判定した場合にのみフラグバッファｂｕｆＦの格納内容を０に書き換え、１ライン目のデコード処理を終了する。このような変換処理を経たデータバッファｂｕｆＤおよびフラグバッファｂｕｆＦの格納内容は、後続ライン（本動作例では、ライン２）についてのデコード処理にて使用される。本実施形態では、メインデコーダ３０５Ａの他にサブデコーダ３０５Ｂを設け、ライン境界の有無の判定のためのデコードをサブデコーダ３０５Ｂに行わせるようにしたため、メインデコーダ３０５Ａにおけるデコード処理を妨げることなく、上記判定を行うことができるのである。
【００２９】
例えば、スプライト１が表示対象である場合、スプライト１の１ライン目についてステップＳＡ１７０の処理が実行される時点では、データバッファｂｕｆＤにはアドレス＃２の記憶領域から読み出した圧縮符号化データが格納されており、この圧縮符号化データにはライン１とライン２のライン境界が存在する（図４参照）。上記変換処理にてデータバッファｂｕｆＤの格納内容に対してビットシフトを施すと、図４に示すように、データバッファｂｕｆＤにはライン２の先頭部分の圧縮符号化データのみが含まれることとなり、フラグバッファｂｕｆＦの格納内容は０に更新され、スプライト１の１ライン目についてのデコード処理が完了するのである。
【００３０】
図５は、圧縮符号化データが図２（Ａ）に示す態様でスプライトパターンメモリ４０１に格納されているスプライト２の１ライン目についてのデコード処理を示す図である。このスプライト２については、まず、アドレス＃（Ｘ＋４）の記憶領域に格納されているデータブロックが読み出されるのであるが、図２（Ａ）に示すように、このデータブロックに含まれているライン境界フラグの値は１であり、ステップＳＡ１２０の判定結果は“Ｙｅｓ”になる。つまり、スプライト２の１ライン目については、ステップＳＡ１３０およびステップＳＡ１４０の処理を一回も行うことなく、ステップＳＡ１５０以降の処理が実行されるのである。アドレス＃（Ｘ＋４）の記憶領域から読み出したデータブロックに対してステップＳＡ１５０の処理が実行されると、アドレスバッファｂｕｆＡはアドレス＃（Ｘ＋４）を格納した状態になり、図５に示すように、ＥｎｃＦＩＦＯおよびデータバッファｂｕｆＤの各々はアドレス＃（Ｘ＋４）の記憶領域から読み出された圧縮符号化データを格納した状態に、フラグバッファｂｕｆＦは１を格納した状態になる。
【００３１】
そして、ＥｎｃＦＩＦＯに格納された圧縮符号化データのうちライン１とライン２の境界より手前の部分はメインデコーダ３０５Ａによりデコードされ（ステップＳＡ１６０）、フラグバッファｂｕｆＦおよびデータバッファｂｕｆＤの格納内容に対しては、前述した変換処理（ステップＳＡ１７０）が施される。データバッファｂｕｆＤにはアドレス＃（Ｘ＋４）の記憶領域の圧縮符号化データが格納されており、この圧縮符号化データにはライン１とライン２のライン境界、およびライン２とライン３のライン境界が存在する（図５参照）。このデータバッファｂｕｆＤの格納内容に対してビットシフトを施すと、図５に示すように、データバッファｂｕｆＤにはライン２およびライン３の圧縮符号化データが含まれる（すなわち、ライン境界が存在する）ことになり、フラグバッファｂｕｆＦの格納内容は更新されず、１のままとされる。
以上がスプライト画像の１ライン目についてのデコード処理である。なお、表示対象のスプライトが複数指定される場合には、スプライト毎に各バッファ（ｂｕｆＡ、ｂｕｆＤ、ｂｕｆＦ、ｂｕｆＬおよびラインカウンタ）を確保する必要があることは言うまでもない。
【００３２】
（Ｂ−２：スプライト画像の２行目以降の各ラインについてのデコード処理）
次いで、表示対象として指定されたスプライト画像の２行目以降の各ラインについてのデコード処理について説明する。図６は、表示対象として指定されたスプライト画像の２ライン目以降の各ラインのデコードを行う場合に制御部３０３が実行するデコード処理の流れを示すフローチャートである。図６では、図３に示すデコード処理と同一処理内容のステップについては同一の符号が付されている。図６と図３とを対比すれば明らかように、図６に示すデコード処理は、前述したステップＳＡ１１０からステップＳＡ１７０の各処理の他に、これらの処理に先立って実行されるステップＳＢ１００からステップＳＢ１２０の３つの処理を含んでいる点が図３に示すデコード処理と異なる。以下、図３に示すデコード処理との相違点を中心に説明する。
【００３３】
図６に示すように、ステップＳＢ１００においては、制御部３０３は、データバッファｂｕｆＤに格納されている圧縮符号化データをＥｎｃＦＩＦＯへ書き込む。より詳細に説明すると、実際の書き込みは、対象スプライトのｂｕｆＤのデータ、次のスプライトのｂｕｆＤのデータ、パターンメモリから読み出されたデータを合わせて（ケースバイケースで組み合わせ方が異なる）６４ビット単位で行われる。２ライン目以降のデコード処理においてデータバッファｂｕｆＤには、処理対象のラインの圧縮符号化データのうち先行ラインについてのデコード処理にて読み出されたものが格納されている。例えば、スプライト１の２ライン目が処理対象である場合は、図４に示すように、データバッファｂｕｆＤには、アドレス＃２の記憶領域から読み出した圧縮符号化データのうち１ライン目のデコード処理にて使用されなかった部分（すなわち、２ライン目の先頭部分）が格納されており、スプライト２の２ライン目が処理対象である場合は、図５に示すように、データバッファｂｕｆＤにはアドレス＃（Ｘ＋４）の記憶領域から読み出した圧縮符号化データのうち１ライン目のデコード処理にて使用されなかった部分（すなわち、２ライン目および３ライン目の圧縮符号化データ）が格納されている。つまり、図６のステップＳＢ１００の処理は、先行ラインについてのデコード処理にて読み出し済みの圧縮符号化データをＥｎｃＦＩＦＯに書き込み、その圧縮符号化データをスプライトパターンメモリ４０１から再取得することを回避するための処理である。
【００３４】
次いで、制御部３０３は、フラグバッファｂｕｆＦに格納されているライン境界フラグの値が１であるか否かを判定し（ステップＳＢ１１０）、その判定結果がＹｅｓである場合には、図６に示すように、前述したステップＳＡ１６０以降の処理を実行する。この場合、スプライトパターンメモリ４０１からデータブロックの読み出しを全く行うことなく、処理対象ラインのデコード処理が行われることになる。２ライン目以降のデコード処理においてフラグバッファｂｕｆＦに格納されているライン境界フラグの値が１であるということは、ステップＳＢ１００にてＥｎｃＦＩＦＯに書き込んだ圧縮符号化データにはライン境界が存在していること（すなわち、処理対象ラインについてのデコードに必要な圧縮符号化データの全てが含まれていること）を意味している。したがって、スプライトパターンメモリ４０１からデータブロックの読み出しを全く行うことなく、処理対象ラインのデコード処理を行っても問題は生じない。また、このようにすることで、データバッファｂｕｆＤに処理対象ラインのデコードに必要な圧縮符号化データの全てが格納されている場合には、スプライトパターンメモリ４０１にアクセスすることなくそのデコードを行い、デコード処理の効率を向上させることができると期待される。これに対して、ステップＳＢ１１０の判定結果が“Ｎｏ”である場合には、制御部３０３は、アドレスバッファｂｕｆＡに格納されている格納先アドレスを１だけ歩進させ（ステップＳＢ１２０）、その後、前述したステップＳＡ１１０以降の処理を実行する。以降、ラインカウンタの値が、表示対象として指定されたスプライト画像のライン数に達するまで図６に示すデコード処理が実行され、当該スプライト画像の２ライン目以降の各ラインについてのデコード結果が得られるのである。
【００３５】
例えば、スプライト２が表示対象である場合、ライン２についてのデコード処理においてはフラグバッファｂｕｆＦには１が格納されている（図５参照）。その結果、ステップＳＢ１１０の判定結果は“Ｙｅｓ”になり、図５に示すように、データバッファｂｕｆＤに格納されている圧縮符号化データのみを用いて当該スプライト２のライン２についてのデコードが行われる。これに対して、スプライト１が表示対象である場合、ライン２についてのデコード処理においては、フラグバッファｂｕｆＦには０が格納されている（図４参照）。その結果、ステップＳＢ１１０の判定結果は“Ｎｏ”になり、図４に示すように、アドレスバッファｂｕｆＡの格納内容はアドレス＃３に更新され（ステップＳＢ１２０）、その後、ステップＳＡ１１０以降の処理が順次実行される。
以上が２ライン目以降についてのデコード処理である。
【００３６】
以上説明したように、本実施形態によれば、図２（Ｂ）に示す格納態様に比較してスプライトパターンメモリ４０１におけるブランク空間の発生を抑えつつ、スプライト画像の圧縮符号化データのデコード結果をライン単位で取得することが可能になる。また、本実施形態では、第Ｎ（Ｎ＝１・・・）ライン目についてのデコード処理にて後続ラインについての圧縮符号化データが読み出された場合には、その圧縮符号化データをデータバッファｂｕｆＤに格納しておくことで、スプライト画像一つ当たりのスプライトパターンメモリ４０１との間のデータ転送回数を削減し、スプライト描画性能をさらに向上させることができる。
【００３７】
（Ｃ：変形）
以上、本発明の一実施形態について説明したが、この実施形態に以下に述べる変形を加えても勿論良い。
（１）上述した実施形態では、メインデコーダ３０５Ａの他にサブデコーダ３０５Ｂを設け、データバッファｂｕｆＤに格納されている圧縮符号化データの復号をサブデコーダ３０５Ｂに行わせた。これにより、メインデコーダ３０５Ａを用いたデコード処理を妨げることなく、上記圧縮符号化データにライン境界が存在するか否かを判定することを可能になるのであるが、スプライトパターンメモリ４０１の各記憶領域に格納されている圧縮符号化データに０または１つのライン境界しか存在しない場合には、データバッファｂｕｆＤに格納されている圧縮符号化データにライン境界が存在するか否かを判定する必要はなく、サブデコーダ３０５Ｂを設ける必要はない。この場合は、図５に示すデコード処理においてステップＳＢ１１０の処理を行う必要もない。また、上述した実施形態では、ライン境界を含む圧縮符号化データがそのライン境界の前後の各ラインについてのデコード処理で重複して読み出されることを回避したが、このような重複読み出しの回避を行わないようにしても勿論良い。
【００３８】
（２）上述した実施形態では、図１に示す構成の画像処理ＬＳＩ３００に本発明を適用したが、記憶部３０２、制御部３０３、パターンメモリＩ／Ｆ３０４、およびデコーダ３０５を組み合わせて画像処理ＬＳＩ（画像処理装置）を構成し、この画像処理装置の後段にレンダリングプロセッサ等を接続して図１に示す構成となるようにしても勿論良い。また、上記各態様の画像処理ＬＳＩにスプライトパターンメモリ４０１を組み込んでも勿論良い。
【００３９】
（３）上述したデコード処理（図３および図６に示すデコード処理）を画像処理ＬＳＩの制御部（ＣＰＵ）に実行させるソフトウェア（例えば、画像処理ＬＳＩ用のファームウェア）をＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）などのコンピュータ装置読み取り可能な記録媒体に書き込んで配布しても良く、インターネットなどの電気通信回線経由のダウンロードにより配布しても良い。
【符号の説明】
【００４０】
３００…画像処理ＬＳＩ、３０１…ＣＰＵＩ／Ｆ、３０２…記憶部、３０３…制御部、３０４…パターンメモリＩ／Ｆ、３０５…デコーダ、３０５Ａ…メインデコーダ、３０５Ｂ…サブデコーダ、３０６…スプライトレンダリングプロセッサ、３０７Ａ，３０７Ｂ…ラインバッファ、３０８…表示コントローラ、３０９…画像データコントローラ、３１０…モニタＩ／Ｆ、４０１…スプライトパターンメモリ、４０２…ＣＰＵ、４０３…モニタ。
【図１】
2010276722.tif 000003
【図２】
2010276722.tif 000004
【図３】
2010276722.tif 000005
【図４】
2010276722.tif 000006
【図５】
2010276722.tif 000007
【図６】
2010276722.tif 000008