JPH0689567A - ビデオゲームシステム等において使用するためのプログラマブルプロセッサおよびそれを備えた外部メモリシステム - Google Patents

ビデオゲームシステム等において使用するためのプログラマブルプロセッサおよびそれを備えた外部メモリシステム

Info

Publication number
JPH0689567A
JPH0689567A JP5013540A JP1354093A JPH0689567A JP H0689567 A JPH0689567 A JP H0689567A JP 5013540 A JP5013540 A JP 5013540A JP 1354093 A JP1354093 A JP 1354093A JP H0689567 A JPH0689567 A JP H0689567A
Authority
JP
Japan
Prior art keywords
graphics processor
memory
program
ram
instruction
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.)
Granted
Application number
JP5013540A
Other languages
English (en)
Other versions
JP3335695B2 (ja
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
AN Inc
Ee & N Inc
Original Assignee
A & N Inc
AN Inc
Ee & 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, AN Inc, Ee & N Inc filed Critical A & N Inc
Publication of JPH0689567A publication Critical patent/JPH0689567A/ja
Application granted granted Critical
Publication of JP3335695B2 publication Critical patent/JP3335695B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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, 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, 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, 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)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)
  • Processing Or Creating Images (AREA)

Abstract

(57)【要約】 【目的】 ホスト情報処理システムに着脱自在な外部メ
モリユニットに全面的にプログラマブルなグラフィック
スマイクロプロセッサを組込むこと。 【構成】 ビデオゲームシステムは、ホストビデオゲー
ムシステムと、グラフィックスマイクロプロセッサを内
蔵した差込み可能なビデオゲームカートリッジとで構成
される。ゲームカートリッジはリードオンリーメモリ
(ROM)とランダムアクセスメモリ(RAM)とを含
む。グラフィックス共同プロセッサはゲームカートリッ
ジに設けられた3−バスアーキテクチャに接続されて動
作し、プログラムROM、外部RAMあるいはそれ自身
の内部キャッシュRAMからのプログラムを実行し、ホ
ストプロセッサに常時アクセス可能であるようにホスト
プロセッサと協動する。

Description

【発明の詳細な説明】
【0001】
【発明の分野】本発明は、プログラマブルプロセッサを
内部に組込んだ情報処理装置に関する。より詳細には、
本発明は一部がホスト処理システム例えばビデオゲーム
システムによって実行されるとともにホストシステムの
高速グラフィックス処理能力を向上させるために設計さ
れたプログラマブルマイクロプロセッサによって一部が
実行されるプログラムを格納するプログラムメモリを備
えた着脱自在な外部メモリシステムに関する。
【0002】
【関連出願の表示】この出願は、“ビデオゲームシステ
ム等において使用するため、キャラクタ変換ハードウェ
アに対する画素を備えたプログラマブルグラフィックス
プロセッサ"と題するサン等の同日出願(米国出願番号0
7/827,201)に関連している。
【0003】
【発明の背景と要約】8ビットのマイクロプロセッサと
ビデオゲーム制御デッキに組込まれた付属のディスプレ
イ処理用のサブシステムを備えた従来のビデオゲーム装
置は、8ビット×8ビットのマトリックス型式のゲーム
カートリッジ内にキャラクタを予め格納することおよび
予め格納したこれらキャラクタのプログラム可能な種々
の組合せを用いてスクリーンディスプレイを構成するこ
とによって図形を発生させる。このような従来のビデオ
ゲームシステムは、表示の背景全体を、多数のプレイヤ
制御の移動物体やスプライトと同様に移動させる能力を
有している。
【0004】従来のこの種システムは、各フレームごと
に回転したり再描画するといった操作されるべき多角形
の組合せからなる移動物体を含む実際に満足できるビデ
オゲームを与えるものではない。このような従来のシス
テムにおいて、8ビットのプロセッサと付属のディスプ
レイ処理回路は、例えば、3次元(以下、「3−D」と
略称する。)の多角形をベースにした対象物を効率的に
回転させたり、或いは回転物体を3−Dタイプの特殊な
効果を発生させるべく適当にスケーリングするために必
要な計算を実行することはできない。本願の発明者は、
高等な図形の処理には、スクリーンを画素×画素を基本
にして更新することおよび複雑な数学的演算をリアルタ
イムで実行することが必要であることを認識しており、
従来のキャラクタに基いたビデオゲーム装置は、このよ
うな処理を実行できないものであった。従来の8ビット
ビデオゲーム装置はスクリーンを画素×画素を基本に高
速で更新することが必要となる他の画像処理を効率的に
実行することもできない。例えば、従来のシステムは3
次元空間において他の表示物体の一部である表示された
多角形上に一つの物体を効率的に配置すること(以後、
テクスチャマッピングという。)ができない。従来の8
ビット機について図形処理能力を改良する試みとして、
より高能力の16ビットプロセッサを用いたビデオゲー
ムシステムが開発されている。この種の16ビットプロ
セッサは、高等な図形処理に要求される数学演算を実行
する機能を備えたビデオゲームシステムを提供すること
ができる。かかるシステムは、例えば、より美しい色の
発生およびより優れた分解能を可能とする。この16ビ
ットのビデオゲーム機は、キャラクタをベースにした或
いはスプライト図形に予め描画できるビデオゲームの広
範囲の実施を可能とするキャラクタベースのシステムで
ある。16ビットのビデオゲームシステムは、多色の背
景面をその奥方や前方に配置した移動物体とともに高速
で移動させることができる。
【0005】しかしながら、従来の16ビットのビデオ
ゲーム機は各フレームごとに変化しなければならない多
角形からなる高等な物体を表示する3−Dタイプの特殊
効果を得ることができる進歩したビデオゲームの実際の
実施を可能とするものではない。例えば、フレーム×フ
レームを基本として、拡大したり、縮小する必要がある
多くの物体やスプライトを全体的に回転させる必要があ
るようなゲームは、従来のキャラクタベースの16ビッ
ト機にあっては実際上実現不可能であった。本発明者
は、全体的な回転や拡大・縮小を要する多角形を基本と
した物体を含んだゲームを実際に可能にするためには、
多角形の辺を引くとともに画素×画素を基本にして、多
角形を基本として物体の内部を適当なデータで満たすこ
とが必要であることを認識している。画素×画素ベース
で実行しなければならないかかるタスクは莫大な処理時
間を要する。従来において、ホストのマイクロプロセッ
サに設けられた実在のアドレスライン数より大きいプロ
グラムメモリアドレス空間を指定することを実際のプロ
セッサにおいて可能とすることにより、ゲーム性をより
一層向上させるために、着脱可能なゲームカートリッジ
の改良が図られてきた。例えば、従来の8ビットシステ
ムでは、メモリバンク切替や他の付加的な機能を実行す
るマルチメモリ制御チップを含むゲームカートリッジが
実用化されている。このようなメモリバンク切替用のチ
ップは、しかしながら、ビデオゲームシステムが前述し
た如き高速の図形処理を行えるようにするというもので
はない。本発明は、前記従来の問題に鑑みてなされたも
のであって、ホストの情報処理システムに接続するため
の着脱自在な外部メモリ装置内に組込んで設計されたプ
ログラマブルグラフィックスマイクロプロセッサを提供
するものである。ある実施態様において、本発明はホス
トビデオゲームシステムとグラフィックスマイクロプロ
セッサを内蔵したビデオゲームカートリッジとを含むビ
デオゲームシステムにおいて実現される。本発明にかか
るグラフィックスマイクロプロセッサおよびビデオゲー
ムシステムはユニークで有利な多くの特徴を有してお
り、以下にいくつかの特徴を説明する。
【0006】本発明によれば、グラフィックスプロセッ
サはホストのマイクロプロセッサにプラグで接続され
る。処理速度の高速化のため、グラフィックスプロセッ
サはホストマイクロプロセッサと並行に動作する。ある
実施態様では、グラフィックス共同プロセッサが内蔵さ
れたゲームカートリッジは、リードオンリイメモリ(R
OM)およびランダムアクセスメモリ(RAM)を含んで
いる。本発明のグラフィックス共同プロセッサはそれ自
身の必要性とホストマイクロプロセッサから取込んだデ
ータの間でのメモリトランザクションを仲介する。本グ
ラフィックスプロセッサは、ホストのマイクロプロセッ
トと同時にプログラムを実行することができる(これは
従来のビデオゲームシステムでは実現不可能であっ
た)。本発明のグラフィックス共同プロセッサはゲーム
カートリッジ上に設けた3バス構造に接続されて動作
し、このことは、RAMおよびROMカートリッジメモ
リを効率的に使用するためホストおよびカートリッジプ
ロセッサ両方の能力を最適化することによってその有効
利用を可能とする。ユーザが全面的にプログラムするこ
とができる、本発明のグラフィックス共同プロセッサ
は、高速処理が可能なように設計された特定の構造を有
している。インストラクションセットは3−Dグラフィ
ックスに関連する演算動作を効率的に実行するように設
計されており、ホストビデオゲームシステムのキャラク
タ配置のディスプレイの個々の画素をプロットするため
に設けられたハードウェアによって実行される特別なイ
ンストラクションを含む。
【0007】このインストラクションセットの多くのイ
ンストラクションは1マシーンサイクル内で実行され、
プログラムROMの1バイトに格納されるように設計さ
れている。しかしながら、インストラクションは特殊な
パーパス,プレフィックスインストラクションの採用に
よってより強力なものとなるであろう。インストラクシ
ョンセットは特定の画素ベースのインストラクションを
含んでおり、プログラマの観点からは、ホストシステム
がキャラクタベースであったとしても、個々の画素を指
定できるようにすることによって仮想的なビットマップ
を作り出すことができることを意味する。画素データ
は、グラフィックスプロセッサによって、キャラクタベ
ースの16ビットホストマシンによって実用されている
フォーマットのキャラクタデータに変換される。したが
って、例えば、プログラマが画素をプロットするため
“PLOT"インストラクションを用いたとしても、関
連するデータがRAMに読み込まれる際に、16ビット
ホストマシンが利用することができるキャラクタベース
のフォーマットに変換される。画素プロット用のハード
ウェアは、実行されるべき高速3−Dタイプのグラフィ
ックス処理を効率的に行えるよう、このインストラクシ
ョンを実行する。本発明のグラフィックス共同プロセッ
サはユニークな“CACHE"インストラクションとキ
ャッシュメモリとを含んでおり、これによって、グラフ
ィックス共同プロセッサによって高速で実行されるべき
プログラムROMに格納されたプログラムインストラク
ションをキャッシュRAMから行なえるようになる。キ
ャッシュインストラクションは高速で実行されるべきプ
ログラムの部分を書くことによって、グラフィックス共
同プロセッサの内部キャッシュRAMからのプログラム
の実行を自動的に開始させる。インストラクションセッ
トは、高等な3−Dタイプの図形を有するビデオゲーム
の実行に必要なグラフィックス技術のプログラミングを
助けるように企画された特別のパーパスインストラクシ
ョンを含む。このようなインストラクションとしては、
上述の画素PLOTインストラクションと、表示物体の
回転とテクスチァマッピングをより効率的に行えるよ
う、異なるレジスタに格納されたスプライトデータの合
体を可能にするように設計されたMERGEインストラ
クションとがある。
【0008】特殊なパーパスインストラクションは、ホ
ストマイクロプロセッサと本発明のグラフィックス共同
プロセッサによる並行処理が行えるようにデータをバッ
ファすることを可能にする。例えば、特別のパーパスが
ゲームカートリッジに用いられているROMの比較的遅
いアクセスタイムを補償するため処理速度を向上させる
のに利用される。この点に関連して、グラフィックスプ
ロセッサは、予め定めた一般のレジスタ(実施例ではレ
ジスタR14)に対する何んらかの照合でROMからの
データの取込みを自動的に開始させるインストラクショ
ンを使用する。このようなROMアクセスを行いなが
ら、他のコードの実行が行える。数サイクル後、取込ま
れたデータは利用できるようになる。しかしながら、一
方、プロセッサはそのようなデータを待つ必要がなかっ
たが、むしろ、書き込まれるべきコードの極めて高速の
実行が可能となるように他の仕事を行うことができる。
サブルーチンリンケージを効率よく処理するために、本
発明のグラフィックス共同プロセッサは、サブルーチン
の完了後に実行されるべきインストラクションのアドレ
スをプログラムカウンタR15に完了時にロードするよ
うに操作するLINKインストラクションを含む。イン
ストラクションセットは、RAMストアバックインスト
ラクションを含む。このインストラクションによれば、
データがRAMから読み込まれ、そのデータへのある操
作が行われた後に、グラフィックス共同プロセッサ内の
RAMコントローラは、最後に使用されたRAMアドレ
スで更新されたデータの再格納操作を開始する。この1
サイクルのストアバックインストラクションは、データ
の塊りを効率的に更新するのに有利に用いられる。
【0009】本発明のグラフィックス共同プロセッサは
さらに最も重要なバイトが続いている最も重要でないバ
イトを用いて、RAMから、データを読み出したり、そ
れに書き込むことを自動的に行えるようにするインスト
ラクションを含む。この構成はデータの置き換えをする
必要なしにいずれかのフォーマットで格納されたデータ
の変換性を与えることにおいて、プログラミングの援助
として役立つ。本発明のグラフィックスプロセッサは内
部のプロセッサステータスレジスタを修正することによ
って多数の異なるプロットモードを設定することにして
もよい。かかるモードとしては、各交互の画素が異なる
カラーを含んでいる、プログラム可能なシェーディング
効果を得られるようにするディザモード(dithering mo
de)を含む。他の選択可能なモードは、そのままであれ
ば一つのスプライトで専有されるようなスペースに2つ
のスプライトを格納することを可能にするために高低の
色に対するニブル(nibble)選択を行えるようにする。本
発明は、多くのユニークなハードウェア構成を含む。例
えば、グラフィックス共同プロセッサはワンチップRA
Mの使用によって優れた画素データバッファ機能を奏す
る特定目的のプロット回路を含む。このようなデータの
バッファ機能は外部データRAMに対する読出しもしく
は書込みトランザクション量を最小にするとともに表示
された多角形が適当なデータで満たされる速度を向上す
ることができる。前述した如く、レジスタR14へのア
クセスに際して開始される読出しバッファ機能に加え
て、本発明にかかるグラフィックス共同プロセッサは、
後述するマリオ(MARIO:Mathematical Argonaut
Rotation Input to Output の略)チップの中央処理ユ
ニットが他のインストラクションをできるだけ高速に実
行できるように、ゲームカートリッジRAMに書込むべ
きデータをバッファする書込みバッファ機能を含む。
【0010】本発明にかかるグラフィックス共同プロセ
ッサはグラフィックス共同プロセッサとホスト処理シス
テムの両方にアクセス可能な計16のレジスタR0〜R
15を含む。レジスタR0はあるインストラクションに
おいて明白に区別される必要がなく累算器として機能す
るデフォールトレジスタである。レジスタR15はプロ
グラムカウンタとして機能する。レジスタR14はアク
セスされると自動的にROMからのデータの取出しを開
始する先に言及したレジスタである。特別のプレフィッ
クスインストラクションをソースおよび/又は行先レジ
スタを定義するのに使用することができる。本発明のグ
ラフィックス共同プロセッサはグラフィックス共同プロ
セッサのレジスタがホストプロセッサにとってアクセス
可能であるようなホスト共同プロセッサと協働する。グ
ラフィックス共同プロセッサに設けられるユニークな3
−バスアーキテクチャーは高度の並行処理機能を与え
る。3−バスは、ホストプロセッサバス、ROMバスお
よびRAMバスである。これらのバスは物理的に分離さ
れており、同時に使用可能である。各バスは、アドレス
ライン、データラインおよび制御ラインからなる。ホス
トプロセッサバスは、アドレスライン、データラインお
よび制御ラインを含み、グラフィックス共同プロセッサ
内で必要となる広範囲の信号を供給する。本発明にかか
るこのバスアーキテクチャーを用いたグラフィックスプ
ロセッサは、プログラムROM、外部RAM或いはそれ
自身の内部キャッシュRAMのいずれかからのプログラ
ムを実行することができる。グラフィックス共同プロセ
ッサは種々の仲介モードを用いてホストマイクロプロセ
ッサとのインターフェースを行う。これに関連して、所
定のグラフィックスプロセッサステイタスレジスタ位置
に論理“1"をロードすることによって、ホストプロセ
ッサがゲームカートリッジのROMおよびRAMへのア
クセスを放棄したことを指示するために、ある仲介モー
ドがホストプロセッサによってセットされる。
【0011】本発明者は、ホストプロセッサが、ステイ
タスレジスタを適当に設定することによりROMおよび
RAMへのアクセスを放棄した状態下においてさえ、ホ
ストプロセッサが中断を処理するためのルートを取り出
すためにROMへのアクセスを開始することで中断が発
生しうる。このような状態下において、グラフィックス
プロセッサは、プログラムROMのアドレスの代りに動
作中のRAMのアドレスをホストマイクロプロセッサに
与えるように動作し、ホストプロセッサがそれ自身の内
部RAMをアクセスすることができるようにしている。
この手法によって、グラフィックス共同プロセッサがプ
ログラムROMを実行しているときにホストプロセッサ
はプログラムROMを指定しないようにすることができ
る。ホストプロセッサがカートリッジRAMをアクセス
する必要があるときに、グラフィックス共同プロセッサ
のステイタスレジスタはグラフィックス共同プロセッサ
がRAMをアクセスしえないようにセットされ、これに
よってホストプロセッサは何らかの情報をRAMから得
る必要が生じたときにはアクセスすることができ、その
後、グラフィックス共同プロセッサをRAMへのアクセ
スが可能な状態に切換える。しかしながら、共同プロセ
ッサがカートリッジのROMおよびRAMをその高速の
処理速度によって可能な最大限度まで利用することが好
ましい。本発明のグラフィックス共同プロセッサはキャ
ラクタデータRAM内にロードされた画素情報を表示用
のホストプロセッサビデオRAMに効率的に転送するよ
うに設計されている。ビデオRAMは、しかし、カート
リッジバスを介してグラフィックス共同プロセッサに直
接にアクセスされるものではない。前記の転送はホスト
プロセッサの直接メモリアクセス(DMA)回路を用いて
行われる。
【0012】本発明のグラフィックス共同プロセッサは
ホストの情報処理システムからの複数のクロック信号を
受信する。グラフィックス共同プロセッサ内部のタイミ
ングはこれらのクロック信号の一つを用いて制御され
る。本発明の選択的な特徴として、グラフィックス共同
プロセッサ内の回路は、電源オン時のリセットの直後に
構成設定用入力ラインとして用いられる出力アドレスラ
インを介して受信される信号の状態に依存した従来の修
正を考慮して再修正を施すことを可能とすることができ
る。これらアドレスラインに接続されたオプション設定
用レジスタの値はグラフィックス共同プロセッサによっ
て読み取られる。これらの信号は、例えばグラフィック
スプロセッサに用いられているRAMチップのタイプ、
即ち、スタティックRAM、ダイナミックRAMの別を
定義するのに使用される。本発明のこれらのおよび他の
特徴および利点は、添付の図面を参照した以下の実施例
の詳細な説明によってより明確になるであろう。
【0013】
【実施例】本発明に係るグラフィックス共同プロセッサ
はニンテンドウ・オブ・アメリカ・インコーポレイテッ
ド(Nintendo of America In
c.)によってスーパーニンテンドウエンターテイメン
トシステム(以下「スーパーNES」と略称する。)と
して商業的に販売されている16ビットビデオゲームシ
ステムと共同する。このスーパーニンテンドウエンター
テイメントシステムは1991年4月10日に出願され
たビデオ処理装置と題するアメリカ合衆国出願、出願番
号07/651,265(対応日本出願 特願平1−2
00073号:特開平3−63695号)及び1991
年8月26日に出願されたダイレクトメモリアクセス装
置及びそれに使用される外部格納装置と題するアメリカ
合衆国出願、出願番号07/749,530(対応日本
出願 特願平2−225671号:特開平4−1812
91号)に一部が記述されている。これらの出願は参考
文献として、この出願において利用される。しかしなが
ら、本発明はこれらスーパーNESに関連する出願に限
定されるものではなく、他のビデオゲームシステム或は
ビデオゲーム以外の装置、さらには情報処理装置と一緒
に用いることができる。引用を簡単にする目的でのみ、
本発明の実施例に従ったグラフィックス共同プロセッサ
は、「Mathematical Argonaut Rotation Input to Out
put」チップと命名され、以下ではマリオ(MARIO)チ
ップと呼ぶ。このマリオチップはビデオゲームカートリ
ッジ内にパッケージされたものとして記述される。しか
しながら、マリオチップがプログラムメモリと同じカー
トリッジケース内に内蔵されることは使用に際してそれ
がプログラムメモリとホスト処理ユニットに接続される
ものである限りさほど本質的なことではない。図1は本
発明の一実施例に従ったビデオゲームカートリッジ外部
メモリシステムを示す。ゲームカートリッジは図1のす
べての要素が搭載されるプリント回路基板(図示せず)
を有している。このカートリッジはスーパーNESのメ
インコントロールデッキへ及びそこから信号を転送する
ための回路基板の挿入端に配置された接続電極1の配列
を含んでいる。接続電極1の配列はスーパーNESメイ
ンコントロールデッキ内に配置された嵌合コネクタによ
って受け入れられている。
【0014】本実施例に従えば、ゲームカートリッジに
組み込まれたマリオチップ(グラフィックス共同プロセ
ッサ)2は100から128ピンの集積回路チップであ
る。マリオチップ2は多くの制御・アドレス及びデータ
信号をホスト処理システム(例えばスーパーNES)か
ら受信する。例えばマリオチップ2はピンP112を経
由してホスト処理システムから21MHzのクロック入
力とピンP117を経由して21MHzでありうる(も
しくは他の所定の周波数)システムクロック入力を受信
する。システムクロック入力は、例えばホストCPUメ
モリアクセスのためのメモリタイミング情報をマリオプ
ロセッサに与えるとともにマリオチップ2内のタイミン
グ操作のためのクロック信号を与えるために用いられ
る。マリオチップ2はさらにオプショナルな外部クロッ
ク入力(ピンP110)を含んでおり、このクロック入
力はホストシステムから受信した21MHzより高い周
波クロック率でマリオCPUをドライブするため、マリ
オチップ2を外部水晶発振器4に接続する。ホストCP
Uアドレス入力(HA)はホスト処理システム(例えば
スーパーNES CPU/ピクチャー処理ユニットPP
U)のアドレスバスからピン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号)に示さ
れた形式のものを用いることができる。
【0015】マリオチップ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に適当に入力さ
れる。リード及びライト制御信号(R,W)はホストC
PUによって発生され、ピンP104及びP105を介
してマリオチップ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を介してそれぞれROM1
0に適当に入力される。マリオチップ2は前記したRO
MおよびRAMに加えて広範囲の異なるメモリデバイス
に接続して使うこともできるということを注意すべきで
ある。例えば、マリオチップ2はCD−ROMを用いた
ビデオゲームシステムにも有利に適用することができ
る。
【0016】例えば、図1においてROM10を用いる
代わりにCD−ROM(図示せず)をキャラクタデー
タ、プログラムインストラクション、ビデオ、グラフィ
ック及び音データを格納するのに用いることができる。
公知のタイプのCDプレーヤー(図示せず)はデータを
アクセスするためのアドレスバスP2−P26を介して
メモリ・アドレス信号及びデータバスP28−P35を
介してインストラクションを受信するため、マリオチッ
プ2に接続される。CDプレーヤー及びCD−ROM格
納システムの構造及び動作の詳細は当業者によく知られ
ている。CD−ROM格納方式による1つの利点は情報
1バイト当たりの格納コストを大幅に減少できることで
ある。データは半導体ROMに格納する場合に比して1
00ないし1000パーセント減のコストで格納でき
る。しかしながら、CD−ROMの場合のメモリ・アク
セス及び読み出し時間は半導体ROMの場合に比して長
くなる。マリオチップ2は情報が並行に利用できるよう
に少なくとも3つのバスを有するアーキテクチャーを採
用している。この点、図1に示したゲームカートリッジ
ではマリオチップ2はROMバス(ROMデータライ
ン、ROMアドレスライン及び制御ラインを含む)、R
AMバス(RAMアドレスライン、RAMデータライン
及び制御ラインを含む)及びホストプロセッサバス(ホ
ストアドレス、データ及び制御ラインを含む)に接続さ
れる。
【0017】マリオチップアーキテクチャーはスループ
ットを最適化するために並行処理を可能とする。この点
について、マリオチップ2は3−Dグラフィック処理が
効率的に行えるようにRAMに対してさらなるデータを
書き込みながら、かつデータを処理しながらROMから
データを読み出すことができる。以下に説明するように
マリオチップ2は内部的には16ビットアーキテクチャ
ーを用いており、さらに8ビットROM10及びRAM
6,8のチップとインターフェイス可能に設計されてい
る。内部的にはすべての内部データバス及び内部レジス
タは16ビットである。ROM10からの読み出し及び
RAM6,8への書き込みは、バッファーを介して行わ
れ、従ってプログラムの実行はスローダウンされない。
同様にマリオチップ2はCD−ROMからのインストラ
クション及びグラフィックデータをアクセスすることが
でき、かつホストプロセッサ即ちスーパーNES図形処
理ユニット(PPU)のビデオRAMへの相続くDMA
転送のために、その情報をRAM6,8に書き込む。当
業者であれば、マリオチップ2がRAMの格納及びアク
セス操作をバイパスすることによってCD−ROMから
のデータ転送を直接にPPUのビデオRAMに行えるよ
うにプログラムすることができることが認識できるであ
ろう。マリオチップ2の極めて高速の処理速度はCD−
ROMの読み込みアクセス時間が比較的長いにも拘わら
ず図形処理にCD−ROM格納方式の実際的な使用を可
能にする。ビデオ及びオーディオデータはCD−ROM
に格納する前に公知のデータ圧縮技術を用いて圧縮され
る。データの圧縮及び伸長技術は当業者によく知られて
いる。CD−ROMから圧縮データをアクセスした後、
マリオチップ2は従来の図形処理装置よりも遥かに短い
時間で公知のデータ伸長アルゴリズムを用いてデータを
伸長する。マリオチップ2は21MHzのクロックで動
作するので、マリオチップ2はRAM6,8へのデータ
転送に要する所定の時間内に圧縮を完了することができ
る。かくして膨大な量のビデオ及びオーディオデータ
(圧縮された形で)は標準的なCD−ROMのアクセス
時間内にアクセスされる。しかしながら、比較的長いア
クセスタイムによる影響はマリオチップ2によるデータ
伸長の後にあっては、データ1バイト当たりの実際のア
クセスタイムが十分に減少されるため、最小化される。
伸長を実行するマリオチップ2に対してホストグラフィ
ックスプロセッサ即ちスーパーNESのPPU24は自
由に他の処理を実行することができる。もちろん、実際
の応用に際して速度が実際の問題とならない場合には、
マリオチップ2はCD−ROMからデータを圧縮されな
い形でアクセスすることができる。
【0018】カートリッジはスタティックRAMが使用
されている場合には、バッテリーバックアップを備え、
バックアップバッテリー12は抵抗Rを介して公知のバ
ックアップバッテリー回路にスタティックRAMのため
のバックアップ電圧(RS−RAM)及びスタティック
RAMチップセレクト信号RAMCSを与え、電源がオ
フされた場合にデータのセーブを行なう。付加的にはオ
プション設定用抵抗16がRAMアドレスバスに接続さ
れる。通常の動作では、マリオチップ2のアドレスライ
ンはRAM6,8に接続される。しかしながら、リセッ
トもしくは電源オンの操作の間、これらのアドレスライ
ンは所定の電圧VCCに接続されるか、アースに接続さ
れるかに依存して、ハイもしくはロー信号を発生するた
めの入力ラインとして使用される。この方法で“1”ま
たは“0”が内部マリオチップレジスタ内に適当に読み
込まれる。リセットの後、これらレジスタの設定に依存
してマリオチップ2は多重クロック率、マリオチップ2
が接続されるRAMへのアクセスタイム、マリオチップ
2内における他の操作に使われるべきクロック率等を
(プログラム実行中に)決定する。これらオプション設
定用のレジスタを用いることによって、マリオチップ2
は例えばマリオチップ2のデザインの修正を何ら要する
ことなく、種々のタイプのメモリ装置と共用しうる構成
とすることができる。例えば、ダイナミックRAM設定
が検出された場合、リフレッシュ信号が適当な時間に印
加される。さらに、オプション設定は例えばプロセッサ
の積算回路が動作してある積算インストラクションを実
行することができるよりも速い速度で、グラフィックス
プロセッサが他のインストラクションを実行しうるよう
な速度に制御するために用いることができる。このよう
にして、遅延された積算の実行を開始することによっ
て、他の残りのインストラクションはそうでなければ不
可能であるような速いクロック率で実行することができ
る(即ちプロセッサは例えば30MHzで動作し、一方
オプション設定は積算インストラクションを15MHz
で実行しうるような設定とすることができる)。図2は
図1で示したゲームカートリッジが接続できるように設
定されたホストビデオゲームシステムのブロックダイア
グラムである。図2は例えば、ニンテンドウ・オブ・ア
メリカにより実際に販売されているスーパーNESを示
している。本発明はしかしながら、図2に示すようなブ
ロックダイアグラムを有するスーパーNES関連の応用
やシステムに限定されるものではない。
【0019】スーパーNESはそのコントロールデッキ
20内に16ビットホストCPU22(例えば6581
6コンパチブルマイクロプロセッサ)を備えている。C
PU22には128Kバイトの容量を有するワーキング
RAM32と接続される。CPU22は図形処理ユニッ
ト(PPU)24に接続されており、このユニットは例
えば32Kワードの容量を有するビデオRAM30に接
続されている。CPU22は垂直もしくは水平なブラン
キング(帰線)期間の間にPPU24を介してビデオR
AM30とアクセスする。このようにして、CPU22
はPPU24がビデオRAM30をアクセスしていると
きに、実際のラインスキャン期間以外の期間(すなわち
帰線期間)においてのみPPU24を介してビデオRA
M30にアクセスすることができる。PPU24はビデ
オRAM30からユーザのテレビジョン36にビデオデ
ィスプレイを生成する。CPU22はワーキングRAM
28に接続されたオーディオ処理ユニットAPU26に
も接続されている。このAPU26は市販されているサ
ウンドチップを用いて構成することができ、ゲームカー
トリッジのROM10に記録されたビデオゲームプログ
ラムによって指定される音を発生する。CPU22はA
PU26を介してのみ動作RAM28にアクセスするこ
とができる。PPU24とAPU26はRF変調ユニッ
ト34を介してユーザのホームテレビジョンに接続され
る。
【0020】スーパーNES内のビデオRAM30には
カートリッジ(ゲームプログラムのみならずゲーム中に
自由に使用されるキャラクタデータをも格納している)
内のプログラムROM10内に格納されたキャラクタデ
ータとがロードされる必要がある。表示されるべき移動
物体例えばスプライト情報やバックグラウンド情報は使
用前にビデオRAM30内に存在していなければならな
い。プログラムROM10は1に示すプリント回路基板
のエッジコネクタ1に連結された嵌合コネクタ18を介
してCPU22のホストアドレスおよびデータバスによ
ってアクセスされる。PPU24は共有されたホストC
PUのデータおよびアドレスバスおよびコネクタ23を
介してゲームカートリッジに連結されており、それによ
ってカートリッジに連結されるPPUのデータおよび制
御信号のための経路を与える。APU26は共有された
ホストCPUのバスおよびオーデオバス27を介してゲ
ームカートリッジに接続される。CPU22のアドレス
スペースはRAM、ROM10の位置が0から始まり典
型的には32キロバイトの複数のセグメントに分割され
るようにマッピングされている。RAM、ROMはCP
Uのアドレススペースの約1/2を使用する。CPUア
ドレススペースの各32キロバイトセグメント内の先頭
位置は典型的にはワーキングRAM32および各種のレ
ジスタを指定するのに利用される。プログラムROM1
0は例えば4メガバイトである。スーパーNES内にお
いて使用されるCPU22はプログラムROM10の全
体をアドレスすることができる。一方マリオチップ2は
16ビットプログラムカウンタを有しており、したがっ
てプログラムROM10内の32キロバイトバンク間に
おいて選択するためのバンクレジスタを備えている。実
施例においてマリオチップ2はスーパーNESのメモリ
マップに対応する24ビットアドレススペースを有して
いる。このマリオチップは$00:8000において始
まる位置にROM10を備えている。また、カートリッ
ジ上のRAMチップ6,8は$70:0000位置から
スタートしている。但し、記号「$」は16進表示を示
し、上位2桁でバンク番号、下位4桁でアドレスを表
す。
【0021】カートリッジ上のROM10およびRAM
6,8は分離されたバス上に存在しているので、それら
はマリオチップ2によって並行にアクセスすることがで
きる。RAM6,8はROM10よりも速い速度でアク
セスされることができ、かつマリオチップ2はこの利点
を利用するように設計されている。マリオチップ2はス
ーパーNES内にあるいかなるメモリに対してもアクセ
スすることはできない。すなわちワーキングRAM32
およびPPUビデオRAM30に対してはアクセスしな
い。マリオチップ2によってデータを処理するあるいは
ビットマップ内に描画する時にはデータはマリオカート
リッジRAMチップ6,8内に収納されていなければな
らない。かくして、スーパーNESのCPUプログラム
とマリオチッププログラムの間で共有されるような変数
はカートリッジRAMチップ6,8内に存在しなければ
ならない。マリオチッププログラムが使用するのに必要
な予め格納されたデータはROM10内に格納すること
ができ、変数はRAM6,8内に存在する。スーパーN
ESプログラムのみに要求される変数はカートリッジR
AM6,8に存在する必要はない。実際このRAM6,
8はメモリスペースとの関係において余分に存在するの
で優先的な要求度をカートリッジRAM6,8に与える
ことが有利である。マリオチップが書込むビットマップ
はマリオカートリッジRAM6,8内に存在しており、
各ビットマップフレームが完全に満たされた時にスーパ
ーNESの制御下でPPUのビデオRAM内に転送され
るDMAでありうる。スーパーNESのCPU22はマ
リオチップがあたかも存在していないようにスーパーN
ESのコントロールデッキ内のすべての内部ラムに対し
てアクセスすることができる。マリオチップ2はこれら
RAMをアクセスすることはできず、従ってマリオチッ
プROM/RAMチップとスーパーNESの内部RAM
間で転送されるすべてのデータはCPU22自身によっ
て開始されなければならない。データはCPU22のプ
ログラミングもしくはDMA転送を介してブロック移動
される。カートリッジROM10およびRAM6,8は
全てのゲームプログラム上で通常のごとくマップされて
いる。
【0022】CPU22はCPU22がカートリッジR
OMもしくはRAMチップに対して一時的にアクセスで
きるような制御を有している。電源の投入時もしくはリ
セット状態においてマリオチップ2はオフされ、CPU
22はカートリッジROMおよびRAMチップに対して
全面的にアクセスすることができる。マリオチップがプ
ログラムを実行するためにはCPU22のプログラム
が、ROMおよびRAMチップのいずれか一方好ましく
は両方に対してのアクセスを放棄すること、および与え
られたタスクをマリオチップが利用するまで待つか、も
しくはCPUがあるいくつかのコードを内部ワーキング
RAM32にコピーし、そこで実行させることができ
る。マリオチップはプログラム可能でスーパーNESの
CPU側から読み込みが可能な多数のレジスタを備えて
いる。これらは$00:3000から始まるCPU22
のメモリマップ内にマップされている。図2に示される
ように、スーパーNESは多数の制御信号を発生しかつ
受信する。スーパーNESのCPU22がプログラムR
OM10をアクセスする必要があるときには制御信号R
OMSILを発生する。メモリのリフレッシュを開始す
るために、スーパーNESはリフレッシュ信号RFSH
を発生する。マリオチップ2がある操作を完了したとき
には、スーパーNESのCPUに備えられたインタラプ
トリクエストラインにインタラプト信号IRQを送る。
CPU22はさらに読み込みおよび書き込み信号を発生
する。
【0023】システムのタイミング信号はコントロール
デッキ20内のタイミング連鎖回路21から発生され
る。電源オン/リセット信号はメインコントロールデッ
キ20内において発生されゲームカートリッジに入力さ
れる。スーパーNESは前記米国特許4,799,635
にしたがってカートリッジ上の認証処理装置3の入力
I,出力OおよびリセットR導体上でデータを交換する
認証処理装置25をさらに含んでいる。処理装置25は
米国特許4,799,635に開示されているように、認
証が成立するまでCPU22をリセット状態に保持す
る。スーパーNESビデオゲームマシンは、図2にブロ
ック状態で示されているが、図式的に図示されているに
過ぎない。PPU24を含むスーパーNESに関するよ
り詳細なことは、例えば1991年4月10日に出願さ
れたビデオ処理装置と題する出願番号07/651,2
65の前記米国特許出願に図式的に示されており、この
出願は前述したごとく本願と密接に関連している。スー
パーNESとゲームカートリッジ間において、情報がど
のように転送されるか等のさらなる詳細は1991年8
月26日に出願された“ダイレクトメモリアクセス装置
(略称「DMA」)およびそれに使用される外部格納装
置”と題する出願番号07/749,530の前記米国
特許出願および1991年11月19日に出願された
“画面表示装置およびそれに使用する外部格納ユニッ
ト”と題する出願番号07/793,735の米国特許
出願(対応日本出願 特願平2−315004号:特開
平4−185081号)に開示されており、これらの出
願は本出願の参考文献として引用される。いくつかの応
用においては本発明者は、実際に可能である、より多く
の情報がホストプロセッサDMA回路を用いて垂直ブラ
ンキング期間に転送される必要があるということを認識
している。その結果として画面サイズがわずかに縮小さ
れる場合でも垂直ブランキング期間を拡張することが望
ましい。このようなやり方で、処理速度および画面の更
新率との関連において顕著な利点が得られる。
【0024】図3は図1に示したマリオチップおよび他
のカートリッジ構造を格納するゲームカートリッジケー
ス19のデザインを示す斜視図である。同様に図3は図
2に示したスーパーNESビデオゲームハードウェアを
格納するためのビデオゲームコントロールデッキ20を
格納する外部構造の斜視図をも示している。このような
ビデオコントロールデッキ20およびそれに付属する取
り外し可能なゲームカートリッジ19のデザインは、T
Vゲームマシンと題する1991年8月23日出願の出
願番号07/748,938の米国特許出願(対応日本
出願 実願平3−74600号:実開平4−88993
号)の図2から図9に示されており、この出願は、本出
願の参考文献として引用される。図4および図5は、図
1に示されたマリオチップ2のブロックダイヤグラムを
示している。図4および図5に示された各種のバスにつ
いてまず説明すると、インストラクションバスINST
Rはインストラクションコードをマリオチップの各種の
構成要素に伝達する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ビットのR
AMライトデータバスである。マリオチップ2とスーパ
ーNESは、マリオチップ2とスーパーNES間のデー
タの通過のための主な手段として機能するカートリッジ
ラム6,8を共有している。スーパーNESはアドレス
およびデータバスHAおよびHDを介してマリオチップ
2を接続する。マリオチップ2のレジスタ76はスーパ
ーNESのアドレスバスHAを介してスーパーNESに
よりアクセスされる。
【0025】スーパーNESはマリオチップ2を介して
カートリッジ19のプログラムROM10およびRAM
6,8をアクセスする。ROMコントローラ104およ
びRAMコントローラ88はそれぞれROMおよびRA
Mメモリのアクセスを開始するためにスーパーNESに
よって発生されたメモリアクセス関連信号を受信する。
たとえば、RAM選択信号RAMCSはスーパーNES
がRAMを指定しようとしていることを確認するために
マリオチップ2によって使用される。図4と図5に示さ
れたX,YおよびZバスはマリオチップ2の内部データ
バスである。XバスとYバスはソースデータバスであ
り、Zデータバスはデスティネイションバスである。こ
れらのバスは16ビットのパラレルデータを搬送する。
マリオチップ2はインストラクションを実行しながらX
および/またはYバスのインストラクションのためのデ
ータおよびZバスへのデスティネイションデータのソー
スを出力することができる。たとえば、2つのレジスタ
の内容を加算しその結果を第3のレジスタに入力すると
いったインストラクションを実行している間に、演算お
よびロジックユニット(ALU)50はXおよびYバスを
介して2つのソースレジスタの内容を受信し、その結果
をZバス(換言すればブロック76内の特定のレジスタ
に連結される)に出力する。マリオチップ2内のインス
トラクション解読回路60によるあるインストラクショ
ンの操作コードの解読から得られる制御信号は、あるA
DD操作を開始するためALU50に接続される。
【0026】図1に関連して説明したように、マリオチ
ップ2は信号を並行に伝達することができるROMバ
ス、RAMバスおよびスーパーNESホストバスに連結
されている。マリオチップ2はホストシステムが実行し
ている操作を決定するためホストスーパーNESバスか
ら伝達される制御信号、アドレス信号およびデータ信号
をモニターする。カートリッジROMバスおよびカート
リッジRAMバスはある与えられた時間にスーパーNE
Sの操作が実行されている状態に依存して並行にアクセ
スすることができる。従来のスーパーNESゲームカー
トリッジにおいては、RAMとROMに直接に接続され
ており、その結果RAMとROMは並行にデータをアク
セスすることができなかった。本発明の一つの実施態様
によれば、マリオチップは図1に示したように、ROM
バスおよびRAMバスをスーパーNESのバスから物理
的に分離している。マリオチップ2はスーパーNESバ
ス上に転送されるシグナルをモニターするとともに、時
分割されていないROMおよびRAMバスを介してRO
MチップおよびRAMチップに接続する必要がある信号
を決定する。ROMバスとRAMバスを分離することに
よって、マリオチップ2はROMから読み込みかつRA
Mへ書き込む動作を同時に実行することができる。この
ような方法によって、マリオチップ2はこのアクセス時
間よりもかなり遅いアクセスタイムを有する安価なRO
Mチップを効率的に使用することができ、アクセスする
以前に完了されるべきROMアクセスを待つ必要がなく
なる。
【0027】図4に戻って、前記したごとくマリオチッ
プ2は完全にプログラム可能なプロセッサであり、かつ
一つのALU50を備えている。ALU50は乗算器2
6によって処理される乗算処理およびプロットハードウ
ェア52によって処理される画素プロット操作を除いて
マリオチップ2内で実行されるべきすべての演算機能を
実行することができる。インストラクションデコーダ6
0からのある制御信号を受信すると、ALU50は加算
・減算・排他的オア,シフトおよび他の操作を実行す
る。図4に示されるようにALU50はX,Yバスから
操作されるべき情報を受信し、インストラクションデコ
ーダ60から受信した制御信号によってその操作を実行
し、かつその演算の結果をZバスに出力する。ALU5
0は図7に関連してさらに詳細に説明される。マリオチ
ップ2は種々の特徴を備えたビデオゲームが実際に実現
されるよう、効率的に実行されるべき3−Dタイプの特
別な効果や他のグラフィックス操作を実行するための特
別な目的のハードウェアを備えることができる。この点
マリオチップ2は、リアルタイムで画素座標系のアドレ
スからスーパーNESにおいて利用されているキャラク
タマップアドレスへの変換を助けるようなプロットハー
ドウェア52を備えることができる。より有利なことに
は、マリオチップ2はディスプレイスクリーン上の各画
素の位置を定義するXY座標を特定することによってプ
ログラムすることができる。かくして、グラフィック動
作はプログラマが指定した画素に依存して実行され、フ
ライ上のプロットハードウェア回路52は画素仕様を適
当にフォーマットされたキャラクタデータに変換する。
キャラクタデータは、その後図2に示すスーパーNES
のビデオRAM30内の所望の位置に表示のためマップ
される。この方法で、マリオチップのプログラマーは、
スーパーNESのビデオRAM30を、実際にはキャラ
クタマップであったとしても、ビットマップと考えれば
よい。
【0028】プロットハードウェア52は特定の画素に
対する表示スクリーン上でのXおよびY座標並びに所定
の色のプログラム可能に選択できかつ、スーパーNES
のビデオRAM30を駆動するのに用いられる形式のキ
ャラクタデフィニション(定義)に対応するアドレスに
XおよびY座標を変換するように、対応する画素をプロ
ットする種々の画素に関連するインストラクションに対
応する。プロットハードウェア52は、RAMデータト
ランザクションを最小限とするため、カートリッジRA
Mへの書込みに先立ってできるだけ多くの画素データを
バッファするための付属のデータラッチを有する。X,
Y座標データが変換されプロットハードウェア52内で
バッファされた後、キャラクタ定義データは、カートリ
ッジRAMに転送される。プロットハードウェア52は
PLOTXレジスタ56およびPLOTYレジスタ58
を介してX,Y座標データを受取る。本実施例におい
て、PLOTX,PLOTYレジスタは、図4では分離
されたレジスタとしては図示されていないが、むしろマ
リオチップ内の汎用レジスタ(図4のレジスタブロック
76内のレジスタR1,R2)を用いればよい。プロット
ハードウェア52は、カラーレジスタ54を介して画素
の色情報を受取る。以下に説明するように、表示される
各画素の色は8×8のレジスタマトリックスに格納さ
れ、そのマトリックスの1列は各画素の色仕様のデータ
に割当てられている。
【0029】プロットハードウェア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機能を実際に実現できるようになる。画素から
キャラクタフォーマットへの変換によって、プロットハ
ードウェア52は、データラッチ482内のRAMD
inおよび入力ライン83を介してカートリッジRAM
6,8から現在扱っている画素X,Yの近傍の他の画素に
関連する情報を受取ることができる。RAM6,8から
検索され、かつRAMデータラッチに一時的に格納され
た先の画素データを用いることによって、RAMに対す
る書込み回数を最小化することが可能となる。図4に示
すRAMデータラッチ80,84および86は、プロッ
トハードウェア52に、カートリッジRAMの多重ビッ
ト面内に格納された画素に関して受信された色データを
バッファする役割を有する。RAMデータラッチ80
は、スーパーNESがデータラッチの内容を読込むこと
ができるように、スーパーNESデータバスに連結され
ている。RAMデータラッチ80,82,84および86
は、RAMコントローラ88によって制御される。RA
Mデータラッチ84および86は、RAM6,8からデ
ータを受取るように動作し、レジスタブロック76の所
定のレジスタにロードするための所定のデスティネイシ
ョンZバスにRAM6,8からデータを送る。ラッチ9
0は、RAMコントローラ88に接続されておりRAM
アドレスはバッファする。ラッチ90内に格納されたア
ドレスは、RAMAバスを介してRAM6,8を指定す
るためRAMコントローラ88によって利用される。R
AMコントローラ88はアドレスバスHAを介してスー
パーNESによりアクセスされる。
【0030】プロットハードウェア52は、レジスタR
1の内容により規定された水平位置およびレジスタR2
の内容により規定された垂直位置の画素色情報を読出し
て、その結果をデスティネイションZバスおよび出力ラ
イン87を介してレジスタブロック76内の所定のレジ
スタに格納するREAD PIXELインストラクショ
ンにも応答する。このPLOTハードアェア52につい
ては図8,図9および図10の説明に関連してより詳細
に説明する。パイプラインバッファレジスタ62および
ALCコントローラインストラクションデコーダ60
は、インストラクションバスINSTRに接続され、イ
ンストラクションバス上のコマンドに対応して動作を開
始するため制御信号CTL(マリオチップで利用される)
を発生するように動作する。マリオチップ2は、現在の
インストラクションを実行しながら、次に実行されるべ
きインストラクションを取込むことができるパイプライ
ン化されたマイクロプロセッサである。パイプラインレ
ジスタ62は、もしも可能であれば、1つのサイクルに
おいて複数のインストラクションの実行を可能とするよ
うに、実行されるべき次のインストラクションを格納す
る。インストラクションバス上のインストラクション
は、あるレジスタ、例えば図5に示したレジスタブロッ
ク76内のレジスタR15に格納されたプログラムカウ
ンタの内容によって指定される。
【0031】マリオチップ2によって実行されるインス
トラクションは、図1に示したプログラムROM10又
はマリオチップの内部キャッシュRAM92から、或い
はカートリッジRAM6,8のいずれかから得られる。
もしもプログラムがROM10からのものについて実行
されているときには、図5に示すROMコントローラ1
04がインストラクションを取込み、マリオチップのイ
ンストラクションバスINSTRに出力する。プログラ
ムインストラクションがキャッシュRAM94に格納さ
れている場合には、キャッシュRAM出力バス95を介
してキャッシュRAM94からインストラクションバス
に直接に出力される。ホストCPU即ちスーパーNES
は、プログラムROM10の一部分をマリオチップのプ
ログラムインストラクションとして割当てる。スーパー
NESのプログラムは、マリオチップに所定の機能を実
行するよう命令し、マリオチップのプログラムコードを
アクセスするため、マリオチップにROM10内のアド
レスを与える。パイプラインレジスタ62は、プログラ
ム実行中に関連する処理を先に知ることができるよう、
次に何が起きようとしているのかをインストラクション
デコーダ60が予想しうるように、インストラクション
デコーダ60にインストラクションに関連する情報を与
えるために、現在実行中のインストラクションの1バイ
ト前のインストラクションを取込む。ブロック60内の
デコードおよび制御回路は、実行中のインストラクショ
ンコードによって指示された動作を実行するため、AL
U50,プロットハードウェア52,キャッシュコントロ
ーラ68等に命令するための制御信号を発生する。マリ
オチップ2はALUからは分離された高速の並行乗算器
64を備える。乗算器64は、所定のインストラクショ
ンに応答してX,Yソースバスから受信した2つの8ビ
ットの数を乗算し、その16ビットの結果をデスティネ
イションZバスに出力する。この乗算動作は可能であれ
ば1サイクル内で実行される。乗算器64に入力される
数は符号付きか符号なしかである。乗算器64は、2つ
の16ビット数を乗算して32ビットの結果を得るとい
った長い乗算を実行することができる。乗算器64は、
乗算動作中に生成される部分積を格納するため、付属の
部分積レジスタ66を備えている。乗算器64は、乗算
動作コードがデコードされたときに、インストラクショ
ンデコーダ60からの制御信号によって能動化される。
乗算器64は、16ビットワードの乗算の如き長い乗算
を最小4クロックサイクルの間に実行する。
【0032】長い乗算インストラクションは以下のフォ
ーマットを有する。 R4(low word),DREG(high word)=Sreg*R
6. このインストラクションは、ソースレジスタの内容をレ
ジスタR6の内容で乗算し、32ビットの結果をレジス
タR4/DREG(low/high)に格納することによって
実行される。乗算は符号付けされ、32ビットの結果に
ゼロおよび符号フラグがセットされる。動作は以下の計
6個のステップにしたがって行われる。 ステップ1: 符号なし乗算R4[0...15]=SRE
G[0...7]*R6[0...7] ステップ2: 符号付X.R4[0...15]=R4
[0...15]+256*SREG[8...15]*R
6[0...7]. 積の上位8ビットは無視されるが、桁上げは保持され
る。 ステップ3: 符号付X.R5[0...15]=CY+
(R6[8...15]*SREG[0...7])÷25
6;符号拡張 ステップ4: 符号なしX,符号付Y.R4[0...1
5]=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]. 本実施例で用いられる乗算器64は、マグローヒル社
(McGraw−Hill),1984年出版のキャバナウ(Cava
naugh)著、デジタルコンピュータ アリスメティック
(Digital Computer Arithmetic)に記述された型式
のものを用いることができる。
【0033】図5に戻って、キャッシュコントローラ6
8(図18により詳細に示されている。)は、高速で実行
されることが望ましいプログラムの部分のキャッシュR
AMへのローディングを効率的に開始することを許容す
る。このようなキャッシングは、図形処理においてしば
しば起る小さなプログラムループの実行に利用される。
マリオチップのインストラクションセットは、キャッシ
ュCACHEインストラクションを含む。CACHEイ
ンストラクションの直後のインストラクションは、キャ
ッシュRAMが一杯になるまでキャッシュRAMにロー
ドされる。CACHEインストラクションが実行される
と、現在のプログラムカウンタの状態はキャッシュベー
スレジスタ70にロードされる。かくしてキャッシュベ
ースレジスタ70の内容はキャッシングが開始された出
発位置を規定する。大部分のインストラクションは1サ
イクル中で実行される。ROM10やRAM6,8のよ
うな比較的低速の外部メモリからのインストラクション
は、それらが実行される以前に取込まれなければならな
い。この取込みは、6サイクル程度の時間を要する。プ
ログラム実行速度を向上させるためには、マリオチップ
2内にあるキャッシュRAM94が使用される。キャッ
シュRAM94としては、512バイトのインストラク
ションキャッシュを使用できる。このサイズは、平均的
なプログラムのサイズに比べれば相対的に小さいので、
プログラマはキャッシュメモリ94をいかに最適に利用
するかを考慮しなければならない。512バイトのキャ
ッシュサイズに組込むことができるプログラムループ
は、取込みと実行の両方が1サイクルで行えるような高
速で実行することができる。バスを分離しているため、
ROMとRAMの両方は、内部キャッシュ94からのコ
ードを実行しながら同時にアクセスすることができる。
【0034】キャッシュRAM94は、回転およびスケ
ーリングの計算を実行しながら各画素の色をROM10
から読出すループをキャッシュ94内で走らせることに
よってスプライトを回転させる一方、画素をRAM6,
8に書込むためPLOTインストラクション(これにつ
いては以下に説明する。)を使用するのに有利に使用す
ることができる。全てが並行に行われるため、本来なら
ば最も遅い動作によって速度が低下されるスループット
を著しく高速化することができる。最も低速の動作は通
常ROMのデータの取込みであり、マリオチップがRO
MとRAMに対してバッファアクセスを用いる設計とし
た理由もこゝにある。比較的低速のROM10からの実
行に比して、キャッシュRAM94からのプログラムの
実行は約6倍の速さで走らせることができるが、その場
合でもそのプログラムはROM10からキャッシュRA
M94にロードされなければならない。これは、キャッ
シュされるべきループのスタートにあるインストラクシ
ョンを設けることによって行われる。CACHEインス
トラクションのアドレスから取込まれたループの最初の
512バイトのみがキャッシュされる。そのループの最
初の繰返しのコードを実行しながら、プログラムはRO
M10から呼び出され、16バイト構造のキャッシュR
AM内にコピーされる。ループの他の全ての繰返しはR
OM10からではなく、キャッシュRAM94から行わ
れる。CACHEインストラクションは繰返しプログラ
ムループの前に自由に用いることができる。あるループ
の相続くインストラクションのみがキャッシュ内に存在
することによる利益を受ける。もしもプログラムループ
が512バイトより大きくキャッシュ94をオーバーフ
ローする場合でも、正しく機能するが、それは最初の5
12バイト分がキャッシュ94によって実行され、残り
はROM10によって通常の如く実行される。したがっ
て、部分的には速度アップになるが理想的ではない。
【0035】本実施例において、キャッシュコントロー
ラ68の一部であるキャッシュタグビットレジスタ72
はキャッシュRAM94にロードされたメモリ位置を識
別する。このキャッシュタグビットは、プログラムイン
ストラクションがプログラムROM10よりは高速のキ
ャッシュRAMによってプログラムインストラクション
が実行可能であるかをマリオチップ2が迅速に決定でき
ることを可能にする。キャッシュRAM94は、キャッ
シュコントローラ68によってアクセスされるか、或い
はスーパーNESアドレスバスHA,マルチプレクサ9
6を介してスーパーNESにアクセスされる。キャッシ
ュコントローラ68はキャッシュベースレジスタ70に
ロードし、キャッシュメモリアドレスの領域外チェック
動作を実行するため、プログラムカウンタバスPCに接
続されている。ROM10からの読取りにおける並行処
理と同様に、マリオチップ2はRAM6,8への書込み
を並行化する方法を提供する。マリオレジスタがRAM
6,8に書込むときには常に、メモリトランザクション
を実行するため、例えばRAMコントローラ88内の別
に設けたRAM書込み回路を始動させる。これは通常6
サイクルを要するが、プログラマがこの間に他のRAM
トラクザクションの実行を回避するようにすれば、そう
しながらもプロセッサの動作を遅らせることはない。例
えば、各格納インストラクションの間に他の処理を介挿
することは高速化される。この方法でRAM書込み回路
はそのジョブを実行する時間を持つことができる。もし
も2つの書込み回路が行に対して用いられる場合、第2
の書込み回路は、第1の書込み回路が書込みを行ってい
る間、プロセッサを遅延させる。
【0036】例えば、以下に説明するインストラクショ
ンセット中のインストラクションを用いると、表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 こゝでは2個の格納インストラクションが互いに接近し
すぎていることに注意すべきである。この場合、RAM
バスは第1の格納インストラクションを完了するために
ビジイであるため、第2のものは6サイクルより長い処
理時間を要する。より高速のコード書込みのためには、
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サ
イクル後に実行される。
【0037】以下に述べるインストラクションセット
は、レジスタを最後に使われたRAMアドレスに書き戻
すための第1のインストラクションを含む。このこと
は、値をRAMからロードし、それについて何んらかの
処理を施し、その後高速で結果を再格納することによっ
て、データのバルク処理を可能とする。図5に戻って、
即時データラッチ74はインストラクションバスに接続
される。このデータラッチ74は、インストラクション
自身に、ソースレジスタがあるインストラクションによ
って特定される必要がないようにデータのソースを与え
ることを可能とする。即時データラッチ74の出力は、
デスティネイションZバスに接続され、該バスはレジス
タブロック16内のレジスタの所定の一つに接続されて
いる。インストラクションデコード回路60は、“即
時"デコードインストラクションを解読し、レジスタへ
の転送動作の実行を開始する。図5に示したGETBレ
ジスタ98は、前記した遅延され/バッファされる読込
み動作に関連して使用される。この点、相対的に遅いア
クセスタイムを有するROMの広汎な使用下にあって
は、従来のプロセッサはデータの取込みが完了するまで
待機しなければならなかった。以下に説明する遅延/バ
ッファ取込み構造を採用することによって、データの取
込みを行いながら他の動作を行うことができる。この構
造によれば、レジスタブロック76内のレジスタR14
がアクセスされるか何んらかの方法で更新された場合、
ROM又はRAM取込みはR14の内容によって特定さ
れるアドレスにおいて自動的に開始される。図5に示す
ように、レジスタR14はROMコントローラ104に
接続されている。レジスタR14の内容が何んらかの方
法で更新されるときに、ROMコントローラ104はR
OMアクセスを開始するように動作する。ROMをアク
セスした結果はROMデータバスROMDに接続された
マルチプレクサ102を介してGETBレジスタ98に
ロードされる。以下で特定されるインストラクションは
GETBレジスタ98内でバッファされた情報をアクセ
スすることを可能にする。この情報はマルチプレクサ1
00を介してデスティネイションZバスに出力され、レ
ジスタブロック76内のレジスタの一つに入力される。
【0038】このように構成された回路において、もし
ROMからのデータのフェッチが所定数の処理サイクル
だけの時間を要することとして知られているならば、当
該フェッチを初期化することができるとともに、他の動
作を実行することなしに待機する代わりに、例えば、マ
リオチップはそのようなデータのフェッチの初期化が完
了した後に、関係しないコードを実行することができ
る。GET Bレジスタを、図5に示すように、マルチ
プレクサ102を介してRAM6,8から検索される情
報を格納するために利用してもよい。
【0039】16個の16ビットのレジスタ(R0−R
15)はレジスタブロック76内に設けられる。レジス
タR0−R13は、(これらの幾つかのレジスタは後述
するように特別な目的のためにしばしば用いられる
が、)一般の目的のためのレジスタ(ジェネラル)であ
る。上述のように、レジスタR14はメモリからデータ
を読み出すためのポインタとして用いられ、それが変更
されるときROM(又はRAM)からの読み出しサイク
ルが初期化される。読み出された1バイトのデータは、
GET L又はGET Hコマンドによる後のアクセス
のために、テンポラリバッファ(GET Bレジスタ9
8)に格納される。レジスタR15は、プログラムカウ
ンタである。各命令の開始時に、レジスタR15は、フ
ェッチされる次の命令を指し示す。
【0040】レジスタR0は、典型的にはアキュムレー
タとして動作する一般の目的のレジスタである。レジス
タR0はまた、ほとんど1サイクルの命令のためのデフ
ォルトソース及びデスティネーションレジスタである。
例えば、もしレジスタR0及びR4の内容がともに加算
されることが所望されるならば、明確にレジスタR4を
指し示すことのみが必要である。
【0041】あるループ命令が実行されるとき、レジス
タR11,R12及びR13が特に利用される。レジス
タR13は、当該ループの最初で実行されるべき命令の
アドレスを格納し、レジスタR12は、当該ループが実
行されるべき回数を格納する。もしレジスタR12の内
容がゼロでないならば、このときレジスタR13の内容
によって示されたアドレスに格納された命令がプログラ
ムカウンタ(R15)にロードされ、実行される。レジ
スタR11は、当該ループの処理が完了した後、リター
ンすべきアドレスを格納する。
【0042】レジスタ制御ロジック78はレジスタブロ
ック76に接続され、ジェネラルレジスタR0−R15
へのアクセスを制御する。実行される特別な命令のフォ
ーマットに依存して、命令デコーダロジック60は、1
個又はそれ以上のレジスタR0−R15を示すであろ
う。レジスタ制御ロジック78は、実行すべき次の命令
がどのレジスタを利用する必要があるかを示す。レジス
タ制御ロジック78は適当なレジスタの出力をXバス及
びYバスに接続する。さらに、図5によって示されるよ
うに、適当なレジスタR0−R15は、レジスタコント
ローラ78の制御のもとで、Zバスからの情報を受信す
る。
【0043】ROMコントローラ104は、スーパーN
ESのアドレスバスHAとマリオチップのいずれかから
のアドレスの受信時に、そのアドレスをアクセスするで
あろう。ROMコントローラ104は図17においてさ
らに詳細に図示される。ROM10からアクセスされた
情報を高速の命令の実行のために、キャッシュRAM9
4にロードしてもよい。ROMコントローラ104及び
RAMコントローラ108の両方は、スーパーNESの
アクセスの試行とマリオチップのアクセスの試行との間
の調停を行うバスアービトレーション装置を有する。
【0044】さらに後述するように、マリオチップはま
た、(例えばレジスタブロック76内又はRAM6,8
内の)複数のステータスレジスタを利用し、これらの複
数のステータスレジスタはスーパーNESのCPUによ
ってアクセス可能であって、例えば次のようなステータ
スの状態を識別するための複数のフラグを格納する:す
なわち、複数のステータスレジスタは、0フラグ、キャ
リーフラグ、符号フラグ、オーバーフローフラグ、“ゴ
ー(GO)”フラグ(ここで、1はマリオチップが実行
中であることを示し、0はマリオチップが停止中である
ことを示す);(レジスタR14がアクセスされたこと
を示す)ROMバイトのフェッチインプログレス(フェ
ッチ進行中)フラグ;ALT 1フラグと、ALT 2
フラグと、イミーディエイトバイトローフラグと、イミ
ーディエイトバイトハイフラグと、ソースレジスタとデ
スティネーションレジスタの両方が“WITH”プリフ
ィックスコマンドによってセットされたことを示す複数
のフラグとを含む複数のフラグを示す種々のモードと、
割り込みフラグとを格納する。
【0045】図4及び図5におけるブロック図で図示さ
れたマリオチップは、1秒当たり複数のタスクを多数回
実行するために、マリオチップをオンし又はオフするス
ーパーNESによって利用される。まず最初に、スーパ
ーNESがオンされたとき、ROM10に格納されたゲ
ームプログラムがブートアップされる。なお、スーパー
NESプロセッサ及びマリオチッププロセッサによるゲ
ームプログラムの実行の前に、ゲームカートリッジに対
してまず認証処理が行われる。
【0046】マリオチップはまず最初に、スイッチオフ
の状態にされる。次いで、適当なタイミングで、スーパ
ーNESはゲームカートリッジのプログラムROMとゲ
ームカートリッジのRAMへの制限されないアクセスを
行う。スーパーNESはグラフィックの処理又は数学的
な計算とのいずれかを実行するためにマリオチップの処
理能力を用いる必要性を有するとき、スーパーNES
は、それがマリオチップに対してカートリッジRAMに
おいて(又は予め決められた複数のマリオレジスタにお
いて)処理することを所望する適当なデータを格納し、
そのデータを、マリオチップのプログラムカウンタに実
行すべきマリオプログラムのアドレスでロードする。マ
リオチップによって処理すべきデータは、回転すべきで
あって拡大又は縮小すべき複数の物体の予め決められた
X座標及びY座標データであってもよい。マリオチップ
は、変化する複数のスプライト又は移動する物体のバッ
クグラウンド(背景)及びフォアグラウンド(前景)を
操作するためのアルゴリズムを行うプログラムを実行す
ることができる。マリオチップの高速化されたハードウ
エア及びソフトウエアの使用は、そのような動作におい
て高速性能をもたらす。
【0047】複数のスプライトを処理するためのマリオ
チップの使用は、全体のビデオゲームシステムの能力を
かなり拡張させることができる。例えば、スーパーNE
Sは1フレーム当たり128個のスプライトを表示する
ことに制限される。スーパーマリオチップの使用によっ
て、仮想的に、数百のスプライトを表示することがで
き、また、例えば回転することができる。
【0048】マリオチップがスーパーNESによって要
求された機能の処理を完了したとき、STOP(停止)
命令が実行され、マリオチップがその動作の処理を完了
し、次いで次のタスクを実行することの準備が完了して
いることを示すために、割り込み信号が発生され、その
割り込み信号がスーパーNESに送信される。
【0049】マリオチップは、例えば高速の乗算タスク
のような小さなタスクを実行するために利用してもよい
し、もしくは1つのスクリーンを複数のスプライトでフ
ルに描くために利用してもよい。いずれかの場合におい
て、もしRAMバス又はROMバスがマリオチップによ
って使用されているときに、スーパーNESがRAMバ
ス又はROMバスを占有していないならば、スーパーN
ESはマリオチップと並行して自由に処理を行うことが
できる。なお、もしスーパーNESがマリオチップに対
してゲームカートリッジ上でRAMバスとROMバスの
両方の制御を行わせるならば、それにもかかわらず、ス
ーパーNESは図2において図示されたワーキングRA
M32の複数のプログラムを実行してもよい。従って、
実行すべきスーパーNESプログラムをプログラムRO
M10からワーキングRAM32に書込むことによっ
て、全体のシステムのスループットを高くしてもよく;
一方、同時にマリオチップによってある1つのプログラ
ムを実行させてもよい。
【0050】図6に、マリオチップに対してROMから
のコードをフェッチさせた後、要求されたアドレスにつ
いて処理を開始するために、(例えばスーパーNESの
CPUである)ホストCPU22によって実行される
“ランマリオ(RUN MARIO)”プログラムによ
って実行された一連の処理を表すフローチャートが図示
されている。図6によって図示されたルーチンは、典型
的には、プログラムROM10からのルーチンを図2に
図示されたワーキングRAM32に書込んだ後、スーパ
ーNESのCPUによって実行されるであろう。このル
ーチンは、マリオチップがある処理を実行することが要
求されたときはいつでもホストCPU22によって実行
される。
【0051】ランマリオのホストCPU22のルーチン
が実行されたときのステップ125に示すように、スー
パーNESの複数のレジスタを事前にセットすることを
含む初期化処理が実行される。初期化ステップの処理中
において、このルーチンはプログラムROM10からホ
ストCPUのワーキングRAM32に複製される。
【0052】ステップ127に示すように、実行すべき
マリオのプログラムコードを格納するROM10のコー
ドバンクがマリオチップのレジスタにロードされる。さ
らに、当該コードバンク内の実際のアドレスがステップ
129で示されたマリオチップのスクリーンベースレジ
スタに格納される。
【0053】次いで、ステップ131に示すように、4
色、16色又は256色のいずれかのカラーモードが用
いられるかを識別することによって、I/O(入力/出
力)モードがマリオチップにセットされる。これらのモ
ードは、ホストCPU22が動作するカラーモードに対
応する。さらに、スクリーンの高さを表示可能な文字の
数で定義するあるモードがセットされる。
【0054】さらに、ROMバス及びRAMバスの制御
をマリオチップに対して与えるモードビットがセットさ
れる。ROMバス及びRAMバスの制御は、マリオチッ
プが、ROMバス、RAMバス又は両方のバスへのアク
セスを有するモードにセットされるように個別に選択可
能である。従って、もし“マリオオーナー(Mario
owner)”モードがROM10とRAM6,8の
両方に対してセットされたならば、このときホストCP
UはROM10又はRAM6,8からデータを読み出す
ことができず、もしくは書き込むことができない。な
お、もしホストCPU22がプログラムROM10に対
してアクセスを試みる一方、マリオチップがプログラム
ROMバスを使用中であるならば、あるメカニズムが設
けられ、これによってマリオチップはダミーのアドレス
をスーパーNESに戻す。そのようなアドレスヘの分岐
は、マリオチップがもはやカートリッジROMバスに対
するアクセスを要求しなくなるまで、スーパーNESを
占有しつづける。
【0055】ステップ133に示すように、マリオチッ
プのプログラムカウンタのデータがマリオルーチンが実
行しなければならない最初の命令を格納するアドレスに
ロードされた後に、マリオチップは処理を開始する。
【0056】そして、ホストCPU22はマリオチップ
からの割り込み信号を待つ(ステップ135)。割り込
み信号が受信されたとき、スーパーNESは、マリオチ
ップがその動作の処理を終了し停止されたことを知らせ
られる(ステップ137)。もしそのような割り込み信
号が受信されないならば、そのときホストCPU22は
割り込みを待つことを続ける(ステップ135)。スー
パーNESはこの時間周期の間、図2に図示されたその
ワーキングRAM32のプログラムを実行することによ
って、マリオチップの処理と並行してプログラムコード
を実行してもよい。
【0057】次いで、スーパーNESは、(例えばマリ
オチップのレジスタのブロック76における)ステータ
スレジスタをチェックして、マリオチップが動作中であ
ることを示す“GO”フラグがセットされたか否かを決
定する(ステップ137)。さらに、割り込みフラグ
は、マリオチップがホストCPU22によって受信され
た割り込み信号のソースであることを示すために、マリ
オチップのステータスレジスタにセットされる。従っ
て、割り込み信号がホストCPU22によって受信され
た(ステップ135)後、適当なマリオステータスレジ
スタは、(例えば、垂直ブランキング期間を示す割り込
み信号に対立するものとして、)マリオチップが割り込
みのソースであるか否かを決定するためにテストされ
る。もしマリオチップが停止されたならば(ステップ1
37)、そのときRAM及びROMに対するマリオオー
ナーモードのビットがクリアされ、スーパーNESはR
OM及びRAMへのフルアクセスの状態となる。スーパ
ーNESは当該ルーチンを出て(ステップ141)、当
該ランマリオルーチンに入る前に実行していたそのプロ
グラムにおけるポイントに戻る。
【0058】CPU22のゲームプログラムがマリオチ
ップをROMのマリオオーナーモードにセットすると
き、CPU22は自発的にROMをアクセスすることを
停止する必要がある。CPU22が幾つかの理由でRO
Mにアクセスする必要があるときはいつでも、CPU2
2は単にROMのマリオオーナーモードをオフにする。
マリオチップは、マリオチップが次にROMをアクセス
する必要があるときに、再びROMのマリオオーナーモ
ードがセットされるまで自動的に待機状態となるであろ
う。もしマリオチップが内部キャッシュRAMから実行
状態となるならば、このことはまったく必要とされな
い。
【0059】もしマリオチップがROMのためのマリオ
オーナーモードに設定されているならば、CPU22の
ゲームプログラムはROM10から全くデータを読み出
すことを試みないということが重要である。例えば垂直
ブランキングのために、任意の割り込みが生じたとき
に、その割り込みはNMI(Non Maskable Interrupt:最
優先割り込み)を生じさせ、次いで、CPU22は自動
的にROMからのその割り込みのベクトルをフェッチし
ようと試みる。このことは、所望されない。なぜなら
ば、CPU22がROMから離れた後、割り込みが生
じ、CPU22が任意の方法でROMからデータをフェ
ッチすることを、CPU22がマリオチップに明確に知
らせるためである。この状態において、すなわちマリオ
のオーナーモードにセットされたCPU22からのRO
Mのアクセスは、マリオチップに対して、このことが割
り込みのベクトル要求であったように動作させる。
【0060】ROMのマリオオーナーモードにおける割
り込みベクトルのフェッチ処理中において、マリオチッ
プは当該割り込みベクトルをスーパーNESの内部ワー
キングRAM32におけるスタックエリアの最下部に移
動させるであろう。例えば、もし通常の割り込みベクト
ルが$00:FFECであったならば、そのときロケー
ション$00:010Cへのジャンプ(JUMP)を生
じさせる。同様に、ロケーション$00:FFEXから
のすべての複数の割り込みベクトルはCPU22に対し
て、$00:010Xにおけるそれらの対応するロケー
ションへのジャンプ(JUMP)を生じさせる。この技
術は、CPU22がROM10にアクセスするようにな
るときに、CPU22がROM10にアクセスすること
を回避させ、次いで、その代わりに、割り込みベクトル
をボード上のスーパーNESのRAM32に転送させ
る。なお、RAMをベースとする複数の割り込みベクト
ルは、割り込みのハンドラーに対するジャンプ又は分岐
を含む必要があり、すなわち、実際のコードを、ベクト
ルアドレスが存在するところに常駐させる必要がある。
マリオチップはマリオのオーナーモードのROMに存在
しないとき、普通のROMの割り込みベクトルが使用中
であり、それ故、これらのロケーションにおいて指し示
された同一のアドレスを、RAMをベースとする割り込
みベクトルと同一の場所に行かせることを保持させるこ
とが得策である。
【0061】命令セットマリオチップの命令セットは、
高速のグラフィックスと他の処理アルゴリズムをプログ
ラムするための十分な手段を提供する。ある命令の簡単
な記述の後に、種々の命令によって用いられるある複数
のレジスタの記述が続いて、以下に示される。当該命令
セットにおける命令の詳細なリストがまた提供される。
【0062】複数の命令は、8ビットの命令であり、典
型的には1クロックのサイクルで実行される。しかしな
がら、複数の命令を、8ビットのプリフィックス命令に
よって変形することができる。マリオチップの命令セッ
トは、プログラマーに対して任意の命令の前にデスティ
ネーションレジスタと両方のソースレジスタとを示すこ
とを可能にするユニークなレジスタオーバーライドシス
テムを含む。そのような“プリフィックス”が付けられ
たオーバーライドを用いることなしに、複数の命令はア
キュムレータ上でのみ動作するであろう。従って、命令
セットは、無数の組み合わせを有する可変長の命令セッ
トである。1サイクルで動作する1バイト長の幾つかの
基本命令が提供される。プリフィックスが付けられた命
令を提供することによって、プログラマーは命令の能力
を拡大することができる。ある1つの命令は、プログラ
マーの要望に依存して8ビット、16ビット又は24ビ
ットであることが可能である。
【0063】マリオプロセッサは、高速であってボード
上のキャッシュRAMプログラムの実行と、メモリに対
する、遅延され/バッファされたI/O処理を初期化す
るための複数の命令を利用する。グラフィックスの処理
は、上述の画素プロットのハードウエアを用いて処理を
初期化する1サイクルの画素プロットコマンドを使用す
ることによって十分に可能となる。
【0064】マリオの命令セットを識別する前に、複数
の命令を実行するときにプロセッサによってセットされ
又はアクセスされた種々のメモリがマッピングされたレ
ジスタについて以下に述べる。まず最初に、ステータス
フラグレジスタが識別される。ステータスレジスタは1
6ビットのレジスタであり、当該レジスタにおいて16
ビットの各々のビットに関連するフラグが以下のように
識別される。
【0065】
【表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 − 予備
【0066】“GO”フラグ(ビット5)は、マリオチ
ップが実行中であることを示す“1”の状態と、マリオ
チップが停止された状態(その結果スーパーNESに連
動して割り込み信号の発生をもたらす。)を示す“0”
状態とにセットされるフラグである。このフラグビット
は、スーパーNESプロセッサによってチェックされ
る。ビット6は、ROMのバイトフェッチが現在進行中
であることを示すためにセットされる。以下にリストの
形式で示すGETバイト命令は、データのフェッチが完
了したことを示すこのフラグがクリアされるまで実行す
ることができない。ステータスレジスタのこれらの最下
位ビットを、マリオチッププロセッサ又はホストCPU
のいずれかによって、残っている8ビットとは独立に、
もしくはそれと組み合わせて読み出すようにしてもよ
い。ステータスフラグレジスタの最上位ビットは、予め
決められたプリフィックス命令によってセットされ、命
令のインタープリテーションの種々のモードを定義す
る。
【0067】
【表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 割り込みフラグ
【0068】前記で識別されたALT1モードにおい
て、ADD(加算)命令はADD WITH CARR
Y(キャリー付き加算命令)としてインタープリテーシ
ョン(解釈)され、SUBTRACT(減算)命令はS
UBTRACT WITH CARRY(キャリー付き
減算命令)としてインタープリテーションされるであろ
う。命令ALT1はこのモードを初期化する。
【0069】ALT2命令はADD命令からADD W
ITH IMMEDIATE DATAへのインタープ
リテーションを変形し、SUBTRACT命令からSU
BTRACT IMMEDIATE DATAへのイン
タープリテーションを変形する。“イミディエイト”デ
ータは当該命令にすぐに続くバイトにおいて示される。
なお、命令ALT3はビット8及び9の両方をロジック
“1”レベルにセットするであろう。ビット10及び1
1を、イミディエイトデータがイミディエイトのハイの
バイトか又はイミディエイトのローのバイトであるかに
依存してセットされる。ステータスレジスタのビット1
2は“b”モードを定義し、ここで、ソースレジスタと
デスティネーションレジスタの両方がプリフィックス命
令“WITH”の使用によってセットされる。ステータ
スレジスタのビット15は、マリオチップの実行が停止
された後にセットされるマリオ割り込み信号を格納す
る。
【0070】マリオチップは上述されたステータスレジ
スタに加えて多くのレジスタを備える。上述のように、
マリオチップは、図4及び図5においてレジスタブロッ
ク76の議論において示したように、16ビットの幅を
有する16個のレジスタを備える。これらのレジスタの
ほとんどは一般の目的のレジスタ(ジェネラルレジス
タ)であり、これらをデータ又はアドレスの記憶のため
に用いることができる。しかしながら、上述したよう
に、レジスタR15は常時プログラムカウンタとして利
用される。典型的には、複数のレジスタは二つの目的で
設けられ、ホストCPUとの通信のためと、実行プログ
ラムを制御するために用いられる。さらに、他のレジス
タはマリオチップにおいて利用され、そのマリオチップ
の機能を以下の表5及び表6に示す。
【0071】
【表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 プログラムカウンタ
【0072】
【表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文字分の高さのスクリーン)
【0073】マリオチップはまた、カラーモードCMO
DEレジスタを備える。このレジスタにおけるビットの
うちの4ビットは、以下に記述する特別な効果を生成す
るために、好ましい実施例において用いられる。CMO
DEレジスタのビットをセットすることによって生成さ
れる効果は、16色又は256色のカラーレゾレーショ
ンンモードが、以下の例において示されるようにセット
されたか否かに基づいて変化する。
【0074】CMODEレジスタモードのビットは次の
通りである。
【0075】
【表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色を与える。)もし(xpo
s XOR ypos AND 1)=0であるなら
ば、ローのニブルが選択される。もし(xpos XO
R 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 ;(transparenc
y on and lo nibble=0) ibt r0,%0001 ;set bit 1 cmode ibt r0,$40 colour plot ;plots colour
$0 ;(transparenc
y off) stop ;16 colour mode, bit 2 set example ibt r0,$C0 colour ;set colour $
C0 ;256 colour mode, bit 3 set exa
mple ibt r0,$C0 colour ;set col
our $C0 ibt r0,%1000 ;set bit
3 cmode ibt r0,$47 colour plot ;plots c
olour $C7 ibt r0,$50 colour plot ;no plo
t, as colour is $C0 ;(transp
arency on and lo nibble=0) ibt r0,%1001 ;set bit
3 and bit 1 cmode ibt r0,$60 colour plot ;plots c
olour $C0 ;(transp
arency off) stop ;256 colour mode, bit 3 and bit
2 set example ibt r0,$C0 colour ;set col
our $C0 ibt r0,%1100 ;set bit
3 and bit 2 cmode ibt r0,$74 colour plot ;plots c
olour $C7 ibt r0,$03 colour plot ;no plo
t, as colour is $C0 ;(transp
arency on and lo nibble=0) ibt r0,%1101 ;set bit
3, bit 2 and bit 1 cmode ibt r0,$08 colour plot ;plots c
olour $C0 ;(transp
arency off) stop
【0076】多くのマリオチップのレジスタは関連する
特別な機能を有する。前記の表において示したように、
もし示していないときには、当該システムは、レジスタ
R0をある特別な命令によって要求されるデスティネー
ションレジスタ又はソースレジスタとしてデフォルトす
る。レジスタR0はまたALUアキュムレータとして利
用される。前記で示された乗算命令は、32ビットの演
算結果を戻す。最下位16ビットはR4内のレジスタに
格納される。レジスタR6は分数の符号を有する乗算命
令(FRMULT)と長い乗算命令(LMULT)とと
もに用いられる。
【0077】レジスタR7及びR8はMERGE(マー
ジ)命令を実行するときに利用される。当該命令は2個
の予め決められたレジスタ(すなわちレジスタR7,R
8)を用いて、それらをともにマージしてスプライトの
座標データを形成する。そのような座標データは、予め
決められたスプライトをマッピングするためのROMテ
ーブルを予め決められたポリゴンにアドレス割り当てす
るときに利用される。この命令は、2個のレジスタの各
部分を組み合わせて、あるポリゴン上にマッピングされ
たある1つのスプライト内に含まれる画素である次の画
素のための色のアドレスを定義することによって、テキ
スチャのマッピング処理を十分に実行するための助けと
なる。
【0078】R11からR13までのレジスタがサブル
ーチンの実行を制御するために用いられる。レジスタR
11はサブルーチンの読み出しのためのリンクレジスタ
として用いられ、プログラムカウンタの内容に1を加算
したデータを格納する。レジスタR11の内容は、ある
ループの処理が完了した後にアクセスされる必要がある
アドレスを定義する。レジスタR12は当該ループ処理
を実行すべき回数を定義する計数値を格納するために用
いられる。当該ループ処理のアドレスはレジスタR13
に格納される。
【0079】前記で示したように、レジスタR14の内
容が変更されたときはいつでも、ある1バイトのデータ
がROM10からレジスタR14に格納されたアドレス
に読み出される。このような方法で、遅延され又はバッ
ファされたREAD(読み出し)動作が、以下に識別さ
れたGETバイト命令とともに実行される。
【0080】前記の表における“その他のレジスタ”に
戻り、そこから当該プログラムが実行中のロケーション
であるプログラムROMのロケーションが24ビットの
アドレスを用いてアドレス割り当てされる。このアドレ
スの最下位16ビットはプログラムカウンタにおいて見
つけられる。プログラムバンクを定義する最上位ビット
はプログラムコードバンク(PCバンク)レジスタに格
納される。
【0081】ROMバンクレジスタ(ROMBANK)
は、マリオチッププロセッサがROM10に格納された
プログラムデータをアドレス割り当てすることを許可す
るための最上位ビットを格納し、レジスタR14に格納
された16ビットのROMアドレスに付加される。同様
に、RAMバンクレジスタ(RAMBANK)は、マリ
オチッププロセッサがRAMにおけるプログラムデータ
をアクセスすることを許可するためのより高いオーダー
のアドレスビットを格納する。当該RAM及びROMバ
ンクレジスタの内容は、マリオプロセッサのアドレス割
り当ての範囲を有効的に拡張するための、マリオチップ
ROM及びRAMアクセス命令と関連づけられて用いら
れる。
【0082】スクリーンベースレジスタ(SCB)は、
生成中であって回転され、拡大又は縮小された複数のス
プライト又は複数の目標物の仮想的なビットマップのア
ドレスを格納するために用いられる。PLOT(プロッ
ト)画素命令が実行されるとき、スクリーンベースレジ
スタSCBは、アクセスされかつ情報が書き込まれるR
AMにおけるアドレスを格納する。
【0083】レジスタNBPは、使用中であるビット平
面の数を格納するために利用される。典型的には、その
レジスタNBPは2、4、又は8ビット平面の使用のい
ずれかを示す。さらに、スクリーンコラムサイズレジス
タSCSは、それの中のコラム内に含まれる文字数に関
する仮想的なビットマップについての情報を明確に示す
ために利用される。
【0084】当該命令のニーモニックと、それに関連し
た命令を復号化するときに実行される関連する機能とを
示すマリオチップの命令セットが以下にリストとして示
される。まず始めに、自己の説明とは信じられないある
関連する命令のある複数の命令に対する簡単なコメント
が以下に示される。
【0085】マリオチップがその動作を終了したときS
TOP(停止)命令が実行され、“GO”フラグをゼロ
にセットするように動作し、また任意の割り込み信号を
ホストCPUに発生する。
【0086】CACHE(キャッシュ)命令は、マリオ
チップのキャッシュRAMに複製されかつそこから実行
すべきプログラムROMの部分を定義するように動作す
る。CACHE命令が実行されたとき、プログラムカウ
ンタの内容はキャッシュベースレジスタにロードされ、
後述する複数のキャッシュタグがリセットされる。
【0087】マリオチップは、分岐に続く命令が以下の
表に示されるように実行される一連の遅延された分岐命
令を含む。分岐処理が生じる分岐先のアドレスはプログ
ラムカウンタの内容と相対的に割り当てられる。命令セ
ットは、以下に示す表で概説する条件に基づく、広いバ
ラエティの遅延された分岐処理を含む。
【0088】マリオチップは例えばto(〜へ)/wi
th(〜とともに)/from(〜から)などの、多く
の“プリフィックス”命令を含む。これらのプリフィッ
クス命令は、連続する命令のためのデータの分配という
意味を示す。例えば、“TO”プリフィックスは、次の
命令のためにデスティネーションレジスタ(DReg)
をセットする。“FROM”プリフィックスは次の命令
のためにソースレジスタをセットする。“WITH”プ
リフィックスは両方をセットする。
【0089】ほとんどの命令は動作コード(opcod
e)における第2のソースレジスタを名付ける。もしS
RegとDRegがプリフィックス命令によってセット
されないならば、それらはR0にデフォルトされる。プ
リフィックス命令でない各命令毎の実行後に、SReg
及びDRegの両方がR0にセットされる。もしDRe
gがR15にセットされるならば、それによって、プロ
グラムカウンタは次の命令を生じさせ、その内容をR1
5に格納し、次いで、1サイクルの遅延された分岐処理
が初期化される。
【0090】他のプリフィックス命令は、次の命令の動
作を変更するために、ステータスレジスタのハイのバイ
トのデータにおける複数のフラグをセットする。すべて
のプリフィックスでない命令はステータスワードのハイ
のバイトをクリアする。次はどのように連続する命令を
プリフィックス命令を用いて変形されるかについての例
である。
【0091】
【表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 + c
arry alt 1 with r3 add r3 ;r3 = r3 + r3 +
carry (6502 rol)
【0092】もし“b”フラグがステータスレジスタに
セットされたならば、“TO”命令は“MOVE(移
動)”命令として動作するように変形される。TO命令
は当該情報が移動する移動先のレジスタを示し、FRO
M命令は情報のソースを示す。
【0093】STW命令は、次の命令を実行する前に格
納動作が完了するまでに待機する必要がないような、バ
ッファにおけるある特別なワードを格納する。このよう
な方法で、当該プロセッサよりも遅いRAMの使用は当
該プロセッサの処理速度を不必要に低下させることはな
い。
【0094】LOOP命令の実行は、ジェネラルレジス
タR12の内容をデクリメントするように動作する。も
しR12の内容がゼロでないならば、そのときレジスタ
R13に示されたアドレスへのジャンプが初期化され
る。
【0095】Alt1,Alt2及びAlt3は、以下
の表に示すように異なった方法で、実行される命令をイ
ンタープリテーションされるように、ステータスレジス
タにおける上述の複数のフラグをセットするプリフィッ
クス命令である。
【0096】PLOT命令はプロットすべき画素のX及
びYのスクリーン座標を識別し、(レジスタR1及びR
2において示されるように)X座標及びY座標に対応す
るスクリーンのロケーションにおけるCOLOR命令に
よって示される色の画素をプロットする。PLOT画素
命令は、高速で複数の水平ラインをプロットするときに
補助するレジスタR1の内容の自動的なインクリメント
処理を含み、特別なインクリメント命令を含むことを排
除する。
【0097】もしAlt1フラグがセットされたとき、
そのときプロット命令がREADPIXEL命令(RP
IX)としてインタープリテーションされる。当該読み
出し画素命令RPIXを実行することによって、プロッ
トのハードウエアから所望されない画素情報をフラッシ
ュさせるために用いることが可能であることが示された
スクリーンのロケーションにおける画素の色が読み出さ
れる。
【0098】読み出し画素命令RPIXは、本質的には
逆に、命令において示されるある特定の画素の色を決定
するために、逆に1個の文字のマトリックスからデータ
を読み出すためのプロットのハードウエアを用いる。C
OLOR命令は、示されたソースレジスタの内容によっ
て定義される次の画素の色を、カラーハードウエアに提
供する。
【0099】“CMODE”命令は、前記で提供された
例において示したような異なった特別な効果を生成する
ために用いることができる。例えば、ディザ処理の効果
を、シェーディング効果を生成するように代替の画素に
おける異なった色を交互にするCMODE命令を用いて
発生することができる。CMODE命令をまた、スプラ
イトの表示をバックグラウンドの表示の輪郭を描くよう
にトランスペアレンシーを制御するために用いることが
できる。トランスペアレンシーは前記の例において図示
したように、カラーモードに関係するフラグのセット処
理によって決定される。
【0100】命令セットはまた、表示すべき複数の目標
物の傾斜又はスロープを決定するためにポリゴンを回転
するための計算において用いられる分数の符号が付けら
れた乗算演算を含む。
【0101】インクリメント命令がもしレジスタR14
と関連されて用いられるならば、ROMからの読み出し
処理を初期化する。GETC命令はROMからアクセス
されるバイトのデータを取り出し、それをカラーレジス
タにロードする。
【0102】次の表は、前記で議論されたこれらの命令
を含むこの好ましい実施例に従って模範的なマリオチッ
プの命令セットを示す。
【0103】
【表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を絶対的なワードアドレスに格納する
【0104】図7乃至図22は図4及び図5において図
示された構成要素についてさらに詳細に記述したブロッ
ク図である。本発明のユニークな特徴をより明確に明ら
かにするために、当業者にとって従来技術であり又は明
らかであると確信するものであって、これらのユニーク
な特徴を不明瞭にするような回路の詳細については、以
下の図面において図示していない。
【0105】ALU装置50として用いてもよい好まし
い演算及びロジック装置が図7に図示される。図4及び
図7に図示されるようなALU50はXバス、Yバス及
びZバスに接続される。従って、マリオチップのジェネ
ラルレジスタR0−R15は当該ALU50に接続され
る。
【0106】ALU50は、16ビットの加算器/減算
器152を介して加算機能及び減算機能を実行する。A
LU50はまた、従来の“アンド”ロジック回路154
と、“オア”ロジック回路156と、“排他的論理和”
ロジック回路158とを備える。
【0107】ALU50は、従来のシフト機能回路を備
え、このシフト機能回路において、任意のキャリービッ
トが最上位ビットの位置にシフトされ、その結果がライ
ン160を介してマルチプレクサ164の1つの入力端
子に出力される。さらに、ALU50は、従来のバイト
のスワップ演算を実行し、これによって、前記バス上で
伝送される最下位のバイトと最上位のバイトをスワップ
することができ、その結果がライン162を介してマル
チプレクサ164に出力される。XバスとYバスは、図
7に示すように、回路152,154,156,158
に接続される。
【0108】加算器/減算器152、回路154,15
6,158、シフト出力及びスワップ機能出力の各々の
出力は16ビットの6入力対1の“演算結果”のマルチ
プレクサ164に出力される。復号化される命令に依存
して、その適正な演算結果はデスティネーションバスZ
に出力される。
【0109】加算器/減算器152は、Xバスから16
ビットのデータを受信することに加えて、また、Yバス
上を順方向に伝送される情報、又はマルチプレクサ15
0への命令復号入力に依存して、命令それ自身内の情報
を受信する。
【0110】ALU50はさらに、CPUフラグ発生回
路166を備える。CPUフラグ回路168は、回路1
66内の少なくとも1個のフラグレジスタに対してロー
ドするためのゼロオーバーフロー信号、符号信号及びキ
ャリー信号を発生する。このCPUフラグを、加算器/
減算器152によって決定される対応する状態に依存し
てセットされるべきフラグを発生させる、複数の命令に
よって発生されるキャリーイネーブル信号、ゼロイネー
ブル信号、及びオーバーフローイネーブル信号を復号化
する命令復号化回路60からセットするようにしてもよ
い。当該フラグをまた、フラグ回路166に入力される
デスティネーション(又は演算結果)バスZの内容に基
づいてセットするようにしてもよい。例えば、フラグは
広い範囲の条件に基づいて条件付きの分岐演算をトリガ
するために用いられる。
【0111】図8、図9及び図10は、図4において図
示された画素プロット回路(52,54,56及び5
8)をさらに詳細に示す。この回路は、示されたX座標
とY座標とを取り出し、COLORコマンドによってロ
ードされるカラーレジスタ54の内容によって示された
色におけるこれらのスクリーン座標をプロットするPL
OTコマンドを実行する。
【0112】上述のように、スーパーNESはキャラク
タでマッピングされた表示スクリーンを利用する。プロ
ットのハードウエアは、画素座標のアドレスデータを、
キャラクタでマッピングされたアドレスデータに変換す
るように動作する。
【0113】スーパーNESのキャラクタはビット平面
で定義される。複数のキャラクタは4色、16色又は2
56色を定義するための2ビット平面、4ビット平面又
は8ビット平面のいずれかを有することができる。キャ
ラクタの定義の各バイトはキャラクタの1画素列の1ビ
ット平面を備える。複数の画素は左から右に、ハイのビ
ットからローのビットに向かって定義される。256色
のカラーモードの動作のために、更新することが必要で
ある8個のRAMロケーションが存在する。
【0114】画素プロットのハードウエアは、表示すべ
きある特定のバイトにおけるすべてのバイトは最後に更
新されることが必要であるので、そのようなすべてのバ
イトを格納するカラーマトリックス回路206を含むロ
ーカルバッファのメカニズムを備える。ビット平面カウ
ンタ208はカラーマトリックス回路206に接続され
る。画素座標は、XバスとYバスからそれぞれプロット
Xレジスタ202とプロットYレジスタ204にロード
される。この好ましい実施例において、ジェネラルレジ
スタR1及びR2は図8に図示されたプロットXレジス
タ202とプロットYレジスタ204として用いられ
る。これらのレジスタは、PLOTコマンドによって示
されるようにプロットされるべき画素のX座標とY座標
を受信する。
【0115】プロットXレジスタ202とプロットYレ
ジスタ204は、アドレス上で2個の位置のバレルシフ
ト回路214にデータを出力する、全加算器と半加算器
とをベースにしたキャラクタアドレス計算回路に接続さ
れ、2個の位置のバレルシフト回路214は、プロット
アドレスレジスタ216とアドレスコンパレータ218
とに接続される。プロットXレジスタ202の最上位3
ビットはデマルチプレクサ212に接続され、このデマ
ルチプレクサ212はビットペンディングレジスタ21
0に接続される。
【0116】図9に図示されたプロットコントローラ2
00は、後述する他の制御信号と同様にプロット画素
(PLOT)コマンド又は読み出し(READ)画素
(RPIX)コマンドが復号化されたことを示す信号を
受信する。プロットコントローラ200は後述する方法
で用いられる複数のプロット回路制御信号を発生する。
【0117】上述のように、プロットコントローラ20
0は画素プロットのハードウエア52内で利用される制
御信号を発生する。図9に図示されるように、プロット
コントローラ200は、ビットペンディングレジスタ2
10の出力がアンドゲート201を介してプロットコン
トローラ200に接続されるビットペンディングレジス
タ210からの出力を受信する。もしビットペンディン
グレジスタ210のすべての8ビットがセットされたな
らば、プロットコントローラ200は、読み出しサイク
ルをスキップしてもよいこと、並びにカラーマトリック
ス回路206における情報をRAMに書き込んでもよい
ことが知らされる。
【0118】プロットコントローラ200はまた、その
処理を初期化するためのPLOTコマンドに応答して動
作する。プロットコントローラ200はまた、新しい情
報がRAMに出力するカラーマトリックス回路206に
書き込まれないことを除いて、仮想的に同一の動作を初
期化するためのREAD画素コマンドRPIXに対して
応答する。上述のように、READ画素コマンドは、も
しスクリーン上のある特定の画素の色を知る必要がある
ならば実行され、また、カラーマトリックス回路206
において存在している情報を大量に出力させるために用
いられる。
【0119】プロットコントローラ200はまた、RA
Mのアクセスが完了したことを示すRAMダン制御信号
RAMDONEを受信する。上述のようにRAMダン信
号はまた、カラーマトリックス回路206におけるビッ
ト平面を識別するビット平面カウンタ208をインクリ
メントするために用いられる。プロットコントローラ2
00はまた、アドレスの一致が検出されかつカラーマト
リックス回路206の内容をRAMに書き込むことが不
要であることを示し、これによって、現在のカラーマト
リックス回路206の内容に関して更新を続けるべきで
あることを示すPLEQ信号をアドレスコンパレータ2
18から受信する。プロットコントローラ200はま
た、どのように多くのバイトを読み出しかつ書き込む必
要があるということに関してプロットコントローラ20
0に知らせるスクリーンモードSCR.MD制御信号を
受信する。
【0120】プロットコントローラ200は、図8と図
10とを参照して示されるダンプ制御信号DUMPを発
生し、この信号によって、その第2のバッファセクショ
ンにおいてバッファされるべきカラーマトリックス回路
206の内容を生じさせる。プロットコントローラ20
0はさらに、クリアビットペンディングレジスタ信号C
LRPNDと、ロードビットペンディングレジスタ制御
信号LDPNDを発生し、これらの信号をビットペンデ
ィングレジスタ210に出力する。さらに、プロットコ
ントローラ200は、図10において図示されたカラー
マトリックスの素子と関連するLDPIX信号とBPR
制御信号とを発生する。
【0121】PLOTコマンドが命令デコーダによって
復号化され、プロットコントローラ200に入力される
PLOT信号は、画素プロットのハードウエアがビジー
ではないと推定するロードペンディング信号LDPND
の発生を初期化する。LDPND信号は、ビットペンデ
ィングレジスタ210に入力され、デマルチプレクサ2
12からビットペンディングレジスタ210へのデータ
のロードを可能にする。クリアペンディング信号CLR
PNDは、ペンディングのデータがRAMに書き込まれ
たことを示すRAMダン信号RAMDONEに応答して
発生される。その後、ビットペンディングレジスタ21
0は次の画素のプロット情報のために待機状態となる。
【0122】上述したような、プロットコントローラ2
00によって受信された複数の信号と、種々のアドレス
及びデータ信号と、他の関係する制御信号と、プロット
コントローラ200によって発生された出力制御信号と
の間の関係を示すタイミングチャートを図11に示す。
ここで、好ましいアドレス値とデータ値などが図示の目
的のみのために図示されている。
【0123】プロットのハードウエア52は次のように
動作する。プロットコントローラ200はプロットのハ
ードウエア52がビジーでないことを決定し、図4に図
示されたカラーレジスタ54の内容が8×8のカラーマ
トリックス回路206の水平方向の列(ロウ)にロード
される。カラーマトリックス回路206は行(ロウ)毎
にロード(書き込み)を行い、列(コラム)毎に読み出
し動作を行う。カラーレジスタ54の内容はCOLOR
コマンドによって更新される。カラーレジスタ54は、
任意の連続するPLOTコマンドがカラーデータとして
カラーマトリックス回路206にロードされるときに通
過するレジスタである。
【0124】カラーレジスタのビットがロードされるカ
ラーマトリックス回路206における垂直方向の位置
は、プロットXレジスタ202に格納された最下位3ビ
ットによって決定される。従って、プロットを行うアド
レスの最下位3ビットは、カラーマトリックス回路20
6において更新されるべき列のビットを定義する。
【0125】ビットペンディングレジスタ210は、ス
クリーンキャラクタのセクションのどの特定のビットが
更新中であるかを記録するために用いられる。レジスタ
210はスクリーンの関係する部分に書き込まれたビッ
トを示す16個のレジスタフラグを備える。ビットペン
ディングレジスタ210は、信号LDPNDに応答して
ロードし、プロットコントローラ210によって発生さ
れた信号CLRPNDによってクリアされる。
【0126】もし続くプロットコマンドが同一の領域に
おけるスクリーンマップを更新するために実行されるべ
きならば、ある与えられたビットのための処理が8×8
カラーマトリックス回路206にロードされる1画素に
対応する付加的なカラーデータとともに繰り返される。
次いで、もう1つのビットが、プロットXレジスタ20
2に格納されたプロットアドレスの最下位ビットを介し
てビットペンディングレジスタ210にセットされる。
ある特定のビットはプロットXレジスタ202に接続さ
れる3対8のデマルチプレクサ212を介してビットペ
ンディングレジスタ210にロードされる。もし更新す
べき画素が水平方向で8画素以上離れ、もしくはもしそ
の画素がある異なった垂直方向の位置を占有するなら
ば、マトリックス回路206に書き込まれたデータはR
AM6(又は8)に読み出される必要がある。カラーマ
トリックス回路206はその後、新しいカラーデータを
受信するために待機状態となる。RAMに書き込むこと
を要求する続くプロットコマンドが受信されるまで、カ
ラーマトリックス回路206の現在の内容が画素プロッ
タのハードウエア内で、すなわちカラーマトリックス回
路206内でバッファされる。
【0127】カラーマトリックス回路206からのデー
タはRAM6又は8に書き込まれるとき、アドレス変換
の計算が、図8に図示されたタイプの論理ゲートの全加
算器及び半加算器回路を用いることによって、X座標と
Y座標をRAMアドレスに変換するために行われる。実
際のアドレス計算は、以下に示す説明及び好ましいコー
ドに従って行われる。そのような計算は、4色、16色
又は256色のカラーモードが使用中であるかに依存し
て変化するであろう。
【0128】これらの256色のキャラクタは16バイ
トからなる4個のブロックを有し、それぞれは、全体の
64バイトに対してビット平面の対を定義する。
【0129】ビットマップは、単一のキャラクタを要求
されたスクリーンエリアの各々の位置上に載置すること
によって構築される。スーパーNESと共同してプロッ
トするとき、一番良い方法は、コラムにおけるキャラク
タを例えば次のように組織化することである。
【0130】例えば(128画素の高さのスクリーン) 文字のナンバー
【表10】 0 16 32 ....... 1 17 33 ... 2 18 24 ... . . . . . . 15 31 47
【0131】スーパーNESは256キャラクタに限定
されず、それ故、ビットマップの大きさは主としてメモ
リ及びDMA転送時間によって限定される。マリオチッ
プは例えば、128画素及び160画素の高さのスクリ
ーン上にプロットすることができる。最大のスクリーン
の幅は、32キャラクタ又は256画素である。
【0132】次のアルゴリズムは、画素の制御がコラム
で組織化された仮想的なビットマップを用いて制御され
る。
【0133】まず最初にX座標の最下位3ビットからす
べてのビット平面のための画素マスクを次の表11に示
すように計算する。
【0134】
【表11】
【0135】次いで、コラムの下方向に移動した複数の
キャラクタを与えるために、取り除かれた低い位の3ビ
ットを有するY座標を用いてコラムの下方向のオフセッ
ト値を計算し、次いで、それにキャラクタの大きさを乗
算する。
【0136】
【表12】 スクリーンの色の数 バイトにおける文字の大きさ ────────────────────────── 4 16 16 32 256 64
【0137】次いで、取り除かれ、コラムの大きさで乗
算された低い位の3ビットを有するX座標からキャラク
タのコラムの上部のオフセット値を計算する。コラムの
大きさはキャラクタの大きさによって乗算されたコラム
におけるキャラクタの数である。
【0138】
【表13】 通常のコラムの大きさ 文字がハイ 16 20 4 256バイト 320バイト 色 16 512バイト 640 256 1024バイト 1028バイト
【0139】Y座標の低い位の3ビットはキャラクタを
下方向に移動させるバイトのオフセット値を与える。現
在のビットマップに対するすべてのオフセット値にポイ
ンタを加算した和は、画素の第1のビット平面を保持す
るバイトのアドレスを与える。1バイトのデータが次の
複数のビット平面上に交互に存在し、最後のビット平面
から15バイトのデータが存在する。そのとき、画素ビ
ットは画素マスクを用いてセットされ又はクリアされる
ことが可能である。各ビット平面におけるビットは画素
のために要求されるカラーレジスタ54に格納されるカ
ラーの数における対応するビットの状態にセットされ又
はクリアされる。
【0140】
【表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
【0141】図8に戻ってさらに詳細に説明すると、プ
ロットする画素をスクリーン上で定義するX座標とY座
標は、プロットXレジスタ202とプロットYレジスタ
204にロードされる。これらのレジスタは、実際に
は、レジスタブロック76内のR1,R2レジスタであ
ってもよい。プロットXレジスタ202にロードされる
プロット座標の下3桁は、特定されたX,Y座標によっ
て、ビットプレーンバイト内のどのビットに書き込まれ
るかを決める。アキュミュレータR0の内容は、プロッ
トXレジスタ202の下3桁によって選択されるカラー
マトリックス回路206の行にロードされる。
【0142】プロットXレジスタ202が0であるなら
ば、最下位ビットが、画素を定義する8個のビットの各
々において更新される。プロットXレジスタ202が0
であるとき、3対8デマルチプレクサ212は、最下位
ビットをセットし、ビットペンディングレジスタ210
に論理”1”をセットする。ビットペンディングレジス
タ210は、ビットペンディングレジスタ210の対応
するビットの修正が不必要であることを示すためにRA
Mから書き出す必要がないギャップを示すために、RA
Mコントローラ88によって用いられる。ビットペンデ
ィングレジスタ210は、新しいデータが必要でないな
らば、RAMから新データを上書きすることを防止する
画素マスクバッファとして動作する。この機能を果たす
ために、ビットペンディングレジスタ210の内容は、
図8に示されるように、カラーマトリックス回路206
に入力される。
【0143】もしビットペンディングレジスタ210が
0であるならば、その画素のスクリーンアドレスが計算
され、プロットアドレスレジスタ216にロードされ、
そして、バイト内の画素位置が、ビットペンディングレ
ジスタ210内の同じビットをセットするために使用さ
れる。もしビットペンディングレジスタ210が0でな
いならば、BUSYフラグがセットされる。もし新しく
計算されたアドレスがプロットアドレスレジスタ216
の内容と同じであれば、その新しい画素ビット位置がビ
ットペンディングレジスタ210内でセットされ、BU
SYフラグがリセットされる。もし新しく計算されたア
ドレスがプロットアドレスレジスタ216の内容と異な
れば、以下のステップが実行される。
【0144】ステップ1 もしビットペンディングレ
ジスタ210がFFhであれば、直接ステップ3に進
む。 ステップ2 RAMから(プロットアドレス+スクリ
ーンベース)でバイトを読み、テンポラリデータバッフ
ァであるプロットバッファに書く。 ステップ3 もしビットペンディングレジスタ210
によってマスクされたデータバッファ内のビットがすべ
てプロットカラーレジスタアレイの第0行に等しけれ
ば、すぐにステップ5に進む。 ステップ4 プロットカラーレジスタアレイの第0行
を、ビットペンディングレジスタによってイネーブルと
されるプロットバッファの全ビットに書く。データバッ
ファをRAMのプロットアドレスに書き戻す。 ステップ5 (プロットアドレス+1)の同じ命令と
プロットカラーレジスタアレイの第1行を実行する。 ステップ6 もし8または256カラーモードであれ
ば、(プロットアドレス+16)の同じ命令とプロット
カラーレジスタアレイの第2行を実行する。 これを、すべてのカラービットが更新されるまで続け
る。
【0145】プロットXレジスタ202とプロットYレ
ジスタ204との内容は、図8に示される全加算回路F
Aと半加算回路HAによって処理される。全加算回路F
Aと半加算回路HAおよび関連する論理回路は、図8の
ブロック図では、簡単に示されている。アドレスの計算
は次のように実行できる。
【0146】
【数1】 アドレス=scr base+2*y[0..2]+ (y[3..7]+x[3..7]*16+((x[3..7]*4) && scr ht)*char siz この中間の項は次の通りである。
【0147】
【数2】 これにより10ビットの部分的結果px[0..9]
を、たとえば6個の全加算回路FAと4個の半加算回路
HAを用いて発生する。
【0148】この結果は、選択されたスクリーンモード
の正確な精度にこの部分的結果をシフトするために、c
har size値によって制御される12×3マルチ
プレクサに供給される。これは、y下位ビットy
[0..2]と結合されて、16ビットのスクリーンア
ドレスを作る。これは、次に、スクリーンを1k境界に
位置するためのscreen base値scr
[9..22]に加えられて、アドレス計算を終わる。
このアドレスは、次に、2位置バレルシフト回路214
に入力され、2位置バレルシフト回路214は、4、1
6または256のカラー分解能のどれが選択されるかに
対応して、アドレス情報入力を1、2または4で乗算す
るように動作する。シフト回路214の出力は、RAM
アドレスのためのバッファ容量として動作するプロット
アドレスレジスタ216に入力される。プロット命令が
実行された後でレジスタR1(プロットXレジスタ),
R2(プロットYレジスタ)の内容が変化する可能性が
あるので、このアドレスは、バッファされなければなら
ない。
【0149】アドレスコンパレータ218は、シフト回
路214からの出力としてのプロットハードウエアによ
って決定される新しいアドレスを、プロットアドレスレ
ジスタ216に格納された古いアドレスと比較する。も
しアドレスが異なれば、次に、アドレスは、RAMに書
き出されねばならない。もしアドレスレジスタ216に
格納されたプロットアドレスがシフト回路214の出力
に等しければ、アドレスコンパレータ218は、(プロ
ットコントローラ200に入力される)コントロール信
号PLEQを発生する。カラーマトリックス206に戻
って説明を続けると、先に述べたように、カラーマトリ
ックス206は、行で読み出される。ビットプレーンカ
ウンタ208は、カラーマトリックス206に結合さ
れ、どの行が読み出されるかを決定する。ビットプレー
ンカウンタ208は、RAMコントローラ88と結合さ
れ、RAMの動作が完了すると、RAMコントローラ8
8は、ビットプレーンカウンタ208をインクリメント
する信号を発生する。
【0150】カラーマトリックス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の非反転出力からのフィードバックル
ープが、前に格納したデータの格納の続行を防止する。
【0151】データがRAMから読まれてデータギャッ
プ内を満たすとき、コントロール信号BPRは、ゲート
222に0入力を出力し、LDRAM信号は0状態にな
る。この条件の下で、RAMD入力からのデータ入力
は、ゲート回路226を通ってラッチ228に進む。ラ
ッチ228内のデータは、次に、図8に示すように、R
AMコントローラ88を介してRAMデータバスに読み
出すために、利用可能になる。他のそのような素子が結
合されて、X,Y画素同定によって示される画素データ
を、スーパーNES文字フォーマットにコンパチブルな
キャラクタデータに変換する。図12に詳細に示される
RAMコントローラ88は、1個または複数個のゲーム
カートリッジRAMのアクセスに関連した種々のコント
ロール信号を発生する。カートリッジRAMは、スーパ
ーNES,マリオチップ内のプロットハードウエアおよ
び実行されるマリオチッププログラムからのデータフェ
ッチの間で共用されねばならない。RAMコントローラ
88は、適当なアドレスがRAMアドレスバスに適当な
時間に送られることを保証するのに用いられる。RAM
アクセス信号の適当な時間での発生は、部分的には、図
14にさらに詳細に示されるアービトレーション論理回
路310によって制御される。
【0152】RAMコントローラ88は、RAM Dデ
ータバスを介してRAMデータピンからの入力と命令バ
スとの間でマルチプレックスするマルチプレクサ304
を有する。命令バスまたはRAMデータバスは、命令デ
コーダ60から入力された信号に応答して選択され、適
当なRAM出力が目的のZバスにおかれる。また、RA
Mコントローラ88は、命令デコーダ60から受け取ら
れた信号に応答して16ビットXバスまたは16ビット
Yバスから入力されるRAMへのデータライトのために
備えられる16ビットデータレジスタ300を有する。
また、RAMコントローラ88は、20ビットのアドレ
スマルチプレクサ308を有する。マルチプレクサ30
8は、アービトレーション回路310から入力された制
御信号に応答してアドレス入力を選択する。この制御信
号は、アービトレーション回路310において発生され
るコードアクノレッジ信号CACK、データアクノレッ
ジ信号DACKまたはプロットアクノレッジ信号PAC
Kから得られる。スーパーNESアドレスバスHAから
のアドレス信号は、マルチプレクサ308によって受け
取られ、マリオ「所有者」ステータスビットが0にセッ
トされるときにはいつでも、メモリタイミング信号発生
器312を介して、RAMアドレスバスに出力される。
アービトレーション回路310は、RAMリフレッシュ
制御信号RFSHが入力されるアービトレーション回路
310に入力される信号RANを介して、マリオチップ
RAMの所有権のステータスについて知らされる。RA
N信号とRFSH信号は、OR演算により図14に示す
SUSPEND信号を作る。
【0153】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の中にあってもよ
い。
【0154】出力されるべきマルチプレクサ308の入
力信号は、次のように選択される。もしコードアクノレ
ッジ信号CACKが発生されると、コードバンク+プロ
グラムカウンタPC入力が選択される。もしデータアク
ノレッジ信号DACKが発生されると、データバンク+
マルチプレクサレジスタ入力が選択される。もしプロッ
トアクノレッジ信号PACKがあれば、プロットアドレ
スが選択される。最後に、もしCACK,DACK,P
ACK信号のいずれもなければ、ホスト(たとえばSN
ES)アドレス入力が選択される。マルチプレクサ30
8の20ビットのアドレス出力がメモリタイミング信号
発生器312に入力され、この発生器312はこれらの
信号を適当な時間にRAM6、8に入力する。メモリタ
イミング信号発生器312は、アービトレーションブロ
ック310の中のグレーカウンタからの出力を受け取
る。メモリタイミング信号発生器312は、グレーカウ
ンタからの出力をデコードし、RAMアドレスバスRA
MAを介して図1に示すRAM6、8をアドレスするた
めの出力信号を発生する。あるいは、タイミング信号発
生器312は、図1に示すように、RAM6、8をアク
セスするための制御信号(行アドレスストローブ信号R
AS,列アドレスストローブ信号CAS、ライトイネー
ブル信号WEを含む)を発生する。
【0155】メモリタイミング信号発生器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に示
される。
【0156】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を受け取る。
【0157】アービトレーション論理回路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は、キャッシュ
リクエストラッチまたはデータリクエストラッチがセッ
トされていればセットされない。
【0158】ラッチ337がキャッシュリクエスト信号
によってセットされるとすぐに、そして、図14で論理
回路によってキャッシュRAM94(またはRAM)が
利用可能であることが確立されるとすぐに、キャッシュ
アクノレッジ信号CACKが発生される。データアクノ
レッジ信号DACKとプロットリクエストアクノレッジ
信号PACKは、図14の論理回路がRAMがビジーで
ないと決定したならば、データリクエスト信号とプロッ
トリクエスト信号をアクノレッジするために同様に発生
される。ラッチ337,339,341の非反転端子が
ゲート回路343に結合され、ゲート回路343はNO
Rゲート344を介してRAMアクセスのためのタイミ
ング信号を発生するグレイカウンタ345をリセットす
る。当業者にわかるように、グレイカウンタは、一時に
ただ1つの出力ビットだけが変化するカウンタであり、
RAMアクセス時間を制御するために使用できる。
【0159】タイミング信号発生器312によって発生
されるDONE信号は、NORゲート344とラッチ3
37,339,341によって受け取られる。DONE
信号はRAMサイクルが終了したことを示す。DONE
信号の発生は、ラッチされているリクエストをクリアす
るために、アービトレーション論理回路310内の適当
なラッチのクリアをトリガする。DONE信号は、ま
た、RAMアクセスが終了したことを示すキャッシュコ
ントローラ68,プロットコントローラ52などの発信
源回路に結合される。本発明の別実施例においては、マ
リオチップは2重クロックシステムを使用できる。従っ
て、マリオチッププロセッサは、同じクロック、たとえ
ば前記のRAMコントローラで駆動される必要はない。
たとえば、RAMコントローラ88は、スーパーNES
から入力された21MHzクロック信号によって駆動さ
れ、マリオチップは他の可変周波数のクロックで駆動さ
れる。このように、マリオチッププロセッサは、21M
Hzのクロック速度で動作することに限定されない。
【0160】本実施例のマリオチップは、2重クロック
インターフェース機能を実行するために、図15に示さ
れるような非同期ステートマシン制御回路を用いてもよ
い。図15の回路は、他のクロック速度で動作するメモ
リコントローラと異なったクロックシステムが備えられ
ていれば、マリオチップとのインターフェースのために
使用できる。図15に示す再同期化回路は、クロック信
号CKとは同期しない入力クロック信号DINを受け取
る。再同期化回路は、信号DINがより高くてもより低
くても、DINからクロック信号CKに同期する信号を
発生する。図16に示すように、再同期化回路は、信号
DINに応答して状態010,110,100,10
1,111を通って初期状態010に戻る。図15の再
同期化回路は、ROMコントローラ104とRAMコン
トローラ104のような2重クロック信号を入力するど
んなインターフェースでも使用できる。再同期化回路
は、入力信号DINに応答してアイドル状態すなわちリ
セット状態”010”からスイッチして、ゲートFによ
ってセットされるラッチAにより”110”状態を生成
する。再同期化クロックCKが低レベルになるとすぐに
(またはすでに真値であるかも知れない)、ラッチBは
ゲートEによってリセットされ状態”100”を生成す
る。クロックが再び高レベルになると、ラッチCはセッ
トされて、ゲートAによって状態”101”を生成す
る。
【0161】ラッチCは、再同期化回路からの出力Qを
発生する。入力信号が再び低レベルになると、ラッチB
はゲートCによって再びセットされて状態”100”を
生成する。クロックCKが状態”111”に達した後に
再び低レベルになると、ラッチAはゲートGによってリ
セットされて状態”011”を生成する。その後、クロ
ックCKは再び高レベルになり、ラッチCは、ゲートB
によりリセットされて状態マシンをそのアイドル状態に
戻す。次に、出力は、アクティブでなくなる。
【0162】図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バイトセグメントの部分にまで満
たされる。
【0163】図5に示されるキャッシュコントローラ6
8はCACHE信号を発生し、CACHE信号はキャッ
シュローダに入力され、リクエストされた命令が現在キ
ャッシュRAM94にないことを示す。従って、この命
令はROMから取込まれねばならない。コードバンク信
号はアクセスされるアドレスの上位3ビットを同定し、
プログラムROMまたはRAMがアクセスされるか否か
を示す。また、キャッシュローダ400は図示しないカ
ウンタを備え、このカウンタは、プログラム実行中にプ
ログラムカウンタPCの下位ビットに対応するカウント
を保持する。このカウンタは、キャッシュローダ400
のPC入力を介してロードされる。また、ROMコント
ローラ104内のキャッシュロード回路400は、WA
IT制御信号とGO制御信号を入力する。これらの信号
は、マリオプロセッサが何かの理由でWAIT状態に保
持されていず、マリオチップが”go”モードまたは”
running”モード状態にあることを示す。そのよ
うな状況で、キャッシュロード回路400は、図17に
示すNORゲート408に接続されるCODEFETC
H制御信号を発生する。次に、NORゲート408は、
ROMタイミングカウンタ406のクリア入力に接続さ
れる。キャッシュロード回路400がコードフェッチ信
号CODE FETCHを発生するとき、ROMコント
ローラ104内の論理回路は、コードフェッチをより高
い優先度で開始する。そこで、このコードフェッチとし
てのデータフェッチはデータフェッチの前に開始されね
ばならない。図14に示すような優先性論理回路を備え
たアービトレーション回路は、データフェッチよりも高
い優先性が与えられる発生された信号をイネーブルにす
るために使用される。
【0164】クリア信号が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信号が発生される。
【0165】図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の内容から発
生される。レジスタR14のアクセスにより、データフ
ェッチラッチ404は、DATAFETCH信号を発生
し、DATAFETCH信号は、マルチプレクサ414
にR14入力(そして、スーパーNESデータバスHD
からロードされるデータバンクレジスタ416の内容)
を選択させるための制御入力として用いられる。データ
バンクレジスタ416は、R14フェッチ動作に関連す
るデータバンクの上位ビットを有する。DATA FE
TCH信号は、さらにゲート408に入力されて、RO
Mタイミングカウンタ406によるカウントを開始させ
る。そして、ROMタイミングカウンタ406は、ゲー
ト410を介してROMレディ信号ROMRDYを発生
する。ROMRDY信号が発生されると、データがRO
MデータバスROM D[7:0]から利用できる。
【0166】また、アドレスマルチプレクサ414は、
スーパーNESアドレスバスHAからROMアドレスを
受け取る。スーパーNESアドレスバスは、マルチプレ
クサ414の制御入力に接続される信号”ROM”の状
態に依存して選択される。”ROM”制御信号は、マリ
オROMコントローラにスーパーNESがROMアドレ
スバスの制御をしていることを知らせる。ジャンプ命令
がデコードされたのちに、アドレスマルチプレクサ41
4は、プログラムカウンタとキャッシュローダ400内
のカウンタによって発生された下位4ビットとの内容を
入力される。これにより、キャッシュセグメントが、デ
コードされるジャンプの前にロードされた16ビットの
残り部分とともにロードされることを可能にする。マル
チプレクサ422は、ROMコントローラ104の中に
ROMデータピンROMDからマリオチップのデスティ
ネーションバスZへのデータバスを与える。ラッチ40
4によって発生されたDATAFETCH信号とROM
タイミングカウンタ406によって発生されたROMR
DY信号とは、ゲート418に入力されてROMバッフ
ァ420のロードを可能にする。ROMDROMデータ
バス[7..0]からのROMデータバスは、ROMバ
ッファ420にロードされる。
【0167】マルチプレクサ422は、命令コード(た
とえばレジスタR14のアクセスによってトリガされる
自動的データフェッチであるGET B)のデコードに
応答して入力を選択する。もしコードフェッチ動作がデ
コードされると、ROMコントローラ104は、図20
に示されるように、命令をマリオチップ内の命令バスに
入力する。もしGET B命令動作がデコードされる
と、レジスタ420に格納されたバッファされたバイト
はZバスに出力される。GET B命令は、図17に示
すマルチプレクサ422への対応する入力を介して図示
されるように、Xバスのデータを含む。そこで、デステ
ィネーションのZバスに入力されるデータは、マリオジ
ェネラルレジスタ76の1個にロードできる。キャッシ
ュコントローラ68は、図18にさらに詳細に示され
る。キャッシュコントローラ68はタグラッチ506を
備える。ラッチ506は、たとえば、命令がキャッシュ
RAM94(キャッシュコントローラの具体例として図
示される)に格納されるかを示す64のラッチである。
ラッチ506の64のフラグの各々は、キャッシュRA
M94に格納される16ビットの情報に対応する。キャ
ッシュRAM94には、命令がロードされ、同時に、命
令がROMまたはRAMから実行される。ジャンプ命令
が実行されると、先に説明したように、RAM94に
は、図17に示されるROMコントローラ104ととも
に説明されたキャッシュローダ400を介して16バイ
トセグメントの残りのバイトがロードされる。これらの
残りのバイトがロードされるまで、全16バイトセグメ
ントに対しタグラッチ506を介してロード完了を示す
フラグが立てられることはない。
【0168】ゲート回路510について説明すると、プ
ログラムカウンタが0から15までカウントしたとき、
14ビット減算器502は反転された範囲外信号を出力
し、ROMコントローラがROMデータレディ信号RO
MRDY(1バイトが出力がレディであることを示す)
を出力し、ゲート回路510はデマルチプレクサ504
によてアドレスされた位置でタグラッチ506をセット
する。キャッシュ命令がデコードされるとき、以後の命
令がキャッシュRAMメモリ94から実行されることを
示す制御信号がバスに出力される。バス501上の制御
信号はキャッシュベースレジスタ500のロード入力に
接続され、キャッシュベースレジスタ500にプログラ
ムカウンタPCの上位13ビットをロードさせる。同時
に、図18に示されるように、タグラッチがクリアされ
る。キャッシュベースレジスタ500の出力とプログラ
ムカウンタび上位ビット(たとえば3〜15ビット)
は、減算器502に入力され、プログラムカウンタPC
からのアドレス入力がキャッシュRAM94の範囲内に
あるか否かを決定する。減算器502は、たとえばその
下位6ビットをキャッシュRAMアドレスの上位ビット
として出力する。また、下位3ビットのアドレスがプロ
グラムカウンタPCから接続される。
【0169】範囲外信号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の中に見いだされないために外部のフェッチが要求
されることを示す範囲外信号である。
【0170】図19は、図4に示されるALUコントロ
ーラ/命令デコーダ60のブロック図である。図19に
示されるように、ALUコントローラ/命令デコーダ6
0は、キャッシュRAM94,ROMコントローラ10
4およびRAMコントローラ88からの命令を受け取
る。これらのマリオチップ部品は、ALUコントローラ
/命令デコーダ60の一部ではなく、図19に図示のた
めだけに示される。マルチプレクサ525は、キャッシ
ュRAM94,ROMコントローラ104またはRAM
コントローラ88からの命令出力を選択し、選択された
命令をパイプラインラッチ527に入力する。マルチプ
レクサ525による命令に基づいたRAMとROMの間
の選択は、コードバンクレジスタの所定のビット、たと
えばビット4、の状態に依存する。こうして、コードバ
ンクレジスタにロードされたアドレス情報に依存して、
ROMまたはRAMからの命令がデコードされる。他の
方法では、マルチプレクサ525は、キャッシュコント
ローラ68からの制御信号CACHE CTLの状態に
依存してキャッシュRAM94から命令を選択する。こ
の制御情報CACHE CTLは、実行されるべき命令
がキャッシュRAM94の範囲内にあること、および適
当なタグビットがキャッシュコントローラ68に関連し
て説明されたようにセットされたことを示す。
【0171】パイプラインラッチ527は、命令がRO
MまたはRAMによってフェッチされたときROMコン
トローラ104またはRAMコントローラ88によって
発生されるプログラムカウンタイネーブル信号PCEN
*/IL*/IHによりイネーブルにされたとき、マル
チプレクサ525から8ビット命令を受け取る。RAM
またはROMから命令をフェッチするのに1以上の処理
サイクルを要するので、命令デコード動作はROMまた
はRAMコントローラ104、88によって発生される
プログラムカウンタイネーブル信号PCENによってト
リガされる。他方、もし命令がキャッシュRAM94以
外から実行されたなら、プログラムカウンタイネーブル
信号PCENはいつでもアクティブであり、命令実行
は、プロセッサクロック速度のままで行われる。ROM
10のアクセス時間は、キャッシュRAMまたはカート
リッジRAMのアクセス時間よりずっと遅いので、PC
EN信号は対応するキャッシュRAM,ダイナミックR
AMまたはスタッティックRAMよりもROMアクセス
のためのより低周波数の間隔で発生されねばならない。
【0172】パイプラインラッチ527に一時的に格納
された命令は、ゲート回路537,539,541で図
式的に表されるような通常の命令デコード回路に出力さ
れ、動作コード(op code)1,2,…,Nを示
す信号を発生する。また、パイプラインラッチ527に
一時的に格納された命令は、ルックアヘッド論理回路5
51に入力される。ルックアヘッド論理回路551は、
マリオチップレジスタブロック76内の適当なレジスタ
を選択するための動作コードの予備的デコードの指示を
与えるために役立つ。したがって、動作コードのデコー
ドの前に実行速度を最適化するためにアクセスが要求さ
れたレジスタは、命令によって要求されるデータの高速
アクセスを可能にするために早く決定される。ルックア
ヘッド論理回路551は、命令動作コードビットと種々
のプログラムデコード制御フラグとに応答する。命令デ
コード回路60はプログラム制御フラグディテクタ54
3を備え、この回路543は、前にデコードされた動作
コードに応答して、前に説明したように、対応するプリ
フィックス命令がデコードされたことを示すALT1,
ALT2信号を発生する。また、後に説明するように、
関連するALT 1 PRE信号はフラグ検出回路54
3によって発生される。さらに、IL,IH信号が、中
間データを要求する命令がデコードされたことを示すた
めに発生される。(ここで、LとHは、下位バイトと上
位バイトを示す。)このIH,ILフラグは、動作コー
ドとしてデコードされたコードからイミディエイトコー
ド関連命令をあらかじめ除くために動作する。したがっ
て、否IL(/IL)信号と否IH(/IH)信号は、
パイプラインラッチ527をイネーブルにするために要
求される。前に説明したように、ALT 1信号とAL
T2信号は、続いて発生される動作コードを修正するた
めに用いられ、これらの信号の前記の説明に対応して、
たとえば動作コード出力を修正するためのゲート回路5
41のようなデコード論理素子537,539,541
などに入力される。
【0173】ルックアヘッド論理回路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などに入力する。図19に図式的に示され
るルックアヘッド論理回路は、4個のレジスタ選択制御
ビットXSEL0,XSEL1,XSEL2,XSEL
3の発生法を示す。これらの4制御ビットは、次に、図
23にレジスタ制御論理素子76に関連して示されるマ
ルチプレクサ620,622に入力される。レジスタ制
御論理素子76は、実行される命令によって使用される
Xバスに出力される16個のレジスタの一つの内容を選
択する。こうして、パイプラインラッチ527にロード
される前の命令は、レジスタ選択ビットXSEL−U0
を発生するルックアヘッドデコード論理素子529に入
力される。次に、このレジスタ選択ビットXSEL−U
0はラッチ535にラッチされ、出力XSEL0をして
出力される。ラッチ535は、プログラムカウンタ信号
PCENによってイネーブルにされる。同様に、論理素
子531は、信号XSEL1を出力するラッチ533に
ラッチされるレジスタ選択ビットXSEL−U1を発生
する。ALT 1 PRE信号は、ルックアヘッド論理
回路551において、種々のデコード論理素子529,
531などに接続され、レジスタ制御論理素子76によ
って選択される適当なレジスタを決めるために用いられ
る。たとえば、ルックアヘッド論理回路551において
示されるように、ALT 1PRE信号は、XSEL−
U1を発生する論理素子531に入力される信号の1つ
であり、信号XSEL1を出力するラッチ533にラッ
チされる。
【0174】図20は、ルックアヘッド論理回路551
の動作を示すためのタイミング信号の1例を示す。図2
0は、クロック信号CKとキャッシュRAMデータアク
セスに関連した命令動作コードの1例を示す。タイミン
グ信号は、また、パイプライン527がロードされたと
き、レジスタ選択信号が発生されたとき、および、レジ
スタからの情報が目的のZバスにロードされるときを示
す。図20に示すように、キャッシュデータRAM動作
コード(動作コード1)は、クロックパルスCKの立ち
上がりエッジの後のある時点で有効になる。動作コード
は、たとえば、第2のクロックパルスCKの立ち上がり
エッジまで、パイプラインラッチ527に格納され、こ
のときに、動作コード2がラッチ527にロードされ
る。命令デコーダ60は、図24に図式的に示される時
間内の1点でラッチ227から出力を受け取ったすぐ後
で命令のデコードを開始する。命令デコードの結果は、
先に説明したように、ALU50,キャッシュコントロ
ーラ68,プロットハードウエア52などのマリオチッ
プ部品への制御信号に結合される。図19に示されるル
ックアヘッド回路551は、動作コード2のデコードの
前の1時点で選択信号XSEL−Uを発生することによ
り、レジスタ選択デコード処理を開始する。XSEL−
U0信号は、命令のために要求されるデコードを命令サ
イクル内でできるだけ早くアクセス可能にし、できるだ
け早く適当なバスに入力するような時点でたとえばラッ
チ535により出力される。レジスタ制御論理回路78
の1部は、図21に示されるように、YバスとZバスに
関連したレジスタ選択信号を発生する。マルチプレクサ
604は、16のレジスタの中のどれがZバスから書か
れるかを選択する。マルチプレクサ606はどのレジス
タがYバスに出力するかを選択する。
【0175】マルチプレクサ604,606は、それぞ
れ、4ビットレジスタ600、602から入力を受け取
る。レジスタ600と602は、それぞれ、前記の”T
O”と”FROM”のプリフィックス命令(レジスタ6
00、602に命令バスの下位ビットを入力するように
動作する)のデコードによってイネーブルにされる。レ
ジスタ600,602は、前記の制御フラグをリセット
する命令に応答してクリアされる。マルチプレクサ60
4,606は、さらにレジスタブロック76内の種々の
レジスタから入力を受け取る。さらに、マルチプレクサ
604,606は、命令の目的すなわちソースレジスタ
を決める下位4ビットを含む命令を実行するために命令
バス上の下位ビットから入力を受け取る。さらに、スー
パーNESアドレスバスからの所定の下位ビットが、マ
ルチプレクサ604,606に接続される。マルチプレ
クサ604,606は、それぞれZバスとYバスに出力
するレジスタを選択する。
【0176】図23は、レジスタブロック76と、図5
にレジスタ制御論理回路78として具体化された別のレ
ジスタ選択制御論理回路を示す。FROMXレジスタ6
18は、FROM命令のデコードにおいて発生されるF
ROMSET信号によってセットされる。FROMSE
T信号を受け取ると、Yバスの内容がレジスタ618に
ロードされる。次に、レジスタ618にロードされたデ
ータは、次の命令実行に用いられるデータになる。レジ
スタ618の内容は、マルチプレクサ622の入力の1
つに入力される。また、マルチプレクサ622は、デフ
ォールトレジスタとして用いられるレジスタR0の内容
を1つの入力に受け取る。マルチプレクサ622の1つ
の入力は、マルチプレクサ620の出力である。マルチ
プレクサ620は、プログラムカウンタ(すなわちレジ
スタR15)の内容、MERGE命令を実行するのに用
いられるレジスタからの入力とレジスタR1(たとえば
プロット命令を実行するのに用いられる)からの入力を
受け取る。マルチプレクサ620は、図19に示される
ルックアヘッド論理回路551によって発生されたXS
EL2ビット,XSEL3ビットの状態に基づいてこれ
らの入力の中の1つを選択する。
【0177】マルチプレクサ622の他の入力は、Yバ
スの内容に接続され、Yバス上と同様にXバスに同じデ
ータを出力する。前に説明したように、マルチプレクサ
622の1つの入力は前記のFROM Xレジスタ61
8からの出力である。マルチプレクサ622の出力は、
図19において発生されたXSEL0ビット,XSEL
1ビットの状態に依存して選択され、Xバスに出力され
る。レジスタR0〜R15の多くに関連した特別な目的
の機能は、すでに説明されているので、ここでは繰り返
さない。レジスタR0〜R3の出力はマルチプレクサ6
08に入力され、レジスタR4〜R7の出力はマルチプ
レクサ610に入力され、レジスタR8〜R11の出力
はマルチプレクサ612に出力され、レジスタR12〜
R15の出力はマルチプレクサ614に入力される。マ
ルチプレクサ606,608,610,612および6
14への4入力の1つは、図21に示されるマルチプレ
クサ606からのYSEL2ビットとYSEL3ビット
の状態に基づいて選択される。マルチプレクサ616の
出力はバッファレジスタ617に入力され、次にYバス
に出力される。レジスタR0〜R15への入力におい
て、各レジスタは、図21で説明されたように発生され
るZSELビット0〜3によって選択されるイネーブル
入力を有する。また、各レジスタは、クロックCKとデ
ータ入力とDATA IN入力を有し、これによりデー
タが適当にバッファされた後にZバスから入力される。
【0178】種々の多重動作に関連して用いられるレジ
スタR4は、またディスエーブル低ビット入力,ディス
エーブル高ビット入力,イネーブル低ビット入力,イネ
ーブル高ビット入力も有する。プログラムカウンタPC
であるレジスタR15は、図17に示すROMコントロ
ーラのキャッシュローダ400からの信号CCHLDを
受け取る。この信号は、現在処理中のの16バイトキャ
ッシュセグメントがキャッシュRAMにロードされるま
でジャンプ命令を禁止する。さらに、プログラムカウン
タR15は、命令デコーダからプログラムループペンデ
ィング信号LOOPENを受け取る。この信号は、分岐
命令がありレジスタR13の内容とともにプログラムカ
ウンタPCのローダをイネーブルにする。レジスタR1
5は、さらに、電源投入時リセット信号RESETとル
ープ命令が実行されるときにレジスタR13の内容とと
もにプログラムカウンタをロードする入力RNを受け取
る。
【0179】上に説明したように、本発明のグラフィッ
クス共同プロセッサは、ホストビデオゲームシステムと
ともに、多角形を基にしたオブジェクト(標的又は動画
キャラクタ)の回転、拡大、縮小などの種々の特殊効果
を作り出すために使用できる。図24は、マリオチップ
プログラムの1例として台形を描くフローチャートを示
す。これにより、マリオチップが表示すべき多角形を基
にした対象の1部を発生するために、どのようにプログ
ラムするかが説明される。そのような多角形を発生する
マリオプログラムは、マリオハードウエアがどのように
プログラムを実行するかの詳細な説明とともに以下に開
示される。図24に示される高レベルフローチャートを
まず説明する。まず、レジスタブロックR0〜R15の
中のいくつか(たとえばレジスタR1は画素Xの位置を
格納し、レジスタR2は画素Y位置ラインを格納し、レ
ジスタR7は台形の高さを格納する)が、台形の発生に
用いられる変数に関連している。その後、ブロック65
0に示されるように、ループカウンタがセットされ初期
画素値が計算される。
【0180】ブロック652に示されるように、次に1
本の台形水平ラインのライン長が判断される。もしライ
ンの終点からラインの開始点を減算した結果(−VE)
が負であれば、ルーチンはブロック660へ分岐する。
もしラインの終点からのラインの開始点の減算の結果が
正であれば、ライン長が越えられなかったことを示すの
で、ループカウンタがデクリメントされ(654)、画
素をプロットする命令が実行されて適当な画素がプロッ
トされる(656)。ブロック658に示されるよう
に、次にループカウンタの内容が0であるか判断され
る。もしループカウンタが0でないならば、ジャンプが
実行され、ブロック654へ戻ってループカウンタがデ
クリメントされ(654)、他の画素をプロットする
(656)。もしループカウンタが0であれば、次に多
角形の左側X座標と右側X座標が更新される(66
0)。その後、台形の高さY HEIGHTがデクリメ
ントされ(662)、もしその結果が0でなければ(6
44)、次にY座標がインクリメントされて次のスキャ
ンラインに動く(665)。そして、ルーチンはブロッ
ク650に戻って再実行される。もしY HEIGHT
が0に等しければ(664)、ルーチンはすべて実行さ
れていて台形が完成する(666)。グラフィックを発
生するマリオチップの命令セットの使用を説明するため
に、図24に説明した台形を描くプログラムの1例が以
下に示される。
【0181】
【表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に下がる
【0182】マリオチップのハードウエアがどのように
命令を実行するかを説明するために、以下の説明は、上
に記載された台形発生プログラムに向けられる。台形発
生プログラムを実行する前に、ホストコンピュータシス
テム、たとえばスーパーNESは、図6のフローチャー
トの説明に関連して先に説明したように、コードバンク
レジスタとスクリーンベースレジスタに直接に書く。さ
らに、スーパーNESは、ROMコントローラ104内
のローカルレジスタにXEQアドレスの下位バイトを書
き、下位バイトはスーパーNESアドレスバスHAから
デコードされる。次に、スーパーNESは上位バイトを
ROMコントローラ104に書き、上位バイトは前記の
ローカルレジスタの内容に結合され、Zバスに入力され
る。その後、マリオチッププログラムカウンタとして動
作するレジスタR15はイネーブルになる。ROMコン
トローラ104への前記のスーパーNESのライト動作
の立ち下がりエッジを検出すると、マリオ”GO”フラ
グはセットされる。もしプログラムカウンタとキャッシ
ュベースレジスタの差がキャッシュサイズより大きい
か、キャッシュフラグとプログラムカウンタの積とキャ
ッシュベースレジスタとの差を16で割った値が0に等
しければ、プログラムカウンタの内容がROM10に通
され、ROMタイミングカウンタ(図17のブロック4
06)がスタートされる。
【0183】初めに、台形ループを描くサブルーチンを
実行する前に台形ループプログラムに関連して使用され
る変数は、台形プログラムリストの最初の部分に示され
るスーパーマリオレジスタに関連している。たとえば、
「X位置をプロットする」である変数”rx”はレジス
タR1に関連し、変数”rloop”はレジスタR13
に関連する。これらのレジスタの割り当てがなされた後
で、台形プログラムが以下のように実行される。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バスの内容は、ループカウン
タをセットするためにそこに格納される。ルーチンにお
けるこの時点からループ命令に出会うまで、各命令がメ
モリからフェッチされる。
【0184】命令”FROM RX1”を実行するため
に、命令コードの下位4ビットがレジスタコントローラ
(図21参照)内の4ビット”FROM Y”レジスタ
602にロードされる。さらに、RX1(レジスタR
3)からのデータはYバスでイネーブルになり、16ビ
ット”FROM X”レジスタ618に格納される。”
TO RX”命令を実行するために、命令コードの下位
4ビットが、レジスタコントローラ(図21参照)内の
4ビット”enable Z”レジスタ600にロード
される。”HIB”命令は、”FROM X”レジスタ
618の16ビットの内容をXバスに出すことにより実
行される。ALUはXバスのトップバイトをZバスの下
位バイトに出し、Zバスのトップバイトを0にセットす
る。これによりX位置の分数部分は除去され、第1水平
ラインのための開始位置をレジスタRX(レジスタR
1)に残す。命令”FROM RX2”の実行におい
て、上に説明した”FROM RX1”命令の実行でな
されたのと同様な動作が行われる。”HIB”命令は台
形の上側左X座標に関連した動作(上に説明したのと同
様なもの)を生じ、レジスタR0(アキュムレータとし
て動作するデフォールトレジスタ)に第1水平ラインの
開始点を記憶する。
【0185】”RLEN”命令と”SUB RX”命令
は、そのラインの開始点を終了点から減算すること(R
LEN(R12)=R0−RX)により実行される。符
号フラグは、エラー条件を示す負の結果であるならばセ
ットされる。”BMI HLINES3”命令は2バイ
ト命令であり、第1バイトは、符号フラグがセットされ
ていればフラグをセットする。第2バイトは、もし条件
フラグがセットされれば、分岐オフセットである(ここ
に、R15は、R15と命令との和に等しい)。もしそ
うでなければ、R15は変わらないままであり、通常の
プログラム実行が続けられる。”INC RLEN”命
令は、少なくとも1画素がプロットされることを保証す
るために、ライン長レジスタはその値に1を付加す
る。”LOOP”命令はR12=R12−1の計算をさ
せるように動作する。もしR12が0でないならば、レ
ジスタR15(プログラムカウンタ)がR13の内容で
ロードされ、これによりジャンプが起こされる。”PL
OT”命令を実行するために、loop/plotの1
対の命令が水平ラインを描くアルゴリズムとなる。”P
LOT”命令は、R1,R2によって(X,Y座標とし
て)アドレスされるスクリーン画素を、図4に示され
る”COLORレジスタ”54のカラーセットにセット
する。画素を含む文字のアドレスはプロットハードウエ
ア52によって計算される。新しい画素データは、マリ
オチップが違った文字位置でプロットするためにその位
置に動くまで文字ラインバッファ(カラーマトリック
ス)に保持される。すべてのカラー情報が、カラーマト
リックス内の2重バッファメカニズムの第2レベルにコ
ピーされると、この情報は外部RAMに書かれる。
【0186】”WITH RX1”命令と”ADD R
X1 INC”命令が実行されると、台形の左側X座標
を更新する。同様に、”WITH RX2”命令と”A
DDRX2 INC”命令が実行されると、台形の右側
X座標を更新する。”DEC RDY”命令、”BN
E, Hlines1”命令、および、”INC R
Y”命令は、台形が完成するまで、次のY位置(次のス
キャンライン)へ動くように動作する。以下のプログラ
ムリストは、8ビットのX,Y,Z点の1配列を回転す
るためにマリオチップがどのようにプログラムされるか
の1例を示す。このルーチンは、回転動作を行う本発明
の実施例によるグラフィックス共同プロセッサのための
プログラムの1例を示す。このルーチンのリストは以下
の通りである。
【0187】
【表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
【0188】図25,図26および図27は、本発明の
プログラマブルグラフィックス共同プロセッサをホスト
コンピュータシステム(たとえばSuper NES)
とともに用いたときの特別な効果の1例を示す。図25
に示すように、オブジェクトすなわちヘリコプタの側面
が描かれる。この図は、マリオチップを用いて発生され
高品質の表示を反映していない。図26と図27は、図
19に示されたヘリコプタの拡大像と回転像を示す。本
発明のグラフィックス共同プロセッサは、3D型などの
特殊な効果(多角形を基にした対象物の高速な回転、拡
大、縮小を含む)を発生するために用いられる。このと
き、この効果は、ホストビデオゲーム処理システムの最
小の負荷を与えるだけである。本発明は実施例を用いて
詳細に説明されたが、本発明は実施例に限定されるもの
ではない。当業者による多数の変形,修正は、本発明の
範囲に属する。
【図面の簡単な説明】
【図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,52)…ビデオグラフィッ
クスプログラム実行手段、X…第1データソースバス、
Y…第2データソースバス、Z…データデスティネイ
ションバス、62…インストラクションデコーダ、88
…RAMコントローラ、104…プログラムメモリコン
トローラ、308…マルチプレクサ。
フロントページの続き (72)発明者 ベン・チーズ イギリス、イングランド、エスジー8・6 エイイー、ハートフォードシャー、メルボ ルン・ロイストン、ドルフィン・レイン23 番 (72)発明者 カール・エヌ・グレイアム イギリス、イングランド、イー4・7イー ティ、ロンドン、ノース・チングフォー ド、ウッドランド・ロード15番 (72)発明者 ピーター・アール・ウォーンズ イギリス、イングランド、イー6・1エイ アール、ロンドン、イースト・ハム、ウォ ルポール・ロード12エイ番

Claims (39)

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

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
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
US827098 1992-01-30

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2002163283A Division JP2003126550A (ja) 1992-01-30 2002-06-04 ビデオゲームシステム及びそのためのプログラマブルグラフィックスプロセッサ

Publications (2)

Publication Number Publication Date
JPH0689567A true JPH0689567A (ja) 1994-03-29
JP3335695B2 JP3335695B2 (ja) 2002-10-21

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 After (1)

Application Number Title Priority Date Filing Date
JP2002163283A Pending JP2003126550A (ja) 1992-01-30 2002-06-04 ビデオゲームシステム及びそのためのプログラマブルグラフィックスプロセッサ

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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6801815B1 (en) * 1999-09-17 2004-10-05 Hasbro, Inc. Sound and image producing system

Families Citing this family (139)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
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
US6147696A (en) * 1993-06-24 2000-11-14 Nintendo Co. Ltd. Electronic entertainment and communication system
US6762733B2 (en) * 1993-06-24 2004-07-13 Nintendo Co. Ltd. Electronic entertainment and communication system
US5850540A (en) * 1993-07-02 1998-12-15 Sony Corporation 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
EP0715869B1 (en) 1994-06-28 2001-11-28 Sega Enterprises, Ltd. Game device and method of replaying game
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
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
US5680534A (en) * 1994-10-31 1997-10-21 Nintendo Co., Ltd. Video game/videographics program fabricating system and method with superimpose control
US5599231A (en) * 1994-10-31 1997-02-04 Nintendo Co., Ltd. Security systems and methods for a videographics and authentication game/program fabricating device
US5680533A (en) * 1994-10-31 1997-10-21 Nintendo Co., Ltd. Videographics program/video game fabricating system and method
JP2742394B2 (ja) * 1994-12-02 1998-04-22 株式会社ナムコ ゲームプログラムおよびデータの読込み方法、ならびにこれを用いたゲーム装置
US6009523A (en) * 1995-02-08 1999-12-28 Sega Enterprises, Ltd. Information processing apparatus with security checking function
US6241611B1 (en) 1995-05-10 2001-06-05 Nintendo Co., Ltd. Function expansion device and operating device using the function expansion device
WO1996036060A1 (fr) * 1995-05-10 1996-11-14 Nintendo Co., Ltd. Dispositif de commande avec manette de jeu analogique
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
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
EP0797139B1 (en) 1995-10-09 2003-06-18 Nintendo Co., Limited Three-dimensional image processing system
JP3544268B2 (ja) 1995-10-09 2004-07-21 任天堂株式会社 三次元画像処理装置およびそれを用いた画像処理方法
US6007428A (en) 1995-10-09 1999-12-28 Nintendo Co., Ltd. Operation controlling device and video processing system used therewith
JPH09167050A (ja) * 1995-10-09 1997-06-24 Nintendo Co Ltd 操作装置およびそれを用いる画像処理システム
JP3524247B2 (ja) 1995-10-09 2004-05-10 任天堂株式会社 ゲーム機およびそれを用いたゲーム機システム
GB2313432B (en) 1995-11-10 2000-06-21 Nintendo Co Ltd Joystick device
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
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
US6155926A (en) 1995-11-22 2000-12-05 Nintendo Co., Ltd. Video game system and method with enhanced three-dimensional character and background control
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
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
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
US6244959B1 (en) 1996-09-24 2001-06-12 Nintendo Co., Ltd. Three-dimensional image processing system with enhanced character control
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
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
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
US7539656B2 (en) * 2000-03-06 2009-05-26 Consona Crm Inc. 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
US7043641B1 (en) * 2000-03-08 2006-05-09 Igt Encryption in a secure computerized gaming system
US7988559B2 (en) * 2001-03-08 2011-08-02 Igt Computerized gaming system, method and apparatus
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
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
US6902481B2 (en) * 2001-09-28 2005-06-07 Igt Decoupling of the graphical presentation of a game from the presentation logic
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
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
US8016681B2 (en) * 2004-03-31 2011-09-13 Nintendo Co., Ltd. Memory card for a game console
US8267780B2 (en) * 2004-03-31 2012-09-18 Nintendo Co., Ltd. Game console and memory card
US7837558B2 (en) * 2004-03-31 2010-11-23 Nintendo Co., Ltd. Game console and emulator for the 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
US8296781B1 (en) 2007-12-11 2012-10-23 Nvidia Corporation System, method, and computer program product for determining application parameters based on hardware specifications
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
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
US8751100B2 (en) * 2010-08-13 2014-06-10 Deere & Company Method 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
US9201670B2 (en) 2012-07-06 2015-12-01 Nvidia Corporation System, method, and computer program product for determining whether parameter configurations meet predetermined criteria
US9092573B2 (en) 2012-07-06 2015-07-28 Nvidia Corporation System, method, and computer program product for testing device parameters
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
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
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
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
GB2548602B (en) 2016-03-23 2019-10-23 Advanced Risc Mach Ltd Program loop control
GB2548603B (en) 2016-03-23 2018-09-26 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
EP0309884A3 (en) 1987-09-28 1991-04-10 Mitsubishi Denki Kabushiki Kaisha Color image display apparatus
JPS6484295A (en) 1987-09-28 1989-03-29 Mitsubishi Electric Corp Color display device
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
JPH0632703B2 (ja) 1989-07-31 1994-05-02 コナミ株式会社 ゲーム機の表示装置
US5214753A (en) 1989-07-31 1993-05-25 Shographics, Inc. Video system with parallel attribute interpolations
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 任天堂株式会社 ディジタル音源装置、およびそれに用いられる外部メモリカートリッジ
BR9104307A (pt) 1990-02-05 1992-08-04 Ricoh Kk Aparelho de video de animacao e memoria externa usada para ele
JPH0425962A (ja) 1990-05-21 1992-01-29 Nec Corp マルチ中央処理装置による制御システム
KR950014979B1 (ko) * 1990-06-04 1995-12-20 유니버시티 오브 워싱톤 이미지 계산 시스템
US5276798A (en) * 1990-09-14 1994-01-04 Hughes Aircraft Company Multifunction high performance graphics rendering processor
CA2050658C (en) * 1990-09-14 1997-01-28 John M. Peaslee Dual hardware channels and hardware context switching in a 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
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
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
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6801815B1 (en) * 1999-09-17 2004-10-05 Hasbro, Inc. Sound and image producing system

Also Published As

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

Similar Documents

Publication Publication Date Title
JP3335695B2 (ja) 外部メモリシステム
JPH0679063A (ja) ビデオゲームシステム等において使用するための、キャラクタ変換ハードウェアに対する画素を備えたプログラマブルグラフィックスプロセッサおよびそれを応用したビデオゲームカートリッジおよび外部メモリシステム
US5357604A (en) Graphics processor with enhanced memory control circuitry for use in a video game system or the like
US5274760A (en) Extendable multiple image-buffer for graphics systems
US6807620B1 (en) Game system with graphics processor
US7015915B1 (en) Programming multiple chips from a command buffer
US7525547B1 (en) Programming multiple chips from a command buffer to process multiple images
US6985151B1 (en) Shader pixel storage in a graphics memory
US7170512B2 (en) Index processor
US7388581B1 (en) Asynchronous conditional graphics rendering
US6952217B1 (en) Graphics processing unit self-programming
US9734545B2 (en) Software methods in a GPU
CA2055784C (en) Hierarchical memory controller
US5999200A (en) Method and apparatus for automatically controlling the destination of a graphics command in a register file
US6028613A (en) Method and apparatus for programming a graphics subsystem register set
JP2899838B2 (ja) 記憶装置
TW214588B (ja)
JP2000029788A (ja) キャッシュメモリシステム及びそれに用いるキャッシュ制御方法並びにその制御プログラムを記録した記録媒体
JPS62219062A (ja) マルチ・プロセツサ方式
WO1999059068A1 (en) Method and apparatus for programming a graphics subsystem register set

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080802

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080802

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090802

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090802

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100802

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110802

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110802

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110802

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120802

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees