2015年11月08日

パレット機能

  テクノウを作るに当たり機能ごとに書くのもいいんですが、画面周りが非常に大変そうなので...
  とりあえずI/Oポート順に攻めてみたいと思います。


  参考文献:Mr.PCテクニカルコレクション 秀和システムトレーディング


○ポート0x40:色番号16(HGRB=1111)のパレット色設定
○ポート0x41:色番号15(HGRB=1110)のパレット色設定
○ポート0x42:色番号14(HGRB=1101)のパレット色設定
○ポート0x43:色番号13(HGRB=1100)のパレット色設定

(ポート0x44〜0x4F:ポート0x40〜0x43のイメージ)


 ・SR以降のみに存在するI/Oポートです。
 ・SRモード(ポート0xC8:bit0=0)以外でも動作します。
 ・書き込みのみ。読み出しはできません(読み出すと0xFFになる)。

  書き込むデータは次の通り。

  bit7-4:don't care
  bit3:Hの反転
  bit2:Gの反転
  bit1:Rの反転
  bit0:Bの反転


◎解説
 いろいろとユーザには理解しがたい仕様のパレット設定です。

 なぜ、4色だけなのか?せめて8色なら88からの移植がラクなのに。
 なぜ、色番号13〜16なのか?せめて色番号1〜8なら、88で出せる色はそのまま使えるのに。

 と、88からの移植にすごく不向きなパレットです。

 設定する値は出したい色の反転を設定します。これもなぜ反転か不明ですが...

 例えば、色番号13に白(HGRB=1111)の設定する場合は、ポート0x43 に 0x00を出力します。


 また、SR-BASICのグラフィック全般に言える事ですが、SR-BASICではVSYNC割り込みを使って、常に画面設定をしています。

 そのため、SR-BASICのコマンドラインから、

 SCREEN 2,2,2:LINE (0,0)-(319,199),16,BF

 の後に

 OUT &H40,&H05

 としても、色番号16の白(HGRB=1111)が、赤(HGRB=1010)になりません。

 SR-BASICではなく、N66-BASIC(MODE5)で同じ事を実行した場合、ちゃんと所望の動作をします。
 (ただし、SCREEN 2,2,2 → SCREEN 3,2,2 とする)


 SR-BASICでは、ポート0x40〜0x43に出力した値をワークエリアに持っています。

 ポート0x40:0xED1F
 ポート0x41:0xED20
 ポート0x42:0xED21
 ポート0x43:0xED22

 これを使って、

 10 SCREEN 2,2,2:LINE (0,0)-(319,199),16,BF
 20 POKE &HED1F,&H05
 30 GOTO 30

 とすると、色番号16の白(HGRB=1111)が、赤(HGRB=1010)になります。



 このパレットが性能を発揮するのは、MODE5の320x200ドット表示の色を変える時ぐらいかも知れません。

posted by えすび at 12:25| Comment(0) | P6解析:画面周り | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。