]> 4ch.mooo.com Git - 16.git/commitdiff
joncampbell123 i tried ww
authorsparky4 <sparky4@cock.li>
Mon, 18 Apr 2016 04:31:23 +0000 (23:31 -0500)
committersparky4 <sparky4@cock.li>
Mon, 18 Apr 2016 04:31:23 +0000 (23:31 -0500)
pcx2vrl
pcxsscut
src/fontgfx.c
src/lib/bakapee.c
src/lib/modex16.c
src/lib/modex16.h
src/lib/modex16/16render.c
src/lib/modex16/16render.h
src/planrpcx.c
vrl2vrs
vrsdump

diff --git a/pcx2vrl b/pcx2vrl
index 06179c758ee3353a54ef7bc76b2422c342d53dd7..3d9ac6e6d0e4fe19bb8f1962de5fd02253dea7be 100755 (executable)
Binary files a/pcx2vrl and b/pcx2vrl differ
index 2ce56d285d26ddb8a30e5f7bf2839df2bde1fa75..d743ac3b8ac58a73b3cb2380e2367aee9b167169 100755 (executable)
Binary files a/pcxsscut and b/pcxsscut differ
index 89e2e2f563d3de2c976ca9a368b6d2b3079c0034..d0c2e1bcc0eadaa471de9437d611fe57b78add0e 100755 (executable)
@@ -67,8 +67,7 @@ IIIIIII  BBBBBBBBB    MMMM    M    MMMM\n\
 ,'___...---~~~\n\\r
 ";\r
 //     static byte *rosa;\r
-       static word chx, chy, colpee;\r
-       static word z;\r
+       static word chx, chy, colpee, addr;\r
        textInit();\r
 \r
        // DOSLIB: check our environment\r
@@ -92,50 +91,38 @@ IIIIIII  BBBBBBBBB    MMMM    M    MMMM\n\
                return;\r
        }\r
        VGAmodeX(1, 1, &gvar);\r
-//     __asm{\r
-//             mov     AH,12H\r
-//             mov     BL,30h\r
-//             mov     AL,04h\r
-//             int 10\r
-//             mov     ax,1123h\r
-//             int     10h\r
-//             ;mov    ax,1112h                ; load 8x8 character set into RAM\r
-//             ;int    10h\r
-//     }\r
        /* setup camera and screen~ */\r
        gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0]);\r
        gvar.video.page[0].width += (16*2);\r
        gvar.video.page[0].height += (16*2);\r
        modexShowPage(&gvar.video.page[0]);\r
+       addr = (gvar.video.page[0].width/4) * chy + (chx / 4) + ((word)gvar.video.page[0].data); /* at start of function */\r
        vga_read_crtc_mode(&cm);\r
        // NTS: We're in Mode-X now. printf() is useless. Do not use printf(). Or INT 10h text printing. Or DOS console output.\r
        //modexprint(16, 16, 1, 15, "wwww");\r
        //getch();\r
        chx=0;\r
        chy=0;\r
-//     colpee=32;\r
+       colpee=32;\r
 //     bios_cls();\r
        /* position the cursor to home */\r
 //     vga_moveto(0,0);\r
 //     vga_sync_bios_cursor();\r
-       for(e=0x00, z=0; e<=0xFE; e++, z++)\r
+       for(e=0x00; e<=0xFE; e++)\r
        {\r
-               //if(chx+8>(gvar.video.page[0].width/2))\r
-               if((z)+1>16)\r
+               if(chx+8>(gvar.video.page[0].width/2))\r
                {\r
                        chx=0;\r
                        chy+=8;\r
                        sprintf(pee,"%u", colpee);\r
-                       modexprint(&gvar.video.page[0], 200, 200, 1, 47, 0, &pee, 1);\r
-                       z=0;\r
-//                     printf("\n");\r
+                       modexprint(&gvar.video.page[0], 200, 200, 1, 47, 0, &pee, addr, 1);\r
                        //getch();\r
                }\r
                sprintf(pee, "%zc", e);\r
-               modexprint(&gvar.video.page[0], chx, chy, 1, 0, colpee, &e, 1);\r
+               modexprint(&gvar.video.page[0], chx, chy, 1, 0, colpee, &e, addr, 1);\r
                chx+=9;\r
                colpee++;\r
-//             if(colpee>=32+24) colpee=32;\r
+               if(colpee>=32+24) colpee=32;\r
        }\r
        getch();\r
        //modexprint(100, 100, 1, 47, 0, "wwww");\r
index 8b40f9648f720a0b41a578bd396a67f808235b34..f0b798ce1c3b1de2dfb524c1c72fbf1d5412bd66 100755 (executable)
@@ -239,7 +239,7 @@ void ding(page_t *page, bakapee_t *pee, word q)
                break;
                case 8:
                        colorz(page, pee);
-                       modexprint(page, page->sw/2, page->sh/2, 1, 47, 0, "bakapi", 1);
+                       modexprint(page, page->sw/2, page->sh/2, 1, 47, 0, "bakapi", (page[0].width/4) * pee->yy + (pee->xx / 4) + ((word)page[0].data), 1);
                break;
                case 9:
                        if(pee->coor <= HGQ)
index 8ab175ed028d643a1a614203a419f24f36a9419b..247a24d34f1500392357014bd26fb34d4a9a25e5 100755 (executable)
@@ -873,20 +873,7 @@ byte modexgetPixel(page_t *page, int x, int y)
 \r
 }\r
 \r
-void modexhlin(page_t *page, word xl, word xh, word y, word color)\r
-{\r
-       word x;\r
-       word yy=0;\r
-\r
-       for(x=0;x<xh*4;x+=4)\r
-       {\r
-               if(x+4>=page[0].sw-1){ x=0; yy+=4; }\r
-               modexClearRegion(page, x+xl, y+yy, 4, 4, color);\r
-       }\r
-       //modexputPixel(page, x+xl, y, color);\r
-}\r
-\r
-void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str, boolean q)\r
+void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str, word addrq, boolean q)\r
 {\r
        word s, o, w;\r
        word addr = (word) romFontsData.l;\r
@@ -926,7 +913,7 @@ void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, cons
                JNZ L1\r
        }\r
 //TODO: OPTIMIZE THIS!!!!\r
-               modexDrawCharPBuf(page, x, y, t, col, bgcol, q);\r
+               modexDrawCharPBuf(page, x, y, t, col, bgcol, addrq, q);\r
 \r
                //if(!q) getch();\r
        }\r
index fe96a78fde3dc98afda722dba483c540469b6ef0..b334e7fe86ad6bd21e490103a1bb2a163b1cd045 100755 (executable)
@@ -82,6 +82,32 @@ typedef union
        byte blue;
 } rgb_t;
 
+/* -======================= Constants & Vars ==========================- */
+extern byte far*  VGA;  /* The VGA Memory */
+#define SCREEN_SEG             0xa000
+#define VIDEO_INT              0x10
+#define SET_MODE               0x00
+#define VGA_256_COLOR_MODE     0x13
+#define TEXT_MODE              0x03
+
+#define AC_INDEX               0x03c0
+#define SC_INDEX               0x03c4
+#define SC_DATA                        0x03c5
+#define CRTC_INDEX             0x03d4
+#define CRTC_DATA              0x03d5
+#define GC_INDEX               0x03ce
+#define MISC_OUTPUT            0x03c2
+#define HIGH_ADDRESS           0x0C
+#define LOW_ADDRESS            0x0D
+#define VRETRACE               0x08
+//#define INPUT_STATUS_1               0x03da  defined in 16_head
+#define DISPLAY_ENABLE         0x01
+#define MAP_MASK               0x02
+#define PAL_READ_REG                   0x03C7   /* Color register, read address */
+#define PAL_WRITE_REG             0x03C8   /* Color register, write address */
+#define PAL_DATA_REG                   0x03C9   /* Color register, data port */
+#define PAL_SIZE                               (256 * 3)
+
 /* -============================ Functions =============================- */
 /* mode switching, page, and plane functions */
 void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv);
@@ -123,37 +149,34 @@ void modexPalOverscan(byte *p, word col);
 void modexchkcolor(bitmap_t *bmp, word *q, word *a, word *aa, word *z, word *i/*, word *offset*/);
 void modexputPixel(page_t *page, int x, int y, byte color);
 byte modexgetPixel(page_t *page, int x, int y);
-void modexhlin(page_t *page, word xl, word xh, word y, word color);
-void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str, boolean q);
+static inline void modexwritepixel(page_t *page, int x, int y, word addr, byte color)
+{
+       /* Each address accesses four neighboring pixels, so set
+          Write Plane Enable according to which pixel we want
+          to modify.  The plane is determined by the two least
+          significant bits of the x-coordinate: */
+       modexSelectPlane(PLANE(x));
+       //outp(SC_INDEX, 0x02);
+       //outp(SC_DATA, 0x01 << (x & 3));
+
+       /* The offset of the pixel into the video segment is
+          offset = (width * y + x) / 4, and write the given
+          color to the plane we selected above.  Heed the active
+          page start selection. */
+       vga_state.vga_graphics_ram[addr] = color;
+}
+static inline byte modexreadPixel(page_t *page, int x, int y, word addr)
+{
+       /* Select the plane from which we must read the pixel color: */
+       outpw(GC_INDEX, 0x04);
+       outpw(GC_INDEX+1, x & 3);
+       return vga_state.vga_graphics_ram[addr];
+}
+void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str, word addrq, boolean q);
 void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str);
 void modexpdump(page_t *pee);
 void modexcls(page_t *page, byte color, byte *Where);
 //void modexWaitBorder();
 void bios_cls();
 
-/* -======================= Constants & Vars ==========================- */
-extern byte far*  VGA;  /* The VGA Memory */
-#define SCREEN_SEG             0xa000
-#define VIDEO_INT              0x10
-#define SET_MODE               0x00
-#define VGA_256_COLOR_MODE     0x13
-#define TEXT_MODE              0x03
-
-#define AC_INDEX               0x03c0
-#define SC_INDEX               0x03c4
-#define SC_DATA                        0x03c5
-#define CRTC_INDEX             0x03d4
-#define CRTC_DATA              0x03d5
-#define GC_INDEX               0x03ce
-#define MISC_OUTPUT            0x03c2
-#define HIGH_ADDRESS           0x0C
-#define LOW_ADDRESS            0x0D
-#define VRETRACE               0x08
-//#define INPUT_STATUS_1               0x03da  defined in 16_head
-#define DISPLAY_ENABLE         0x01
-#define MAP_MASK               0x02
-#define PAL_READ_REG                   0x03C7   /* Color register, read address */
-#define PAL_WRITE_REG             0x03C8   /* Color register, write address */
-#define PAL_DATA_REG                   0x03C9   /* Color register, data port */
-#define PAL_SIZE                               (256 * 3)
 #endif
index 0399a7771738f489fe3a77a936387183319ab571..ad88168ff235f820025c64d4ed74218e12396bc6 100755 (executable)
@@ -435,7 +435,7 @@ modexDrawSpritePBufRegion(page_t *page, int x, int y,
     }\r
 }\r
 \r
-void modexDrawCharPBuf(page_t *page, int x, int y, word t, word col, word bgcol, boolean q)\r
+void modexDrawCharPBuf(page_t *page, int x, int y, word t, word col, word bgcol, word addr, boolean q)\r
 {\r
        word i, j, k;\r
        for(i=0; i<romFonts[t].charSize; i++)\r
@@ -447,7 +447,7 @@ void modexDrawCharPBuf(page_t *page, int x, int y, word t, word col, word bgcol,
                {\r
                        if(q)\r
                        //_fmemcpy(page->data + (((page->width/4) * (y+i)) + ((x+romFontsData.chw+k) / 4)), romFontsData.l[i] & j ? col:bgcol, 2);\r
-                       modexputPixel(page, x+k+romFontsData.chw, y+i, romFontsData.l[i] & j ? col:bgcol);\r
+                       modexwritepixel(page, x+k+romFontsData.chw, y+i, addr, romFontsData.l[i] & j ? col:bgcol);\r
                        else\r
                                //printf("l[i]=%c j=%02u l[i] & j=%02u %c\n", l[i] , j, l[i] & j, l[i] & j ? '*':' ');\r
                                //printf("%c", l[i] & j ? '*':' ');\r
index 308944c34e9a02cb0780bc941c4d6218e380e04b..7edb44229791408aa854cff405910f43faff037f 100755 (executable)
@@ -36,6 +36,6 @@ void modexDrawBmpPBuf(page_t *page, int x, int y, planar_buf_t *bmp); /*pbuf ver
 void modexDrawBmpPBufRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, planar_buf_t *bmp);\r
 void modexDrawSpritePBuf(page_t *page, int x, int y, planar_buf_t *bmp);\r
 void modexDrawSpritePBufRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, planar_buf_t *bmp);\r
-void modexDrawCharPBuf(page_t *page, int x, int y, word t, word col, word bgcol, boolean q);\r
+void modexDrawCharPBuf(page_t *page, int x, int y, word t, word col, word bgcol, word addr, boolean q);\r
 \r
 #endif\r
index 06b1f29c8eb812887bf6bd089ff940d67f81d64c..d3ac3bef1a89547088d9eae05238bed35d8e9f1b 100755 (executable)
@@ -41,8 +41,6 @@ void main(int argc, char *argv[])
 {\r
 \r
        byte l[1024];\r
-       static byte e;\r
-       static word chx, chy, colpee;\r
        byte pee[2];\r
 \r
 //w=0;\r
@@ -124,25 +122,6 @@ getch();
                }\r
        }\r
 \r
-       chx=0;\r
-       chy=0;\r
-       colpee=32;\r
-       for(e=0x00; e<=0xFE; e++)\r
-       {\r
-               if(chx+8>(gvar.video.page[0].width/2))\r
-               {\r
-                       chx=0;\r
-                       chy+=8;\r
-                       sprintf(pee,"%u", colpee);\r
-                       modexprint(&gvar.video.page[0], 200, 200, 1, 47, 0, &pee, 0);\r
-                       //getch();\r
-               }\r
-               modexprint(&gvar.video.page[0], chx, chy, 1, 0, colpee, &e, 0);\r
-               chx+=9;\r
-               colpee++;\r
-               if(colpee>=32+24) colpee=32;\r
-       }\r
-\r
        fprintf(stderr,"Project 16 planrpcx.exe. This is just a test file!\n");\r
        fprintf(stderr,"version %s\n", VERSION);\r
        fprintf(stderr,"%d\n", sizeof(p.plane));\r
diff --git a/vrl2vrs b/vrl2vrs
index cee2d1d5ec2093825ded51e0e6c9b8b836e38ee9..acdd4bda2f0dd8772cdce97a19b6c906e4e09f8e 100755 (executable)
Binary files a/vrl2vrs and b/vrl2vrs differ
diff --git a/vrsdump b/vrsdump
index a75a903a84ae3d98973e3aecab4a6c08fce8a764..8ba0497deb819d75caeef21a3a0d4086b394845b 100755 (executable)
Binary files a/vrsdump and b/vrsdump differ