]> 4ch.mooo.com Git - 16.git/blobdiff - 16/dos_gfx.cpp
modified: 16/DOS_GFX.EXE
[16.git] / 16 / dos_gfx.cpp
index 40c0a24df0436767564f16af03fe9f093560b9e9..f26fd4f7de71450862b08013513d66713b964c11 100644 (file)
@@ -5,11 +5,11 @@
 \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
+syte 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
@@ -19,13 +19,14 @@ byte *vga = (byte *) MK_FP(0xA000, 0);
  * 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
@@ -36,7 +37,7 @@ void setvideo(/*byte mode, */int vq){
                                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
@@ -47,13 +48,27 @@ void setvideo(/*byte mode, */int vq){
                                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
@@ -61,11 +76,11 @@ void setvideo(/*byte mode, */int vq){
 //                                                                                                                                              //\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
@@ -74,7 +89,7 @@ int colortest(){
 }\r
 \r
 //color \82Ä\82·\82Æ\r
-int colorz(){\r
+short colorz(){\r
                if(gq < HGQ){\r
 //----           cls(gq, vaddr);\r
                                cls(gq, vga);\r
@@ -84,7 +99,7 @@ int colorz(){
 }\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
@@ -102,9 +117,9 @@ void ssd(int svq){
 }\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
@@ -119,7 +134,7 @@ int ding(int q){
                                }\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
@@ -138,17 +153,17 @@ int ding(int q){
                }\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
@@ -182,33 +197,52 @@ int ding(int q){
                                                                }\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
@@ -216,17 +250,24 @@ int ding(int q){
 \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
@@ -244,14 +285,13 @@ int ding(int q){
 \r
 int main(void)\r
                {\r
-               int key,d,xpos,ypos,xdir,ydir;
+               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
@@ -270,13 +310,14 @@ int main(void)
                                                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
@@ -286,7 +327,7 @@ int main(void)
                                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
@@ -295,48 +336,59 @@ int main(void)
                        {\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