杉之原名人さて、後編です。第5話:アナログパレットの利用PC-9801Vシリーズのあまり使われない機能の中に4096色のアナログパレットがあります。私も今までグラフィックツールソフトの他にこの機能を利用したソフトを見たことがありません。これも利用しない手はないというもの。ビジネスソフトに、ゲームソフトに、発想次第ではいくらでも応用できることと思います。モノトーンの画面でも、郷愁を誘う微妙なセピア色のワークシートとか目に優しく気持ちの落ちつくグローブグリーンのテキストエディタなど、ちょっとした色使いでかなり面白い効果を出せる場合も多いと思います。ゲームなどの分野であっても、重厚なメタリック感覚のキャラクタやリアルな爆発シーンなど大きな効果を期待できます。それでは早速プログラミングに入りましょう。Vシリーズにはハードウェア的に2つのカラーモードが存在します。それぞれ8色グラフィックモード、16色グラフィックモードと呼ばれ、前者が従来機とのコンパチモード(8色パレット)で後者が今回利用する4096色パレットが使用できるモードです。「16色」というのは、Vシリーズ以降の機種はRGB3画面の他にI(インテンシティー)(=明度)の画面が追加され、同時16色表示が可能になったことに由来します。PC-9801のパレットポートはかなり異常でプログラマ泣かせでありまして、I/Oアドレスが連続しているわけでもなければパレットコードの順に並んでいるわけでもありません。おまけにポートが4バイトしかなく、従来コンパチの8色パレットの場合は上下2つのニブル(4bit)に分割して使用しなければなりません。言って完璧に人を馬鹿にしています。4096色パレットの設定の場合は8色のときほど苦労はなさそうです。I/Oポートを【表1】に示します。XPLANATIONA8H32100000irgbパレットアドレス設定ポート(0~15)AAH32100000GGGG緑パレットの色の濃度(0~15)ACH32100000RRRR赤パレットの色の濃度(0~15)AEH32100000BBBB青パレットの色の濃度(0~15)A8H~AEHまでのI/Oアドレスは常に【表1】のようになっているのではなく、I/Oポート6AHに01Hを出力して16色グラフィックモードを選択することによって初めてこのようになります。【表1】さて、パレットの設定の仕方ですが、わずか4バイトのI/Oポートを用いて4096色を表現するわけですから、従来のように3bitのパレットコードを出力するだけではとても済みません。A8Hにカラーコード(0=黒~15=明るい白)を出力し、次いでそのコードに割り当てる色をGRBそれぞれ16段階(4bit)でAAH,ACH,AEHに出力、設定します。ここで注意することは、VM2/VF2のように実際にはインテンシティーVRAMが載っておらず(オプション)16色モードに設定しても8色しか使用できない機種の場合は、出力するカラーコードが0及び9~15になることです。ちなみにカラーコード8はグレー(灰色)になります。何はともあれサンプルプログラムを見てみましょう。一目瞭然だと思います。このプログラムを走らせると画面をフェードイン・フェードアウトします。原理は簡単で、グラフィックVRAMの黒のカラーコードに暗色の白から明色の白へ15段階でパレットコードを割り当てるわけです。ま、リストを見てください。このプログラムはSLR社のオプティマイズアッセンブラで開発してありますので、マイクロソフト社のMASMだとエラーを出すかもしれません。そのときは適宜修正してください。;グラフィック画面表示。;パレットコード初期値。;カラーコード8(黒)を設定。