]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_vl.c
wwww
[16.git] / src / lib / 16_vl.c
index 31a76ce66feb8b61b552abdfa2b0b88e9e63b7f7..fbf51fa6bbffd2dd6c91916dc6b291fad8d7f86f 100755 (executable)
@@ -277,6 +277,12 @@ void modexCalcVmemRemain(video_t *video)
        }\r
 }\r
 \r
+void VL_Initofs(video_t *video)\r
+{\r
+       video->ofs.offscreen_ofs =      video->page[0].pagesize+video->page[1].pagesize;//(vga_state.vga_stride * vga_state.vga_height);\r
+       video->ofs.pattern_ofs =        (uint16_t)video->page[2].data;\r
+}\r
+\r
 void modexHiganbanaPageSetup(video_t *video)\r
 {\r
        video->vmem_remain=65535U;\r
@@ -290,9 +296,12 @@ void modexHiganbanaPageSetup(video_t *video)
        (video->page[2]) = modexNextPageFlexibleSize(&(video->page[1]), video->page[0].width, 96);      video->num_of_pages++;\r
        (video->page[3]) = modexNextPageFlexibleSize(&(video->page[2]), video->page[0].width, 96);      video->num_of_pages++;\r
        modexCalcVmemRemain(video);\r
+\r
        video->sp=video->p=0;\r
        video->r=1;\r
        video->vh=video->page[0].height+video->page[1].height+video->page[3].height-8;//+video->page[2].height\r
+\r
+       VL_Initofs(video);\r
        //doslib origi var\r
        video->omemptr=                 vga_state.vga_graphics_ram;\r
        video->vga_draw_stride= vga_state.vga_draw_stride;\r
@@ -340,18 +349,19 @@ modexShowPage(page_t *page) {
        outp(AC_INDEX, 0x33);\r
        outp(AC_INDEX, (page[0].dx & 0x03) << 1);\r
 }\r
+\r
 //args: page, vertical sync switch, screen resolution switch, page0 switch\r
 void\r
 VL_ShowPage(page_t *page, boolean vsync, boolean sr) {\r
        word high_address, low_address, offset;\r
        byte crtcOffset;\r
 \r
-       /* calculate offset */\r
+       // calculate offset\r
        offset = (word) page->data;\r
-       offset += page[0].dy * (page->width >> 2 );\r
-       offset += page[0].dx >> 2;\r
+       offset += page->dy * (page->width >> 2 );\r
+       offset += page->dx >> 2;\r
 \r
-       /* calculate crtcOffset according to virtual width */\r
+       // calculate crtcOffset according to virtual width\r
        switch(sr)\r
        {\r
                case 1:\r
@@ -366,20 +376,20 @@ VL_ShowPage(page_t *page, boolean vsync, boolean sr) {
        high_address = HIGH_ADDRESS | (offset & 0xff00);\r
        low_address  = LOW_ADDRESS  | (offset << 8);\r
 \r
-       /* wait for appropriate timing and then program CRTC */\r
+       // wait for appropriate timing and then program CRTC\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
+       // wait for one retrace\r
        if(vsync) while (!(inp(INPUT_STATUS_1) & VRETRACE));\r
 \r
-       /* do PEL panning here */\r
+       // do PEL panning here\r
        outp(AC_INDEX, 0x33);\r
-       outp(AC_INDEX, (page[0].dx & 0x03) << 1);\r
-       vga_state.vga_graphics_ram = (VGA_RAM_PTR)page[0].data;\r
+       outp(AC_INDEX, (page->dx & 0x03) << 1);\r
+       vga_state.vga_graphics_ram = (VGA_RAM_PTR)page->data;\r
 }\r
 \r
 //=============================================================================\r
@@ -639,8 +649,7 @@ modexNewPal() {
 \r
        /* handle errors */\r
        if(!ptr) {\r
-       printf("Could not allocate palette.\n");\r
-       exit(-1);\r
+               printf("Could not allocate palette.\n");\r
        }\r
 \r
        return ptr;\r
@@ -664,7 +673,6 @@ modexLoadPalFile(byte *filename, byte **palette) {
        file = fopen(filename, "rb");\r
        if(!file) {\r
        printf("Could not open palette file: %s\n", filename);\r
-       exit(-2);\r
        }\r
 \r
        /* read the file */\r
@@ -703,7 +711,6 @@ modexSavePalFile(char *filename, byte *pal) {
        file = fopen(filename, "wb");\r
        if(!file) {\r
        printf("Could not open %s for writing\n", filename);\r
-       exit(-2);\r
        }\r
 \r
        /* write the data to the file */\r
@@ -1331,7 +1338,7 @@ void VL_PrintmodexmemInfo(video_t *v)
        printf("VL_PrintmodexmemInfo:\n");\r
 //     printf("========================================\n");\r
        printf("  Virtual Screen: %dx", v->page[0].width);      printf("%d      ", v->page[0].height);  printf("Tile: %dx", v->page[0].ti.tilesw);              printf("%d", v->page[0].ti.tilesh);     printf("=((Virtual Screen)/16)\n");\r
-       printf("        Screen: %dx", v->page[0].sw);           printf("%d      ", v->page[0].sh);              printf("Tile: %dx", v->page[0].ti.tw);                  printf("%d", v->page[0].ti.th);         printf("=((Screen)/16)\n");\r
+       printf("          Screen: %dx", v->page[0].sw);         printf("%d      ", v->page[0].sh);              printf("Tile: %dx", v->page[0].ti.tw);                  printf("%d", v->page[0].ti.th);         printf("=((Screen)/16)\n");\r
 \r
        printf("  Free Video Memory: %u\n", v->vmem_remain);\r
        printf("  page");\r