]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/modex16.c
more oginized variables!!
[16.git] / src / lib / modex16.c
index c56a9ddcdb318c206c182fe1cb5a8cca520f56dd..01cd48ff1d7d0d94f83ffb3196b17522ee3a6c66 100755 (executable)
@@ -29,7 +29,6 @@ byte far* VGA=(byte far*) 0xA0000000;   /* this points to video memory. */
 \r
 static void fadePalette(sbyte fade, sbyte start, word iter, byte *palette);\r
 static byte tmppal[PAL_SIZE];\r
-//int old_mode;\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
 //                                                                                                                                                                                                                                             //\r
@@ -46,24 +45,16 @@ void VGAmodeX(sword vq, global_game_variables_t *gv)
                        // change to the video mode we were in before we switched to mode 13h\r
                        modexLeave();\r
                        in.h.ah = 0x00;\r
-                       in.h.al = gv->old_mode;\r
+                       in.h.al = gv->video.old_mode;\r
                        int86(0x10, &in, &out);\r
                break;\r
-               case 1: // init the video\r
+               default: // init the video\r
                        // get old video mode\r
                        //in.h.ah = 0xf;\r
                        //int86(0x10, &in, &out);\r
-                       gv->old_mode = vgaGetMode();//out.h.al;\r
+                       gv->video.old_mode = vgaGetMode();//out.h.al;\r
                        // enter mode\r
-                       modex__320x240_256__Enter(gv);\r
-               break;\r
-               case 2: // init the video\r
-                       // get old video mode\r
-                       in.h.ah = 0xf;\r
-                       int86(0x10, &in, &out);\r
-                       gv->old_mode = out.h.al;\r
-                       // enter mode\r
-                       modex__192x144_256__Enter(gv);\r
+                       modexEnter(vq, gv);\r
                break;\r
        }\r
 }\r
@@ -96,52 +87,48 @@ vgaGetMode()
 \r
 /* -========================= Entry  Points ==========================- */\r
 void\r
-modex__320x240_256__Enter(global_game_variables_t *gv)\r
+modexEnter(sword vq, global_game_variables_t *gv)\r
 {\r
        word i;\r
        dword far*ptr=(dword far*)VGA;      /* used for faster screen clearing */\r
-\r
-       int CRTParmCount = sizeof(ModeX_320x240regs) / sizeof(ModeX_320x240regs[0]);\r
-       /* width and height */\r
-       //TODO WWWW\r
-\r
+       int CRTParmCount;\r
        /* common mode X initiation stuff~ */\r
        modexsetBaseXMode();\r
 \r
-       /* send the CRTParms */\r
-       for(i=0; i<CRTParmCount; i++) {\r
-               outpw(CRTC_INDEX, ModeX_320x240regs[i]);\r
-       }\r
-\r
-       /* clear video memory */\r
-       outpw(SC_INDEX, 0x0f02);\r
-       for(i=0; i<0x8000; i++) {\r
-               ptr[i] = 0x0000;\r
-       }\r
-}\r
-\r
-void\r
-modex__192x144_256__Enter(global_game_variables_t *gv)\r
-{\r
-       word i;\r
-       dword far*ptr=(dword far*)VGA;      /* used for faster screen clearing */\r
+       switch(vq)\r
+       {\r
+               case 0:\r
+                       CRTParmCount = sizeof(ModeX_320x240regs) / sizeof(ModeX_320x240regs[0]);\r
+                       /* width and height */\r
+                       //TODO add width and height of screen\r
 \r
-       int CRTParmCount = sizeof(ModeX_192x144regs) / sizeof(ModeX_192x144regs[0]);\r
-       /* width and height */\r
-       //TODO WWWW\r
+                       /* send the CRTParms */\r
+                       for(i=0; i<CRTParmCount; i++) {\r
+                               outpw(CRTC_INDEX, ModeX_320x240regs[i]);\r
+                       }\r
 \r
-       /* common mode X initiation stuff~ */\r
-       modexsetBaseXMode();\r
+                       /* clear video memory */\r
+                       outpw(SC_INDEX, 0x0f02);\r
+                       for(i=0; i<0x8000; i++) {\r
+                               ptr[i] = 0x0000;\r
+                       }\r
+               break;\r
+               case 1:\r
+                       CRTParmCount = sizeof(ModeX_192x144regs) / sizeof(ModeX_192x144regs[0]);\r
+                       /* width and height */\r
+                       //TODO add width and height of screen\r
 \r
-       /* send the CRTParms */\r
-       for(i=0; i<CRTParmCount; i++) {\r
-               outpw(CRTC_INDEX, ModeX_192x144regs[i]);\r
-       }\r
+                       /* send the CRTParms */\r
+                       for(i=0; i<CRTParmCount; i++) {\r
+                               outpw(CRTC_INDEX, ModeX_192x144regs[i]);\r
+                       }\r
 \r
-       /* clear video memory */\r
-       outpw(SC_INDEX, 0x0f02);\r
-       for(i=0; i<0x8000; i++) {\r
-               ptr[i] = 0x0000;\r
+                       /* clear video memory */\r
+                       outpw(SC_INDEX, 0x0f02);\r
+                       for(i=0; i<0x8000; i++) {\r
+                               ptr[i] = 0x0000;\r
+                       }\r
+               break;\r
        }\r
 }\r
 \r
@@ -190,8 +177,8 @@ modexDefaultPage() {
     page.data = VGA;\r
     page.dx = 0;\r
     page.dy = 0;\r
-    page.width = SCREEN_WIDTH;\r
-    page.height = SCREEN_HEIGHT;\r
+       page.width = SCREEN_WIDTH;\r
+       page.height = SCREEN_HEIGHT;\r
        page.tw = page.width/TILEWH;\r
        page.th = page.height/TILEWH;\r
        page.id = 0;\r
@@ -1314,6 +1301,21 @@ void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, c
        }\r
 }\r
 \r
+/* palette dump on display! */\r
+void pdump(page_t *pee)\r
+{\r
+       int mult=(QUADWH);\r
+       int palq=(mult)*TILEWH;\r
+       int palcol=0;\r
+       int palx, paly;\r
+       for(paly=0; paly<palq; paly+=mult){\r
+               for(palx=0; palx<palq; palx+=mult){\r
+                               modexClearRegion(pee, palx+TILEWH, paly+TILEWH, mult, mult, 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