]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/modex16.c
fix updated code to copy the char, not NUL char (doh!)
[16.git] / src / lib / modex16.c
index 2d018dc12f190f5abff840fd1cb0e020ac850e2f..5db7bf481849910a90551b4725f801c7600daa38 100755 (executable)
@@ -95,6 +95,9 @@ void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv)
                        /* width and height */\r
                        gv->video.page[0].sw = vga_state.vga_width = 320; // VGA lib currently does not update this\r
                        gv->video.page[0].sh = vga_state.vga_height = 240; // VGA lib currently does not update this\r
+                       /* virtual width and height. match screen, at first */\r
+                       gv->video.page[0].height = gv->video.page[0].sh;\r
+                       gv->video.page[0].width = gv->video.page[0].sw;\r
 \r
                        // mode X BYTE mode\r
                        cm.word_mode = 0;\r
@@ -903,24 +906,11 @@ void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, cons
                y += 8;\r
                continue;\r
        }\r
-       //load the letter 'A'\r
-       __asm {\r
-               MOV DI, addr\r
-               MOV SI, o\r
-               MOV ES, s\r
-               SUB AH, AH\r
-               MOV AL, c       ; the letter\r
-               MOV CX, w\r
-               MUL CX\r
-               ADD SI, AX      ;the address of charcter\r
-       L1:     MOV AX, ES:SI\r
-               MOV DS:DI, AX\r
-               INC SI\r
-               INC DI\r
-               DEC CX\r
-               JNZ L1\r
-       }\r
-//TODO: OPTIMIZE THIS!!!!\r
+\r
+       // load the character into romFontsData.l\r
+       // no need for inline assembly!\r
+       // NTS: It might even be faster to just let the modexDrawChar point directly at ROM font than to copy per char! --J.C.\r
+               _fmemcpy(romFontsData.l,MK_FP(s,o+(w*c))/*ROM font location*/,w/*char size*/);\r
                modexDrawChar(page, x_draw/*for mode X planar use*/, t, col, bgcol, addrr);\r
                x_draw += 8; /* track X for edge of screen */\r
                addrr += 2; /* move 8 pixels over (2 x 4 planar pixels per byte) */\r
@@ -1032,7 +1022,7 @@ void modexcls(page_t *page, byte color, byte *Where)
        _fmemset(Where, color, page->width*(page->height)/4);\r
 }\r
 \r
-/*void\r
+void\r
 modexWaitBorder() {\r
     while(inp(INPUT_STATUS_1)  & 8)  {\r
        // spin\r
@@ -1041,7 +1031,7 @@ modexWaitBorder() {
     while(!(inp(INPUT_STATUS_1)  & 8))  {\r
        // spin\r
     }\r
-}*/\r
+}\r
 \r
 void bios_cls() {\r
        VGA_ALPHA_PTR ap;\r