X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fmodex16.c;h=94386cad2b154d27d6a0e60faa0ce27bfed23704;hb=f316394371b48430c9e1b375640b87f1d6f267ab;hp=85651baca17a59f73e387b4e38d71a2a7b103d92;hpb=6d70a04b02efe8dc8c9044c14c7f94df51c7db55;p=16.git diff --git a/src/lib/modex16.c b/src/lib/modex16.c index 85651bac..94386cad 100755 --- a/src/lib/modex16.c +++ b/src/lib/modex16.c @@ -199,7 +199,7 @@ modexDefaultPage(page_t *p) page.tilemidposscreeny = (page.th/2)+1; page.stridew=page.width/4; page.pagesize = (word)(page.width/4)*page.height; - page.pi=4; + page.pi=page.width*4; page.id = 0; return page; @@ -225,7 +225,7 @@ modexNextPage(page_t *p) { result.tilesh = p->tilesh; result.stridew=p->stridew; result.pagesize = p->pagesize; - result.pi=4; + result.pi=result.width*4; result.id = p->id+1; return result; @@ -249,11 +249,17 @@ modexNextPageFlexibleSize(page_t *p, word x, word y) result.tilesw=result.width/TILEWH; result.tilesh=result.height/TILEWH; result.id = p->id+1; - result.stridew=result.width/4; + result.stridew=p->sw/4;//result.width/4; result.pagesize = (word)(result.width/4)*result.height; - if(result.id==2) - result.pi=p->width*p->pi; - else if(result.id==3) result.pi=p->pi; + switch(result.id) + { + case 2: + result.pi=p->width*4; + break; + case 3: + result.pi=p->pi; + break; + } return result; } @@ -307,14 +313,14 @@ modexShowPage(page_t *page) { low_address = LOW_ADDRESS | (offset << 8); /* wait for appropriate timing and then program CRTC */ - while ((inp(INPUT_STATUS_1) & DISPLAY_ENABLE)); + //while ((inp(INPUT_STATUS_1) & DISPLAY_ENABLE)); outpw(CRTC_INDEX, high_address); outpw(CRTC_INDEX, low_address); outp(CRTC_INDEX, 0x13); outp(CRTC_DATA, crtcOffset); /* wait for one retrace */ - while (!(inp(INPUT_STATUS_1) & VRETRACE)); + //while (!(inp(INPUT_STATUS_1) & VRETRACE)); /* do PEL panning here */ outp(AC_INDEX, 0x33); @@ -419,7 +425,7 @@ modexCopyPageRegion(page_t *dest, page_t *src, { word doffset = (word)dest->data + dy*(dest->stridew) + dx/4; word soffset = (word)src->data + sy*(src->stridew) + sx/4; - word scans = vga_state.vga_stride+8; //++++0000 the quick and dirty fix of the major issue with p16 video display wwww + word scans = vga_state.vga_stride; //++++0000 the quick and dirty fix of the major issue with p16 video display wwww word nextSrcRow = src->stridew - scans - 1; word nextDestRow = dest->stridew - scans - 1; byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; /* clips for rectangles not on 4s */