2017-09-05 11:22 — asano
カテゴリー:
前回はハードウェアが中心でしたが、今回はソフトウェア的な面について書きたいと思います。
さてテレビに文字表示を行なうコントローラICにグラフィック機能も搭載されていたと書きましたが、どの程度の機能があったでしょうか。
解像度は64×32~256×192程度まで、今から考えるとお話にならないようなものですが、もちろんこれには理由がありました。まず256×192はテレビを使用することからくる制限で、テキスト表示を構成する文字のドットもこの程度です。これが表示できるなら何故解像度を下げた表示があるのかというと、それはメモリの制限です。モノクロで256×192を表示するためには6kBのメモリが必要で、カラーにしようと思えば2~3倍必要になるでしょう。RAMのアクセスタイムも450nsなどというものが普通にあった時代なので帯域の配慮も必要になります。CPUも遅いので必要以上に解像度を上げると描画に時間がかかります。
色数も2~8程度でした。これも同じくメモリの問題が大きかったのです。しかも後述のように色の使用には制限が多く、ドット毎に自由な色をつけることはできませんでした。
もちろん描画支援機能のようなものは無く、すべてソフトウェア処理しなくてはなりません。
しかもメモリへの格納方法はデバイスやモードごとに異なっていました。大まかには以下のようなパターンがありましたが、私もすべてを把握しているわけではないのでもっと変なものがあったかもしれません。
- 一番わかりやすいものは横数ドット分が1バイトに入っているものです。
現在のパックドピクセルのようなものですが、1ドットは1~2ビット程度なので同時に使える色は限られてきます。カラーパレットに当たるものも自由に設定できるわけではありません。
MC6847のグラフィックモードがこの形式です。 - テキストモードの変形(タイル方式)
メモリの使い方はテキストモードと一緒で、フォントの代わりに1文字のエリアを2×2や2×3などの領域(タイル)に分割します。テキストモードでは1文字につき8ビットあるので各タイルごとに1ビットを割り当てOnかOffを表し、残ったビットでOnのタイルの色を指定します。同じ1文字のエリア内では同じ色しか使うことはできません。
MC6847のセミグラフィック4のモードでは1文字を2×2のタイルに分割し、残った4ビットの内の3ビットで8色の中から選びます。画面全体では64×32ドットで8色使えます。
セミグラフィック6のモードでは2×3に分割するので、全体では64×48ドットで4色となります。
後のPC-8001やMZ-80Kもこれに似ています。 - テキストモードの変形(フォント定義方式)
これは説明が難しいので詳しく知りたい方はTMS9918の資料を参考にしてください。ここでは概要だけ書きます。
TMS9918のグラフィック1モードは「グラフィック」とは名ばかりで、32桁×24行のテキストモードのようなものです。ただ256ある各文字のフォントは8×8ドットを自由に設定できました。画面全体の文字数は32×24=768あるのに対し、使える文字は256しかないので自由に使うことはできません。必要なメモリは32×24=768Bのほか、256文字分のフォントに8×256=2kBとカラー指定に32B必要でした。
グラフィック2モードでは画面を上中下に3分割し、各エリアごとに256文字分のフォントが使えるようになりました。これで画面全体を異なるフォントで塗りつぶすことが可能になり、256×192ドットのグラフィックとして使うことができます。カラーも横8ドット毎に16色中2色が使えます。必要なメモリは32×24=768Bのほか、フォントに8×256×3=6kBとカラーにも6kB必要です。
最初の方式に比べメモリ効率が若干劣るのですが、キャラクタ(8ドット)単位のスクロールが効率的に実行できるというメリットがあったのです。
このようにメモリの節約とCPUパワーの不足をカバーするための工夫の産物です。
ちなみに色指定がドット毎にできないものが多いですが、これは輝度情報に比べ色情報の帯域が制限されていたからです。
関連項目:
コメントを追加