BITMAP
BITMAP ビットマップ画像の描画
書式
BITMAP 横座標 , 縦座標 , 仮想アドレス , インデックス , 幅 , 高さ
BITMAP 横座標 , 縦座標 , 仮想アドレス , インデックス , 幅 , 高さ , 倍率
引数
横座標 :0 ~ GW-1
縦座標 :0 ~ GH-1
仮想アドレス :数値(有効範囲の仮想アドレス)
インデックス :0 ~ 32767
幅 :1 ~ GW-1
高さ :1 ~ GH-1
倍率 :1 ~ 8
※GW、GHはグラフィック画面の横ドット数、縦ドット数を示す定数です。
この定数は、画面解像度に設定等により変わります。
説明
指定した座標にビットマップ画像を描画します。
本コマンドはシリアルコンソールでは利用出来ません。
仮想アドレスに描画対象の画像データの先頭格納アドレスを指定します。
インデックスにはビットマップ画像データの先頭格納の格納位置を指定します。
ビットマップ画像データの形式は、NTSC版、OLED版では単色(0:黒、1:白)となります。
1ドットが1ビットに対応します。
次の2つのパターンのインベーダー画像 横12ドット×縦8ドットの2枚を利用する場合、
赤数字が指定した仮想アドレスに格納されているデータの位置となります。
格ドットの数値はバイト内のビット番号です。
ビットマップデータは1バイト(8ビット)単位で定義します。
パターン1
https://gyazo.com/7cee8148142f068299c1372f518ad394
パターン2
https://gyazo.com/a8292558b7844309339db82653d038eb
上記のパターンを16進数に変換すると次の31バイトのデータとなります。
パターン1
$10,$40,$48,$90,$5F,$D0,$77,$70
$3F,$E0,$1F,$C0,$10,$40,$20,$20
パターン2
$10,$40,$08,$80,$1F,$C0,$37,$60
$7F,$F0,$5F,$D0,$50,$50,$0D,$80
上記データをユーザー用ワークエリアに格納し利用するプログラムは次のようになります。
例:インベーダーのキャラクタをアニメーション表示する(4倍で表示)
code:bitmap_sample1.bas
10 CLS
20 POKE MEM+0,$10,$40,$48,$90,$5F,$D0,$77,$70
30 POKE MEM+8,$3F,$E0,$1F,$C0,$10,$40,$20,$20
40 POKE MEM+16,$10,$40,$08,$80,$1F,$C0,$37,$60
50 POKE MEM+24,$7F,$F0,$5F,$D0,$50,$50,$0D,$80
60 FOR A=0 TO 20
70 BITMAP A,0,MEM,A%2,12,8,4
80 WAIT 200
90 NEXT A
70行のBITMAP A,0,MEM,A%2,12,8,4の第1引数 変数Aは横座標、第2引数は縦座標、
第3引数に画像を格納している相対アドレス MEM、第4引数にインデックス A%2は0または1の値、
第5引数の幅はインベーダーの横ドット数 12、第6引数の高さはインベーダーの縦ドット数 8、
第7引数の倍率には4を指定しています。
60行~ 90行のFOR文により、変数の値を0~20に変化させて、インベーダーを横に移動させます。
移動時にはインデックス A%2が交合に0、1となりパターン1、2が交合に表示されます。
実行例
https://gyazo.com/1f2b53ddfe00dca22718679ff9abf9db
TFTディスプレイの場合、1ドットは16ビット(2バイト)のカラービットマップとなります。
エラーメッセージ
Syntax error :文法エラー、書式と異なる利用を行った
Overflow :指定した数値が-32768 ~ 32767を超えている
利用例
説明文の例を参照
関連項目