From: sparky4 Date: Thu, 2 Feb 2017 20:04:42 +0000 (-0600) Subject: bg preservation still in works X-Git-Url: http://4ch.mooo.com/gitweb/?p=16.git;a=commitdiff_plain;h=3a7f7812852634ac758ef5593ccc5730eefc44a6 bg preservation still in works --- diff --git a/rss b/rss new file mode 100755 index 00000000..5cf3cbee --- /dev/null +++ b/rss @@ -0,0 +1,118 @@ +src/lib/16_enti.c:// modexClearRegion(&video->page[0], enti->x, enti->y, 16, 16, 2); +src/lib/16_enti.c:// modexClearRegion(&video->page[2], 0, 0, video->page[2].sw, video->page[2].sh, 45); +src/lib/16_enti.c:// modexClearRegion(&video->page[3], 0, 0, video->page[3].sw, video->page[3].sh, 47); +src/lib/16_enti.c: if(!video->bgps) +src/lib/16_enti.c: video->ofs.pattern_ofs=(uint16_t)video->page[0].data; +src/lib/16_enti.c: video->ofs.offscreen_ofs=(uint16_t)video->page[3].data; +src/lib/16_enti.c: o2 = video->ofs.offscreen_ofs; //dest +src/lib/16_enti.c: o = video->ofs.pattern_ofs + (enti->y * video->page[0].stridew) + (enti->x >> 2); // source +src/lib/16_enti.c: for (i=0;i < h;i++,o += video->page[0].stridew,o2 += (w >> 2)) vga_wm1_mem_block_copy(o2,o,w >> 2); +src/lib/16_enti.c: modexCopyPageRegion(&video->page[2], &video->page[0], enti->x, enti->y, 0, 0, 24, 32); +src/lib/16_sprit.c: VGA_RAM_PTR omemptr = (VGA_RAM_PTR)video->page[0].data;// save original mem ptr +src/lib/16_sprit.c://#define FRAME1 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 48, player[pn].enti.dire, 24, 32, PLAYERBMPDATAPTR); +src/lib/16_sprit.c://#define FRAME2 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 24, player[pn].enti.dire, 24, 32, PLAYERBMPDATAPTR); stand +src/lib/16_sprit.c://#define FRAME3 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 0, player[pn].enti.dire, 24, 32, PLAYERBMPDATAPTR); +src/lib/16_sprit.c://#define FRAME4 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 24, player[pn].enti.dire, 24, 32, PLAYERBMPDATAPTR); stand +src/lib/16_sprit.c: if(!video->rss) +src/lib/16_sprit.c: if(!video->bgps) +src/lib/16_sprit.c: else rx = -(video->page[0].dx); +src/lib/16_sprit.c: else ry = -(video->page[0].dy); +src/lib/16_sprit.c: if ((rx+w) > video->page[0].width) w = video->page[0].width-rx; +src/lib/16_sprit.c: if ((ry+h) > video->page[0].height) h = video->page[0].height-ry; +src/lib/16_sprit.c: o2 = video->ofs.offscreen_ofs; +src/lib/16_sprit.c: o = video->ofs.pattern_ofs + (ry * video->page[0].stridew) + (rx >> 2); // source offscreen +src/lib/16_sprit.c: for (i=0;i < h;i++,o += video->page[0].stridew,o2 += (w >> 2)) vga_wm1_mem_block_copy(o2,o,w >> 2); +src/lib/16_sprit.c: vga_state.vga_graphics_ram = omemptr + video->ofs.offscreen_ofs; +src/lib/16_sprit.c: modexCopyPageRegion(&video->page[2], &video->page[0], enti->x, enti->y, 0, 0, 24, 32); +src/lib/16_sprit.c: }else{ rx=ry=w=h=0; vga_state.vga_graphics_ram = (VGA_RAM_PTR)video->page[0].data; } +src/lib/16_sprit.c: vga_state.vga_draw_stride_limit = (video->page[0].width + 3 - x) >> 2;//round up +src/lib/16_sprit.c: modexClearRegion(&video->page[0], x, y, 16, 32, 1); +src/lib/16_sprit.c: if(!video->rss) +src/lib/16_sprit.c: if(!video->bgps) +src/lib/16_sprit.c: o = video->ofs.offscreen_ofs; // source offscreen +src/lib/16_sprit.c: o2 = (ry * video->page[0].stridew) + (rx >> 2); // dest visible (original stride) +src/lib/16_sprit.c: for (i=0;i < h;i++,o += vga_state.vga_draw_stride,o2 += video->page[0].stridew) vga_wm1_mem_block_copy(o2,o,w >> 2); +src/lib/16_sprit.c: //modexCopyPageRegion(&video->page[0], &video->page[2], 0, 0, enti->x, enti->y, 24, 32); +src/lib/16_sprit.c: vga_state.vga_draw_stride_limit = vga_state.vga_draw_stride = video->page[0].stridew; +src/lib/16_sprit.c: vga_state.vga_graphics_ram = video->omemptr; +src/lib/16_vl.c: //printf("\n\n 1st vmem_remain=%u\n", video->vmem_remain); +src/lib/16_vl.c: for(i=0; inum_of_pages; i++) +src/lib/16_vl.c: video->vmem_remain-=video->page[i].pagesize; +src/lib/16_vl.c: //printf(" [%u], video->page[%u].pagesize=%u\n", i, i, video->page[i].pagesize); +src/lib/16_vl.c: //printf(" [%u], vmem_remain=%u\n", i, video->vmem_remain); +src/lib/16_vl.c: video->ofs.offscreen_ofs = video->page[0].pagesize+video->page[1].pagesize;//(vga_state.vga_stride * vga_state.vga_height); +src/lib/16_vl.c: video->ofs.pattern_ofs = (uint16_t)video->page[3].data; +src/lib/16_vl.c: video->vmem_remain=65535U; +src/lib/16_vl.c: video->num_of_pages=0; +src/lib/16_vl.c: (video->page[0]) = modexDefaultPage(&(video->page[0])); video->num_of_pages++; //video->page[0].width += (TILEWHD); video->page[0].height += (TILEWHD); +src/lib/16_vl.c: (video->page[1]) = modexNextPage(&(video->page[0])); video->num_of_pages++; +src/lib/16_vl.c://0000 (video->page[2]) = modexNextPageFlexibleSize(&(video->page[1]), (video->page[0]).width, TILEWH*4); video->num_of_pages++; +src/lib/16_vl.c://0000 (video->page[3]) = (video->page[2]); video->num_of_pages++; +src/lib/16_vl.c://// (video->page[2]) = modexNextPageFlexibleSize(&(video->page[1]), TILEWH*4, TILEWH*4); video->num_of_pages++; +src/lib/16_vl.c://// (video->page[3]) = modexNextPageFlexibleSize(&(video->page[2]), video->page[0].sw, 208); video->num_of_pages++; +src/lib/16_vl.c: (video->page[2]) = modexNextPageFlexibleSize(&(video->page[1]), video->page[0].width, 96); video->num_of_pages++; +src/lib/16_vl.c: (video->page[3]) = modexNextPageFlexibleSize(&(video->page[2]), video->page[0].width, 96); video->num_of_pages++; +src/lib/16_vl.c: video->sp=video->p=0; //showpage +src/lib/16_vl.c: video->r=1; //render +src/lib/16_vl.c: video->vh=video->page[0].height+video->page[1].height+video->page[2].height+video->page[3].height; +src/lib/16_vl.c: video->omemptr= vga_state.vga_graphics_ram; +src/lib/16_vl.c: video->vga_draw_stride= vga_state.vga_draw_stride; +src/lib/16_vl.c: video->vga_draw_stride_limit= vga_state.vga_draw_stride_limit; +src/lib/16_vl.c: video->rss=0; //set to new +src/lib/16_vl.c: video->bgps=1; //set to old +src/lib/16_vl.c: video->page[0].dx=video->page[0].dy= +src/lib/16_vl.c: video->page[1].dx=video->page[1].dy=TILEWH; // 1 tile size buffer +src/lib/16_vl.c: video->page[2].dx=video->page[2].dy= +src/lib/16_vl.c: video->page[3].dx=video->page[3].dy=0; // cache pages are buffer wwww +src/lib/16_vl.c: h=video->vh; +src/lib/16_vl.c: w=video->page[pn].width; +src/lib/16_vl.c: d=(0x10000UL - (uint16_t)video->page[pn].data); +src/lib/16_vl.c: s=video->page[pn].stridew; +src/lib/16_vl.c: h=video->page[pn].height; +src/lib/16_vl.c: if(!pn) h=video->vh; +src/lib/16_vl.c: else h=video->page[pn].height; +src/lib/scroll16.c: //0000pip[0].video->startclk = (*clockw); +src/lib/scroll16.c: mapScrollRight(pip, player, (pip[0].video->p), pn); +src/lib/scroll16.c: //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2; +src/lib/scroll16.c: mapScrollLeft(pip, player, (pip[0].video->p), pn); +src/lib/scroll16.c: //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2; +src/lib/scroll16.c: mapScrollDown(pip, player, (pip[0].video->p), pn); +src/lib/scroll16.c: //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2; +src/lib/scroll16.c: mapScrollUp(pip, player, (pip[0].video->p), pn); +src/lib/scroll16.c: //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2; +src/lib/scroll16.c: //VL_ShowPage(moo[moo[0].video->sp].page, vsync, sr); +src/lib/scroll16.c: offset = (word) moo[moo[0].video->sp].page->data; +src/lib/scroll16.c: crtcOffset = moo[moo[0].video->sp].page->sw >> 3; +src/lib/scroll16.c: if(mv[0].video->bgps) +src/lib/scroll16.c: mv[0].video->r=1; +src/lib/scroll16.c: if(mv[0].video->bgps) +src/lib/scroll16.c: mv[0].video->r=1; +src/lib/scroll16.c: if(mv[0].video->bgps) +src/lib/scroll16.c: mv[0].video->r=1; +src/lib/scroll16.c: if(mv[0].video->bgps) +src/lib/scroll16.c: mv[0].video->r=1; +src/lib/scroll16.c: if(mv[0].video->bgps) modexCopyPageRegion(mv[1].page, mv[0].page, 0, 0, 0, 0, mv[0].page->width, mv[0].page->height); +src/lib/scroll16.c:// modexCopyPageRegion(&(gv->video.page[gv->video->sfip]), &(gv->video.page[!gv->video->sfip]), x, y, x+w, 0, w, h); +src/lib/scroll16.c:// o2 = *(gv->video.page[gv->video->sfip].data)+(y * vga_state.vga_stride) + (x >> 2); // dest visible (original stride) +src/lib/scroll16.c: //modexClearRegion(&(gv->video.page[gv->video->sfip]), x, y, w, h, 45); +src/lib/scroll16.c:// o = *(gv->video.page[gv->video->sfip].data); // source offscreen +src/lib/scroll16.c:// modexCopyPageRegion(&(gv->video.page[gv->video->sfip]), &(gv->video.page[!gv->video->sfip]), x, y, x, 0, w, h); +src/lib/scroll16.c: //modexprint(&(gv->video.page[gv->video->sfip]), x, y+8, type, col, bgcol, "sanic!"); +src/lib/scroll16.c: //modexCopyPageRegion(&video->page[0], &video->page[1], enti->x, enti->y, 0, 0, 24, 32); +src/lib/scroll16.c: switch(pip[0].video->rss) +src/lib/scroll16.c:#define FRAME1 modexDrawSpriteRegion(pip[/*!*/(pip->video->p)].page, x, y, 48, player[pn].enti.dire, 24, 32, PLAYERBMPDATAPTR); +src/lib/scroll16.c:#define FRAME2 modexDrawSpriteRegion(pip[/*!*/(pip->video->p)].page, x, y, 24, player[pn].enti.dire, 24, 32, PLAYERBMPDATAPTR); +src/lib/scroll16.c:#define FRAME3 modexDrawSpriteRegion(pip[/*!*/(pip->video->p)].page, x, y, 0, player[pn].enti.dire, 24, 32, PLAYERBMPDATAPTR); +src/lib/scroll16.c:#define FRAME4 modexDrawSpriteRegion(pip[/*!*/(pip->video->p)].page, x, y, 24, player[pn].enti.dire, 24, 32, PLAYERBMPDATAPTR); +src/lib/scroll16.c:#define FRAME1 modexClearRegion(pip[/*!*/(pip->video->p)].page, x, y, 16, 32, 2+player[pn].enti.dire); +src/lib/scroll16.c:#define FRAME2 modexClearRegion(pip[/*!*/(pip->video->p)].page, x, y, 16, 32, 1+player[pn].enti.dire); +src/lib/scroll16.c:#define FRAME3 modexClearRegion(pip[/*!*/(pip->video->p)].page, x, y, 16, 32, player[pn].enti.dire); +src/lib/scroll16.c:#define FRAME4 modexClearRegion(pip[/*!*/(pip->video->p)].page, x, y, 16, 32, 1+player[pn].enti.dire); +src/lib/scroll16.c: if(pip[0].video->bgps) modexCopyPageRegion(pip[0].page, pip[1].page, x-4, y-4, x-4, y-4, 28, 36); +src/lib/scroll16.c: //modexCopyPageRegion(pip[3].page, pip[!(pip->video->p)].page, x-4, y-4, 0, 128, 28, 36); +src/lib/scroll16.c: /*modexCopyPageRegion(pip[pip->video->p].page, +src/lib/scroll16.c: pip[!(pip->video->p)].page, x-4, y-4, x-4, y-4, 28, 36);*/ +src/lib/scroll16.c: pip->video->r=1; +src/lib/scroll16.c: set_anim_by_id(player[pn].enti.spri, player[pn].enti.dire); //pip->video->sprifilei = set_anim_by_id(player[pn].enti.spri, player[pn].enti.dire); if(pip->video->sprifilei == -1){ printf("ERROR! %u\n", player[pn].enti.dire); return; } +src/lib/scroll16.c: pip->video->r=1; +src/lib/scroll16.c: mv->video->r=1; diff --git a/src/lib/16_enti.c b/src/lib/16_enti.c index c940800f..19df4fd5 100755 --- a/src/lib/16_enti.c +++ b/src/lib/16_enti.c @@ -41,28 +41,29 @@ void EN_initentity(entity_t *enti, video_t *video) enti->overdraww=0; enti->overdrawh=4; -// VL_Initofs(video); + VL_Initofs(video); // modexClearRegion(&video->page[0], enti->x, enti->y, 16, 16, 2); // modexClearRegion(&video->page[2], 0, 0, video->page[2].sw, video->page[2].sh, 45); // modexClearRegion(&video->page[3], 0, 0, video->page[3].sw, video->page[3].sh, 47); -#ifndef OLDBGPRESERVE - video->ofs.pattern_ofs=(uint16_t)video->page[0].data; - video->ofs.offscreen_ofs=(uint16_t)video->page[3].data; - w = (enti->x + 24) & (~3); - h = enti->y + 32; + if(!video->bgps) + { + //video->ofs.pattern_ofs=(uint16_t)video->page[0].data; + //video->ofs.offscreen_ofs=(uint16_t)video->page[3].data; + w = (enti->x + 24) & (~3); + h = enti->y + 32; - // block copy pattern to where we will draw the sprite - vga_setup_wm1_block_copy(); - o2 = video->ofs.offscreen_ofs; //dest - o = video->ofs.pattern_ofs + (enti->y * video->page[0].stridew) + (enti->x >> 2); // source - for (i=0;i < h;i++,o += video->page[0].stridew,o2 += (w >> 2)) vga_wm1_mem_block_copy(o2,o,w >> 2); - // must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally - vga_restore_rm0wm0(); -#else - w=h=o=i=o2=0; - modexCopyPageRegion(&video->page[2], &video->page[0], enti->x, enti->y, 0, 0, 24, 32); -#endif + // block copy pattern to where we will draw the sprite + vga_setup_wm1_block_copy(); + o2 = video->ofs.offscreen_ofs; //dest + o = video->ofs.pattern_ofs + (enti->y * video->page[0].stridew) + (enti->x >> 2); // source + for (i=0;i < h;i++,o += video->page[0].stridew,o2 += (w >> 2)) vga_wm1_mem_block_copy(o2,o,w >> 2); + // must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally + vga_restore_rm0wm0(); + }else{ + w=h=o=i=o2=0; + modexCopyPageRegion(&video->page[2], &video->page[0], enti->x, enti->y, 0, 0, 24, 32); + } } //init player! diff --git a/src/lib/16_sprit.c b/src/lib/16_sprit.c index 5322746a..1c37d46d 100755 --- a/src/lib/16_sprit.c +++ b/src/lib/16_sprit.c @@ -101,9 +101,8 @@ void animate_spri(entity_t *enti, video_t *video) #define INC_PER_FRAME if(enti->q&1) enti->persist_aniframe++; if(enti->persist_aniframe>4) enti->persist_aniframe = 1; unsigned int i,o,o2; int j; int x,y,rx,ry,w,h; -#ifndef OLDBGPRESERVE VGA_RAM_PTR omemptr = (VGA_RAM_PTR)video->page[0].data;// save original mem ptr -#endif + x=enti->spri->x; y=enti->spri->y; VL_Initofs(video); @@ -157,33 +156,35 @@ void animate_spri(entity_t *enti, video_t *video) } // render box bounds. y does not need modification, but x and width must be multiple of 4 - if(!video->rss){ -#ifndef OLDBGPRESERVE - if (x >= enti->overdraww) rx = (x - enti->overdraww) & (~3); - else rx = -(video->page[0].dx); - if (y >= enti->overdrawh) ry = (y - enti->overdrawh); - else ry = -(video->page[0].dy); - h = enti->spri->sprite_vrl_cont->vrl_header->height + enti->overdrawh + y - ry; - w = (x + enti->spri->sprite_vrl_cont->vrl_header->width + (enti->overdraww*2) + 3 - rx) & (~3) - enti->overdraww;//round up - if ((rx+w) > video->page[0].width) w = video->page[0].width-rx; - if ((ry+h) > video->page[0].height) h = video->page[0].height-ry; - - // block copy pattern to where we will draw the sprite - vga_setup_wm1_block_copy(); - o2 = video->ofs.offscreen_ofs; - o = video->ofs.pattern_ofs + (ry * video->page[0].stridew) + (rx >> 2); // source offscreen - for (i=0;i < h;i++,o += video->page[0].stridew,o2 += (w >> 2)) vga_wm1_mem_block_copy(o2,o,w >> 2); - - // must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally - vga_restore_rm0wm0(); - - // replace VGA stride with our own and mem ptr. then sprite rendering at this stage is just (0,0) - vga_state.vga_draw_stride = w >> 2; - vga_state.vga_graphics_ram = omemptr + video->ofs.offscreen_ofs; -#else - w=h=i=o=o2=0; - modexCopyPageRegion(&video->page[2], &video->page[0], enti->x, enti->y, 0, 0, 24, 32); -#endif + if(!video->rss) + { + if(!video->bgps) + { + if (x >= enti->overdraww) rx = (x - enti->overdraww) & (~3); + else rx = -(video->page[0].dx); + if (y >= enti->overdrawh) ry = (y - enti->overdrawh); + else ry = -(video->page[0].dy); + h = enti->spri->sprite_vrl_cont->vrl_header->height + enti->overdrawh + y - ry; + w = (x + enti->spri->sprite_vrl_cont->vrl_header->width + (enti->overdraww*2) + 3 - rx) & (~3) - enti->overdraww;//round up + if ((rx+w) > video->page[0].width) w = video->page[0].width-rx; + if ((ry+h) > video->page[0].height) h = video->page[0].height-ry; + + // block copy pattern to where we will draw the sprite + vga_setup_wm1_block_copy(); + o2 = video->ofs.offscreen_ofs; + o = video->ofs.pattern_ofs + (ry * video->page[0].stridew) + (rx >> 2); // source offscreen + for (i=0;i < h;i++,o += video->page[0].stridew,o2 += (w >> 2)) vga_wm1_mem_block_copy(o2,o,w >> 2); + + // must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally + vga_restore_rm0wm0(); + + // replace VGA stride with our own and mem ptr. then sprite rendering at this stage is just (0,0) + vga_state.vga_draw_stride = w >> 2; + vga_state.vga_graphics_ram = omemptr + video->ofs.offscreen_ofs; + }else{ + w=h=i=o=o2=0; + modexCopyPageRegion(&video->page[2], &video->page[0], enti->x, enti->y, 0, 0, 24, 32); + } }else{ rx=ry=w=h=0; vga_state.vga_graphics_ram = (VGA_RAM_PTR)video->page[0].data; } vga_state.vga_draw_stride_limit = (video->page[0].width + 3 - x) >> 2;//round up @@ -200,28 +201,26 @@ void animate_spri(entity_t *enti, video_t *video) enti->spri->sprite_vrl_cont->data_size ); #endif - if(!video->rss){ -#ifndef OLDBGPRESERVE - // restore ptr - vga_state.vga_graphics_ram = omemptr; - - // block copy to visible RAM from offscreen - vga_setup_wm1_block_copy(); - o = video->ofs.offscreen_ofs; // source offscreen - o2 = (ry * video->page[0].stridew) + (rx >> 2); // dest visible (original stride) - for (i=0;i < h;i++,o += vga_state.vga_draw_stride,o2 += video->page[0].stridew) vga_wm1_mem_block_copy(o2,o,w >> 2); - // must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally - vga_restore_rm0wm0(); -#else - //modexCopyPageRegion(&video->page[0], &video->page[2], 0, 0, enti->x, enti->y, 24, 32); -#endif + if(!video->rss) + { + if(!video->bgps) + { + // restore ptr + vga_state.vga_graphics_ram = omemptr; + + // block copy to visible RAM from offscreen + vga_setup_wm1_block_copy(); + o = video->ofs.offscreen_ofs; // source offscreen + o2 = (ry * video->page[0].stridew) + (rx >> 2); // dest visible (original stride) + for (i=0;i < h;i++,o += vga_state.vga_draw_stride,o2 += video->page[0].stridew) vga_wm1_mem_block_copy(o2,o,w >> 2); + // must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally + vga_restore_rm0wm0(); + }else{ + //modexCopyPageRegion(&video->page[0], &video->page[2], 0, 0, enti->x, enti->y, 24, 32); + } } // restore stride vga_state.vga_draw_stride_limit = vga_state.vga_draw_stride = video->page[0].stridew; vga_state.vga_graphics_ram = video->omemptr; } - - - - diff --git a/src/lib/16_tail.h b/src/lib/16_tail.h index e91b4eb6..ac300b18 100755 --- a/src/lib/16_tail.h +++ b/src/lib/16_tail.h @@ -40,6 +40,7 @@ if(IN_KeyDown(87/*sc_F11*/)){ pagedelayrendermap=!pagedelayrendermap; IN_UserInput(1,1); } \ if(IN_KeyDown(68/*sc_F10*/)){ gvar.kurokku.fpscap=!gvar.kurokku.fpscap; IN_UserInput(1,1); } \ if(IN_KeyDown(sc_F9)){ pagenorendermap=!pagenorendermap; IN_UserInput(1,1); } \ + if(IN_KeyDown(sc_F8)){ gvar.video.bgps=!gvar.video.bgps; IN_UserInput(1,1); } \ if(IN_KeyDown(sc_F7)){ ZC_ShowMV(&mv, 0, 1); IN_UserInput(1,1); } \ if(IN_KeyDown(sc_F6)){ ZC_ShowMV(&mv, 0, 0); IN_UserInput(1,1); } \ if(IN_KeyDown(sc_T)){ gvar.video.rss=!gvar.video.rss; IN_UserInput(1,1); } \ diff --git a/src/lib/16_tdef.h b/src/lib/16_tdef.h index 9a225c8f..d8ed876a 100755 --- a/src/lib/16_tdef.h +++ b/src/lib/16_tdef.h @@ -89,7 +89,6 @@ typedef struct { char name[16]; } map_t; -//TODO USE THIS tile info typedef struct{ word tw; /* screen width in tiles */ word th; /* screen height in tiles */ @@ -279,7 +278,8 @@ typedef struct byte vga_draw_stride; byte vga_draw_stride_limit; // further X clipping //end of doslib origi vars - boolean __near rss; //render sprite switch + boolean __near rss; //render sprite switch + boolean __near bgps; //bg preservation render switch between old and new sword __near sprifilei; //player file's i nibble __near p; //render page number nibble __near sp; //show page number(for showpage) diff --git a/src/lib/16_vl.c b/src/lib/16_vl.c index 1f2ef54e..5c485586 100755 --- a/src/lib/16_vl.c +++ b/src/lib/16_vl.c @@ -280,7 +280,7 @@ void modexCalcVmemRemain(video_t *video) void VL_Initofs(video_t *video) { video->ofs.offscreen_ofs = video->page[0].pagesize+video->page[1].pagesize;//(vga_state.vga_stride * vga_state.vga_height); - video->ofs.pattern_ofs = (uint16_t)video->page[2].data; + video->ofs.pattern_ofs = (uint16_t)video->page[3].data; } void modexHiganbanaPageSetup(video_t *video) @@ -297,9 +297,9 @@ void modexHiganbanaPageSetup(video_t *video) (video->page[3]) = modexNextPageFlexibleSize(&(video->page[2]), video->page[0].width, 96); video->num_of_pages++; modexCalcVmemRemain(video); - video->sp=video->p=0; - video->r=1; - video->vh=video->page[0].height+video->page[1].height+video->page[3].height-8;//+video->page[2].height + video->sp=video->p=0; //showpage + video->r=1; //render + video->vh=video->page[0].height+video->page[1].height+video->page[2].height+video->page[3].height; VL_Initofs(video); //doslib origi var @@ -307,7 +307,8 @@ void modexHiganbanaPageSetup(video_t *video) video->vga_draw_stride= vga_state.vga_draw_stride; video->vga_draw_stride_limit= vga_state.vga_draw_stride_limit; //sprite render switch - video->rss=0; + video->rss= 0; //set to new + video->bgps= 0; //set to new //setup the buffersize video->page[0].dx=video->page[0].dy= diff --git a/src/lib/doslib b/src/lib/doslib index 9c300a9a..df3936df 160000 --- a/src/lib/doslib +++ b/src/lib/doslib @@ -1 +1 @@ -Subproject commit 9c300a9aa95623357c1305b25a6cd84ef5212f27 +Subproject commit df3936dfd8af45cf82c04bce8c40485e0cabe700 diff --git a/src/lib/scroll16.c b/src/lib/scroll16.c index 966e8646..b35d6159 100755 --- a/src/lib/scroll16.c +++ b/src/lib/scroll16.c @@ -359,9 +359,9 @@ void near mapScrollRight(map_view_t *mv, player_t *player, word id, word plid) #endif if(id==0) mapDrawCol(&mv[0], mv[0].tx + mv[0].page->ti.tw, mv[0].ty-1, x, player, DRAWCOLNUM); -// else -// if(!pageflipflop && !pageploop) -// modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*(mv[0].page->ti.th+2)); + else + if(mv[0].video->bgps) + modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*(mv[0].page->ti.th+2)); mv[0].video->r=1; } @@ -381,9 +381,9 @@ void near mapScrollLeft(map_view_t *mv, player_t *player, word id, word plid) #endif if(id==0) mapDrawCol(&mv[0], mv[0].tx - 1, mv[0].ty-1, x, player, DRAWCOLNUM); -// else -// if(!pageflipflop && !pageploop) -// modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*(mv[0].page->ti.th+2)); + else + if(mv[0].video->bgps) + modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*(mv[0].page->ti.th+2)); mv[0].video->r=1; } @@ -403,9 +403,9 @@ void near mapScrollUp(map_view_t *mv, player_t *player, word id, word plid) #endif if(id==0) mapDrawRow(&mv[0], mv[0].tx - 1, mv[0].ty-1, y, player, DRAWCOLNUM); -// else -// if(!pageflipflop && !pageploop) -// modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*(mv[0].page->ti.tw+2), mv[id].map->tiles->tileHeight); + else + if(mv[0].video->bgps) + modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*(mv[0].page->ti.tw+2), mv[id].map->tiles->tileHeight); mv[0].video->r=1; } @@ -425,9 +425,9 @@ void near mapScrollDown(map_view_t *mv, player_t *player, word id, word plid) #endif if(id==0) mapDrawRow(&mv[0], mv[0].tx - 1, mv[0].ty+mv[0].page->ti.th, y, player, DRAWCOLNUM); -// else -// if(!pageflipflop && !pageploop) -// modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*(mv[0].page->ti.tw+2), mv[id].map->tiles->tileHeight); + else + if(mv[0].video->bgps) + modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*(mv[0].page->ti.tw+2), mv[id].map->tiles->tileHeight); mv[0].video->r=1; } @@ -498,7 +498,7 @@ void mapGoTo(map_view_t *mv, int tx, int ty) int py;//px, unsigned int i; - mapinitmapview(mv, tx, ty); + ZC_mapinitMV(mv, tx, ty); /* draw the tiles */ modexClearRegion(mv[0].page, 0, 0, mv[0].page->width, mv[0].page->height, 0); @@ -508,11 +508,11 @@ void mapGoTo(map_view_t *mv, int tx, int ty) mapDrawWRow(&mv[0], tx-1, ty, py); i+=mv->map->width - tx; } -// if(!pageploop) modexCopyPageRegion(mv[1].page, mv[0].page, 0, 0, 0, 0, mv[0].page->width, mv[0].page->height); - modexCopyPageRegion(mv[3].page, mv[0].page, 0/**/, 0/**/, 0, 0, 24, 32); + if(mv[0].video->bgps) modexCopyPageRegion(mv[1].page, mv[0].page, 0, 0, 0, 0, mv[0].page->width, mv[0].page->height); +// modexCopyPageRegion(mv[3].page, mv[0].page, 0/**/, 0/**/, 0, 0, 24, 32); } -void mapinitmapview(map_view_t *mv, int tx, int ty) +void ZC_mapinitMV(map_view_t *mv, int tx, int ty) { /* set up the coordinates */ mv[0].tx = mv[1].tx = tx; @@ -644,8 +644,6 @@ void mapDrawWCol(map_view_t *mv, int tx, int ty, word x) //setkb(0); }*/ -//boolean pageflipflop = 1; -//boolean pageploop = 1; boolean pagenorendermap = 0; boolean pagedelayrendermap = 0; @@ -703,18 +701,19 @@ void shinku(global_game_variables_t *gv) break; } //render!! -// if(pageflipflop){ - if(gv->video.r ){//r=1 -#ifndef OLDBGPRESERVE -#else - //modexCopyPageRegion(&video->page[0], &video->page[1], enti->x, enti->y, 0, 0, 24, 32); -#endif - //vga_setup_wm1_block_copy(); - //_fmemcpy((gv->video.page[(gv->video.p)]).data, (gv->video.page[(!gv->video.p)]).data, gv->video.page[(!gv->video.p)].pagesize); - //vga_restore_rm0wm0(); -// if(!pageploop) modexCopyPageRegion(&(gv->video.page[(gv->video.p)]), &(gv->video.page[(!gv->video.p)]), 0, 0, 0, 0, gv->video.page[gv->video.p].width, gv->video.page[!gv->video.p].height); + if(gv->video.r ) + {//r=1 + if(gv->video.bgps ) + {//bgps=1 + /*modexCopyPageRegion(&(gv->video.page[ + ]), &(gv->video.page[( + ]), 0, 0, 0, 0, gv->video.page[ + ].width, gv->video.page[ + ].height);*/ + }else{ + //modexCopyPageRegion(&video->page[0], &video->page[1], enti->x, enti->y, 0, 0, 24, 32); + } VL_ShowPage(&(gv->video.page[gv->video.sp]), gv->kurokku.fpscap, 0); -// if(!pageploop) gv->video.p=!gv->video.p; gv->video.r =!gv->video.r ; //0000gv->video.tickclk = ((*clockw)-gv->video.startclk)/18.2; // } @@ -800,7 +799,7 @@ void animatePlayer(map_view_t *pip, player_t *player, word pn, sword scrollswitc break; } -// if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, x-4, y-4, x-4, y-4, 28, 36); + if(pip[0].video->bgps) modexCopyPageRegion(pip[0].page, pip[1].page, x-4, y-4, x-4, y-4, 28, 36); // else{ // //copy old bg to page0 // //modexCopyPageRegion(pip[3].page, pip[0].page, bx, by, 0, 0, 20, 36); diff --git a/src/lib/scroll16.h b/src/lib/scroll16.h index 1262b9ac..976a0d0d 100755 --- a/src/lib/scroll16.h +++ b/src/lib/scroll16.h @@ -89,7 +89,6 @@ printf("\n\n");\ printf("gvar.video.r=%u ", gvar.video.r);\ printf("\n\n"); -//pageflipflop, pageploop, extern boolean pagenorendermap, pagedelayrendermap; extern char global_temp_status_text[512]; @@ -177,7 +176,7 @@ inline void near ScrollDown(map_view_t *mv, player_t *player, word id, word plid void ZC_playerXYpos(int x, int y, player_t *player, map_view_t *pip, nibble pn); sword chkmap(map_t *map, word q); void mapGoTo(map_view_t *mv, int tx, int ty); -void mapinitmapview(map_view_t *mv, int tx, int ty); +void ZC_mapinitMV(map_view_t *mv, int tx, int ty); void near mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y); void near mapDrawRow(map_view_t *mv, int tx, int ty, word y, player_t *player, word poopoffset); void near mapDrawCol(map_view_t *mv, int tx, int ty, word x, player_t *player, word poopoffset); diff --git a/src/scroll.c b/src/scroll.c index 810ccf35..df818d69 100755 --- a/src/scroll.c +++ b/src/scroll.c @@ -205,13 +205,7 @@ void main(int argc, char *argv[]) modexClearRegion(mv[3].page, 0, 0, 20, 36, 15); //IN_UserInput(1,1); } -#ifdef SPRITE - if(IN_KeyDown(66)) //f8 - { -// modexDrawSprite(mv[0].page, 16, 16, &p); - modexDrawSprite(mv[0].page, 32+72, 16, (PCXBMPVAR)); - } -#endif + FUNCTIONKEYFUNCTIONS FUNCTIONKEYDRAWJUNK if(IN_KeyDown(sc_L)){ modexClearRegion(&gvar.video.page[0], player[0].enti.x, player[0].enti.y, 16, 16, 1); } diff --git a/src/zcroll.c b/src/zcroll.c index 19b3bb6b..72b6fcea 100755 --- a/src/zcroll.c +++ b/src/zcroll.c @@ -186,22 +186,6 @@ void main(int argc, char *argv[]) if(IN_KeyDown(24)){ modexPalUpdate0(gpal); /*paloffset=0;*/ modexpdump(mv[0].page); IN_UserInput(1,1); } //o if(IN_KeyDown(22)){ modexPalUpdate0(gpal); } //u - //pan switch - if(IN_KeyDown(66)) //f8 - { -// modexDrawSprite(mv[0].page, 16, 16, &p); -// modexDrawSprite(mv[0].page, 32+72, 16, (player[0].data)); - switch(i) - { - case 11: - i=0; - player[0].enti.spri->x = TILEWH; - default: - i++; - animate_spri(&(player[0].enti), &gvar.video);// player[0].enti.spri->x += 16; - break; - } - } FUNCTIONKEYFUNCTIONS FUNCTIONKEYDRAWJUNK if(IN_KeyDown(sc_L)){ modexClearRegion(&gvar.video.page[0], player[0].enti.x, player[0].enti.y, 16, 16, 1); }