【発明の詳細な説明】
スプライトレンダリングプロセッサを制御する方法
この特許文書の開示の一部分は、版権保護を受ける資料を含んでいる。版権の
所有者は、米国特許商標庁の特許ファイル又は記録に現れるようにこの特許文書
又は特許開示を誰かがファクシミリ再現することに異議を唱えるものでないが、
その他全ての版権権利は何であれ保持されるものとする。クロスレファレンス
本発明は、次のものに関連している。
本発明と同日に出願された発明者マイカル氏等による「オーディオ/ビデオコ
ンピュータアーキテクチャ(AUDIO/VIDEO COMPUTER ARCHTECTURE)」と題するPC
T特許出願第PCT/US92/09349号、及び同じタイトル、同じ発明者
及び同じ日に出願された米国特許出願第07/970,308号;
本発明と同日に出願された発明者マイカル氏等による「マルチライン補間を用
いたビデオディスプレイの解像度増強(RESOLUTION ENHANCEMENT FOR VIDEO DISP
LAY USING MULTI-LINE INTERPOLATION)」と題するPCT特許出願第PCT/U
S92/09342号、及び同じタイトル、同じ発明者及び同じ日に出願された
米国特許出願第07/970,287号;
本発明と同日に出願された発明者ダビッドC.プラットによる「三次元音響を
発生する方法(METHOD FOR GENERATING THREE DIMENSIONAL SOUND)」と題するP
CT特許出願第PCT/US92/09348号、及び同じタイトル、同じ発明
者及び同じ日に出願された米国特許出願第07/970,274号;
本発明と同日に出願された発明者マイカル氏等による「スプライトレンダリン
グプロセッサを制御する方法(METHOD FOR CONTROLLING A SPRYTE RENDERING PRO
CESSOR)」と題するPCT特許出願第PCT/US92/09350号、及び同
じタイトル、同じ発明者及び同じ日に出願された米国特許出願第07/970,
278号:
本発明と同日に出願された発明者ニードル氏等による「改良されたコーナー計
算エンジン及び改良された多角形ぺイントエンジンを有するスプライトレンダリ
ングシステム(SPRYTE RENDERING SYSTEM WITH IMPROVED CORNER CALCULATING EN
ZINE AND IMPROVED POLYGON-PAINT ENZINE)」と題するPCT特許出願第PCT
/US92/09462号、及び同じタイトル、同じ発明者及び同じ日に出願さ
れた米国特許出願第07/970,289号;
本発明と同日に出願された発明者マイカル氏等による「水平帰線消去中にクル
トを更新するための方法及び装置(METHOD AND APPARATUS FOR UPDATING A CLUTD
URING HORIZONTAL BLANKING)」と題するPCT特許出願第PCT/US92/0
9460号、及び同じタイトル、同じ発明者及び同じ日に出願された米国特許出
願第07/969,994号;
本発明と同日に出願された発明者マイカル氏等による「イメージデータを処理
するための改良された方法及び装置(IMPROVED METHOD AND APPARATUS FOR PROCE
SSING IMAGE DATA)」と題するPCT特許出願第PCT/US92/09461
号、及び同じタイトル、同じ発明者及び同じ日に出願された米国特許出願第07
/970,083号;並びに
本発明と同日に出願された発明者ニードル氏等による「プレーヤバス装置及び
方法(PLAYER BUS APPARATUS AND METHOD)」と題するPCT特許出願第PCT/
US92/09384号、及び同じタイトル、同じ発明者及び同じ日に出願され
た米国特許出願第07/970,151号。
これらの関連特許出願は全て本発明と共通に譲渡されそしてその全体を参考と
してここに取り上げるものである。発明の分野
本発明は一般に像データ処理に係り、より詳細には、行先グリッドにマップさ
れてレンダリングされるべきソース像において陰影付け、ハイライト処理及び他
の機能に関連したファンクションを実行するようにスプライト(spryte)エンジン
を制御するための技術に係る。先行技術の説明
最近、可視像の表現及び表現処理は、主としてアナログ形態から本質的にデジ
タル形態へと移行している。像データのデジタル処理には独特の問題が生じてい
る。これらの問題には、デジタル像データに対して充分な記憶容量を与えて許容
できるデータスループットレートを維持することが含まれる。更に、デジタルで
形成される像、特に、アニメーション像に現実的な感覚を形成するという問題が
ある。
デジタルビデオゲームシステムやシュミレータ等により形成される像の視覚的
な現実感は、陰影付けやハイライト処理等の特殊な効果を与えることにより向上
される。例えば、飛行機の像を晴れた日に平坦な地域の上を飛行する状態で表示
すべきときには、地域の像内に飛行機の陰影像を形成することにより全体的場面
の現実感が増強される。影が投影される地域領域が完全に黒くされるのではなく
曇った状態にされたときにはその効果がより現実味を帯びる。観察者は、たとえ
地域が飛行機の影で覆われたとしてもその本質の部分を見続ける。この効果は、
「陰影付け」と称する。
現実感を与える効果の別の例がハイライト処理である。起爆装置が飛行機の付
近で爆発を生じて表示されると仮定する。飛行機像の輝度を瞬間的に増加し(ハ
イライト処理し)、爆発による光が飛行機の胴体から反射しているという印象を
作り出すことによって視覚的な現実感が増強される。この効果は、飛行機の異な
る部分(例えば、操縦席、胴体、翼)間にある種の輝度及び/又はカラー関係が
維持されたときにより現実味を帯びる。
セガの「ジェネシス(Genesis)」のような家庭用ゲームシステムは、オンザフ
ライ(リアルタイム)で陰影及びハイライト効果を作り出すための2ソース像融
合システムを有している。陰影効果が所望されるときには、第1ソースの「タイ
ル」又は「スプライト(sprite)」(飛行機の影領域を表すビットマップデータの
長方形ブロック)に、その下の地域を表す第2ソースのタイルがオーバーレイさ
れる。第1(影)のスプライト強度が非ゼロであるピクセル位置ごとに、第2タ
イルにおける対応地域強度を表すデジタル信号が半分にカットされ、これにより
「調光」効果を生じる。次いで、地域タイルのこの調光バージョンがビデオ像の
一部分として出力される。(しかしながら、この調光された像データはメモリに
記憶されない。)
ハイライト効果を作り出すために、セガの「ジェネシス」システムは、飛行機
のスプライト内の全てのピクセルの陰影値を2で除算しそして最大陰影値の半分
を各ピクセルに加算する。これは、飛行機の部分間に相対的な陰影関係を保持し
ながら各々をより明るくする。飛行機タイルの増強されたバージョンは、次いで
ビデオ信号の一部分として出力されるが、セーブはされない。セガの「ジェネシ
ス」システムにおいてはタイルを同時に陰影付け及びハイライト処理することは
できない。
上記の陰影付け及びハイライト処理技術は用途が限られている。光学的に複雑
なアニメーションのシーンには相当に多数が必要とされる。例えば、王国の騎士
(Knights of the Realm)の種類のゲームにおけるシーンを考える。英雄が協会の
アーチ状の部屋に入る。部屋の周りには異なる高さ、色、透明度、形状及び角度
のステンドグラスがある。悪漢はステンドグラスの窓を通して見ながら、ステン
ドグラスの窓に対してある角度で部屋の外側から近づく。このシーンは、二次元
の窓(以下、観察平面)を通して投影されるか又はそこに表示される。現実感を
付加するために、観察平面(ゲームの遊戯者がシーンを見るところの窓)の位置
が、英雄のまわりをゆっくりと回転され、表示される二次元シーンに対して三次
元的な質が与えられる。
このようなシーンをリアルにレンダリングするには、外部の光がステンドグラ
スの窓を種々の角度で観察平面へと通過するときにその光の変化を考慮しなけれ
ばならない。又、内部の光がステンドグラスの窓から観察者平面へ向かって反射
することも考慮しなければならない。更に、悪漢がステンドグラス窓の1つに石
を投げた場合には、穴の視覚効果が、除去された窓材料に取って代わらねばなら
ない。悪漢が窓に泥を投げつけた場合には、その影響を受ける窓の領域の透明度
及び色がそれに応じて変化しなければならない。
これまでの入手できる家庭用ゲームシステム(例えば、任天堂エンターテイメ
ントシステム、セガ・ジェネシス)は、このような光学的に複雑なアニメーショ
ンシーンをリアルタイムで処理することができない。シリコン・グラフィックス
の「アイリス」システムのような幾つかの市販の像形成システムは、光学的な複
雑さをリアルタイムで処理するメカニズムを提供するが、これは、高速コンピュ
ータ、大型メモリ及び特殊な特注回路を使用することによってのみ可能となる。
それ故、これらの市販のシステムは、非常に高いコストでしか入手できない。
これまで、複雑なアニメーションシーンをリアルにレンダリングする低コスト
システムは、入手できない。
デジタルグラフィック処理も、像データを表すデジタル信号を1つの組織フォ
ーマットから別のフォーマットへ物理的に変換することに基づいている。変換さ
れた像データの一部分又は全部が適当なディスプレイ手段(例えば、陰極線管や
液晶ディスプレイ)に表示される。
多くの場合に、デジタル像データを1つのフォーマットから別のフォーマット
へ比較的高い速度で変換することが所望される。これは、表示される像における
アニメーションの感覚を形成すると共に、対話式システムの場合にはユーザ入力
に対するリアルタイム応答の感覚を形成するために行われる。このような高速変
換は、リアルタイムデジタルグラフィック処理と称する。このリアルタイムデジ
タルグラフィック処理は、飛行又は他のシュミレーションシステムや、対話式の
ゲームシステム等に実際上有用である。
リアルタイムデジタルグラフィック処理に対してしばしば要求される1つのフ
ァンクションは、ソース像を行先表面上にマッピングすることである。通常は、
ソース像は、1つ以上のピクセルを備え、その各々は特定の色又は影で埋められ
る。マッピングファンクションは、ソースエリアから行先エリアへのピクセルの
1対1のコピーである。或いは又、マッピングファンクションは、サイズの変換
及び/又は形状の変更(例えば、スキュー)及び/又はある角度の回転プラス色
又は像輝度の変化を含んでもよい。
例えば、リアルタイムの軍隊ゲームにおいてシュミレーションされたシーンを
考える。飛行機は、観察者に近づくか又は遠ざかって飛行するように見えるよう
ディスプレイパネルに表示されねばならない。観察者は、リアルタイムコントロ
ーラ(例えば、ジョイスティック)によってディスプレイ上の動作の少なくとも
一部分を制御する。飛行機が観察者に向かって飛行するように見えるべき場合に
は、観察者からの見掛け上の距離が減少するにつれて、その像が次第に大きくな
る。逆に、飛行機が観察者から遠ざかって飛行するよう見えるべき場合には、観
察者からの距離が増加するにつれて、その像が次第に小さくなる。更に、飛行機
がその飛行中にローリングを行う場合には、その像を回転しなければならない。
飛行機が飛行するときに起爆装置が飛行機の付近で点火した場合には、飛行機
本体の表示輝度を瞬間的に増加して、爆発による光が飛行機の胴体から反射する
ところをシュミレーションしなければならない。
飛行機は、大きな泡状の操縦席の窓やその機体の一部分の穴のような透明な部
分を有してもよく、穴は、発射物が当たることによって突然形成されたものであ
る。このような場合に、飛行機がバックグランドシーンの前方を飛行するときに
操縦席の窓及び/又は機体の穴を通して見えるバックグランドシーンを表示する
ことが望ましい。
この形式のアニメーション化されたリアルタイムシーンは、多数の方法で表示
手段に形成することができる。
暴力的な解決策では、アニメ化されたシーンデータの各フレーム全体を別々に
形成し、その形成されたフレームデータを高速メモリ(例えば、ビデオRAM)
に記憶し、そして各完全なフレーム(バックグランド及び飛行機)を適当なフレ
ーム速度で表示手段へ転送する。この暴力的な解決策は、メモリスペースを浪費
すると共に、像データの順次フレームを発生する処理回路から高速性能を要求す
る。
更に良好な解決策は、スプライトペインティングの概念に基づくものである。
1つのメモリエリアは不変のバックグランド像データを記憶し、そして第2のメ
モリエリアは飛行機及び他の移動物体の像データを記憶する。各表示されるフレ
ームと共に、飛行機の像が第2のメモリエリアから第1メモリエリアのバックグ
ランド像にマッピングされる。マッピングファンクションは、時間に伴うサイズ
の拡大又は縮小及び回転を与えるように時間と共に変化する。又、マッピングフ
ァンクションは、近傍の爆発によるもののような種々の照明状態をシュミレーシ
ョンするために色及び/又は輝度の変化も与える。
理想的には、いかなるソース像も取り入れて、任意の程度のサイズの拡大又は
縮小を含めてそれをマッピングすることができねばならない。又、マッピングさ
れたコピーを、回転及び/又は形状歪(スキュー)を伴ったり伴わなかったりし
て行先グリッドに投影することができねばならない。更に、マッピングされたコ
ピーを、色の変更を伴ったり伴わなかったりして行先グリッドに投影することも
できねばならない。
像データをこのように変換することのできる高性能の電子コンピュータシステ
ム、例えば、上記したシリコン・グラフィックスのIris(登録商標)システ
ムが入手できる。このようなシステムは、複雑なソフトウェア制御のデータ変換
及び1つのメモリ領域から別の領域への像データの大量転送に基づいている。汎
用のコンピュータユニットは、全ての計算をサポートするというタスクが課せら
れる。不都合にも、これらのコンピュータシステムは、コストが高く、回路のサ
イズが大きく、複雑であり及び/又は像のレンダリング速度が遅いという欠点に
悩まされている。
この業界では、1つ又は幾つかの集積回路(IC)チップにおいて低コストで
実施することができ、しかも、高速度の複雑な像変換を実行することのできるコ
ンパクトな像レンダリングシステムが要望されている。
又、より高いレベルのルーチンにより呼び出すことのできる複数のソフトウェ
アルーチン又はプリミティブを有するこのような像レンダリングシステムを論理
的に基本的に自明な仕方で制御して、像レンダリングシステムの細部の複雑さを
隠し得るようにすることも要望される。又、このようなルーチンは、像レンダリ
ングシステムの意図されない誤用から保護しなければならない。発明の要旨
本発明によれば、スプライト制御ブロックのおおまかに記述したリンクされた
リストがメモリに準備され、スプライトレンダリングエンジンによって横断され
る。各スプライト制御ブロックは、ディスプレイバッファへ各スプライトをレン
ダリングするのを制御するもので、対応するスプライトのソースデータを指すポ
インタ、行先四辺形に対する位置及び遠近仕様、スプライト像ソースデータにお
いて実行すべき操作に対する制御ワード、及び多数の使用可能なフォーマットの
どれにスプライト像ソースデータがパックされるかの指示といった情報を含んで
いる。又、スプライト制御ブロックは、新たなスプライト像ソースデータか又は
一定データかのいずれかを用いて既存のディスプレイデータの一部分を変更する
ようにスプライトレンダリングエンジンを制御することもできる。リンクされた
リストがいったん準備されると、特定のメモリマップハードウェアレジスタに幾
つかの値を書き込み、そしてそのハードウェアによって確認されたアドレスに、
スプライトレンダリング動作を開始するコマンドとしてダミーデータを書き込む
ことにより、スプライトレンダリングエンジンを呼び出すことができる。図面の簡単な説明
以下、添付図面を参照し、本発明を、特定の実施例について詳細に説明する。
図1は、本発明が使用されるハードウェアシステムの主たる要素を示すブロッ
ク図である。
図2は、図1のアドレスマニピュレータの記号ブロック図である。
図3は、図2のアドレスジェネレータの一部分を示すブロック図である。
図4は、図3のスタックアドレスロジックのブロック図である。
図5は、図3の左アドレスパッドロジックのブロック図である。好ましい実施例の詳細な説明
ここに開示する実施例は、関連特許出願「オーディオ/ビデオコンピュータア
ーキテクチャ(AUDIO/VIDEO COMPUTER ARCHITECTURE)」;関連特許出願「像データ
を処理する改良された方法及び装置(IMPROVED METHOD AND APPARATUS FOR PROCE
SSING IMAGE DATA)」;及び関連特許出願「改良されたコーナー計算エンジン及
び改良された多角形ぺイントエンジンを有するスプライトレンダリングシステム
(SPRYTE RENDERING SYSTEM WITH IPROVED CORNER CALCULATING ENGINE AND IMPR
OVED POLYGON-PAINT ENGINE)」に開示されたようなハードウェアシステムにおい
て動作するよう意図されている。これらの出願は参考としてここに取り上げるも
ので、このような出願に開示されたハードウェアの説明はここでは繰り返さない
。しかしながら、以下に述べる幾つかの情報は、本発明を理解する上で有用であ
る。
I.全ハードウェアアーキテクチャ
図1は、ハードウェアシステムの主たる要素を示すブロック図である。このシ
ステムはCPU102を備え、これは、英国、ケンブリッジ、スワハム・バルベ
ックのアドバンスト・RISI・マシンズ・リミテッドにより製造されたARM
60 RISCプロセッサである。ARM60は、参考としてここに取り上げる
アドバンスト・RISC・マシンズの「ARM 60データシート」(1992
年)に記載されている。アドレスバス104は、アドレスマニピュレータチップ
106への入力として設けられている。このアドレスマニピュレータチップ10
6は、とりわけ、システムメモリへのDMA発生アドレスと、他のソースからの
アドレスとを与えるためのアドレスジェネレータと;Dバスアービタと;2つの
スプライトエンジンと;プレーヤバス、低速バス及び1組の外部プロセッサへの
インターフェイスとを備えている。アドレスマニピュレータチップ106は、左
メモリバンク108A及び右メモリバンク108Bを含むシステムメモリ108
のためのアドレスを発生する。このシステムメモリは32ビット巾であり、各3
2ビットワードの上位16ビットは左メモリ108Aに入れられそして下位16
ビットは右メモリ108Bに入れられる。CPU102はシステムメモリをワー
ドでのみアドレスするが、アドレスマニピュレータチップ106は、メモリ全体
の各半分を独立してアドレスすることができる。アドレスマニピュレータチップ
106は、アドレス及び制御信号を各々LAバス110及びLCTLバス112
を経て左メモリ108Aへ供給し、そしてアドレス及び制御信号を各々RAバス
114及びRCTLバス116を経て右メモリ108Bへ供給する。
システムメモリ108は、1又は2「セット」のビデオRAM(VRAM)と
0、1又は2セットのDRAMとを含むことができる。1セットのVRAMは、
512kバイトの左メモリ及び512kバイトの右メモリを含み、全部で1メガ
バイトとなる。1セットのDRAMは、システム構成に基づき、1、4又は16
メガバイトの長さとなる。VRAMと同様に、各セットの半分はメモリの左バン
クに配置されそして他の半分はメモリの右バンクに配置される。しかしながら、
VRAMとは異なり、DARMは常に全32ビットワードでアクセスされる。シ
ステムメモリ108は、ビッグ・エンディアン(big-endian)と考えられる。
全ての左右のバンクシステムメモリセットは、アドレスマニピュレータチップ
106により発生された各左右の半アドレスを受け取る。又、全ての左バンクセ
ットは、左半分のデータバスD(3L:16)118に両方向接続されたデータ
ポートも備えている。同様に、右バンクメモリの全セットのデータポートは、右
半分のデータバスD(15:0)120に両方向接続される。又、VRAMセッ
トは、S(31:0)バス122に両方向接続された直列ポートSも有する。
又、アドレスマニピュレータチップ106は、ライン128を経てCPU10
2と制御信号をやり取りし、そして左右のデータバス118及び120と両方向
接続されている。又、アドレスマニピュレータチップ106は、CPU ROM
132、バッテリバックアップSRAM及び/又は種々のフロントパネルデバイ
ス134のような装置をアクセスするための8ビットバスである低速バス130
にインターフェイスする。又、付加的なCPUアクセス可能なRAMをサポート
できると共に、FMサウンドジェネレータデバイスもサポートできる。低速バス
130は、アドレスバス104の14ビットA(16:2)、8ビットデータバ
スPD(7:0)、PDRDB読み取りストローブ、PDWRB書き込みストロ
ーブ、及び種々の制御ラインを含む。PDRDB及びPDWRBは、8ビット巾
のCPU ROM132をアクセスするための2つの下位アドレスラインに搬送
するのに使用される。
又、アドレスマニピュレータチップ106は、プレーヤバス136にもインタ
ーフェイスし、このバスは、ジョイスティック、3−Dグラス、ハンドコントロ
ーラ及びステアリングホイール、並びにゲームサーバカートリッジのような種々
のユーザ入力/出力装置へシステムを接続するのに使用される。更に、アドレス
マニピュレータチップ106は、制御バス138にも接続され、これは、図1の
システムの他のプロセッサと制御信号をやり取りするのに使用される。
図1のシステムは、更に、オーディオ/ビデオプロセッサチップ140を備え
ており、このチップは、Dバスの両半部分118及び120に両方向接続される
と共に、32ビット巾のSバス122からデータを受け取るように接続される。
又、オーディオ/ビデオプロセッサチップ140は、制御バス138にも接続さ
れると共に、システムアドレスバス104からアドレスビットA(15:2)を
受け取るように接続される。一般に、オーディオ/ビデオプロセッサチップ14
0は、ディスプレイ経路回路、オーディオサブシステム、タイマー、割り込みコ
ントローラ、拡張バスインターフェイス、及びウオッチドッグタイマーを備えて
いる。拡張バスインターフェイスは拡張バス142へ接続し、このバスは、制御
ライン144と、マルチプレクスされたアドレス及び及びデータ情報を搬送する
8ビットバス146とを備えている。拡張バス142は、CD/CD−ROMプ
レーヤ148及びオプションの拡張バスRAM150のような装置をサポートす
る。CD/CD−ROMプレーヤ148は、図1のシステムのハウジングに組み
込まれ、ソフトウェア(ここに述べるルーチンを含む)をCPU102において
実行するようにシステムへロードするための一次メカニズムを備えている。
オーディオ/ビデオプロセッサ140は、オーディオライン157、制御ライ
ン156及び12ビットADバス158を経てオーディオ/ビデオ出力回路15
2と通信する。このオーディオ/ビデオ出力回路152は、一般に、ビデオタイ
ミング及び出力ビデオ波形を発生する。これは、複合ビデオ出力、標準テレビジ
ョンに接続するためのRF出力、SVHS出力及び個別の左右のオーディオ信号
出力を与える。
又、図1のシステムは、圧縮解除の共プロセッサ166も備え、これは、制御
バス138、システムアドレスバス104のビットA(15:2)及びDバスの
両半部分118及び120に接続される。圧縮解除の共プロセッサ166は、C
D/CD−ROMプレーヤ148又は別のソースからシステムへロードされたソ
フトウェアを圧縮解除するのに使用される。
アドレス0からスタートして0、8、16又は32kバイトまで延びるシステ
ムメモリのセクションは、SYSRAMとして定義される。サイズの選択はソフ
トウェアによって行われる。アドレスマニピュレータチップ106は、ユーザソ
フトウェアがSYSRAMへ書き込んだりそこから読み取ったりするのを防止す
る保護機能を備えている。CPU12のスーパーバイザーモードで実行されるソ
フトウェアのみがSYSRAMへ書き込みを行う。
全てのシステムアドレス及びタイミング信号は、アドレスマニピュレータチッ
プ106によって発生される。CPU102又はオーディオ/ビデオプロセッサ
140からシステムメモリへアクセスするいかなる要求も、アドレスマニピュレ
ータチップ106に通される。
SYSRAMの割り当てを除き、そしてビデオRAMのSポートからシフトさ
れて出されると予想されるデータ構造体に対する1メガバイトの限界(物理的な
VRAM境界があるためにのみ存在する)を除いて、ソフトウェアアプリケーシ
ョンの種々の部分がシステムメモリに配置される場所における制約は最小にされ
る。1メガバイトのシステムメモリ(VRAM)のみをもつ最小のシステムにお
いては、下位の64kの32ビットワードは、CPU命令及びデータを含む。次
の300kバイトは、圧縮解除された8ビットの像ソースデータを含み、そして
次の172kバイトは、オーディオ及び他のデータを含む。次の150kバイト
は、1つのフレームバッファに対して割り当てられ(320x240ピクセルx
2バイト/ピクセル)、そして最後の150kバイトは、第2のフレームバッフ
ァに対して割り当てられる。
これらフレームバッファは、偶数データラインが左メモリバンクに存在しそし
て奇数データラインが右メモリバンクに存在するように構成される。ピクセルは
次のように分割された16ビット値として表される。即ち、5ビットは赤いペン
の番号を表し、5ビットは緑のペンの番号を表し、4ビットは青いペンの番号を
表し、そして2ビットはサブ位置ビットH及びVである。別のデータフォーマッ
トにおいては、H又はVビットの1つが第5の青いペン番号のビットと置き換え
られる。ピクセル値がディスプレイ経路を下流へ送信されるときには、カラール
ックアップテーブルが、各4又は5ビットのペン番号を、対応するカラーDAC
の8ビット値に変換する。カラールックアップテーブルは、各走査線の前に更新
することができる。ピクセルは、320x240ピクセル/フレームという低い
解像度で記憶され、そしてH及びVサブ位置ビットは、指定のカラーが実際に配
置されると考えられるのは低解像度ピクセルエリアのどの象限かを指示する。
図2は、図1のアドレスマニピュレータチップ106の主たるファンクション
ユニットを示す記号ブロック図である。これは、内部の32ビットMDTデータ
バス202、及び内部の32ビットMADRアドレスバス204を備えている。
MDTデータバス202は、バッファ222を経て左右の半システムDバス11
8、120に接続される。又、チップ106は、CPUインターフェイスユニッ
ト206も備え、これは、Aバス104を経てCPU発生アドレスを受け取ると
共に制御ライン128を経てCPU102と通信するように接続される。制御ラ
イン128の中で、MCLK信号がCPUインターフェイス106によりCPU
102のMCLK入力(CPU102のメモリクロック入力)へ送られる。アド
レスマニピュレータ106は、低速アクセスに対してCPUサイクルを伸長する
と共にCPU102を長時間スリープ状態に入れるように、このクロック信号の
波形を制御する。ARM60のCPUは、最小のクロック入力周波数を維持する
必要のない静的な部分である。
CPU102によって発生されたアドレスは、Dバスアービタ210がCPU
102に対してDバス及びアドレスジェネレータ208の制御権を許可するとき
に、CPUインターフェイス206によりアドレスジェネレータ208へ通され
る。アドレスジェネレータ208は、A(31:16)からの上位アドレスビッ
トをMADRバス204へ駆動し、そこでアドレスデコーダ212によってデコ
ードされる。このアドレスデコーダ212は、これらのビットから、所望のアド
レスがメモリマップハードウェアレジスタを表すかどうか判断し、その場合には
適当な選択ラインを作動して、図1のシステムにおける適当なハードウェア要素
に通知する。このハードウェア要素は、次いで、システムアドレスバス104の
ビットA(15:2)に応答して所望のファンクションを実行する。所望のアド
レスがシステムメモリ108の一部分であることをアドレスデコーダ212が判
断すると、アドレスジェネレータ208にそのように通知する。アドレスジェネ
レータ208は、LCTL及びLAバス112及び110と、RCTL及びRA
バス116及び114とに適当なアドレス及び制御信号を発生する。
アドレスジェネレータ208は、CPUからCPUインターフェイス206を
経てアドレスを受け取ると共にスプライトエンジン214からもアドレスを受け
取る。又、アドレスジェネレータ208は、DMA制御情報のスタックを維持し
そしてDMA転送のためのアドレスを発生することができる。Dバスアービタ2
10は、Dバスを経ての転送に対し種々の装置からの要求を受け取り、それらを
仲裁し、そしてどの要求に応じるべきかをアドレスジェネレータ208に指示す
る。たとえシステムメモリの2つの半部分がアドレスされそして個別に制御され
たとしても、一度に1つのマスターしか動作しない。勝利した要求者がDMA転
送を要求した場合には、Dバスアービタ210は、その要求された転送に対して
所望の制御情報がDMAスタックのどこに見つかるかを指示するDMAグループ
アドレスをアドレスジェネレータ208に供給する。実際に、DMAグループア
ドレスは、特定のDMAチャンネルを識別する。DMAインターフェイスは、ア
ドレスマニピュレータチップ106内で完全に取り扱われる。
スプライトエンジン214は内部MDTデータバス202に接続され、そして
スプライトエンジン214の機能及び動作は以下に詳細に説明する。
又、アドレスマニピュレータチップ106は、プレーヤバス136及び低速バ
ス130に各々インターフェイスするためのプレーヤバスインターフェイス21
6及び低速バスインターフェイス218も備えている。これらはここに詳細に説
明する必要はなかろう。
Dバスアービタ210は、システムメモリ108のDバス及びDポートへアク
セスするための種々の要求者からの要求を受け取る。Dバスアービタ210は、
特定の要求者にバスを許可すると、その要求者に確認信号を送信する。Dバスア
ービタをここに詳細に説明する必要はないが、CPU102は、システムメモリ
108のDポートへのアクセスに対する仲裁において意図的に最も低い優先順位
が与えられていることに注意されたい。というのは、図1のアーキテクチャーで
は、CPU102は、ハウスキーピング機能のみを実行すると考えられるからで
ある。システム内の全ての他のファンクションユニットは、CPUよりもメモリ
に密接に接続されていて、それらのファンクションを高速度で実行することがで
きる。これまで、CPUに対話型マルチメディアシステムの多数の詳細なファン
クションを実行させる要求は、システムの性能及び現実感を制限するか、強力で
且つ高価なCPUの使用を必須とするか、或いはその両方である。
II.スプライト操作サブシステム
スプライトエンジン214(図2)は、上記の「改良されたコーナー計算エン
ジン及び改良された多角形ペイントエンジンを有するスプライトレンダリングシ
ステム」及び「像データを処理するための改良された方法及び装置」と題する関
連特許出願に詳細に説明されている。これらの説明を繰り返さないが、ここでは
従来の像形成システムは「スプライト(sprite)」の概念に関して構築されている
が、ここに述べる実施例は、むしろ「スプライト(spryte)」を参照することに注
目するのが有用である。そのスペルの相違は意図的である。従来の「スプライト
(sprite)」は、像データの長方形エリアで構成され、従来のスプライトの全ての
走査線は同じ長さを有している。一方、「スプライト(spryte)」は、ここでは、
垂直(仮説の)スプライト縁線からその右へと延びる水平走査線の編集であって
各走査線は多数の相次ぐソースピクセルを表すデータを含むと定義される。各ス
プライト走査線の長さは、EOL(線の終わり)終了コード又は他の適当な手段
によって個々に制御される。スプライト縁線の頂点は、スプライトコーナー位置
によって定義される。1つのスプライトを全体的に定義する水平線の総数は、ス
プライト線カウントによって与えられる。スプライトは、ピクセルをもたない走
査線を含むことができ、スプライト内の特定のピクセルは、透明(トランスパレ
ント)として指示することができる。それ故、実際には、スプライト(spryte)は
所望のいかなるサイズも有するとして考えることができる。
III.アドレスジェネレータ208
図3は、アドレスジェネレータ208(図2)の一部分のブロック図である。
図4は、スタックアドレスロジック336(図3)のブロック図であり、そして
図5は、左右のアドレスパッド論理ユニット345、353(図3)のブロック
図である。これらのユニットは、上記の特許出願「オーディオ/ビデオコンピュ
ータアーキテクチャ」に詳細に示されており、ここでは繰り返し説明しない。し
かしながら、CPUで発生されたアドレス及びスプライトエンジンから発せられ
たアドレスは、マルチプレクサ316の各入力ポートを経てメモリ108へ送ら
れる。他の全てのシステムメモリアクセスは、DMAスタック312を用いてD
MAにより行われる。
DMAスタック312における128個の22ビットレジスタは、グループに
編成され、各グループは、各DMA「チャンネル」を制御するのに必要な情報を
記憶する。各グループは、DMAスタック312内の各固定セットのアドレスに
配置され、そして各チャンネルは、特定のソース装置から特定の行先装置への転
送を制御するように予め定義される。テーブルIは、スプライトエンジンに使用
されるチャンネルに関するある情報を示している。
テーブルI
IV.スプライト制御ブロック(SCoB)
スプライトソースデータがスプライトエンジン214にいかに与えられるかを
説明する前に、スプライト制御ブロック(SCoB)として知られているデータ
構造体について説明するのが有用であろう。SCoBは、特定のスプライトに対
して実行されるべきハードウェア動作を制御する。スプライトエンジン214を
呼び出す前に、CPU102は、システムメモリ108においてこのようなSC
oBのリンクされたリストを用意し、そしてメモリマップレジスタをアドレスレ
ジスタ208にロードし、第1のSCoBがどこに見つかるかを指示する。
SCoBのデータ構造は、以下のテーブルIIに示すワードを含んでいる。
テーブルII
SCoBデータ構造 ビット数
名前 説明
32 FLAGS 分類されたフラグ。これは、スプライトレンダリングハ
ードウェアにより読み取られる最初のワードである。
(フラグビットは以下のテーブルIIIで詳細に述べる。)
24 NEXTPTR 処理すべき次のSCoBのアドレス。(フォーマットは絶対
的又は相対的)スプライトレンダリングは、1つ以上の
SCoBを有するリンクされたリストを経て進むことにより
行われる。第1ソーススプライトがそのSCoBにより定め
られた行先グリッドエリアにマップされてペイントされ
た後に、スプライトレンダリングエンジンは、次のSCoB
がもしあれば処理し、そしてそのソーススプライトをそ
の指定された行先表面にレンダリングする。リンクされ
たリストは、もし所望ならば、プロセスを繰り返せるよ
うに円形である。
24 SOURCEPTR スプライトとしてレンダリングされるべき像データのシ
ステムメモリ108におけるアドレス。
24 PIPPRT スプライトエンジン214のIPSユニットにロードされる
べきPen Index Palette(PIP)のシステムメモリ108にお
けるアドレス。
32 XPOS レンダリングされるべきスプライトの左上のコーナーの
行先グリッドにおける水平位置(640最大ピクセルフォー
マット)で、小数(非整数)位置定義部分を表す16ビ
ットを含む。
32 YPOS レンダリングされるべきスプライトの左上のコーナーの
行先グリッドにおける垂直位置(480最大ピクセルフォー
マット)で、16ビット小数部分を含む。
32 DX 第1スプライト行を走査して行先グリッドに再マップす
るときにソースピクセルのマップされた第1コーナーか
らソースピクセルのマップされた第2コーナーへの水平
位置増加(フォーマットは2つの16ビット半ワードで
あり、これらは整数の小数形態で12.20というよう
に表される)。
32 DY 第1のスプライト行を走査して再マップするときにソー
スピクセルのマップされた第1コーナーからソースピク
セルのマップされた第3コーナーへの垂直位置増加(1
2.20)。
32 LINEDX 第1のマップされたスプライト行の左上コーナーから第
2のマップされたスプライト行の左上コーナーまでの行
先グリッドにおける水平位置増加(16.16)。
32 LINEDY 第1ラインから第2への垂直位置増加(16.16)。
32 DDX スプライトの第1行がレンダリングされた後の各次々の
行に対するDXへの増加(12.20)。
32 DDY 第1ラインの後の各次々のライン処理に対するDYへの増
加(12.20)。
32 PPMPC PPMPコントロールワード(2つの半部分:16,16)
(テーブルIV参照)。
32 PREO 考えられる第1前段ワード。
32 PRE1 考えられる第2前段ワード。
上記のFLAGSワードのビットは、テーブルIIIに述べたように定義される
。これらのフラグビットは、スプライトレンダリングエンジン214の特定のフ
ェッチ及びレンダリング動作を制御する。データに特定の制御ビットは、ソース
データの前段ワードに見つけられる。
テーブルIII
FLAGSワード
ビット 名前 説明
B31 = SKIP セットされた場合は、このSCoBをスキップする。
B30 = LAST セットされた場合は、これは処理すべき最後のSCoBで
ある。
B29 = NPABS 1=NEXTPTRに対する絶対アドレス、0=相対アドレス。
B28 = SPABS 1=SOURCEPTRに対する絶対アドレス、0=相対アドレス
B27 = PPABS 1=PIPPTRに対する絶対アドレス、0=相対アドレス。
B26 = LDSIZE 4ワードのサイズ及び傾斜データをロードする。
(DX,DY,LINEDX,LINEDY)
B25 = LDPRS 2ワードの遠近(スキュー制御)データをロードする
(DDX,DDY)。
B24 = LDPPMP 新たなPPMP制御ワード(PPMPC)をPPMP制御レジスタに
ロードする。
B23 = LDPIP 新たなPIPデータをPIPにロードする。
B22 = SCoBPRE 前段位置。1=SCoBの終わり、0=ソースデータの開始。
B21 = YOXY XY値をシステムメモリアドレス値に変換し、それに対
応するデータをハードウェアに書き込む。
B20:B19=xx 指定済み。
B18 = ACW CW(時計方向)向きの行先ピクセルのレンダリングを
許す。
B17 = ACCW CCW向きの行先ピクセルのレンダリングを許す。
B16 = TWD 間違った方向に遭遇した場合に(CW-CCW)このスプライ
トのレンダリングを終了する。
B15 = LCE 2つのコーナー計算エンジンの動作を一緒にロックす
る(H変更において)。
B14 = ACE 第2のコーナー計算エンジンが機能するのを許す。
B13 = ASC スーパークリッピングを許す(ローカルスイッチは、
ASCALLとアンドされる)。
B12 = MARIA 1=全一致領域装填動作をディスエイブルし、行先ライ
ンフィラーへの命令として高速Munkee判断のみを使用
する。
B11 = PXOR 1=PPMP XORモードをセット。(加算器をディスエイブ
ルする間にA及びBソースをXORする。)
B10 = USEAV 1=PPMPCの"-AV"ビットを使用し、PPMP−致関数を制御
する。
B9 = PACKED 一次ソーススプライトタイプ、1=パック済み、0=完全
リテラル、(二次ソーススプライトは常に完全リテラ
ルである。)
B8:B7= DOVER D-Modeオーバーライド。00=IPSユニットにより発生さ
れたDビットを使用してCMUXの出力を選択する。01=
指定済み。10=CMUXのA入力を選択する。11=CMUXの
B入力を選択する。
B6 = PIPPOS B15P0S及びBOPOSにより以下になされるSCoB選択に代
わりPIP発生ビットをサブ位置ビット(出力PEN信号
のBO&B15)として使用する。
B5 = BGND 1=バックグランドスプライトタイプ。
B4 = NOBLK 1=ブラックスプライトタイプなし。
B3:BO= PIPA PIPアドレスビット。これらは、アンパッカーのBPP
(ビット/ピクセル)出力が5ビット巾未満であると
きに5びっと巾のPIPアドレス入力信号を詰めるのに
使用される。
PPMP制御ワード(PPMPC)は、2つの16ビット巾の半部分を有して
いる。一方の半部分は、CMUX選択制御ビット=0のときに使用され、そして
他方の半部分は、CMUX選択制御ビット=1のときに使用される。上半分のみ
のビットをテーブルIVに示すように定義する。下半分も同一の構造である。
テーブルIV
PPMPCワード
ビット 名前 説明
B31 = S1 第1の乗算器入力信号を選択する。0=IPN(ソースA)を
使用する。1=cFBデータ(ソースB)を使用する。
B30:B29=MS 第2の乗算器入力信号を選択する。0=MxF(ソースは
SCoB)、1=MUL(ソースはIPS)、2=IPNM(ソースはIPS)
3=xx(デアォールト値1又は0で乗算)。
B28:B26=MxF 乗算係数。0->は、1->8による乗算を意味する。
(MS=0の場合にのみ使用する。)
B25:B24=Dv1 倍率による第1除算。1=2で除算。2=4で除算。
3=+8。0=16で除算。
B23:B22=S2 二次入力信号のセレクタ。0=「加算器ポートBに値0
を付与」。1=AVワード(SCoBからの)を使用。
2=cFBD(ソースB)を使用。3=IPS出力(ソースA)を
使用。
B21:B17=AV 加算器の値。S2=1の場合に加算されるべき5ビット値
である。この5ビット信号は、USEAV=1の場合には、
一致制御ワードとしても使用される。
B16 =Dv2 後加算、第2除算器。0=1で除算。1=2で除算。
「加算値」を与えるのとは別に、AVビットは、USEAV=1のときに次の
二次ファンクションを果たす。この二次ファンクションをテーブルVに示す。
テーブルV
二次AVビットファンクション
ビット ファンクション
AVO = PMPPにおいて第2除算器の出力を反転しそして加算器の桁上げをセ
ットする。
AV1 = PMPPの第2一致サイドを下流に流れる信号に対し符号拡張ファンク
ションをイネーブルする(後に可能となるXOR)。
AV2 = ラップリミッタファンクションをディスエイブルする。(8ビット
加算器出力の5つのLSBを使用し、10進数で31より上又は10進数で
0より下をラップするおそれを無視する。)
AV3:AV4=第2サイド除算器値を次のように選択する。00=1で除算。01=2lで
除算。10=4で除算。11= (逆数)で除算。
又、SCOBCTL0と称する一般のスプライトレンダリングエンジン制御ワ
ードもある。これは、CPUによってのみロードされる。これらビットをテーブ
ルVIに示す。
テーブルVI
SCOBCTL0エンジン制御ワード
ビット 名前 説明
B31:B30= B15P0S PMPPの出力のためのB15 oPENセレクタ。(このビット
は、前表示補間回路によって使用されるビットを定義
するサブ位置として機能できる。)0=0、1=1、
2=xx、3=ソースデータと同じ。
B29:B28= BOPOS PMPPの出力のためのBO oPENセレクタ。(このビット
も、前表示補間回路によって使用されるビットを定義
するサブ位置として機能できる。)0=0、1=1、
2=PPMP一致、3=ソースデータと同じ。
B27 = SWAPHV 1=PPMPへエントリーする前にH及びVサブ位置をスワ
ップする。
B26 = ASCALL 1=スーパークリッピングファンクションを許す。
(マスターイネーブルスイッチ)
B25 = xx 指定済み。
B24 = CFBDSUB 1=cFBデータがPPMPソースとして選択されたときにス
プライトソース値に代わってcFBデータのH及びVサ
ブ位置ビットを使用する。
(注:CFBDse1=(S1=1) OR (S2=2))
B23:B22= CFBDLSB cFBD PPMP Blue LSBソース。0=0、1=cFBD[BO]、
2=cFBD[B4]、3=x。
B21:B20=IPNLSB IPN PPMP Blueソース。0=0、1=IPN[BO]、
2=IPN[B4]、3=x。
NEXTPTR、SOURCEPTR又はPIPPTRのフラグに「相対的」
が指定されたときには、SCoBに入れねばならない値は、相対的な値を有する
RAMのアドレスから、新たなアドレスMINUS FOURであることが所望
されるRAMのアドレスまでのワード距離であることに注意されたい。(REL
=Target−PC−4)。又、「2」のBOPOS値は、PPMP一致を用
いて実際の出力oPNEN信号におけるB0ビットを制御するための唯一の設定
であることにも注意されたい。この設定を選択したときには、ブラック検出器の
入力パラメータにBlue LSBも含まれる。
スプライト像データには、完全リテラルフォーマットと、非完全リテラルフォ
ーマットの2つの基本的なフォーマットがある。各基本的なフォーマット内には
サブグループがある。非完全リテラルのスプライトにおいて、像データは、デー
タのソース走査線を表すワードのグループより成る。完全リテラルスプライトに
おいては、像データは、純粋な像データである(混じり合った制御ファンクショ
ンはない)。
非完全なリテラルスプライトは1ワードの前段部(プリアンブル)を必要とす
るが、完全なリテラルスプライトは2ワードの前段部を必要とする。これら前段
部ワードは、テーブルIIに示したようにSCoBワードの終わり(しかしPIP
の前)に配置されてもよいし、又は像データの始めに配置されてもよい。これら
ワードの通常の位置は、像データの始めであるが、フレームバッファフォーマッ
トの完全リテラルスプライトに対しては、通常は、そのスプライトを呼び出すS
CoBの終わりである。
非完全リテラルスプライトは、メモリスペース及びレンダリング時間の両方を
セーブするようにコンパクト化することができる。データの各ソース走査線は、
データの一部として指定された水平ワードサイズを有している。完全リテラルス
プライトは、データの前段部に指定された長方形のフォーマットを有している。
全てのスプライトに対する第1の前段部ワードは、データ構造前段部である。
これは、ソースデータのためのデータに特定の制御ビットを含み、以下のテーブ
ルVIIに定義する。
テーブルVII
B31->B21 = 指定済み。0にセット。
B20 = PACKED。これは、SCoBにおけるPACKEDビットに等しい。
B19->B16 = 指定済み。0にセット。
B15->B6 = VCNT この像データにおけるソースデータラインの垂直数、マイ
ナス1(10ビット)。
B5 = 指定済み。0にセット。
B4 = LINEAR。0=IPSユニットのIPN出力を発生するためにPIPを使用
する。1=IPNを出力するためにPINを使用する。
B3 = REP8。1=リニア8スプライトにおけるビットを複製する。
0=0を満たす。
B2-〉B0 = BPP。ビット/ピクセル、ピクセルタイブ。
VCNTは、スプライト要求者のハードウェアカウンタにロードされ、そして
データの各ソース走査線のフェッチの終わりに減少される。カウントが−1であ
るときには、対象物にそれ以上のデータソース線はない。スプライト処理はここ
では終わらず、これは、スプライトを終了するのに必要な事象の1つに過ぎない
ことを注意されたい。VCNT=ラインカウント−1。
VCNTについての−1の初期値は、「リアルな大きいスプライト」をフェッ
チさせる。「ゼロラインカウント」値は存在しない。
LINEARビットは、BPPタイプが8ビット/ピクセル又は16ビット/
ピクセルを指示するときにのみ適用される。これらの場合に、PIPを使用せず
に15ビットIPNを与えるに充分なPINビットがある。PINビットはIP
Nにわたってリニアに分散しそしてPINからIPNへのリニアな変換を生じる
ので、このモードは「LINEAR」と称される。このLINEARビットは、
LINEAR8及びLINEAR16(「通常」の8又は16に対して)フォー
マットとして知られている8又は16ビット/ピクセルを有するスプライトに対
してのみセットされねばならない。
REP8ビットは、8ビット/ピクセルのソースデータサイズにおいてのみ有
効である。
テーブルVIIIは、BPP制御ビットデコードを定義する。
SCoBのPACKEDビットが「0」である場合には、ソースデータが完全
にリテラルである。完全にリテラルなスプライトの場合には、第2の前段部ワー
ドがある。これは、他のものの中でも、ソースデータの各ラインに対する水平ピ
クセルカウントと、ソースデータの1つのラインから次のラインへのワードオフ
セットとを含む。これらのビットは、完全にリテラルなスプライトがレンダリン
グされる間にのみ有効であり、現在スプライトが完全にリテラルでないときには
使用されない。第2の前段部ワードのビットフィールドを以下のテーブルIXに定
義する。
テーブルIX
第2スプライトのデータ前段部ワード
B31-〉B24 = WOFFSET(8)。あるデータラインから次のデータラインへのワード
オフセット(-2)(8ビット)。オフセットのビット23-〉16は0にセ
ットされる。
B25->B16 = WOFFSET(10)。あるデータラインから次のデータラインへのワー
ドオフセット(-2)(10ビット)。オフセットのビット31->26は0
にセットされる。
B15 = 指定済み。0にセットされる。
B14 = NOSWAP 1=一般的なスプライト制御ワードからのSWAPHVビットを
ディスエイブルする。
B13->b12 = TLLBS IPN PPMP Blue LSBソース。0=0、1=IPN[0]、
2=IPN[4]、3=IPN[5]。
B11 = LRFORM 左/右フォーマット。
B10->B0 = TLHPCNT 水平ピクセルカウント(-1)(11 ビット)。
TLLSBビットは、IPNLSBが通常のスプライトにおいて実行するのと
同じファンクションを実行する。
LRFORM=1の場合には、ソースデータは、スクリーンのフレームバッフ
ァフォーマットをソースフォーマットとして有する。長方形ディスプレイスペー
スにおける垂直に隣接するピクセルは、メモリワードの2つの半部分において水
平に隣接する。これは、16ビット/ピクセルの完全にリテラルなデータフォー
マットに対して有用である。スプライトエンジン214のアンパッカーは「B」
FIFOデータ要求をディスエイブルし、ソースからのピクセルを両方のFIF
Oに交互に入れる。左の16ビットは「A」FIFOへ進み、右の16ビットは
「B」FIFOへ進む。「A」FIFOのデータ要求は、ページの切れ目及び他
の待ち時間を最小にするために要求「対」で行われる。ハードウェアは、コーナ
ーエンジンを一緒に動作するようにロックする(LCEビットに関わりなく)。
TLHPCNTは、水平次元におけるピクセル数から1を引いたものである。
これは、スプライトエンジン214がスプライトソースデータの各水平線に対し
レンダリングを試みるピクセルの数である。この値はデータアンパッカーにより
使用される。TLHPCNTの「0」値は、1ピクセルを試みる。「−1」値は
多数のピクセルを試みる。「0ピクセルカウント」値はない。
WOFFSETは、1つのデータラインの開始から次のラインの開始までのメ
モリのワードのオフセットから2を引いたものである。このスプライトのBPP
が8又は16ビット/ピクセルフォーマットを指示する場合には、WOFFSE
T(10)又はWOFFSET(8)が適当である。この数値は、最小サイズの
スプライト(2ワード)についてはゼロである。
WOFFSET及びTLHPCNTを正しく配列することにより、大きなサイ
ズの長方形データエリアから長方形データエリアを抽出することができる。
又、アドレスジェネレータ208は、WOFFSETを通常のデータフェッチ
プロセスにおいて長さ値として使用する。WOFFSET及びTLHPCNTは
WOFFSETが最初に終了しないようにセットされねばならない。
スプライトパックされたデータフォーマットにおいて、スプライトソースデー
タの各ラインにおける最初の1又は2バイトのデータは、ソースデータのこのラ
インの開始から次のデータラインの開始までのワードオフセットから2を引いた
ものを含んでいる。ピクセル当たり6以下のビットを有するスプライトにおいて
は、1バイト(ビット31:16)のみのオフセットが使用される。しかしなが
ら、実際のオフセットは、最大サイズ10ビットを有する。2バイトにおける残
りのビットは0にセットされる。ワードオフセットの10ビットは、16ビット
/ピクセルにおいて2048ピクセルである。6ビット/ピクセルにおけるワー
ドオフセットの8ビットは、1365ピクセルである。必要とされるのは、12
80ピクセルである。
このオフセットは、アドレスジェネレータ208によって使用されて、スプラ
イトソースデータの次のラインの開始を計算する(それを現在ラインの開始に加
えることにより)と共に、現在DMA転送に対し最大長さをセットする(1を減
算してそれをDMAスタック長さレジスタに入れることにより)。
又、パックされたスプライトデータフォーマットにおいては、オフセット後の
次のデータが制御バイト及びゼロ以上のPINデータビットである。各PINに
使用されるビットの数は、BPPによって指定される。
制御バイトは、2ビットコードと6ビットカウントで次のように構成される。
00xxxxxx ラインの終わり、xxxxxxはなくてもよい。
01count 「count+1」に対するリテラルPIN。
10count 「count+1」に対して定められた「透過的(transparent)」。
11count 「count+1」に対してパックされた「PIN」。
「透過的」の定義は、実際にアンパッカーから「透過的」ビットを出力する。
これはピクセル処理パイプの残り部分がこのピクセルを無視するようにさせる。
V.スプライトレンダリングプロセス
スプライトをシステムメモリ108のエリアへレンダリングするために、CP
U102は、先ず、システムメモリ108の異なるエリアに必要なデータをセッ
トアップする。このようなデータは、システムメモリ108に全て隣接して配置
された上記テーブルIIに示された6ないし15の32ビットワードと、PIPデ
ータを表すようにシステムメモリ108に隣接配置された4、8又は16のオプ
ションの32ビットワードと、任意の長さのスプライト像データとを含む。テー
ブルIIに示された6ないし15のワードのうち、以下に述べるように多数のグル
ープはオプションであることに注意されたい。又、SCoBの第2のワードは、
処理すべき次のSCoBを指すポインタであり、従って、CPUは、順次に処理
すべき多数のSCoBのリンクされたリストを形成し、その各々は、それ自身の
スプライトソースデータ、オプションのPIPデータ及びスプライトレンダリン
グ制御情報を定義することも注意されたい。
又、スプライトエンジンを始動する前に、CPU102は、所望の情報を幾つ
かのメモリマップハードウェアレジスタに次のように直接書き込む。
SCOBCTL0.上記テーブルVIに定義した32ビットワード。
REGCTL0.ソースフレームバッファデータをスプライトエンジン214
の一次及び/又は二次の入力ポートに読み込むと共に、スプライト像の結果デー
タをスプライトエンジン214からシステムメモリ108の行先フレームバッフ
ァへ書き込むためのモジュロを制御する。このモジュロは、システムメモリ10
8の各フレームバッファに表された走査線当たりのピクセル数を効果的に指示す
る。
REGCTL0の下位16ビットのみが使用される。下位8ビットはソースフ
レームバッファに対するモジュロを指定し、そして次の8ビットは行先フレーム
バッファに対するモジュロを指定する。2つのモジュロ行先の各々に対し、下位
4ビットはG1値を指定し、そして上位4ビットはG2値を指定する。特定のバ
ッファに対して指定されたモジュロは、G1+G2として計算される。従って、
REGCTL0の次のビットが定義される(CFBDは、現在フレームバッファ
データ、スプライトエンジンが入力データとして読み取るスプライトソースデー
タとは個別のソースバッファを参照する)。
REGCTL0 ビット 説明
0 CFBD読み取りバッファに対し、G1=32。
1 未定義。0にセットされる。
2 CFBD読み取りバッファに対し、G1=256。
3 CFBD読み取りバッファに対し、G1=1024。
4 CFBD読み取りバッファに対し、G2=64。
5 CFBD読み取りバッファに対し、G2=128。
6 CFBD読み取りバーッファに対し、G2=256。
7 未定義。0にセットされる。
8 行先バッファに対し、G1=32。
9 未定義。0にセットされる。
10 行先バッファに対し、G1=256。
11 行先バッファに対し、G1=1024。
12 行先バッファに対し、G2=64。
13 行先バッファに対し、G2=128。
14 行先バッファに対し、G2=256。
15 未定義。0にセットされる。
ソフトウェアは、各ニブルにおいて1つ以下のビットがセットされるように確
保しなければならない。ハードウェアは、2つ以上のビットがセットされないよ
う保護しない。ニブルにおいてビットがセットされない場合には、それにより生
じるモジュロへの貢献がゼロである。
REGCTL1.フレームバッファを形成するX及びY次元におけるピクセル
の数を有効に指示するX及びYのクリップ値。ビット26:16は、Y次元にお
ける最後の書き込み可能な行(行0からカウントして)を指示し、そしてビット
10:0は、X次元における最後の書き込み可能な列(列0からカウントして)
を指示する。他の全てのビットはゼロでなければならない。例えば、値00EF
013Fは、フレームバッファデータが320x240フォーマットで表される
ことを指示する。
REGCTL2.ベースアドレスを読み取る。ソースフレームバッファデータ
の左上コーナーピクセルのシステムメモリ108におけるアドレスを指示する。
REGCTL3.ベースアドレスを書き込む。行先フレームバッファ(CFB
D)の左上コーナーピクセルのシステムメモリ108におけるアドレスを指示す
る。
又、スプライトエンジンがスタートされる前に、CPU102は、リンクされ
たリストにおける第1のSCoBのアドレスを、「次のSCoB」に対応するD
MAスタック312レジスタに入れる。次いで、CPUは、SPRSTRTと示
されたメモリマップアドレスに書き込みを行い、スプライトエンジンの動作をス
タートさせる。スプライトエンジンが動作をスタートすると、リストにおける全
てのSCoBの処理を終了するか又は割り込みが生じるまでDバスの排他的制御
を保持する。割り込みが生じた場合には、スプライトエンジンは便利な停止点ま
で動作を続け、次いで、Dバスを解放する。次いで、CPUは、適当な割り込み
ハンドラーヘべクトルを送り、それが終了すると、そのスプライトエンジンを最
初に始動したルーチンヘ復帰する。このルーチンは、メモリマップされた状態ビ
ットレジスタにおける状態ビットSPRONをチェックして、スプライトエンジ
ンが割り込みのために停止したか又は処理完了のために停止したかを判断し、も
し前者である場合には、スプライトエンジンを再スタートさせる。別の実施例に
おいては、CPUは、メモリをプログラムするための個別のバスを有していて、
スプライトエンジン214がスプライトをレンダリングする間にCPU102が
他のタスクを実行できるようにすることができる。この実施例では、スプライト
エンジンは、スプライトの処理が完了したときにCPU102に対する割り込み
を発生することができ、このとき、CPU102は割り込みハンドラーヘベクト
ルを送ることができる。
DMAスタック312は、スプライト制御のために8レジスタグループを備え
ている。8個のレジスタは、次の通りである。
0 現在SCOBアドレス(CURRENT SCOB ADDRESS)
1 次のSCOBアドレス(NEXT SCOB ADDRESS)
2 PIPアドレス(PIP ADDRESS)
3 スプライトデータアドレス(SPRYTE DATAADDRESS)
4 エンジンAフェッチアドレス(ENGINE A FETCH ADDRES)
5 エンジンA長さ(ENGINE A LENGTH)
6 エンジンBフェッチアドレス(ENGINE B FETCHADDRES)
7 エンジンB長さ(ENGINE B LENGTH)
CPUがSPRSTRTアドレスに書き込むときには、スプライトエンジンが
システムデータバス118、120の制御を得た後に、図3及び図4のDMAエ
ンジンは、DMAスタック312のNEXT SCOBレジスタに指定されたシ
ステムメモリアドレスから始めて第1のSCoBから第1の6ワードをロードす
る。これを行うために、ロードすべき第1のワードのアドレスがNEXT SC
OBレジスタから読み出され、ソースマルチプレクサ314を経てメモリアドレ
スラインヘ与えられる。又、このアドレスは、加算器/クリッパ320によって
増加され、そしてマルチプレクサ310を経てDMAスタック312のCURR
ENT SCOBレジスタへ書き戻される。6つのワード全部がこのようにメモ
リから読み出され、CURRENT SCOBレジスタは、ロードすべき各次の
ワードのアドレスを維持する。
読み取られた第1のSCoBワードであるFLAGSは、アドレスマニピュレ
ータチップ106の32ビットハードウェアレジスタに書き込まれる。読み取ら
れた次のSCoBであるNEXTPTRは、DMAスタック312のNEXTS
COBレジスタヘ書き込まれる。SOURCEPTRは、DMAスタック312
のSPRYTE DATA ADDRESSレジスタヘ書き込まれ、そしてPI
PPRTは、DMAスタック312のPIP ADDRESSレジスタに書き込
まれる。XPOS及びYPOSは、各々x、yのフォーマットを有する2つのメ
モリマップハードウェアレジスタXYPOSH及びXYPOSLに書き込まれる
。即ち、XPOSからの上位16ビット及びYPOSからの上位16ビットはX
YPOSHの上位及び下位の半ワードに各々書き込まれ、そしてXPOSの下位
16ビット及びYPOSの下位16ビットはXYPOSLの上位及び下位の半ワ
ードに各々書き込まれる。SCoBの最初の6ワードがロードされた後に、FL
AGSにセットされたビットに基づいて、7つまでの付加的なSCoBワードが
ロードされる。考えられるワードは、7ワードまでの単一のDMA転送としてグ
ループ分けされる。FLAGSのLDSIZEビットがアサートされた場合には
、図3及び4のDMAコントローラは、この7のグループの最初の4ワードがD
X、DY、LINEDX及びLINEDYであると予想する。これらのワードは
、SCoBの最初の6ワードと同様にロードされ、増加されたアドレスは、DM
Aスタック312のCURRENT SCOBレジスタに記憶される。DX及び
DYは、x、yフォーマットで2つのメモリマップハードウェアレジスタDXY
H及びDXYLに書き込まれ、そしてLINEDX及びLINEDYは、x、y
フォーマットで2つのメモリマップハードウェアレジスタDDXYH及びDDX
YLに書き込まれる。FLAGSワードのSKIPビットが1に等しく、現在S
CoBをスキップすべきであることを指示するか、又はYOXYビットがゼロで
ある場合には、X及びY値はハードウェアに書き込まれない。
FLAGSのLDPRSビットがセットされた場合には、図3及び4のDMA
コントロールユニットは、任意の7のうちの最初の2つのワード(又は次の2つ
のワード)がDDX及びDDYを含むと予想する。これらは、x、yフォーマッ
トで2つのメモリマップハードウェアレジスタDDXYH及びDDXYLに書き
込まれる。
FLAGSワードのLDPPMPビットがセットされた場合には、図3及び4
のDMAコントロールユニットは、任意の7ワードのうちの最初の(次の)ワー
ドがPPMPCであると予想する。このワードは、メモリマップPPMPCハー
ドウェアレジスタに書き込まれる。
0ないし7ワードの第2のSCoBロードの後に、図3及び4のDMAコント
ロールユニットは、1又は2ワードの前段部ロードを実行する。FLAGSのS
COBPREビットがセットされた場合には、前段部ワード(1つ又は複数)は
SCoBの終わりにあると仮定され、この場合に、DMAスタック312のCU
RRENT SCOBレジスタは、最初の前段部ワードのアドレスを含む。SC
OBPREがセットされない場合には、前段部ワード(1つ又は複数)はデータ
の開始にあると仮定され、この場合、SPRYTE DATA ADDRESS
は第1の前段部ワードのアドレスを含む。DMAコントロールユニットは、前段
部ロードのスタートアドレスとして適当なレジスタソースを選択し、そして増加
されたアドレスをその同じレジスタへ返送する。
第1の前段部ワードは常に存在し、適当なハードウェアレジスタにロードされ
る。第2の前段部ワードは、FLAGSワードのPACKEDビットがゼロであ
ってスプライト像データが「完全にリテラル」のフォーマットであることを示す
ときだけ存在する。DMAユニットがこのワードを読み取るときには、WOFF
SETフィールドの情報がオフセットレジスタに書き込まれ、そしてTLHPC
NTフィールドの情報がハードウェアのピクセルカウントレジスタに書き込まれ
る。オフセットは、メモリにおける完全にリテラルなスプライトの巾を指示し、
そしてDMAコントローラによりスプライトソースデータの各次のラインのスタ
ートを計算するのに使用される。ピクセルカウントは、完全にリテラルなスプラ
イトソースデータの各走査線において転送されるべきピクセルの数を指示する。
これら2つの値は、大きなビット像のうちの巾及び高さの両方が全ビット像より
小さい長方形部分のみを転送できるようにするために、個々にセットすることが
できる。
前段部のロードの後に、FLAGSワードのLDPIPビットがセットされた
場合には、DMAコントロールユニットは、DMAスタック312のPIP A
DDRESSレジスタのアドレスから始めてPIN−IPN変換情報の4、8又
は16ビットを読み出す。又、増加されたアドレスも、同じDMAスタックレジ
スタに再書き込みされる。行われる4ワードバースト(もしあれば)の数は、ス
プライト像ソースデータのデータ圧縮フォーマットに基づいており、これは、第
1の前段部ワードのBPP(ビット/ピクセル)フィールドに指定される。より
詳細には、上記のテーブルVIIIに示されたように、BPP=0、1又は2につい
ては4つのPIPワードの全部がロードされ、BPP=3の場合には8個のPI
Pワードがロードされ、そしてBPP=4、5、6又は7の場合には16個のP
IPワードがロードされる。システムメモリ108のPIPデータは間接的に参
照されるので、同じPIPデータが多数のSCoBからダウンロードされてもよ
いことに注意されたい。又、PIPは、たとえこれが現在スプライト像ソースデ
ータを圧縮解除するのに使用されない場合でも(第1の前段部ワードのLINE
ARビットが1である場合がそうである)ロードされる。16個のPIPワード
の全部をロードする場合には、全PIPがオーバーライトされる。16ワードよ
り少ないロードの場合には、FLAGSワードのPIPAフィールドが、データ
を受け取るためのPIPのスタートアドレスを指示する。
PIPロードの後に、図3及び4のDMAユニットは、システムメモリ108
からスプライトエンジン214のデータ入力FIFOへのスプライト像ソースデ
ータの転送を開始する。上記したように、スプライト像ソースデータがパックさ
れた(即ち、完全リテラルフォーマットでない)場合には、スプライトソースデ
ータの各走査線の始めに、第1のワードの最初の1又は2バイトは、ソースデー
タの現在線の始めからソースデータの次の線の始めまでのワードオフセットから
2を引いたものを含む。このオフセットは、DMAコントローラにより、ソース
データの各次の線の始めを計算すると共に、ソースデータの線のDMA転送の長
さをセットするのに使用される。従って、DMAコントローラは、DMAスタッ
ク312のSPRYTE DATA ADDRESSレジスタに指定されたアド
レスからこのワードを読み取り、アドレスを増加しそしてそれをDMAスタック
312のENNGINE A FETCH ADDRESSレジスタヘ入れる。
このワードの上位8又は10ビットはDMAスタック312のENNGINE
A LENGTHレジスタヘ入れられ、そして全ワードはコーナーエンジンAの
ためのスプレーエンジンデータ入力FIFOへも送られる。スプライトエンジン
は、このワードを無視すべきであることを知っている。スプライト像ソースデー
タが完全リテラルフォーマットである場合には、第2の前段部ワードに指定され
そして上記した単一のオフセット値(及びピクセルカウント値)が全スプライト
に適用される。
オフセットがロードされた後に、DMAコントローラは、各4ワードまでのバ
ーストにおいて現在走査線に対するスプライト像ソースデータの付加的なワード
を、スプライトエンジン214により要求されたときに転送する。各バーストの
スタートアドレスは、DMAスタック312のENGINE A FETCHA
DDRESSレジスタに見られ、そして増加されたアドレスが同じレジスタに入
れられる。これに対応して、DMAコントローラは、転送されたワードの数に基
づきDMAスタック312のENGINE A LENGTHレジスタの値を減
少する。
又、DMAコントローラは、走査線の第1ワードに指定されたオフセットを加
えることによりDMAスタック312のSPRYTE DATA ADDRES
Sレジスタを更新し、これにより、レジスタが、処理されるべき次の走査線を常
に指すようにする。
上記の特許出願「改良されたコーナー計算エンジン及び改良された多角形ペイ
ントエンジンを有するスプライトレンダリングシステム」に述べられた条件に基
づいて、スプライトエンジン214は、ENGINE B FETCH ADD
RESS及びENGINE A LENGTHレジスタを用いて、スプライト像
ソースデータの次の走査線の4ワードバーストをコーナーエンジンBデータ入力
FIFOへDMA転送する要求を出すこともできる。このように、スプライトエ
ンジン214の両コーナーエンジンA及びBは、スプライト像ソースデータの異
なる走査線に対し同時に動作することができ、そしてDMAコントローラは、個
々に要求されたときにその各々へデータをバースト送信することができる。
ハードウェアにおいて保護されない多数の無効のSCoBビット設定があるこ
とに注意されたい。ソフトウェアはこれらの組合せが決してアサートされないよ
うに確保しなければならない。これらの組合せには、次のものがある。
1.LINEARビットが第1のスプライトデータ前段部ワードにセットされ
そしてBPPが8ビット/ピクセルに対してセットされた場合には、FLAGS
ワードのDOVERフィールドにおけるDモード選択は、BPPにより決定され
た選択を使用するようにセットされてはならない。
2.LINEARが選択された場合には、BPPは8又は16ビット/ピクセ
ルに選択されねばならない。
3.SCoBにおけるBPPフィールド及びLINEAR設定は、到来するソ
ースデータのフォーマットに一致しなければならない。もしそうでなければ、そ
の結果を予想することができない。
これらは幾つかの例に過ぎず、他にも多数のものがある。
VI.ソフトウェアルーチン
本発明を実施するのに使用されるソフトウェアルーチンを説明する前に、次の
ようなC言語型の定義及びマクロ定義を説明するのが有用であろう。
A.スクリーン及びビットマップルーチン
スプライトエンジン214は、スクリーン(Screen)、スクリーングループ(
ScreenGroup)及びビットマップ(Bitmap)として知られている3つのソフトウ
ェアデータ構造を用いて好都合に制御される。これらの構造は、ユーザタスクに
対してシステムにより所有され、そして制御情報の不当な組合せがハードウェア
に到達するのを防止するために、これら構造における情報は、CPU102のス
ーパーバイザーモードで動作するルーチンでなければ変更できない。スクリーン
、スクリーングループ及びビットマップデータ構造に対するタイプ定義は、次の
通りである。
明らかなように、ビットマップ構造は、スプライトエンジン214がスプライ
トをレンダリングするところの行先バッファ(通常はディスプレイバッファであ
るが、これに限定されない)に関するあるグローバルな情報を含んでいる。この
ようなグローバルな情報は、バッファのベースアドレス(bm Buffer)
や、その巾、高さ及び特徴(各々bm With、bm Height及びbm
Flags)や、それを越えるとスプライトエンジン214がスプライトをレ
ンダリングする必要がなくなるクリッピング巾及び高さ(bm ClipWit
h及びbm C1ipHeight)や、垂直オフセット値(bm Verti
calOffset)や、5つのスプライトエンジン制御レジスタの値(bm
SCOBCTL0、bm REGCTL0、bm REGCTL1、bm RE
GCTL2、bm REGCTL3)を含む。スクリーン構造は、表示されるべ
きビットマップ構造や、スクリーングループ構造を指し、そしてディスプレイに
関する幾つかの他の情報を含む。
ビットマップ、スクリーングループ及びスクリーンを操作するための幾つかの
サンプルルーチンを以下に示す。これらルーチンの幾つかは、平凡なものである
が、ユーザプログラムによって呼び出すことのできるオペレーティングシステム
ルーチンとしてとにかく設けるのが好都合である。このように、これらは、CP
U102のスーパーバイザーモードで実行することができる。
以下のルーチンは、バッファのビットマップをいかに直接変更するかを示す。
以下のルーチンは、ビットマップを直接読み取る。これらは、スーパーバイザ
ーモードである必要はない。
B.スプライトレンダリングルーチン
上記したように、スプライトエンジン214は、作成されてリストに一緒にリ
ンクされた「スプライト制御ブロック」(SCoB)に応答してスプライトをレ
ンダリングする。SCoB(SCBとも称する)に対するソフトウェアデータ構
造は、好都合にも、次の通りとなる。
SCoBのリンクされたリストがいったん作成されると、次のスーパーバイザ
ーモードルーチンを用いてスプライトエンジン214を始動することができる。
上記したように、スプライトエンジン214は、そのスプライトに対するSC
oBに適当な値が与えられると、スプライトソース像を任意形状の四辺形(適切
な又は縮退)にマップすることができる。次のルーチンは、行先四辺形の4つの
点が行先バッファに与えられると、ユーザがSCoBにおけるscb X、sc
b Y、scb HDX、scb HDY、scb VDX、scb VDY、
scb DDX及びscb DDY値の正しい値を計算する助けとして有用であ
る。
種々様々な基本的スプライトレンダリングルーチンが上記プリミティブにおい
て構築される。これらのスプライトレンダリングルーチンは、適当なSCoBを
単に形成しそしてそれらを、DrawSprytes(スプライトを描く)のよ
うなルーチンによってその後にレンダリングするためのリストへとリンクするよ
うに書き込まれてもよいし、或いはスプライトエンジン214を直接呼び出して
もよい。このようなルーチンは、指定の終了点をもつ水平又は垂直線を描くため
のルーチン、指定の長方形を埋めるためのルーチン、及びグラフィックコンテク
ストの現在ペン位置から新たな位置まで線を引くためのルーチンを含むことがで
きる。これらルーチンは、全て、現在グラフィックスコンテクスト前景カラーの
単一ピクセルを含むスプライト像ソースデータを指すSCoBを形成し、そして
scb X、scb Y、scb hdx、scb hdy、scb vdx、
scb vdy、scb ddx及びscb ddyに適当な値を設定して、ス
プライトエンジン214がピクセルを所望の形状に延ばすようにさせることによ
り動作できる。次いで、このルーチンは、SCoBをリストにリンクすることも
できるし、又はDrawSpryteのようなルーチンを用いてスプライトエン
ジン214を直ちに呼び出すこともできる。好都合なことに、これらのルーチン
は、GrafConデータ構造を用いて、「現在」前景及び背景カラーを維持す
ると共に、「現在」X及びYペン位置を行先ビットマッブ内に維持する。このよ
うなデータ構造は、次のように定義される。
GrafCon構造を用いる場合に、DrawSprytesを使用してスプ
ライトエンジン214を呼び出し、指定のビットマップに線を描くためのルーチ
ンの例を次に示す。
特定の実施例について本発明を説明したが、本発明の範囲から逸脱せずに多数
の変更がなされ得ることが明らかであろう。Detailed Description of the Invention
How to control the sprite rendering processor
A portion of the disclosure of this patent document contains material which is subject to copyright protection. Copyright
The proprietor of this patent document as it appears in the U.S. Patent and Trademark Office patent file or record.
Or, no one disagrees with facsimile reproduction of the patent disclosure,
All other copyright rights shall be retained.Cross reference
The present invention relates to the following:
"Audio / Video Co."
PC entitled "Computer Architecture (AUDIO / VIDEO COMPUTER ARCHTECTURE)"
T patent application No. PCT / US92 / 09349 and same title, same inventor
And US patent application Ser. No. 07 / 970,308 filed on the same date;
Inventor Maikal et al. Filed on the same day as the present invention.
Video display resolution enhancement (RESOLUTION ENHANCEMENT FOR VIDEO DISP
PCT patent application No. PCT / U entitled "LAY USING MULTI-LINE INTERPOLATION)"
S92 / 09342 and the same title, same inventor and filed on the same day
US Patent Application No. 07 / 970,287;
Inventor David C. F. filed on the same day as the present invention. "Three-dimensional sound by Pratt
P. entitled "METHOD FOR GENERATING THREE DIMENSIONAL SOUND"
CT patent application No. PCT / US92 / 09348 and same title, same invention
And US patent application Ser. No. 07 / 970,274 filed on the same date;
"Sprite Rendering" by the inventor, Mr. Mycal, who applied on the same day as this invention
To control the processor (METHOD FOR CONTROLLING A SPRYTE RENDERING PRO
PCT Patent Application No. PCT / US92 / 09350 entitled "CESSOR)", and
Title, same inventor and US patent application Ser. No. 07/970, filed on the same date,
Issue 278:
Inventor Needle et al. Filed on the same day as the present invention, "improved corner meter
Sprite Rendering with Arithmetic Engine and Improved Polygon Paint Engine
SPRINGE RENDERING SYSTEM WITH IMPROVED CORNER CALCULATING EN
PCT patent application No. PCT entitled "ZINE AND IMPROVED POLYGON-PAINT ENZINE)"
/ US92 / 09462 and same title, same inventor and same date
U.S. patent application Ser. No. 07 / 970,289;
Inventor Maikal et al., Filed on the same day as the present invention, said "
METHOD AND APPARATUS FOR UPDATING A CLUTD
PCT patent application No. PCT / US92 / 0 entitled "URING HORIZONTAL BLANKING)"
No. 9460 and US patents filed on the same date with the same title
Application No. 07 / 969,994;
Inventor Maikal et al. Filed on the same day as the present invention "process image data
IMPROVED METHOD AND APPARATUS FOR PROCE
PCT Patent Application No. PCT / US92 / 09461 entitled "SSING IMAGE DATA)"
Issue, and US patent application Ser. No. 07 filed on the same title, same inventor and same date
/ 970,083; and
“Player bus device and
PCT patent application No. PCT / entitled "PLAYER BUS APPARATUS AND METHOD"
US92 / 09384 and the same title, same inventor and filed on the same date
U.S. Patent Application No. 07 / 970,151.
All of these related patent applications are assigned in common with the present invention and are incorporated by reference in their entirety.
And will be taken up here.Field of the invention
The present invention relates generally to image data processing, and more particularly to mapping to a destination grid.
Shading, highlighting and other in the source image to be rendered
Engine to perform functions related to the functions of
Related to the technology for controlling.Prior art description
Nowadays, the representation and processing of visible images is essentially analog form and essentially digital.
It is transitioning to the tal form. Digital processing of image data presents unique challenges.
It Tolerate these problems by providing sufficient storage capacity for digital image data.
Maintaining a possible data throughput rate is included. Furthermore, digitally
The problem of forming a realistic sensation in the image that is formed, especially in the animated image,
is there.
Visualization of images formed by digital video game systems, simulators, etc.
Realistic feeling is improved by giving special effects such as shading and highlight processing.
Is done. For example, view a statue of a plane flying over a flat area on a sunny day
When it should, the overall scene is created by forming a shadow image of the plane within the local image.
The sense of reality is enhanced. Instead of making the area of the shadow cast completely black
The effect becomes more realistic when made cloudy. The observer
Even if the area is shaded by airplanes, we continue to see the essence of its nature. This effect is
This is called "shading".
Another example of the effect of giving a sense of reality is highlight processing. Detonator attached to an airplane
It is assumed that an explosion will occur in the near future and it will be displayed. The brightness of the plane image is momentarily increased (
(Illite processing), and the impression that the light from the explosion is reflected from the fuselage of the airplane
By creating, the visual reality is enhanced. This effect is different for airplanes
Between certain parts (eg, cockpit, fuselage, wings)
It becomes more realistic when maintained.
Home game systems like Sega's "Genesis" are on the
Two-source image fusion to create shadow and highlight effects in lie (real time)
Have an integrated system. When a shadow effect is desired, the first source "Thailand"
"Or" sprite "(of the bitmap data representing the shadow area of an airplane)
A rectangular block) is overlaid with tiles from the second source that represent the area below.
Be done. For each pixel position where the first (shadow) sprite intensity is non-zero, the second
The digital signal that represents the corresponding area intensity in Ile is cut in half, which
It produces a "dimming" effect. Then this dimmed version of the regional tiles
It is output as a part. (However, this dimmed image data is stored in the memory.
I can't remember. )
To create the highlight effect, Sega's "Genesis" system
Divides the shading values of all the pixels in the sprite by 2 and half the maximum shading value
Is added to each pixel. It maintains a relative shading relationship between parts of the plane
While making each one brighter. The enhanced version of the airplane tile is then
It is output as part of the video signal, but not saved. Sega's "Genesis
In a “s” system, it is not possible to simultaneously shade and highlight tiles.
Can not.
The above shading and highlighting techniques have limited applications. Optically complex
A large number are required for various animated scenes. For example, the Knights of the Kingdom
Consider a scene in a (Knights of the Realm) type game. Hero of the association
Enter the arched room. Different heights, colors, transparency, shapes and angles around the room
There is a stained glass. The villain is looking at the stained glass window
Approach from outside the room at an angle to the douglas window. This scene is two-dimensional
Of the image (hereinafter referred to as an observation plane), or displayed there. Reality
The position of the viewing plane (the window where the game player views the scene) to add
Is slowly rotated around the hero, and a cubic is applied to the displayed 2D scene.
The original quality is given.
For realistic rendering of such a scene, external light should be stained.
The change in light must be taken into account when passing through the window of the window to the viewing plane at various angles.
I have to. Also, the internal light reflects from the stained glass window toward the observer plane.
You must also consider doing. In addition, a bad guy stones one of the stained glass windows
When throwing, the visual effect of the hole must replace the removed window material.
Absent. If the villain throws mud at the window, the transparency of the affected area of the window
And the color must change accordingly.
Previously available home game systems (eg Nintendo Entertainment
System, Sega Genesis) is an optically complex animation
Scenes cannot be processed in real time. Silicon graphics
Some commercially available imaging systems, such as the "iris" system of the
It provides a mechanism to handle the clutter in real time, but this is a fast computing
This is only possible by using data, large memory and special custom circuits.
Therefore, these commercially available systems are only available at very high cost.
Up to now, the low cost of realistic rendering of complex animated scenes
System not available.
Digital graphic processing also uses a digital signal representing image data as a single tissue fog.
-Based on the physical conversion of matte to another format. Converted
Some or all of the captured image data may be displayed on a suitable display means (eg cathode ray tube or
LCD display).
Digital image data is often converted from one format to another
Is desired to be converted at a relatively high rate. This is the image displayed
Creates the sensation of animation and user input in the case of interactive systems
Done to form the feeling of real-time response to. Such a fast change
The conversion is called real-time digital graphic processing. This real-time digital
Talgraphic processing can be used for flight or other simulation systems or interactive
It is practically useful for game systems and the like.
One feature often required for real-time digital graphics processing.
The function is to map the source image onto the destination surface. Normally,
The source image comprises one or more pixels, each of which is filled with a particular color or shadow.
It The mapping function is for the pixels from the source area to the destination area.
It is a one-to-one copy. Alternatively, the mapping function is a size conversion
And / or shape changes (eg skew) and / or some angle of rotation plus color
Alternatively, a change in image brightness may be included.
For example, a simulated scene in a real-time army game
Think The plane appears to fly towards or away from the observer
It should be displayed on the display panel. Observer is a real-time controller
At least some of the actions on the display by the cursor (eg joystick)
Control a part. When the plane should appear to fly towards the observer
The image grows larger as the apparent distance from the observer decreases.
It Conversely, if the plane should appear to fly away from the observer, the
The image becomes smaller as the distance from the observer increases. Furthermore, the plane
If he rolls during its flight, it must rotate its image.
If the detonator ignites near the plane when the plane flies,
The display brightness of the main body is momentarily increased, and the light from the explosion reflects from the fuselage of the airplane.
But I have to simulate it.
Airplanes have large, foam-like cockpit windows and transparent parts such as holes in some parts of the aircraft.
May have a minute and the hole is suddenly formed by the impact of a projectile.
It In such cases, when the plane flies in front of the background scene
Display background scenes visible through cockpit windows and / or holes in the aircraft
Is desirable.
This form of animated real-time scene display in a number of ways
Can be formed into a means.
The violent solution is to separate each whole frame of animated scene data separately.
Form and form the frame data in high speed memory (eg video RAM)
And store each complete frame (background and plane) in a suitable frame.
Transfer to display means at boom speed. This violent solution wastes memory space
And requires high-speed performance from a processing circuit that generates sequential frames of image data.
It
A better solution is based on the concept of sprite painting.
One memory area stores unchanged background image data, and a second memory area.
The Mori area stores image data for airplanes and other moving objects. Each displayed frame
Along with the boom, the image of the airplane is displayed in the background area from the second memory area to the first
Mapped to the land image. Mapping function size over time
Change over time to give an increase or decrease and rotation of the. Also, mapping
Functions to simulate various lighting conditions, such as those caused by nearby explosions.
It also gives a change in color and / or brightness in order to adjust.
Ideally, you can take any source image and scale it up or down to any size.
It must be possible to map it, including reduction. Also mapped
With or without rotation and / or shape distortion (skew)
Must be able to project onto the destination grid. In addition, the mapped
Pee can also be projected onto the destination grid with or without color changes
I have to do it.
High-performance electronic computer system capable of converting image data in this way
System such as the Silicon Graphics Iris® system described above.
Available. Such a system is a complex software-controlled data conversion
And bulk transfer of image data from one memory area to another. Pan
The computer unit for the task is tasked with supporting all calculations.
Be done. Unfortunately, these computer systems are expensive and circuit support
Large size, complexity and / or slow image rendering speed
I'm troubled.
The industry offers low cost in one or several integrated circuit (IC) chips
Code that can be implemented and can perform complex image transformations at high speed.
There is a need for a compact image rendering system.
It also allows multiple software to be called by higher level routines.
Logic of such an image rendering system with altines or primitives
Control in a fundamentally trivial way to reduce the complexity of detail in the image rendering system.
It is also required to be hidden. Also, such a routine is
Protection against unintended misuse of the operating system.Summary of the invention
According to the present invention, a sprite control block is described in a roughly linked
The list is prepared in memory and traversed by the sprite rendering engine
It Each sprite control block renders each sprite to the display buffer.
This controls the dulling, and is a pointer to the source data of the corresponding sprite.
Interface, destination quadrilateral position and perspective specifications, sprite image source data
Control word for the operation to be performed and the number of available formats.
Includes information such as which of which sprite image source data will be packed
There is. In addition, the sprite control block is a new sprite image source data
Modify a portion of the existing display data with either constant data
You can also control the sprite rendering engine like this. Linked
Once the list has been prepared, it is populated with specific memory mapped hardware registers.
Write some values, and to the address seen by the hardware,
Write dummy data as a command to start the sprite rendering operation
This allows you to call the sprite rendering engine.Brief description of the drawings
The present invention will now be described in detail with respect to specific embodiments with reference to the accompanying drawings.
FIG. 1 is a block diagram showing the main elements of a hardware system in which the present invention is used.
It is a diagram.
FIG. 2 is a symbol block diagram of the address manipulator of FIG.
FIG. 3 is a block diagram showing a part of the address generator of FIG.
FIG. 4 is a block diagram of the stack address logic of FIG.
FIG. 5 is a block diagram of the left address pad logic of FIG.Detailed description of the preferred embodiment
The embodiments disclosed herein are described in related patent application “Audio / Video Computer Applications”.
-AUDIO / VIDEO COMPUTER ARCHITECTURE "; Related patent application" Image data "
IMPROVED METHOD AND APPARATUS FOR PROCE
SSING IMAGE DATA) ”; and related patent application“ Improved corner calculation engine and
And improved polygon paint engine sprite rendering system
(SPRYTE RENDERING SYSTEM WITH IPROVED CORNER CALCULATING ENGINE AND IMPR
OVED POLYGON-PAINT ENGINE) "
Is intended to work. These applications are also taken up here as reference
So the description of the hardware disclosed in such an application will not be repeated here
. However, some of the information provided below is useful in understanding the present invention.
It
I.All hardware architecture
FIG. 1 is a block diagram showing the main elements of a hardware system. This
The stem has a CPU 102, which is Swaham Barbe, Cambridge, England.
ARM manufactured by Advanced RISI Machines Limited
60 RISC processor. ARM60 is taken up here as a reference
"ARM 60 Data Sheet" by Advanced RISC Machines (1992)
Year). The address bus 104 is an address manipulator chip
It is provided as an input to 106. This address manipulator chip 10
6 is, among other things, the DMA generated address to system memory and from other sources.
An address generator for giving an address; a D bus arbiter; two
Sprite engine; to player bus, low speed bus and a set of external processors
And interface. The address manipulator chip 106 is on the left.
System memory 108 including memory bank 108A and right memory bank 108B
Generate an address for. This system memory is 32 bits wide, each 3
The upper 16 bits of the 2-bit word are placed in left memory 108A and the lower 16
The bits are placed in right memory 108B. CPU 102 uses system memory
Address, but the address manipulator chip 106 is
Each half of can be addressed independently. Address manipulator chip
106 is an LA bus 110 and an LCTL bus 112 for address and control signals, respectively.
To the left memory 108A, and the address and control signals are respectively supplied to the RA bus.
And to the right memory 108B via 114 and the RCTL bus 116.
The system memory 108 includes 1 or 2 "sets" of video RAM (VRAM).
It may include 0, 1 or 2 sets of DRAMs. One set of VRAM
1M in total including 512k bytes left memory and 512k bytes right memory
It becomes a byte. One set of DRAM is 1, 4 or 16 depending on the system configuration.
It will be megabytes long. As with VRAM, half of each set is left memory
And the other half are located in the right bank of memory. However,
Unlike VRAM, DARM is always accessed in full 32-bit words. Shi
The stem memory 108 is considered a big-endian.
All left and right bank system memory sets are address manipulator chips
Receive each left and right half address generated by 106. Also, all left banks
Data is connected to the left half data bus D (3L: 16) 118 in both directions.
It also has a port. Similarly, all sets of data ports in the right bank memory
It is bidirectionally connected to the half data bus D (15: 0) 120. Also, the VRAM set
It also has a serial port S bidirectionally connected to the S (31: 0) bus 122.
Further, the address manipulator chip 106 receives the CPU 10 via the line 128.
2 for exchanging control signals, and bidirectional with left and right data buses 118 and 120
It is connected. The address manipulator chip 106 is a CPU ROM.
132, battery-backed SRAM and / or various front panel devices
Low speed bus 130, which is an 8-bit bus for accessing devices such as
Interface to. Also supports additional CPU accessible RAM
It can also support FM sound generator devices. Low speed bus
130 is a 14-bit A (16: 2), 8-bit data buffer of the address bus 104.
PD PD (7: 0), PDRDB read strobe, PDWRB write strobe
And various control lines. PDRDB and PDWRB are 8 bits wide
Transport to two lower address lines to access the CPU ROM 132 of
Used to do.
The address manipulator chip 106 also interfaces with the player bus 136.
-Face, this bus is joystick, 3-D glass, hand control
, Steering wheel, and game server cartridges.
Used to connect the system to a user input / output device of the. Furthermore, the address
The manipulator chip 106 is also connected to the control bus 138, which in FIG.
Used to exchange control signals with other processors in the system.
The system of FIG. 1 further comprises an audio / video processor chip 140.
The chip is bidirectionally connected to both halves 118 and 120 of the D bus.
Together, it is connected to receive data from the 32-bit wide S bus 122.
The audio / video processor chip 140 is also connected to the control bus 138.
Address bit A (15: 2) from the system address bus 104
Connected to receive. Generally, an audio / video processor chip 14
0 is the display path circuit, audio subsystem, timer, interrupt
Includes controller, expansion bus interface, and watchdog timer
There is. The expansion bus interface connects to the expansion bus 142, which is a control bus.
Carries line 144 and multiplexed address and data information.
An 8-bit bus 146 is provided. The expansion bus 142 is a CD / CD-ROM
Supports devices such as layer 148 and optional expansion bus RAM 150
It The CD / CD-ROM player 148 is installed in the housing of the system shown in FIG.
Embedded software (including routines described herein) in the CPU 102.
It has a primary mechanism for loading into the system for execution.
The audio / video processor 140 has an audio line 157, a control line.
Audio / video output circuit 15 via a 156 and a 12-bit AD bus 158.
Communicate with 2. This audio / video output circuit 152 generally
And the output video waveform. This is a composite video output, standard television
RF output, SVHS output and separate left and right audio signals
Give output.
The system of FIG. 1 also includes a decompression coprocessor 166, which controls
Bus 138, bits A (15: 2) of system address bus 104 and D bus
It is connected to both halves 118 and 120. The decompression coprocessor 166 uses C
D / CD-ROM player 148 or software loaded into the system from another source
Used to decompress software.
System starting from address 0 and extending to 0, 8, 16 or 32 kbytes
The section of memory is defined as SYSRAM. Soft size selection
Done by software. The address manipulator chip 106 is a user software.
Software to write to and read from SYSRAM
It has a protection function. The software executed in the supervisor mode of the CPU12
Only the software writes to SYSRAM.
All system address and timing signals are addressed by the address manipulator chip.
Is generated by the group 106. CPU 102 or audio / video processor
Any request to access system memory from the 140
Data chip 106.
Except for the SYSRAM allocation, and shifted from the video RAM S port
1-megabyte limit for the expected data structures (physical
(Exists only because there is a VRAM boundary)
The constraints on where the various parts of the system are placed in system memory are minimized.
It Smallest system with only 1 megabyte of system memory (VRAM)
Also, the lower 64k 32-bit words contain CPU instructions and data. Next
300 kbytes of contains the uncompressed 8-bit image source data, and
The next 172 kbytes contain audio and other data. Next 150 kbytes
Is allocated to one frame buffer (320 x 240 pixels x
2 bytes / pixel), and the last 150 kbyte is the second frame buffer
Assigned to the user.
These frame buffers have even data lines in the left memory bank.
And odd data lines are present in the right memory bank. Pixel
It is represented as a 16-bit value divided as follows. That is, 5 bits is a red pen
Number, 5 bits represent the green pen number, 4 bits represent the blue pen number
, And the two bits are the sub-position bits H and V. Another data format
, One of the H or V bits replaces the fifth blue pen number bit
Can be When pixel values are sent down the display path,
The look-up table stores each 4 or 5 bit pen number into the corresponding color DAC.
Is converted to an 8-bit value. Color lookup table updated before each scan line
can do. Pixels are as low as 320x240 pixels / frame
Are stored at the resolution, and the H and V sub-position bits actually map to the specified color.
The quadrant of the low resolution pixel area is considered to be placed.
FIG. 2 is a main function of the address manipulator chip 106 of FIG.
It is a symbol block diagram which shows a unit. This is the internal 32-bit MDT data
It has a bus 202 and an internal 32-bit MADR address bus 204.
The MDT data bus 202 passes through the buffer 222 and the left and right half system D buses 11
8, 120 is connected. The chip 106 is a CPU interface unit.
It also includes a switch 206, which receives the CPU generated address via the A bus 104.
Both are communicatively coupled via control line 128 to CPU 102. Control
In 128, the MCLK signal is sent to the CPU by the CPU interface 106.
Sent to the MCLK input of 102 (memory clock input of CPU 102). Ad
Resmanipulator 106 extends CPU cycles for slow access
With this clock signal, the CPU 102 is put into a sleep state for a long time.
Control the waveform. ARM60 CPU maintains minimum clock input frequency
It is a static part that is unnecessary.
The address generated by the CPU 102 is stored in the D bus arbiter 210
When granting the control right of the D bus and the address generator 208 to the 102
And is passed to the address generator 208 by the CPU interface 206.
It The address generator 208 uses the upper address bits from A (31:16).
Drive to the MADR bus 204, where the address decoder 212
Loaded. The address decoder 212 receives the desired add from these bits.
Determines whether memory represents a memory-mapped hardware register, and if so,
Activating the appropriate select lines to activate the appropriate hardware elements in the system of FIG.
To notify. This hardware element is then loaded onto the system address bus 104.
Perform the desired function in response to bits A (15: 2). Desired ad
Address decoder 212 determines that the address is part of system memory 108.
If so, the address generator 208 is so notified. Address generator
The lator 208 includes LCTL and LA buses 112 and 110 and RCTL and RA buses.
Appropriate address and control signals are generated on buses 116 and 114.
The address generator 208 connects the CPU interface 206 to the CPU.
After receiving the address, the address is also received from the sprite engine 214.
take. The address generator 208 also maintains a stack of DMA control information.
Then, an address for DMA transfer can be generated. D-bus arbiter 2
10 receives requests from various devices for transfer over the D bus and sends them
Arbitrate and indicate to address generator 208 which request should be met
It Even though the two halves of system memory are addressed and controlled individually
Even so, only one master works at a time. The winning requester is DMA
If a send request is made, the D bus arbiter 210 will respond to the requested transfer.
DMA group indicating where in the DMA stack the desired control information is found
The address is supplied to the address generator 208. In fact, DMA group
The dress identifies a particular DMA channel. The DMA interface is
It is completely handled within the dress manipulator chip 106.
The sprite engine 214 is connected to the internal MDT data bus 202, and
The function and operation of the sprite engine 214 will be described in detail below.
The address manipulator chip 106 also includes a player bus 136 and a low-speed bus.
Player bus interface 21 for interfacing with each device 130.
6 and low speed bus interface 218 are also provided. These are explained in detail here
There is no need to reveal.
The D bus arbiter 210 accesses the D bus and D port of the system memory 108.
Receive requests from various requesters to access. The D-bus arbiter 210 is
When the bus is granted to a specific requester, a confirmation signal is sent to the requester. D Basua
Although it is not necessary to describe the arbiter in detail here, the CPU 102 is
Intentionally lowest priority in arbitration for access to 108 D ports
Note that is given. Because in the architecture of Figure 1
Because the CPU 102 is considered to execute only the housekeeping function.
is there. All other functional units in the system are more memory than CPU
It is closely connected to and can perform those functions at high speed.
Wear. To date, the CPU has numerous detailed fans of interactive multimedia systems.
The requirement to perform actions is either limited to system performance and realism, or
In addition, it is necessary to use an expensive CPU, or both.
II.Sprite operation subsystem
The sprite engine 214 (FIG. 2) uses the “improved corner calculation engine” described above.
Sprite Rendering System with Jin and Improved Polygon Paint Engine
Stem "and" improved method and apparatus for processing image data ".
It is described in detail in the patent applications. I will not repeat these explanations, but here
Conventional imaging systems are built around the concept of "sprite"
However, it should be noted that the examples described here rather refer to "spryte".
It is useful to see. The spelling difference is intentional. Conventional "Sprite
(sprite) '' consists of a rectangular area of image data,
The scan lines have the same length. On the other hand, "spryte" is here
Editing a horizontal scan line that extends from a vertical (hypothetical) sprite edge line to its right
Each scan line is defined to contain data representing a number of successive source pixels. Each
The length of the plite scan line is the EOL (end of line) end code or other suitable means.
Individually controlled by. The vertex of the sprite edge line is the sprite corner position.
Defined by The total number of horizon lines that collectively define a sprite is
Given by Prite line count. Sprites run without pixels
Can be included in the sprite and certain pixels within the sprite are transparent (transparent
Can be instructed as Therefore, in reality, sprites
It can be considered as having any desired size.
III.Address generator 208
FIG. 3 is a block diagram of a portion of address generator 208 (FIG. 2).
FIG. 4 is a block diagram of stack address logic 336 (FIG. 3), and
FIG. 5 is a block of left and right address pad logic units 345, 353 (FIG. 3).
It is a figure. These units are based on the above-mentioned patent application "Audio / Video Computer".
Data architecture, and will not be repeated here. Shi
However, the address generated by the CPU and emitted from the sprite engine
Address is sent to the memory 108 via each input port of the multiplexer 316.
Be done. All other system memory accesses use the DMA stack 312 for D
Performed by MA.
The 128 22-bit registers in the DMA stack 312 are grouped together.
Organized, each group provides the information needed to control each DMA "channel".
Remember. Each group has a fixed set of addresses in the DMA stack 312.
And each channel is routed from a particular source device to a particular destination device.
Predefined to control delivery. Table I used for sprite engine
It shows some information about the channel being played.
Table i
IV.Sprite control block (SCoB)
How the sprite source data is provided to the sprite engine 214
Before explaining, the data known as Sprite Control Block (SCoB)
It may be useful to describe the structure. SCoB is a specific sprite
Control the hardware operations to be performed. Sprite engine 214
Before calling, the CPU 102 makes such an SC in the system memory 108.
Prepare a linked list of oBs and address the memory map registers.
It loads into the register 208 and indicates where the first SCoB is found.
The SCoB data structure contains the words shown in Table II below.
Table II
SCoB data structure Number of bits
name Explanation
32 FLAGS Classified flags. This is a sprite rendering
It is the first word read by the software.
(Flag bits are detailed in Table III below.)
24 NEXTPTR Address of the next SCoB to process. (The format is absolute
(Relative or relative) sprite rendering
By going through the linked list with SCoB
Done. The first source sprite is defined by its SCoB
Is painted and mapped to the destination grid area
After the sprite rendering engine, the next SCoB
Process the source sprite, if any, and
Render to the specified destination surface of. Linked
The list can be repeated if desired.
It is circular.
24 SOURCEPTR The image data to be rendered as a sprite.
Address in stem memory 108.
24 PIPPRT loaded into the IPS unit of Sprite Engine 214
Should be stored in the system memory 108 of the Pen Index Palette (PIP).
Address to open.
32 XPOS in the upper left corner of the sprite to be rendered
Horizontal position in destination grid (640 maximum pixel
16) that represents the decimal (non-integer) position definition part
Including
32 YPOS in the upper left corner of the sprite to be rendered
Vertical position in destination grid (480 maximum pixel
Matt), including a 16-bit fractional part.
32 DX scan first sprite row and remap to destination grid
Is the first mapped corner of the source pixel when
From the source pixel to the second mapped corner of the pixel
Position increment (format is two 16-bit halfwords
Yes, these are fractional forms of integers such as 12.20
Represented by.)
32 DY Saw when scanning and remapping the first sprite row.
Source Pixel from the first corner of the Spixel map
Increase vertical position to third mapped corner of cell (1
2.20).
32 LINEDX First from the upper left corner of the first mapped sprite line
Rows to the top left corner of the 2 mapped sprite rows
Increase horizontal position in the front grid (16.16).
32 LINEDY Vertical position increase from 1st line to 2nd line (16.16).
After each row of 32 DDX sprites are rendered
Increase to DX for the row (12.20).
32 DDY Increase to DY for each successive line processing after the 1st line
Added (12.20).
32 PPMPC PPMP control word (two halves: 16,16)
(See Table IV).
32 PREO Possible first word.
32 PRE1 Possible second preword.
The bits of the FLAGS word above are defined as described in Table III.
. These flag bits are specific flags of the sprite rendering engine 214.
Control the switch and rendering operations. Data specific control bits are source
Found in the previous word of the data.
Table III
FLAGS word
bit name Explanation
B31 = SKIP If set, skip this SCoB.
B30 = LAST If set, this is the last SCoB to process.
is there.
B29 = NPABS 1 = absolute address for NEXTPTR, 0 = relative address.
B28 = SPABS 1 = Absolute address to SOURCEPTR, 0 = Relative address
B27 = PPABS 1 = absolute address for PIPPTR, 0 = relative address.
B26 = LDSIZE Load 4 words of size and slope data.
(DX, DY, LINEDX, LINEDY)
B25 = LDPRS Load two words of perspective (skew control) data
(DDX, DDY).
B24 = LDPPMP New PPMP control word (PPMPC) in PPMP control register
To load.
B23 = LDPIP Load new PIP data into PIP.
B22 = SCoBPRE front position. 1 = end of SCoB, 0 = start of source data.
B21 = YOXY Convert XY value to system memory address value and
Write the corresponding data to the hardware.
B20: B19 = xx has been specified.
B18 = Render the destination pixel for ACW CW (clockwise) orientation.
forgive.
B17 = ACCW Allows rendering of destination pixels for CCW.
B16 = TWD If this splice is encountered in the wrong direction (CW-CCW)
To finish rendering the image.
B15 = LCE Lock the operation of two corner calculation engines together
(In H change).
B14 = ACE Allow the second corner calculation engine to work.
B13 = Allow ASC super clipping (local switch
ANDed with ASCALL).
B12 = MARIA 1 = Disable all match area loading operation and set destination line
Use only fast Munkee decisions as instructions to the filler
To do.
B11 = PXOR 1 = Set PPMP XOR mode. (Disable adder
XOR the A and B sources during )
B10 = USEAV 1 = Use "-AV" bit of PPMPC to control PPMP-match function
To do.
B9 = PACKED primary source sprite type, 1 = packed, 0 = complete
Literals, (secondary source sprites are always
It is Le. )
B8: B7 = DOVER D-Mode override. 00 = generated by IPS unit
Select the output of CMUX using the D bit stored. 01 =
Specified. 10 = Select A input of CMUX. 11 = CMUX
Select B input.
B6 = Alternative to SCoB selection made by PIPPOS B15P0S and BOPOS
Alternate PIP generation bit to sub position bit (output PEN signal
Used as BO & B 15).
B5 = BGND 1 = Background sprite type.
B4 = NOBLK 1 = No black sprite type.
B3: BO = PIPA PIP address bits. These are Unpacker's BPP
If (bit / pixel) output is less than 5 bits wide
For packing PIP address input signals that are 5 bits wide
used.
The PPMP Control Word (PPMPC) has two 16-bit wide halves.
There is. One half is used when the CMUX select control bit = 0, and
The other half is used when the CMUX select control bit = 1. Only the upper half
Bits are defined as shown in Table IV. The lower half has the same structure.
Table IV
PMPPC word
bit name Explanation
B31 = S1 Selects first multiplier input signal. 0 = IPN (source A)
use. 1 = use cFB data (source B)
B30: B29 = MS Select the second multiplier input signal. 0 = MxF (source is
SCoB), 1 = MUL (source is IPS), 2 = IPNM (source is IPS)
3 = xx (multiply by default value 1 or 0).
B28: B26 = MxF multiplication coefficient. 0-> means multiplication by 1-> 8.
(Used only when MS = 0.)
B25: B24 = Dv1 1st division by multiplying factor. Divide by 1 = 2. Divide by 2 = 4.
3 = + 8, divided by 0 = 16.
B23: B22 = S2 Secondary input signal selector. 0 = "value 0 on adder port B
Grant ”. 1 = Use AV word (from SCoB).
2 = use cFBD (source B) 3 = IPS output (source A)
use.
B21: B17 = AV adder value. 5-bit value to be added when S2 = 1
Is. This 5-bit signal is, if USEAV = 1,
Also used as a match control word.
B16 = Dv2 post-addition, second divider. Divide by 0 = 1. Divide by 1 = 2.
In addition to giving the "addition value", the AV bit is
Perform a secondary function. This secondary function is shown in Table V.
Table V
Secondary AV bit function
bit function
At AVO = PMPP, the output of the second divider is inverted and the carry of the adder is set.
To put.
AV1 = Sign extension funk for the signal flowing downstream on the second matching side of PMPP
Option (XOR enabled later).
AV2 = Disable wrap limiter function. (8 bits
Uses the 5 LSBs of the adder output and is above 31 in decimal or in decimal
Ignore the possibility of wrapping below 0. )
AV3: AV4 = Select the second side divider value as follows. Divide by 00 = 1. 01 = 2l
division. Divide by 10 = 4. 11 = Divide by (reciprocal).
Also, a general sprite rendering engine control tool called SCOBCTL0.
There is also a code. It is loaded only by the CPU. Take these bits
Shown in Le VI.
Table VI
SCOBCTL0 engine control word
bit name Explanation
B31: B30 = B15P0S B15 oPEN selector for the output of PMPP. (This bit
Defines the bits used by the pre-display interpolator
Can function as a sub-position. ) 0 = 0, 1 = 1,
2 = xx, 3 = same as source data.
B29: B28 = BO o PEN selector for output of BOPOS PMPP. (This bit
Also defines the bits used by the pre-display interpolator
Can function as a sub-position. ) 0 = 0, 1 = 1,
2 = PPMP match, 3 = same as source data.
B27 = SWAPHV 1 = Swap H and V sub-positions before entry to PPMP
Up.
B26 = ASCALL 1 = Allow super clipping function.
(Master enable switch)
B25 = xx has been specified.
B24 = CFBDSUB 1 = cFB When data is selected as PPMP source,
Instead of the ply source value, the H and V s
Use the position bit.
(Note: CFBDse1 = (S1 = 1) OR (S2 = 2))
B23: B22 = CFBDLSB cFBD PPMP Blue LSB source. 0 = 0, 1 = cFBD [BO],
2 = cFBD [B4], 3 = x.
B21: B20 = IPNLSB IPN PPMP Blue source. 0 = 0, 1 = IPN [BO],
2 = IPN [B4], 3 = x.
"Relative" to NEXTTR, SOURCECEPT or PIPPTR flags
Is specified, the value that must be entered in SCoB has a relative value.
Desired to be a new address MINUS FOUR from the RAM address
Note that it is the word distance to the address of the RAM that is stored. (REL
= Target-PC-4). Also, for the BOPOS value of "2", use PPMP match.
And the only setting to control the B0 bit in the actual output oPNEN signal
Also note that When this setting is selected, the black detector
The input parameters also include Blue LSB.
The sprite image data includes a full literal format and an incomplete literal format.
There are two basic formats of matte. Within each basic format
There are subgroups. In non-perfect literal sprites, the image data is
Data source scan line. Full literal sprite
Image data is pure image data (mixed control functions).
There is no service).
Non-perfect literal sprites require a 1-word preamble (preamble)
However, a full literal sprite requires a 2-word preamble. These front stage
The subword is the end of the SCoB word as shown in Table II (but the PIP
May be placed before), or may be placed at the beginning of the image data. these
The normal position of a word is at the beginning of the image data, but the frame buffer format
For a fully literal sprite of a
It is the end of CoB.
Non-exact literal sprites save both memory space and rendering time.
It can be made compact to save. Each source scan line of data is
It has a horizontal word size specified as part of the data. Full literals
The prite has a rectangular format specified in the front part of the data.
The first pre-word for all sprites is the data structure pre-stage.
It contains data specific control bits for the source data,
Defined in Le VII.
Table VII
B31-> B21 = Specified. Set to 0.
B20 = PACKED. This is equal to the PACKED bit in SCoB.
B19-> B16 = Specified. Set to 0.
B15-> B6 = VCNT The vertical number of source data lines in this image data,
Eggplant 1 (10 bits).
B5 = Specified. Set to 0.
B4 = LINEAR. 0 = Use PIP to generate IPN output for IPS unit
To do. 1 = Use PIN to output IPN
B3 = REP8, 1 = duplicate bits in linear 8 sprites.
It satisfies 0 = 0.
B2-〉 B0 = BPP. Bit / pixel, pixel type.
VCNT is loaded into the sprite requester's hardware counter, and
It is decremented at the end of each source scan line fetch of data. Count is -1
When there are no more data source lines in the object. Sprite processing is here
But this is just one of the events needed to finish a sprite.
Please note that. VCNT = line count-1.
The initial value of -1 for VCNT is "real large sprite".
Let it go. There is no "zero line count" value.
The LINEAR bit has a BPP type of 8 bits / pixel or 16 bits /
Only applicable when pointing to pixels. In these cases, without PIP
There are enough PIN bits to give a 15-bit IPN at. PIN bit is IP
Disperses linearly over N and produces a linear conversion from PIN to IPN
Therefore, this mode is referred to as "LINEAR". This LINEAR bit
LINEAR8 and LINEAR16 (for "normal" 8 or 16) four
Pairs with sprites with 8 or 16 bits / pixel known as Matt
And then set.
REP 8 bits are only available with a source data size of 8 bits / pixel
It is effective.
Table VIII defines BPP control bit decoding.
If the PACKED bit of SCoB is "0", the source data is complete
Is a literal. In the case of a completely literal sprite, the second front end work
There is This is a horizontal line for each line of source data, among other things.
Xcel count and word off from one line of source data to the next
Including set and. These bits are completely literal sprite rendered
Is only valid while being spawned, and currently the sprite is not completely literal.
Not used The bit field of the second front word is defined in Table IX below.
Mean
Table IX
2nd sprite data front word
B31-> B24 = WOFFSET (8). Word from one data line to the next
Offset (-2) (8 bits). Offset bits 23-> 16 are set to 0
Is set.
B25-> B16 = WOFFSET (10). The data from one data line to the next
Offset (-2) (10 bits). Offset bits 31-> 26 are 0
Is set to.
B15 = Specified. It is set to 0.
B14 = NOSWAP 1 = SWAPHV bit from general sprite control word
Disable.
B13-> b12 = TLLBS IPN PPMP Blue LSB source. 0 = 0, 1 = IPN [0],
2 = IPN [4], 3 = IPN [5].
B11 = LRFORM left / right format.
B10-> B0 = TLHPCNT Horizontal pixel count (-1) (11 bits).
The TLSLSB bit tells IPNLSB what to do in a normal sprite.
Perform the same function.
If LRFORM = 1, the source data is the screen frame buffer.
Format as a source format. Rectangular display space
Vertically adjacent pixels in a memory cell are
Adjacent to the flat. This is a fully literal data format of 16 bits / pixel.
Useful for mats. Unpacker for Sprite Engine 214 is "B"
Disables FIFO data requests and allows pixels from the source to both
Alternate in O. The left 16 bits go to the "A" FIFO, the right 16 bits
Go to "B" FIFO. "A" FIFO data requests are for page breaks and other
Requests are made "paired" to minimize the latency of. Hardware corners
Lock the engine to work together (regardless of the LCE bit).
TLHPCNT is the number of pixels in the horizontal dimension minus one.
This is because the sprite engine 214 has
The number of pixels to try to render. This value can be
used. A "0" value for TLHPCNT attempts 1 pixel. "-1" value is
Try a large number of pixels. There is no "0 pixel count" value.
WOFFSET is the method from the start of one data line to the start of the next line.
It is the offset of the Mori word minus 2. BPP of this sprite
Is 8 or 16 bits / pixel format, WOFFSE
T (10) or WOFFSET (8) are suitable. This number is the minimum size
Zero for sprites (2 words).
By properly arranging WOFFSET and TLHPCNT, a large size
The rectangular data area can be extracted from the rectangular data area.
Also, the address generator 208 uses WOFFSET for normal data fetching.
Used as a length value in the process. WOFFSET and TLHPCNT are
WOFFSET must be set so that it does not finish first.
In the sprite packed data format, the sprite source data
The first 1 or 2 bytes of data on each line of data are the source data
Subtract 2 from the word offset from the start of the in to the start of the next data line
Includes things. In sprites with less than 6 bits per pixel
Uses an offset of only 1 byte (bits 31:16). But Naga
Thus, the actual offset has a maximum size of 10 bits. 2 bytes left
More bits are set to 0. 10 bits of word offset is 16 bits
There are 2048 pixels per pixel. 6 bits / pixel
The 8 bits of the offset are 1365 pixels. 12 are needed
It is 80 pixels.
This offset is used by address generator 208 to
Compute the start of the next line of source data (add it to the start of the current line
Set the maximum length for the current DMA transfer (by subtracting 1)
(By adding it to the DMA stack length register).
Also, in the packed sprite data format, after the offset
The next data is the control byte and zero or more PIN data bits. For each PIN
The number of bits used is specified by BPP.
The control byte consists of a 2-bit code and a 6-bit count as follows.
00xxxxxx End of line, xxxxxx need not be present.
01count Literal PIN for "count + 1".
10count "transparent" defined for "count + 1".
11count "PIN" packed against "count + 1".
The definition of "transparent" actually outputs the "transparent" bits from the unpacker.
This causes the rest of the pixel processing pipe to ignore this pixel.
V.Sprite rendering process
To render the sprite into an area of system memory 108, the CP
The U102 first sets up the necessary data in different areas of the system memory 108.
Up. All such data is located adjacent to system memory 108.
6 to 15 32-bit words shown in Table II above and the PIP data
4, 8 or 16 options located adjacent to system memory 108 to represent the data
A 32-bit word of the segment and sprite image data of arbitrary length. Te
Of the six to fifteen words shown in Bull II, a number of groups are
Note that the loop is optional. Also, the second word of SCoB is
A pointer to the next SCoB to process, so the CPU processes sequentially
Form a linked list of multiple SCoBs, each of which has its own
Sprite source data, optional PIP data and sprite render
Note also that the grouping control information is defined.
Also, before starting the sprite engine, the CPU 102 outputs some desired information.
Write directly to that memory-mapped hardware register as follows:
SCOBCTL0. A 32-bit word defined in Table VI above.
REGCTL0. Source frame buffer data to the sprite engine 214
Read into the primary and / or secondary input ports of the
From the sprite engine 214 to the destination frame buffer of the system memory 108.
Control the modulo for writing to This modulo is the system memory 10
8 effectively indicates the number of pixels per scan line represented in each frame buffer
It
Only the lower 16 bits of REGCTL0 are used. The lower 8 bits are source code
Specifies modulo for the rame buffer, and the next 8 bits are the destination frame
Specify the modulo for the buffer. Lower for each of the two modulo destinations
The 4 bits specify the G1 value, and the upper 4 bits specify the G2 value. Specific Ba
The modulo specified for the buffer is calculated as G1 + G2. Therefore,
The next bit of REGCTL0 is defined (CFBD is the current frame buffer
Data, sprite source data that the sprite engine reads as input data
And refer to a separate source buffer).
REGCTL0 bit Explanation
0 G1 = 32 for CFBD read buffer.
1 Not defined. It is set to 0.
2 G1 = 256 for CFBD read buffer.
G1 = 1024 for 3 CFBD read buffers.
4 G2 = 64 for CFBD read buffer.
G2 = 128 for 5 CFBD read buffers.
G2 = 256 for 6 CFBD reading buffer.
7 Not defined. It is set to 0.
G1 = 32 for 8 destination buffers.
9 Not defined. It is set to 0.
G1 = 256 for 10 destination buffers.
G1 = 1024 for 11 destination buffers.
G2 = 64 for 12 destination buffers.
G2 = 128 for 13 destination buffers.
G2 = 256 for 14 destination buffers.
15 Undefined. It is set to 0.
Software should ensure that no more than one bit is set in each nibble.
Must be kept. The hardware doesn't have more than one bit set
It does not protect. If the bit is not set in the nibble, it causes the raw
The contribution to the modulo is zero.
REGCTL1. The pixels in the X and Y dimensions that form the frame buffer
Clip values for X and Y that effectively indicate the number of. Bits 26:16 are in the Y dimension
Indicates the last writable row (counting from row 0) and bit
10: 0 is the last writable column in the X dimension (counting from column 0)
Instruct. All other bits must be zero. For example, the value 00EF
In 013F, the frame buffer data is represented in 320x240 format.
Instruct that.
REGCTL2. Read the base address. Source frame buffer data
The address in the system memory 108 of the upper left corner pixel of
REGCTL3. Write the base address. Destination frame buffer (CFB
Point the address in the system memory 108 of the upper left corner pixel of D).
It
Also, the CPU 102 is linked before the sprite engine is started.
The address of the first SCoB in the list is set to D
Put in MA stack 312 register. The CPU then indicates SPRSTRT.
Writes to the specified memory map address to execute the operation of the sprite engine.
Let it start. When the sprite engine starts working, all
Exclusive control of the D bus until all SCoB processing is completed or an interrupt occurs
Hold. In the event of an interrupt, the Sprite Engine will come to a convenient stopping point.
, And then release the D bus. The CPU then takes the appropriate interrupt
Send the handler vector, and when it is finished, turn the sprite engine back on.
Return to the routine that started first. This routine is a memory-mapped status
Check the status bit SPRON in the
Interface is stopped because of an interrupt or when processing is complete,
If it is the former, restart the sprite engine. In another example
In that, the CPU has a separate bus for programming the memory,
While the sprite engine 214 is rendering the sprite, the CPU 102
It can allow other tasks to be performed. In this example, the sprite
The engine interrupts the CPU 102 when the sprite processing is completed.
Can be generated, at which time the CPU 102 causes the interrupt handler
Can be sent.
The DMA stack 312 has 8 register groups for sprite control.
ing. The eight registers are as follows.
0 Current SCOB address (CURRENT SCOB ADDRESS)
1st SCOB address (NEXT SCOB ADDRESS)
2 PIP address (PIP ADDRESS)
3 Sprite data address (SPRYTE DATAADDRESS)
4 Engine A fetch address (ENGINE A FETCH ADDRES)
5 Engine A length (ENGINE A LENGTH)
6 Engine B fetch address (ENGINE B FETCHADDRES)
7 Engine B length (ENGINE B LENGTH)
When the CPU writes to the SPRSTRT address, the sprite engine
After obtaining control of the system data buses 118 and 120, the DMA error of FIGS.
It is the system specified in the NEXT SCOB register of the DMA stack 312.
Load the first 6 words from the first SCoB starting from the stem memory address
It To do this, the address of the first word to be loaded is the NEXT SC
It is read from the OB register and passed through the source multiplexer 314 to the memory address.
Given to the line. In addition, this address is added by the adder / clipper 320.
CURR of the DMA stack 312 is incremented and through the multiplexer 310
It is written back to the ENT SCOB register. All 6 words are written like this
The CURRENT SCOB register is read from each
Keep the address of the word.
The first SCoB word read, FLAGS, is the address manipulator.
It is written to the 32-bit hardware register of the data chip 106. Read
The next SCoB, NEXTTPTR, is the NEXTS of the DMA stack 312.
Written to the COB register. SOURCECEPTR is the DMA stack 312
To the SPRYTE DATA ADDRESS register of
PPRT writes to PIP ADDRESS register of DMA stack 312
Get caught XPOS and YPOS are two formats, each with x and y format.
Written to memory map hardware registers XYPOSH and XYPOSL
. That is, the upper 16 bits from XPOS and the upper 16 bits from YPOS are X
Written to the upper and lower half-words of YPOSH, respectively, and lower of XPOS
16 bits and lower 16 bits of YPOS are upper and lower half-words of XYPOSL.
Each is written to the card. After the first 6 words of SCoB are loaded, FL
Up to 7 additional SCoB words based on the bit set in AGS
Loaded. Possible words are grouped as a single DMA transfer up to 7 words.
Looped. If the LDSIZE bit of FLAGS is asserted
, And the DMA controller of FIGS. 3 and 4 uses D for the first 4 words of this 7 group.
Expected to be X, DY, LINEDX and LINEDY. These words are
, The first 6 words of SCoB are loaded and incremented as DM
Stored in the CURRENT SCOB register of the A stack 312. DX and
DY is two memory mapped hardware registers DXY in x, y format
H and DXYL, and LINEDX and LINEDY are x, y
Two memory map hardware registers DDXYH and DDX in format
Written to YL. The SKIP bit of the FLAGS word equals 1 and is currently S
Indicate that CoB should be skipped, or if the YOXY bit is zero
In some cases, X and Y values are not written to hardware.
If the LDPRS bit of FLAGS is set, then the DMA of FIGS.
The control unit uses the first two words (or the next two) of any 7
Of words) include DDX and DDY. These are the x, y format
Write to two memory map hardware registers DDXYH and DDXYL.
Get caught.
3 and 4 if the LDPPMP bit of the FLAGS word is set.
The DMA control unit of this is the first (next) word of any 7 words.
I expect P to be PPMPC. This word is a memory map PMPPC
Written to the hardware register.
After the second SCoB load of 0 to 7 words, the DMA controller of FIGS.
The roll unit performs a 1 or 2 word pre-load. FLAGS S
If the COBPRE bit is set, the preceding word (s) are
It is assumed to be at the end of SCoB, in which case the CU of DMA stack 312
The RRENT SCOB register contains the address of the first preword. SC
If OBPRE is not set, the preceding word (s) is data
Is assumed to be at the start of, and in this case SPRYTE DATA ADDRESS
Contains the address of the first preword. The DMA control unit is
Select an appropriate register source as the start address of the partial load, and increment
The returned address to the same register.
The first preword is always present and loaded into the appropriate hardware register.
It The second pre-word has the PACKED bit of the FLAGS word equal to zero.
Indicates that the sprite image data is in a "fully literal" format
Only exists when. WOFF when DMA unit reads this word
The information in the SET field is written to the offset register and TLHPC
The NT field information is written to the hardware pixel count register.
It The offset indicates the width of the fully literal sprite in memory,
Then, by the DMA controller, the star of each next line of the sprite source data
Used to calculate the rate. Pixel count is a fully literal splat
Specifies the number of pixels to be transferred in each scan line of source data.
These two values show that both the width and height of the large bit image are larger than the full bit image.
Can be set individually to allow transfer of only small rectangular pieces
it can.
The LDPIP bit of the FLAGS word was set after the previous load
In this case, the DMA control unit is the PIP A of the DMA stack 312.
Starting from the address of the DDRESS register, PIN-IPN conversion information 4, 8 or
Reads 16 bits. In addition, the increased address is also used for the same DMA stack register.
It is rewritten in the studio. The number of 4-word bursts (if any) performed is
It is based on the data compression format of the ply image source data, which
1 is specified in the BPP (bit / pixel) field of the preceding word. Than
In detail, as shown in Table VIII above, for BPP = 0, 1 or 2
All 4 PIP words are loaded, 8 PIs if BPP = 3
16 words if P words are loaded and BPP = 4, 5, 6 or 7.
The IP word is loaded. The PIP data in the system memory 108 is indirectly referenced.
The same PIP data can be downloaded from multiple SCoBs
Please note that Also, the PIP is currently the sprite image source
Data, even if it is not used to decompress the data (the 1st preword LINE
The AR bit is 1). 16 PIP words
If all are loaded, all PIPs are overwritten. 16 words
For less loads, the PIPA field of the FLAGS word is
Indicates the start address of the PIP for receiving
After the PIP load, the DMA unit of FIGS.
From the sprite image source device to the data input FIFO of the sprite engine 214.
Data transfer is started. As mentioned above, the sprite image source data is packed.
If it is written (that is, not in full literal format), the sprite source
At the beginning of each scanline in the data, the first 1 or 2 bytes of the first word are the source data.
Data from the beginning of the current line to the beginning of the next line of source data
Includes minus 2. This offset is sourced by the DMA controller.
Compute the start of each next line of data, as well as the length of the DMA transfer of the source data line.
Used to set the height. Therefore, the DMA controller
Address specified in SPRYTE DATA ADDRESS register
Read this word from the address, increment the address and put it in the DMA stack
Enter the 312 ENNGINE A FETCH ADDRESS register.
The upper 8 or 10 bits of this word are the ENNGINE of the DMA stack 312.
A LENGTH register and all words are in Corner Engine A
Is also sent to the spray engine data input FIFO for. Sprite engine
Knows that this word should be ignored. Sprite statue source day
If the data is in full literal format, it is specified in the second preword.
And the above-mentioned single offset value (and pixel count value) is the same for all sprites.
Applied to.
After the offset is loaded, the DMA controller will write a burst of up to 4 words each.
Additional words of sprite image source data for the current scan line in the
, When requested by the sprite engine 214. For each burst
The start address is ENGINE A FETCHA of DMA stack 312.
The address seen in the DDRESS register and incremented into the same register.
Can be Correspondingly, the DMA controller is based on the number of words transferred.
Then, the value of the ENGINE A LENGTH register of the DMA stack 312 is decreased.
Less.
The DMA controller also adds the specified offset to the first word of the scan line.
The DMA stack 312 SPRYTE DATA ADDRES
Update the S register so that the register always sees the next scanline to be processed.
To point to.
The above-mentioned patent application "Improved corner calculation engine and improved polygon pay"
Based on the conditions described in "Sprite Rendering System with a Print Engine".
Then, the sprite engine 214 is set to ENGINE B FETCH ADD.
Sprite image using RESS and ENGINE A LENGTH registers
Corner engine B data input 4 word burst of next scan line of source data
It is also possible to issue a request for DMA transfer to the FIFO. In this way, sprite
Both corner engines A and B of engine 214 have different sprite image source data.
Can operate simultaneously for different scan lines, and the DMA controller can
Data can be burst transmitted to each of them when required.
There are many invalid SCoB bit settings that are not protected in the hardware.
Please note that. Software will never assert these combinations
Must be secured. These combinations include:
1. The LINEAR bit is set in the first word of the first sprite data
And if BPP is set for 8 bits / pixel, then FLAGS
D-mode selection in the word DOVER field is determined by the BPP.
Must not be set to use the selected choice.
2. If LINEAR is selected, BPP will be 8 or 16 bits / pixel.
Must be selected.
3. The BPP field and LINEAR settings in SCoB are set by the incoming software.
Must match the format of the source data. If not, then
Can not predict the result of.
These are just a few examples, and many others.
VI.Software routine
Before describing the software routines used to implement the present invention, the following
It would be useful to describe such C language type definitions and macro definitions.
A.Screen and bitmap routines
The sprite engine 214 includes a screen, a screen group (
Three software known as ScreenGroup) and Bitmap
Conveniently controlled using a data structure. These structures are
On the other hand, is owned by the system and the illegal combination of control information is hardware
The information in these structures is stored in the CPU 102 in order to prevent
-It cannot be changed unless it is a routine that operates in supervisor mode. screen
, Type definitions for screen groups and bitmap data structures are as follows:
On the street.
As can be seen, the bitmap structure is sprite engine 214
Destination buffer (typically the display buffer
But not limited to this). this
Such global information is stored in the buffer base address (bm Buffer)
And its width, height and features (each bm With, bm Height and bm
Flags) and beyond that, the sprite engine 214 will replay sprites.
Clipping width and height (bm) ClipWit
h and bm C1ipHeight) and vertical offset value (bm Verti
calOffset) and the values of the five sprite engine control registers (bm
SCOBCTL0, bm REGCTL0, bm REGCTL1, bm RE
GCTL2, bm REGCTL3) is included. The screen structure should be
Bitmap structure, screen group structure, and display
It contains some other information about
Several for manipulating bitmaps, screen groups and screens
A sample routine is shown below. Some of these routines are trivial
Is an operating system that can be called by a user program
It is convenient to provide it as a routine anyway. Thus, these are CP
It can run in supervisor mode of U102.
The following routine shows how to modify the buffer's bitmap directly.
The following routine reads the bitmap directly. These are supervisors
-No need to be in mode.
B.Sprite rendering routine
As mentioned above, the sprite engine 214 is created and populated with the list together.
Linked sprite control block (SCoB).
Dolling. Software data structure for SCoB (also called SCB)
The construction is conveniently as follows.
Once the SCoB linked list is created, the next supervisor
The power mode routine can be used to start the sprite engine 214.
As mentioned above, the sprite engine 214 uses the SC for that sprite.
When a proper value is given to oB, the sprite source image is transformed into a quadrilateral (appropriate
Or degeneracy). The following routine is the destination quad
Given a point in the destination buffer, the user can scb in SCoB X, sc
b Y, scb HDX, scb HDY, scb VDX, scb VDY,
scb DDX and scb Useful as an aid in calculating the correct DDY value
It
A wide variety of basic sprite rendering routines have been added to the above primitives.
Is built. These sprite rendering routines use the appropriate SCoB
Just form and create them with DrawSprites
Link to a list for subsequent rendering by such routines
May be written in, or by calling the sprite engine 214 directly
Good. Such routines draw a horizontal or vertical line with a specified end point.
Routines, routines for filling specified rectangles, and graphics context
It may include a routine to draw a line from the current pen position of the strike to the new position.
Wear. These routines are all currently in the graphics context foreground color.
Forming an SCoB pointing to the sprite image source data containing a single pixel, and
scb X, scb Y, scb hdx, scb hdy, scb vdx,
scb vdy, scb ddx and scb Set an appropriate value for ddy, and
By allowing the Prite Engine 214 to stretch the pixels into the desired shape.
Can operate. This routine can then also link SCoB to the list.
You can, or use a routine like DrawSprite to sprite
The gin 214 can also be called immediately. Fortunately, these routines
Maintains the "current" foreground and background colors using the GrafCon data structure
And maintain the "current" X and Y pen positions in the destination bit map. This
Such a data structure is defined as follows.
When using the GrafCon structure, use DrawSprites
A rouch for calling the light engine 214 and drawing a line on the specified bitmap.
An example of
Although the present invention has been described with respect to particular embodiments, it will be understood that many may be made without departing from the scope of the invention.
It will be apparent that changes can be made to