]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_vl.c
BROKE build of 0.exe
[16.git] / src / lib / 16_vl.c
index 0e2bfcf064f83b93f52bd8832826c906da2d2cf9..c01947dce2a2bd15c00cb4812d69a0af13f80e73 100755 (executable)
@@ -369,8 +369,10 @@ modexShowPage_(page_t *page)
        outp(AC_INDEX, (page[0].dx & 0x03) << 1);\r
 }\r
 \r
+//yet another variant\r
+//args: page, vertical sync switch, screen resolution switch,\r
 void\r
-modexShowPageVsync(page_t *page) {\r
+VL_ShowPage(page_t *page, boolean vsync, boolean sr) {\r
        word high_address, low_address, offset;\r
        byte crtcOffset;\r
 \r
@@ -380,26 +382,37 @@ modexShowPageVsync(page_t *page) {
        offset += page[0].dx >> 2;\r
 \r
        /* calculate crtcOffset according to virtual width */\r
-       crtcOffset = page->width >> 3;\r
+       switch(sr)\r
+       {\r
+               case 1:\r
+                       crtcOffset = page->sw >> 3;\r
+               break;\r
+               default:\r
+               case 0:\r
+                       crtcOffset = page->width >> 3;\r
+               break;\r
+       }\r
 \r
        high_address = HIGH_ADDRESS | (offset & 0xff00);\r
        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
+       if(vsync) while ((inp(INPUT_STATUS_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
+       if(vsync) while (!(inp(INPUT_STATUS_1) & VRETRACE));\r
 \r
        /* do PEL panning here */\r
        outp(AC_INDEX, 0x33);\r
        outp(AC_INDEX, (page[0].dx & 0x03) << 1);\r
 }\r
 \r
+//=============================================================================\r
+\r
 void\r
 modexPanPage(page_t *page, int dx, int dy) {\r
        page[0].dx = dx;\r
@@ -693,6 +706,23 @@ modexLoadPalFile(byte *filename, byte **palette) {
 }\r
 \r
 \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,768);\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
+}\r
+\r
+\r
 void\r
 modexSavePalFile(char *filename, byte *pal) {\r
        //unsigned int i;\r