JP2003126550A - ビデオゲームシステム及びそのためのプログラマブルグラフィックスプロセッサ - Google Patents

ビデオゲームシステム及びそのためのプログラマブルグラフィックスプロセッサ

Info

Publication number
JP2003126550A
JP2003126550A JP2002163283A JP2002163283A JP2003126550A JP 2003126550 A JP2003126550 A JP 2003126550A JP 2002163283 A JP2002163283 A JP 2002163283A JP 2002163283 A JP2002163283 A JP 2002163283A JP 2003126550 A JP2003126550 A JP 2003126550A
Authority
JP
Japan
Prior art keywords
ram
register
instruction
data
address
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
JP2002163283A
Other languages
English (en)
Inventor
Jeremy E San
ジェレミー・イー・サン
Ben Cheese
ベン・チーズ
Carl N Graham
カール・エヌ・グレイアム
Peter R Warnes
ピーター・アール・ウォーンズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
A & N Inc
Original Assignee
A & N Inc
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 A & N Inc filed Critical A & N Inc
Publication of JP2003126550A publication Critical patent/JP2003126550A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/20Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of the game platform
    • A63F2300/203Image generating hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Processing Or Creating Images (AREA)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)

Abstract

(57)【要約】 【目的】 ホスト情報処理システムに着脱自在な外部メ
モリユニットに全面的にプログラマブルなグラフィック
スマイクロプロセッサを組込むこと。 【構成】 テレビジョン形式のディスプレイとともに使
用するビデオゲームシステムにおいて、プログラムメモ
リはビデオゲームプログラムを格納する。ゲームマイク
ロプロセッサは、ビデオゲームプログラムのインストラ
クションを実行する。画像プロセシングユニットは、ゲ
ームマイクロプロセッサの制御下において、画像処理タ
スクを実行する。プログラマブルグラフィックスプロセ
ッサは、プログラムメモリに接続され、使用時にゲーム
マイクロプロセッサに接続されて、前記ビデオゲームプ
ログラムのインストラクションの少なくともいくつかを
実行する。

Description

【発明の詳細な説明】
【0001】
【発明の技術分野】本発明は、プログラマブルプロセッ
サを内部に組込んだ情報処理装置に関する。
【0002】
【関連出願の表示】この出願は、“ビデオゲームシステ
ム等において使用するため、キャラクタ変換ハードウェ
アに対する画素を備えたプログラマブルグラフィックス
プロセッサ"と題するサン等の、本出願と同じ日の米国
特許出願第07/827,201号に関連している。
【0003】
【従来の技術および発明が解決しようとする課題】8ビ
ットのマイクロプロセッサとビデオゲーム制御デッキに
組込まれた付属のディスプレイ処理用のサブシステムを
備えた従来のビデオゲーム装置は、8ビット×8ビット
のマトリックス型式のゲームカートリッジ内にキャラク
タを予め格納することおよび予め格納したこれらキャラ
クタのプログラム可能な種々の組合せを用いてスクリー
ンディスプレイを構成することによって図形を発生させ
る。このような従来のビデオゲームシステムは、表示の
背景全体を、多数のプレイヤ制御の移動物体やスプライ
トと同様に移動させる能力を有している。
【0004】従来のこの種システムは、各フレームごと
に回転したり再描画するといった操作されるべき多角形
の組合せからなる移動物体を含む実際に満足できるビデ
オゲームを与えるものではない。このような従来のシス
テムにおいて、8ビットのプロセッサと付属のディスプ
レイ処理回路は、例えば、3次元(以下、「3−D」と
略称する。)の多角形をベースにした対象物を効率的に
回転させたり、或いは回転物体を3−Dタイプの特殊な
効果を発生させるべく適当にスケーリングするために必
要な計算を実行することはできない。本願の発明者は、
高等な図形の処理には、スクリーンを画素×画素を基本
にして更新することおよび複雑な数学的演算をリアルタ
イムで実行することが必要であることを認識しており、
従来のキャラクタに基いたビデオゲーム装置は、このよ
うな処理を実行できないものであった。
【0005】従来の8ビットビデオゲーム装置はスクリ
ーンを画素×画素を基本に高速で更新することが必要と
なる他の画像処理を効率的に実行することもできない。
例えば、従来のシステムは3次元空間において他の表示
物体の一部である表示された多角形上に一つの物体を効
率的に配置すること(以後、テクスチャマッピングとい
う。)ができない。
【0006】従来の8ビット機について図形処理能力を
改良する試みとして、より高能力の16ビットプロセッ
サを用いたビデオゲームシステムが開発されている。こ
の種の16ビットプロセッサは、高等な図形処理に要求
される数学演算を実行する機能を備えたビデオゲームシ
ステムを提供することができる。かかるシステムは、例
えば、より美しい色の発生およびより優れた分解能を可
能とする。この16ビットのビデオゲーム機は、キャラ
クタをベースにした或いはスプライト図形に予め描画で
きるビデオゲームの広範囲の実施を可能とするキャラク
タベースのシステムである。16ビットのビデオゲーム
システムは、多色の背景面をその奥方や前方に配置した
移動物体とともに高速で移動させることができる。
【0007】しかしながら、従来の16ビットのビデオ
ゲーム機は各フレームごとに変化しなければならない多
角形からなる高等な物体を表示する3−Dタイプの特殊
効果を得ることができる進歩したビデオゲームの実際の
実施を可能とするものではない。例えば、フレーム×フ
レームを基本として、拡大したり、縮小する必要がある
多くの物体やスプライトを全体的に回転させる必要があ
るようなゲームは、従来のキャラクタベースの16ビッ
ト機にあっては実際上実現不可能であった。本発明者
は、全体的な回転や拡大・縮小を要する多角形を基本と
した物体を含んだゲームを実際に可能にするためには、
多角形の辺を引くとともに画素×画素を基本にして、多
角形を基本として物体の内部を適当なデータで満たすこ
とが必要であることを認識している。画素×画素ベース
で実行しなければならないかかるタスクは莫大な処理時
間を要する。
【0008】従来において、ホストのマイクロプロセッ
サに設けられた実在のアドレスライン数より大きいプロ
グラムメモリアドレス空間を指定することを実際のプロ
セッサにおいて可能とすることにより、ゲーム性をより
一層向上させるために、着脱可能なゲームカートリッジ
の改良が図られてきた。例えば、従来の8ビットシステ
ムでは、メモリバンク切替や他の付加的な機能を実行す
るマルチメモリ制御チップを含むゲームカートリッジが
実用化されている。このようなメモリバンク切替用のチ
ップは、しかしながら、ビデオゲームシステムが前述し
た如き高速の図形処理を行えるようにするというもので
はない。
【0009】本発明は、前記従来の問題に鑑みてなされ
たものであって、ホストの情報処理システムに接続する
ための着脱自在な外部メモリ装置内に組込んで設計され
たプログラマブルグラフィックスマイクロプロセッサを
提供するものである。ある実施態様において、本発明は
ホストビデオゲームシステムとグラフィックスマイクロ
プロセッサを内蔵したビデオゲームカートリッジとを含
むビデオゲームシステムにおいて実現される。
【0010】本発明にかかるグラフィックスマイクロプ
ロセッサおよびビデオゲームシステムはユニークで有利
な多くの特徴を有しており、以下にいくつかの特徴を説
明する。
【0011】本発明によれば、グラフィックスプロセッ
サはホストのマイクロプロセッサにプラグで接続され
る。処理速度の高速化のため、グラフィックスプロセッ
サはホストマイクロプロセッサと並行に動作する。ある
実施態様では、グラフィックス共同プロセッサが内蔵さ
れたゲームカートリッジは、リードオンリイメモリ(R
OM)およびランダムアクセスメモリ(RAM)を含んで
いる。
【0012】本発明のこのグラフィックス共同プロセッ
サはそれ自身の必要性とホストマイクロプロセッサから
取込んだデータの間でのメモリトランザクションを仲介
する。本グラフィックスプロセッサは、ホストのマイク
ロプロセットと同時にプログラムを実行することができ
るが、これは従来のビデオゲームシステムでは実現不可
能であった。
【0013】本発明のグラフィックス共同プロセッサは
ゲームカートリッジ上に設けた3バス構造に接続されて
動作し、このことは、RAMおよびROMカートリッジ
メモリを効率的に使用するためホストおよびカートリッ
ジプロセッサ両方の能力を最適化することによってその
有効利用を可能とする。
【0014】ユーザが全面的にプログラムすることがで
きる、本発明のグラフィックス共同プロセッサは、高速
処理が可能なように設計された特定の構造を有してい
る。インストラクションセットは3−Dグラフィックス
に関連する演算動作を効率的に実行するように設計され
ており、ホストビデオゲームシステムのキャラクタ配置
のディスプレイの個々の画素をプロットするために設け
られたハードウェアによって実行される特別なインスト
ラクションを含む。
【0015】このインストラクションセットの中の多く
のインストラクションは1マシーンサイクル内で実行さ
れ、プログラムROMの1バイトに格納されるように設
計されている。しかしながら、インストラクションは特
殊なパーパス,プレフィックスインストラクションの採
用によってより強力なものとなるであろう。インストラ
クションセットは特定の画素ベースのインストラクショ
ンを含んでおり、プログラマの観点からは、ホストシス
テムがキャラクタベースであったとしても、個々の画素
を指定できるようにすることによって仮想的なビットマ
ップを作り出すことができることを意味する。画素デー
タは、グラフィックスプロセッサによって、キャラクタ
ベースの16ビットホストマシンによって実用されてい
るフォーマットのキャラクタデータに変換される。した
がって、例えば、プログラマが画素をプロットするため
“PLOT"インストラクションを用いたとしても、関
連するデータがRAMに読み込まれる際に、16ビット
ホストマシンが利用することができるキャラクタベース
のフォーマットに変換される。画素プロット用のハード
ウェアは、実行されるべき高速3−Dタイプのグラフィ
ックス処理を効率的に行えるよう、このインストラクシ
ョンを実行する。
【0016】本発明のグラフィックス共同プロセッサは
ユニークな“CACHE"インストラクションとキャッ
シュメモリとを含んでおり、これによって、グラフィッ
クス共同プロセッサによって高速で実行されるべきプロ
グラムROMに格納されたプログラムインストラクショ
ンをキャッシュRAMから行なえるようになる。キャッ
シュインストラクションは高速で実行されるべきプログ
ラムの部分を書くことによって、グラフィックス共同プ
ロセッサの内部キャッシュRAMからのプログラムの実
行を自動的に開始させる。
【0017】インストラクションセットは、高等な3−
Dタイプの図形を有するビデオゲームの実行に必要なグ
ラフィックス技術のプログラミングを助けるように企画
された特別のパーパスインストラクションを含む。この
ようなインストラクションとしては、上述の画素PLO
Tインストラクションと、表示物体の回転とテクスチャ
マッピングをより効率的に行えるよう、異なるレジスタ
に格納されたスプライトデータの合体を可能にするよう
に設計されたMERGEインストラクションとがある。
【0018】特殊なパーパスインストラクションは、ホ
ストマイクロプロセッサと本発明のグラフィックス共同
プロセッサによる並行処理が行えるようにデータをバッ
ファすることを可能にする。例えば、特別のパーパスが
ゲームカートリッジに用いられているROMの比較的遅
いアクセスタイムを補償するため処理速度を向上させる
のに利用される。この点に関連して、グラフィックスプ
ロセッサは、予め定めた一般のレジスタ(実施形態では
レジスタR14)に対する何んらかの照合でROMから
のデータの取込みを自動的に開始させるインストラクシ
ョンを使用する。このようなROMアクセスを行いなが
ら、他のコードの実行が行える。数サイクル後、取込ま
れたデータは利用できるようになる。しかしながら、一
方、プロセッサはそのようなデータを待つ必要がなかっ
たが、むしろ、書き込まれるべきコードの極めて高速の
実行が可能となるように他の仕事を行うことができる。
【0019】サブルーチンリンケージを効率よく処理す
るために、本発明のグラフィックス共同プロセッサは、
サブルーチンの完了後に実行されるべきインストラクシ
ョンのアドレスをプログラムカウンタR15に完了時に
ロードするように操作するLINKインストラクション
を含む。
【0020】インストラクションセットは、RAMスト
アバックインストラクションを含む。このインストラク
ションによれば、データがRAMから読み込まれ、その
データへのある操作が行われた後に、グラフィックス共
同プロセッサ内のRAMコントローラは、最後に使用さ
れたRAMアドレスで更新されたデータの再格納操作を
開始する。この1サイクルのストアバックインストラク
ションは、データの塊りを効率的に更新するのに有利に
用いられる。
【0021】本発明のグラフィックス共同プロセッサは
さらに最も重要なバイトが続いている最も重要でないバ
イトを用いて、RAMから、データを読み出したり、そ
れに書き込むことを自動的に行えるようにするインスト
ラクションを含む。この構成はデータの置き換えをする
必要なしにいずれかのフォーマットで格納されたデータ
の変換性を与えることにおいて、プログラミングの援助
として役立つ。
【0022】本発明のグラフィックスプロセッサは内部
のプロセッサステータスレジスタを修正することによっ
て多数の異なるプロットモードを設定することにしても
よい。かかるモードとしては、各交互の画素が異なるカ
ラーを含んでいる、プログラム可能なシェーディング効
果を得られるようにするディザモード(dithering mode)
を含む。他の選択可能なモードは、そのままであれば一
つのスプライトで専有されるようなスペースに2つのス
プライトを格納することを可能にするために高低の色に
対するニブル(nibble)選択を行えるようにする。
【0023】本発明は、多くのユニークなハードウェア
構成を含む。例えば、グラフィックス共同プロセッサは
ワンチップRAMの使用によって優れた画素データバッ
ファ機能を奏する特定目的のプロット回路を含む。この
ようなデータのバッファ機能は外部データRAMに対す
る読出しもしくは書込みトランザクション量を最小にす
るとともに表示された多角形が適当なデータで満たされ
る速度を向上することができる。
【0024】前述した如く、レジスタR14へのアクセ
スに際して開始される読出しバッファ機能に加えて、本
発明にかかるグラフィックス共同プロセッサは、後述す
るマリオ(MARIO:Mathematical Argonaut Rotati
on Input to Output の略)チップの中央処理ユニット
が他のインストラクションをできるだけ高速に実行でき
るように、ゲームカートリッジRAMに書込むべきデー
タをバッファする書込みバッファ機能を含む。
【0025】本発明にかかるグラフィックス共同プロセ
ッサはグラフィックス共同プロセッサとホスト処理シス
テムの両方にアクセス可能な計16のレジスタR0〜R
15を含む。レジスタR0はあるインストラクションに
おいて明白に区別される必要がなく累算器として機能す
るデフォールトレジスタである。レジスタR15はプロ
グラムカウンタとして機能する。レジスタR14はアク
セスされると自動的にROMからのデータの取出しを開
始する先に言及したレジスタである。特別のプレフィッ
クスインストラクションをソースおよび/又は行先レジ
スタを定義するのに使用することができる。本発明のグ
ラフィックス共同プロセッサはグラフィックス共同プロ
セッサのレジスタがホストプロセッサにとってアクセス
可能であるようなホスト共同プロセッサと協働する。
【0026】グラフィックス共同プロセッサに設けられ
るユニークな3−バスアーキテクチャーは高度の並行処
理機能を与える。3−バスは、ホストプロセッサバス、
ROMバスおよびRAMバスである。これらのバスは物
理的に分離されており、同時に使用可能である。各バス
は、アドレスライン、データラインおよび制御ラインか
らなる。ホストプロセッサバスは、アドレスライン、デ
ータラインおよび制御ラインを含み、グラフィックス共
同プロセッサ内で必要となる広範囲の信号を供給する。
本発明にかかるこのバスアーキテクチャーを用いたグラ
フィックスプロセッサは、プログラムROM、外部RA
Mまたはそれ自身の内部キャッシュRAMのいずれかか
らのプログラムを実行することができる。
【0027】グラフィックス共同プロセッサは種々の仲
介モードを用いてホストマイクロプロセッサとのインタ
ーフェースを行う。これに関連して、所定のグラフィッ
クスプロセッサステイタスレジスタ位置に論理“1"を
ロードすることによって、ホストプロセッサがゲームカ
ートリッジのROMおよびRAMへのアクセスを放棄し
たことを指示するために、ある仲介モードがホストプロ
セッサによってセットされる。
【0028】本発明者は、ホストプロセッサが、ステイ
タスレジスタを適当に設定することによりROMおよび
RAMへのアクセスを放棄した状態下においてさえ、ホ
ストプロセッサが中断を処理するためのルートを取り出
すためにROMへのアクセスを開始することで中断が発
生しうる。このような状態下において、グラフィックス
プロセッサは、プログラムROMのアドレスの代りに動
作中のRAMのアドレスをホストマイクロプロセッサに
与えるように動作し、ホストプロセッサがそれ自身の内
部RAMをアクセスすることができるようにしている。
この手法によって、グラフィックス共同プロセッサがプ
ログラムROMを実行しているときにホストプロセッサ
はプログラムROMを指定しないようにすることができ
る。
【0029】ホストプロセッサがカートリッジRAMを
アクセスする必要があるときに、グラフィックス共同プ
ロセッサのステイタスレジスタはグラフィックス共同プ
ロセッサがRAMをアクセスしえないようにセットさ
れ、これによってホストプロセッサは何らかの情報をR
AMから得る必要が生じたときにはアクセスすることが
でき、その後、グラフィックス共同プロセッサをRAM
へのアクセスが可能な状態に切換える。しかしながら、
共同プロセッサがカートリッジのROMおよびRAMを
その高速の処理速度によって可能な最大限度まで利用す
ることが好ましい。
【0030】本発明のグラフィックス共同プロセッサは
キャラクタデータRAM内にロードされた画素情報を表
示用のホストプロセッサビデオRAMに効率的に転送す
るように設計されている。ビデオRAMは、しかし、カ
ートリッジバスを介してグラフィックス共同プロセッサ
に直接にアクセスされるものではない。前記の転送はホ
ストプロセッサの直接メモリアクセス(DMA)回路を用
いて行われる。
【0031】本発明のグラフィックス共同プロセッサは
ホストの情報処理システムからの複数のクロック信号を
受信する。グラフィックス共同プロセッサ内部のタイミ
ングはこれらのクロック信号の一つを用いて制御され
る。
【0032】本発明の選択的な特徴として、グラフィッ
クス共同プロセッサ内の回路は、電源オン時のリセット
の直後に構成設定用入力ラインとして用いられる出力ア
ドレスラインを介して受信される信号の状態に依存した
従来の修正を考慮して再修正を施すことを可能とするこ
とができる。これらアドレスラインに接続されたオプシ
ョン設定用レジスタの値はグラフィックス共同プロセッ
サによって読み取られる。これらの信号は、例えばグラ
フィックスプロセッサに用いられているRAMチップの
タイプ、即ち、スタティックRAM、ダイナミックRA
Mの別を定義するのに使用される。
【0033】本発明のこれらのおよび他の特徴および利
点は、添付の図面を参照した以下の実施形態の詳細な説
明によってより明確になるであろう。
【0034】
【発明の実施の形態】本発明に係るグラフィックス共同
プロセッサはニンテンドウ・オブ・アメリカ・インコー
ポレイテッド(Nintendo of America
Inc.)によってスーパーニンテンドウエンターテ
イメントシステム(以下「スーパーNES」と略称す
る。)として商業的に販売されている16ビットビデオ
ゲームシステムと共同する。このスーパーニンテンドウ
エンターテイメントシステムは1991年4月10日に
出願されたビデオ処理装置と題するアメリカ合衆国特許
出願第07/651,265号(対応日本出願:特願平
1−200073号、特開平3−63695号公報)及
び1991年8月26日に出願されたダイレクトメモリ
アクセス装置及びそれに使用される外部格納装置と題す
るアメリカ合衆国特許出願第07/749,530号
(対応日本出願:特願平2−225671号、特開平4
−181291号公報)に一部が記述されている。これ
らの出願は参考文献として、この出願において利用され
る。しかしながら、本発明はこれらスーパーNESに関
連する出願に限定されるものではなく、他のビデオゲー
ムシステム或はビデオゲーム以外の装置、さらには情報
処理装置と一緒に用いることができる。
【0035】引用を簡単にする目的でのみ、本発明の実
施の形態に従ったグラフィックス共同プロセッサは、
「Mathematical Argonaut Rotation Input to Output」
チップと命名され、以下ではマリオ(MARIO)チップ
と呼ぶ。このマリオチップはビデオゲームカートリッジ
内にパッケージされたものとして記述される。しかしな
がら、マリオチップがプログラムメモリと同じカートリ
ッジケース内に内蔵されることは使用に際してそれがプ
ログラムメモリとホスト処理ユニットに接続されるもの
である限りさほど本質的なことではない。
【0036】図1は本発明の一実施形態に従ったビデオ
ゲームカートリッジ外部メモリシステムを示す。ゲーム
カートリッジは図1のすべての要素が搭載されるプリン
ト回路基板(図示せず)を有している。このカートリッ
ジはスーパーNESのメインコントロールデッキへ及び
そこから信号を転送するための回路基板の挿入端に配置
された接続電極1の配列を含んでいる。接続電極1の配
列はスーパーNESメインコントロールデッキ内に配置
された嵌合コネクタによって受け入れられている。
【0037】本実施形態に従えば、ゲームカートリッジ
に組み込まれたマリオチップ(グラフィックス共同プロ
セッサ)2は100から128ピンの集積回路チップで
ある。マリオチップ2は多くの制御・アドレス及びデー
タ信号をホスト処理システム(例えばスーパーNES)
から受信する。例えばマリオチップ2はピンP112を
経由してホスト処理システムから21MHzのクロック
入力とピンP117を経由して21MHzでありうる
(もしくは他の所定の周波数)システムクロック入力を
受信する。システムクロック入力は、例えばホストCP
Uメモリアクセスのためのメモリタイミング情報をマリ
オプロセッサに与えるとともにマリオチップ2内のタイ
ミング操作のためのクロック信号を与えるために用いら
れる。マリオチップ2はさらにオプショナルな外部クロ
ック入力(ピンP110)を含んでおり、このクロック
入力はホストシステムから受信した21MHzより高い
周波クロック率でマリオCPUをドライブするため、マ
リオチップ2を外部水晶発振器4に接続する。ホストC
PUアドレス入力(HA)はホスト処理システム(例え
ばスーパーNES CPU/ピクチャー処理ユニットP
PU)のアドレスバスからピンP37ないしP62を経
由してマリオチップ2に接続される。同様に、ホストシ
ステムからのデータ入力(HD)はホストCPUのデー
タバスからピンP65ないしP72を経由してマリオチ
ップ2に接続される。マリオチップ2は、ホストCPU
から付加的にメモリリフレッシュ信号RFSH、リセッ
ト信号、リードおよびライトコントロール信号をP11
9、P118、P104及びP105をそれぞれ経由し
て受信する。マリオチップ2はインタラプトリクエスト
信号IRQを発生するともに、この信号IRQをピンP
120を通してスーパーNESに送る。例えばホストプ
ログラムROM10のアクセスを開始させるROMSE
L信号をピンP106を介して受信するといったように
他の制御信号をスーパーNESから受け取る。さらにカ
ートリッジはスーパーNESの確認用プロセッサと入力
I、出力O及びリセットRのラインを通してデータを交
換する確認用プロセッサ3を備える。確認用プロセッサ
3とゲームカートリッジの認証に使用されるセキュリテ
ィーシステムは参考文献として引用したアメリカ合衆国
特許4,799,635号(対応日本出願:特願昭60
−138699号、特開昭61−296433号公報)
に示された形式のものを用いることができる。
【0038】マリオチップ2はRAMアドレスバス(R
AM A)、RAMアドレスピンP74−P91、RA
Mデータバス(RAM D)及びデータピンP93−P
100を介してRAM6及び8に接続されている。これ
らのRAM6,8としては、ピンP90とP91で接続
された行アドレス及び列アドレスストローブ信号(RA
S,CAS)を用いて制御されるダイナミックメモリ素
子を用いることができる。1以上のスタティックなRA
MをダイナミックRAMに代えて用いることができ、そ
の場合ピンP90とP91は行アドレス及び列アドレス
ストローブ信号なしにアドレス信号をそれぞれの対応す
るRAMに接続する。ライトエネーブル制御信号WEは
ピンP107を介してRAM6および8に適当に入力さ
れる。
【0039】リード及びライト制御信号(R,W)はホ
ストCPUによって発生され、ピンP104及びP10
5を介してマリオチップ2に入力される。これらのリー
ド及びライトラインをモニタすることによってマリオチ
ップ2はスーパーNESのCPUが実行しようとしてい
るメモリアクセス動作の性質を決定することができる。
同様に、ホストシステムからのすべてのアドレス及び制
御ラインをマリオチップ2によってモニタするようにす
れば、ホストCPUが実行しようとしているトラックを
維持することができる。マリオチップ2によって受信さ
れるROM及びRAMアドレス信号はモニタされ、適当
なメモリ装置に通過される。これに関連して、ROMア
ドレスはROMアドレスバス及びピンP2ないしP26
を介してプログラムROM10に入力され、RAMアド
レスはピンP74ないしP91を介してRAM6及び8
に入力される。ホストCPUからのROM及びRAMデ
ータ入力は、ROMデータバス及びピンP28−P35
及びピンP93ないしP100を介してそれぞれROM
10に適当に入力される。
【0040】マリオチップ2は前記したROMおよびR
AMに加えて広範囲の異なるメモリデバイスに接続して
使うこともできるということを注意すべきである。例え
ば、マリオチップ2はCD−ROMを用いたビデオゲー
ムシステムにも有利に適用することができる。
【0041】例えば、図1においてROM10を用いる
代わりにCD−ROM(図示せず)をキャラクタデー
タ、プログラムインストラクション、ビデオ、グラフィ
ック及び音データを格納するのに用いることができる。
公知のタイプのCDプレーヤー(図示せず)はデータを
アクセスするためのアドレスバスP2−P26を介して
メモリ・アドレス信号及びデータバスP28−P35を
介してインストラクションを受信するため、マリオチッ
プ2に接続される。CDプレーヤー及びCD−ROM格
納システムの構造及び動作の詳細は当業者によく知られ
ている。CD−ROM格納方式による1つの利点は情報
1バイト当たりの格納コストを大幅に減少できることで
ある。データは半導体ROMに格納する場合に比して1
00ないし1000パーセント減のコストで格納でき
る。しかしながら、CD−ROMの場合のメモリ・アク
セス及び読み出し時間は半導体ROMの場合に比して長
くなる。
【0042】マリオチップ2は情報が並行に利用できる
ように少なくとも3つのバスを有するアーキテクチャを
採用している。この点、図1に示したゲームカートリッ
ジではマリオチップ2はROMバス(ROMデータライ
ン、ROMアドレスライン及び制御ラインを含む)、R
AMバス(RAMアドレスライン、RAMデータライン
及び制御ラインを含む)及びホストプロセッサバス(ホ
ストアドレス、データ及び制御ラインを含む)に接続さ
れる。
【0043】マリオチップアーキテクチャはスループッ
トを最適化するために並行処理を可能とする。この点に
ついて、マリオチップ2は3−Dグラフィック処理が効
率的に行えるようにRAMに対してさらなるデータを書
き込みながら、かつデータを処理しながらROMからデ
ータを読み出すことができる。以下に説明するようにマ
リオチップ2は内部的には16ビットアーキテクチャー
を用いており、さらに8ビットROM10及びRAM
6,8のチップとインターフェイス可能に設計されてい
る。内部的にはすべての内部データバス及び内部レジス
タは16ビットである。ROM10からの読み出し及び
RAM6,8への書き込みは、バッファーを介して行わ
れ、従ってプログラムの実行はスローダウンされない。
【0044】同様にマリオチップ2はCD−ROMから
のインストラクション及びグラフィックデータをアクセ
スすることができ、かつホストプロセッサ即ちスーパー
NES図形処理ユニット(PPU)のビデオRAMへの
相続くDMA転送のために、その情報をRAM6,8に
書き込む。当業者であれば、マリオチップ2がRAMの
格納及びアクセス操作をバイパスすることによってCD
−ROMからのデータ転送を直接にPPUのビデオRA
Mに行えるようにプログラムすることができることが認
識できるであろう。マリオチップ2の極めて高速の処理
速度はCD−ROMの読み込みアクセス時間が比較的長
いにも拘わらず図形処理にCD−ROM格納方式の実際
的な使用を可能にする。ビデオ及びオーディオデータは
CD−ROMに格納する前に公知のデータ圧縮技術を用
いて圧縮される。データの圧縮及び伸長技術は当業者に
よく知られている。CD−ROMから圧縮データをアク
セスした後、マリオチップ2は従来の図形処理装置より
も遥かに短い時間で公知のデータ伸長アルゴリズムを用
いてデータを伸長する。マリオチップ2は21MHzの
クロックで動作するので、マリオチップ2はRAM6,
8へのデータ転送に要する所定の時間内に圧縮を完了す
ることができる。
【0045】かくして膨大な量のビデオ及びオーディオ
データ(圧縮された形で)は標準的なCD−ROMのア
クセス時間内にアクセスされる。しかしながら、比較的
長いアクセスタイムによる影響はマリオチップ2による
データ伸長の後にあっては、データ1バイト当たりの実
際のアクセスタイムが十分に減少されるため、最小化さ
れる。伸長を実行するマリオチップ2に対してホストグ
ラフィックスプロセッサ即ちスーパーNESのPPU2
4は自由に他の処理を実行することができる。もちろ
ん、実際の応用に際して速度が実際の問題とならない場
合には、マリオチップ2はCD−ROMからデータを圧
縮されない形でアクセスすることができる。
【0046】カートリッジは、スタティックRAMが使
用されている場合には、バッテリーバックアップを備
え、バックアップバッテリー12は抵抗Rを介して公知
のバックアップバッテリー回路にスタティックRAMの
ためのバックアップ電圧(RS−RAM)及びスタティ
ックRAMチップセレクト信号RAMCSを与え、電源
がオフされた場合にデータのセーブを行なう。
【0047】付加的にはオプション設定用抵抗16がR
AMアドレスバスに接続される。通常の動作では、マリ
オチップ2のアドレスラインはRAM6,8に接続され
る。しかしながら、リセットもしくは電源オンの操作の
間、これらのアドレスラインは所定の電圧VCCに接続
されるか、アースに接続されるかに依存して、ハイもし
くはロー信号を発生するための入力ラインとして使用さ
れる。この方法で“1”または“0”が内部マリオチッ
プレジスタ内に適当に読み込まれる。リセットの後、こ
れらレジスタの設定に依存してマリオチップ2は多重ク
ロック率、マリオチップ2が接続されるRAMへのアク
セスタイム、マリオチップ2内における他の操作に使わ
れるべきクロック率等を(プログラム実行中に)決定す
る。これらオプション設定用のレジスタを用いることに
よって、マリオチップ2は例えばマリオチップ2のデザ
インの修正を何ら要することなく、種々のタイプのメモ
リ装置と共用しうる構成とすることができる。例えば、
ダイナミックRAM設定が検出された場合、リフレッシ
ュ信号が適当な時間に印加される。さらに、オプション
設定は例えばプロセッサの積算回路が動作してある積算
インストラクションを実行することができるよりも速い
速度で、グラフィックスプロセッサが他のインストラク
ションを実行しうるような速度に制御するために用いる
ことができる。このようにして、遅延された積算の実行
を開始することによって、他の残りのインストラクショ
ンはそうでなければ不可能であるような速いクロック率
で実行することができる(即ちプロセッサは例えば30
MHzで動作し、一方オプション設定は積算インストラ
クションを15MHzで実行しうるような設定とするこ
とができる)。
【0048】図2は、図1で示したゲームカートリッジ
が接続できるように設定されたホストビデオゲームシス
テムのブロック図である。図2は例えば、ニンテンドウ
・オブ・アメリカにより実際に販売されているスーパー
NESを示している。本発明はしかしながら、図2に示
すようなブロック図を有するスーパーNES関連の応用
やシステムに限定されるものではない。
【0049】スーパーNESはそのコントロールデッキ
20内に16ビットホストCPU22(例えば6581
6コンパチブルマイクロプロセッサ)を備えている。C
PU22には128Kバイトの容量を有するワーキング
RAM32と接続される。CPU22は図形処理ユニッ
ト(PPU)24に接続されており、この図形処理ユニ
ットは例えば32Kワードの容量を有するビデオRAM
30に接続されている。CPU22は垂直もしくは水平
なブランキング(帰線)期間の間にPPU24を介して
ビデオRAM30とアクセスする。このようにして、C
PU22はPPU24がビデオRAM30をアクセスし
ているときに、実際のラインスキャン期間以外の期間
(すなわち帰線期間)においてのみPPU24を介して
ビデオRAM30にアクセスすることができる。PPU
24はビデオRAM30からユーザのテレビジョン36
にビデオディスプレイを生成する。CPU22はワーキ
ングRAM28に接続されたオーディオ処理ユニットA
PU26にも接続されている。このAPU26は、市販
されているサウンドチップを用いて構成することがで
き、ゲームカートリッジのROM10に記録されたビデ
オゲームプログラムによって指定される音を発生する。
CPU22はAPU26を介してのみ動作RAM28に
アクセスすることができる。PPU24とAPU26は
RF変調ユニット34を介してユーザのホームテレビジ
ョンに接続される。
【0050】スーパーNES内のビデオRAM30には
カートリッジ(ゲームプログラムのみならずゲーム中に
自由に使用されるキャラクタデータをも格納している)
内のプログラムROM10内に格納されたキャラクタデ
ータとがロードされる必要がある。表示されるべき移動
物体例えばスプライト情報やバックグラウンド情報は使
用前にビデオRAM30内に存在していなければならな
い。プログラムROM10は1に示すプリント回路基板
のエッジコネクタ1に連結された嵌合コネクタ18を介
してCPU22のホストアドレスおよびデータバスによ
ってアクセスされる。PPU24は共有されたホストC
PUのデータおよびアドレスバスおよびコネクタ23を
介してゲームカートリッジに連結されており、それによ
ってカートリッジに連結されるPPUのデータおよび制
御信号のための経路を与える。APU26は共有された
ホストCPUのバスおよびオーデオバス27を介してゲ
ームカートリッジに接続される。
【0051】CPU22のアドレススペースは、RA
M、ROM10の位置が0から始まり典型的には32キ
ロバイトの複数のセグメントに分割されるようにマッピ
ングされている。RAM、ROMはCPUのアドレスス
ペースの約1/2を使用する。CPUアドレススペース
の各32キロバイトセグメント内の先頭位置は典型的に
はワーキングRAM32および各種のレジスタを指定す
るのに利用される。プログラムROM10は例えば4メ
ガバイトである。スーパーNES内において使用される
CPU22はプログラムROM10の全体をアドレスす
ることができる。一方マリオチップ2は、16ビットプ
ログラムカウンタを有しており、したがってプログラム
ROM10内の32キロバイトバンク間において選択す
るためのバンクレジスタを備えている。
【0052】実施形態において、マリオチップ2はスー
パーNESのメモリマップに対応する24ビットアドレ
ススペースを有している。このマリオチップは$00:
8000において始まる位置にROM10を備えてい
る。また、カートリッジ上のRAMチップ6,8は$7
0:0000位置からスタートしている。なお、記号
「$」は16進表示を示し、上位2桁でバンク番号、下
位4桁でアドレスを表す。
【0053】カートリッジ上のROM10およびRAM
6,8は分離されたバス上に存在しているので、それら
はマリオチップ2によって並行にアクセスすることがで
きる。RAM6,8はROM10よりも速い速度でアク
セスされることができ、かつマリオチップ2はこの利点
を利用するように設計されている。マリオチップ2はス
ーパーNES内にあるいかなるメモリに対してもアクセ
スすることはできない。すなわちワーキングRAM32
およびPPUビデオRAM30に対してはアクセスしな
い。
【0054】マリオチップ2によってデータを処理する
あるいはビットマップ内に描画する時にはデータはマリ
オカートリッジRAMチップ6,8内に収納されていな
ければならない。かくして、スーパーNESのCPUプ
ログラムとマリオチッププログラムの間で共有されるよ
うな変数はカートリッジRAMチップ6,8内に存在し
なければならない。マリオチッププログラムが使用する
のに必要な予め格納されたデータはROM10内に格納
することができ、変数はRAM6,8内に存在する。ス
ーパーNESプログラムのみに要求される変数はカート
リッジRAM6,8に存在する必要はない。実際このR
AM6,8はメモリスペースとの関係において余分に存
在するので優先的な要求度をカートリッジRAM6,8
に与えることが有利である。マリオチップが書込むビッ
トマップはマリオカートリッジRAM6,8内に存在し
ており、各ビットマップフレームが完全に満たされた時
にスーパーNESの制御下でPPUのビデオRAM内に
転送されるDMAでありうる。
【0055】スーパーNESのCPU22はマリオチッ
プがあたかも存在していないようにスーパーNESのコ
ントロールデッキ内のすべての内部ラムに対してアクセ
スすることができる。マリオチップ2はこれらRAMを
アクセスすることはできず、従ってマリオチップROM
/RAMチップとスーパーNESの内部RAM間で転送
されるすべてのデータはCPU22自身によって開始さ
れなければならない。データはCPU22のプログラミ
ングもしくはDMA転送を介してブロック移動される。
カートリッジROM10およびRAM6,8は全てのゲ
ームプログラム上で通常のごとくマップされている。
【0056】CPU22はCPU22がカートリッジR
OMもしくはRAMチップに対して一時的にアクセスで
きるような制御を有している。電源の投入時もしくはリ
セット状態においてマリオチップ2はオフされ、CPU
22はカートリッジROMおよびRAMチップに対して
全面的にアクセスすることができる。マリオチップがプ
ログラムを実行するためにはCPU22のプログラム
が、ROMおよびRAMチップのいずれか一方好ましく
は両方に対してのアクセスを放棄すること、および与え
られたタスクをマリオチップが利用するまで待つか、も
しくはCPUがあるいくつかのコードを内部ワーキング
RAM32にコピーし、そこで実行させることができ
る。
【0057】マリオチップはプログラム可能でスーパー
NESのCPU側から読み込みが可能な多数のレジスタ
を備えている。これらは$00:3000から始まるC
PU22のメモリマップ内にマップされている。
【0058】図2に示されるように、スーパーNESは
多数の制御信号を発生しかつ受信する。スーパーNES
のCPU22がプログラムROM10をアクセスする必
要があるときには制御信号ROMSILを発生する。メ
モリのリフレッシュを開始するために、スーパーNES
はリフレッシュ信号RFSHを発生する。マリオチップ
2がある操作を完了したときには、スーパーNESのC
PUに備えられたインタラプトリクエストラインにイン
タラプト信号IRQを送る。CPU22はさらに読み込
みおよび書き込み信号を発生する。
【0059】システムのタイミング信号はコントロール
デッキ20内のタイミング連鎖回路21から発生され
る。電源オン/リセット信号はメインコントロールデッ
キ20内において発生されゲームカートリッジに入力さ
れる。
【0060】スーパーNESは前記米国特許第4,79
9,635号にしたがってカートリッジ上の認証処理装
置3の入力I,出力OおよびリセットR導体上でデータ
を交換する認証処理装置25をさらに含んでいる。処理
装置25は米国特許第4,799,635号に開示されて
いるように、認証が成立するまでCPU22をリセット
状態に保持する。スーパーNESビデオゲームマシン
は、図2にブロック状態で示されているが、図式的に図
示されているに過ぎない。PPU24を含むスーパーN
ESに関するより詳細なことは、例えば1991年4月
10日に出願されたビデオ処理装置と題する前記米国特
許出願第07/651,265号に図式的に示されてお
り、この出願は前述したごとく本願と密接に関連してい
る。スーパーNESとゲームカートリッジ間において、
情報がどのように転送されるか等のさらなる詳細は19
91年8月26日に出願された“ダイレクトメモリアク
セス装置(略称「DMA」)およびそれに使用される外
部格納装置”と題する前記米国特許出願第07/74
9,530号および1991年11月19日に出願され
た“画面表示装置およびそれに使用する外部格納ユニッ
ト”と題する米国特許出願第07/793,735号
(対応日本出願:特願平2−315004号、特開平4
−185081号公報)に開示されており、これらの出
願は本出願の参考文献として引用される。
【0061】いくつかの応用においては本発明者は、実
際に可能である、より多くの情報がホストプロセッサD
MA回路を用いて垂直ブランキング期間に転送される必
要があるということを認識している。その結果として画
面サイズがわずかに縮小される場合でも垂直ブランキン
グ期間を拡張することが望ましい。このようなやり方
で、処理速度および画面の更新率との関連において顕著
な利点が得られる。
【0062】図3は図1に示したマリオチップおよび他
のカートリッジ構造を格納するゲームカートリッジケー
ス19のデザインを示す斜視図である。同様に図3は図
2に示したスーパーNESビデオゲームハードウェアを
格納するためのビデオゲームコントロールデッキ20を
格納する外部構造の斜視図をも示している。このような
ビデオコントロールデッキ20およびそれに付属する取
り外し可能なゲームカートリッジ19のデザインは、T
Vゲームマシンと題する1991年8月23日出願の米
国特許出願第07/748,938号(対応日本出願:
実願平3−74600号、実開平4−88993号公
報)の図2から図9に示されており、この出願は、本出
願の参考文献として引用される。
【0063】図4および図5は、図1に示されたマリオ
チップ2のブロック図を示している。図4および図5に
示された各種のバスについてまず説明すると、インスト
ラクションバスINSTRはインストラクションコード
をマリオチップの各種の構成要素に伝達する8ビットの
バスである。X,Y,およびZバスは16ビットのデータ
バスである。HAバスは本実施形態においては、使用時
にスーパーNESのアドレスバスに接続される24ビッ
トのホストシステムアドレスバスである。HDバスは使
用に際してスーパーNESのデータバスに接続される8
ビットのホストデータバスである。PCバスはチッププ
ログラムカウンタ(すなわちレジスタブロック76内の
レジスタR15で示される)の出力をシステム要素に接
続するための16ビットのバスである。ROM Aバス
は20ビットのROMアドレスバスである。ROM D
バスは8ビットのROMデータバスである。RAM A
バスはRAMアドレスバスである。RAMD−INバス
は8ビットのRAMリードデータバスであり、RAMD
−OUTは8ビットのRAMライトデータバスである。
【0064】マリオチップ2とスーパーNESは、マリ
オチップ2とスーパーNES間のデータの通過のための
主な手段として機能するカートリッジラム6,8を共有
している。スーパーNESはアドレスおよびデータバス
HAおよびHDを介してマリオチップ2を接続する。マ
リオチップ2のレジスタ76はスーパーNESのアドレ
スバスHAを介してスーパーNESによりアクセスされ
る。
【0065】スーパーNESはマリオチップ2を介して
カートリッジ19のプログラムROM10およびRAM
6,8をアクセスする。ROMコントローラ104およ
びRAMコントローラ88はそれぞれROMおよびRA
Mメモリのアクセスを開始するためにスーパーNESに
よって発生されたメモリアクセス関連信号を受信する。
たとえば、RAM選択信号RAMCSはスーパーNES
がRAMを指定しようとしていることを確認するために
マリオチップ2によって使用される。
【0066】図4と図5に示されたX,YおよびZバス
はマリオチップ2の内部データバスである。XバスとY
バスはソースデータバスであり、Zデータバスはデステ
ィネイションバスである。これらのバスは16ビットの
パラレルデータを搬送する。
【0067】マリオチップ2はインストラクションを実
行しながらXおよび/またはYバスのインストラクショ
ンのためのデータおよびZバスへのデスティネイション
データのソースを出力することができる。たとえば、2
つのレジスタの内容を加算しその結果を第3のレジスタ
に入力するといったインストラクションを実行している
間に、演算およびロジックユニット(ALU)50はXお
よびYバスを介して2つのソースレジスタの内容を受信
し、その結果をZバス(換言すればブロック76内の特
定のレジスタに連結される)に出力する。マリオチップ
2内のインストラクション解読回路60によるあるイン
ストラクションの操作コードの解読から得られる制御信
号は、あるADD操作を開始するためALU50に接続
される。
【0068】図1に関連して説明したように、マリオチ
ップ2は信号を並行に伝達することができるROMバ
ス、RAMバスおよびスーパーNESホストバスに連結
されている。マリオチップ2はホストシステムが実行し
ている操作を決定するためホストスーパーNESバスか
ら伝達される制御信号、アドレス信号およびデータ信号
をモニターする。カートリッジROMバスおよびカート
リッジRAMバスはある与えられた時間にスーパーNE
Sの操作が実行されている状態に依存して並行にアクセ
スすることができる。従来のスーパーNESゲームカー
トリッジにおいては、RAMとROMに直接に接続され
ており、その結果RAMとROMは並行にデータをアク
セスすることができなかった。
【0069】本発明の一つの実施態様によれば、マリオ
チップは図1に示したように、ROMバスおよびRAM
バスをスーパーNESのバスから物理的に分離してい
る。マリオチップ2はスーパーNESバス上に転送され
るシグナルをモニターするとともに、時分割されていな
いROMおよびRAMバスを介してROMチップおよび
RAMチップに接続する必要がある信号を決定する。
【0070】ROMバスとRAMバスを分離することに
よって、マリオチップ2はROMから読み込みかつRA
Mへ書き込む動作を同時に実行することができる。この
ような方法によって、マリオチップ2はこのアクセス時
間よりもかなり遅いアクセスタイムを有する安価なRO
Mチップを効率的に使用することができ、アクセスする
以前に完了されるべきROMアクセスを待つ必要がなく
なる。
【0071】図4に戻って、前記したごとくマリオチッ
プ2は完全にプログラム可能なプロセッサであり、かつ
一つのALU50を備えている。ALU50は乗算器2
6によって処理される乗算処理およびプロットハードウ
ェア52によって処理される画素プロット操作を除いて
マリオチップ2内で実行されるべきすべての演算機能を
実行することができる。インストラクションデコーダ6
0からのある制御信号を受信すると、ALU50は加算
・減算・排他的オア,シフトおよび他の操作を実行す
る。図4に示されるようにALU50はX,Yバスから
操作されるべき情報を受信し、インストラクションデコ
ーダ60から受信した制御信号によってその操作を実行
し、かつその演算の結果をZバスに出力する。ALU5
0は図7に関連してさらに詳細に説明される。
【0072】マリオチップ2は種々の特徴を備えたビデ
オゲームが実際に実現されるよう、効率的に実行される
べき3−Dタイプの特別な効果や他のグラフィックス操
作を実行するための特別な目的のハードウェアを備える
ことができる。この点マリオチップ2は、リアルタイム
で画素座標系のアドレスからスーパーNESにおいて利
用されているキャラクタマップアドレスへの変換を助け
るようなプロットハードウェア52を備えることができ
る。より有利なことには、マリオチップ2はディスプレ
イスクリーン上の各画素の位置を定義するXY座標を特
定することによってプログラムすることができる。
【0073】かくして、グラフィック動作はプログラマ
が指定した画素に依存して実行され、フライ上のプロッ
トハードウェア回路52は画素仕様を適当にフォーマッ
トされたキャラクタデータに変換する。キャラクタデー
タは、その後図2に示すスーパーNESのビデオRAM
30内の所望の位置に表示のためマップされる。この方
法で、マリオチップのプログラマーは、スーパーNES
のビデオRAM30を、実際にはキャラクタマップであ
ったとしても、ビットマップと考えればよい。
【0074】プロットハードウェア52は特定の画素に
対する表示スクリーン上でのXおよびY座標並びに所定
の色のプログラム可能に選択できかつ、スーパーNES
のビデオRAM30を駆動するのに用いられる形式のキ
ャラクタデフィニション(定義)に対応するアドレスに
XおよびY座標を変換するように、対応する画素をプロ
ットする種々の画素に関連するインストラクションに対
応する。
【0075】プロットハードウェア52は、RAMデー
タトランザクションを最小限とするため、カートリッジ
RAMへの書込みに先立ってできるだけ多くの画素デー
タをバッファするための付属のデータラッチを有する。
X,Y座標データが変換されプロットハードウェア52
内でバッファされた後、キャラクタ定義データは、カー
トリッジRAMに転送される。
【0076】プロットハードウェア52はPLOTXレ
ジスタ56およびPLOTYレジスタ58を介してX,
Y座標データを受取る。本実施形態において、PLOT
X,PLOTYレジスタは、図4では分離されたレジス
タとしては図示されていないが、むしろマリオチップ内
の汎用レジスタ(図4のレジスタブロック76内のレジ
スタR1,R2)を用いればよい。プロットハードウェア
52は、カラーレジスタ54を介して画素の色情報を受
取る。以下に説明するように、表示される各画素の色は
8×8のレジスタマトリックスに格納され、そのマトリ
ックスの1列は各画素の色仕様のデータに割当てられて
いる。
【0077】プロットハードウェア52は、キャラクタ
RAM6,8に入力される座標X,Yおよび色に関連する
キャラクタアドレスおよびデータを処理し、かつ結合す
る。キャラクタアドレスは、出力ライン53を介してR
AMコントローラ88とRAMアドレスバスRAMAに
送られる。キャラクタデータは、出力ライン55,マル
チプレクサ93およびRAMデータバスRAMD_OU
Tを介してキャラクタRAMに送られる。プロットハー
ドウェア52は、スーパーNESのキャラクタフォーマ
ットとの互換性を維持しながらプログラマに仮想的なビ
ットマップ表示システムを与えるために、個々に指定さ
れるべきキャラクタ内の画素を許容する。この仮想的な
ビットマップはカートリッジRAM内に保持され、例え
ば前記米国特許出願第07/749,530号の開示さ
れたDMA回路を用いて、各フレーム毎の表示の完了に
際してスーパーNESのビデオRAM30に転送され
る。プロットハードウェアは高速の個別画素制御を可能
とし、それによって対象物体の回転やスケーリングを含
む3−D機能を実際に実現できるようになる。
【0078】画素からキャラクタフォーマットへの変換
によって、プロットハードウェア52は、データラッチ
482内のRAMD_inおよび入力ライン83を介して
カートリッジRAM6,8から現在扱っている画素X,Y
の近傍の他の画素に関連する情報を受取ることができ
る。RAM6,8から検索され、かつRAMデータラッ
チに一時的に格納された先の画素データを用いることに
よって、RAMに対する書込み回数を最小化することが
可能となる。図4に示すRAMデータラッチ80,84
および86は、プロットハードウェア52に、カートリ
ッジRAMの多重ビット面内に格納された画素に関して
受信された色データをバッファする役割を有する。
【0079】RAMデータラッチ80は、スーパーNE
Sがデータラッチの内容を読込むことができるように、
スーパーNESデータバスに連結されている。RAMデ
ータラッチ80,82,84および86は、RAMコント
ローラ88によって制御される。RAMデータラッチ8
4および86は、RAM6,8からデータを受取るよう
に動作し、レジスタブロック76の所定のレジスタにロ
ードするための所定のデスティネイションZバスにRA
M6,8からデータを送る。ラッチ90は、RAMコン
トローラ88に接続されておりRAMアドレスはバッフ
ァする。ラッチ90内に格納されたアドレスは、RAM
Aバスを介してRAM6,8を指定するためRAMコン
トローラ88によって利用される。RAMコントローラ
88はアドレスバスHAを介してスーパーNESにより
アクセスされる。
【0080】プロットハードウェア52は、レジスタR
1の内容により規定された水平位置およびレジスタR2
の内容により規定された垂直位置の画素色情報を読出し
て、その結果をデスティネイションZバスおよび出力ラ
イン87を介してレジスタブロック76内の所定のレジ
スタに格納するREAD PIXELインストラクショ
ンにも応答する。
【0081】このPLOTハードアェア52については
図8、図9および図10の説明に関連してより詳細に説
明する。パイプラインバッファレジスタ62およびAL
Cコントローラインストラクションデコーダ60は、イ
ンストラクションバスINSTRに接続され、インスト
ラクションバス上のコマンドに対応して動作を開始する
ため制御信号CTL(マリオチップで利用される)を発生
するように動作する。マリオチップ2は、現在のインス
トラクションを実行しながら、次に実行されるべきイン
ストラクションを取込むことができるパイプライン化さ
れたマイクロプロセッサである。パイプラインレジスタ
62は、もしも可能であれば、1つのサイクルにおいて
複数のインストラクションの実行を可能とするように、
実行されるべき次のインストラクションを格納する。イ
ンストラクションバス上のインストラクションは、ある
レジスタ、例えば図5に示したレジスタブロック76内
のレジスタR15に格納されたプログラムカウンタの内
容によって指定される。
【0082】マリオチップ2によって実行されるインス
トラクションは、図1に示したプログラムROM10又
はマリオチップの内部キャッシュRAM92から、また
はカートリッジRAM6,8のいずれかから得られる。
もしもプログラムがROM10からのものについて実行
されているときには、図5に示すROMコントローラ1
04がインストラクションを取込み、マリオチップのイ
ンストラクションバスINSTRに出力する。プログラ
ムインストラクションがキャッシュRAM94に格納さ
れている場合には、キャッシュRAM出力バス95を介
してキャッシュRAM94からインストラクションバス
に直接に出力される。
【0083】ホストCPU即ちスーパーNESは、プロ
グラムROM10の一部分をマリオチップのプログラム
インストラクションとして割当てる。スーパーNESの
プログラムは、マリオチップに所定の機能を実行するよ
う命令し、マリオチップのプログラムコードをアクセス
するため、マリオチップにROM10内のアドレスを与
える。パイプラインレジスタ62は、プログラム実行中
に関連する処理を先に知ることができるよう、次に何が
起きようとしているのかをインストラクションデコーダ
60が予想しうるように、インストラクションデコーダ
60にインストラクションに関連する情報を与えるため
に、現在実行中のインストラクションの1バイト前のイ
ンストラクションを取込む。ブロック60内のデコード
および制御回路は、実行中のインストラクションコード
によって指示された動作を実行するため、ALU50,
プロットハードウェア52,キャッシュコントローラ6
8等に命令するための制御信号を発生する。
【0084】マリオチップ2はALUからは分離された
高速の並行乗算器64を備える。乗算器64は、所定の
インストラクションに応答してX,Yソースバスから受
信した2つの8ビットの数を乗算し、その16ビットの
結果をデスティネイションZバスに出力する。この乗算
動作は可能であれば1サイクル内で実行される。乗算器
64に入力される数は符号付きか符号なしかである。乗
算器64は、2つの16ビット数を乗算して32ビット
の結果を得るといった長い乗算を実行することができ
る。乗算器64は、乗算動作中に生成される部分積を格
納するため、付属の部分積レジスタ66を備えている。
乗算器64は、乗算動作コードがデコードされたとき
に、インストラクションデコーダ60からの制御信号に
よって能動化される。乗算器64は、16ビットワード
の乗算の如き長い乗算を最小4クロックサイクルの間に
実行する。
【0085】長い乗算インストラクションは以下のフォ
ーマットを有する。 R4(low word),DREG(high word)=Sreg*R
6. このインストラクションは、ソースレジスタの内容をレ
ジスタR6の内容で乗算し、32ビットの結果をレジス
タR4/DREG(low/high)に格納することによって
実行される。乗算は符号付けされ、32ビットの結果に
ゼロおよび符号フラグがセットされる。
【0086】動作は以下の計6個のステップにしたがっ
て行われる。 ステップ1: 符号なし乗算R4[0...15]= SREG[0...7]*R6[0...7] ステップ2: 符号付X.R4[0...15]=R4[0...15] +256*SREG[8...15]*R6[0...7]. 積の上位8ビットは無視されるが、桁上げは保持される。 ステップ3: 符号付X.R5[0...15]=CY+(R6[8...15]* SREG[0...7])÷256;符号拡張 ステップ4: 符号なしX,符号付Y.R4[0...15]= R4[0...15]+256*SREG[0...7]* R6[8...15]. 積の上位8ビットは無視されるが、桁上げは保持される。 ステップ5: 符号付Y.R5[0...15]=R5[0...15]+ CY+(SREG[0...7]*R6[8...15])÷256; 符号拡張 ステップ:6 符号付X,Y.R5[0...15]=R5[0...15]+ RY[8...15]*R6[8...15].
【0087】本実施形態で用いられる乗算器64は、マ
グローヒル社(McGraw−Hill),1984年出版のキャ
バナウ(Cavanaugh)著、デジタルコンピュータ アリス
メティック(Digital Computer Arithmetic)に記述さ
れた型式のものを用いることができる。
【0088】図5に戻って、キャッシュコントローラ6
8(図18により詳細に示されている。)は、高速で実行
されることが望ましいプログラムの部分のキャッシュR
AMへのローディングを効率的に開始することを許容す
る。このようなキャッシングは、図形処理においてしば
しば起る小さなプログラムループの実行に利用される。
マリオチップのインストラクションセットは、キャッシ
ュCACHEインストラクションを含む。CACHEイ
ンストラクションの直後のインストラクションは、キャ
ッシュRAMが一杯になるまでキャッシュRAMにロー
ドされる。CACHEインストラクションが実行される
と、現在のプログラムカウンタの状態はキャッシュベー
スレジスタ70にロードされる。かくしてキャッシュベ
ースレジスタ70の内容はキャッシングが開始された出
発位置を規定する。
【0089】大部分のインストラクションは1サイクル
中で実行される。ROM10やRAM6,8のような比
較的低速の外部メモリからのインストラクションは、そ
れらが実行される以前に取込まれなければならない。こ
の取込みは、6サイクル程度の時間を要する。プログラ
ム実行速度を向上させるためには、マリオチップ2内に
あるキャッシュRAM94が使用される。
【0090】キャッシュRAM94としては、512バ
イトのインストラクションキャッシュを使用できる。こ
のサイズは、平均的なプログラムのサイズに比べれば相
対的に小さいので、プログラマはキャッシュメモリ94
をいかに最適に利用するかを考慮しなければならない。
512バイトのキャッシュサイズに組込むことができる
プログラムループは、取込みと実行の両方が1サイクル
で行えるような高速で実行することができる。バスを分
離しているため、ROMとRAMの両方は、内部キャッ
シュ94からのコードを実行しながら同時にアクセスす
ることができる。
【0091】キャッシュRAM94は、回転およびスケ
ーリングの計算を実行しながら各画素の色をROM10
から読出すループをキャッシュ94内で走らせることに
よってスプライトを回転させる一方、画素をRAM6,
8に書込むためPLOTインストラクション(これにつ
いては以下に説明する。)を使用するのに有利に使用す
ることができる。全てが並行に行われるため、本来なら
ば最も遅い動作によって速度が低下されるスループット
を著しく高速化することができる。最も低速の動作は通
常ROMのデータの取込みであり、マリオチップがRO
MとRAMに対してバッファアクセスを用いる設計とし
た理由もこゝにある。
【0092】比較的低速のROM10からの実行に比し
て、キャッシュRAM94からのプログラムの実行は約
6倍の速さで走らせることができるが、その場合でもそ
のプログラムはROM10からキャッシュRAM94に
ロードされなければならない。これは、キャッシュされ
るべきループのスタートにあるインストラクションを設
けることによって行われる。CACHEインストラクシ
ョンのアドレスから取込まれたループの最初の512バ
イトのみがキャッシュされる。そのループの最初の繰返
しのコードを実行しながら、プログラムはROM10か
ら呼び出され、16バイト構造のキャッシュRAM内に
コピーされる。ループの他の全ての繰返しはROM10
からではなく、キャッシュRAM94から行われる。
【0093】CACHEインストラクションは繰返しプ
ログラムループの前に自由に用いることができる。ある
ループの相続くインストラクションのみがキャッシュ内
に存在することによる利益を受ける。もしもプログラム
ループが512バイトより大きくキャッシュ94をオー
バーフローする場合でも、正しく機能するが、それは最
初の512バイト分がキャッシュ94によって実行さ
れ、残りはROM10によって通常の如く実行される。
したがって、部分的には速度アップになるが理想的では
ない。
【0094】本実施形態において、キャッシュコントロ
ーラ68の一部であるキャッシュタグビットレジスタ7
2はキャッシュRAM94にロードされたメモリ位置を
識別する。このキャッシュタグビットは、プログラムイ
ンストラクションがプログラムROM10よりは高速の
キャッシュRAMによってプログラムインストラクショ
ンが実行可能であるかをマリオチップ2が迅速に決定で
きることを可能にする。キャッシュRAM94は、キャ
ッシュコントローラ68によってアクセスされるか、或
いはスーパーNESアドレスバスHA,マルチプレクサ
96を介してスーパーNESにアクセスされる。
【0095】キャッシュコントローラ68はキャッシュ
ベースレジスタ70にロードし、キャッシュメモリアド
レスの領域外チェック動作を実行するため、プログラム
カウンタバスPCに接続されている。
【0096】ROM10からの読取りにおける並行処理
と同様に、マリオチップ2はRAM6,8への書込みを
並行化する方法を提供する。マリオレジスタがRAM
6,8に書込むときには常に、メモリトランザクション
を実行するため、例えばRAMコントローラ88内の別
に設けたRAM書込み回路を始動させる。これは通常6
サイクルを要するが、プログラマがこの間に他のRAM
トラクザクションの実行を回避するようにすれば、そう
しながらもプロセッサの動作を遅らせることはない。例
えば、各格納インストラクションの間に他の処理を介挿
することは高速化される。この方法でRAM書込み回路
はそのジョブを実行する時間を持つことができる。もし
も2つの書込み回路が行に対して用いられる場合、第2
の書込み回路は、第1の書込み回路が書込みを行ってい
る間、プロセッサを遅延させる。
【0097】例えば、以下に説明するインストラクショ
ンセット中のインストラクションを用いると、表1のよ
うになる。
【表1】 FROM R8 : R8を(R13)に格納 SM (R13) SM (R14) : R0を(R14)に格納 TO R1 FROM R2 ADD R3 TO R4 : r1=r2+r3 FROM R5 ADD R6 : r6=r4+r5
【0098】ここでは2個の格納インストラクションが
互いに接近しすぎていることに注意すべきである。この
場合、RAMバスは第1の格納インストラクションを完
了するためにビジイであるため、第2のものは6サイク
ルより長い処理時間を要する。
【0099】より高速のコード書込みのためには、2つ
の格納インストラクションを他の有用なコードを用いて
適当な間隔に離すことが有用である。例えば;
【表2】 FROM R8 : R8を(R13)に格納 SM (R13) TO R1 FROM R2 ADD R3 : r1=r2+r3の実行 TO R4 FROM R5 ADD R6 : r6=r4+r5の実行 SM (R14): R0を(R14)に格納 この方法で、第1の格納インストラクションがRAMへ
の書込みと同時に2,3の他のインストラクションを並
行に実行することができる。第2の格納動作は2,3サ
イクル後に実行される。
【0100】以下に述べるインストラクションセット
は、レジスタを最後に使われたRAMアドレスに書き戻
すための第1のインストラクションを含む。このこと
は、値をRAMからロードし、それについて何んらかの
処理を施し、その後高速で結果を再格納することによっ
て、データのバルク処理を可能とする。
【0101】図5に戻って、即時データラッチ74はイ
ンストラクションバスに接続される。このデータラッチ
74は、インストラクション自身に、ソースレジスタが
あるインストラクションによって特定される必要がない
ようにデータのソースを与えることを可能とする。即時
データラッチ74の出力は、デスティネイションZバス
に接続され、該バスはレジスタブロック16内のレジス
タの所定の一つに接続されている。インストラクション
デコード回路60は、“即時"デコードインストラクシ
ョンを解読し、レジスタへの転送動作の実行を開始す
る。
【0102】図5に示したGETBレジスタ98は、前
記した遅延され/バッファされる読込み動作に関連して
使用される。この点、相対的に遅いアクセスタイムを有
するROMの広汎な使用下にあっては、従来のプロセッ
サはデータの取込みが完了するまで待機しなければなら
なかった。以下に説明する遅延/バッファ取込み構造を
採用することによって、データの取込みを行いながら他
の動作を行うことができる。この構造によれば、レジス
タブロック76内のレジスタR14がアクセスされるか
何んらかの方法で更新された場合、ROM又はRAM取
込みはR14の内容によって特定されるアドレスにおい
て自動的に開始される。
【0103】図5に示すように、レジスタR14はRO
Mコントローラ104に接続されている。レジスタR1
4の内容が何んらかの方法で更新されるときに、ROM
コントローラ104はROMアクセスを開始するように
動作する。ROMをアクセスした結果はROMデータバ
スROMDに接続されたマルチプレクサ102を介して
GETBレジスタ98にロードされる。以下で特定され
るインストラクションはGETBレジスタ98内でバッ
ファされた情報をアクセスすることを可能にする。この
情報はマルチプレクサ100を介してデスティネイショ
ンZバスに出力され、レジスタブロック76内のレジス
タの一つに入力される。
【0104】このように構成された回路において、もし
ROMからのデータのフェッチが所定数の処理サイクル
だけの時間を要することとして知られているならば、当
該フェッチを初期化することができるとともに、他の動
作を実行することなしに待機する代わりに、例えば、マ
リオチップはそのようなデータのフェッチの初期化が完
了した後に、関係しないコードを実行することができ
る。GET Bレジスタを、図5に示すように、マルチ
プレクサ102を介してRAM6,8から検索される情
報を格納するために利用してもよい。
【0105】16個の16ビットのレジスタ(R0−R
15)はレジスタブロック76内に設けられる。レジス
タR0−R13は、(これらの幾つかのレジスタは後述
するように特別な目的のためにしばしば用いられる
が、)一般の目的のためのレジスタ(ジェネラル)であ
る。上述のように、レジスタR14はメモリからデータ
を読み出すためのポインタとして用いられ、それが変更
されるときROM(又はRAM)からの読み出しサイク
ルが初期化される。読み出された1バイトのデータは、
GET L又はGET Hコマンドによる後のアクセス
のために、テンポラリバッファ(GET Bレジスタ9
8)に格納される。レジスタR15は、プログラムカウ
ンタである。各命令の開始時に、レジスタR15は、フ
ェッチされる次の命令を指し示す。
【0106】レジスタR0は、典型的にはアキュムレー
タとして動作する一般の目的のレジスタである。レジス
タR0はまた、ほとんど1サイクルの命令のためのデフ
ォルトソース及びデスティネーションレジスタである。
例えば、もしレジスタR0及びR4の内容がともに加算
されることが所望されるならば、明確にレジスタR4を
指し示すことのみが必要である。
【0107】あるループ命令が実行されるとき、レジス
タR11,R12及びR13が特に利用される。レジス
タR13は、当該ループの最初で実行されるべき命令の
アドレスを格納し、レジスタR12は、当該ループが実
行されるべき回数を格納する。もしレジスタR12の内
容がゼロでないならば、このときレジスタR13の内容
によって示されたアドレスに格納された命令がプログラ
ムカウンタ(R15)にロードされ、実行される。レジ
スタR11は、当該ループの処理が完了した後、リター
ンすべきアドレスを格納する。
【0108】レジスタ制御ロジック78はレジスタブロ
ック76に接続され、ジェネラルレジスタR0−R15
へのアクセスを制御する。実行される特別な命令のフォ
ーマットに依存して、命令デコーダロジック60は、1
個又はそれ以上のレジスタR0−R15を示すであろ
う。レジスタ制御ロジック78は、実行すべき次の命令
がどのレジスタを利用する必要があるかを示す。レジス
タ制御ロジック78は適当なレジスタの出力をXバス及
びYバスに接続する。さらに、図5によって示されるよ
うに、適当なレジスタR0−R15は、レジスタコント
ローラ78の制御のもとで、Zバスからの情報を受信す
る。
【0109】ROMコントローラ104は、スーパーN
ESのアドレスバスHAとマリオチップのいずれかから
のアドレスの受信時に、そのアドレスをアクセスするで
あろう。ROMコントローラ104は図17においてさ
らに詳細に図示される。ROM10からアクセスされた
情報を高速の命令の実行のために、キャッシュRAM9
4にロードしてもよい。ROMコントローラ104及び
RAMコントローラ108の両方は、スーパーNESの
アクセスの試行とマリオチップのアクセスの試行との間
の調停を行うバスアービトレーション装置を有する。
【0110】さらに後述するように、マリオチップはま
た、(例えばレジスタブロック76内又はRAM6,8
内の)複数のステータスレジスタを利用し、これらの複
数のステータスレジスタはスーパーNESのCPUによ
ってアクセス可能であって、例えば次のようなステータ
スの状態を識別するための複数のフラグを格納する:す
なわち、複数のステータスレジスタは、0フラグ、キャ
リーフラグ、符号フラグ、オーバーフローフラグ、“ゴ
ー(GO)”フラグ(ここで、1はマリオチップが実行
中であることを示し、0はマリオチップが停止中である
ことを示す);(レジスタR14がアクセスされたこと
を示す)ROMバイトのフェッチインプログレス(フェ
ッチ進行中)フラグ;ALT 1フラグと、ALT 2
フラグと、イミーディエイトバイトローフラグと、イミ
ーディエイトバイトハイフラグと、ソースレジスタとデ
スティネーションレジスタの両方が“WITH”プリフ
ィックスコマンドによってセットされたことを示す複数
のフラグとを含む複数のフラグを示す種々のモードと、
割り込みフラグとを格納する。
【0111】図4及び図5におけるブロック図で図示さ
れたマリオチップは、1秒当たり複数のタスクを多数回
実行するために、マリオチップをオンし又はオフするス
ーパーNESによって利用される。まず最初に、スーパ
ーNESがオンされたとき、ROM10に格納されたゲ
ームプログラムがブートアップされる。なお、スーパー
NESプロセッサ及びマリオチッププロセッサによるゲ
ームプログラムの実行の前に、ゲームカートリッジに対
してまず認証処理が行われる。
【0112】マリオチップはまず最初に、スイッチオフ
の状態にされる。次いで、適当なタイミングで、スーパ
ーNESはゲームカートリッジのプログラムROMとゲ
ームカートリッジのRAMへの制限されないアクセスを
行う。スーパーNESはグラフィックの処理又は数学的
な計算とのいずれかを実行するためにマリオチップの処
理能力を用いる必要性を有するとき、スーパーNES
は、それがマリオチップに対してカートリッジRAMに
おいて(又は予め決められた複数のマリオレジスタにお
いて)処理することを所望する適当なデータを格納し、
そのデータを、マリオチップのプログラムカウンタに実
行すべきマリオプログラムのアドレスでロードする。マ
リオチップによって処理すべきデータは、回転すべきで
あって拡大又は縮小すべき複数の物体の予め決められた
X座標及びY座標データであってもよい。マリオチップ
は、変化する複数のスプライト又は移動する物体のバッ
クグラウンド(背景)及びフォアグラウンド(前景)を
操作するためのアルゴリズムを行うプログラムを実行す
ることができる。マリオチップの高速化されたハードウ
エア及びソフトウエアの使用は、そのような動作におい
て高速性能をもたらす。
【0113】複数のスプライトを処理するためのマリオ
チップの使用は、全体のビデオゲームシステムの能力を
かなり拡張させることができる。例えば、スーパーNE
Sは1フレーム当たり128個のスプライトを表示する
ことに制限される。スーパーマリオチップの使用によっ
て、仮想的に、数百のスプライトを表示することがで
き、また、例えば回転することができる。
【0114】マリオチップがスーパーNESによって要
求された機能の処理を完了したとき、STOP(停止)
命令が実行され、マリオチップがその動作の処理を完了
し、次いで次のタスクを実行することの準備が完了して
いることを示すために、割り込み信号が発生され、その
割り込み信号がスーパーNESに送信される。
【0115】マリオチップは、例えば高速の乗算タスク
のような小さなタスクを実行するために利用してもよい
し、もしくは1つのスクリーンを複数のスプライトでフ
ルに描くために利用してもよい。いずれかの場合におい
て、もしRAMバス又はROMバスがマリオチップによ
って使用されているときに、スーパーNESがRAMバ
ス又はROMバスを占有していないならば、スーパーN
ESはマリオチップと並行して自由に処理を行うことが
できる。なお、もしスーパーNESがマリオチップに対
してゲームカートリッジ上でRAMバスとROMバスの
両方の制御を行わせるならば、それにもかかわらず、ス
ーパーNESは図2において図示されたワーキングRA
M32の複数のプログラムを実行してもよい。従って、
実行すべきスーパーNESプログラムをプログラムRO
M10からワーキングRAM32に書込むことによっ
て、全体のシステムのスループットを高くしてもよく、
一方、同時にマリオチップによってある1つのプログラ
ムを実行させてもよい。
【0116】図6に、マリオチップに対してROMから
のコードをフェッチさせた後、要求されたアドレスにつ
いて処理を開始するために、(例えばスーパーNESの
CPUである)ホストCPU22によって実行される
“ランマリオ(RUN MARIO)”プログラムによ
って実行された一連の処理を表すフローチャートが図示
されている。図6によって図示されたルーチンは、典型
的には、プログラムROM10からのルーチンを図2に
図示されたワーキングRAM32に書込んだ後、スーパ
ーNESのCPUによって実行されるであろう。このル
ーチンは、マリオチップがある処理を実行することが要
求されたときはいつでもホストCPU22によって実行
される。
【0117】ランマリオのホストCPU22のルーチン
が実行されたときのステップ125に示すように、スー
パーNESの複数のレジスタを事前にセットすることを
含む初期化処理が実行される。初期化ステップの処理中
において、このルーチンはプログラムROM10からホ
ストCPUのワーキングRAM32に複製される。
【0118】ステップ127に示すように、実行すべき
マリオのプログラムコードを格納するROM10のコー
ドバンクがマリオチップのレジスタにロードされる。さ
らに、当該コードバンク内の実際のアドレスがステップ
129で示されたマリオチップのスクリーンベースレジ
スタに格納される。
【0119】次いで、ステップ131に示すように、4
色、16色又は256色のいずれかのカラーモードが用
いられるかを識別することによって、I/O(入力/出
力)モードがマリオチップにセットされる。これらのモ
ードは、ホストCPU22が動作するカラーモードに対
応する。さらに、スクリーンの高さを表示可能な文字の
数で定義するあるモードがセットされる。
【0120】さらに、ROMバス及びRAMバスの制御
をマリオチップに対して与えるモードビットがセットさ
れる。ROMバス及びRAMバスの制御は、マリオチッ
プが、ROMバス、RAMバス又は両方のバスへのアク
セスを有するモードにセットされるように個別に選択可
能である。従って、もし“マリオオーナー(Mario
owner)”モードがROM10とRAM6,8の
両方に対してセットされたならば、このときホストCP
UはROM10又はRAM6,8からデータを読み出す
ことができず、もしくは書き込むことができない。な
お、もしホストCPU22がプログラムROM10に対
してアクセスを試みる一方、マリオチップがプログラム
ROMバスを使用中であるならば、あるメカニズムが設
けられ、これによってマリオチップはダミーのアドレス
をスーパーNESに戻す。そのようなアドレスヘの分岐
は、マリオチップがもはやカートリッジROMバスに対
するアクセスを要求しなくなるまで、スーパーNESを
占有しつづける。
【0121】ステップ133に示すように、マリオチッ
プのプログラムカウンタのデータがマリオルーチンが実
行しなければならない最初の命令を格納するアドレスに
ロードされた後に、マリオチップは処理を開始する。
【0122】そして、ホストCPU22はマリオチップ
からの割り込み信号を待つ(ステップ135)。割り込
み信号が受信されたとき、スーパーNESは、マリオチ
ップがその動作の処理を終了し停止されたことを知らせ
られる(ステップ137)。もしそのような割り込み信
号が受信されないならば、そのときホストCPU22は
割り込みを待つことを続ける(ステップ135)。スー
パーNESはこの時間周期の間、図2に図示されたその
ワーキングRAM32のプログラムを実行することによ
って、マリオチップの処理と並行してプログラムコード
を実行してもよい。
【0123】次いで、スーパーNESは、(例えばマリ
オチップのレジスタのブロック76における)ステータ
スレジスタをチェックして、マリオチップが動作中であ
ることを示す“GO”フラグがセットされたか否かを決
定する(ステップ137)。さらに、割り込みフラグ
は、マリオチップがホストCPU22によって受信され
た割り込み信号のソースであることを示すために、マリ
オチップのステータスレジスタにセットされる。従っ
て、割り込み信号がホストCPU22によって受信され
た(ステップ135)後、適当なマリオステータスレジ
スタは、(例えば、垂直ブランキング期間を示す割り込
み信号に対立するものとして、)マリオチップが割り込
みのソースであるか否かを決定するためにテストされ
る。もしマリオチップが停止されたならば(ステップ1
37)、そのときRAM及びROMに対するマリオオー
ナーモードのビットがクリアされ、スーパーNESはR
OM及びRAMへのフルアクセスの状態となる。スーパ
ーNESは当該ルーチンを出て(ステップ141)、当
該ランマリオルーチンに入る前に実行していたそのプロ
グラムにおけるポイントに戻る。
【0124】CPU22のゲームプログラムがマリオチ
ップをROMのマリオオーナーモードにセットすると
き、CPU22は自発的にROMをアクセスすることを
停止する必要がある。CPU22が幾つかの理由でRO
Mにアクセスする必要があるときはいつでも、CPU2
2は単にROMのマリオオーナーモードをオフにする。
マリオチップは、マリオチップが次にROMをアクセス
する必要があるときに、再びROMのマリオオーナーモ
ードがセットされるまで自動的に待機状態となるであろ
う。もしマリオチップが内部キャッシュRAMから実行
状態となるならば、このことはまったく必要とされな
い。
【0125】もしマリオチップがROMのためのマリオ
オーナーモードに設定されているならば、CPU22の
ゲームプログラムはROM10から全くデータを読み出
すことを試みないということが重要である。例えば垂直
ブランキングのために、任意の割り込みが生じたとき
に、その割り込みはNMI(Non Maskable Interrupt:最
優先割り込み)を生じさせ、次いで、CPU22は自動
的にROMからのその割り込みのベクトルをフェッチし
ようと試みる。このことは、所望されない。なぜなら
ば、CPU22がROMから離れた後、割り込みが生
じ、CPU22が任意の方法でROMからデータをフェ
ッチすることを、CPU22がマリオチップに明確に知
らせるためである。この状態において、すなわちマリオ
のオーナーモードにセットされたCPU22からのRO
Mのアクセスは、マリオチップに対して、このことが割
り込みのベクトル要求であったように動作させる。
【0126】ROMのマリオオーナーモードにおける割
り込みベクトルのフェッチ処理中において、マリオチッ
プは当該割り込みベクトルをスーパーNESの内部ワー
キングRAM32におけるスタックエリアの最下部に移
動させるであろう。例えば、もし通常の割り込みベクト
ルが$00:FFECであったならば、そのときロケー
ション$00:010Cへのジャンプ(JUMP)を生
じさせる。同様に、ロケーション$00:FFEXから
のすべての複数の割り込みベクトルはCPU22に対し
て、$00:010Xにおけるそれらの対応するロケー
ションへのジャンプ(JUMP)を生じさせる。この技
術は、CPU22がROM10にアクセスするようにな
るときに、CPU22がROM10にアクセスすること
を回避させ、次いで、その代わりに、割り込みベクトル
をボード上のスーパーNESのRAM32に転送させ
る。なお、RAMをベースとする複数の割り込みベクト
ルは、割り込みのハンドラーに対するジャンプ又は分岐
を含む必要があり、すなわち、実際のコードを、ベクト
ルアドレスが存在するところに常駐させる必要がある。
マリオチップはマリオのオーナーモードのROMに存在
しないとき、普通のROMの割り込みベクトルが使用中
であり、それ故、これらのロケーションにおいて指し示
された同一のアドレスを、RAMをベースとする割り込
みベクトルと同一の場所に行かせることを保持させるこ
とが得策である。
【0127】命令セット マリオチップの命令セットは、高速のグラフィックスと
他の処理アルゴリズムをプログラムするための十分な手
段を提供する。ある命令の簡単な記述の後に、種々の命
令によって用いられるある複数のレジスタの記述が続い
て、以下に示される。当該命令セットにおける命令の詳
細なリストがまた提供される。
【0128】複数の命令は、8ビットの命令であり、典
型的には1クロックのサイクルで実行される。しかしな
がら、複数の命令を、8ビットのプリフィックス命令に
よって変形することができる。マリオチップの命令セッ
トは、プログラマーに対して任意の命令の前にデスティ
ネーションレジスタと両方のソースレジスタとを示すこ
とを可能にするユニークなレジスタオーバーライドシス
テムを含む。そのような“プリフィックス”が付けられ
たオーバーライドを用いることなしに、複数の命令はア
キュムレータ上でのみ動作するであろう。従って、命令
セットは、無数の組み合わせを有する可変長の命令セッ
トである。1サイクルで動作する1バイト長の幾つかの
基本命令が提供される。プリフィックスが付けられた命
令を提供することによって、プログラマーは命令の能力
を拡大することができる。ある1つの命令は、プログラ
マーの要望に依存して8ビット、16ビット又は24ビ
ットであることが可能である。
【0129】マリオプロセッサは、高速であってボード
上のキャッシュRAMプログラムの実行と、メモリに対
する、遅延され/バッファされたI/O処理を初期化す
るための複数の命令を利用する。グラフィックスの処理
は、上述の画素プロットのハードウエアを用いて処理を
初期化する1サイクルの画素プロットコマンドを使用す
ることによって十分に可能となる。
【0130】マリオの命令セットを識別する前に、複数
の命令を実行するときにプロセッサによってセットされ
又はアクセスされた種々のメモリがマッピングされたレ
ジスタについて以下に述べる。まず最初に、ステータス
フラグレジスタが識別される。ステータスレジスタは1
6ビットのレジスタであり、当該レジスタにおいて16
ビットの各々のビットに関連するフラグが以下のように
識別される。
【0131】
【表3】 ステータスフラグレジスタ 16ビット ビット フラグ フラグの内容 ───────────────────────────────── 0 − 予備 1 z ゼロフラグ 2 c キャリーフラグ 3 s 符号フラグ 4 v オーバーフローフラグ ([ビット14から15へのデータ] XOR[ビット15からキャリーへのデータ]) 5 g GOフラグ:1 マリオチップの実行中 0 停止中 6 r (R14)進行中であるROMのバイトのフェッチ 7 − 予備
【0132】“GO”フラグ(ビット5)は、マリオチ
ップが実行中であることを示す“1”の状態と、マリオ
チップが停止された状態(その結果スーパーNESに連
動して割り込み信号の発生をもたらす。)を示す“0”
状態とにセットされるフラグである。このフラグビット
は、スーパーNESプロセッサによってチェックされ
る。ビット6は、ROMのバイトフェッチが現在進行中
であることを示すためにセットされる。以下にリストの
形式で示すGETバイト命令は、データのフェッチが完
了したことを示すこのフラグがクリアされるまで実行す
ることができない。ステータスレジスタのこれらの最下
位ビットを、マリオチッププロセッサ又はホストCPU
のいずれかによって、残っている8ビットとは独立に、
もしくはそれと組み合わせて読み出すようにしてもよ
い。ステータスフラグレジスタの最上位ビットは、予め
決められたプリフィックス命令によってセットされ、命
令のインタープリテーションの種々のモードを定義す
る。
【0133】
【表4】 ビット モード モードの内容 ─────────────────────────────────── 8 alt1 変更(ADD→ADC,SUB→SBCなど...) 9 alt2 変更(ADD→ADC#,SUB→SUB#など...) 10 i1 イミディエイトバイトがロー (ihの前に処理完了(done)) 11 ih イミディエイトバイトがハイ (hiがレディとなるまでバッファされたローバイト) 12 b SRegとDRegの両方のセット WITHによってセットされる 13 − 予備 14 − 予備 15 irq 割り込みフラグ
【0134】前記で識別されたALT1モードにおい
て、ADD(加算)命令はADD WITH CARR
Y(キャリー付き加算命令)としてインタープリテーシ
ョン(解釈)され、SUBTRACT(減算)命令はS
UBTRACT WITH CARRY(キャリー付き
減算命令)としてインタープリテーションされるであろ
う。命令ALT1はこのモードを初期化する。
【0135】ALT2命令はADD命令からADD W
ITH IMMEDIATE DATAへのインタープ
リテーションを変形し、SUBTRACT命令からSU
BTRACT IMMEDIATE DATAへのイン
タープリテーションを変形する。“イミディエイト”デ
ータは当該命令にすぐに続くバイトにおいて示される。
なお、命令ALT3はビット8及び9の両方をロジック
“1”レベルにセットするであろう。ビット10及び1
1を、イミディエイトデータがイミディエイトのハイの
バイトか又はイミディエイトのローのバイトであるかに
依存してセットされる。ステータスレジスタのビット1
2は“b”モードを定義し、ここで、ソースレジスタと
デスティネーションレジスタの両方がプリフィックス命
令“WITH”の使用によってセットされる。ステータ
スレジスタのビット15は、マリオチップの実行が停止
された後にセットされるマリオ割り込み信号を格納す
る。
【0136】マリオチップは上述されたステータスレジ
スタに加えて多くのレジスタを備える。上述のように、
マリオチップは、図4及び図5においてレジスタブロッ
ク76の議論において示したように、16ビットの幅を
有する16個のレジスタを備える。これらのレジスタの
ほとんどは一般の目的のレジスタ(ジェネラルレジス
タ)であり、これらをデータ又はアドレスの記憶のため
に用いることができる。しかしながら、上述したよう
に、レジスタR15は常時プログラムカウンタとして利
用される。典型的には、複数のレジスタは二つの目的で
設けられ、ホストCPUとの通信のためと、実行プログ
ラムを制御するために用いられる。さらに、他のレジス
タはマリオチップにおいて利用され、そのマリオチップ
の機能を以下の表5及び表6に示す。
【0137】
【表5】 レジスタ 特別な機能 ─────────────────────────────────── r0 デフォルトのDReg及びSReg r1 PLOT(プロット)命令のためのX座標 r2 PLOT(プロット)命令のためのY座標 r3 なし r4 LMULT命令の演算結果のローワード r5 なし r6 FRMULT命令及びLMULT命令のためのワード乗算器 r7 MERGE(マージ)命令のためのソース1 r8 MERGE(マージ)命令のためのソース2 r9 なし r10 なし r11 サブルーチンコールのためのリンクレジスタ r12 LOOP(ループ)命令のための計数 r13 分岐すべきLOOP命令のためのアドレス r14 変形されたときに、ROMアドレスはROMから1バイトのデータを 読み出しを開始するROMアドレス r15 プログラムカウンタ
【0138】
【表6】 <その他のレジスタ> 8ビット PCBANK プログラムコードバンクレジスタ 8ビット ROMBANK プログラムデータROMバンクレジスタ 64kバンク 8ビット RAMBANK プログラムデータRAMバンクレジスタ 64kバンク 16ビット SCB スクリーンベース 8ビット NBP ビット平面の数 8ビット SCS スクリーンのコラムの大きさの選択: 256,320,512,640,1024,1280 (2,4及び8ビット平面における 16及び20文字分の高さのスクリーン)
【0139】マリオチップはまた、カラーモードCMO
DEレジスタを備える。このレジスタにおけるビットの
うちの4ビットは、以下に記述する特別な効果を生成す
るために、好ましい実施の形態において用いられる。C
MODEレジスタのビットをセットすることによって生
成される効果は、16色又は256色のカラーレゾレー
ションンモードが、以下の例において示されるようにセ
ットされたか否かに基づいて変化する。
【0140】CMODEレジスタモードのビットは次の
通りである。
【表7】CMODE ビット0 カラー0ビット(NOTトランスペアレントビット)を
プロットする。 16色のカラーモードにおいて:もしビット0=1であ
りかつ選択されたカラーニブル=0であるならば、プロ
ットを行わない。 256色のカラーモードであってビット3=0であると
きに:もしビット0=1でありカラーバイト=0である
ならば、プロットしない。 256色のカラーモードであってビット3=1であると
きに:もしビット0=1でありカラーのローのニブルバ
イト=0であるならば、プロットしない。 (注)トランスペアレンシーON=0 トランスペアレンシーOFF=1 ただ単にトランスペアレンシーOFFのための使用は
(スクリーンをクリアするために用いられる)0をある
領域に満たすことである。 CMODE ビット1 ディザ処理ビット 16色のカラーモードにおいてディザ処理を行うこと。
(ハイ/ローのニブルは2色を与える。) もし(xpos XOR ypos AND 1)=0
であるならば、ローのニブルが選択される。もし(xp
os XOR ypos AND 1)=1であるなら
ば、ハイのニブルが選択される。もしトランスペアレン
シーがオンであり、選択されたカラーニブルがゼロであ
るならば、このときプロットしない。256色のカラー
モードにおけるディザ処理は全く効果を有しない。 CMODE ビット2 ハイのニブルのカラービット CMODE ビット3がセットされたときに16色のカ
ラーモード又は256色のカラーモードにおいて、この
ビットがセットされたとき、COLOURコマンドは、
カラーレジスタのローのニブルを、ソースバイトのハイ
のニブルにセットする。(格納される16色のスプライ
トを、もう1つのタイプのスプライトのハイのニブルと
してアンパックするため、すなわち境界調整をしないで
割り付けを行うために用いられる。) もしカラーレジスタのローのニブルがゼロであるなら
ば、トランスペアレンシーがオンであるときプロットし
ない。 CMODE ビット3 複雑なビット 256色のカラーモードのみにおいて、このビットがセ
ットされたとき、カラーのハイのニブルがロックされ、
COLOURコマンドがただ単にローのニブルを変更す
る。トランスペアレンシーはローのニブルのみから計算
される。通常の256色のカラーモードにおいて、もし
トランスペアレンシーがオンであるならばトランスペア
レンシーがすべてのビットから計算される。 ;16 colour mode example ibt r0,$C0 colour ;set colour $C0 ibt r0,%0000 ;set 0 cmode ibt r0,$97 colour plot ;plots colour $7 ibt r0,$30 colour plot ;no plot, as colour is $0 ;(transparency on and lo nibble=0) ibt r0,%0001 ;set bit 1 cmode ibt r0,$40 colour plot ;plots colour $0 ;(transparency off) stop ;16 colour mode, bit 2 set example ibt r0,$C0 colour ;set colour $C0 ;256 colour mode, bit 3 set example ibt r0,$C0 colour ;set colour $C0 ibt r0,%1000 ;set bit 3 cmode ibt r0,$47 colour plot ;plots colour $C7 ibt r0,$50 colour plot ;no plot, as colour is $C0 ;(transparency on and lo nibble=0) ibt r0,%1001 ;set bit 3 and bit 1 cmode ibt r0,$60 colour plot ;plots colour $C0 ;(transparency off) stop ;256 colour mode, bit 3 and bit 2 set example ibt r0,$C0 colour ;set colour $C0 ibt r0,%1100 ;set bit 3 and bit 2 cmode ibt r0,$74 colour plot ;plots colour $C7 ibt r0,$03 colour plot ;no plot, as colour is $C0 ;(transparency on and lo nibble=0) ibt r0,%1101 ;set bit 3, bit 2 and bit 1 cmode ibt r0,$08 colour plot ;plots colour $C0 ;(transparency off) stop
【0141】多くのマリオチップのレジスタは関連する
特別な機能を有する。前記の表において示したように、
もし示していないときには、当該システムは、レジスタ
R0をある特別な命令によって要求されるデスティネー
ションレジスタ又はソースレジスタとしてデフォルトす
る。レジスタR0はまたALUアキュムレータとして利
用される。前記で示された乗算命令は、32ビットの演
算結果を戻す。最下位16ビットはR4内のレジスタに
格納される。レジスタR6は分数の符号を有する乗算命
令(FRMULT)と長い乗算命令(LMULT)とと
もに用いられる。
【0142】レジスタR7及びR8はMERGE(マー
ジ)命令を実行するときに利用される。当該命令は2個
の予め決められたレジスタ(すなわちレジスタR7,R
8)を用いて、それらをともにマージしてスプライトの
座標データを形成する。そのような座標データは、予め
決められたスプライトをマッピングするためのROMテ
ーブルを予め決められたポリゴンにアドレス割り当てす
るときに利用される。この命令は、2個のレジスタの各
部分を組み合わせて、あるポリゴン上にマッピングされ
たある1つのスプライト内に含まれる画素である次の画
素のための色のアドレスを定義することによって、テキ
スチャのマッピング処理を十分に実行するための助けと
なる。
【0143】R11からR13までのレジスタがサブル
ーチンの実行を制御するために用いられる。レジスタR
11はサブルーチンの読み出しのためのリンクレジスタ
として用いられ、プログラムカウンタの内容に1を加算
したデータを格納する。レジスタR11の内容は、ある
ループの処理が完了した後にアクセスされる必要がある
アドレスを定義する。レジスタR12は当該ループ処理
を実行すべき回数を定義する計数値を格納するために用
いられる。当該ループ処理のアドレスはレジスタR13
に格納される。
【0144】前記で示したように、レジスタR14の内
容が変更されたときはいつでも、ある1バイトのデータ
がROM10からレジスタR14に格納されたアドレス
に読み出される。このような方法で、遅延され又はバッ
ファされたREAD(読み出し)動作が、以下に識別さ
れたGETバイト命令とともに実行される。
【0145】前記の表における“その他のレジスタ”に
戻り、そこから当該プログラムが実行中のロケーション
であるプログラムROMのロケーションが24ビットの
アドレスを用いてアドレス割り当てされる。このアドレ
スの最下位16ビットはプログラムカウンタにおいて見
つけられる。プログラムバンクを定義する最上位ビット
はプログラムコードバンク(PCバンク)レジスタに格
納される。
【0146】ROMバンクレジスタ(ROMBANK)
は、マリオチッププロセッサがROM10に格納された
プログラムデータをアドレス割り当てすることを許可す
るための最上位ビットを格納し、レジスタR14に格納
された16ビットのROMアドレスに付加される。同様
に、RAMバンクレジスタ(RAMBANK)は、マリ
オチッププロセッサがRAMにおけるプログラムデータ
をアクセスすることを許可するためのより高いオーダー
のアドレスビットを格納する。当該RAM及びROMバ
ンクレジスタの内容は、マリオプロセッサのアドレス割
り当ての範囲を有効的に拡張するための、マリオチップ
ROM及びRAMアクセス命令と関連づけられて用いら
れる。
【0147】スクリーンベースレジスタ(SCB)は、
生成中であって回転され、拡大又は縮小された複数のス
プライト又は複数の目標物の仮想的なビットマップのア
ドレスを格納するために用いられる。PLOT(プロッ
ト)画素命令が実行されるとき、スクリーンベースレジ
スタSCBは、アクセスされかつ情報が書き込まれるR
AMにおけるアドレスを格納する。
【0148】レジスタNBPは、使用中であるビット平
面の数を格納するために利用される。典型的には、その
レジスタNBPは2、4、又は8ビット平面の使用のい
ずれかを示す。さらに、スクリーンコラムサイズレジス
タSCSは、それの中のコラム内に含まれる文字数に関
する仮想的なビットマップについての情報を明確に示す
ために利用される。
【0149】当該命令のニーモニックと、それに関連し
た命令を復号化するときに実行される関連する機能とを
示すマリオチップの命令セットが以下にリストとして示
される。まず始めに、自己の説明とは信じられないある
関連する命令のある複数の命令に対する簡単なコメント
が以下に示される。
【0150】マリオチップがその動作を終了したときS
TOP(停止)命令が実行され、“GO”フラグをゼロ
にセットするように動作し、また任意の割り込み信号を
ホストCPUに発生する。
【0151】CACHE(キャッシュ)命令は、マリオ
チップのキャッシュRAMに複製されかつそこから実行
すべきプログラムROMの部分を定義するように動作す
る。CACHE命令が実行されたとき、プログラムカウ
ンタの内容はキャッシュベースレジスタにロードされ、
後述する複数のキャッシュタグがリセットされる。
【0152】マリオチップは、分岐に続く命令が以下の
表に示されるように実行される一連の遅延された分岐命
令を含む。分岐処理が生じる分岐先のアドレスはプログ
ラムカウンタの内容と相対的に割り当てられる。命令セ
ットは、以下に示す表で概説する条件に基づく、広いバ
ラエティの遅延された分岐処理を含む。
【0153】マリオチップは例えばto(〜へ)/wi
th(〜とともに)/from(〜から)などの、多く
の“プリフィックス”命令を含む。これらのプリフィッ
クス命令は、連続する命令のためのデータの分配という
意味を示す。例えば、“TO”プリフィックスは、次の
命令のためにデスティネーションレジスタ(DReg)
をセットする。“FROM”プリフィックスは次の命令
のためにソースレジスタをセットする。“WITH”プ
リフィックスは両方をセットする。
【0154】ほとんどの命令は動作コード(opcod
e)における第2のソースレジスタを名付ける。もしS
RegとDRegがプリフィックス命令によってセット
されないならば、それらはR0にデフォルトされる。プ
リフィックス命令でない各命令毎の実行後に、SReg
及びDRegの両方がR0にセットされる。もしDRe
gがR15にセットされるならば、それによって、プロ
グラムカウンタは次の命令を生じさせ、その内容をR1
5に格納し、次いで、1サイクルの遅延された分岐処理
が初期化される。
【0155】他のプリフィックス命令は、次の命令の動
作を変更するために、ステータスレジスタのハイのバイ
トのデータにおける複数のフラグをセットする。すべて
のプリフィックスでない命令はステータスワードのハイ
のバイトをクリアする。次はどのように連続する命令を
プリフィックス命令を用いて変形されるかについての例
である。
【0156】
【表8】 1sr ;r0 = r0 shift right 1 to r4 1sr ;r4 = r0 shift right 1 from r4 1sr ;r0 = r4 shift right 1 alt 1 from r6 to r5 add r7 ;r5 = r6+r7 + carry alt 1 with r3 add r3 ;r3 = r3 + r3 + carry (6502 rol)
【0157】もし“b”フラグがステータスレジスタに
セットされたならば、“TO”命令は“MOVE(移
動)”命令として動作するように変形される。TO命令
は当該情報が移動する移動先のレジスタを示し、FRO
M命令は情報のソースを示す。
【0158】STW命令は、次の命令を実行する前に格
納動作が完了するまでに待機する必要がないような、バ
ッファにおけるある特別なワードを格納する。このよう
な方法で、当該プロセッサよりも遅いRAMの使用は当
該プロセッサの処理速度を不必要に低下させることはな
い。
【0159】LOOP命令の実行は、ジェネラルレジス
タR12の内容をデクリメントするように動作する。も
しR12の内容がゼロでないならば、そのときレジスタ
R13に示されたアドレスへのジャンプが初期化され
る。
【0160】Alt1,Alt2及びAlt3は、以下
の表に示すように異なった方法で、実行される命令をイ
ンタープリテーションされるように、ステータスレジス
タにおける上述の複数のフラグをセットするプリフィッ
クス命令である。
【0161】PLOT命令はプロットすべき画素のX及
びYのスクリーン座標を識別し、(レジスタR1及びR
2において示されるように)X座標及びY座標に対応す
るスクリーンのロケーションにおけるCOLOR命令に
よって示される色の画素をプロットする。PLOT画素
命令は、高速で複数の水平ラインをプロットするときに
補助するレジスタR1の内容の自動的なインクリメント
処理を含み、特別なインクリメント命令を含むことを排
除する。
【0162】もしAlt1フラグがセットされたとき、
そのときプロット命令がREADPIXEL命令(RP
IX)としてインタープリテーションされる。当該読み
出し画素命令RPIXを実行することによって、プロッ
トのハードウエアから所望されない画素情報をフラッシ
ュさせるために用いることが可能であることが示された
スクリーンのロケーションにおける画素の色が読み出さ
れる。
【0163】読み出し画素命令RPIXは、本質的には
逆に、命令において示されるある特定の画素の色を決定
するために、逆に1個の文字のマトリックスからデータ
を読み出すためのプロットのハードウエアを用いる。C
OLOR命令は、示されたソースレジスタの内容によっ
て定義される次の画素の色を、カラーハードウエアに提
供する。
【0164】“CMODE”命令は、前記で提供された
例において示したような異なった特別な効果を生成する
ために用いることができる。例えば、ディザ処理の効果
を、シェーディング効果を生成するように代替の画素に
おける異なった色を交互にするCMODE命令を用いて
発生することができる。CMODE命令をまた、スプラ
イトの表示をバックグラウンドの表示の輪郭を描くよう
にトランスペアレンシーを制御するために用いることが
できる。トランスペアレンシーは前記の例において図示
したように、カラーモードに関係するフラグのセット処
理によって決定される。
【0165】命令セットはまた、表示すべき複数の目標
物の傾斜又はスロープを決定するためにポリゴンを回転
するための計算において用いられる分数の符号が付けら
れた乗算演算を含む。
【0166】インクリメント命令がもしレジスタR14
と関連されて用いられるならば、ROMからの読み出し
処理を初期化する。GETC命令はROMからアクセス
されるバイトのデータを取り出し、それをカラーレジス
タにロードする。
【0167】次の表は、前記で議論されたこれらの命令
を含むこの好ましい実施の形態に従って模範的なマリオ
チップの命令セットを示す。
【0168】
【表9】 16進数表示 ニーモニック 機能 ─────────────────────────────────── $00 STOP マリオチップを停止させ、65816IRQを 発生する g=0 $01 NOP 1サイクルの間、動作しない $02 CACHE キャッシュベースをpcにセットしかつ キャッシュフラグをリセットする (もしpcが現在のキャッシュベースに 等しくないときにのみ) もしキャッシュベース<>r15であるとき、 キャッシュベース=r15とし、 キャッシュフラグをリセットする $03 LSR 論理的な右側へのシフト(シフトライト) DReg=SReg LSR 1 $04 ROL キャリー付きで左に回転 DReg=SReg ROL 1 $05 nn BRA sbyte 常に条件付きの遅延された分岐 r15=r15+ 符号付きのバイトのオフセット $06 nn BGE sbyte よりも大きい又は等しいときに 条件付きの遅延された分岐 もし(s XOR v)=1ならば、 r15=r15+ 符号付きのバイトのオフセット $07 nn BLT sbyte もしよりも小さいときに 条件付きの遅延された分岐 もし(s XOR v)=0ならば、 r15=r15+ 符号付きのバイトのオフセット $08 nn BNE sbyte もし等しいときに 条件付きの遅延された分岐 もしz=1ならば、 r15=r15+ 符号付きのバイトのオフセット $09 nn BEQ sbyte もし等しくないときに 条件付きの遅延された分岐 もしz=0ならば、 r15=r15+ 符号付きのバイトのオフセット $0a nn BPL sbyte もし正の数のときに 条件付きの遅延された分岐 もしs=0ならば、 r15=r15+ 符号付きのバイトのオフセット $0b nn BMI sbyte もし負の数のときに 条件付きの遅延された分岐 もしs=1ならば、 r15=r15+ 符号付きのバイトのオフセット $0c nn BCC sbyte もしキャリーがクリアされたときに 条件付きの遅延された分岐 もしc=0ならば、 r15=r15+ 符号付きのバイトのオフセット $0d nn BCS sbyte もしキャリーがセットされたときに 条件付きの遅延された分岐 もしc=1ならば、 r15=r15+ 符号付きのバイトのオフセット $0e nn BVC sbyte もしオーバーフローがクリアされたときに 条件付きの遅延された分岐 もしv=0ならば、 r15=r15+ 符号付きのバイトのオフセット $0f nn BVS sbyte もしオーバーフローがセットされたときに 条件付きの遅延された分岐 もしv=1ならば、 r15=r15+ 符号付きのバイトのオフセット $10-$1f TO r0..r15 (プリフィックス) DRegをrnにセットする (次の動作のためのデスティネーション レジスタ) DReg=rn ifb: MOVE rn=SReg(フラグがセットされない) $20-$2f WITH r0..r15 (プリフィックス)DRegとSRegとを rnにセットする (スクリーン及びデスティネーション及び bフラグ) DReg=rn SReg=rn b=1 $30-$3b STW(rn) SRegをrnにおけるアドレスに格納する RAM[rn]=SReg (バッファされたワードのロー/ハイ) (ワードは通常はアドレス上にある) if alt1: STB(rn) SRegのローのバイトを rnにおけるアドレスに格納する RAM(rn)=SReg.l (バッファされたバイト) $3c LOOP r12をデクリメントするとともに もしr12<>0であるならば r13におけるアドレスに遅延されたジャンプ を行う r12=r12−1 もしr12<>0であるならば r15=r13 (TO/WITH/FROMが無視される) $3d ALT1 (プリフィックス) alt1フラグをセットする alt1=1 $3e ALT2 (プリフィックス) alt2フラグをセットする alt2=1 $3f ALT3 (プリフィックス) alt1フラグ及びalt2フラグを セットする alt1=1 alt2=1 $40-$4b LDW(rn) DRegをアドレスからrnにロードする DReg=RAM[rn] (ワードのロー/ハイの待機) (ワードは通常はアドレス上にある) if alt1: LDB(rn) DReg(符号無しのバイト)をアドレスから rnにロードする DReg.h=0 DReg.l=RAM[rn] (バイトの待機) $4c PLOT 画素をr1,r2(x,y)上にプロットし、 r1をインクリメントする (注:r1とr2はスクリーン上にあるか 否かについてチェックされず、 RAM上のどこにおいても描かれる) plot(r1,r2) r1=r1+1 if alt1: RPIX r1,r2(x,y)における画素の色を 読み出す DReg=point(r1,r2) $4d SWAP 2つのバイトのデータをスワップする DReg.h=SReg.l DReg.l=SReg.h $4e COLOUR PLOTの色をセットする plot colour=SReg if alt1: CMODE PLOTのカラーモードをセットする plot colour mode=SReg $4f NOT DReg=NOT SReg $50-$5f ADD r0..r15 DReg=SReg+rn if alt1: ADC DReg=Sreg+rn+c if alt2: ADD DReg=SReg+#n if alt1+alt2: ADC DReg=SReg+#n+c $60-$6f SUB r0..r15 DReg=SReg−rn if alt1: SBC DReg=SReg−rn−c if alt2: SUB DReg=SReg−#n if alt1+alt2 CMP SReg−rn(ゼロ,符号、キャリー、 オーバーフロー) $70 MERGE r7とr8のハイのバイトをDRegに マージする DReg.h=r7.h DReg.l=r8.h 計算結果上にセットされた複数のフラグ: s=b15 OR b7 v=b14 OR b6 OR s c=b13 OR b5 OR v z=b12 OR b4 OR c $71-$7f AND r1..r15 DReg=SReg AND rn if alt1: BIC DReg=SReg AND NOT rn if alt2: AND DReg=SReg AND #n if alt1+alt2: BIC DReg=SReg AND NOT #n $80-$8f MULT r0..r15 DReg=SReg*Rn (符号付きの8×8ビット) if alt1: UMULT DReg=SReg*Rn (符号なしの8×8ビット) if alt2: MULT DReg=SReg*#n (符号付きの8×8ビット) if alt1+alt2: UMULT DReg=SReg*#n (符号なしの8×8ビット) $90 SBK SRegを、用いられた最後のRAMの アドレスに戻して格納する $91-$94 LINK 1..4 リターンアドレスをr11にリンクさせる r11=r15+1..4 $95: SEX ローのバイトをワードに符号の拡張をする DReg.[b15−b7]=SReg.[b7] DReg.l=SReg.l $96 ASR 演算における右側へのシフト(シフトライト) DReg=SReg ASR l if alt1: DIV2 丸め処理を行って2で割る DReg=SReg ASR l もしDReg=−1ならば、 DReg=0である $97 ROR キャリー付きで右に回転する DReg=SReg ROR l $98-$9d JMP r8..r13 rnにおけるアドレスにジャンプを行う r15=rn(遅延された分岐) if alt1: LIMP rnにおけるアドレスに長いジャンプを行い (SRegからROMバンクに)、 キャッシュをリセットする r15=rn(遅延された分岐) プログラムROMバンクreg=SReg $9e LOB ローのバイト DReg.h=0 DReg.l=SReg.l $9f FMULT 分数の符号が付けられた乗算 DReg=(SReg*r6).hw (符号付きの16×16ビットの乗算) c=(SReg)*r6).b15 if alt1: LMULT 長い符号付きの乗算 DReg=(SReg*r6).hw (符号付きの16×16ビットの乗算) r4=(SReg*r6).lw c=(SReg)*r6).b15 $a0-$af nn IBT r0..r15,sbyte rnを符号が拡張されたバイトとともに ロードする rn=イミーディエイトバイト (符号が拡張された) if alt1: LMS r0..r15,byte 絶対的にシフトされたバイトのアドレス からrnをロードする rn=RAM[byte<<1] (ワードデータ) if alt2: SMS r0..r15,byte 絶対的にシフトされたバイトのアドレス にrnを格納する RAM[byte<<1]=rn (ワードデータ) $b0-$bf FROM r0..r15 (プリフィックス) SRegをrnにセットする SReg=rn if b: MOVES DReg=rn (ゼロ,符号及びオーバーフロー (符号のローのバイト)フラグ) $c0 HIB ハイのバイト DReg.h=0 DReg.l=SReg.l $c1-$cf OR r1..r15 DReg=SReg OR Rn if alt1: XOR DReg=SReg XOR Rn if alt2: OR DReg=SReg OR #n if alt1+alt2: XOR DReg=SReg XOR #n $d0-$de INC r0..r14 rnをインクリメントする rn=rn+1 (TO/WITH/FROMが無視される) $df GETC ROMバッファからのバイトを PLOT colourにゲットする if alt2: RAMB RAMデータバンクreg=SReg if alt1+alt2: ROMB ROMデータバンクreg=SReg $e0-$ee DEC r0..r14 rnをデクリメントする rn=rn−1 (TO/WITH/FROMが無視される) $ef GETB 符号なしのバイトをROMバッファから DRegにゲットする DReg=ゼロが拡張された ROMバッファのバイト. if alt1: GETBH ROMバッファからDRegのハイのバイトに ゲットする DReg=ローでマージされた ROMバッファのバイト. DReg=(SReg&$FF)+ (byte<<8) (WITHを用いる) if alt2: GETBL ROMバッファからDRegのローのバイトに ゲットする DReg=ハイでマージされた ROMバッファのバイト. (WITHを用いる) if alt1+alt2: GETBS 符号付きのバイトをROMバッファから DRegにゲットする DReg=符号が拡張された ROMバッファのバイト. $f0-$ff nnnn IWT r0..r15,word イミーディエイトワードをrnに ロードする rn=イミーディエイトワード(バッファされた) if alt1: LM r0..r15,word rnを絶対的なワードアドレスから ロードする rn=RAM[word addr] (ワードデータ) if alt2: SM r0..r15,word rnを絶対的なワードアドレスに格納する
【0169】図7乃至図22は図4及び図5において図
示された構成要素についてさらに詳細に記述したブロッ
ク図である。本発明のユニークな特徴をより明確に明ら
かにするために、当業者にとって従来技術であり又は明
らかであると確信するものであって、これらのユニーク
な特徴を不明瞭にするような回路の詳細については、以
下の図面において図示していない。
【0170】ALU装置50として用いてもよい好まし
い演算及びロジック装置が図7に図示される。図4及び
図7に図示されるようなALU50はXバス、Yバス及
びZバスに接続される。従って、マリオチップのジェネ
ラルレジスタR0−R15は当該ALU50に接続され
る。
【0171】ALU50は、16ビットの加算器/減算
器152を介して加算機能及び減算機能を実行する。A
LU50はまた、従来の“アンド”ロジック回路154
と、“オア”ロジック回路156と、“排他的論理和”
ロジック回路158とを備える。
【0172】ALU50は、従来のシフト機能回路を備
え、このシフト機能回路において、任意のキャリービッ
トが最上位ビットの位置にシフトされ、その結果がライ
ン160を介してマルチプレクサ164の1つの入力端
子に出力される。さらに、ALU50は、従来のバイト
のスワップ演算を実行し、これによって、前記バス上で
伝送される最下位のバイトと最上位のバイトをスワップ
することができ、その結果がライン162を介してマル
チプレクサ164に出力される。XバスとYバスは、図
7に示すように、回路152,154,156,158
に接続される。
【0173】加算器/減算器152、回路154,15
6,158、シフト出力及びスワップ機能出力の各々の
出力は16ビットの6入力対1の“演算結果”のマルチ
プレクサ164に出力される。復号化される命令に依存
して、その適正な演算結果はデスティネーションバスZ
に出力される。
【0174】加算器/減算器152は、Xバスから16
ビットのデータを受信することに加えて、また、Yバス
上を順方向に伝送される情報、又はマルチプレクサ15
0への命令復号入力に依存して、命令それ自身内の情報
を受信する。
【0175】ALU50はさらに、CPUフラグ発生回
路166を備える。CPUフラグ回路168は、回路1
66内の少なくとも1個のフラグレジスタに対してロー
ドするためのゼロオーバーフロー信号、符号信号及びキ
ャリー信号を発生する。このCPUフラグを、加算器/
減算器152によって決定される対応する状態に依存し
てセットされるべきフラグを発生させる、複数の命令に
よって発生されるキャリーイネーブル信号、ゼロイネー
ブル信号、及びオーバーフローイネーブル信号を復号化
する命令復号化回路60からセットするようにしてもよ
い。当該フラグをまた、フラグ回路166に入力される
デスティネーション(又は演算結果)バスZの内容に基
づいてセットするようにしてもよい。例えば、フラグは
広い範囲の条件に基づいて条件付きの分岐演算をトリガ
するために用いられる。
【0176】図8、図9及び図10は、図4において図
示された画素プロット回路(52,54,56及び5
8)をさらに詳細に示す。この回路は、示されたX座標
とY座標とを取り出し、COLORコマンドによってロ
ードされるカラーレジスタ54の内容によって示された
色におけるこれらのスクリーン座標をプロットするPL
OTコマンドを実行する。
【0177】上述のように、スーパーNESはキャラク
タでマッピングされた表示スクリーンを利用する。プロ
ットのハードウエアは、画素座標のアドレスデータを、
キャラクタでマッピングされたアドレスデータに変換す
るように動作する。
【0178】スーパーNESのキャラクタはビット平面
で定義される。複数のキャラクタは4色、16色又は2
56色を定義するための2ビット平面、4ビット平面又
は8ビット平面のいずれかを有することができる。キャ
ラクタの定義の各バイトはキャラクタの1画素列の1ビ
ット平面を備える。複数の画素は左から右に、ハイのビ
ットからローのビットに向かって定義される。256色
のカラーモードの動作のために、更新することが必要で
ある8個のRAMロケーションが存在する。
【0179】画素プロットのハードウエアは、表示すべ
きある特定のバイトにおけるすべてのバイトは最後に更
新されることが必要であるので、そのようなすべてのバ
イトを格納するカラーマトリックス回路206を含むロ
ーカルバッファのメカニズムを備える。ビット平面カウ
ンタ208はカラーマトリックス回路206に接続され
る。画素座標は、XバスとYバスからそれぞれプロット
Xレジスタ202とプロットYレジスタ204にロード
される。この好ましい実施の形態において、ジェネラル
レジスタR1及びR2は図8に図示されたプロットXレ
ジスタ202とプロットYレジスタ204として用いら
れる。これらのレジスタは、PLOTコマンドによって
示されるようにプロットされるべき画素のX座標とY座
標を受信する。
【0180】プロットXレジスタ202とプロットYレ
ジスタ204は、アドレス上で2個の位置のバレルシフ
ト回路214にデータを出力する、全加算器と半加算器
とをベースにしたキャラクタアドレス計算回路に接続さ
れ、2個の位置のバレルシフト回路214は、プロット
アドレスレジスタ216とアドレスコンパレータ218
とに接続される。プロットXレジスタ202の最上位3
ビットはデマルチプレクサ212に接続され、このデマ
ルチプレクサ212はビットペンディングレジスタ21
0に接続される。
【0181】図9に図示されたプロットコントローラ2
00は、後述する他の制御信号と同様にプロット画素
(PLOT)コマンド又は読み出し(READ)画素
(RPIX)コマンドが復号化されたことを示す信号を
受信する。プロットコントローラ200は後述する方法
で用いられる複数のプロット回路制御信号を発生する。
【0182】上述のように、プロットコントローラ20
0は画素プロットのハードウエア52内で利用される制
御信号を発生する。図9に図示されるように、プロット
コントローラ200は、ビットペンディングレジスタ2
10の出力がアンドゲート201を介してプロットコン
トローラ200に接続されるビットペンディングレジス
タ210からの出力を受信する。もしビットペンディン
グレジスタ210のすべての8ビットがセットされたな
らば、プロットコントローラ200は、読み出しサイク
ルをスキップしてもよいこと、並びにカラーマトリック
ス回路206における情報をRAMに書き込んでもよい
ことが知らされる。
【0183】プロットコントローラ200はまた、その
処理を初期化するためのPLOTコマンドに応答して動
作する。プロットコントローラ200はまた、新しい情
報がRAMに出力するカラーマトリックス回路206に
書き込まれないことを除いて、仮想的に同一の動作を初
期化するためのREAD画素コマンドRPIXに対して
応答する。上述のように、READ画素コマンドは、も
しスクリーン上のある特定の画素の色を知る必要がある
ならば実行され、また、カラーマトリックス回路206
において存在している情報を大量に出力させるために用
いられる。
【0184】プロットコントローラ200はまた、RA
Mのアクセスが完了したことを示すRAMダン制御信号
RAMDONEを受信する。上述のようにRAMダン信
号はまた、カラーマトリックス回路206におけるビッ
ト平面を識別するビット平面カウンタ208をインクリ
メントするために用いられる。プロットコントローラ2
00はまた、アドレスの一致が検出されかつカラーマト
リックス回路206の内容をRAMに書き込むことが不
要であることを示し、これによって、現在のカラーマト
リックス回路206の内容に関して更新を続けるべきで
あることを示すPLEQ信号をアドレスコンパレータ2
18から受信する。プロットコントローラ200はま
た、どのように多くのバイトを読み出しかつ書き込む必
要があるということに関してプロットコントローラ20
0に知らせるスクリーンモードSCR.MD制御信号を
受信する。
【0185】プロットコントローラ200は、図8と図
10とを参照して示されるダンプ制御信号DUMPを発
生し、この信号によって、その第2のバッファセクショ
ンにおいてバッファされるべきカラーマトリックス回路
206の内容を生じさせる。プロットコントローラ20
0はさらに、クリアビットペンディングレジスタ信号C
LRPNDと、ロードビットペンディングレジスタ制御
信号LDPNDを発生し、これらの信号をビットペンデ
ィングレジスタ210に出力する。さらに、プロットコ
ントローラ200は、図10において図示されたカラー
マトリックスの素子と関連するLDPIX信号とBPR
制御信号とを発生する。
【0186】PLOTコマンドが命令デコーダによって
復号化され、プロットコントローラ200に入力される
PLOT信号は、画素プロットのハードウエアがビジー
ではないと推定するロードペンディング信号LDPND
の発生を初期化する。LDPND信号は、ビットペンデ
ィングレジスタ210に入力され、デマルチプレクサ2
12からビットペンディングレジスタ210へのデータ
のロードを可能にする。クリアペンディング信号CLR
PNDは、ペンディングのデータがRAMに書き込まれ
たことを示すRAMダン信号RAMDONEに応答して
発生される。その後、ビットペンディングレジスタ21
0は次の画素のプロット情報のために待機状態となる。
【0187】上述したような、プロットコントローラ2
00によって受信された複数の信号と、種々のアドレス
及びデータ信号と、他の関係する制御信号と、プロット
コントローラ200によって発生された出力制御信号と
の間の関係を示すタイミングチャートを図11に示す。
ここで、好ましいアドレス値とデータ値などが図示の目
的のみのために図示されている。
【0188】プロットのハードウエア52は次のように
動作する。プロットコントローラ200はプロットのハ
ードウエア52がビジーでないことを決定し、図4に図
示されたカラーレジスタ54の内容が8×8のカラーマ
トリックス回路206の水平方向の列(ロウ)にロード
される。カラーマトリックス回路206は行(ロウ)毎
にロード(書き込み)を行い、列(コラム)毎に読み出
し動作を行う。カラーレジスタ54の内容はCOLOR
コマンドによって更新される。カラーレジスタ54は、
任意の連続するPLOTコマンドがカラーデータとして
カラーマトリックス回路206にロードされるときに通
過するレジスタである。
【0189】カラーレジスタのビットがロードされるカ
ラーマトリックス回路206における垂直方向の位置
は、プロットXレジスタ202に格納された最下位3ビ
ットによって決定される。従って、プロットを行うアド
レスの最下位3ビットは、カラーマトリックス回路20
6において更新されるべき列のビットを定義する。
【0190】ビットペンディングレジスタ210は、ス
クリーンキャラクタのセクションのどの特定のビットが
更新中であるかを記録するために用いられる。レジスタ
210はスクリーンの関係する部分に書き込まれたビッ
トを示す16個のレジスタフラグを備える。ビットペン
ディングレジスタ210は、信号LDPNDに応答して
ロードし、プロットコントローラ210によって発生さ
れた信号CLRPNDによってクリアされる。
【0191】もし続くプロットコマンドが同一の領域に
おけるスクリーンマップを更新するために実行されるべ
きならば、ある与えられたビットのための処理が8×8
カラーマトリックス回路206にロードされる1画素に
対応する付加的なカラーデータとともに繰り返される。
次いで、もう1つのビットが、プロットXレジスタ20
2に格納されたプロットアドレスの最下位ビットを介し
てビットペンディングレジスタ210にセットされる。
ある特定のビットはプロットXレジスタ202に接続さ
れる3対8のデマルチプレクサ212を介してビットペ
ンディングレジスタ210にロードされる。もし更新す
べき画素が水平方向で8画素以上離れ、もしくはもしそ
の画素がある異なった垂直方向の位置を占有するなら
ば、マトリックス回路206に書き込まれたデータはR
AM6(又は8)に読み出される必要がある。カラーマ
トリックス回路206はその後、新しいカラーデータを
受信するために待機状態となる。RAMに書き込むこと
を要求する続くプロットコマンドが受信されるまで、カ
ラーマトリックス回路206の現在の内容が画素プロッ
タのハードウエア内で、すなわちカラーマトリックス回
路206内でバッファされる。
【0192】カラーマトリックス回路206からのデー
タはRAM6又は8に書き込まれるとき、アドレス変換
の計算が、図8に図示されたタイプの論理ゲートの全加
算器及び半加算器回路を用いることによって、X座標と
Y座標をRAMアドレスに変換するために行われる。実
際のアドレス計算は、以下に示す説明及び好ましいコー
ドに従って行われる。そのような計算は、4色、16色
又は256色のカラーモードが使用中であるかに依存し
て変化するであろう。
【0193】これらの256色のキャラクタは16バイ
トからなる4個のブロックを有し、それぞれは、全体の
64バイトに対してビット平面の対を定義する。
【0194】ビットマップは、単一のキャラクタを要求
されたスクリーンエリアの各々の位置上に載置すること
によって構築される。スーパーNESと共同してプロッ
トするとき、一番良い方法は、コラムにおけるキャラク
タを例えば次のように組織化することである。
【0195】例えば(128画素の高さのスクリーン)
文字のナンバー
【表10】
【0196】スーパーNESは256キャラクタに限定
されず、それ故、ビットマップの大きさは主としてメモ
リ及びDMA転送時間によって限定される。マリオチッ
プは例えば、128画素及び160画素の高さのスクリ
ーン上にプロットすることができる。最大のスクリーン
の幅は、32キャラクタ又は256画素である。
【0197】次のアルゴリズムは、画素の制御がコラム
で組織化された仮想的なビットマップを用いて制御され
る。
【0198】まず最初にX座標の最下位3ビットからす
べてのビット平面のための画素マスクを次の表11に示
すように計算する。
【0199】
【表11】
【0200】次いで、コラムの下方向に移動した複数の
キャラクタを与えるために、取り除かれた低い位の3ビ
ットを有するY座標を用いてコラムの下方向のオフセッ
ト値を計算し、次いで、それにキャラクタの大きさを乗
算する。
【0201】
【表12】 スクリーンの色の数 バイトにおける文字の大きさ ────────────────────────── 4 16 16 32 256 64
【0202】次いで、取り除かれ、コラムの大きさで乗
算された低い位の3ビットを有するX座標からキャラク
タのコラムの上部のオフセット値を計算する。コラムの
大きさはキャラクタの大きさによって乗算されたコラム
におけるキャラクタの数である。
【0203】
【表13】 通常のコラムの大きさ 文字がハイ 16 20 4 256バイト 320バイト 色 16 512バイト 640 256 1024バイト 1028バイト
【0204】Y座標の低い位の3ビットはキャラクタを
下方向に移動させるバイトのオフセット値を与える。現
在のビットマップに対するすべてのオフセット値にポイ
ンタを加算した和は、画素の第1のビット平面を保持す
るバイトのアドレスを与える。1バイトのデータが次の
複数のビット平面上に交互に存在し、最後のビット平面
から15バイトのデータが存在する。そのとき、画素ビ
ットは画素マスクを用いてセットされ又はクリアされる
ことが可能である。各ビット平面におけるビットは画素
のために要求されるカラーレジスタ54に格納されるカ
ラーの数における対応するビットの状態にセットされ又
はクリアされる。
【0205】
【表14】 コードの一例 ;Plot on 4 bit planes in 65816 code, as used in our game demo. ;The routine is mostly table driven. ;Registers A,X and Y are 16 bit. Set Colour ;Get colour and double lda Colour asl a tax ;set colour mask for bit planes 0 and 1 lda mask1tab,x sta mask1 ;set colour mask for bit planes 2 and 3 lda mask2tab,x sta mask2 rts Plot ;Get horizontal & vertical coords ;double both and move to Y & X regs lda plotxl asl a tay ;Y is x coord * 2 lda plotyl asl a tax ;X is y coord * 2 ;Get offset down column lda pyoftab,x ;Add start of column offset clc adc pxoftab,y ;Add double buffer pointer (select bitmap) clc adc drawmap tax ;X is offset of word holding required pixel from bitmapbase. ;Y is x coord of pixel * 2 ;Do bit planes 0 and 1 lda.1 bitmapbase,x :get word holding pixel and pbittabn,y ;mask out old pixel colour sta pmask lda mask1 ;Mask colour and and pbittab,y ;pixel mask together ora pmask ;join with other pixels sta.1 bitmapbase,x ;store to bitmap ;Do bit planes 2 and 3 lda.1 bitmapbase+16,x and pbittabn,y sta pmask lda mask2 and pbittab,y ora pmask sta.1 bitmapbase+16,x rts ;256 word table of pairs of pixel bit masks pbittab rept 32 ;num col dw $8080,$4040,$2020,$1010,$0808,$0404,$0202,$0101 endr ;table above with words inverted pbittabn rept 32 ;num col dw $7f7f,-$4040,-$2020,-$1010,-$808,-$404,-$202,-$ 101 endr ;colour masks for bit planes 0 & 1 (colours 0 to 15) mask1tab dw $0000,$00ff,$ff00,$ffff,$0000,$00ff,$ff00,$ffff dw $0000,$00ff,$ff00,$ffff,$0000,$00ff,$ff00,$ffff ;colour masks for bit planes 2 & 3 (colours 0 to 15) mask2tab dw $0000,$0000,$0000.$0000,$00ff,$00ff,$00ff,$00ff dw $ff00,$ff00,$ff00,$ff00,$ffff,$ffff,$ffff,$ffff col size equ Number char rows * 8 * Number bit planes ; (16) (4) ;offset to start of char column table pxoftab temp = 0 rept 32 ;number of char columns dw temp,temp,temp,temp,temp,temp,temp,temp temp = temp+col size endr ;offset down column table pyoftab temp = 0 rept 16 ;Number of char rows dw temp dw temp+2 dw temp+4 dw temp+6 dw temp+8 dw temp+10 dw temp+12 dw temp+14 temp = temp+32 endr
【0206】図8に戻ってさらに詳細に説明すると、プ
ロットする画素をスクリーン上で定義するX座標とY座
標は、プロットXレジスタ202とプロットYレジスタ
204にロードされる。これらのレジスタは、実際に
は、レジスタブロック76内のR1,R2レジスタであ
ってもよい。プロットXレジスタ202にロードされる
プロット座標の下3桁は、特定されたX,Y座標によっ
て、ビットプレーンバイト内のどのビットに書き込まれ
るかを決める。アキュミュレータR0の内容は、プロッ
トXレジスタ202の下3桁によって選択されるカラー
マトリックス回路206の行にロードされる。
【0207】プロットXレジスタ202が0であるなら
ば、最下位ビットが、画素を定義する8個のビットの各
々において更新される。プロットXレジスタ202が0
であるとき、3対8デマルチプレクサ212は、最下位
ビットをセットし、ビットペンディングレジスタ210
に論理”1”をセットする。ビットペンディングレジス
タ210は、ビットペンディングレジスタ210の対応
するビットの修正が不必要であることを示すためにRA
Mから書き出す必要がないギャップを示すために、RA
Mコントローラ88によって用いられる。
【0208】ビットペンディングレジスタ210は、新
しいデータが必要でないならば、RAMから新データを
上書きすることを防止する画素マスクバッファとして動
作する。この機能を果たすために、ビットペンディング
レジスタ210の内容は、図8に示されるように、カラ
ーマトリックス回路206に入力される。
【0209】もしビットペンディングレジスタ210が
0であるならば、その画素のスクリーンアドレスが計算
され、プロットアドレスレジスタ216にロードされ、
そして、バイト内の画素位置が、ビットペンディングレ
ジスタ210内の同じビットをセットするために使用さ
れる。もしビットペンディングレジスタ210が0でな
いならば、BUSYフラグがセットされる。もし新しく
計算されたアドレスがプロットアドレスレジスタ216
の内容と同じであれば、その新しい画素ビット位置がビ
ットペンディングレジスタ210内でセットされ、BU
SYフラグがリセットされる。
【0210】もし新しく計算されたアドレスがプロット
アドレスレジスタ216の内容と異なれば、以下のステ
ップが実行される。 ステップ1: もしビットペンディングレジスタ210
がFFhであれば、直接ステップ3に進む。 ステップ2: RAMから(プロットアドレス+スクリ
ーンベース)でバイトを読み、テンポラリデータバッフ
ァであるプロットバッファに書く。 ステップ3: もしビットペンディングレジスタ210
によってマスクされたデータバッファ内のビットがすべ
てプロットカラーレジスタアレイの第0行に等しけれ
ば、すぐにステップ5に進む。 ステップ4: プロットカラーレジスタアレイの第0行
を、ビットペンディングレジスタによってイネーブルと
されるプロットバッファの全ビットに書く。データバッ
ファをRAMのプロットアドレスに書き戻す。 ステップ5: (プロットアドレス+1)の同じ命令と
プロットカラーレジスタアレイの第1行を実行する。 ステップ6: もし8または256カラーモードであれ
ば、(プロットアドレス+16)の同じ命令とプロット
カラーレジスタアレイの第2行を実行する。 これを、すべてのカラービットが更新されるまで続け
る。
【0211】プロットXレジスタ202とプロットYレ
ジスタ204との内容は、図8に示される全加算回路F
Aと半加算回路HAによって処理される。全加算回路F
Aと半加算回路HAおよび関連する論理回路は、図8の
ブロック図では、簡単に示されている。アドレスの計算
は次のように実行できる。
【0212】
【数1】アドレス=scr_base+2*y[0..
2]+(y[3..7]+x[3..7]*16+((x
[3..7]*4)&& scr_ht)*char_
siz この中間の項は次の通りである。
【0213】
【数2】 これにより10ビットの部分的結果px[0..9]
を、たとえば6個の全加算回路FAと4個の半加算回路
HAを用いて発生する。
【0214】この結果は、選択されたスクリーンモード
の正確な精度にこの部分的結果をシフトするために、c
har_size値によって制御される12×3マルチ
プレクサに供給される。これは、y下位ビットy
[0..2]と結合されて、16ビットのスクリーンア
ドレスを作る。これは、次に、スクリーンを1k境界に
位置するためのscreen_base値scr
[9..22]に加えられて、アドレス計算を終わる。
【0215】このアドレスは、次に、2位置バレルシフ
ト回路214に入力され、2位置バレルシフト回路21
4は、4、16または256のカラー分解能のどれが選
択されるかに対応して、アドレス情報入力を1、2また
は4で乗算するように動作する。
【0216】シフト回路214の出力は、RAMアドレ
スのためのバッファ容量として動作するプロットアドレ
スレジスタ216に入力される。プロット命令が実行さ
れた後でレジスタR1(プロットXレジスタ),R2
(プロットYレジスタ)の内容が変化する可能性がある
ので、このアドレスは、バッファされなければならな
い。
【0217】アドレスコンパレータ218は、シフト回
路214からの出力としてのプロットハードウエアによ
って決定される新しいアドレスを、プロットアドレスレ
ジスタ216に格納された古いアドレスと比較する。も
しアドレスが異なれば、次に、アドレスは、RAMに書
き出されねばならない。もしアドレスレジスタ216に
格納されたプロットアドレスがシフト回路214の出力
に等しければ、アドレスコンパレータ218は、(プロ
ットコントローラ200に入力される)コントロール信
号PLEQを発生する。
【0218】カラーマトリックス206に戻って説明を
続けると、先に述べたように、カラーマトリックス20
6は、行で読み出される。ビットプレーンカウンタ20
8は、カラーマトリックス206に結合され、どの行が
読み出されるかを決定する。ビットプレーンカウンタ2
08は、RAMコントローラ88と結合され、RAMの
動作が完了すると、RAMコントローラ88は、ビット
プレーンカウンタ208をインクリメントする信号を発
生する。
【0219】カラーマトリックス206は、図10に示
すような素子が配列される。8×8マトリックス206
の1つのマトリックスエレメントには64個のそのよう
な素子が含まれる。プロット命令がデコードされると
き、コントローラ200は、命令制御信号LDPIXを
ラッチ220に出力して、カラーレジスタ54からのカ
ラーデータCOLをラッチ220がロードすることを可
能にする。コントローラ200によるコントロール信号
DUMPの発生は、カラーマトリックス206内のバッ
ファリングの第1レベルが終わったことを示し、データ
は、スクリーンに出力されねばならない。一度DUMP
信号が発生されると、ラッチ220に格納されたデータ
は、ゲート回路226とラッチ228に出力される。D
UMP信号がゲート回路226にアクティブに入力され
ると、ゲート回路226はラッチ228にデータを入力
する。同時に、ゲート224が非活性化され、このため
に、ラッチ228の非反転出力からのフィードバックル
ープが、前に格納したデータの格納の続行を防止する。
【0220】データがRAMから読まれてデータギャッ
プ内を満たすとき、コントロール信号BPRは、ゲート
222に0入力を出力し、LDRAM信号は0状態にな
る。この条件の下で、RAMD入力からのデータ入力
は、ゲート回路226を通ってラッチ228に進む。ラ
ッチ228内のデータは、次に、図8に示すように、R
AMコントローラ88を介してRAMデータバスに読み
出すために、利用可能になる。他のそのような素子が結
合されて、X,Y画素同定によって示される画素データ
を、スーパーNES文字フォーマットにコンパチブルな
キャラクタデータに変換する。
【0221】図12に詳細に示されるRAMコントロー
ラ88は、1個または複数個のゲームカートリッジRA
Mのアクセスに関連した種々のコントロール信号を発生
する。カートリッジRAMは、スーパーNES,マリオ
チップ内のプロットハードウエアおよび実行されるマリ
オチッププログラムからのデータフェッチの間で共用さ
れねばならない。RAMコントローラ88は、適当なア
ドレスがRAMアドレスバスに適当な時間に送られるこ
とを保証するのに用いられる。RAMアクセス信号の適
当な時間での発生は、部分的には、図14にさらに詳細
に示されるアービトレーション論理回路310によって
制御される。
【0222】RAMコントローラ88は、RAM Dデ
ータバスを介してRAMデータピンからの入力と命令バ
スとの間でマルチプレックスするマルチプレクサ304
を有する。命令バスまたはRAMデータバスは、命令デ
コーダ60から入力された信号に応答して選択され、適
当なRAM出力が目的のZバスにおかれる。
【0223】また、RAMコントローラ88は、命令デ
コーダ60から受け取られた信号に応答して16ビット
Xバスまたは16ビットYバスから入力されるRAMへ
のデータライトのために備えられる16ビットデータレ
ジスタ300を有する。
【0224】また、RAMコントローラ88は、20ビ
ットのアドレスマルチプレクサ308を有する。マルチ
プレクサ308は、アービトレーション回路310から
入力された制御信号に応答してアドレス入力を選択す
る。この制御信号は、アービトレーション回路310に
おいて発生されるコードアクノレッジ信号CACK、デ
ータアクノレッジ信号DACKまたはプロットアクノレ
ッジ信号PACKから得られる。スーパーNESアドレ
スバスHAからのアドレス信号は、マルチプレクサ30
8によって受け取られ、マリオ「所有者」ステータスビ
ットが0にセットされるときにはいつでも、メモリタイ
ミング信号発生器312を介して、RAMアドレスバス
に出力される。アービトレーション回路310は、RA
Mリフレッシュ制御信号RFSHが入力されるアービト
レーション回路310に入力される信号RANを介し
て、マリオチップRAMの所有権のステータスについて
知らされる。RAN信号とRFSH信号は、OR演算に
より図14に示すSUSPEND信号を作る。
【0225】RAMマルチプレクサ308はまた、16
ビットレジスタ306からアドレス入力を受け取る。マ
ルチプレクサレジスタ306は、図12に示すように、
命令デコーダ60によって発生される選択信号に依存し
て、Yバスの内容または命令バスの内容を受け取る。ま
た、マルチプレクサ308は、アドレス入力としてのデ
ータバンクレジスタ314の出力と、プログラムカウン
タPCの内容とを受け取る。スクリーンバンクレジスタ
316の出力は、マルチプレクサ308へのプロットア
ドレス入力の上位ビットを作るために用いられ、下位ビ
ットは図8のプロット回路から入力される。スクリーン
バンクレジスタ316とデータバンクレジスタ314
は、ともに、ホストデータバスHDからのデータでロー
ドされ、ホストCPUによってアドレス指定可能であ
る。これらのレジスタは、図12に示すように必ずしも
RAMコントローラ88の中になくてもよいが、RAM
コントローラ88に接続される。たとえば、データバン
クレジスタ314は、後に説明するROMコントローラ
104の中にあってもよいし、スクリーンバンクレジス
タ316はプロットハードウエア52の中にあってもよ
い。
【0226】出力されるべきマルチプレクサ308の入
力信号は、次のように選択される。もしコードアクノレ
ッジ信号CACKが発生されると、コードバンク+プロ
グラムカウンタPC入力が選択される。もしデータアク
ノレッジ信号DACKが発生されると、データバンク+
マルチプレクサレジスタ入力が選択される。もしプロッ
トアクノレッジ信号PACKがあれば、プロットアドレ
スが選択される。最後に、もしCACK,DACK,P
ACK信号のいずれもなければ、ホスト(たとえばSN
ES)アドレス入力が選択される。
【0227】マルチプレクサ308の20ビットのアド
レス出力がメモリタイミング信号発生器312に入力さ
れ、この発生器312はこれらの信号を適当な時間にR
AM6、8に入力する。メモリタイミング信号発生器3
12は、アービトレーションブロック310の中のグレ
ーカウンタからの出力を受け取る。メモリタイミング信
号発生器312は、グレーカウンタからの出力をデコー
ドし、RAMアドレスバスRAMAを介して図1に示す
RAM6、8をアドレスするための出力信号を発生す
る。あるいは、タイミング信号発生器312は、図1に
示すように、RAM6、8をアクセスするための制御信
号(行アドレスストローブ信号RAS,列アドレススト
ローブ信号CAS、ライトイネーブル信号WEを含む)
を発生する。
【0228】メモリタイミング信号発生器312は、D
ONE信号を発生し、このDONE信号はアービトレー
ション論理回路310にフィードバックされて、RAM
サイクルが完了したことを示す。また、メモリタイミン
グ信号発生器312は、RAMコントローラ88内のデ
ータラッチ(図示しない)に外部のRAMからくるデー
タをラッチするように作用するデータラッチ信号DAT
LATを発生する。RAMからのデータは、たとえばR
AMデータバスRAMD_INを介してマリオチップ回
路に入力される。タイミング信号発生器312から出力
されるRAMAアドレス信号は、ゲームカートリッジの
任意のスタティックRAMに入力される。もしダイナミ
ックRAMがゲームカートリッジの中で使用されても、
コントロール信号CES,RAS,WEは発生される。
スタティックRAMまたはダイナミックRAMの信号
は、先に説明したオプションレジスタセッティングによ
って示されるように、マリオチップの構成に依存して適
当に発生される。図13は、タイミング信号発生器31
2によって発生される信号と他の関連する信号の一例を
示す。ここに示されたアドレス値とデータ値は、図示の
ための一例である。RAM DONE信号は図11に示
される。
【0229】RAMアクセス信号の適当な時間での発生
は、部分的にアービトレーション論理回路310によっ
て制御される。図14に示すように、アービトレーショ
ン論理回路310は、メモリアクセス入力に関連した信
号であるキャッシュリクエスト信号CACHERQ,デ
ータリクエスト信号DATARQ,プロットリクエスト
信号PLTRQを受け取る。これらの入力信号の各々
は、それぞれ、一時的にラッチ325,327,329
に格納される。もしマリオ命令がRAMまたはROMか
ら実行されるならば、この処理は、キャッシュリクエス
ト信号CACHERQの入力により開始され、信号CA
CHERQは、図14の状況で命令がキャッシュRAM
から実行されず、RAMまたはROMから実行されねば
ならないことを示すために使用される。したがって、キ
ャッシュリクエスト信号CACHERQは、命令がキャ
ッシュRAM94から実行できないことを示す。データ
リクエスト信号DATARQは、RAMアクセスを必要
とする命令(たとえばload byte命令,loa
d word命令)をデコードした結果として発生され
る。さらに、アービトレーション論理回路310は、プ
ロットコマンドのデコードに応答してプロットコントロ
ーラ200によって発生されるプロットリクエスト信号
PLTRQを受け取る。
【0230】アービトレーション論理回路310は、マ
リオチップがランされているときとマリオ使用者ビット
がセットされているときにのみ(ステータスレジスタS
USPENDモードビットが”0”状態にあることによ
り示される)イネーブルにされる。CACHEリクエス
ト信号,データリクエスト信号,プロットリクエスト信
号を受け取ると、ラッチ325,327,329は、そ
れぞれ、CRQ,DRQ,PRQ信号を発生する。ゲー
ト331,333,325は、これらの信号をラッチに
非反転出力から受け取り、これらの信号の優先度を確立
する。この点で、キャッシュリクエスト信号は、最高の
優先度を有し、データリクエスト信号は、第2の優先度
を有し、プロットリクエスト信号は、最下位の優先度を
有する。キャッシュリクエスト信号が最高の優先度を有
する理由は、キャッシュRAM94から命令を実行する
試みがされ、RAMからの命令をアクセスする必要があ
るからである。ゲート回路333,335は、より高い
優先度のリクエストがすでに対応するラッチをセットし
ているならば、より低い優先度のリクエストがラッチ3
39,341をセットするように動作しないことを保証
するように動作する。システムがSUSPENDモード
にないときにのみ、SUSPENDモード信号が各ゲー
ト331,333,335に入力されるので、ラッチ3
37,339,341がセットできる。SUSPEND
モード信号は、マリオチップがRAMを所有していると
きに、すなわちRAMに自由にアクセスできるときに、
ローレベルにある。ラッチ337,339,341は、
SUSPENDが”1”にセットされていればセットで
きないし、アクノレッジラッチ337,339,342
のいずれかが既に”1”であっても(1サイクルが既に
始まっていれば)セットできない。ゲート331,33
3,335は、RAMアクセスの優先性を確立する。デ
ータアクノレッジラッチ339は、もしキャッシュリク
エストラッチ337がセットされていればセットされ
ず、プロットアクノレッジラッチ341は、キャッシュ
リクエストラッチまたはデータリクエストラッチがセッ
トされていればセットされない。
【0231】ラッチ337がキャッシュリクエスト信号
によってセットされるとすぐに、そして、図14で論理
回路によってキャッシュRAM94(またはRAM)が
利用可能であることが確立されるとすぐに、キャッシュ
アクノレッジ信号CACKが発生される。データアクノ
レッジ信号DACKとプロットリクエストアクノレッジ
信号PACKは、図14の論理回路がRAMがビジーで
ないと決定したならば、データリクエスト信号とプロッ
トリクエスト信号をアクノレッジするために同様に発生
される。
【0232】ラッチ337,339,341の非反転端
子がゲート回路343に結合され、ゲート回路343は
NORゲート344を介してRAMアクセスのためのタ
イミング信号を発生するグレイカウンタ345をリセッ
トする。当業者にわかるように、グレイカウンタは、一
時にただ1つの出力ビットだけが変化するカウンタであ
り、RAMアクセス時間を制御するために使用できる。
【0233】タイミング信号発生器312によって発生
されるDONE信号は、NORゲート344とラッチ3
37,339,341によって受け取られる。DONE
信号はRAMサイクルが終了したことを示す。DONE
信号の発生は、ラッチされているリクエストをクリアす
るために、アービトレーション論理回路310内の適当
なラッチのクリアをトリガする。DONE信号は、ま
た、RAMアクセスが終了したことを示すキャッシュコ
ントローラ68,プロットコントローラ52などの発信
源回路に結合される。
【0234】本発明の別実施形態においては、マリオチ
ップは2重クロックシステムを使用できる。従って、マ
リオチッププロセッサは、同じクロック、たとえば前記
のRAMコントローラで駆動される必要はない。たとえ
ば、RAMコントローラ88は、スーパーNESから入
力された21MHzクロック信号によって駆動され、マ
リオチップは他の可変周波数のクロックで駆動される。
このように、マリオチッププロセッサは、21MHzの
クロック速度で動作することに限定されない。
【0235】本実施形態のマリオチップは、2重クロッ
クインターフェース機能を実行するために、図15に示
されるような非同期ステートマシン制御回路を用いても
よい。図15の回路は、他のクロック速度で動作するメ
モリコントローラと異なったクロックシステムが備えら
れていれば、マリオチップとのインターフェースのため
に使用できる。
【0236】図15に示す再同期化回路は、クロック信
号CKとは同期しない入力クロック信号DINを受け取
る。再同期化回路は、信号DINがより高くてもより低
くても、DINからクロック信号CKに同期する信号を
発生する。
【0237】図16に示すように、再同期化回路は、信
号DINに応答して状態010,110,100,10
1,111を通って初期状態010に戻る。図15の再
同期化回路は、ROMコントローラ104とRAMコン
トローラ104のような2重クロック信号を入力するど
んなインターフェースでも使用できる。
【0238】再同期化回路は、入力信号DINに応答し
てアイドル状態すなわちリセット状態”010”からス
イッチして、ゲートFによってセットされるラッチAに
より”110”状態を生成する。再同期化クロックCK
が低レベルになるとすぐに(またはすでに真値であるか
も知れない)、ラッチBはゲートEによってリセットさ
れ状態”100”を生成する。クロックが再び高レベル
になると、ラッチCはセットされて、ゲートAによって
状態”101”を生成する。
【0239】ラッチCは、再同期化回路からの出力Qを
発生する。入力信号が再び低レベルになると、ラッチB
はゲートCによって再びセットされて状態”100”を
生成する。クロックCKが状態”111”に達した後に
再び低レベルになると、ラッチAはゲートGによってリ
セットされて状態”011”を生成する。その後、クロ
ックCKは再び高レベルになり、ラッチCは、ゲートB
によりリセットされて状態マシンをそのアイドル状態に
戻す。次に、出力は、アクティブでなくなる。
【0240】図17は、図5のROMコントローラ10
4をさらに詳細に示す。ROMコントローラ104に備
えられるキャッシュローダ400は、ROM10または
カートリッジRAMに格納されている現在実行中のプロ
グラム命令を有するマリオチップキャッシュRAM94
のロードを部分的に制御する。命令は、16バイトの単
位でキャッシュRAM94にロードされる。しかし、1
6バイトのセグメントの中でジャンプ命令に出会うと、
ジャンプ命令がされる前に完全な16バイトセグメント
となるまでロードが続けられねばならない。キャッシュ
ロード回路400に含まれる2ビット状態マシンは、ジ
ャンプ命令のデコードに対応して16バイトキャッシュ
セグメントの残っているバイトがキャッシュRAM94
にロードされることを保証する。キャッシュロード論理
回路の状態マシンの第1状態はアイドル状態であり、ア
イドル状態はもしプログラムの実行がキャッシュ範囲外
であるかまたはプログラムデータがすでにキャッシュR
AM94にロードされていることを示す状態である。第
2状態は、キャッシュのロードとカートリッジROMま
たはRAMからの命令の実行が同時に起こることを示
す。第3状態は、ジャンプ命令をデコードすることによ
りトリガされ、16バイトキャッシュの全バイトがロー
ドされるまで有効である。第4状態はジャンプが実行さ
れたときに生じ、キャッシュ16バイト境界に正確には
対応しないアドレスにジャンプする。このとき、キャッ
シュは、この境界の始まりからプログラムが分岐したア
ドレスに対応する16バイトセグメントの部分にまで満
たされる。
【0241】図5に示されるキャッシュコントローラ6
8はCACHE信号を発生し、CACHE信号はキャッ
シュローダに入力され、リクエストされた命令が現在キ
ャッシュRAM94にないことを示す。従って、この命
令はROMから取込まれねばならない。コードバンク信
号はアクセスされるアドレスの上位3ビットを同定し、
プログラムROMまたはRAMがアクセスされるか否か
を示す。また、キャッシュローダ400は図示しないカ
ウンタを備え、このカウンタは、プログラム実行中にプ
ログラムカウンタPCの下位ビットに対応するカウント
を保持する。このカウンタは、キャッシュローダ400
のPC入力を介してロードされる。
【0242】また、ROMコントローラ104内のキャ
ッシュロード回路400は、WAIT制御信号とGO制
御信号を入力する。これらの信号は、マリオプロセッサ
が何かの理由でWAIT状態に保持されていず、マリオ
チップが”go”モードまたは”running”モー
ド状態にあることを示す。そのような状況で、キャッシ
ュロード回路400は、図17に示すNORゲート40
8に接続されるCODEFETCH制御信号を発生す
る。次に、NORゲート408は、ROMタイミングカ
ウンタ406のクリア入力に接続される。キャッシュロ
ード回路400がコードフェッチ信号CODE FET
CHを発生するとき、ROMコントローラ104内の論
理回路は、コードフェッチをより高い優先度で開始す
る。そこで、このコードフェッチとしてのデータフェッ
チはデータフェッチの前に開始されねばならない。図1
4に示すような優先性論理回路を備えたアービトレーシ
ョン回路は、データフェッチよりも高い優先性が与えら
れる発生された信号をイネーブルにするために使用され
る。
【0243】クリア信号がROMタイミングカウンタ4
06から除かれるとき、カウントサイクルが開始され
る。ROMタイミングカウンタ406は、ROMデータ
がROMデータピンに出力されていることを示すROM
RDY信号を発生するために使用される。ROMRDY
信号は、ゲート回路410から出力される。ROMデー
タレディ信号ROMRDYのゲートは、再同期化回路4
02に接続される。この再同期化回路402は、たとえ
ば、図15に説明された再同期化回路からなる。同期が
プロセッサクロックから得られた後、信号ROMDCK
が発生されて、ラッチ404をリセットし、レジスタR
14のアクセスによるEN_14信号によりトリガされ
るデータフェッチを示すDATAFETCH信号を発生
する。ROMタイミング信号406が所定の値に達して
データがROMデータピンに出力されていることを保証
する時に、DATAFETCH信号が発生される。
【0244】図17に示すROMコントローラにおい
て、入力の1つからアドレス情報を選択するマルチプレ
クサ414は、ROMアドレスを発生する。コードバン
クレジスタ412は、スーパーNESデータバスHDか
らロードされて、マリオコードが実行されるROMアド
レスバンクを定義する。コードバンクレジスタ412
は、23ビットROMアドレスの8ビットをマルチプレ
クサ414に出力する。ROMアドレスの下位ビット
は、プログラムカウンタPCの値から得られる。データ
がキャッシュRAMに書き込まれるとき、CACHE
LOAD信号からの下位4ビットはキャッシュローダ4
00によって発生される。別のマルチプレクサ414の
アドレス入力は、レジスタR14がアクセスされたとき
にはいつでもマリオの汎用レジスタR14の内容から発
生される。
【0245】レジスタR14のアクセスにより、データ
フェッチラッチ404は、DATAFETCH信号を発
生し、DATAFETCH信号は、マルチプレクサ41
4にR14入力(そして、スーパーNESデータバスH
Dからロードされるデータバンクレジスタ416の内
容)を選択させるための制御入力として用いられる。デ
ータバンクレジスタ416は、R14フェッチ動作に関
連するデータバンクの上位ビットを有する。
【0246】DATA FETCH信号は、さらにゲー
ト408に入力されて、ROMタイミングカウンタ40
6によるカウントを開始させる。そして、ROMタイミ
ングカウンタ406は、ゲート410を介してROMレ
ディ信号ROMRDYを発生する。ROMRDY信号が
発生されると、データがROMデータバスROM D
[7:0]から利用できる。
【0247】また、アドレスマルチプレクサ414は、
スーパーNESアドレスバスHAからROMアドレスを
受け取る。スーパーNESアドレスバスは、マルチプレ
クサ414の制御入力に接続される信号”ROM”の状
態に依存して選択される。
【0248】”ROM”制御信号は、マリオROMコン
トローラにスーパーNESがROMアドレスバスの制御
をしていることを知らせる。
【0249】ジャンプ命令がデコードされたのちに、ア
ドレスマルチプレクサ414は、プログラムカウンタと
キャッシュローダ400内のカウンタによって発生され
た下位4ビットとの内容を入力される。これにより、キ
ャッシュセグメントが、デコードされるジャンプの前に
ロードされた16ビットの残り部分とともにロードされ
ることを可能にする。
【0250】マルチプレクサ422は、ROMコントロ
ーラ104の中にROMデータピンROMDからマリオ
チップのデスティネーションバスZへのデータバスを与
える。ラッチ404によって発生されたDATAFET
CH信号とROMタイミングカウンタ406によって発
生されたROMRDY信号とは、ゲート418に入力さ
れてROMバッファ420のロードを可能にする。RO
MDROMデータバス[7..0]からのROMデータ
バスは、ROMバッファ420にロードされる。
【0251】マルチプレクサ422は、命令コード(た
とえばレジスタR14のアクセスによってトリガされる
自動的データフェッチであるGET B)のデコードに
応答して入力を選択する。もしコードフェッチ動作がデ
コードされると、ROMコントローラ104は、図20
に示されるように、命令をマリオチップ内の命令バスに
入力する。もしGET B命令動作がデコードされる
と、レジスタ420に格納されたバッファされたバイト
はZバスに出力される。GET B命令は、図17に示
すマルチプレクサ422への対応する入力を介して図示
されるように、Xバスのデータを含む。そこで、デステ
ィネーションのZバスに入力されるデータは、マリオジ
ェネラルレジスタ76の1個にロードできる。
【0252】キャッシュコントローラ68は、図18に
さらに詳細に示される。キャッシュコントローラ68は
タグラッチ506を備える。ラッチ506は、たとえ
ば、命令がキャッシュRAM94(キャッシュコントロ
ーラの具体例として図示される)に格納されるかを示す
64のラッチである。
【0253】ラッチ506の64のフラグの各々は、キ
ャッシュRAM94に格納される16ビットの情報に対
応する。キャッシュRAM94には、命令がロードさ
れ、同時に、命令がROMまたはRAMから実行され
る。ジャンプ命令が実行されると、先に説明したよう
に、RAM94には、図17に示されるROMコントロ
ーラ104とともに説明されたキャッシュローダ400
を介して16バイトセグメントの残りのバイトがロード
される。これらの残りのバイトがロードされるまで、全
16バイトセグメントに対しタグラッチ506を介して
ロード完了を示すフラグが立てられることはない。
【0254】ゲート回路510について説明すると、プ
ログラムカウンタが0から15までカウントしたとき、
14ビット減算器502は反転された範囲外信号を出力
し、ROMコントローラがROMデータレディ信号RO
MRDY(1バイトが出力がレディであることを示す)
を出力し、ゲート回路510はデマルチプレクサ504
によてアドレスされた位置でタグラッチ506をセット
する。
【0255】キャッシュ命令がデコードされるとき、以
後の命令がキャッシュRAMメモリ94から実行される
ことを示す制御信号がバスに出力される。バス501上
の制御信号はキャッシュベースレジスタ500のロード
入力に接続され、キャッシュベースレジスタ500にプ
ログラムカウンタPCの上位13ビットをロードさせ
る。同時に、図18に示されるように、タグラッチがク
リアされる。
【0256】キャッシュベースレジスタ500の出力と
プログラムカウンタび上位ビット(たとえば3〜15ビ
ット)は、減算器502に入力され、プログラムカウン
タPCからのアドレス入力がキャッシュRAM94の範
囲内にあるか否かを決定する。減算器502は、たとえ
ばその下位6ビットをキャッシュRAMアドレスの上位
ビットとして出力する。また、下位3ビットのアドレス
がプログラムカウンタPCから接続される。
【0257】範囲外信号O/RANGEは、減算器50
2のキャリー出力信号から発生され反転される。反転さ
れた範囲外信号は、高レベルであれば、ラッチアレー5
06の1個のラッチのセットを開始する。ラッチのセッ
トは、デマルチプレクサ504を介して減算器502か
らのキャッシュアドレス出力に依存し、命令が出力キャ
ッシュRAMアドレスに対応したキャッシュに格納され
ることを示すキャッシュRAM94における16バイト
セグメントに対応する。タグキャッシュ506の出力は
マルチプレクサ512に入力され、マルチプレクサ51
2は、デマルチプレクサ504から出力される64の選
択線の1つに対応して出力されるラッチ信号を選択する
マルチプレクサ選択入力に基づいて64のタグラッチ信
号の1つをNORゲート514に入力する。NORゲー
ト514の他の入力は、希望の命令がキャッシュRAM
94の中に見いだされないために外部のフェッチが要求
されることを示す範囲外信号である。
【0258】図19は、図4に示されるALUコントロ
ーラ/命令デコーダ60のブロック図である。図19に
示されるように、ALUコントローラ/命令デコーダ6
0は、キャッシュRAM94,ROMコントローラ10
4およびRAMコントローラ88からの命令を受け取
る。これらのマリオチップ部品は、ALUコントローラ
/命令デコーダ60の一部ではなく、図19に図示のた
めだけに示される。
【0259】マルチプレクサ525は、キャッシュRA
M94,ROMコントローラ104またはRAMコント
ローラ88からの命令出力を選択し、選択された命令を
パイプラインラッチ527に入力する。マルチプレクサ
525による命令に基づいたRAMとROMの間の選択
は、コードバンクレジスタの所定のビット、たとえばビ
ット4、の状態に依存する。こうして、コードバンクレ
ジスタにロードされたアドレス情報に依存して、ROM
またはRAMからの命令がデコードされる。他の方法で
は、マルチプレクサ525は、キャッシュコントローラ
68からの制御信号CACHE CTLの状態に依存し
てキャッシュRAM94から命令を選択する。この制御
情報CACHE CTLは、実行されるべき命令がキャ
ッシュRAM94の範囲内にあること、および適当なタ
グビットがキャッシュコントローラ68に関連して説明
されたようにセットされたことを示す。
【0260】パイプラインラッチ527は、命令がRO
MまたはRAMによってフェッチされたときROMコン
トローラ104またはRAMコントローラ88によって
発生されるプログラムカウンタイネーブル信号PCEN
*/IL*/IHによりイネーブルにされたとき、マル
チプレクサ525から8ビット命令を受け取る。RAM
またはROMから命令をフェッチするのに1以上の処理
サイクルを要するので、命令デコード動作はROMまた
はRAMコントローラ104、88によって発生される
プログラムカウンタイネーブル信号PCENによってト
リガされる。
【0261】他方、もし命令がキャッシュRAM94以
外から実行されたなら、プログラムカウンタイネーブル
信号PCENはいつでもアクティブであり、命令実行
は、プロセッサクロック速度のままで行われる。ROM
10のアクセス時間は、キャッシュRAMまたはカート
リッジRAMのアクセス時間よりずっと遅いので、PC
EN信号は対応するキャッシュRAM,ダイナミックR
AMまたはスタッティックRAMよりもROMアクセス
のためのより低周波数の間隔で発生されねばならない。
【0262】パイプラインラッチ527に一時的に格納
された命令は、ゲート回路537,539,541で図
式的に表されるような通常の命令デコード回路に出力さ
れ、動作コード(op code)1,2,…,Nを示
す信号を発生する。
【0263】また、パイプラインラッチ527に一時的
に格納された命令は、ルックアヘッド論理回路551に
入力される。ルックアヘッド論理回路551は、マリオ
チップレジスタブロック76内の適当なレジスタを選択
するための動作コードの予備的デコードの指示を与える
ために役立つ。したがって、動作コードのデコードの前
に実行速度を最適化するためにアクセスが要求されたレ
ジスタは、命令によって要求されるデータの高速アクセ
スを可能にするために早く決定される。
【0264】ルックアヘッド論理回路551は、命令動
作コードビットと種々のプログラムデコード制御フラグ
とに応答する。命令デコード回路60はプログラム制御
フラグディテクタ543を備え、この回路543は、前
にデコードされた動作コードに応答して、前に説明した
ように、対応するプリフィックス命令がデコードされた
ことを示すALT1,ALT2信号を発生する。また、
後に説明するように、関連するALT 1 PRE信号
はフラグ検出回路543によって発生される。さらに、
IL,IH信号が、中間データを要求する命令がデコー
ドされたことを示すために発生される。(ここで、Lと
Hは、下位バイトと上位バイトを示す。)このIH,I
Lフラグは、動作コードとしてデコードされたコードか
らイミディエイトコード関連命令をあらかじめ除くため
に動作する。したがって、否IL(/IL)信号と否I
H(/IH)信号は、パイプラインラッチ527をイネ
ーブルにするために要求される。前に説明したように、
ALT 1信号とALT2信号は、続いて発生される動
作コードを修正するために用いられ、これらの信号の前
記の説明に対応して、たとえば動作コード出力を修正す
るためのゲート回路541のようなデコード論理素子5
37,539,541などに入力される。
【0265】ルックアヘッド論理回路551は、前にデ
コードされた動作コードと、前の動作コード(たとえば
プリフィクスコードALT 1、ALT 2)がデコー
ドされたときに発生される信号とに基づいてレジスタ選
択信号を発生する。たとえば、プログラム制御フラグ検
出論理回路543の中に示されるように、もしALT1
信号がデコード論理素子545によってデコードされた
ならば、ALT 1PRE信号が発生される。この信号
は、プログラム制御フラグ検出回路543によって出力
され、次にORゲート549を介してルックアヘッド論
理回路531に入力される。また、ALT 1 PRE
信号は、ALT 1ラッチ547をセットする。ORゲ
ート549は、またALT 1信号をラッチ547から
出力し、ALT 1信号をデコード論理素子537,5
39,541などに入力する。
【0266】図19に図式的に示されるルックアヘッド
論理回路は、4個のレジスタ選択制御ビットXSEL
0,XSEL1,XSEL2,XSEL3の発生法を示
す。これらの4制御ビットは、次に、図23にレジスタ
制御論理素子76に関連して示されるマルチプレクサ6
20,622に入力される。レジスタ制御論理素子76
は、実行される命令によって使用されるXバスに出力さ
れる16個のレジスタの一つの内容を選択する。
【0267】こうして、パイプラインラッチ527にロ
ードされる前の命令は、レジスタ選択ビットXSEL−
U0を発生するルックアヘッドデコード論理素子529
に入力される。次に、このレジスタ選択ビットXSEL
−U0はラッチ535にラッチされ、出力XSEL0を
して出力される。ラッチ535は、プログラムカウンタ
信号PCENによってイネーブルにされる。同様に、論
理素子531は、信号XSEL1を出力するラッチ53
3にラッチされるレジスタ選択ビットXSEL−U1を
発生する。ALT 1 PRE信号は、ルックアヘッド
論理回路551において、種々のデコード論理素子52
9,531などに接続され、レジスタ制御論理素子76
によって選択される適当なレジスタを決めるために用い
られる。たとえば、ルックアヘッド論理回路551にお
いて示されるように、ALT 1PRE信号は、XSE
L−U1を発生する論理素子531に入力される信号の
1つであり、信号XSEL1を出力するラッチ533に
ラッチされる。
【0268】図20は、ルックアヘッド論理回路551
の動作を示すためのタイミング信号の1例を示す。図2
0は、クロック信号CKとキャッシュRAMデータアク
セスに関連した命令動作コードの1例を示す。タイミン
グ信号は、また、パイプライン527がロードされたと
き、レジスタ選択信号が発生されたとき、および、レジ
スタからの情報が目的のZバスにロードされるときを示
す。
【0269】図20に示すように、キャッシュデータR
AM動作コード(動作コード1)は、クロックパルスC
Kの立ち上がりエッジの後のある時点で有効になる。動
作コードは、たとえば、第2のクロックパルスCKの立
ち上がりエッジまで、パイプラインラッチ527に格納
され、このときに、動作コード2がラッチ527にロー
ドされる。命令デコーダ60は、図24に図式的に示さ
れる時間内の1点でラッチ227から出力を受け取った
すぐ後で命令のデコードを開始する。命令デコードの結
果は、先に説明したように、ALU50,キャッシュコ
ントローラ68,プロットハードウエア52などのマリ
オチップ部品への制御信号に結合される。
【0270】図19に示されるルックアヘッド回路55
1は、動作コード2のデコードの前の1時点で選択信号
XSEL−Uを発生することにより、レジスタ選択デコ
ード処理を開始する。XSEL−U0信号は、命令のた
めに要求されるデコードを命令サイクル内でできるだけ
早くアクセス可能にし、できるだけ早く適当なバスに入
力するような時点でたとえばラッチ535により出力さ
れる。
【0271】レジスタ制御論理回路78の1部は、図2
1に示されるように、YバスとZバスに関連したレジス
タ選択信号を発生する。マルチプレクサ604は、16
のレジスタの中のどれがZバスから書かれるかを選択す
る。マルチプレクサ606はどのレジスタがYバスに出
力するかを選択する。
【0272】マルチプレクサ604,606は、それぞ
れ、4ビットレジスタ600、602から入力を受け取
る。レジスタ600と602は、それぞれ、前記の”T
O”と”FROM”のプリフィックス命令(レジスタ6
00、602に命令バスの下位ビットを入力するように
動作する)のデコードによってイネーブルにされる。レ
ジスタ600,602は、前記の制御フラグをリセット
する命令に応答してクリアされる。
【0273】マルチプレクサ604,606は、さらに
レジスタブロック76内の種々のレジスタから入力を受
け取る。さらに、マルチプレクサ604,606は、命
令の目的すなわちソースレジスタを決める下位4ビット
を含む命令を実行するために命令バス上の下位ビットか
ら入力を受け取る。さらに、スーパーNESアドレスバ
スからの所定の下位ビットが、マルチプレクサ604,
606に接続される。マルチプレクサ604,606
は、それぞれZバスとYバスに出力するレジスタを選択
する。
【0274】図23は、レジスタブロック76と、図5
にレジスタ制御論理回路78として具体化された別のレ
ジスタ選択制御論理回路を示す。FROMXレジスタ6
18は、FROM命令のデコードにおいて発生されるF
ROMSET信号によってセットされる。FROMSE
T信号を受け取ると、Yバスの内容がレジスタ618に
ロードされる。次に、レジスタ618にロードされたデ
ータは、次の命令実行に用いられるデータになる。レジ
スタ618の内容は、マルチプレクサ622の入力の1
つに入力される。また、マルチプレクサ622は、デフ
ォールトレジスタとして用いられるレジスタR0の内容
を1つの入力に受け取る。
【0275】マルチプレクサ622の1つの入力は、マ
ルチプレクサ620の出力である。マルチプレクサ62
0は、プログラムカウンタ(すなわちレジスタR15)
の内容、MERGE命令を実行するのに用いられるレジ
スタからの入力とレジスタR1(たとえばプロット命令
を実行するのに用いられる)からの入力を受け取る。マ
ルチプレクサ620は、図19に示されるルックアヘッ
ド論理回路551によって発生されたXSEL2ビッ
ト,XSEL3ビットの状態に基づいてこれらの入力の
中の1つを選択する。
【0276】マルチプレクサ622の他の入力は、Yバ
スの内容に接続され、Yバス上と同様にXバスに同じデ
ータを出力する。前に説明したように、マルチプレクサ
622の1つの入力は前記のFROM Xレジスタ61
8からの出力である。マルチプレクサ622の出力は、
図19において発生されたXSEL0ビット,XSEL
1ビットの状態に依存して選択され、Xバスに出力され
る。
【0277】レジスタR0〜R15の多くに関連した特
別な目的の機能は、すでに説明されているので、ここで
は繰り返さない。レジスタR0〜R3の出力はマルチプ
レクサ608に入力され、レジスタR4〜R7の出力は
マルチプレクサ610に入力され、レジスタR8〜R1
1の出力はマルチプレクサ612に出力され、レジスタ
R12〜R15の出力はマルチプレクサ614に入力さ
れる。マルチプレクサ606,608,610,612
および614への4入力の1つは、図21に示されるマ
ルチプレクサ606からのYSEL2ビットとYSEL
3ビットの状態に基づいて選択される。マルチプレクサ
616の出力はバッファレジスタ617に入力され、次
にYバスに出力される。
【0278】レジスタR0〜R15への入力において、
各レジスタは、図21で説明されたように発生されるZ
SELビット0〜3によって選択されるイネーブル入力
を有する。また、各レジスタは、クロックCKとデータ
入力とDATA_IN入力を有し、これによりデータが
適当にバッファされた後にZバスから入力される。
【0279】種々の多重動作に関連して用いられるレジ
スタR4は、またディスエーブル低ビット入力,ディス
エーブル高ビット入力,イネーブル低ビット入力,イネ
ーブル高ビット入力も有する。プログラムカウンタPC
であるレジスタR15は、図17に示すROMコントロ
ーラのキャッシュローダ400からの信号CCHLDを
受け取る。この信号は、現在処理中のの16バイトキャ
ッシュセグメントがキャッシュRAMにロードされるま
でジャンプ命令を禁止する。さらに、プログラムカウン
タR15は、命令デコーダからプログラムループペンデ
ィング信号LOOPENを受け取る。この信号は、分岐
命令がありレジスタR13の内容とともにプログラムカ
ウンタPCのローダをイネーブルにする。レジスタR1
5は、さらに、電源投入時リセット信号RESETとル
ープ命令が実行されるときにレジスタR13の内容とと
もにプログラムカウンタをロードする入力RNを受け取
る。
【0280】上に説明したように、本発明のグラフィッ
クス共同プロセッサは、ホストビデオゲームシステムと
ともに、多角形を基にしたオブジェクト(標的又は動画
キャラクタ)の回転、拡大、縮小などの種々の特殊効果
を作り出すために使用できる。図24は、マリオチップ
プログラムの1例として台形を描くフローチャートを示
す。これにより、マリオチップが表示すべき多角形を基
にした対象の1部を発生するために、どのようにプログ
ラムするかが説明される。そのような多角形を発生する
マリオプログラムは、マリオハードウエアがどのように
プログラムを実行するかの詳細な説明とともに以下に開
示される。
【0281】図24に示される高レベルフローチャート
をまず説明する。まず、レジスタブロックR0〜R15
の中のいくつか(たとえばレジスタR1は画素Xの位置
を格納し、レジスタR2は画素Y位置ラインを格納し、
レジスタR7は台形の高さを格納する)が、台形の発生
に用いられる変数に関連している。その後、ブロック6
50に示されるように、ループカウンタがセットされ初
期画素値が計算される。
【0282】ブロック652に示されるように、次に1
本の台形水平ラインのライン長が判断される。もしライ
ンの終点からラインの開始点を減算した結果(−VE)
が負であれば、ルーチンはブロック660へ分岐する。
もしラインの終点からのラインの開始点の減算の結果が
正であれば、ライン長が越えられなかったことを示すの
で、ループカウンタがデクリメントされ(654)、画
素をプロットする命令が実行されて適当な画素がプロッ
トされる(656)。
【0283】ブロック658に示されるように、次にル
ープカウンタの内容が0であるか判断される。もしルー
プカウンタが0でないならば、ジャンプが実行され、ブ
ロック654へ戻ってループカウンタがデクリメントさ
れ(654)、他の画素をプロットする(656)。
【0284】もしループカウンタが0であれば、次に多
角形の左側X座標と右側X座標が更新される(66
0)。その後、台形の高さY HEIGHTがデクリメ
ントされ(662)、もしその結果が0でなければ(6
44)、次にY座標がインクリメントされて次のスキャ
ンラインに動く(665)。そして、ルーチンはブロッ
ク650に戻って再実行される。もしY HEIGHT
が0に等しければ(664)、ルーチンはすべて実行さ
れていて台形が完成する(666)。グラフィックを発
生するマリオチップの命令セットの使用を説明するため
に、図24に説明した台形を描くプログラムの1例が以
下に示される。
【0285】
【表15】 ;台形ループを描く rx = 1 ;x位置をプロットする ry − 2 ;y位置をプロットする rx1 = 3 ;トップ左x位置 rxlinc − 4 ;トップ左x位置のインクリメント rx2 5 ;トップ右x位置 rx2inc = 6 ;トップ右x位置のインクリメント rdy = 7 ;台形y高さ rlen = 12 ;ループカウント、hライン長 rloop = 13 ;ループラベル hlines miwt rloop,hlines 2 ;hline loopの開始のセット hlines1 mfrom rx1 ;x=(rx1)≫8 mto rx mhib mfrom rx2 mhib mto rlen msub rx ;長さ、rlen=(rx2≫8) − (rx1≫8) mbmi hlines 3 ;もしrlen<0ならばhline をスキップする。 mnop minc rlen ;常に1画素を描く hlines2 mloop mplot ;hlineを描く hlines3 mwith rx1 ;rx1+=rxlinc madd rxlinc mwith rx2 ;rx2+=rx2inc madd rx2inc mdec rdy ;rdy−=1 mbne hlines1 ;rdy時間を繰り返す minc ry ;そして次のyに下がる
【0286】マリオチップのハードウエアがどのように
命令を実行するかを説明するために、以下の説明は、上
に記載された台形発生プログラムに向けられる。台形発
生プログラムを実行する前に、ホストコンピュータシス
テム、たとえばスーパーNESは、図6のフローチャー
トの説明に関連して先に説明したように、コードバンク
レジスタとスクリーンベースレジスタに直接に書く。さ
らに、スーパーNESは、ROMコントローラ104内
のローカルレジスタにXEQアドレスの下位バイトを書
き、下位バイトはスーパーNESアドレスバスHAから
デコードされる。次に、スーパーNESは上位バイトを
ROMコントローラ104に書き、上位バイトは前記の
ローカルレジスタの内容に結合され、Zバスに入力され
る。その後、マリオチッププログラムカウンタとして動
作するレジスタR15はイネーブルになる。
【0287】ROMコントローラ104への前記のスー
パーNESのライト動作の立ち下がりエッジを検出する
と、マリオ”GO”フラグはセットされる。もしプログ
ラムカウンタとキャッシュベースレジスタの差がキャッ
シュサイズより大きいか、キャッシュフラグとプログラ
ムカウンタの積とキャッシュベースレジスタとの差を1
6で割った値が0に等しければ、プログラムカウンタの
内容がROM10に通され、ROMタイミングカウンタ
(図17のブロック406)がスタートされる。
【0288】初めに、台形ループを描くサブルーチンを
実行する前に台形ループプログラムに関連して使用され
る変数は、台形プログラムリストの最初の部分に示され
るスーパーマリオレジスタに関連している。たとえば、
「X位置をプロットする」である変数”rx”はレジス
タR1に関連し、変数”rloop”はレジスタR13
に関連する。
【0289】これらのレジスタの割り当てがなされた後
で、台形プログラムが以下のように実行される。ROM
コントローラ406内のROMタイミングカウンタ40
6の値が5に達すると(約200ナノ秒)、実行される
最初の命令”IWT rloop,hlines 2”
がROMデータバスからパイプラインレジスタ62(図
4に示される)にラッチされる。このデータは、同時に
キャッシュRAM94に書き込まれる。命令”IWT
rloop,hlines 2”を実行するために、プ
ログラムカウンタがインクリメントされる。”IL”フ
ラグと”IH”フラグはセットされ、命令のストリーム
において次に2バイトがイミディエイトデータであるこ
とを示す。ROMタイミングカウンタ406が5に達し
たとき、この即時データ(下位バイト)がキャッシュR
AM94に書かれ、ROMコントローラ104内の一時
的レジスタに保持される。ROMフェッチメカニズムは
繰り返され、イミディエイトデータの上位バイトは、下
位バイトと結合されZバスに経路をとる。レジスタR1
3がイネーブルにされ、Zバスの内容は、ループカウン
タをセットするためにそこに格納される。ルーチンにお
けるこの時点からループ命令に出会うまで、各命令がメ
モリからフェッチされる。
【0290】命令”FROM RX1”を実行するため
に、命令コードの下位4ビットがレジスタコントローラ
(図21参照)内の4ビット”FROM Y”レジスタ
602にロードされる。さらに、RX1(レジスタR
3)からのデータはYバスでイネーブルになり、16ビ
ット”FROM X”レジスタ618に格納される。”
TO RX”命令を実行するために、命令コードの下位
4ビットが、レジスタコントローラ(図21参照)内の
4ビット”enable Z”レジスタ600にロード
される。
【0291】”HIB”命令は、”FROM X”レジ
スタ618の16ビットの内容をXバスに出すことによ
り実行される。ALUはXバスのトップバイトをZバス
の下位バイトに出し、Zバスのトップバイトを0にセッ
トする。これによりX位置の分数部分は除去され、第1
水平ラインのための開始位置をレジスタRX(レジスタ
R1)に残す。
【0292】命令”FROM RX2”の実行におい
て、上に説明した”FROM RX1”命令の実行でな
されたのと同様な動作が行われる。”HIB”命令は台
形の上側左X座標に関連した動作(上に説明したのと同
様なもの)を生じ、レジスタR0(アキュムレータとし
て動作するデフォールトレジスタ)に第1水平ラインの
開始点を記憶する。
【0293】”RLEN”命令と”SUB RX”命令
は、そのラインの開始点を終了点から減算すること(R
LEN(R12)=R0−RX)により実行される。符
号フラグは、エラー条件を示す負の結果であるならばセ
ットされる。
【0294】”BMI HLINES3”命令は2バイ
ト命令であり、第1バイトは、符号フラグがセットされ
ていればフラグをセットする。第2バイトは、もし条件
フラグがセットされれば、分岐オフセットである(ここ
に、R15は、R15と命令との和に等しい)。もしそ
うでなければ、R15は変わらないままであり、通常の
プログラム実行が続けられる。
【0295】”INC RLEN”命令は、少なくとも
1画素がプロットされることを保証するために、ライン
長レジスタはその値に1を付加する。”LOOP”命令
はR12=R12−1の計算をさせるように動作する。
もしR12が0でないならば、レジスタR15(プログ
ラムカウンタ)がR13の内容でロードされ、これによ
りジャンプが起こされる。
【0296】”PLOT”命令を実行するために、lo
op/plotの1対の命令が水平ラインを描くアルゴ
リズムとなる。”PLOT”命令は、R1,R2によっ
て(X,Y座標として)アドレスされるスクリーン画素
を、図4に示される”COLORレジスタ”54のカラ
ーセットにセットする。画素を含む文字のアドレスはプ
ロットハードウエア52によって計算される。新しい画
素データは、マリオチップが違った文字位置でプロット
するためにその位置に動くまで文字ラインバッファ(カ
ラーマトリックス)に保持される。すべてのカラー情報
が、カラーマトリックス内の2重バッファメカニズムの
第2レベルにコピーされると、この情報は外部RAMに
書かれる。
【0297】”WITH RX1”命令と”ADD R
X1 INC”命令が実行されると、台形の左側X座標
を更新する。同様に、”WITH RX2”命令と”A
DDRX2 INC”命令が実行されると、台形の右側
X座標を更新する。”DEC RDY”命令、”BN
E, Hlines1”命令、および、”INC R
Y”命令は、台形が完成するまで、次のY位置(次のス
キャンライン)へ動くように動作する。
【0298】以下のプログラムリストは、8ビットの
X,Y,Z点の1配列を回転するためにマリオチップが
どのようにプログラムされるかの1例を示す。このルー
チンは、回転動作を行う本発明の実施の形態によるグラ
フィックス共同プロセッサのためのプログラムの1例を
示す。このルーチンのリストは以下の通りである。
【0299】
【表16】 LISTING ROTATE: ;8ビットX,Y,Z点の1配列を回転する ; ;レジスタ内の回転マトリックスによって ;rmat121,rmat2113,rmat2322,rmat3231,rmat0033 ; ;マトリックス要素は8ビットの符号付き分数(signed fractions)である ;すなわち 127= 127/128=約1 ; −128=−128/128=−1 ;これらは、レジスタあたり2 8ビットエレメントとして簡潔に格納される rx = 1 ; x ry = 2 ; y rz = 3 ; z rt = 4 ; temp rmat1211 = 5 ; マトリックス要素11と12 rmat2113 = 6 ; マトリックス要素13と21 rmat2322 = 7 ; マトリックス要素22と23 rmat3231 = 8 ; マトリックス要素31と32 rmat0033 = 9 ; マトリックス要素33 routptr = 10 ; 回転される点のバッファへのポインタ (ptr to rotated points buffer) msh rotpoints8 miwt r14,pointsaddr ;回転される点へのROMポインタ miwt r12,numpoints ;回転される点の数 miwt routptr,m rotpnts ;回転される点のバッファへの RAMポインタ mcache ; キャッシュレジスタをセットする mmove r13,pc ; ループアドレスを初期化する nmatrotploop mto rx ; xを得る mgetb minc r14 mfrom rmat1211 ; 11 mto rt mmult rx ; m11*x mto ry ; yを得る mgetb minc r14 mfrom rmat2113 ; 21 mhib mmult ry ; m21*y mto rt madd rt mto rz ; zを得る mgetb minc r14 mfrom rmat3231 ; 31 mmult rz ; m31*z madd rt madd r0 mhib mstb (routptr) ; 回転されたxを格納する minc routptr mfrom rmat1211 ; 12 mhib mto rt mmult rx ; m12*x mfrom rmat2322 ; 22 mmult ry ; m22*y mto rt madd rt mfrom rmat3231 ; 32 mhib mmult rz ; m32*z madd rt madd r0 mhib mstb (routptr) ; 回転されたyを格納する minc routptr mfrom rmat2113 ; 13 mto rt mmult rx ; m13*x mfrom rmat2322 ; m23*y mhib mmult ry mto rt madd rt mfrom rmat0033 ; 33 mmult rz ; m33*z madd rt madd r0 mhib mstb (routptr) ; 回転されたzを格納する mloop minc routptr
【0300】図25,図26および図27は、本発明の
プログラマブルグラフィックス共同プロセッサをホスト
コンピュータシステム(たとえばSuper NES)
とともに用いたときの特別な効果の1例を示す。図25
に示すように、オブジェクトすなわちヘリコプタの側面
が描かれる。この図は、マリオチップを用いて発生され
高品質の表示を反映していない。図26と図27は、図
19に示されたヘリコプタの拡大像と回転像を示す。本
発明のグラフィックス共同プロセッサは、3D型などの
特殊な効果(多角形を基にした対象物の高速な回転、拡
大、縮小を含む)を発生するために用いられる。このと
き、この効果は、ホストビデオゲーム処理システムの最
小の負荷を与えるだけである。
【0301】本発明は実施形態を用いて詳細に説明され
たが、本発明は実施形態に限定されるものではない。当
業者による多数の変形,修正は、本発明の範囲に属す
る。
【図面の簡単な説明】
【図1】 本発明の実施の形態に従った外部メモリシス
テムのブロック図である。
【図2】 本発明の実施の形態に係るグラフィックス共
同プロセッサと共に用いるためのホスト処理システムの
ブロック図である。
【図3】 グラフィックス共同プロセッサを内蔵したゲ
ームカートリッジとホスト処理システムを内蔵したベー
スユニットの斜視図である。
【図4】 本実施形態に従ったグラフィックス共同プロ
セッサの第1の部分のブロック図である。
【図5】 本実施形態に従ったグラフィックス共同プロ
セッサの第2の部分のブロック図である。
【図6】 グラフィックス共同プロセッサの初期化を行
なうためホスト処理システムによって実行される処理を
示すフローチャートである。
【図7】 図4に示した演算論理ユニットの詳細なブロ
ック図である。
【図8】 図4に示した画素プロット回路の詳細なブロ
ック図である。
【図9】 プロットコントローラによって受信された入
力信号とプロットコントローラによって発生された出力
信号を示すブロック図である。
【図10】 画素プロット回路のカラーマトリックス内
に含まれるカラーマトリックス要素を示す図である。
【図11】 画素プロット回路に関係するタイミング制
御及びデータ信号を示す図である。
【図12】 図4に示したRAMコントローラの詳細な
ブロック図である。
【図13】 図12に示したRAMコントローラに関連
するタイミング制御及びデータ信号を示す図である。
【図14】 図12に示した仲介ロジックを示す回路図
である。
【図15】 本発明のグラフィックス共同プロセッサの
一実施形態における再同期回路の図である。
【図16】 図15の再同期回路に関連するタイミング
信号を示す図である。
【図17】 本発明のグラフィックス共同プロセッサの
ROMコントローラの詳細なブロック図である。
【図18】 本発明の一実施形態に従ったグラフィック
ス共同プロセッサのキャッシュコントローラのブロック
図である。
【図19】 本発明のグラフィックス共同プロセッサの
インストラクション解読に関連する回路を示すブロック
図である。
【図20】 図19のルックアヘッドロジックの操作を
示すタイミング信号を示す図である。
【図21】 本発明の一実施形態に従ったグラフィック
ス共同プロセッサのレジスタコントロールロジックの第
1の部分を示すブロック図である。
【図22】 本発明の一実施形態に従ったグラフィック
ス共同プロセッサのレジスタコントロールロジックの第
2の部分を示すブロック図である。
【図23】 本発明の一実施形態に従ったグラフィック
ス共同プロセッサのレジスタコントロールロジックの第
3の部分を示すブロック図である。
【図24】 多角形生成を実行するグラフィックス共同
プロセッサの操作手順を示すフローチャートである。
【図25】 本発明の一実施形態に従って拡大、縮小及
び回転の特徴を示すために多角形ベースの物体の作成の
第1の態様を示す表示画面の図である。
【図26】 本発明の一実施形態に従って拡大、縮小及
び回転の特徴を示すために多角形ベースの物体の作成の
第2の態様を示す表示画面の図である。
【図27】 本発明の一実施形態に従って拡大、縮小及
び回転の特徴を示すために多角形ベースの物体の作成の
第3の態様を示す表示画面の図である。
【符号の説明】
1…コネクタ、 2…グラフィックスプロセッサ、
6,8…RAM、 10…外部メモリ、19…外部メ
モリシステム(ビデオゲームカートリッジ)、20…ホ
スト処理ユニット、 131…RAMユニットバス、
50…論理ユニット、 52…プロット回路、68…
キャッシュコントローラ、 94…キャッシュメモ
リ、76…レジスタ、 551…ルックアヘッド手
段、36…ディスプレイ、 22…ゲームマイクロプ
ロセッサ、24…画像処理ユニット、(60,50,5
2)…ビデオグラフィックスプログラム実行手段、X…
第1データソースバス、 Y…第2データソースバ
ス、Z…データデスティネイションバス、62…インス
トラクションデコーダ、88…RAMコントローラ、1
04…プログラムメモリコントローラ、308…マルチ
プレクサ。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 17/10 G06F 17/10 D 5B080 G06T 1/20 G06T 1/20 A 15/00 100 15/00 100A (72)発明者 ジェレミー・イー・サン イギリス、イングランド、エヌダブリュー 7・4ピーティ、ロンドン、ミル・ヒル、 アップヒル・ロード73番 (72)発明者 ベン・チーズ イギリス、イングランド、エスジー8・6 エイイー、ハートフォードシャー、メルボ ルン・ロイストン、ドルフィン・レイン23 番 (72)発明者 カール・エヌ・グレイアム イギリス、イングランド、イー4・7イー ティ、ロンドン、ノース・チングフォー ド、ウッドランド・ロード15番 (72)発明者 ピーター・アール・ウォーンズ イギリス、イングランド、イー6・1エイ アール、ロンドン、イースト・ハム、ウォ ルポール・ロード12エイ番 Fターム(参考) 2C001 BC05 CB01 CB03 CB06 CC02 CC08 5B013 DD03 5B045 DD12 GG06 GG09 5B056 BB28 FF01 FF02 FF05 HH03 5B057 AA20 CA01 CA08 CA13 CA16 CB01 CB08 CB13 CB16 CC01 CD03 CE20 CF10 CH02 CH08 CH12 CH14 5B080 CA03 CA05 FA02 GA22

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 テレビジョン形式のディスプレイ(3
    6)とともに使用するビデオゲームシステム(19,2
    0)であって、 ビデオゲームプログラムのインストラクションを実行す
    るためのゲームマイクロプロセッサ(22)と、 前記ゲームマイクロプロセッサに接続され、前記ゲーム
    マイクロプロセッサ(22)の制御下において、画像処
    理タスクを実行する画像プロセシングユニット(24)
    と、 前記ビデオゲームプログラムを格納するためのプログラ
    ムメモリ(10)と、 前記プログラムメモリに接続され、使用時に前記ゲーム
    マイクロプロセッサ(22)に接続されて、前記ビデオ
    ゲームプログラムのインストラクションの少なくともい
    くつかを実行するプログラマブルグラフィックスプロセ
    ッサ(2)とからなるビデオゲームシステム。
  2. 【請求項2】 さらに、前記プログラムメモリ(10)
    と前記プログラマブルグラフィックスプロセッサ(2)
    とに接続され、アドレス、データおよび制御情報を伝送
    するためのプログラムメモリバスと、 ランダムアクセスメモリユニットと、 該ランダムアクセスメモリユニット(6,8)と前記プ
    ログラマブルグラフィックスプロセッサ(2)に接続さ
    れ、アドレス、データおよび制御情報を伝送するための
    ランダムアクセスメモリユニットバスと、 前記プログラマブルグラフィックスプロセッサ(2)と
    前記ゲームマイクロプロセッサ(22)との間におい
    て、アドレス、データおよび制御情報を伝送するための
    ゲームマイクロプロセッサバスとをさらに備えた請求項
    1に記載のビデオゲームシステム。
  3. 【請求項3】 前記プログラマブルグラフィックスプロ
    セッサ(2)は、前記プログラムメモリ内に格納された
    インストラクションの第2の部分の少なくともいくつか
    を実行する演算・論理ユニット(50)と、プログラム
    メモリ内に格納された少なくとも一つの表示関連のイン
    ストラクションを実行するプロット回路(52)とを含
    む請求項1に記載のビデオゲームシステム。
  4. 【請求項4】 前記プログラマブルグラフィックスプロ
    セッサ(2)は、さらに、キャッシュコントローラ(6
    8)と該キャッシュコントローラ(68)に接続された
    キャッシュメモリ(94)とを含み、前記プログラマブ
    ルグラフィックスプロセッサは、前記キャッシュメモリ
    (95,60,50)内に格納されたインストラクショ
    ンを実行する実行手段を含んでおり、前記プログラマブ
    ルグラフィックスプロセッサと前記ゲームマイクロプロ
    セッサはインストラクションを並行に実行できる請求項
    1に記載のビデオゲームシステム。
  5. 【請求項5】 前記ゲームマイクロプロセッサ(22)
    と画像プロセシングユニット(24)とは、ビデオゲー
    ムシステムのメインプロセシングユニット(20)内に
    実装されており、前記プログラムメモリ(10)とプロ
    グラマブルグラフィックスプロセッサ(2)とはビデオ
    ゲームカートリッジ(19)内に内蔵された請求項1に
    記載のビデオゲームシステム。
  6. 【請求項6】 外部メモリ(10)内に格納されたビデ
    オグラフィックスプログラムの少なくとも第1の部分を
    実行する第1プロセシングユニット(20)を有する情
    報処理システム(19,20)に使用するためのプログ
    ラマブルグラフィックスプロセッサであって、 前記外部メモリ(10)から前記ビデオグラフィックス
    プログラム(60,50,52)の第2の部分のインス
    トラクションを受取る入力手段と、 前記ビデオグラフィックスプログラムの少なくとも第2
    の部分を実行する実行手段とを備えたプログラマブルグ
    ラフィックスプロセッサ。
  7. 【請求項7】 さらに、プログラマブルグラフィックス
    プロセッサによって実行されるべきインストラクション
    を格納している外部メモリ位置を同定するため前記第1
    プロセシングユニットからアドレス情報を受取る入力手
    段を含む請求項6に記載のプログラマブルグラフィック
    スプロセッサ。
  8. 【請求項8】 前記アドレス情報を受取る入力手段は、
    外部メモリバンクを同定するためのアドレス情報を受取
    る外部メモリバンクレジスタと、該メモリバンク内の位
    置を同定するためのプログラムカウンタとを含む請求項
    7に記載のプログラマブルグラフィックスプロセッサ。
  9. 【請求項9】 プログラマブルグラフィックスプロセッ
    サが現在動作中であることを示す指示および該プロセッ
    サが前記第1プロセシングユニットにインターラプト信
    号を送ったことを示す指示を含む複数のグラフィックス
    プロセッサステータス指示を格納するステータスレジス
    タ手段を含む請求項6に記載のプログラマブルグラフィ
    ックスプロセッサ。
  10. 【請求項10】 前記外部メモリ内に格納された前記ビ
    デオグラフィックスプログラムの第2の部分の少なくと
    もいくつかを実行するための演算・論理ユニット(5
    0)と、外部メモリ内に格納された少なくとも一つの表
    示に関連するインストラクションを実行するプロット回
    路(52)とを含む請求項6に記載のプログラマブルグ
    ラフィックスプロセッサ。
  11. 【請求項11】 さらに、第1データソースバス
    (X)、第2データソースバス(Y)およびデータデス
    ティネーションバス(Z)が備えられ、これらバスの各
    々は前記演算・論理ユニットおよびプロット回路に接続
    された請求項10に記載のプログラマブルグラフィック
    スプロセッサ。
  12. 【請求項12】 さらに、キャッシュコントローラ(6
    8)と、該コントローラに接続されたキャッシュメモリ
    (94)と、該キャッシュメモリ(95,60,50)
    内に格納されたインストラクションを実行する実行手段
    とを備えた請求項6に記載のプログラマブルグラフィッ
    クスプロセッサ。
  13. 【請求項13】 少なくとも1つのインストラクション
    (50)を実行する実行手段と、 複数のステータス条件を格納するステータスレジスタ
    と、 これらステータス条件の少なくとも1つの状態に応答す
    るインストラクションデコーダ(62)であって、少な
    くとも1つのインストラクションによって、前記ステー
    タスレジスタが第1の状態である場合には、前記実行手
    段に第1の動作を開始させ、前記ステータスレジスタが
    第2の状態である場合には、前記実行手段に第2の動作
    を開始させるインストラクションデコーダ(62)とを
    備えた請求項6に記載のプログラマブルグラフィックス
    プロセッサ。
  14. 【請求項14】 前記情報処理システムがディスプレイ
    と接続され、前記プログラムグラフィックスプロセッサ
    は前記第1のプロセシングユニットと共に表示された対
    象物の回転を制御するため動作する請求項6に記載のプ
    ログラマブルグラフィックスプロセッサ。
  15. 【請求項15】 前記実行手段は画素ベースのフォーマ
    ットデータをキャラクタベースのフォーマットデータに
    変換するプロット回路(52)を含む請求項14に記載
    のプログラマブルグラフィックスプロセッサ。
  16. 【請求項16】 ホストプロセシングシステム(20)
    とビデオグラフィックスプログラムを格納するプログラ
    ムメモリ(10)と共に使用するグラフィックスプロセ
    ッサ(2)であって、 前記プログラムメモリに格納されたインストラクション
    を実行する演算及び論理ユニット(50)と、 前記プログラムメモリへのアクセスを制御し、前記ホス
    トプロセシングシステム(10)及びグラフィックスプ
    ロセッサの少なくとも1つを選択的に前記プログラムメ
    モリにアクセス可能にするプログラムメモリコントロー
    ラ(104)とを備えるグラフィックスプロセッサ。
  17. 【請求項17】 さらにキャッシュメモリ(94)を備
    え、前記プログラムメモリコントローラ(104)は該
    キャッシュメモリにプログラムインストラクションをロ
    ードするロード手段を備えた請求項16に記載のグラフ
    ィックスプロセッサ。
  18. 【請求項18】 前記グラフィックスプロセッサ(2)
    はプログラムメモリアドレスバスに接続され、前記プロ
    グラムメモリコントローラは前記プログラムメモリアド
    レスバス上に出力されるアドレスを選択するマルチプレ
    クサ(414)を備えた請求項16に記載のグラフィッ
    クスプロセッサ。
  19. 【請求項19】 更に複数のレジスタ(76)を備え、
    前記プログラムメモリコントローラ(106)は、アク
    セスされた該複数のレジスタの1つに応答して、プログ
    ラムメモリデータの取り込みを自動的に開始する制御手
    段を備えた請求項18に記載のグラフィックスプロセッ
    サ。
  20. 【請求項20】 前記グラフィックスプロセッサ(2)
    はランダムアクセスメモリ(6,8)に接続され、さら
    にこのランダムアクセスメモリへのアクセスを制御する
    RAMコントローラ(88)を備えた請求項16に記載
    のグラフィックスプロセッサ。
  21. 【請求項21】 ホストプロセシングシステム(20)
    とビデオグラフィックスプログラムを格納するプログラ
    ムメモリ(10)とランダムアクセスメモリ(6,8)
    と共に使用するグラフィックスプロセッサ(2)であっ
    て、 前記ホストプロセシングシステム(HA)からのRAM
    アドレスを受信する受信手段と、 RAMアドレスを発生させるグラフィックスプロセシン
    グ手段と、 ホストプロセシングシステムからのRAMアドレスとグ
    ラフィックスプロセシング手段により発生されたRAM
    アドレスとの間で選択し、それを前記ランダムアクセス
    メモリに接続するRAMコントローラ(88)とからな
    るグラフィックスプロセッサ。
  22. 【請求項22】 さらに少なくとも1つのステータスレ
    ジスタを備え、前記RAMコントローラは、ホストプロ
    セシングシステムにより発生されたアドレス(HA)と
    グラフィックスプロセシング手段により発生されたアド
    レス(DEOTADOR)を受信し、前記ステータスレ
    ジスタ中に格納された少なくとも1つのステータスビッ
    トの状態に依存して、該アドレスの1つを前記ランダム
    アクセスメモリに接続するマルチプレクサ手段(30
    8)を備えた請求項21に記載のグラフィックスプロセ
    ッサ。
JP2002163283A 1992-01-30 2002-06-04 ビデオゲームシステム及びそのためのプログラマブルグラフィックスプロセッサ Pending JP2003126550A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US827098 1992-01-30
US07/827,098 US5388841A (en) 1992-01-30 1992-01-30 External memory system having programmable graphics processor for use in a video game system or the like

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP01354093A Division JP3335695B2 (ja) 1992-01-30 1993-01-29 外部メモリシステム

Publications (1)

Publication Number Publication Date
JP2003126550A true JP2003126550A (ja) 2003-05-07

Family

ID=25248311

Family Applications (2)

Application Number Title Priority Date Filing Date
JP01354093A Expired - Fee Related JP3335695B2 (ja) 1992-01-30 1993-01-29 外部メモリシステム
JP2002163283A Pending JP2003126550A (ja) 1992-01-30 2002-06-04 ビデオゲームシステム及びそのためのプログラマブルグラフィックスプロセッサ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP01354093A Expired - Fee Related JP3335695B2 (ja) 1992-01-30 1993-01-29 外部メモリシステム

Country Status (10)

Country Link
US (6) US5388841A (ja)
EP (2) EP1262921A3 (ja)
JP (2) JP3335695B2 (ja)
KR (1) KR100280939B1 (ja)
CN (1) CN1048564C (ja)
AT (1) ATE229197T1 (ja)
AU (1) AU657147B2 (ja)
CA (1) CA2074554C (ja)
DE (1) DE69232865T2 (ja)
TW (1) TW226448B (ja)

Families Citing this family (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2074388C (en) * 1992-01-30 2003-01-14 Jeremy E. San Programmable graphics processor having pixel to character conversion hardware for use in a video game system or the like
US5388841A (en) 1992-01-30 1995-02-14 A/N Inc. External memory system having programmable graphics processor for use in a video game system or the like
EP0571138A3 (en) * 1992-05-20 1995-03-29 Codemasters Ltd Memory cartridge and interface for video game console.
US5758185A (en) * 1992-10-01 1998-05-26 Hudson Soft Co. Ltd. Method for resetting a system controlled by a CPU and having a semi-autonomous IC unit
US5798785A (en) * 1992-12-09 1998-08-25 Discovery Communications, Inc. Terminal for suggesting programs offered on a television program delivery system
US6762733B2 (en) * 1993-06-24 2004-07-13 Nintendo Co. Ltd. Electronic entertainment and communication system
US6147696A (en) * 1993-06-24 2000-11-14 Nintendo Co. Ltd. Electronic entertainment and communication system
CA2127053C (en) * 1993-07-02 2005-01-04 Makoto Furuhashi Method and apparatus for time-sharing cpu system bus in image generation system
JP3366413B2 (ja) * 1993-07-27 2003-01-14 任天堂株式会社 表示情報変換装置および情報処理システム
JP3904244B2 (ja) * 1993-09-17 2007-04-11 株式会社ルネサステクノロジ シングル・チップ・データ処理装置
US5828862A (en) * 1994-05-04 1998-10-27 International Business Machines Corporation Game programming flash memory cartridge system including a programmer and a reprogrammable cartridge
US5706478A (en) * 1994-05-23 1998-01-06 Cirrus Logic, Inc. Display list processor for operating in processor and coprocessor modes
WO1996000601A1 (fr) * 1994-06-28 1996-01-11 Sega Enterprises, Ltd. Dispositif pour jeu et procede de restitution de partie
JPH0816530A (ja) * 1994-07-04 1996-01-19 Kurieiteibu Design:Kk コプロセサシステムおよび補助演算機能付外部メモリ装置
US6735683B2 (en) 1994-09-14 2004-05-11 Hitachi, Ltd. Single-chip microcomputer with hierarchical internal bus structure having data and address signal lines coupling CPU with other processing elements
US5599231A (en) * 1994-10-31 1997-02-04 Nintendo Co., Ltd. Security systems and methods for a videographics and authentication game/program fabricating device
US5680534A (en) * 1994-10-31 1997-10-21 Nintendo Co., Ltd. Video game/videographics program fabricating system and method with superimpose control
US5680533A (en) * 1994-10-31 1997-10-21 Nintendo Co., Ltd. Videographics program/video game fabricating system and method
US6115036A (en) * 1994-10-31 2000-09-05 Nintendo Co., Ltd. Video game/videographics program editing apparatus with program halt and data transfer features
US5592609A (en) * 1994-10-31 1997-01-07 Nintendo Co., Ltd. Video game/videographics program fabricating system and method with unit based program processing
JP2742394B2 (ja) * 1994-12-02 1998-04-22 株式会社ナムコ ゲームプログラムおよびデータの読込み方法、ならびにこれを用いたゲーム装置
AU686494B2 (en) * 1995-02-08 1998-02-05 Sega Enterprises, Ltd. Information processor having security check function
US5984785A (en) 1995-05-10 1999-11-16 Nintendo Co., Ltd. Operating device with analog joystick
US6241611B1 (en) 1995-05-10 2001-06-05 Nintendo Co., Ltd. Function expansion device and operating device using the function expansion device
US5880739A (en) 1995-06-06 1999-03-09 Compaq Computer Corporation Blitting of images using instructions
WO1997006490A1 (en) * 1995-08-09 1997-02-20 Cirrus Logic, Inc. Parasitic personal computer interface
JP3524247B2 (ja) 1995-10-09 2004-05-10 任天堂株式会社 ゲーム機およびそれを用いたゲーム機システム
US6283857B1 (en) 1996-09-24 2001-09-04 Nintendo Co., Ltd. Three-dimensional image processing apparatus with enhanced automatic and user point of view control
JP3544268B2 (ja) 1995-10-09 2004-07-21 任天堂株式会社 三次元画像処理装置およびそれを用いた画像処理方法
KR100371456B1 (ko) * 1995-10-09 2004-03-30 닌텐도가부시키가이샤 삼차원화상처리시스템
JPH09167050A (ja) * 1995-10-09 1997-06-24 Nintendo Co Ltd 操作装置およびそれを用いる画像処理システム
US6007428A (en) 1995-10-09 1999-12-28 Nintendo Co., Ltd. Operation controlling device and video processing system used therewith
US6002351A (en) * 1995-11-10 1999-12-14 Nintendo Co., Ltd. Joystick device
US6022274A (en) * 1995-11-22 2000-02-08 Nintendo Co., Ltd. Video game system using memory module
US6071191A (en) 1995-11-22 2000-06-06 Nintendo Co., Ltd. Systems and methods for providing security in a video game system
US6190257B1 (en) 1995-11-22 2001-02-20 Nintendo Co., Ltd. Systems and method for providing security in a video game system
US6267673B1 (en) 1996-09-20 2001-07-31 Nintendo Co., Ltd. Video game system with state of next world dependent upon manner of entry from previous world via a portal
US6331856B1 (en) * 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
US6155926A (en) 1995-11-22 2000-12-05 Nintendo Co., Ltd. Video game system and method with enhanced three-dimensional character and background control
US6139433A (en) * 1995-11-22 2000-10-31 Nintendo Co., Ltd. Video game system and method with enhanced three-dimensional character and background control due to environmental conditions
US5726894A (en) * 1995-12-21 1998-03-10 Pitney Bowes Inc. Postage metering system including means for selecting postal processing services for a sheet and digitally printing thereon postal information pertaining to each selected postal processing service
JPH09223098A (ja) * 1996-02-19 1997-08-26 Sega Enterp Ltd 画像拡張機能ボード及びこれを用いた電子装置
US5970510A (en) * 1996-04-10 1999-10-19 Northrop Grumman Corporation Distributed memory addressing system
US6241610B1 (en) 1996-09-20 2001-06-05 Nintendo Co., Ltd. Three-dimensional image processing system having dynamically changing character polygon number
US6139434A (en) 1996-09-24 2000-10-31 Nintendo Co., Ltd. Three-dimensional image processing apparatus with enhanced automatic and user point of view control
US6244959B1 (en) 1996-09-24 2001-06-12 Nintendo Co., Ltd. Three-dimensional image processing system with enhanced character control
US5987568A (en) * 1997-01-10 1999-11-16 3Com Corporation Apparatus and method for operably connecting a processor cache and a cache controller to a digital signal processor
US6336166B1 (en) * 1997-04-07 2002-01-01 Apple Computer, Inc. Memory control device with split read for ROM access
US5978781A (en) * 1997-05-08 1999-11-02 Pitney Bowes Inc. Digital printing, metering, and recording of other post services on the face of a mail piece
JP3655438B2 (ja) 1997-07-17 2005-06-02 任天堂株式会社 ビデオゲームシステム
JPH11207034A (ja) * 1997-11-20 1999-08-03 Nintendo Co Ltd 異なる種類のゲーム機間でバックアップデータを利用して プレイ可能なゲームシステム
US6667759B2 (en) * 1997-12-31 2003-12-23 At&T Corp. Video phone form factor
US6191793B1 (en) 1998-04-01 2001-02-20 Real 3D, Inc. Method and apparatus for texture level of detail dithering
JP3791728B2 (ja) * 1998-06-03 2006-06-28 コナミ株式会社 ゲーム画面の表示制御方法、ゲームシステムおよびコンピュータ読み取り可能な記録媒体
US6480205B1 (en) 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US6334180B1 (en) * 1999-06-27 2001-12-25 Sun Microsystems, Inc. Processor coupled by visible register set to modular coprocessor including integrated multimedia unit
US7120509B1 (en) * 1999-09-17 2006-10-10 Hasbro, Inc. Sound and image producing system
US6775414B1 (en) 1999-11-19 2004-08-10 Ati International Srl Variable-length code decoder
US7209140B1 (en) * 1999-12-06 2007-04-24 Nvidia Corporation System, method and article of manufacture for a programmable vertex processing model with instruction set
JP4658282B2 (ja) * 1999-12-22 2011-03-23 株式会社ユニバーサルエンターテインメント スロットマシン
US6807620B1 (en) * 2000-02-11 2004-10-19 Sony Computer Entertainment Inc. Game system with graphics processor
US6677951B2 (en) * 2000-03-03 2004-01-13 Sony Computer Entertainment, Inc. Entertainment apparatus having compatibility and computer system
EP1275042A2 (en) * 2000-03-06 2003-01-15 Kanisa Inc. A system and method for providing an intelligent multi-step dialog with a user
US7159041B2 (en) * 2000-03-07 2007-01-02 Microsoft Corporation Method and system for defining and controlling algorithmic elements in a graphics display system
CA2402389A1 (en) * 2000-03-08 2002-09-19 Shuffle Master, Inc. Computerized gaming system, method and apparatus
US7988559B2 (en) * 2001-03-08 2011-08-02 Igt Computerized gaming system, method and apparatus
US7043641B1 (en) * 2000-03-08 2006-05-09 Igt Encryption in a secure computerized gaming system
JP3695277B2 (ja) * 2000-03-30 2005-09-14 ヤマハ株式会社 表示制御装置
JP3964142B2 (ja) * 2000-08-15 2007-08-22 株式会社ソニー・コンピュータエンタテインメント エミュレート装置及び部品、情報処理装置、エミュレーション方法、記録媒体、プログラム
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US6966837B1 (en) 2001-05-10 2005-11-22 Best Robert M Linked portable and video game systems
US7916124B1 (en) * 2001-06-20 2011-03-29 Leapfrog Enterprises, Inc. Interactive apparatus using print media
JP2003000951A (ja) * 2001-06-22 2003-01-07 Konami Computer Entertainment Osaka:Kk ゲーム進行プログラム、ゲーム進行方法及びビデオゲーム装置
US7418344B2 (en) * 2001-08-02 2008-08-26 Sandisk Corporation Removable computer with mass storage
US7336174B1 (en) * 2001-08-09 2008-02-26 Key Control Holding, Inc. Object tracking system with automated system control and user identification
US6902481B2 (en) * 2001-09-28 2005-06-07 Igt Decoupling of the graphical presentation of a game from the presentation logic
US8708828B2 (en) * 2001-09-28 2014-04-29 Igt Pluggable modular gaming modifiers and configuration templates for gaming environments
US7931533B2 (en) * 2001-09-28 2011-04-26 Igt Game development architecture that decouples the game logic from the graphics logics
JP3647797B2 (ja) * 2001-11-28 2005-05-18 コナミ株式会社 画像表示プログラム、画像表示方法及びビデオゲーム装置
TW534436U (en) * 2001-12-05 2003-05-21 Carry Computer Eng Co Ltd Portable optical disc displaying/recording machine
US7350081B1 (en) 2002-04-29 2008-03-25 Best Robert M Secure execution of downloaded software
US6980209B1 (en) * 2002-06-14 2005-12-27 Nvidia Corporation Method and system for scalable, dataflow-based, programmable processing of graphics data
US6825843B2 (en) * 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
GB0301448D0 (en) * 2003-01-22 2003-02-19 Falanx Microsystems As Microprocessor systems
KR101018320B1 (ko) * 2003-02-11 2011-03-04 엔디에스 리미티드 방송망내의 대화형 애플리케이션을 처리하는 장치 및 방법
KR100703357B1 (ko) * 2003-08-16 2007-04-03 삼성전자주식회사 보조제어부를 구비하는 휴대용 단말기의 캐시메모리구현장치 및 방법
US7091979B1 (en) * 2003-08-29 2006-08-15 Nvidia Corporation Pixel load instruction for a programmable graphics processor
FR2865291A1 (fr) * 2004-01-21 2005-07-22 Thomson Licensing Sa Procede de transfert de donnees dans un systeme multiprocesseur, systeme multiprocesseur et processeur mettant en oeuvre ce procede
JP4376650B2 (ja) 2004-02-09 2009-12-02 任天堂株式会社 ゲーム装置およびゲームプログラム
US20050174337A1 (en) * 2004-02-11 2005-08-11 Nielsen Paul S. Electronic handheld drawing and gaming system using television monitor
US20050275760A1 (en) * 2004-03-02 2005-12-15 Nvidia Corporation Modifying a rasterized surface, such as by trimming
US7439980B2 (en) * 2004-03-08 2008-10-21 Yamaha Corporation Image processing method and apparatus
US7837558B2 (en) * 2004-03-31 2010-11-23 Nintendo Co., Ltd. Game console and emulator for the game console
US7771280B2 (en) * 2004-03-31 2010-08-10 Nintendo Co., Ltd. Game console connector and emulator for the game console
US11278793B2 (en) 2004-03-31 2022-03-22 Nintendo Co., Ltd. Game console
US8267780B2 (en) * 2004-03-31 2012-09-18 Nintendo Co., Ltd. Game console and memory card
US8016681B2 (en) * 2004-03-31 2011-09-13 Nintendo Co., Ltd. Memory card for a game console
US7554538B2 (en) * 2004-04-02 2009-06-30 Nvidia Corporation Video processing, such as for hidden surface reduction or removal
WO2006034034A2 (en) * 2004-09-16 2006-03-30 Nvidia Corporation Load balancing
US7620530B2 (en) * 2004-11-16 2009-11-17 Nvidia Corporation System with PPU/GPU architecture
US8145870B2 (en) * 2004-12-07 2012-03-27 International Business Machines Corporation System, method and computer program product for application-level cache-mapping awareness and reallocation
GB0427973D0 (en) * 2004-12-21 2005-01-26 Falanx Microsystems As Microprocessor systems
US7225295B2 (en) * 2005-01-04 2007-05-29 International Business Machines Corporation External RAM module
US7307635B1 (en) 2005-02-02 2007-12-11 Neomagic Corp. Display rotation using a small line buffer and optimized memory access
US8633927B2 (en) * 2006-07-25 2014-01-21 Nvidia Corporation Re-render acceleration of frame with lighting change
GB2441365B (en) * 2006-09-04 2009-10-07 Nds Ltd Displaying video data
US20090003379A1 (en) * 2007-06-27 2009-01-01 Samsung Electronics Co., Ltd. System and method for wireless communication of uncompressed media data having media data packet synchronization
US8265169B2 (en) * 2006-12-29 2012-09-11 Intel Corporation Video block memory read request translation and tagging
US7853745B2 (en) * 2007-02-23 2010-12-14 Sony Corporation Electronic system with removable computing device and mutable functions
US8330764B2 (en) * 2007-04-20 2012-12-11 Microsoft Corporation Programming framework for closed systems
US7949998B2 (en) * 2007-04-20 2011-05-24 Microsoft Corporation Programming framework for closed systems
US8523666B2 (en) * 2007-05-25 2013-09-03 Microsoft Corporation Programming framework for closed systems
US8276133B1 (en) * 2007-12-11 2012-09-25 Nvidia Corporation System, method, and computer program product for determining a plurality of application settings utilizing a mathematical function
US8296781B1 (en) 2007-12-11 2012-10-23 Nvidia Corporation System, method, and computer program product for determining application parameters based on hardware specifications
US8280864B1 (en) 2007-12-17 2012-10-02 Nvidia Corporation System, method, and computer program product for retrieving presentation settings from a database
IL191755A0 (en) * 2008-05-27 2009-05-04 Sabra De Fence Technologies Lt Intrusion detection system and its sensors
US20100084321A1 (en) * 2008-09-18 2010-04-08 Wilton Industries, Inc. Sifter apparatus
US20110202150A1 (en) * 2009-10-16 2011-08-18 Newport Controls Controller system adapted for SPA
US9043078B2 (en) * 2010-08-13 2015-05-26 Deere & Company Method and system for performing diagnostics or software maintenance for a vehicle
GB2483167B (en) 2010-08-27 2013-05-29 Fxi Technologies As Storage device with separate application and interface processors
US9275377B2 (en) 2012-06-15 2016-03-01 Nvidia Corporation System, method, and computer program product for determining a monotonic set of presets
US9092573B2 (en) 2012-07-06 2015-07-28 Nvidia Corporation System, method, and computer program product for testing device parameters
US9201670B2 (en) 2012-07-06 2015-12-01 Nvidia Corporation System, method, and computer program product for determining whether parameter configurations meet predetermined criteria
US10509658B2 (en) 2012-07-06 2019-12-17 Nvidia Corporation System, method, and computer program product for simultaneously determining settings for a plurality of parameter variations
US10668386B2 (en) 2012-07-06 2020-06-02 Nvidia Corporation System, method, and computer program product for simultaneously determining settings for a plurality of parameter variations
US9286247B2 (en) 2012-07-06 2016-03-15 Nvidia Corporation System, method, and computer program product for determining settings for a device by utilizing a directed acyclic graph containing a plurality of directed nodes each with an associated speed and image quality
US9250931B2 (en) 2012-07-06 2016-02-02 Nvidia Corporation System, method, and computer program product for calculating settings for a device, utilizing one or more constraints
US9264749B2 (en) 2012-12-13 2016-02-16 Microsoft Technology Licensing, Llc Server GPU assistance for mobile GPU applications
CN103297730B (zh) * 2013-06-14 2016-08-10 无锡华润矽科微电子有限公司 在屏显示控制方法
GB2548604B (en) * 2016-03-23 2018-03-21 Advanced Risc Mach Ltd Branch instruction
GB2548603B (en) 2016-03-23 2018-09-26 Advanced Risc Mach Ltd Program loop control
GB2548602B (en) 2016-03-23 2019-10-23 Advanced Risc Mach Ltd Program loop control
US11032345B2 (en) 2018-05-10 2021-06-08 Microsoft Technology Licensing, Llc Client side data stream processing
US10924525B2 (en) 2018-10-01 2021-02-16 Microsoft Technology Licensing, Llc Inducing higher input latency in multiplayer programs
US11055003B2 (en) 2019-08-20 2021-07-06 Micron Technology, Inc. Supplemental AI processing in memory
CN110956573B (zh) * 2019-11-21 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 一种基于有限状态机的OpenGL图形命令预译码方法
KR20210106221A (ko) 2020-02-20 2021-08-30 삼성전자주식회사 시스템 온 칩, 그것의 데이터 처리 방법 및 뉴럴 네트워크 장치
US11711571B2 (en) * 2020-03-06 2023-07-25 Advanced Micro Devices, Inc. Client-side offload of graphics effects processing
US11782624B2 (en) 2020-10-06 2023-10-10 Samsung Electronics Co., Ltd. Worflow-based partition allocation
CN114422801B (zh) * 2021-12-31 2024-04-26 山东云海国创云计算装备产业创新中心有限公司 优化视频压缩控制逻辑的方法、系统、设备和存储介质

Family Cites Families (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4127849A (en) 1975-11-03 1978-11-28 Okor Joseph K System for converting coded data into display data
US4053740A (en) 1975-12-22 1977-10-11 Lawrence David Rosenthal Video game system
US4179124A (en) 1977-12-12 1979-12-18 Jed Margolin Electronic video game
US4471465A (en) * 1979-01-08 1984-09-11 Atari, Inc. Video display system with multicolor graphics selection
US4296476A (en) 1979-01-08 1981-10-20 Atari, Inc. Data processing system with programmable graphics generator
FR2469760A1 (fr) * 1979-11-09 1981-05-22 Cii Honeywell Bull Procede et systeme d'identification de personnes demandant l'acces a certains milieux
US4442488A (en) * 1980-05-05 1984-04-10 Floating Point Systems, Inc. Instruction cache memory system
FR2483657B1 (fr) * 1980-05-30 1986-11-21 Bull Sa Machine portable pour le calcul ou le traitement de l'information
US4425559A (en) 1980-06-02 1984-01-10 Atari, Inc. Method and apparatus for generating line segments and polygonal areas on a raster-type display
DE3025638C2 (de) * 1980-07-07 1982-08-12 Fa. Gottlieb Gühring, 7470 Ebingen Rundschalttisch-Maschine
FR2492135B1 (fr) * 1980-09-16 1988-01-22 Cii Honeywell Bull Appareil de distribution d'objets et d'acquisition de services
US4388620A (en) 1981-01-05 1983-06-14 Atari, Inc. Method and apparatus for generating elliptical images on a raster-type video display
US4492582A (en) * 1981-01-06 1985-01-08 Mattel, Inc. Teaching and entertainment device
US4432067A (en) 1981-05-07 1984-02-14 Atari, Inc. Memory cartridge for video game system
US4386773A (en) * 1981-06-22 1983-06-07 Bronstein John M TV Game cartridge with expandable memory
US4462076A (en) * 1982-06-04 1984-07-24 Smith Engineering Video game cartridge recognition and security system
US4597043A (en) * 1982-06-16 1986-06-24 Bally Manufacturing Corporation High speed CPU/sequencer for video games
US4757468A (en) * 1982-09-22 1988-07-12 Intel Corporation Authenticated read-only memory
GB2133257B (en) * 1982-12-22 1987-07-29 Ricoh Kk T v game system
EP0114522A3 (en) * 1982-12-27 1986-12-30 Synertek Inc. Rom protection device
CH653588A5 (it) * 1983-06-07 1986-01-15 Albe Sa Tavola portapezzi girevole ad intermittenza nelle macchine utensili.
JPS6052885A (ja) 1983-09-02 1985-03-26 Hitachi Ltd 圧接力調整装置を有するトナ−の除去装置
US4644495A (en) * 1984-01-04 1987-02-17 Activision, Inc. Video memory system
US4725831A (en) 1984-04-27 1988-02-16 Xtar Corporation High-speed video graphics system and method for generating solid polygons on a raster display
US4862156A (en) * 1984-05-21 1989-08-29 Atari Corporation Video computer system including multiple graphics controllers and associated method
US4658247A (en) 1984-07-30 1987-04-14 Cornell Research Foundation, Inc. Pipelined, line buffered real-time color graphics display system
NL8500526A (nl) 1985-02-25 1986-09-16 Philips Nv Werkwijze voor het als vertragingslijn adresseren van een geheugen met willekeurige toegankelijkheid en signaalverwerkingsinrichting voorzien van zo een vertragingslijn.
CA1270339A (en) * 1985-06-24 1990-06-12 Katsuya Nakagawa System for determining a truth of software in an information processing apparatus
JPH074449B2 (ja) 1985-10-04 1995-01-25 任天堂株式会社 ゲ−ム機用カ−トリツジとそれを用いるゲ−ム機
JPS62192878A (ja) 1986-02-20 1987-08-24 Nippon Gakki Seizo Kk 多角形の塗りつぶし方法
US4862392A (en) 1986-03-07 1989-08-29 Star Technologies, Inc. Geometry processor for graphics display system
JPS62221239A (ja) 1986-03-24 1987-09-29 Fuji Electric Co Ltd シリアル伝送モニタ装置
JPS62231380A (ja) 1986-03-31 1987-10-09 Namuko:Kk 画像合成装置
US5504917A (en) 1986-04-14 1996-04-02 National Instruments Corporation Method and apparatus for providing picture generation and control features in a graphical data flow environment
CA1284225C (en) * 1986-07-23 1991-05-14 Katsuya Nakagawa Game software service system
JP2695773B2 (ja) 1986-09-25 1998-01-14 株式会社東芝 マルチcpu制御方式
US4807158A (en) * 1986-09-30 1989-02-21 Daleco/Ivex Partners, Ltd. Method and apparatus for sampling images to simulate movement within a multidimensional space
JPS63163577A (ja) 1986-12-25 1988-07-07 Nec Corp 図形表示装置
US5251322A (en) * 1987-08-13 1993-10-05 Digital Equipment Corporation Method of operating a computer graphics system including asynchronously traversing its nodes
US5170468A (en) 1987-08-18 1992-12-08 Hewlett-Packard Company Graphics system with shadow ram update to the color map
JPS6484295A (en) 1987-09-28 1989-03-29 Mitsubishi Electric Corp Color display device
EP0309884A3 (en) 1987-09-28 1991-04-10 Mitsubishi Denki Kabushiki Kaisha Color image display apparatus
US4866637A (en) 1987-10-30 1989-09-12 International Business Machines Corporation Pipelined lighting model processing system for a graphics workstation's shading function
CA1309198C (en) 1987-12-10 1992-10-20 Carlo J. Evangelisti Parallel rendering of smoothly shaded color triangles with anti-aliased edges for a three dimensional color display
US5136664A (en) 1988-02-23 1992-08-04 Bersack Bret B Pixel rendering
GB2215948A (en) 1988-03-23 1989-09-27 Benchmark Technologies Performing raster operations on patch formatted pivel data
GB2215952A (en) 1988-03-23 1989-09-27 Benchmark Technologies Performing raster operations on patch formatted pixel data using time domain multiplexing
JPH0215381A (ja) 1988-03-23 1990-01-19 Du Pont Pixel Syst Ltd ラスタ操作実行方法、時間領域多重化方法および画像処理方法
US5016876A (en) * 1988-10-14 1991-05-21 Williams Electronics Games, Inc. Video display co-processor for use in a video game
US5208904A (en) * 1989-03-07 1993-05-04 Brother Kogyo Kabushiki Kaisha Data processing apparatus and method for preparing data representative of supplemental figure attached to basic figure reproduced on output medium
KR0149503B1 (ko) * 1989-04-20 1999-05-15 야마우찌 히로시 메모리 카트리지
US5112051A (en) * 1989-06-05 1992-05-12 Westinghouse Electric Corp. Interfacing device for a computer games system
US5060172A (en) * 1989-07-06 1991-10-22 Digital Equipment Corporation Method and apparatus for displaying smooth-shaded objects
US5214753A (en) 1989-07-31 1993-05-25 Shographics, Inc. Video system with parallel attribute interpolations
JPH0632703B2 (ja) 1989-07-31 1994-05-02 コナミ株式会社 ゲーム機の表示装置
JPH0394389A (ja) 1989-09-07 1991-04-19 Hitachi Ltd 3次元図形回転表示方法および図形処理装置
US4922336A (en) * 1989-09-11 1990-05-01 Eastman Kodak Company Three dimensional display system
US5004232A (en) * 1989-10-13 1991-04-02 Macronix, Inc. Computer game cartridge security circuit
US5214758A (en) * 1989-11-14 1993-05-25 Sony Corporation Animation producing apparatus
JP2502754Y2 (ja) * 1989-12-07 1996-06-26 株式会社エス・エヌ・ケイ テレビゲ―ム機
JP3047185B2 (ja) 1990-01-26 2000-05-29 任天堂株式会社 ディジタル音源装置、およびそれに用いられる外部メモリカートリッジ
KR960004655B1 (ko) 1990-02-05 1996-04-11 가부시키가이샤 리코 동화 표시 장치 및 그것에 이용되는 외부 메모리
JPH0425962A (ja) 1990-05-21 1992-01-29 Nec Corp マルチ中央処理装置による制御システム
WO1991019247A1 (en) * 1990-06-04 1991-12-12 University Of Washington Image computing system
CA2050658C (en) * 1990-09-14 1997-01-28 John M. Peaslee Dual hardware channels and hardware context switching in a graphics rendering processor
US5276798A (en) * 1990-09-14 1994-01-04 Hughes Aircraft Company Multifunction high performance graphics rendering processor
JP2725915B2 (ja) 1990-11-15 1998-03-11 インターナショナル・ビジネス・マシーンズ・コーポレイション 三角形描画装置及び方法
GB9027678D0 (en) * 1990-12-20 1991-02-13 Ncr Co Videographics display system
US5774133A (en) 1991-01-09 1998-06-30 3Dlabs Ltd. Computer system with improved pixel processing capabilities
US5415549A (en) * 1991-03-21 1995-05-16 Atari Games Corporation Method for coloring a polygon on a video display
US5251909A (en) 1991-05-28 1993-10-12 Reed Michael J Secured high throughput data channel for public broadcast system
EP0739513B1 (en) * 1991-08-13 1999-10-27 The Board Of Regents Of The University Of Washington Method of transmitting of data
US5190285A (en) * 1991-09-30 1993-03-02 At&T Bell Laboratories Electronic game having intelligent game pieces
US5289575A (en) * 1991-11-22 1994-02-22 Nellcor Incorporated Graphics coprocessor board with hardware scrolling window
US5592595A (en) * 1991-12-30 1997-01-07 Seiko Epson Corporation Intelligent cartridge for attachment to a printer to perform image processing tasks in a combination image processing system and method of image processing
CA2074388C (en) * 1992-01-30 2003-01-14 Jeremy E. San Programmable graphics processor having pixel to character conversion hardware for use in a video game system or the like
TW214588B (ja) 1992-01-30 1993-10-11 An Inc
US5388841A (en) 1992-01-30 1995-02-14 A/N Inc. External memory system having programmable graphics processor for use in a video game system or the like
US5357604A (en) * 1992-01-30 1994-10-18 A/N, Inc. Graphics processor with enhanced memory control circuitry for use in a video game system or the like
JP3222197B2 (ja) 1992-05-18 2001-10-22 理想科学工業株式会社 カード印刷方法およびカード印刷用原稿位置決めホルダおよびカード印刷用紙
DE4235091C2 (de) * 1992-10-17 2001-09-06 Trumpf Sachsen Gmbh Flüssigkeits- und Abrasivmittelzuführung für eine Fluidstrahlschneidanlage
DE4301393C2 (de) * 1993-01-20 1996-05-23 Witzig & Frank Turmatic Gmbh Rundtakt-Werkzeugmaschine
JP3510387B2 (ja) * 1995-06-30 2004-03-29 ライオン株式会社 漂白活性化剤造粒物の製造方法、該漂白活性化剤造粒物を含有する漂白剤又は洗剤の製造方法
DE19529071C2 (de) * 1995-08-08 1998-04-30 Holger Wuerthner Vorrichtung zur Front- und Rückseitenbearbeitung von Werkstücken
DE19533320C2 (de) * 1995-09-08 1999-01-28 Ottobeurer Facondreherei Alois Rundtaktmaschine

Also Published As

Publication number Publication date
US20010040577A1 (en) 2001-11-15
EP1262921A2 (en) 2002-12-04
ATE229197T1 (de) 2002-12-15
EP1262921A3 (en) 2004-03-24
EP0553532A2 (en) 1993-08-04
EP0553532A3 (en) 1994-03-09
JPH0689567A (ja) 1994-03-29
AU657147B2 (en) 1995-03-02
AU2060392A (en) 1993-08-19
DE69232865T2 (de) 2003-11-20
US20040166943A1 (en) 2004-08-26
US6646653B2 (en) 2003-11-11
CA2074554C (en) 2002-09-10
CA2074554A1 (en) 1993-07-31
US7432932B2 (en) 2008-10-07
US20020050999A1 (en) 2002-05-02
KR930016902A (ko) 1993-08-30
US6895470B2 (en) 2005-05-17
US7229355B2 (en) 2007-06-12
KR100280939B1 (ko) 2001-02-01
DE69232865D1 (de) 2003-01-16
EP0553532B1 (en) 2002-12-04
JP3335695B2 (ja) 2002-10-21
US20010043224A1 (en) 2001-11-22
US5388841A (en) 1995-02-14
TW226448B (ja) 1994-07-11
CN1048564C (zh) 2000-01-19
US5850230A (en) 1998-12-15
CN1076378A (zh) 1993-09-22

Similar Documents

Publication Publication Date Title
JP3335695B2 (ja) 外部メモリシステム
US5357604A (en) Graphics processor with enhanced memory control circuitry for use in a video game system or the like
US5724497A (en) Programmable graphics processor having pixel to character conversion hardware for use in a video game system or the like
US5774133A (en) Computer system with improved pixel processing capabilities
US5274760A (en) Extendable multiple image-buffer for graphics systems
US4967375A (en) Fast architecture for graphics processor
US20040085321A1 (en) Game system with graphics processor
US7525547B1 (en) Programming multiple chips from a command buffer to process multiple images
US8941669B1 (en) Split push buffer rendering for scalability
US7170512B2 (en) Index processor
EP1883051B1 (en) Graphic processor and information processing device
US6952217B1 (en) Graphics processing unit self-programming
US6028613A (en) Method and apparatus for programming a graphics subsystem register set
JPH02297594A (ja) データ処理装置、データ処理システム及びアウトラインフォントデータ発生方法
JP2000029788A (ja) キャッシュメモリシステム及びそれに用いるキャッシュ制御方法並びにその制御プログラムを記録した記録媒体
TW214588B (ja)
WO1992012496A1 (en) Computer system with enhanced image and graphics capabilities
JP4846097B2 (ja) グラフィクスサブシステムのレジスタセットのための方法及び装置