JPH08502844A - How to control the sprite rendering processor - Google Patents

How to control the sprite rendering processor

Info

Publication number
JPH08502844A
JPH08502844A JP6511008A JP51100892A JPH08502844A JP H08502844 A JPH08502844 A JP H08502844A JP 6511008 A JP6511008 A JP 6511008A JP 51100892 A JP51100892 A JP 51100892A JP H08502844 A JPH08502844 A JP H08502844A
Authority
JP
Japan
Prior art keywords
control block
image
sprite
sub
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP6511008A
Other languages
Japanese (ja)
Inventor
ロバート ジョセフ ミカール
ディヴィッド ルイス ニードル
Original Assignee
ザ スリーディーオー カンパニー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ザ スリーディーオー カンパニー filed Critical ザ スリーディーオー カンパニー
Publication of JPH08502844A publication Critical patent/JPH08502844A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)

Abstract

(57)【要約】 スプライト制御ブロックのリンクされたリストがメモリ(108)に準備され、スプライトレンダリングエンジンによって横断される。各スプライト制御ブロック(106)は、各スプライトをディスプレイバッファにレンダリングするのを制御するもので、対応するスプライトに対するソースデータを指すポインタ、行先四辺形に対する位置増加仕様、スプライト像ソースデータにおいて実行されるべき操作に対する制御ワード、及びスプライト像ソースデータが多数の使用できるフォーマットのどれにパックされるかの指示といった情報を含んでいる。リンクされたリストが準備されると、スプライトレンダリングエンジン(106)は、特定のメモリマップハードウェアレジスタに幾つかの値を書き込み、そしてダミーデータをハードウェアにより確認されたアドレスにスプライトレンダリング動作(106)を開始するためのコマンドとして書き込むことにより、呼び出すことができる。 (57) [Summary] A linked list of sprite control blocks is prepared in memory (108) and traversed by the sprite rendering engine. Each sprite control block (106) controls the rendering of each sprite in the display buffer and is performed in the pointer pointing to the source data for the corresponding sprite, the position increment specification for the destination quadrilateral, and the sprite image source data. It contains information such as a control word for the operation to be performed, and an indication of which of a number of available formats the sprite image source data will be packed into. Once the linked list is prepared, the Sprite Rendering Engine (106) writes some values to specific memory mapped hardware registers and then writes the dummy data to the address identified by the hardware for the Sprite Rendering operation (106). ) Can be called by writing it as a command to start.

Description

【発明の詳細な説明】 スプライトレンダリングプロセッサを制御する方法 この特許文書の開示の一部分は、版権保護を受ける資料を含んでいる。版権の 所有者は、米国特許商標庁の特許ファイル又は記録に現れるようにこの特許文書 又は特許開示を誰かがファクシミリ再現することに異議を唱えるものでないが、 その他全ての版権権利は何であれ保持されるものとする。クロスレファレンス 本発明は、次のものに関連している。 本発明と同日に出願された発明者マイカル氏等による「オーディオ/ビデオコ ンピュータアーキテクチャ(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

Claims (1)

【特許請求の範囲】 1.グラフィック像を行先バッファヘレンダリングする方法において、 制御ブロックをメモリに準備し、そして グラフィックス操作プロセッサが上記制御ブロックに応答して上記行先バッフ ァにサブ像をレンダリングするようにさせる、 という段階を備えたことを特徴とする方法。 2.上記の制御ブロックは、対応するサブ像に対するレンダリング情報を各々 保持する制御ブロックのリンクされたリストの中の1つであり、そして 上記レンダリングさせる段階は、上記プロセッサが上記リンクされたリストに おける上記制御ブロックの次々のものに応答してサブ像レンダリング段階を開始 するようにさせる段階を含む請求項1に記載の方法。 3.上記行先バッファにレンダリングされたサブ像を単一の像として表示する 段階を更に備えた請求項2に記載の方法。 4.上記制御ブロックは上記メモリにおいて隣接配置される請求項1に記載の 方法。 5.制御ブロックを準備する上記段階は、上記制御ブロックに対応するサブ像 をレンダリングするために上記プロセッサにより使用される上記メモリ内のサブ 像ソースデータに対するポインタを上記制御ブロックに書き込む段階を含む請求 項1に記載の方法。 6.制御ブロックを準備する上記段階は、上記制御ブロックに対応するサブ像 ソースデータのピクセルカラー値を変換するために上記プロセッサにより使用さ れるデータ変換テーブルに対するポインタを上記制御ブロックに書き込む段階を 含む請求項1に記載の方法。 7.制御ブロックを準備する上記段階は、上記制御ブロックに対応するサブ像 ソースデータを処理するために上記プロセッサにより使用される複数のフラグビ ットを上記制御ブロックに書き込む段階を含む請求項1に記載の方法。 8.制御ブロックを準備する上記段階は、上記プロセッサが上記制御ブロック に対応するサブ像ソースデータのレンダリングを開始すべきところの上記ディス プレイバッファにおけるスタート座標の指示を上記制御ブロックに書き込む段階 を含む請求項1に記載の方法。 9.制御ブロックを準備する上記段階は、上記プロセッサが上記制御ブロック に対応するサブ像ソースデータの第1ラインに沿ってレンダリングされる各ピク セルごとに増加すべきところの上記行先バッファにおける水平及び垂直ピクセル の数、各々DX及びDY、の指示を上記制御ブロックに書き込む段階を含む請求 項1に記載の方法。 10.制御ブロックを準備する上記段階は、上記プロセッサが上記制御ブロッ クに対応する上記サブ像ソースデータのレンダリングされる各ラインごとに上記 値DX及びDYを各々増加すべきところの上記行先バッファにおける水平及び垂 直ピクセルの数の指示を上記制御ブロックに書き込む段階を更に含む請求項9に 記載の方法。 11.制御ブロックを準備する上記段階は、上記プロセッサが上記制御ブロッ クに対応するサブ像ソースデータの第2ラインのレンダリングを開始すべきとこ ろの上記行先バッファにおけるスタータ座標を、上記プロセッサが上記制御ブロ ックに対応するサブ像ソースデータの第1ラインのレンダリングを開始すべきと ころの上記行先バッファにおけるスタート座標に対して上記プロセッサが増加す べき上記行先バッファにおける水平及び垂直ピクセルの数の指示を上記制御ブロ ックに書き込む段階を含む請求項1に記載の方法。 12.制御ブロックを準備する上記段階は、上記制御ブロックに対応するサブ 像ソースデータに複数の使用できるデータ圧縮フォーマットのどれを使用するか の指示を上記制御ブロックに書き込む段階を含む請求項1に記載の方法。 13.制御ブロックを準備する上記段階は、上記メモリの上記サブ像ソースデ ータに複数の使用できるデータ圧縮フォーマットのどれを使用するかの指示を、 上記メモリの上記サブ像ソースデータの始めに書き込む段階を更に備えた請求項 5に記載の方法。 14.上記プロセッサが上記行先バッファに走査線を定義するときに考慮すべ きピクセルの数を指示する値を制御レジスタ(REGCTL0)に書き込む段階 を更に備えた請求項1に記載の方法。 15.上記プロセッサは、上記サブ像を上記行先バッファにレンダリングする 際に上記サブ像を付加的な像部分と結合し、そして 上記プロセッサが上記付加的な像部分に走査線を定義するときに考慮すべきピ クセルの数を指示する値を制御レジスタ(REGCTL0)に書き込む段階を更 に備えた請求項1に記載の方法。 16.上記行先バッファの上記メモリにおけるベースアドレスを上記プロセッ サに指示する値を制御レジスタ(REGCTL3)に書き込む段階を更に備えた 請求項1に記載の方法。 17.上記プロセッサは、上記サブ像を上記行先バッファにレンダリングする 際に上記サブ像を付加的な像部分と結合し、 上記付加的な像部分の上記メモリにおけるベースアドレスを上記プロセッサに 指示する値を制御レジスタ(REGCTL2)に書き込む段階を更に備えた請求 項1に記載の方法。 18.水平クリップ値を制御レジスタ(REGCTL1)に書き込んで、この 水平クリップ値を水平方向に越える行先ピクセルはレンダリングする必要がない ことを上記プロセッサに指示する段階を更に備えた請求項1に記載の方法。 19.垂直クリップ値を制御レジスタ(REGCTL1)に書き込んで、この 垂直クリップ値を垂直方向に越える行先ピクセルはレンダリングする必要がない ことを上記プロセッサに指示する段階を更に備えた請求項1に記載の方法。 20.グラフィック像をディスプレイバッファにレンダリングする方法におい て、 対応するサブ像に対するレンダリング情報を各々保持する制御ブロックのリン クされたリストをメモリに準備し、そして グラフィックス操作プロセッサが上記制御ブロックの順次のブロックに応答し てサブ像レンダリング段階を開始するようにさせる、 という段階を備えたことを特徴とする方法。 21.CPU、グラフィック操作プロセッサ及びメモリと共に使用されるコン ピュータ読み取り可能な媒体において、 上記CPUにおいて実行できる第1コンピュータ命令であって、上記メモリに 制御ブロックを準備するための第1コンピュータ命令と、 上記CPUにおいて実行できる第2コンピュータ命令であって、上記グラフィ ック操作プロセッサが上記制御ブロックに応答して上記メモリの行先バッファに サブ像をレンダリングするようにさせる第2コンピュータ命令とを備えたことを 特徴とするコンピュータ読み取り可能な媒体。[Claims]   1. In the method of rendering the graphic image to the destination buffer,   Prepare the control block in memory, and   The graphics operations processor responds to the control block with the destination buffer. To render the sub-image, The method characterized in that it has a step of.   2. The control block above provides rendering information for each corresponding sub-image. Is one of a linked list of control blocks to hold, and   The step of rendering renders the processor into the linked list. Initiate the sub-image rendering stage in response to successive ones of the above control blocks in The method of claim 1 including the step of:   3. Display the rendered sub-image in the destination buffer as a single image The method of claim 2, further comprising steps.   4. The control block according to claim 1, wherein the control blocks are arranged adjacent to each other in the memory. Method.   5. The step of preparing the control block is the sub-image corresponding to the control block. A sub in the memory used by the processor to render A method comprising writing a pointer to image source data in the control block. The method according to Item 1.   6. The step of preparing the control block is the sub-image corresponding to the control block. Used by the above processor to convert the pixel color values of the source data. The step of writing a pointer to the data conversion table to be written in the control block The method of claim 1 including.   7. The step of preparing the control block is the sub-image corresponding to the control block. Multiple flag bits used by the processor to process the source data. The method of claim 1, including the step of writing a set to the control block.   8. The step of preparing the control block is performed by the processor including the control block. The above image where the rendering of the sub-image source data corresponding to Writing the start coordinate instruction in the play buffer to the control block The method of claim 1, comprising:   9. The step of preparing the control block is performed by the processor including the control block. Each pic to be rendered along the first line of sub-image source data corresponding to Horizontal and vertical pixels in the above destination buffer that should be incremented for each cell Of the number of each, DX and DY, respectively, in the control block. The method according to Item 1.   10. The above steps of preparing the control block are performed by the processor in the control block. The above for each rendered line of the sub-image source data corresponding to Horizontal and vertical in the destination buffer where the values DX and DY should be increased respectively. 10. The method of claim 9, further comprising writing an indication of the number of direct pixels in the control block. The method described.   11. The above steps of preparing the control block are performed by the processor in the control block. Where the rendering of the second line of sub-image source data corresponding to The starter coordinates in the destination buffer are set by the processor to the control block. Should start rendering the first line of sub-image source data corresponding to The processor increases relative to the start coordinate in the destination buffer of the roller The control block gives an indication of the number of horizontal and vertical pixels in the destination buffer that should be The method of claim 1 including the step of writing to a dock.   12. The above step of preparing the control block corresponds to the sub-block corresponding to the control block. Which of several available data compression formats to use for the image source data 2. The method of claim 1 including the step of writing the instructions in the control block.   13. The steps of preparing the control block include the sub-image source device in the memory. The data source to indicate which of the available data compression formats to use. The method further comprising writing to the beginning of the sub-image source data in the memory. The method according to 5.   14. What the processor should consider when defining scanlines in the destination buffer. Writing a value instructing the number of pixels in the control register (REGCTL0) The method of claim 1, further comprising:   15. The processor renders the sub-image into the destination buffer While combining the sub-images with additional image parts, and   The processor should consider the following points when defining scan lines in the additional image portion. The step of writing a value indicating the number of xcels to the control register (REGCTL0) is added. The method according to claim 1, which is provided for.   16. The base address in the memory of the destination buffer is set to the processor. And a step of writing a value instructing the server to the control register (REGCTL3) The method of claim 1.   17. The processor renders the sub-image into the destination buffer When combining the sub-image with the additional image part,   The base address in the memory of the additional image portion is given to the processor. The method further comprising the step of writing an indicating value to the control register (REGCTL2). The method according to Item 1.   18. Write the horizontal clip value to the control register (REGCTL1) Destination pixels that exceed the horizontal clip value horizontally do not need to be rendered The method of claim 1, further comprising the step of instructing the processor to:   19. Write the vertical clip value to the control register (REGCTL1) Destination pixels that exceed the vertical clip value vertically need not be rendered The method of claim 1, further comprising the step of instructing the processor to:   20. How to render a graphic image to a display buffer hand,   A control block link that holds rendering information for each corresponding sub-image. Prepared list in memory, and   The graphics operations processor responds to successive blocks of the above control blocks. To start the sub-image rendering stage, The method characterized in that it has a step of.   21. CPU used with CPU, graphic manipulation processor and memory In a computer-readable medium,   First computer instructions executable by the CPU, the instructions being stored in the memory First computer instructions for preparing a control block;   Second computer instructions executable by the CPU, the graphics The operation processor responds to the control block with a destination buffer in the memory. A second computer instruction causing the sub-image to be rendered. Characteristic computer-readable medium.
JP6511008A 1992-11-02 1992-11-02 How to control the sprite rendering processor Pending JPH08502844A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US1992/009350 WO1994010642A1 (en) 1992-11-02 1992-11-02 Method for controlling a spryte rendering processor

Publications (1)

Publication Number Publication Date
JPH08502844A true JPH08502844A (en) 1996-03-26

Family

ID=22231497

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6511008A Pending JPH08502844A (en) 1992-11-02 1992-11-02 How to control the sprite rendering processor

Country Status (5)

Country Link
EP (1) EP0667017A4 (en)
JP (1) JPH08502844A (en)
AU (1) AU3124493A (en)
BR (1) BR9207171A (en)
WO (1) WO1994010642A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU670941B2 (en) * 1992-04-29 1996-08-08 Canon Kabushiki Kaisha Object sorting and edge calculation for graphics systems
US5649173A (en) * 1995-03-06 1997-07-15 Seiko Epson Corporation Hardware architecture for image generation and manipulation

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4653013A (en) * 1984-11-19 1987-03-24 General Electric Company Altering spatial characteristics of a digital image
US4905168A (en) * 1986-10-15 1990-02-27 Atari Games Corporation Object processing for video system using slips and linked list
US4951038A (en) * 1987-05-15 1990-08-21 Hudson Soft Co., Ltd. Apparatus for displaying a sprite on a screen
US4951229A (en) * 1988-07-22 1990-08-21 International Business Machines Corporation Apparatus and method for managing multiple images in a graphic display system
US4952051A (en) * 1988-09-27 1990-08-28 Lovell Douglas C Method and apparatus for producing animated drawings and in-between drawings
US5235677A (en) * 1989-06-02 1993-08-10 Atari Corporation Raster graphics color palette architecture for multiple display objects
AU5844590A (en) * 1989-06-02 1991-01-07 Atari Corporation System and method for sprite control block structure

Also Published As

Publication number Publication date
EP0667017A4 (en) 1996-01-03
EP0667017A1 (en) 1995-08-16
WO1994010642A1 (en) 1994-05-11
BR9207171A (en) 1995-12-12
AU3124493A (en) 1994-05-24

Similar Documents

Publication Publication Date Title
US5596693A (en) Method for controlling a spryte rendering processor
US5856829A (en) Inverse Z-buffer and video display system having list-based control mechanism for time-deferred instructing of 3D rendering engine that also responds to supervisory immediate commands
US5701444A (en) Three-dimensional graphics subsystem with enhanced support for graphical user interface
US6008820A (en) Processor for controlling the display of rendered image layers and method for controlling same
US5867166A (en) Method and system for generating images using Gsprites
AU702762B2 (en) Method of producing image data, image data processing apparatus, and recording medium
US5864342A (en) Method and system for rendering graphical objects to image chunks
US7456835B2 (en) Register based queuing for texture requests
CA2164269C (en) Image processing in which the image is divided into image areas with specific color lookup tables for enhanced color resolution
US5835096A (en) Rendering system using 3D texture-processing hardware for accelerated 2D rendering
US8169441B2 (en) Method and system for minimizing an amount of data needed to test data against subarea boundaries in spatially composited digital video
US5808617A (en) Method and system for depth complexity reduction in a graphics rendering system
US5805868A (en) Graphics subsystem with fast clear capability
US5990904A (en) Method and system for merging pixel fragments in a graphics rendering system
US5572235A (en) Method and apparatus for processing image data
KR100478767B1 (en) Graphic processing with deferred shading
US5742796A (en) Graphics system with color space double buffering
US5727192A (en) Serial rendering system with auto-synchronization on frame blanking
US5815166A (en) Graphics subsystem with slaveable rasterizer
KR100902973B1 (en) Real-time display post-processing using programmable hardware
US6292194B1 (en) Image compression method to reduce pixel and texture memory requirements in graphics applications
US7525547B1 (en) Programming multiple chips from a command buffer to process multiple images
JPH11505644A (en) Image generation and operation equipment
WO1994004990A1 (en) Image synthesizer
AU5785101A (en) Recirculating shade tree blender for a graphics system