--- /dev/null
+#include "lib\modex16.h"\r
+#include <stdio.h>
+
+#include <stdlib.h>\r
+//#include <iostream.h>
+\r
+word far* clock= (word far*) 0x046C; /* 18.2hz clock */\r
+
+//color てすと\r
+short gq = LGQ;
+
+page_t page, page2;
+
+//てすと\r
+short bakax = 0, bakay = 0;\r
+sword xx = 0, yy = 0, sx = 0, sy = 0;\r
+byte coor;\r
+
+//byte *vga = (byte *) MK_FP(0xA000, 0);
+\r
+/*\r
+ * Comment out the following #define if you don't want the testing main()\r
+ * to be included.\r
+ */\r
+//#define TILE
+
+\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((SCREEN_WIDTH-palq)+palx+32, paly+32, TILEWH, TILEWH, palcol, OP_SET);
+ modexClearRegion(page_t *page, (SCREEN_WIDTH-palq)+palx+32, paly+32, TILEWH, TILEWH, palcol);\r
+ palcol++;\r
+ }\r
+ }\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// //\r
+// cls() - This clears the screen to the specified color, on the VGA or on //\r
+// the Virtual screen. //\r
+// //\r
+/////////////////////////////////////////////////////////////////////////////\r
+void cls(byte color, byte *Where){\r
+ _fmemset(Where, color, VW*(VH*2));\r
+}\r
+\r
+//color てすと\r
+short colortest(){\r
+ if(gq < NUM_COLORS){\r
+ cls(gq, vga);\r
+ gq++;\r
+ }else gq = 0;\r
+ return gq;\r
+}\r
+\r
+//color てすと\r
+short colorz(){\r
+ if(gq <= HGQ){\r
+//---- cls(gq, vaddr);\r
+ cls(gq, vga);\r
+ gq++;\r
+ }else gq = LGQ;\r
+ return gq;\r
+}\r
+\r
+//slow spectrum down\r
+void ssd(short svq){\r
+ if(sy < SCREEN_HEIGHT+1){\r
+ if(sx < SCREEN_WIDTH+1){\r
+ //plotpixel(xx, yy, coor, vga);\r
+ //ppf(sx, sy, coor, vga);\r
+ //mxPutPixel(sx, sy, coor);
+ modexClearRegion(page_t *page, sx, sy, 1, 1, coor);
+ //printf("%d %d %d %d¥n", sx, sy, svq, coor);\r
+ sx++;\r
+ }else sx = 0;\r
+ if(sx == SCREEN_WIDTH){\r
+ sy++;\r
+ if(svq == 7) coor++;\r
+ if(sy == SCREEN_HEIGHT && svq == 8) coor = rand()%NUM_COLORS;\r
+ }\r
+ }else sy = 0;\r
+}*/\r
+\r
+/*-----------ding-------------*/\r
+short ding(int q){\r
+
+ page=modexDefaultPage();\r
+ page2 = modexNextPage(&page);\r
+ page.width += 32;\r
+ page.height += 32;
+ short d3y;\r
+\r
+//++++ if(q <= 4 && q!=2 && gq == BONK-1) coor = rand()%HGQ;\r
+ if((q == 2\r
+ ||q==4\r
+ ||q==16\r
+ ) && gq == BONK){\r
+ if(coor < HGQ && coor < LGQ) coor = LGQ;\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; /*mxOutText(SCREEN_WIDTH/2, SCREEN_HEIGHT/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
+/* if(q==6){\r
+ coor = rand()%NUM_COLORS;\r
+ cls(coor, vga);\r
+ //updatevbuff();\r
+ }\r
+\r
+ /f(q==7||q==9){\r
+ if(gq <= HGQ){\r
+ if(q == 7) ssd(q);\r
+ if(q == 9){ ssd(q); coor++; }\r
+ gq++;\r
+ }else gq = LGQ;\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==VW){bakax=0;}\r
+ if(xx==0){bakax=1;}\r
+ if(yy==VH){bakay=0;}\r
+ if(yy==0){bakay=1;}\r
+ }else if(q==3){\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==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
+ if(bakay<0){\r
+ yy--;\r
+ d3y--;\r
+ }else\r
+ if(bakay>0){\r
+ yy++;\r
+ d3y--;\r
+ }\r
+ }\r
+ if(bakax<0){\r
+ xx--;\r
+ }else\r
+ if(bakax>0){\r
+ xx++;\r
+ }\r
+ }else{\r
+ if(q==16)\r
+ {\r
+ if(!bakax){\r
+ xx--;\r
+ }else if(bakax>0){\r
+ xx++;\r
+ }\r
+ if(!bakay){\r
+ yy--;\r
+ }else if(bakay>0){\r
+ yy++;\r
+ }\r
+ }else{\r
+ if(!bakax){\r
+ #ifdef TILE\r
+ xx-=TILEWH;\r
+ #else\r
+ xx--;\r
+ #endif\r
+ }else if(bakax>1){\r
+ #ifdef TILE\r
+ xx+=TILEWH;\r
+ #else\r
+ xx++;\r
+ #endif\r
+ }\r
+ if(!bakay){\r
+ #ifdef TILE\r
+ yy-=TILEWH;\r
+ #else\r
+ yy--;\r
+ #endif\r
+ }else if(bakay>1){\r
+ #ifdef TILE\r
+ yy+=TILEWH;\r
+ #else\r
+ yy++;\r
+ #endif\r
+ }\r
+ }\r
+ }\r
+ // fixer\r
+ if(q!=16){\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
+ short tx=0,ty=0;\r
+ tx+=xx+16;\r
+ ty+=yy+16;\r
+ //mxPutPixel(tx, ty, coor);
+ modexClearRegion(page_t *page, tx, ty, 1, 1, coor);
+ //printf("%d %d %d %d %d %d¥n", xx, yy, tx, ty, TILEWH);\r
+\r
+ // plot the pixel\r
+ }else{\r
+ #ifdef TILE\r
+ //mxFillBox(xx, yy, TILEWH, TILEWH, coor, OP_SET);
+ modexClearRegion(page_t *page, xx, yy, TILEWH, TILEWH, coor);\r
+ #else\r
+ //mxPutPixel(xx, yy, coor);
+ modexClearRegion(page_t *page, xx, yy, 1, 1, coor);\r
+ #endif\r
+ } \r
+\r
+ if(q==2)\r
+ #ifdef TILE\r
+ //mxFillBox((rand()*TILEWH)%VW, (rand()*TILEWH)%(VH), TILEWH, TILEWH, 0, OP_SET);
+ modexClearRegion(page_t *page, (rand()*TILEWH)%VW, (rand()*TILEWH)%(VH), TILEWH, TILEWH, 0);\r
+ #else\r
+ //mxPutPixel(rand()%VW, rand()%(VH), 0);
+ modexClearRegion(page_t *page, rand()%VW, rand()%(VH), 1, 1, 0);\r
+ #endif\r
+ if(q==16) //mxPutPixel(rand()%VW, rand()%(VH), 0);
+ modexClearRegion(page_t *page, rand()%VW, rand()%(VH), 1, 1, 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>(SCREEN_HEIGHT*3))\r
+// printf("%d %d %d %d %d¥n", xx, yy, coor, bakax, bakay);\r
+ }else gq = LGQ;\r
+ return gq;\r
+}\r
+\r
+void main() {\r
+ int i, j;\r
+ bitmap_t bmp;\r
+ word start, end;
+ //page_t page, page2;\r
+ float elapsed;\r
+ byte *pal, *pal2=NULL;\r
+\r
+ /* load pcx file */\r
+ bmp = modexLoadPcx("ed.pcx");\r
+\r
+ /* load our palette */\r
+ modexLoadPalFile("gfx.pal", &pal2);\r
+\r
+ /* save the palette */\r
+ pal = modexNewPal();\r
+ modexPalSave(pal);\r
+ modexFadeOff(1, pal);\r
+ modexPalBlack();\r
+\r
+ setvideo(1);\r
+ modexPalBlack();\r
+\r
+ /* set up the page, but with 16 pixels on all borders in offscreen mem */\r
+ page=modexDefaultPage();\r
+ page2 = modexNextPage(&page);\r
+ page.width += 32;\r
+ page.height += 32;\r
+\r
+\r
+ /* fill the page with one color, but with a black border */\r
+ modexShowPage(&page2);\r
+ modexClearRegion(&page, 16, 16, SCREEN_WIDTH, SCREEN_HEIGHT, 128);\r
+ modexClearRegion(&page, 32, 32, SCREEN_WIDTH-32, SCREEN_HEIGHT-32, 42);\r
+ modexClearRegion(&page, 48, 48, SCREEN_WIDTH-64, SCREEN_HEIGHT-64, 128);\r
+ modexShowPage(&page);\r
+\r
+ modexDrawSprite(&page, 20, 20, &bmp);\r
+ //modexDrawBmp(&page, xb, yb, &bmp);\r
+\r
+ /* fade in */\r
+ modexFadeOn(1, pal2);\r
+\r
+\r
+ start = *clock;\r
+ //for(i=0; i<5; i++) {\r
+ while (!kbhit()){ /* Wait for a keystroke */\r
+ /* go right */\r
+ for(j=0; j<32; j++) {\r
+ page.dx++;\r
+ modexShowPage(&page);\r
+ }\r
+ /* go left */\r
+ for(j=0; j<32; j++) {\r
+ page.dx--;\r
+ modexShowPage(&page);\r
+ }\r
+ /* go up */\r
+ for(j=0; j<32; j++) {\r
+ page.dy++;\r
+ modexShowPage(&page);\r
+ }\r
+\r
+ /* go down */\r
+ for(j=0; j<32; j++) {\r
+ page.dy--;\r
+ modexShowPage(&page);\r
+ }\r
+ }\r
+\r
+ (void) getch(); /* Clear the keyboard buffer */\r
+ end = *clock;\r
+\r
+ /* fade back to text mode */\r
+ modexFadeOff(1, pal2);\r
+ modexPalBlack();\r
+ setvideo(0);\r
+ modexPalBlack();\r
+ modexFadeOn(1, pal);\r
+}\r