📄 welcome.c
字号:
/*有关初始画面的定义*/
static unsigned int PAL[256][3];
static int Step=0;
/* 设置VGA 13H模式 */
void setmode()
{
_AX=0x13;
geninterrupt(0x10);
}
/* 设置文本模式 */
void closemode()
{
_AX=0x3;
geninterrupt(0x10);
}
/* 设置调色板 */
void setpal(int Color,unsigned char r,unsigned char g,unsigned char b)
{
outportb(0x3c8,Color);
outportb(0x3c9,r);
outportb(0x3c9,g);
outportb(0x3c9,b);
}
/* 调色板渐入 */
void StepIn()
{
int i;
for (i=0;i<256;i++)
setpal(i,PAL[i][0]*Step/64,PAL[i][1]*Step/64,PAL[i][2]*Step/64);
Step++;
}
/* 调色板渐出 */
void StepOut()
{
int i;
for (i=0;i<256;i++)
setpal(i,PAL[i][0]*Step/64,PAL[i][1]*Step/64,PAL[i][2]*Step/64);
Step--;
}
/*显示欢迎画面*/
void logo()
{
FILE *bmp;
int i,r,g,b,x,y;
void far* Video;
Video = farmalloc(64000);
if (Video==NULL)
{
printf("Not enough Memory\n");
return;
}
setmode();
bmp=fopen("logo.bmp","rb");
fseek(bmp,54,SEEK_SET);
for (i=0;i<256;i++)
{
PAL[i][2]=fgetc(bmp)>>2;
PAL[i][1]=fgetc(bmp)>>2;
PAL[i][0]=fgetc(bmp)>>2;
fgetc(bmp);
setpal(i,0,0,0);
}
for (y=0;y<200;y++)
for (x=0;x<320;x++)
pokeb(0xa000,y*320+x,fgetc(bmp));
fclose(bmp);
while(!kbhit()&&Step<64)
{
StepIn();
delay(1000);
}
Step=64;
StepIn();
getch();
while(!kbhit()&&Step>0)
{
StepOut();
delay(1000);
}
Step=0;
StepOut();
farfree(Video);
/* closemode();*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -