]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/modex16.c
revert!
[16.git] / src / lib / modex16.c
index 27ad067757bf51701e7c4775c43e015a2daf2cae..de79999c52e337d474d681d93597b421b3a80e6f 100755 (executable)
@@ -151,7 +151,7 @@ page_t
 modexNextPage(page_t *p) {\r
     page_t result;\r
 \r
-    result.data = p->data + (p->width/4)*p->height;  /* compute the offset */\r
+    result.data = p->data + (p->width/4)*p->height;\r
     result.dx = 0;\r
     result.dy = 0;\r
     result.width = p->width;\r
@@ -159,11 +159,12 @@ modexNextPage(page_t *p) {
         result.id = p->id+1;\r
 \r
     return result;\r
+//     return modexNextPageFlexibleSize(&p, p->width, p->height);\r
 }\r
 \r
 //next page with defined dimentions~\r
 page_t\r
-modexNextPage0(page_t *p, word x, word y)\r
+modexNextPageFlexibleSize(page_t *p, word x, word y)\r
 {\r
         page_t result;\r
 \r
@@ -284,24 +285,46 @@ modexClearRegion(page_t *page, int x, int y, int w, int h, byte  color) {
 void\r
 oldDrawBmp(byte far* page, int x, int y, bitmap_t *bmp, byte sprite)\r
 {\r
-        byte plane;\r
-        word px, py;\r
-        word offset;\r
-\r
-        /* TODO Make this fast.  It's SLOOOOOOW */\r
-        for(plane=0; plane < 4; plane++) {\r
-                modexSelectPlane(PLANE(plane+x));\r
-                for(px = plane; px < bmp->width; px+=4) {\r
-                        offset=px;\r
-                        for(py=0; py<bmp->height; py++) {\r
-                        if(!sprite || bmp->data[offset])\r
-                                page[PAGE_OFFSET(x+px, y+py)] = bmp->data[offset];\r
-                        offset+=bmp->width;\r
-                        }\r
-                }\r
-        }\r
+       byte plane;\r
+       word px, py;\r
+       word offset;\r
+\r
+       /* TODO Make this fast.  It's SLOOOOOOW */\r
+       for(plane=0; plane < 4; plane++) {\r
+               modexSelectPlane(PLANE(plane+x));\r
+               for(px = plane; px < bmp->width; px+=4) {\r
+                       offset=px;\r
+                       for(py=0; py<bmp->height; py++) {\r
+                       if(!sprite || bmp->data[offset])\r
+                               page[PAGE_OFFSET(x+px, y+py)] = bmp->data[offset];\r
+                       offset+=bmp->width;\r
+                       }\r
+               }\r
+       }\r
 }\r
 \r
+void\r
+CDrawBmp(byte far* vgamem, page_t* page, int x, int y, bitmap_t *bmp, byte sprite)\r
+{\r
+       byte plane;\r
+       word px, py;\r
+       word offset=0;\r
+\r
+\r
+       /* TODO Make this fast.  It's SLOOOOOOW */\r
+       for(plane=0; plane < 4; plane++) {\r
+               modexSelectPlane(PLANE(plane+x));\r
+               for(px = plane; px < bmp->width; px+=4) {\r
+                       offset=px;\r
+                       for(py=0; py<bmp->height; py++) {\r
+                       if(!sprite || bmp->data[offset])\r
+                               //modexputPixel(page, x+px, y+py, bmp->data[offset]);\r
+                               vgamem[PAGE_OFFSET(x+px, y+py)] = bmp->data[offset];\r
+                       offset+=bmp->width;\r
+                       }\r
+               }\r
+       }\r
+}\r
 \r
 void\r
 modexDrawBmp(page_t *page, int x, int y, bitmap_t *bmp) {\r
@@ -314,7 +337,7 @@ void
 modexDrawBmpRegion(page_t *page, int x, int y,\r
                    int rx, int ry, int rw, int rh, bitmap_t *bmp) {\r
     word poffset = (word) page->data  + y*(page->width/4) + x/4;\r
-    byte *data = bmp->data;//+bmp->offset;\r
+    byte far *data = bmp->data;//+bmp->offset;\r
     word bmpOffset = (word) data + ry * bmp->width + rx;\r
     word width = rw;\r
     word height = rh;\r
@@ -325,9 +348,9 @@ modexDrawBmpRegion(page_t *page, int x, int y,
     word rowCounter;\r
     byte planeCounter = 4;\r
 \r
-       printf("bmp->data=%Fp\n",bmp->data);\r
+/*     printf("bmp->data=%Fp\n",bmp->data);\r
        printf("*bmp->data=%Fp\n",*(bmp->data));\r
-       printf("&bmp->data=%Fp\n",&(bmp->data));\r
+       printf("&bmp->data=%Fp\n",&(bmp->data));*/\r
 \r
         //code is a bit slow here\r
     __asm {\r
@@ -1166,6 +1189,21 @@ void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, c
        }\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(page_t *page, byte color, byte *Where)\r
+{\r
+       //modexClearRegion(page, 0, 0, page->width, page->height, color);\r
+       /* set map mask to all 4 planes */\r
+       outpw(SC_INDEX, 0xff02);\r
+       //_fmemset(VGA, color, 16000);\r
+       _fmemset(Where, color, page->width*(page->height));\r
+}\r
+\r
 void\r
 modexWaitBorder() {\r
     while(inp(INPUT_STATUS_1)  & 8)  {\r