第1章 概要
パレット機能とは
MSX-BASICでは困難とされた画面のフェードイン・アウト等、パレットを利用した視覚的効果を実現します。
- BASIC上で画面のフェードイン、フェードアウトが簡単に実現します。
- 最大64種類のパレットデータを操作できます。
- VDPマクロ機能でパレットアニメーションがラクラク実現できます。
パレット機能のルール
パレットデータはカラー1色につき2バイトで、16色分の計32バイトを1単位とします。
col.0 col.1 col.2 col.3 col.4 col.5 col.6 col.7 (色番号)
----- ----- ----- ----- ----- ----- ----- -----
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ……
|| |
|| +-- G (緑の輝度)
|+----- B (青の経度)
+------ R (赤の輝度)
データフォーマットはMSX2のパレットテーブルと全く同じものです。輝度は0~7の3ビットです。1バイト目はR(赤)とB(青)が混合しますが、2バイト目はG(緑)のみです。
1バイト目
-----------------------
b7 b6 b5 b4 b3 b2 b1 b0
0 R R R 0 B B B
~~~~~~~~ ~~~~~~~~
| +---- bit2~0 青の輝度 (0~7)
|
+---------------- bit6~5 赤の輝度 (0~7)
2バイト目
-----------------------
b7 b6 b5 b4 b3 b2 b1 b0
0 0 0 0 0 G G G
~~~~~~~~
+---- bit2~0 緑の輝度 (0~7)
スクリーンモード | パレットテーブルのアドレス | バイト数 |
---|---|---|
SCREEN 0(WIDTH 40) | 0400h~041Fh | 32 |
SCREEN 0(WIDTH 80) | 0F00h~0F1Fh | 32 |
SCREEN 1 | 2020h~203Fh | 32 |
SCREEN 2/4 | 1B80h~1B9Fh | 32 |
SCREEN 3 | 2020h~203Fh | 32 |
SCREEN 5/6 | 7680h~769Fh | 32 |
SCREEN 7/10/11 | FA80h~FA9Fh | 32 |
DMシステム2で用いるパレットテーブルは、パレットデータ1単位(32バイト)の連結です。先頭の32バイトはパレット#0(0番)とし、以後32バイトごとにパレット番号がカウントされます(0~63)。
MSX2以降の機種で COLOR=(15,7,6,5) や COLOR=RESTORE などの命令でパレットを定義すると、上記のVRAMパレットテーブルへその都度データが書き込まれます。しかし、DMシステム2ではパレットデータの設置場所としてRAMを使用します。COLOR= など既存のパレット関連命令をDMシステム2上で利用することは可能ですが、DMシステム2のパレット制御機能はあくまでRAMを参照します。
従って、VRAMのパレットテーブルに配置されているパレットデータをDMシステム2で利用する場合は、VRAMからRAMの任意のアドレスへ再配置(コピー)してください。
ex.) CALL BLOCK(@&H7680,&HC000,32) ← SCREEN5の画面でVRAMのパレットテーブル(32バイト)をRAMのC000hへ複製する
ex.) CALL POKES(&HC000,STRING$(32,CHR$(0)))) ← フェードアウトなどで用いる全色真っ黒のパレットデータをRAMのC000hへ作成する