]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_vl.c
BROKEN something broke wwww
[16.git] / src / lib / 16_vl.c
index 0da3771bd8e48e739b048bf0ca67e9e5c41bdfc3..881239de5501212185693d31c713e31631ed3a4f 100755 (executable)
@@ -703,6 +703,22 @@ void VL_LoadPalFile(const char *filename, byte *palette)
        }\r
 }\r
 \r
+void VL_LoadPalFilewithoffset(const char *filename, byte *palette, word o)\r
+{\r
+       int fd;\r
+\r
+       fd = open(filename,O_RDONLY|O_BINARY);\r
+       if (fd >= 0) {\r
+               word i;\r
+\r
+               read(fd,palette,        PAL_SIZE);\r
+               close(fd);\r
+\r
+               vga_palette_lseek(o);\r
+               for (i=o;i < 256-o;i++) vga_palette_write(palette[(i*3)+0]>>2,palette[(i*3)+1]>>2,palette[(i*3)+2]>>2);\r
+       }\r
+}\r
+\r
 \r
 void\r
 modexSavePalFile(char *filename, byte *pal) {\r
@@ -784,96 +800,6 @@ modexPalOverscan(word col)
        outp(PAL_DATA_REG, col);\r
 }\r
 \r
-//color checker~\r
-//i want to make another vesion that checks the palette when the palette is being appened~\r
-void modexchkcolor(bitmap_t *bmp, word *q, word *a, word *aa, word *z, word *i/*, word *offset*/)\r
-{\r
-               byte *pal;\r
-               word zz=0;\r
-               pal = modexNewPal();\r
-               modexPalSave(pal);\r
-               //printf("q: %02d\n", (*q));\r
-               printf("chkcolor start~\n");\r
-               printf("1                                  (*z): %d\n", (*z)/3);\r
-               printf("1                                  (*i): %d\n", (*i)/3);\r
-//               printf("1 offset of color in palette  (*q): %d\n", (*q)/3);\r
-               printf("wwwwwwwwwwwwwwww\n");\r
-               //check palette for dups\r
-               for(; (*z)<PAL_SIZE; (*z)+=3)\r
-               {\r
-                       //printf("\n            z: %d\n", (*z));\r
-                       //printf("                q: %d\n", (*q));\r
-                       //printf("                z+q: %d\n\n", ((*z)+(*q)));\r
-                       //if((*z)%3==0)\r
-                       //{\r
-//----                   if(pal[(*z)]==pal[(*z)+3] && pal[(*z)+1]==pal[(*z)+4] && pal[(*z)+2]==pal[(*z)+5])\r
-                               if((*z)==(*i))\r
-                               {\r
-//                                       printf("\n%d  [%02d][%02d][%02d]\n", (*z), pal[(*z)], pal[(*z)+1], pal[(*z)+2]);\r
-//                                       printf("%d      [%02d][%02d][%02d]\n\n", (*z)+3, pal[(*z)+3], pal[(*z)+4], pal[(*z)+5]);\r
-//0000                           (*z)-=3;\r
-                                       break;\r
-                               }\r
-                               else for(zz=0; zz<(*q); zz+=3)\r
-                               {\r
-                                       //printf("zz: %02d\n", zz/3);\r
-                                       if(zz%3==0)\r
-                                       {\r
-                                               if(pal[((*z)+(*q))]==pal[((*z)+(*q))+3] && pal[((*z)+(*q))+1]==pal[((*z)+(*q))+4] && pal[((*z)+(*q))+2]==pal[((*z)+(*q))+5])    //break if duplicate colors found in palette because it have reached the end of the current data of the palette\r
-                                               {\r
-//                                                       (*z)-=3;\r
-//                                                       (*i)-=3;\r
-//                                                       printf("\nzq1:%d[%02d][%02d][%02d]\n", (zz+q), pal[(zz+q)], pal[(zz+q)+1], pal[(zz+q)+2]);\r
-//                                                       printf("zq2:%d[%02d][%02d][%02d]\n\n", (zz+q)+3, pal[(zz+q)+3], pal[(zz+q)+4], pal[(zz+q)+5]);\r
-                                                       break;\r
-                                               }\r
-                                               else if(pal[zz]==pal[((*z)+(*q))] && pal[zz+1]==pal[((*z)+(*q))+1] && pal[zz+2]==pal[((*z)+(*q))+2])\r
-                                               {\r
-//                                                       printf("\n\nwwwwwwwwwwwwwwww\n");\r
-//                                                       printf("      zq: %d  [%02d][%02d][%02d] value that is needing to be changed~\n", ((*z)+(*q))/3, pal[((*z)+(*q))], pal[((*z)+(*q))+1], pal[((*z)+(*q))+2]);\r
-//                                                       printf("      zz: %d  [%02d][%02d][%02d] value that the previous value is going to change to~\n", (zz)/3, pal[zz], pal[zz+1], pal[zz+2]);\r
-//                                                       //printf("      zv: %d  [%02d][%02d][%02d] wwww\n", (zz-z+q)/3, pal[(zz-z+q)], pal[(zz-z+q)+1], pal[(zz-z+q)+2]);\r
-//                                                       printf("      z : %d  [%02d][%02d][%02d] offset value~\n", (*z)/3, pal[(*z)], pal[(*z)+1], pal[(*z)+2]);\r
-//++++                                           (*i)--;\r
-//                                                       (*z)--;\r
-                                                       //expand dong here\r
-/*\r
-planned features that i plan to implement~\r
-image that has values on the pallete list!\r
-wwww\r
-no... wait.... no wwww\r
-*/\r
-                                                       //for(zzii=0; zzii<3; zzii++)\r
-                                                       //{\r
-                                                               //printf("z+q: %d\n\n", ((*z)+(*q)));\r
-                                                               a[(((*z)+(*q)))]=zz;\r
-                                                       //}\r
-                                                       (*aa)=(((*z)+(*q)));\r
-                                                       printf("!!                                        a[%02d]: %d\n", (((*z)+(*q))/3), zz/3);\r
-//                                                       printf("\n              aa: %d\n\n", (*aa));\r
-//                                                       printf("      a[%02d]=(%02d) offset array i think the palette should be updated again~\n", ((*z)+(*q))/3, a[((*z)+(*q))/3]);\r
-//                                                       printf("wwwwwwwwwwwwwwww\n\n");\r
-                                               }\r
-                                               /*else\r
-                                               {\r
-                                                       printf("================\n");\r
-                                                       printf("zq: %d  [%02d][%02d][%02d]\n", ((*z)+(*q))/3, pal[((*z)+(*q))], pal[((*z)+(*q))+1], pal[((*z)+(*q))+2]);\r
-                                                       printf("zz: %d  [%02d][%02d][%02d]\n", (zz)/3, pal[zz], pal[zz+1], pal[zz+2]);\r
-                                                       printf("z : %d  [%02d][%02d][%02d]\n", (*z)/3, pal[(*z)], pal[(*z)+1], pal[(*z)+2]);\r
-                                                       printf("================\n");\r
-                                               }*/\r
-                                               //printf("[%d]", (zz+q));\r
-                                       }\r
-                               }\r
-               }\r
-               printf("wwwwwwwwwwwwwwww\n");\r
-               printf("2                                  (*z): %d\n", (*z)/3);\r
-               printf("2                                  (*i): %d\n", (*i)/3);\r
-//               printf("2 offset of color in palette  (*q): %d\n", (*q)/3);\r
-               printf("chkcolor end~\n");\r
-               free(pal);\r
-}\r
-\r
 void modexputPixel(page_t *page, int x, int y, byte color)\r
 {\r
        word pageOff = (word) page->data;\r
@@ -941,15 +867,20 @@ void modexDrawChar(page_t *page, int x/*for planar selection only*/, word t, wor
        }\r
 }\r
 \r
-void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str)\r
+void modexprint(page_t *page, sword x, sword y, word t, word col, word bgcol, const byte *str)\r
 {\r
        word s, o, w;\r
-       word x_draw = x;\r
+       sword x_draw;\r
        //word addr = (word) romFontsData.l;\r
-       word addrq = (page->stridew) * y + (x / 4) + ((word)page->data);\r
-       word addrr = addrq;\r
+       word addrq;\r
+       word addrr;\r
        byte c;\r
 \r
+       x-=page->tlx; y-=page->tly;\r
+       x_draw = x/4;\r
+       addrq = (page->stridew) * y + (x_draw) +\r
+               ((word)page->data);\r
+       addrr = addrq;\r
        s=romFonts[t].seg;\r
        o=romFonts[t].off;\r
        w=romFonts[t].charSize;\r
@@ -957,16 +888,16 @@ void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, cons
 \r
        for(; *str != '\0'; str++)\r
        {\r
-       c = (*str);\r
-       if(c=='\n')\r
-       {\r
-               x = x_draw;\r
-               romFontsData.chw = 0;\r
-               addrq += (page->stridew) * 8;\r
-               addrr = addrq;\r
-               y += 8;\r
-               continue;\r
-       }\r
+               c = (*str);\r
+               if(c=='\n')\r
+               {\r
+                       x = x_draw;\r
+                       romFontsData.chw = 0;\r
+                       addrq += (page->stridew) * 8;\r
+                       addrr = addrq;\r
+                       y += 8;\r
+                       continue;\r
+               }\r
 \r
        // load the character into romFontsData.l\r
        // no need for inline assembly!\r
@@ -976,6 +907,7 @@ void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, cons
                x_draw += 8; /* track X for edge of screen */\r
                addrr += 2; /* move 8 pixels over (2 x 4 planar pixels per byte) */\r
        }\r
+       //printf("print xy:%dx%d        tlxy:%dx%d\n", x, y, page->tlx, page->tly);\r
 }\r
 \r
 void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str)\r