/*★ 矩形を表示して、カラーレジスタに色を設定する 前田 稔 ★*/
#include "my.h"
// パレット番号とカラーレジスタの対応を格納する領域
u_char PREG[17];
u_char *PT= PREG;
// プロトタイプ宣言
static void get_preg(void);
static void set_colour(u_char, u_char, u_char, u_char);
//★ MAIN PROGRAM ★
int main(void)
{
//スクリーンの表示モードの設定
if (!_setvideomode(_VRES16EXCOLOR)) exit(1);
get_preg(); //パレットレジスタの一括読み取り
Xtype(PREG, 17);
_setcolor(1);
_rectangle(_GFILLINTERIOR,50,110,150,130);
_setcolor(2);
_rectangle(_GFILLINTERIOR,50,140,150,160);
_setcolor(3);
_rectangle(_GFILLINTERIOR,50,170,150,190);
_getch();
set_colour(PREG[1],0x3f,0,0);
set_colour(PREG[2],0,0x3f,0);
set_colour(PREG[3],0,0,0x3f);
_getch();
_setvideomode(_DEFAULTMODE);
}
//パレットレジスタの一括読み取り
void get_preg()
{
_asm
{ push DS
push ES
les dx,PT //ES:DX= PREG
mov ax,1009H //get palet register
int 10H
pop ES
pop DS
}
}
//カラーレジスタに色を設定する
void set_colour(u_char n, u_char r, u_char g, u_char b)
{
_asm
{ push DS
push ES
mov bl,n //BX= colour register
mov bh,0
mov dh,r
mov ch,g
mov cl,b
mov ax,1010H //set colour register
int 10H
pop ES
pop DS
}
}
|