]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_vl.c
16_ca needs huge amounts of work and I should remember what needs to be done soon...
[16.git] / src / lib / 16_vl.c
index 5b73ac5c5240ea28464c74263091b0c4b2ff1e34..1f5754d9c2edcca74ddca917b6900ccf7df8e781 100755 (executable)
@@ -545,6 +545,9 @@ void modexHiganbanaPageSetup(global_game_variables_t *gvar)
                gvar->video.page[1].dx=gvar->video.page[1].dy=TILEWH;   // 1 tile size buffer\r
        gvar->video.page[2].dx=gvar->video.page[2].dy=\r
                gvar->video.page[3].dx=gvar->video.page[3].dy=0;                // cache pages are buffer wwww\r
+\r
+       gvar->video.page[0].tlx=gvar->mv[0].tx*TILEWH;\r
+       gvar->video.page[0].tly=gvar->mv[0].ty*TILEWH;\r
 }\r
 \r
 //\r
@@ -567,14 +570,14 @@ modexShowPage(page_t *page) {
        low_address  = LOW_ADDRESS  | (offset << 8);\r
 \r
        /* wait for appropriate timing and then program CRTC */\r
-//+=+=                                                                         while ((inp(INPUT_STATUS_1) & DISPLAY_ENABLE));\r
+//+=+=                                                                         while ((inp(STATUS_REGISTER_1) & DISPLAY_ENABLE));\r
        outpw(CRTC_INDEX, high_address);\r
        outpw(CRTC_INDEX, low_address);\r
        outp(CRTC_INDEX, 0x13);\r
        outp(CRTC_DATA, crtcOffset);\r
 \r
        /* wait for one retrace */\r
-//+=+=                                                                         while (!(inp(INPUT_STATUS_1) & VRETRACE));\r
+//+=+=                                                                         while (!(inp(STATUS_REGISTER_1) & VRETRACE));\r
 \r
        /* do PEL panning here */\r
        outp(AC_INDEX, 0x33);\r
@@ -609,14 +612,14 @@ VL_ShowPage(page_t *page, boolean vsync, boolean sr)
        low_address  = LOW_ADDRESS  | (offset << 8);\r
 \r
        // wait for appropriate timing and then program CRTC\r
-       if(vsync) while ((inp(INPUT_STATUS_1) & DISPLAY_ENABLE));\r
+       if(vsync) while ((inp(STATUS_REGISTER_1) & DISPLAY_ENABLE));\r
        outpw(CRTC_INDEX, high_address);\r
        outpw(CRTC_INDEX, low_address);\r
        outp(CRTC_INDEX, 0x13);\r
        outp(CRTC_DATA, crtcOffset);\r
 \r
        // wait for one retrace\r
-       if(vsync) while (!(inp(INPUT_STATUS_1) & VRETRACE));\r
+       if(vsync) while (!(inp(STATUS_REGISTER_1) & VRETRACE));\r
 \r
        // do PEL panning here\r
        outp(AC_INDEX, 0x33);\r
@@ -879,11 +882,11 @@ void modexPalSave(byte *palette)
 /*byte *\r
 modexNewPal() {\r
        byte *ptr;\r
-       ptr = m a l l o c(PAL_SIZE);\r
+       ptr = mAlloc(PAL_SIZE);\r
 \r
        // handle errors\r
        if(!ptr) {\r
-               printf("Could not allocate palette.\n");\r
+               printf("Could not Allocate palette.\n");\r
        }\r
 \r
        return ptr;\r
@@ -916,6 +919,8 @@ modexLoadPalFile(byte *filename, byte *palette) {
        fclose(file);\r
 }\r
 \r
+#define COREPALSIZE 9//27      //3*9\r
+\r
 void VLL_LoadPalFilewithoffset(const char *filename, byte *palette, word o, word palsize, global_game_variables_t *gvar)\r
 {\r
        int fd;\r
@@ -923,36 +928,36 @@ void VLL_LoadPalFilewithoffset(const char *filename, byte *palette, word o, word
 \r
        fd = open(filename,O_RDONLY|O_BINARY);\r
        if (fd >= 0) {\r
-               read(fd,palette,        palsize);\r
+               read(fd,palette,        palsize*3);\r
                close(fd);\r
 \r
-               if(palsize==27) newpalette = palette; else{     //if core then load it\r
+               if(palsize==COREPALSIZE) newpalette = palette; else{    //if core then load it\r
                newpalette = &palette[3];                       //skip overscan color\r
                if(!o) o++;\r
                }\r
-               VL_UpdatePaletteWrite(newpalette, o, gvar);\r
+               VL_UpdatePaletteWrite(newpalette, o, palsize, gvar);\r
        }\r
 }\r
 \r
 void VL_LoadPalFile(const char *filename, byte *palette, global_game_variables_t *gvar)\r
 {\r
        VLL_LoadPalFilewithoffset(filename, palette,\r
-               0,\r
-//             9,\r
-               PAL_SIZE, gvar);\r
+               0,                      //overwrite core/system palette\r
+//             COREPALSIZE,    //preserved core/system palette\r
+               PAL_SIZE/3, gvar);\r
 }\r
 \r
 void VL_LoadPalFileCore(byte *palette, global_game_variables_t *gvar)\r
 {\r
-       VLL_LoadPalFilewithoffset("data/16.pal", palette, 0, 27, gvar);\r
+       VLL_LoadPalFilewithoffset("data/16.pal", palette, 0, COREPALSIZE, gvar);\r
 }\r
 \r
-void VL_UpdatePaletteWrite(byte *palette, word o, global_game_variables_t *gvar)\r
+void VL_UpdatePaletteWrite(byte *palette, word o, word p, global_game_variables_t *gvar)\r
 {\r
        word i;\r
 \r
        vga_palette_lseek(o);\r
-       for (i=0;i < 255-o;i++)\r
+       for (i=0;i < p-o;i++)\r
                vga_palette_write(palette[(i*3)+0]>>2,palette[(i*3)+1]>>2,palette[(i*3)+2]>>2);\r
 \r
        VL_PaletteSync(gvar);\r
@@ -1135,7 +1140,7 @@ void modexprint(page_t *page, sword x, sword y, word t, boolean tlsw, word color
                break;\r
                case 1:\r
                        if(tlsw){ x-=page->tlx; y-=page->tly; }\r
-                       x_draw = x/4;\r
+                       x_draw = x>>2;\r
                        addrq = (page->stridew) * y + (word)(x_draw) +\r
                                ((word)page->data);\r
                        addrr = addrq;\r
@@ -1264,7 +1269,7 @@ void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, c
 }\r
 \r
 /* palette dump on display! */\r
-void modexpdump(page_t *pee)\r
+void modexpdump(nibble pagenum, global_game_variables_t *gvar)\r
 {\r
        int mult=(QUADWH);\r
        int palq=(mult)*TILEWH;\r
@@ -1272,10 +1277,11 @@ void modexpdump(page_t *pee)
        int palx, paly;\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
+                               modexClearRegion(&gvar->video.page[pagenum], palx+TILEWH, paly+TILEWH, mult, mult, palcol);\r
                        palcol++;\r
                }\r
        }\r
+       modexPalSave(gvar->video.palette);\r
 }\r
 #if 0\r
 /////////////////////////////////////////////////////////////////////////////\r
@@ -1345,11 +1351,11 @@ void VL_PatternDraw(video_t *video, word pn, boolean sw, boolean allsw)
 \r
 void\r
 modexWaitBorder() {\r
-       while(inp(INPUT_STATUS_1)  & 8)  {\r
+       while(inp(STATUS_REGISTER_1)  & 8)  {\r
        // spin\r
        }\r
 \r
-       while(!(inp(INPUT_STATUS_1)  & 8))  {\r
+       while(!(inp(STATUS_REGISTER_1)  & 8))  {\r
        //spin\r
        }\r
 }\r
@@ -1357,7 +1363,7 @@ modexWaitBorder() {
 void\r
 modexWaitBorder_start()\r
 {\r
-       while(inp(INPUT_STATUS_1)  & 8)  {\r
+       while(inp(STATUS_REGISTER_1)  & 8)  {\r
        // spin\r
        }\r
 \r
@@ -1366,7 +1372,7 @@ modexWaitBorder_start()
 void\r
 modexWaitBorder_end()\r
 {\r
-       while(!(inp(INPUT_STATUS_1)  & 8))  {\r
+       while(!(inp(STATUS_REGISTER_1)  & 8))  {\r
        // spin\r
        }\r
 \r