OSDN Git Service

==== FIXED MAP INDEX NUMBER PRITING IN DRAWTILE wwww ====
[proj16/16.git] / src / lib / 16_vl.c
index ec5c9f0..f241fb6 100755 (executable)
@@ -689,18 +689,7 @@ modexLoadPalFile(byte *filename, byte **palette) {
 \r
 void VL_LoadPalFile(const char *filename, byte *palette)\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(0);\r
-               for (i=0;i < 256;i++) vga_palette_write(palette[(i*3)+0]>>2,palette[(i*3)+1]>>2,palette[(i*3)+2]>>2);\r
-       }\r
+       VL_LoadPalFilewithoffset(filename, palette, 0);\r
 }\r
 \r
 void VL_LoadPalFilewithoffset(const char *filename, byte *palette, word o)\r
@@ -709,16 +698,19 @@ void VL_LoadPalFilewithoffset(const char *filename, byte *palette, word o)
 \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
+               VL_UpdatePaletteWrite(palette, o);\r
        }\r
 }\r
 \r
+void VL_UpdatePaletteWrite(byte *palette, word o)\r
+{\r
+       word i;\r
+       vga_palette_lseek(/*1+*/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
 void\r
 modexSavePalFile(char *filename, byte *pal) {\r
@@ -867,15 +859,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, boolean tlsw, word col, word bgcol, const byte *str)\r
 {\r
        word s, o, w;\r
-       word x_draw = x;\r
+       word 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
+       if(tlsw){ x-=page->tlx; y-=page->tly; }\r
+       x_draw = x/4;\r
+       addrq = (page->stridew) * y + (word)(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
@@ -883,16 +880,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
@@ -902,6 +899,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
@@ -1004,8 +1002,8 @@ void modexpdump(page_t *pee)
        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
+       for(paly=TILEWH*8; paly<palq+TILEWH*8; paly+=mult){\r
+               for(palx=TILEWH*12; palx<palq+TILEWH*12; palx+=mult){\r
                                modexClearRegion(pee, palx+TILEWH, paly+TILEWH, mult, mult, palcol);\r
                        palcol++;\r
                }\r