//DOS Graphics thingy by sparky4 licence GPL v2\r
//a special thanks to everyone to release source code for mode X\r
/*src\lib\*/\r
-#include "dos_gfx.h"\r
+#include "dos_gfx.h"
+//#include "lib\modex16.h" //____\r
\r
int old_mode;\r
//color \82Ä\82·\82Æ\r
-int gq = LGQ;\r
+short gq = LGQ;\r
+\r
//\82Ä\82·\82Æ\r
-int q = 0;\r
-int bakax = 0, bakay = 0;\r
-cord xx = rand()&0%320, yy = rand()&0%240, sx = 0, sy = 0;\r
+short bakax = 0, bakay = 0;\r
+word xx = rand()&0%SW, yy = rand()&0%SH, sx = 0, sy = 0;\r
byte coor;\r
\r
byte *vga = (byte *) MK_FP(0xA000, 0);\r
* to be included.\r
*/\r
#define TESTING\r
+//#define TILE\r
\r
/////////////////////////////////////////////////////////////////////////////\r
// //\r
// setvideo() - This function Manages the video modes //\r
// //\r
/////////////////////////////////////////////////////////////////////////////\r
-void setvideo(/*byte mode, */int vq){\r
+void setvideo(/*byte mode, */short vq){\r
union REGS in, out;\r
\r
if(!vq){ // deinit the video\r
in.h.al = old_mode;\r
int86(0x10, &in, &out);\r
\r
- }else if(vq == 1){ // init the video\r
+ }else if(vq==1){ // init the video\r
// get old video mode\r
in.h.ah = 0xf;\r
int86(0x10, &in, &out);\r
mxSetMode( MX_320x240 );\r
// mxSetVirtualScreen(SW+(SW/4), SH+(SH/4));\r
// mxSetVirtualScreen(SW*2, SH*2);\r
- mxSetVirtualScreen(VW,VH);\r
+ mxSetVirtualScreen(VW,BH);\r
// mxSetVirtualScreen((640-(TILEWH*4)),(480-(TILEWH*4)));\r
- mxSetClip(0);\r
- //mxSetClipRegion(0, 0, SW, SH);\r
+ mxSetClip(true);\r
+ mxSetClipRegion(0, 0, VW, BH);\r
+ mxPan(TILEWH*2,TILEWH*2);\r
+ //mxSetClipRegion(0, VH+1, VW, (TILEWH*BUFFMX));\r
}\r
}\r
\r
+void pdump(){\r
+ int mult=(QUADWH)/2;\r
+ int palq=(mult)*16;\r
+ int palcol=0;\r
+ for(int paly=0; paly<palq; paly+=mult){\r
+ for(int palx=0; palx<palq; palx+=mult){\r
+ mxFillBox((SW-palq)+palx+32, paly+32, TILEWH, TILEWH, palcol, OP_SET);\r
+ palcol++;\r
+ }\r
+ }\r
+}\r
+\r
/////////////////////////////////////////////////////////////////////////////\r
// //\r
// cls() - This clears the screen to the specified color, on the VGA or on //\r
// //\r
/////////////////////////////////////////////////////////////////////////////\r
void cls(byte color, byte *Where){\r
- _fmemset(Where, color, VW*(VH));\r
+ _fmemset(Where, color, VW*(VH*2));\r
}\r
\r
//color \82Ä\82·\82Æ\r
-int colortest(){\r
+short colortest(){\r
if(gq < NUM_COLORS){\r
cls(gq, vga);\r
gq++;\r
}\r
\r
//color \82Ä\82·\82Æ\r
-int colorz(){\r
- if(gq < HGQ){\r
+short colorz(){\r
+ if(gq <= HGQ){\r
//---- cls(gq, vaddr);\r
cls(gq, vga);\r
gq++;\r
}\r
\r
//slow spectrum down\r
-void ssd(int svq){\r
+void ssd(short svq){\r
if(sy < SH+1){\r
if(sx < SW+1){\r
//plotpixel(xx, yy, coor, vga);\r
}\r
\r
/*-----------ding-------------*/\r
-int ding(int q){\r
+short ding(int q){\r
\r
- int d3y;\r
+ short d3y;\r
\r
//++++ if(q <= 4 && q!=2 && gq == BONK-1) coor = rand()%HGQ;\r
if((q == 2\r
||q==16\r
) && gq == BONK){\r
if(coor < HGQ && coor < LGQ) coor = LGQ;\r
- if(coor < HGQ-1){\r
+ if(coor < HGQ){\r
coor++;\r
}else{ coor = LGQ;\r
bakax = rand()%3; bakay = rand()%3;\r
}\r
}\r
\r
- if(q==8){ colorz(); return gq; }else\r
+ if(q==8){ colorz(); return gq; mxOutText(SW/2, SH/2, "bakapi"); }else\r
if(q==10){ ssd(q); /*printf("%d\n", coor);*/ }else\r
if(q==5){ colortest(); return gq; }else\r
if(q==11){ colorz(); delay(100); return gq; }\r
}\r
\r
if(q==7||q==9){\r
- if(gq < HGQ){\r
+ if(gq <= HGQ){\r
if(q == 7) ssd(q);\r
if(q == 9){ ssd(q); coor++; }\r
gq++;\r
}\r
if((q<5 && gq<BONK) || (q==16 && gq<BONK)){ // the number variable make the colors more noticable\r
if(q==1){\r
- if(xx==SW){bakax=0;}\r
+ if(xx==VW){bakax=0;}\r
if(xx==0){bakax=1;}\r
- if(yy==SH){bakay=0;}\r
+ if(yy==VH){bakay=0;}\r
if(yy==0){bakay=1;}\r
}else if(q==3){\r
- if(xx!=SW||yy!=SH){\r
+ if(xx!=VW||yy!=VH){\r
if(xx==0){bakax=1;bakay=-1;d3y=1;}\r
if(yy==0){bakax=1;bakay=0;d3y=1;}\r
- if(xx==SW){bakax=-1;bakay=-1;d3y=1;}\r
- if(yy==SH){bakax=1;bakay=0;d3y=1;}\r
- }else if(xx==SW&&yy==SH) xx=yy=0;\r
+ if(xx==VW){bakax=-1;bakay=-1;d3y=1;}\r
+ if(yy==VH){bakax=1;bakay=0;d3y=1;}\r
+ }else if(xx==VW&&yy==VH) xx=yy=0;\r
}\r
if(q==3){\r
if(d3y){\r
}\r
}else{\r
if(!bakax){\r
-// xx-=TILEWH;\r
+ #ifdef TILE\r
+ xx-=TILEWH;\r
+ #else\r
xx--;\r
+ #endif\r
}else if(bakax>1){\r
-// xx+=TILEWH;\r
+ #ifdef TILE\r
+ xx+=TILEWH;\r
+ #else\r
xx++;\r
+ #endif\r
}\r
if(!bakay){\r
-// yy-=TILEWH;\r
+ #ifdef TILE\r
+ yy-=TILEWH;\r
+ #else\r
yy--;\r
+ #endif\r
}else if(bakay>1){\r
-// yy+=TILEWH;\r
+ #ifdef TILE\r
+ yy+=TILEWH;\r
+ #else\r
yy++;\r
+ #endif\r
}\r
}\r
}\r
// fixer\r
if(q!=16){\r
- if(xx<0) xx=(VW/*-TILEWH*/);\r
- if(yy<0) yy=(VH/*-TILEWH*/);\r
- if(xx>(VW/*-TILEWH*/)) xx=0;\r
- if(yy>(VH/*-TILEWH*/)) yy=0;\r
+ #ifdef TILE\r
+ if(xx<0) xx=(VW-TILEWH);\r
+ if(yy<0) yy=(VH-TILEWH);\r
+ if(xx>(VW-TILEWH)) xx=0;\r
+ if(yy>(VH-TILEWH)/*+(TILEWH*BUFFMX)*/) yy=0;\r
+ #else\r
+ if(xx<0) xx=VW;\r
+ if(yy<0) yy=VH;\r
+ if(xx>VW) xx=0;\r
+ if(yy>VH) yy=0;\r
+ #endif\r
}\r
\r
//interesting effects\r
if(q==16)\r
{\r
- int tx=0,ty=0;\r
+ short tx=0,ty=0;\r
tx+=xx+16;\r
ty+=yy+16;\r
mxPutPixel(tx, ty, coor);\r
\r
// plot the pixel\r
}else{\r
-// mxFillBox(xx, yy, TILEWH, TILEWH, coor, 16);\r
+ #ifdef TILE\r
+ mxFillBox(xx, yy, TILEWH, TILEWH, coor, OP_SET);\r
+ #else\r
mxPutPixel(xx, yy, coor);\r
+ #endif\r
} \r
\r
- if(q==2) mxPutPixel(rand()%VW, rand()%(VH), 0);\r
+ if(q==2)\r
+ #ifdef TILE\r
+ mxFillBox((rand()*TILEWH)%VW, (rand()*TILEWH)%(VH), TILEWH, TILEWH, 0, OP_SET);\r
+ #else\r
+ mxPutPixel(rand()%VW, rand()%(VH), 0);\r
+ #endif\r
if(q==16) mxPutPixel(rand()%VW, rand()%(VH), 0);\r
if(q==2||q==4||q==16){ bakax = rand()%3; bakay = rand()%3; } //random 3 switch\r
gq++;\r
//if(xx<0||xx>320||yy<0||yy>(SH*3))\r
-// printf("%d %d %d %d %d %d\n", xx, yy, coor, bakax, bakay, getPixel_X(xx,yy));\r
-// printf("%d\n", getPixel_X(xx,yy));\r
+// printf("%d %d %d %d %d\n", xx, yy, coor, bakax, bakay);\r
}else gq = LGQ;\r
return gq;\r
}\r
*/\r
\r
int main(void)\r
- {\r
- int key,d,xpos,ypos,xdir,ydir;
+ {
+ //bitmap_t bmp; //____
+ //bmp = modexLoadPcx("chikyuu.pcx"); //____\r
+ short key,d,xpos,ypos,xdir,ydir;\r
int ch=0x0;\r
- //short int temp;\r
// main variables\r
- d=1; // switch variable\r
- key=4; // default screensaver number\r
- xpos=0;\r
- ypos=0;\r
+ d=4; // switch variable\r
+ key=2; // default screensaver number\r
+ xpos=TILEWH*2;\r
+ ypos=TILEWH*2;\r
xdir=1;\r
ydir=1;\r
- setvideo(1);\r
+ setvideo(1);
+ //modexPalUpdate(bmp.palette); //____
+ //modexDrawBmp(VGA, 0, 0, &bmp, 0); //____
+ //getch(); //____\r
// screen savers\r
\r
/*while(d!=0){ // on!\r
setvideo(1);\r
}\r
}*/ // else off\r
- while(1){ // conditions of screen saver
+ //mxFillBox(0, 0, VW, BH, 10, OP_SET);\r
+ while(1){ // conditions of screen saver\r
while(!kbhit()){\r
- ding(key);
+ ding(key);\r
}\r
//end of screen savers\r
//doTest();\r
- for (int x = 0; x < VW; ++x)\r
+/* for (int x = 0; x < VW; ++x)\r
{\r
mxPutPixel(x, 0, 15);\r
mxPutPixel(x, SH-1, 15);\r
mxPutPixel(0, y, 15);\r
mxPutPixel(SW-1, y, 15);\r
}\r
- for (int x = 320; x < VW; ++x)\r
+ for (int x = 0; x < VW; ++x)\r
{\r
mxPutPixel(x, 0, 15);\r
mxPutPixel(x, VH-1, 15);\r
{\r
mxPutPixel(0, y, 15);\r
mxPutPixel(VW-1, y, 15);\r
- }
- \r
- getch();\r
- //mxFillBox(xx, yy, QUADWH, QUADWH, 1, 16);
- //mxFillBox(xx, yy, QUADWH, QUADWH, 2, 16);
- //mxFillBox(xx, yy, QUADWH, QUADWH, 3, 16);
- //mxFillBox(xx, yy, QUADWH, QUADWH, 4, 16);\r
- mxSetTextColor(16, OP_TRANS);\r
- mxOutText(56, SH-40, "CRAZY!!!!]");\r
- mxOutText(64, SH-32, "CRAZY!!!!]");\r
- mxOutText(64, SH-24, "____ CRAZY!!!!]");\r
- mxOutText(56, SH-16, "___ _ CRAZY!!!!]");\r
- getch();\r
+ }\r
+ */\r
+ pdump();\r
+ getch();\r
+ //text box\r
+ mxSetTextColor(10, OP_TRANS); //set font\r
+ mxBitBlt(xpos, ypos+(TILEWH*12), SW, TILEWH*BUFFMX, 0, BS); //copy background\r
+ mxFillBox(xpos, ypos+(TILEWH*12), SW, TILEWH*BUFFMX, 0, OP_SET); // background for text box\r
+ //+(QUADWH*6)\r
+ mxOutText(xpos+1, ypos+SH-48, "========================================");\r
+ mxOutText(xpos+1, ypos+SH-40, "| |Chikyuu:$line1");\r
+ mxOutText(xpos+1, ypos+SH-32, "| |$line2");\r
+ mxOutText(xpos+1, ypos+SH-24, "| |$line3");\r
+ mxOutText(xpos+1, ypos+SH-16, "| |$line4");\r
+ mxOutText(xpos+1, ypos+SH-8, "========================================");\r
+ mxFillBox(xpos+QUADWH, ypos+QUADWH+(TILEWH*12), TILEWH*2, TILEWH*2, 9, OP_SET); //portriat~\r
+ getch();\r
+ mxBitBlt(0, BS, SW, TILEWH*BUFFMX, xpos, ypos+(TILEWH*12)); //copy background\r
+ getch();\r
while(!kbhit()){\r
-// hScroll(1);\r
-// scrolly(1);\r
-// vScroll(1);\r
-// delay(100);\r
//for(int i=0;i<TILEWH;i++){\r
+ \r
ding(key);\r
- //mxOutText(64, SH-40, "CRAZY!!!!");\r
- //mxOutText(64, SH-32, "CRAZY!!!!");\r
- //mxOutText(64, SH-24, " _ CRAZY!!!!");\r
- //mxOutText(64, SH-16, " _ _ CRAZY!!!!");
mxPan(xpos,ypos);\r
- for(int o = 0; o<TILEWH; o++){
+mxFillBox(384, 304, 384, 304, 10, OP_SET);\r
+//mxBitBlt(xpos, ypos, SW, SH, 32, (SH+64+32));\r
+mxBitBlt(TILEWH*2, TILEWH*2, SW, SH, 32, (SH+64+32));\r
+ //for(short o = 0; o<TILEWH; o++){\r
xpos+=xdir;\r
- ypos+=ydir;
- //mxWaitRetrace();
- }\r
+ ypos+=ydir;\r
+ //if(ypos==1 || (ypos==(BH-SH-1)))delay(500);\r
+ //if((xpos>(VW-SW-1)) || (xpos<1))delay(500);\r
+ //mxWaitRetrace();\r
+//mxBitBlt(32, (SH+32), SW, SH, xpos, ypos);\r
+mxBitBlt(TILEWH*2, (SH+64+32), SW, SH, TILEWH*2, TILEWH*2);\r
+//xpos=ypos=TILEWH*2;\r
+mxPan(32,32);\r
+ //}\r
if( (xpos>(VW-SW-1)) || (xpos<1)){xdir=-xdir;}\r
- if( (ypos>(VH-SH-1)) || (ypos<1)){ydir=-ydir;} // { Hit a boundry, change\r
+ if( (ypos>(BH-SH-1)) || (ypos<1)){ydir=-ydir;} // { Hit a boundry, change\r
// direction! }\r
- }
- ch=getch();
+//mxBitBlt(32, (SH+64+32), SW, SH, xpos, ypos);\r
+//mxBitBlt(TILEWH*2, (SH+64+32), SW, SH, TILEWH*2, TILEWH*2);\r
+ }\r
+ ch=getch();\r
if(ch==0x71)break; // 'q'\r
if(ch==0x1b)break; // 'ESC'\r
}\r
setvideo(0);\r
- printf("wwww\nResolution: %dx%d\n", SW,SH);\r
+ printf("wwww\nFull Buffer Virtual Resolution: %dx%d\n", VW,BH);\r
+ printf("Virtual Resolution: %dx%d\n", VW,VH);\r
+ printf("Resolution: %dx%d\n", SW,SH);\r
printf("Mode X Library Version: %d\n", mxGetVersion());\r
- //puts("where to next? It's your move! wwww");\r
printf("bakapi ver. 1.04.09.04\nis made by sparky4\81i\81\86\83Ö\81\85\81j feel free to use it ^^\nLicence: GPL v2\n");\r
return 0;\r
}\r