From: sparky4 Date: Fri, 19 Jun 2015 02:03:56 +0000 (-0500) Subject: disabled drawing of rows and colums in the scroll functions with a page.id X-Git-Url: http://4ch.mooo.com/gitweb/?a=commitdiff_plain;h=11c259b8eefaa17c296f661da98d042162e5c57d;p=16.git disabled drawing of rows and colums in the scroll functions with a page.id modified: src/lib/modex16.c modified: src/lib/modex16.h modified: src/scroll.c --- diff --git a/src/lib/modex16.c b/src/lib/modex16.c index ba09a834..2988f27d 100644 --- a/src/lib/modex16.c +++ b/src/lib/modex16.c @@ -9,9 +9,9 @@ byte far* VGA=(byte far*) 0xA0000000; /* this points to video memory. */ /*word text_mask[16] = { - 0x0002, 0x0102, 0x0202, 0x0302, - 0x0402, 0x0502, 0x0602, 0x0702, - 0x0802, 0x0902, 0x0A02, 0x0B02, + 0x0002, 0x0102, 0x0202, 0x0302, + 0x0402, 0x0502, 0x0602, 0x0702, + 0x0802, 0x0902, 0x0A02, 0x0B02, 0x0C02, 0x0D02, 0x0E02, 0x0F02 };*/ @@ -97,6 +97,7 @@ modexDefaultPage() { page.dy = 0; page.width = SCREEN_WIDTH; page.height = SCREEN_HEIGHT; + page.id = 0; return page; } @@ -113,6 +114,7 @@ modexNextPage(page_t *p) { result.dy = 0; result.width = p->width; result.height = p->height; + result.id = p->id+1; return result; } @@ -128,6 +130,7 @@ modexNextPage0(page_t *p, word x, word y) result.dy = 0; result.width = x; result.height = y; + result.id = p->id+1; return result; } @@ -236,25 +239,25 @@ modexClearRegion(page_t *page, int x, int y, int w, int h, byte color) { } -void +void oldDrawBmp(byte far* page, int x, int y, bitmap_t *bmp, byte sprite) -{ - byte plane; - word px, py; - word offset; - - /* TODO Make this fast. It's SLOOOOOOW */ - for(plane=0; plane < 4; plane++) { - modexSelectPlane(PLANE(plane+x)); - for(px = plane; px < bmp->width; px+=4) { - offset=px; - for(py=0; pyheight; py++) { - if(!sprite || bmp->data[offset]) - page[PAGE_OFFSET(x+px, y+py)] = bmp->data[offset]; - offset+=bmp->width; - } - } - } +{ + byte plane; + word px, py; + word offset; + + /* TODO Make this fast. It's SLOOOOOOW */ + for(plane=0; plane < 4; plane++) { + modexSelectPlane(PLANE(plane+x)); + for(px = plane; px < bmp->width; px+=4) { + offset=px; + for(py=0; pyheight; py++) { + if(!sprite || bmp->data[offset]) + page[PAGE_OFFSET(x+px, y+py)] = bmp->data[offset]; + offset+=bmp->width; + } + } + } } @@ -935,51 +938,51 @@ modexWaitBorder() { } } -/***************************************************************************** -find 8x8 font in VGA BIOS ROM -*****************************************************************************/ -byte far *bios_8x8_font(void) -{ +/***************************************************************************** +find 8x8 font in VGA BIOS ROM +*****************************************************************************/ +byte far *bios_8x8_font(void) +{ byte far *font; regs_t regs; - -/* use BIOS INT 10h AX=1130h to find font #3 (8x8) in ROM */ - memset(®s, 0, sizeof(regs)); /* for Watcom C */ - regs.w.ax = 0x1130; - regs.w.bx = 0x0300; - intr(0x10, ®s); - font = (byte far *)MK_FP(regs.w.es, regs.w.bp); - return font; -} - -/***************************************************************************** -*****************************************************************************/ -void bputs(page_t *pee, int x, int y, const byte far *s) + +/* use BIOS INT 10h AX=1130h to find font #3 (8x8) in ROM */ + memset(®s, 0, sizeof(regs)); /* for Watcom C */ + regs.w.ax = 0x1130; + regs.w.bx = 0x0300; + intr(0x10, ®s); + font = (byte far *)MK_FP(regs.w.es, regs.w.bp); + return font; +} + +/***************************************************************************** +*****************************************************************************/ +void bputs(page_t *pee, int x, int y, const byte far *s) { - //int i, skip; + //int i, skip; byte far *font; byte far *font_pntr; //byte c, temp; - + font = bios_8x8_font(); //skip = 2 - ((pee->width/4) << 3); - //printf("font=%Fp\n", font); - for(; *s != '\0'; s++) - { + //printf("font=%Fp\n", font); + for(; *s != '\0'; s++) + { //src.raster = font + 8 * (*s); //BLOODY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111111111111!!!11!!11!111!11!!1111!!111!11!!1!!!11!11!!1!!111!11!! // (*(bmp->data)) = (*(font + 8 * (*s))); font_pntr = font + 8 * (*s); // font_pntr = font + (c << 3); -// i=8; -// while (i--) { -// temp = *font_pntr++; -// outpw(SC_INDEX, text_mask[temp & 0x0F]); - //*vga_ptr++ = color; - -// outpw(SC_INDEX, text_mask[temp >> 4]); - //*vga_ptr-- = color; - //vga_ptr += widthBytes; +// i=8; +// while (i--) { +// temp = *font_pntr++; +// outpw(SC_INDEX, text_mask[temp & 0x0F]); + //*vga_ptr++ = color; + +// outpw(SC_INDEX, text_mask[temp >> 4]); + //*vga_ptr-- = color; + //vga_ptr += widthBytes; // } //printf("fontoffset=%Fp\n", font + 8 * (*s)); @@ -994,7 +997,7 @@ void bputs(page_t *pee, int x, int y, const byte far *s) //draw text?!?! wwww modexClearRegion(pee, x, y, 8, 8, 4); -// x += 8; +// x += 8; } -// printf("\n"); +// printf("\n"); } diff --git a/src/lib/modex16.h b/src/lib/modex16.h index bc23ee3e..7df4e9b0 100644 --- a/src/lib/modex16.h +++ b/src/lib/modex16.h @@ -16,6 +16,7 @@ #define SELECT_ALL_PLANES() outpw(0x03c4, 0xff02) typedef struct { + word id; /* the Identification number of the page~ For layering~ */ byte far* data; /* the data for the page */ word dx; /* col we are viewing on the virtual screen */ word dy; /* row we are viewing on the virtual screen */ diff --git a/src/scroll.c b/src/scroll.c index 2164ca4c..29d7037d 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -719,6 +719,7 @@ mapScrollRight(map_view_t *mv, byte offset) { /* draw the next column */ x= SCREEN_WIDTH + mv->map->tiles->tileWidth; + if(mv->page->id==0) mapDrawCol(mv, mv->tx + 20 , mv->ty-1, x); } } @@ -741,6 +742,7 @@ mapScrollLeft(map_view_t *mv, byte offset) { mv->page->dx = mv->map->tiles->tileWidth; //} /* draw the next column */ + if(mv->page->id==0) mapDrawCol(mv, mv->tx-1, mv->ty-1, 0); } } @@ -764,6 +766,7 @@ mapScrollUp(map_view_t *mv, byte offset) { /* draw the next row */ y= 0; + if(mv->page->id==0) mapDrawRow(mv, mv->tx-1 , mv->ty-1, y); } } @@ -787,6 +790,7 @@ mapScrollDown(map_view_t *mv, byte offset) { /* draw the next row */ y= SCREEN_HEIGHT + mv->map->tiles->tileHeight; + if(mv->page->id==0) mapDrawRow(mv, mv->tx-1 , mv->ty+15, y); }