📄 demo1.c
字号:
for(j=0;j<ScrnPhysicalHeight;j++){
x_line(0,j,ScrnLogicalPixelWidth,j,16+(j%239),VisiblePageOffs);
}
ctrlbrk(terminate);
x_get_pal_struc(pal, 240,16);
load_user_fonts();
intro_1();
x_set_font(2);
x_hide_mouse();
x_printf(textwindow_x+5,50 ,VisiblePageOffs,9, " Hi, folks. This is yet another FREEWARE Mode X");
x_printf(textwindow_x+5,50+8 ,VisiblePageOffs,9, " graphics library. It is by no means complete,");
x_printf(textwindow_x+5,50+16,VisiblePageOffs,9, " but I believe it contains a rich enough set of");
x_printf(textwindow_x+5,50+24,VisiblePageOffs,9, " functions to achieve its design goal - to be");
x_printf(textwindow_x+5,50+32,VisiblePageOffs,9, " a game development oriented library for");
x_printf(textwindow_x+5,50+40,VisiblePageOffs,9, " Borland TC/BC/BC++ and TASM programmers.");
x_printf(textwindow_x+5,50+48,VisiblePageOffs,9, " This library comes with TASM and C sources.");
x_printf(textwindow_x+5,50+56,VisiblePageOffs,9, " It was inspired by the DDJ Graphics column and");
x_printf(textwindow_x+5,50+64,VisiblePageOffs,9, " many INTERNET and USENET authors who, unlike the");
x_printf(textwindow_x+5,50+72,VisiblePageOffs,9, " majority of programmers (you know who you are!),");
x_printf(textwindow_x+5,50+80,VisiblePageOffs,9, " willingly share their code and ideas with others.");
x_printf(textwindow_x+5,50+88,VisiblePageOffs,9, " I can't afford, nor do I want, to copyright");
x_printf(textwindow_x+5,50+96,VisiblePageOffs,9, " this code - but if you use it, some credit would ");
x_printf(textwindow_x+5,50+104,VisiblePageOffs,9," be appreciated. ");
wait_for_keypress();
subsequent_page();
x_set_font(0);
x_printf(textwindow_x+24,textwindow_y+18,VisiblePageOffs,6,"Supported 256 colour resolutions.");
x_printf(textwindow_x+23,textwindow_y+17,VisiblePageOffs,3,"Supported 256 colour resolutions.");
x_set_font(2);
x_printf(textwindow_x+5,50 ,VisiblePageOffs,9, " 320x200 Standard for games ~ 4 pages");
x_printf(textwindow_x+5,50+8 ,VisiblePageOffs,9, " 320x240 DDJ Mode X square pixels ~ 3.5 pages");
x_printf(textwindow_x+5,50+16,VisiblePageOffs,9, " 360x200 My favourite for games ~ 3 pages ");
x_printf(textwindow_x+5,50+24,VisiblePageOffs,9, " 360x240 ~ 2.8 pages");
x_printf(textwindow_x+5,50+32,VisiblePageOffs,9, " 320x400 ~ 2 pages ");
x_printf(textwindow_x+5,50+40,VisiblePageOffs,9, " 320x480 All subsequent modes support");
x_printf(textwindow_x+5,50+48,VisiblePageOffs,9, " 360x400 less than two pages.");
x_printf(textwindow_x+5,50+56,VisiblePageOffs,9, " 360x480");
x_printf(textwindow_x+5,50+64,VisiblePageOffs,9, " 376x282,360x360,376x308,376x564,256x200,256x240");
x_printf(textwindow_x+5,50+72,VisiblePageOffs,9, " Phew! and they'll run on all VGA cards and ");
x_printf(textwindow_x+5,50+80,VisiblePageOffs,9, " monitors (some of the weird ones are best suited");
x_printf(textwindow_x+5,50+88,VisiblePageOffs,9, " to monitors with both vert & horiz adjustments)");
x_printf(textwindow_x+5,50+98,VisiblePageOffs,2, " ");
x_printf(textwindow_x+5,50+106,VisiblePageOffs,2," Overkill? Maybe!! ");
wait_for_keypress();
subsequent_page();
x_printf(textwindow_x+24,textwindow_y+18,VisiblePageOffs,6," Text display functions.");
x_printf(textwindow_x+23,textwindow_y+17,VisiblePageOffs,3," Text display functions.");
x_set_font(2);
x_printf(textwindow_x+5,50 ,VisiblePageOffs,9, " Several text printing functions are provided.");
x_printf(textwindow_x+5,50+8 ,VisiblePageOffs,9, " They support the VGA ROM 8x14 and 8x8 fonts as");
x_printf(textwindow_x+5,50+16,VisiblePageOffs,9, " well as user-defined fonts (like this 6x8 font).");
x_printf(textwindow_x+5,50+24,VisiblePageOffs,9, " Furthermore, a function similar to printf is");
x_printf(textwindow_x+5,50+32,VisiblePageOffs,9, " included which provides formatted text output.");
x_printf(textwindow_x+5,50+40,VisiblePageOffs,9, " User defined fonts may be proportionally spaced");
x_printf(textwindow_x+5,50+58,VisiblePageOffs,9, " but have a maximum width of 8 pixels.");
wait_for_keypress();
subsequent_page();
x_printf(textwindow_x+24,textwindow_y+18,VisiblePageOffs,6," Advanced screen functions.");
x_printf(textwindow_x+23,textwindow_y+17,VisiblePageOffs,3," Advanced screen functions.");
x_set_font(2);
x_printf(textwindow_x+5,50 ,VisiblePageOffs,9, " The library supports virtual screens larger");
x_printf(textwindow_x+5,50+8 ,VisiblePageOffs,9, " than the physical screen, panning of such");
x_printf(textwindow_x+5,50+16,VisiblePageOffs,9, " screens, and a split screen option.");
x_printf(textwindow_x+5,50+24,VisiblePageOffs,9, " These functions can be used together or");
x_printf(textwindow_x+5,50+32,VisiblePageOffs,9, " in isolation, and in the lower resolutions");
x_printf(textwindow_x+5,50+40,VisiblePageOffs,9, " double buffering can also be accomplished.");
x_rect_fill(0, 0, ScrnPhysicalPixelWidth,60,SplitScrnOffs,5);
x_line(0,0,ScrnPhysicalPixelWidth,0,2,SplitScrnOffs);
x_set_font(1);
x_printf(10,10,SplitScrnOffs,2, " This is a split screen, tops for scores.");
x_set_font(0);
for (i=ScrnPhysicalHeight;i>ScrnPhysicalHeight-60;i--){
x_adjust_splitscreen(i);
}
x_printf(10,25,SplitScrnOffs,2, " Even better for scrolling games etc.");
x_cp_vid_rect(0,0,ScrnLogicalPixelWidth,ScrnLogicalHeight,0,0,
VisiblePageOffs,HiddenPageOffs,
ScrnLogicalPixelWidth,ScrnLogicalPixelWidth);
x_show_mouse();
wait_for_keypress();
curr_x=curr_y=0;
init_object(60,90,4, 12, -1, 1, MK_FP(FP_SEG(bm2),FP_OFF(bm2)));
init_object(30,30,4, 12, 1, 1, MK_FP(FP_SEG(bm),FP_OFF(bm)));
init_object(80,120,4, 12, 2, 1, MK_FP(FP_SEG(bm),FP_OFF(bm)));
init_object(300,200,4, 12, 1, -2, MK_FP(FP_SEG(bm),FP_OFF(bm)));
init_object(360,30,4, 12, -1, -1, MK_FP(FP_SEG(bm),FP_OFF(bm)));
init_object(360,10,4, 12, -2, 2, MK_FP(FP_SEG(bm),FP_OFF(bm)));
x_hide_mouse();
while (!kbhit()&& !(MouseButtonStatus==LEFT_PRESSED)){
animate();
if (objects[0].X>=curr_x+ScrnPhysicalPixelWidth-32 &&
curr_x < MaxScrollX) curr_x++;
else if (objects[0].X < curr_x+16 && curr_x > 0) curr_x--;
if (objects[0].Y>=curr_y+ScrnPhysicalHeight-92 &&
curr_y < MaxScrollY) curr_y++;
else if (objects[0].Y < curr_y+16 && curr_y > 0) curr_y--;
x_page_flip(curr_x,curr_y);
while(StartAddressFlag);
}
while(MouseButtonStatus==LEFT_PRESSED);
while(kbhit()) getch();
clear_objects();
x_page_flip(curr_x,curr_y);
while(StartAddressFlag);
x_set_start_addr(0,0);
for (j=0;j<4;j++){
x_hide_splitscreen();
delay(100);
x_show_splitscreen();
delay(100);
}
for (i=ScrnPhysicalHeight-60;i<=ScrnPhysicalHeight;i++){
x_adjust_splitscreen(i);
}
x_hide_mouse();
subsequent_page();
x_printf(textwindow_x+24,textwindow_y+18,VisiblePageOffs,6," Palette functions.");
x_printf(textwindow_x+23,textwindow_y+17,VisiblePageOffs,3," Palette functions.");
x_set_font(2);
x_printf(textwindow_x+5,50 ,VisiblePageOffs,9, " A number of palette manipulation functions");
x_printf(textwindow_x+5,50+8 ,VisiblePageOffs,9, " are provided. You have already seen some of");
x_printf(textwindow_x+5,50+16,VisiblePageOffs,9, " them in action. Another common operation is");
x_printf(textwindow_x+5,50+24,VisiblePageOffs,9, " palette fading. ");
i=0;
ch=255;
while (x_cpcontrast_pal_struc(pal, pal2,ch-=2)){
x_put_pal_struc(pal2);
x_rot_pal_struc(pal,palscrolldir);
i++;
};
for (j=0;j<i;j++){
x_cpcontrast_pal_struc(pal, pal2,ch+=2);
x_put_pal_struc(pal2);
x_rot_pal_struc(pal,palscrolldir);
};
wait_for_keypress();
subsequent_page();
x_printf(textwindow_x+24,textwindow_y+18,VisiblePageOffs,6," NEW Version 3.0 Functions!");
x_printf(textwindow_x+23,textwindow_y+17,VisiblePageOffs,3," NEW Version 3.0 Functions!");
x_set_font(2);
x_printf(textwindow_x+5,50 ,VisiblePageOffs,9, " NEW functions not demonstrated here include:");
x_printf(textwindow_x+5,50+10,VisiblePageOffs,9, " - RLE data compression");
x_printf(textwindow_x+5,50+20,VisiblePageOffs,9, " - FAST compiled masked bitmaps");
x_printf(textwindow_x+5,50+30,VisiblePageOffs,9, " - Hardware detection");
x_show_mouse();
wait_for_keypress();
x_hide_mouse();
for (i = 0; i < 150; i++) {
x_circle(0, 0, i, 181 - i, VisiblePageOffs);
x_circle(360 - i, 0, i, i + 30, VisiblePageOffs);
x_circle(0, 200 - i, i, i + 30, VisiblePageOffs);
x_circle(360 - i, 200 - i, i, 181 - i, VisiblePageOffs);
}
for (i = 0; i < 100; i++)
x_filled_circle(80 + i, i, 201 - (i << 1), 30+i, VisiblePageOffs);
x_show_mouse();
wait_for_keypress();
subsequent_page();
x_printf(textwindow_x+24,textwindow_y+18,VisiblePageOffs,6," NEW Version 4.0 Functions!");
x_printf(textwindow_x+23,textwindow_y+17,VisiblePageOffs,3," NEW Version 4.0 Functions!");
x_set_font(2);
x_printf(textwindow_x+5,50 ,VisiblePageOffs,9, " NEW functions not demonstrated here include:");
x_printf(textwindow_x+5,50+10,VisiblePageOffs,9, " - FAST VRAM-based masked bitmaps, including");
x_printf(textwindow_x+5,50+18,VisiblePageOffs,9, " support for clipping regions");
x_printf(textwindow_x+5,50+28,VisiblePageOffs,9, " - Faster, smaller compiled bitmaps");
x_printf(textwindow_x+5,50+38,VisiblePageOffs,9, " - Improved planar bitmap performance and");
x_printf(textwindow_x+5,50+46,VisiblePageOffs,9, " additional support for clipping");
x_printf(textwindow_x+5,50+56,VisiblePageOffs,9, " - mouse module");
x_printf(textwindow_x+5,50+66,VisiblePageOffs,9, " - Detection of math co-processor and mouse");
x_printf(textwindow_x+5,50+76,VisiblePageOffs,9, " - Bezier curve module");
x_printf(textwindow_x+5,50+86,VisiblePageOffs,9, " - Four new resolutions, including one with");
x_printf(textwindow_x+5,50+94,VisiblePageOffs,9, " square pixels (376x282)");
x_printf(textwindow_x+5,50+104,VisiblePageOffs,9, " - More bug fixes");
wait_for_keypress();
subsequent_page();
x_printf(textwindow_x+24,textwindow_y+18,VisiblePageOffs,6," NEW Version 5.0 Functions!");
x_printf(textwindow_x+23,textwindow_y+17,VisiblePageOffs,3," NEW Version 5.0 Functions!");
x_set_font(2);
x_printf(textwindow_x+5,50 ,VisiblePageOffs,9, " - *FAST* filled and clipped triangles ideal for");
x_printf(textwindow_x+5,50+10,VisiblePageOffs,9, " 3D work. Thanks to S. Dollins for the code.");
x_printf(textwindow_x+5,50+20,VisiblePageOffs,9, " - Filled and clipped polygons, C++ Compatible");
x_printf(textwindow_x+5,50+30,VisiblePageOffs,9, " - header files, and of course bug fixes!");
x_show_mouse();
wait_for_keypress();
subsequent_page();
x_printf(textwindow_x+24,textwindow_y+18,VisiblePageOffs,6," NEW Version 6.0 Functions!");
x_printf(textwindow_x+23,textwindow_y+17,VisiblePageOffs,3," NEW Version 6.0 Functions!");
x_set_font(2);
x_printf(textwindow_x+5,50 ,VisiblePageOffs,9, " - Fast flood filling functions ");
x_printf(textwindow_x+5,50+10,VisiblePageOffs,9, " - New pbm flipping put functions.");
x_printf(textwindow_x+5,50+20,VisiblePageOffs,9, " - Timer synchronized vertical retrace");
x_printf(textwindow_x+5,50+30,VisiblePageOffs,9, " - Tripple buffering extensions");
x_printf(textwindow_x+5,50+40,VisiblePageOffs,9, " Checkout demo 9 and 10 for previews");
x_show_mouse();
wait_for_keypress();
randomize();
x_hide_mouse();
while(kbhit()) getch();
palscrolldir^=1;
do {
int x0,x1,x2,y0,y1,y2,i;
i=random(256);
x0=random(ScrnLogicalPixelWidth);
x1=random(ScrnLogicalPixelWidth);
x2=random(ScrnLogicalPixelWidth);
y0=random(ScrnPhysicalHeight);
y1=random(ScrnPhysicalHeight);
y2=random(ScrnPhysicalHeight);
x_triangle(x0,y0,x1,y1,x2,y2,i,VisiblePageOffs);
} while (!kbhit() && !(MouseButtonStatus==LEFT_PRESSED));
while(MouseButtonStatus==LEFT_PRESSED);
while(kbhit()) getch();
x_show_mouse();
subsequent_page();
x_printf(textwindow_x+24,textwindow_y+18,VisiblePageOffs,6," PLEASE...");
x_printf(textwindow_x+23,textwindow_y+17,VisiblePageOffs,3," PLEASE...");
x_set_font(2);
x_printf(textwindow_x+5,50 ,VisiblePageOffs,9, " Please mention my name in programs that use XLIB");
x_printf(textwindow_x+5,50+8 ,VisiblePageOffs,9, " just to make me feel it was worth the effort.");
x_printf(textwindow_x+5,50+16,VisiblePageOffs,9, " If you have any bug to report please feel free to");
x_printf(textwindow_x+5,50+24,VisiblePageOffs,9, " mail me a message. Any hints, suggestions and");
x_printf(textwindow_x+5,50+32,VisiblePageOffs,9, " contributions are welcome and encouraged.");
x_printf(textwindow_x+5,50+52,VisiblePageOffs,9, " I have contributed this code to the public domain.");
x_printf(textwindow_x+5,50+60,VisiblePageOffs,9, " Please respect my wishes and leave it there.");
x_printf(textwindow_x+5,50+80,VisiblePageOffs,9, " Finally, I hope you all find this stuff useful,");
x_printf(textwindow_x+5,50+96,VisiblePageOffs,9, " Themie Gouthas - EGG@DSTOS3.DSTO.GOV.AU");
wait_for_keypress();
x_hide_mouse();
x_shift_rect (27, 27, 360-27, 177, 27, 23, VisiblePageOffs);
x_rect_fill(25, 173, 335, 176, VisiblePageOffs, 1);
for (i = 0; i < 50; i++) {
x_shift_rect (27, 26, 360-27, 177 - (i * 3), 27, 23, VisiblePageOffs);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -