OSDN Git Service

bg preservation still in works
authorsparky4 <sparky4@cock.li>
Thu, 2 Feb 2017 20:04:42 +0000 (14:04 -0600)
committersparky4 <sparky4@cock.li>
Thu, 2 Feb 2017 20:04:42 +0000 (14:04 -0600)
rss [new file with mode: 0755]
src/lib/16_enti.c
src/lib/16_sprit.c
src/lib/16_tail.h
src/lib/16_tdef.h
src/lib/16_vl.c
src/lib/doslib
src/lib/scroll16.c
src/lib/scroll16.h
src/scroll.c
src/zcroll.c

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