From: sparky4 Date: Wed, 1 Feb 2017 21:45:25 +0000 (-0600) Subject: working on palllist.c and no idea how to preserve bg fixed player[0].enti. wwww also... X-Git-Url: http://4ch.mooo.com/gitweb/?a=commitdiff_plain;h=45f3e2d77b5287888a171d442f74ca4e0e807d9b;p=16.git working on palllist.c and no idea how to preserve bg fixed player[0].enti. wwww also i think i should readd the old bg preservication back and start working on actual game stuff wwww --- diff --git a/src/lib/16_enti.c b/src/lib/16_enti.c index cb05a46a..c940800f 100755 --- a/src/lib/16_enti.c +++ b/src/lib/16_enti.c @@ -46,7 +46,7 @@ void EN_initentity(entity_t *enti, video_t *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); @@ -59,6 +59,10 @@ void EN_initentity(entity_t *enti, video_t *video) 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 } //init player! diff --git a/src/lib/16_sprit.c b/src/lib/16_sprit.c index 35143db4..5322746a 100755 --- a/src/lib/16_sprit.c +++ b/src/lib/16_sprit.c @@ -101,8 +101,9 @@ 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,6 +158,7 @@ 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); @@ -178,6 +180,10 @@ void animate_spri(entity_t *enti, video_t *video) // 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 }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 @@ -195,6 +201,7 @@ void animate_spri(entity_t *enti, video_t *video) ); #endif if(!video->rss){ +#ifndef OLDBGPRESERVE // restore ptr vga_state.vga_graphics_ram = omemptr; @@ -205,6 +212,9 @@ void animate_spri(entity_t *enti, video_t *video) 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 } // restore stride vga_state.vga_draw_stride_limit = vga_state.vga_draw_stride = video->page[0].stridew; diff --git a/src/lib/16_vl.h b/src/lib/16_vl.h index 3ce8d71a..41e03762 100755 --- a/src/lib/16_vl.h +++ b/src/lib/16_vl.h @@ -52,6 +52,8 @@ #define TILEWHD TILEWH*2 #define QUADWH TILEWH/2 +//#define OLDBGPRESERVE + /* -========================== Types & Macros ==========================- */ #define PAGE_OFFSET(x,y) (((y)<<6)+((y)<<4)+((x)>>2)) #define PLANE(x) (1 << ((x) & 3)) diff --git a/src/lib/scroll16.c b/src/lib/scroll16.c index 5a9659c6..966e8646 100755 --- a/src/lib/scroll16.c +++ b/src/lib/scroll16.c @@ -705,6 +705,10 @@ void shinku(global_game_variables_t *gv) //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();