2017-09-10 12:29 — asano
カテゴリー:
解像度が上がり色数が増えると書き換えなければならないメモリが増え、相対的に速度が低下します。もちろんCPUに余裕があればよいのですが、そうも言っていられません。ここでは当時の工夫や仕掛けをいくつか見ていきます。
まずソフトウェアだけでできる方法です。直線や円などの描画アルゴリズムの選択はもちろん重要ですが、場合によっては続・80系アセンブラのテクニックのような小手先のテクニックが有効な場合もありました。
当初グラフィック描画には(BASIC用に)ROMに搭載されたルーチンを呼び出すことが多かったのですが、各機種用の高速描画ルーチンが雑誌等に発表されるようになりました。同機能で最適化したもの、頻繁に使う機能に絞ってさらなる高速化を実現したもの、より多機能化したものなどいろいろありましたね。ソフトメーカも独自に作っていたはずです。
テキスト表示をグラフィックで行なっている場合はスクロール速度が問題になることがよくあります。VRAMの表示開始アドレスが変更できる場合は実際のデータのコピーを行なわずにスクロールさせる手法がよく用いられました。画面の一部のみスクロールさせるときにはこの手は使えないので、スクロール範囲を限定すると遅くなる(コピーなら転送量が減るので速くなるはず)ことで区別できましたね。富士通のFM-8/7/11等のシリーズがこうだったはずです。
PC-8801の高速書き込みモードのように品位を犠牲にして高速化できるものもありました。通常は表示のためのVRAMアクセスと描画のためのアクセスが競合したときには表示を優先させ(表示は待てないので)てCPUを待たせるのですが、CPUを優先させるるのです。描画中は画面にノイズが出ますが、表示のための読み出しができないだけで、描画のための読み書きは正常なのでVRAM内容が異常になることはありません。描画が終了すれば正常な表示が得られます。
多くの機種ではモノクロの面をR,G,B用に3面持っていましたが、こういうシステムで「白」を書き込むにはR,G,Bそれぞれの面に書き込む必要があります。そこでソフトウェアからは一度の書き込みで自動的に複数面に書き込むことができる機能が用意されることもありました。
PC-8801mk2SR以降の「ALU」、PC-9801シリーズでは「GRCG (GRaphic CharGer)」「EGC (Enhanced Graphic Charger)」と呼ばれていたものがそうです。一種のアクセラレータですね。
もっと多機能なアクセラレータもありました。PC-9801シリーズに搭載されたμPD7220 GDC (Graphic Display Controller)はそれまでのCRTCのような表示機能だけではなく、直線や円弧の描画機能を持っていました。CPUからは座標等のパラメータを書き込むだけで描画してくれます。その後CPUが高速化されるにしたがってCPUで描画したほうが速くなってしまいました。
以前取り上げたHD63484 ACRTCも同様のデバイス(はるかに高機能)ですが、パソコン等にはほとんど使われませんでした。PC-H98シリーズに搭載されたμPD72120 AGDC (Advanced Graphic Display Controller)はGDCの後継ですが互換性はなく、むしろACRTCを意識していたように思います。
Add new comment