

TMS9918は、テキサス・インスツルメンツ社が製造したビデオ・ディスプレイ・コントローラ( VDC)で、マニュアルでは「ビデオ・ディスプレイ・プロセッサ」(VDP)と記載されており、1979年に発表されました。[1] TMS9918とその派生型は、ColecoVision、CreatiVision、Memotech MTX、MSX、NABU Personal Computer、SG-1000 / SC-3000、Spectravideo SV-318、SV-328、Sord M5、Tatung Einstein、TI-99/4、Casio PV-2000、Coleco Adam、Hanimex Pencil II、PECOS、Tomy Tutorで使用されました。
TMS9918 は、グリッドベースの文字グラフィック (テキストまたは背景画像の表示に使用) と、前景オブジェクトの移動に使用される スプライトの両方を生成します。
このチップの主な特徴は、1980年にカール・グッタッグ(設計者の一人)が行ったプレゼンテーションで強調されているとおりである。[1]
- 1画面あたり256×192フルカラーピクセル
- 15種類の異なる色と色合い
- 非インターレースカラー複合ビデオ出力
- RAS/CAS型ダイナミックRAMへの直接配線
- ダイナミックRAMの自動リフレッシュ
- 一般的な8ビットメモリマップ型CPUインターフェース
- CPU は VDP 経由で RAM にアクセスします ( DMAは不要)
- 1画面あたり32のダイナミックキャラクター
- 1行あたり32個の8×8パターン、1画面あたり24行
- 1行あたり40個の6×8パターンのテキストモード
- 64 x 48 のメモリマップ可能なカラー スクエアを備えたマルチカラー モード
- 外部ビデオ入力と制御
- 単一電源+5ボルト動作
- 標準Nチャネルシリコンゲート技術
製品ファミリー
このファミリのすべての IC は、通常、TMS9918 という名前で呼ばれ、末尾に「A」が付くこともあります。「A」は、新しい機能、特にビットマップモード (Graphic II) の追加が追加されたチップの 2 番目のバージョンを示します。
TMS9918
TMS9918はTI-99/4 でのみ使用され、TI-99/4Aおよびその他のコンピュータには A バージョンの VDC が搭載されていました。
TMS9918A、TMS9928A、TMS9929A

TMS9918AとTMS9928A は60 Hz のビデオ信号を出力し、TMS9929A は50 Hz を出力します。「TMS9918A」と「TMS9928A」の「1」と「2」の違いは、「1」バージョンは複合NTSCビデオを出力するのに対し、「2」バージョン (TMS9929A を含む) はアナログ Y輝度信号と RY および BY 色差信号を出力することです。後者の必要性は、ヨーロッパを含む50 Hz の世界で主に見られましたが、これはビデオ信号規格がPALとSECAM で異なるためです。Y、RY、BY を出力し、 RF モジュレータで PAL または SECAM にエンコードする方が、色規格ごとに異なるコンソールを用意するよりもコスト効率が良かったです。また、バージョン 1 には外部複合ビデオ入力も備わっており、ビデオにテキストやグラフィックを重ねることができるビデオ「タイトル」に使用するのに便利なチップとなっていますが、バージョン 2 にはこの機能はありません。
TMS9918 のオリジナル バリアントはデプレッション ロード NMOS で、4.5 μm プロセスで製造されました。これは、 3 つの電源電圧を必要とする古いエンハンスメント ロード NMOS プロセスを使用したTMS9900マイクロプロセッサとは対照的に、Texas Instruments が製造した最初のデプレッション ロード NMOS チップの 1 つでした。ダイ サイズが大きく、内部速度が比較的高速だったため、TMS9918 はヒート シンクが必要になるほど熱くなりました。台湾の DINA コンソール (Colecovision/SG-1000 のハイブリッド) などの一部のデバイスではシンクのインストールを怠ったため、チップの誤動作に悩まされました。1983 年までに、Texas Instruments はダイ サイズを 3 μm に縮小し、動作温度が下がり、シンクが不要になりました。 MSX マシンと Sega SG-1000 は新しい 3 μm TMS9918 を使用しましたが、ほとんどの Colecovision はオリジナルの 4.5 μm バリアントを使用していました (1985 年に製造されたコンソールの最終ロットには新しいモデル TMS9918 が搭載されていました)。
TMS9118、TMS9128、TMS9129

TMS9918 シリーズ チップの後継機種であるTMS9118、TMS9128、TMS9129 は1980 年代中期から後半にかけてリリースされましたが、あまり人気が出ませんでした。1 つのピンの機能が変更され、ビデオ メモリのマッピングにより、TMS99xx に必要な 8 つの 16K×1 ビット チップの代わりに 2 つの 16K×4 ビット チップを使用できるようになりました。その他の点では、チップはそれぞれ TMS9918A、TMS9928A、TMS9929A と完全に同一です。
外部インターフェース
ビデオ RAM
VDP には 16K × 8 ビットの外部ビデオ メモリがあります。このメモリはCPUのアドレス空間外にあります。別のアドレス空間を持つということは、CPU がこのメモリの書き込みや読み取りを行うためにより多くの作業を行う必要があることを意味しますが、VDC が定期的にこのメモリを読み取ってディスプレイを生成するときに CPU の速度が低下しないことも意味します。さらに、CPU が他のメモリやメモリ マップ ハードウェアに使用できるアドレス空間が増えます。
使用している画面モードによっては、ディスプレイを生成するためにビデオ メモリのすべてが必要ない場合があります。このような場合、CPU は余分なビデオ メモリを他の目的に使用します。たとえば、カートリッジ ROM に保存されているグラフィックスやサウンド データを解凍するためのスクラッチ パッドとして使用するのが 1 つの用途です。もう 1 つの一般的な用途は、ちらつきやティアリングをなくすために、表示データの一部またはすべての 2 番目のコピーを作成することです。この手法はダブル バッファリングと呼ばれます。
CPU
CPU は、8 ビット バスを介して VDP と通信します。CPU によって制御されるピンによって、このバスは制御ポートとデータ ポートの 2 つの「ポート」に分割されます。ビデオ メモリの 1 バイトの書き込みまたは読み取りを行うには、CPU はまず VDP の制御ポートから VDC の内部アドレスレジスタに 2 バイトを書き込む必要があります。次に、CPU は VDP のデータ ポートで実際の書き込みまたは読み取りを実行します。データ バイトの書き込みまたは読み取りが行われると、TMS9918 は内部アドレス レジスタを自動的に増分します。この自動増分機能により、データ ブロックの書き込みと読み取りが高速化されます。制御ポートは、さまざまな内部レジスタへのアクセスにも使用されます。
グラフィックス
TMS9918 には、文字とスプライトという2 つの異なるグラフィック タイプがあります。
キャラクター
文字は通常、テキストや背景画像を作成するために使用されます。文字はスプライトの背後に表示されます。
画面モード
TMS9918 には、文字の特性を制御するさまざまな画面モードがあります。
文書化
TMS9918A には、次の 4 つの画面モードが用意されています (前述のとおり、TMS9918 にはグラフィック 2 モードがありません)。
- モード 0 (テキスト):合計 240×192 ピクセル、40×24 文字、256 個の 6×8 ピクセル文字の 1 つの文字セットから抽出されます。文字セット全体に 2 色制限があります。このモードではスプライトはサポートされません。
- モード 1 (グラフィック 1):合計 256×192 ピクセル、32×24 文字、256 個の 8×8 ピクセル文字の 1 つの文字セットから抽出されます。文字セット内の 8 文字の各グループには、2 色の制限があります。たとえば、文字「0」から「7」はすべて同じ色属性を持ちます。
- モード 2 (グラフィック 2):合計 256×192 ピクセル、32×24 文字、256 個の 8×8 ピクセル文字の 3 つの文字セットから抽出。文字セット内の文字の 8 ピクセル幅の各行には、2 色の制限があります。このモードでは、画面上のすべての文字位置に固有の文字が提供され、ビットマップ イメージを表示できます。
- モード 3 (マルチカラー):合計 256×192 ピクセル、64×48 の変更可能な仮想ピクセル、32×24 の「セミグラフィック」文字。これらのセミグラフィックは、2×2 の「ファットピクセル」で定義される 256 文字の特別な文字セットで定義されます。各ファットピクセルには 4×4 ピクセルがありますが、ファットピクセル内のピクセルを個別に定義することはできません。ただし、各ファットピクセルは独自の色を持つことができるため、このモードの名前 (マルチカラー) はここにあります。このモードは非常にブロック状で、めったに使用されません。
スクリーンモード2の詳細
技術的には、モード 2 はカラフルな文字セットを持つ文字モードです。画面は水平方向に 3 つの 256×64 ピクセル領域に分割され、各領域に独自の文字セットが割り当てられます。3 つの領域すべてに 0 から 255 までの文字を順番に印刷することで、プログラムは各ピクセルを個別に設定できるグラフィック モードをシミュレートできます。ただし、結果として得られるフレーム バッファーは非線形です。
プログラムは 3 つの同一の文字セットを使用して、カラフルな文字セットを持つテキスト モードのように画面を処理することもできます。背景パターンとスプライトはカラフルな文字で構成されます。画面全体を埋めてスクロールするには 32×24 バイトだけを移動すればよいため、これはゲームでよく使用されていました。
TMS9918 モード 2 を使用する際の課題は、8×1 ピクセル領域ごとに前景と背景の 2 色しか使用できないことです。16 色のパレットから自由に選択できますが、8×1 領域ごとに存在できる色は 2 色のみです。BASIC でコマンドを使用して画面を操作すると、 8 LINE×1 領域あたりの最大 2 色を簡単に超えてしまい、「カラー スピル」が発生してしまいます。
文書化されていない
テキサスインスツルメンツは当初、上記の 4 つのモードのみを文書化していました。しかし、モード 2 を有効にするビットは、当初説明されていたよりも興味深いものです。これは、他のモードの修飾ビットとして説明するのが最適です。これを有効にすると、次の 3 つのことが行われます。[2]
- カラーテーブルのサイズを拡大します。
- 画面を水平に 3 つに分割します。
- パターン テーブルとカラー テーブルの 2 つのアドレス ビットをマスク ビットに変更します。これにより、画面の各 3 分の 1 に独自のパターン テーブルとカラー テーブルがあるかどうかが制御されます。
これを念頭に置くと、さらに 3 つのモードが可能になります。純正の TMS9918A チップはこれらのモードをサポートしていますが、クローンやエミュレーターはサポートしていない可能性があることに注意してください。
- モード 0 (テキスト) + モード 2 (グラフィック 2) :ビットマップ テキスト モードとして知られています。このモードでは、カラー テーブルなしで 2 色のビットマップ イメージを使用できます。これにより、メモリが節約されますが、水平解像度がわずかに低下します (テキスト モードの水平解像度は、グラフィック モードの 256 ピクセルではなく 240 ピクセルです)。
- モード 1 (グラフィック 1) + モード 2 (グラフィック 2):ハーフ ビットマップ モードとして知られています。Texas Instruments は、実際にこの「文書化されていない」画面モードを「ビデオ ディスプレイ プロセッサ プログラマ ガイド SPPU004」というマニュアルで文書化しています。[3] セクション 8.4.2「VRAM アドレス指定を使用したゲームのプレイ」では、[3]このモードがモード 1 のメモリ節約とモード 2 の色の詳細をどのように組み合わせるかを説明しています。ただし、このモードでは表示できるスプライトの数が 32 ではなく 8 に制限されると彼らは述べています。したがって、このモードを説明するために使用される「文書化されていない」という用語は誤った名称です。ただし、このマニュアルは広く知られていなかったため、このモードは一般に文書化されていないモードの 1 つと見なされています。一般に、モード 2 ではなくこのモードを使用する唯一の理由は、メモリ消費量を削減するためです。
- モード 3 (マルチカラー) + モード 2 (グラフィック 2) : ビットマップ マルチカラー モードとして知られています。このモードは、標準のマルチカラー モードで既に実行できること以上のものは提供しないため、新しいものです。
スクロール
TMS9918 にはスクロールレジスタがないため、スクロールはソフトウェアで行う必要があります。さらに、スクロールはピクセル単位ではなく、文字の境界でのみ実行できます。[引用が必要]
スプライト
スプライトは通常、動く前景オブジェクトを作成するために使用されます。スプライトはキャラクター (タイル) の前に表示されます。
モード 1、2、および 3 では、スプライトをレンダリングできます。画面には、8×8 または 16×16 ピクセルのモノクロ スプライトを最大 32 個表示できます。各スプライトには、独自の単色が割り当てられています。複数のスプライトを重ねると、マルチカラー スプライトのような効果が得られます。
1 本のスキャンラインには 4 個以上のスプライトを配置できません。スプライトの水平ピクセルが余分に描画されると、そのピクセルは削除されます。優先順位の高いスプライトが最初に描画されます。VDP は、ステータス レジスタで最初に削除されたスプライトの番号を報告します。CPU は、スプライトの優先順位をローテーションして、フレームごとに異なるスプライト セットを描画することで、この制限を回避できます。スプライトが完全に消えるのではなく、ちらつきます。この手法は、スプライト多重化と呼ばれます。
自動スプライト移動は VDP では処理されません。その代わり、実際には CPU が VDP の垂直割り込み(VBI (垂直ブランキング インターバル)の開始時に 50 分の 1 秒または 60 分の 1 秒 (チップの種類によって異なります) ごとに自動的にトリガーされる標準 VDP 出力) を取得します。次に CPU はソフトウェアのスプライト処理ルーチンにジャンプし、VDP にスプライトを再配置する場所を指示します。
スプライト衝突フラグは、どちらかのスプライトが透明色であっても、2 つのスプライトの非ゼロ パターン ビットが一致すると設定されます。これは、ソフトウェア内でより高度な衝突検出ルーチンをトリガーするのに便利です。これにより、衝突の正確な位置を特定して対処できます。VDP 自体は、2 つのスプライトが衝突したかどうかを報告できないためです。
色
TMS9918 ファミリ チップは複合ビデオパレットを使用します。色は、TMS9918A の場合は輝度と色度値の組み合わせに基づいて生成され、TMS9928A/9929A の場合はY、RY、BY値に基づいて生成されます。
データシートの値
TMS9918 には、15 色の表示色と「透明」色で構成される 固定16 色パレットがあります。
- スプライトに「透明」を使用すると、グラフィック プレーンが表示されます。
- テキスト/グラフィック プレーンに「透明」を使用すると、背景が表示されます。
- 背景に「透明」を使用すると、外部ビデオ信号(有効な場合)が表示され、そうでない場合は黒になります。
データシート[4]の「表2.3 - 色の割り当て」によれば、出力レベルは次のようになります。
注: 色は単なる説明であり、ガンマ補正を考慮してYPrPb 値 (MS9928A/9929A) からsRGBに変換されています。SMPTE C の測色は考慮されていません。別の色変換については次のセクションを参照してください。
CRTディスプレイ
[独自の研究? ]
Y、RY、BY を RGB に変換するには、Y の起源を考慮する必要があります。
Y = R * 0.30 + G * 0.59 + B * 0.11
したがって、次の式を使用する必要があります。
R = RY + Y B = BY + Y G = (Y - 0.30 * R - 0.11 * B) / 0.59
しかし、まず、クロミナンスのないすべての色、つまり黒、グレー、白については、RY と BY は 0% ではなく、すべて 47% のオフセットがあるという事実に注意する必要があります。したがって、最初にすべての RY 値と BY 値からこのオフセットを減算する必要があります。実際には、この 1 つのステップが単独で実行されることは決してないため、結果がマイナスになることは問題ありません。
これで RGB への変換ができます。すべての結果は 0% から 100% の範囲に収まる必要があります。
「ライトレッド」の R の値が 113% と誤っているのは、データシート内のタイプミスによるもので、RY は 80% を超えてはならないという結論に達するかもしれません。しかし、チップの出力信号をオシロスコープで測定すると、表のすべての値が正しいことがわかります。つまり、エラーはチップ内部にあり、赤信号を飽和させています。このため、この値は 100% に修正する必要があります。
さらに、その当時までテレビだけでなくコンピュータ モニターにも使用できるのはブラウン管だけであり、これらの CRT のガンマは であったことを考慮する必要があります。TMS9918 シリーズのチップはテレビで動作するように設計されており、その CRTのガンマは 1.6 でした (注: Macintoshモニターの CRT は 1.8、PC モニターの CRT は 2.2)。フラット スクリーンにはガンマがありません。このため、上記の最初の表に示すように、TMS9918 の色はここではやや薄く見えます。以下の表では、ガンマ補正された値を使用しています (Wikipedia のコーディングに必要なため、16 進数で記述されています)。
注: 使用される手順は次のとおりです。すべての値を小数点以下 2 桁に丸め、ガンマ補正のために 1.6 乗し、最後に値の範囲を 0...100 から 0...255 に変換します。
仕様
- ビデオ RAM: 4、8、または 16 KB への直接配線
- テキストモード: 40 × 24 および 32 × 24
- 解像度: 256 × 192
- 色: 15色+透明
- スプライト: 32、1 色、水平ラインあたり最大 4 個
遺産
Texas Instruments の TMS9918A の後継機はYamaha の V9938で、追加のビットマップ モード、よりカラフルなスプライト、垂直フルスクリーン スクロール レジスタ、垂直および水平オフセット レジスタ、ハードウェアブリッター、カスタマイズ可能なパレットが追加されました。V9938 はMSX2標準のコンピュータ用に設計され、後にTI-99/4Aのサードパーティ アップグレードであるGeneve 9640「コンピュータ オン カード」に使用されました。
V9938 の後継として、いくつかの高色モードと水平 2 ページ スクロール レジスタを追加したV9958が登場しました。これらのチップは MSX2+/ turboRシステムで使用されました。
東芝はT6950と呼ばれるクローンを製造したが、グラフィックス2モードでは文書化されていないパターン/カラーテーブルマスキング機能をサポートしていない。[5] [より良いソースが必要]その後、東芝はVDPを内蔵したT7937A MSXエンジンをリリースし、マスキング機能を修正した。東芝のVDPは両方とも、テキサスVDPとは若干異なるパレットを備えており、より鮮やかな色彩である。
TMS9918 は、マスターシステム、ゲームギア、メガドライブ (ジェネシス)のVDPチップのベースでした。[引用が必要]これらのチップは追加の表示モードとレジスタを使用し、ハードウェアスクロール機能やその他の高度な機能を追加しました。任天堂エンターテイメントシステム (ファミコン)のリコーPPUチップも TMS9918 をベースにしています。[引用が必要]
参照
- TMS34010、1986年に登場した専用グラフィックス命令を備えたマイクロプロセッサ
- Atari 8ビットコンピュータには、同年に導入された同等のグラフィックハードウェアが搭載されている。
- モトローラ 6845、8ビットコンピュータで広く使用されているディスプレイコントローラ
- モトローラ 6847
- ヤマハ V9938
- ヤマハ V9958
- 8ビットコンピュータハードウェアグラフィックスのリスト
参考文献
- ^ ab 「TMS9918 アリゾナ技術シンポジウム ドラフト - 開発 - SMS Power!」www.smspower.org。
- ^ ビデオ ディスプレイ プロセッサ / ハイブリッド モード。これも使用されます。
- ^ ab ビデオ ディスプレイ プロセッサ - プログラマーズ ガイド(PDF)。Texas Instruments。
- ^ Texas Instruments (1982)、TMS9918A/TMS9928A/TMS9929A ビデオ ディスプレイ プロセッサ(PDF) 、 2018 年 11 月 2 日取得
- ^ 「未文書化モード 1 + 2: 投票/ディスカッション | MSX リソース センター (ページ 2/4)」。
外部リンク
- データシート
- プログラマーガイド
- F18A 現代版代替品
- TMS9x18 VRAM の SRAM 代替品
