]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/scroll16.c
i need to test on my old machines ^^
[16.git] / src / lib / scroll16.c
index c36c5f3f6ecd47c6087aebe99753c0d406118995..abbd978e4a74b26faeb5fb41dfe162048a295127 100755 (executable)
@@ -66,11 +66,11 @@ void walk(map_view_t *pip, player_t *player, word pn)
                        }
                        else
                        {
-                               if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].x-4, player[pn].y-TILEWH, player[pn].x-4, player[pn].y-TILEWH, 24, 32);
+                               if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].x, player[pn].y-TILEWH, player[pn].x, player[pn].y-TILEWH, 16, 32);
 #ifdef SPRITE
-                               PBUFSFUN(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 24, 32, PLAYERBMPDATA);
+                               PBUFSFUN(pip[1].page, player[pn].x, player[pn].y-TILEWH, 16, 32, 16, 32, PLAYERBMPDATA);
 #else
-                               modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 14);
+                               modexClearRegion(pip[1].page, player[pn].x, player[pn].y-TILEWH, 16, 32, 14);
 #endif
                                if(!pageflipflop) modexShowPage(pip[1].page);
                                player[pn].d = 2;
@@ -110,11 +110,11 @@ void walk(map_view_t *pip, player_t *player, word pn)
                        }
                        else
                        {
-                               if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].x-4, player[pn].y-TILEWH, player[pn].x-4, player[pn].y-TILEWH, 24, 32);
+                               if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].x, player[pn].y-TILEWH, player[pn].x, player[pn].y-TILEWH, 16, 32);
 #ifdef SPRITE
-                               PBUFSFUN(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 96, 24, 32, PLAYERBMPDATA);
+                               PBUFSFUN(pip[1].page, player[pn].x, player[pn].y-TILEWH, 16, 96, 16, 32, PLAYERBMPDATA);
 #else
-                               modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 10);
+                               modexClearRegion(pip[1].page, player[pn].x, player[pn].y-TILEWH, 16, 32, 10);
 #endif
                                if(!pageflipflop) modexShowPage(pip[1].page);
                                player[pn].d = 2;
@@ -154,11 +154,11 @@ void walk(map_view_t *pip, player_t *player, word pn)
                        }
                        else
                        {
-                               if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].x-4, player[pn].y-TILEWH, player[pn].x-4, player[pn].y-TILEWH, 24, 32);
+                               if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].x, player[pn].y-TILEWH, player[pn].x, player[pn].y-TILEWH, 16, 32);
 #ifdef SPRITE
-                               PBUFSFUN(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 64, 24, 32, PLAYERBMPDATA);
+                               PBUFSFUN(pip[1].page, player[pn].x, player[pn].y-TILEWH, 16, 64, 16, 32, PLAYERBMPDATA);
 #else
-                               modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 9);
+                               modexClearRegion(pip[1].page, player[pn].x, player[pn].y-TILEWH, 16, 32, 9);
 #endif
                                if(!pageflipflop) modexShowPage(pip[1].page);
                                player[pn].d = 2;
@@ -198,11 +198,11 @@ void walk(map_view_t *pip, player_t *player, word pn)
                        }
                        else
                        {
-                               if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].x-4, player[pn].y-TILEWH, player[pn].x-4, player[pn].y-TILEWH, 24, 32);
+                               if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].x, player[pn].y-TILEWH, player[pn].x, player[pn].y-TILEWH, 16, 32);
 #ifdef SPRITE
-                               PBUFSFUN(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 0, 24, 32, PLAYERBMPDATA);
+                               PBUFSFUN(pip[1].page, player[pn].x, player[pn].y-TILEWH, 16, 0, 16, 32, PLAYERBMPDATA);
 #else
-                               modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 12);
+                               modexClearRegion(pip[1].page, player[pn].x, player[pn].y-TILEWH, 16, 32, 12);
 #endif
                                if(!pageflipflop) modexShowPage(pip[1].page);
                                player[pn].d = 2;
@@ -487,6 +487,13 @@ void near ScrollRight(map_view_t *mv, player_t *player, word id, word plid)
        {
                /* block copy pattern to where we will draw the sprite */
                vga_setup_wm1_block_copy();
+//             {
+//                     word i;
+//                     byte o,o2;
+//                     o2 = *mv[0].video->page[id].data+4;
+//                     o = *mv[0].video->page[id].data;
+//                     for (i=0;i < mv[0].video->page[id].height;i++,o += mv[0].video->page[id].width+vga_state.vga_stride,o2 += (*mv[0].video->page[id].data >> 2)) vga_wm1_mem_block_copy(o2,o,*mv[0].video->page[id].data >> 2);
+//             }
                _fmemmove(mv[0].video->page[id].data+4, mv[0].video->page[id].data, mv[0].video->page[id].pagesize);
                /* must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally */
                vga_restore_rm0wm0();
@@ -496,7 +503,6 @@ void near ScrollRight(map_view_t *mv, player_t *player, word id, word plid)
        }
 }
 
-
 void near ScrollLeft(map_view_t *mv, player_t *player, word id, word plid)
 {
        /* decrement the pixel position and update the page */
@@ -507,6 +513,13 @@ void near ScrollLeft(map_view_t *mv, player_t *player, word id, word plid)
        {
                /* block copy pattern to where we will draw the sprite */
                vga_setup_wm1_block_copy();
+//             {
+//                     word i;
+//                     byte o,o2;
+//                     o2 = *mv[0].video->page[id].data-4;
+//                     o = *mv[0].video->page[id].data;
+//                     for (i=0;i < mv[0].video->page[id].height;i++,o += mv[0].video->page[id].width+vga_state.vga_stride,o2 += (*mv[0].video->page[id].data >> 2)) vga_wm1_mem_block_copy(o2,o,*mv[0].video->page[id].data >> 2);
+//             }
                _fmemmove(mv[0].video->page[id].data-4, mv[0].video->page[id].data, mv[0].video->page[id].pagesize);
                /* must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally */
                vga_restore_rm0wm0();
@@ -526,6 +539,13 @@ void near ScrollUp(map_view_t *mv, player_t *player, word id, word plid)
        {
                /* block copy pattern to where we will draw the sprite */
                vga_setup_wm1_block_copy();
+//             {
+//                     word i;
+//                     byte o,o2;
+//                     o2 = *mv[0].video->page[id].data-mv[0].video->page[id].pi;
+//                     o = *mv[0].video->page[id].data;
+//                     for (i=0;i < mv[0].video->page[id].height;i++,o += mv[0].video->page[id].width+vga_state.vga_stride,o2 += (*mv[0].video->page[id].data >> 2)) vga_wm1_mem_block_copy(o2,o,*mv[0].video->page[id].data >> 2);
+//             }
                _fmemmove(mv[0].video->page[id].data-mv[0].video->page[id].pi, mv[0].video->page[id].data, mv[0].video->page[id].pagesize);
                /* must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally */
                vga_restore_rm0wm0();
@@ -545,6 +565,13 @@ void near ScrollDown(map_view_t *mv, player_t *player, word id, word plid)
        {
                /* block copy pattern to where we will draw the sprite */
                vga_setup_wm1_block_copy();
+//             {
+//                     word i;
+//                     byte o,o2;
+//                     o2 = *mv[0].video->page[id].data+mv[0].video->page[id].pi;
+//                     o = *mv[0].video->page[id].data;
+//                     for (i=0;i < mv[0].video->page[id].height;i++,o += mv[0].video->page[id].width+vga_state.vga_stride,o2 += (*mv[0].video->page[id].data >> 2)) vga_wm1_mem_block_copy(o2,o,*mv[0].video->page[id].data >> 2);
+//             }
                _fmemmove(mv[0].video->page[id].data+mv[0].video->page[id].pi, mv[0].video->page[id].data, mv[0].video->page[id].pagesize);
                /* must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally */
                vga_restore_rm0wm0();
@@ -632,7 +659,7 @@ void mapGoTo(map_view_t *mv, int tx, int ty)
                                        vga_state.vga_graphics_ram[o] = (k^j)&15; // VRL samples put all colors in first 15!
                }
        }
-       modexCopyPageRegion(mv[3].page, mv[!(mv->video->p)].page, 0/**/, 0/**/, 0, 128, 28, 36);
+       modexCopyPageRegion(mv[3].page, mv[!(mv->video->p)].page, 0/**/, 0/**/, 0, 128, 20, 36);
 }
 
 
@@ -805,24 +832,22 @@ void shinku(global_game_variables_t *gv)
        switch(gv->kurokku.fpscap)
        {
                case 0:
-                       modexprint(&(gv->video.page[shinku_fps_indicator_page]), x, y+8, type, col, bgcol, "sanic!");
+                       //modexprint(&(gv->video.page[shinku_fps_indicator_page]), x, y+8, type, col, bgcol, "sanic!");
                        gv->kurokku.frames_per_second=1;
                break;
                case 1:
                        //turn this off if XT
-                       //modexWaitBorder();
-                       vga_wait_for_vsync();
+                       modexWaitBorder();
+                       //vga_wait_for_vsync();
                        gv->kurokku.frames_per_second=60;
                break;
        }
        if(pageflipflop){
        if(gv->video.r){
-               /* block copy pattern to where we will draw the sprite */
                //vga_setup_wm1_block_copy();
-               //_fmemmove((gv->video.page[(gv->video.p)]).data, (gv->video.page[(!gv->video.p)]).data, gv->video.page[(!gv->video.p)].pagesize);
-               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);
-               /* must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally */
+               //_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();
+               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);
                modexShowPage(&(gv->video.page[gv->video.p]));
                gv->video.p=!gv->video.p;
                gv->video.r=!gv->video.r;
@@ -835,17 +860,13 @@ void near animatePlayer(map_view_t *pip, player_t *player, word pn, sword scroll
 {
        sword x = player[pn].x;
        sword y = player[pn].y;
-#ifdef SPRITE
        word dire=32; //direction
-#else
-       word dire=8; //direction
-#endif
        sword qq; //scroll offset
        word ls = player[pn].persist_aniframe;
 
        if(scrollswitch==0) qq = 0;
        else qq = ((player[pn].q)*(player[pn].speed));
-       x-=4;
+       //x-=4;
        y-=TILEWH;
        switch (player[pn].d)
        {
@@ -872,22 +893,21 @@ void near animatePlayer(map_view_t *pip, player_t *player, word pn, sword scroll
                        x-=qq;
                break;
        }
-
        //modexCopyPageRegion(pip[!(pip->video->p)].page, pip[3].page, 0, 128, x-4, y-4, 28, 36);
 #ifdef SPRITE
-// #define FRAME1 PBUFSFUN(pip[1].page, x, y, 48, dire, 24, 32,        PLAYERBMPDATA);
-// #define FRAME2 PBUFSFUN(pip[1].page, x, y, 24, dire, 24, 32,        PLAYERBMPDATA);
-// #define FRAME3 PBUFSFUN(pip[1].page, x, y, 0, dire, 24, 32, PLAYERBMPDATA);
-// #define FRAME4 PBUFSFUN(pip[1].page, x, y, 24, dire, 24, 32,        PLAYERBMPDATA);
-#define FRAME1 PBUFSFUN(pip[!(pip->video->p)].page, x, y, 48, dire, 24, 32,    PLAYERBMPDATA);
-#define FRAME2 PBUFSFUN(pip[!(pip->video->p)].page, x, y, 24, dire, 24, 32,    PLAYERBMPDATA);
-#define FRAME3 PBUFSFUN(pip[!(pip->video->p)].page, x, y, 0, dire, 24, 32,     PLAYERBMPDATA);
-#define FRAME4 PBUFSFUN(pip[!(pip->video->p)].page, x, y, 24, dire, 24, 32,    PLAYERBMPDATA);
+// #define FRAME1 PBUFSFUN(pip[1].page, x, y, 32, dire, 16, 32,        PLAYERBMPDATA);
+// #define FRAME2 PBUFSFUN(pip[1].page, x, y, 16, dire, 16, 32,        PLAYERBMPDATA);
+// #define FRAME3 PBUFSFUN(pip[1].page, x, y, 0, dire, 16, 32, PLAYERBMPDATA);
+// #define FRAME4 PBUFSFUN(pip[1].page, x, y, 16, dire, 16, 32,        PLAYERBMPDATA);
+#define FRAME1 PBUFSFUN(pip[!(pip->video->p)].page, x, y, 32, dire, 16, 32,    PLAYERBMPDATA);
+#define FRAME2 PBUFSFUN(pip[!(pip->video->p)].page, x, y, 16, dire, 16, 32,    PLAYERBMPDATA);
+#define FRAME3 PBUFSFUN(pip[!(pip->video->p)].page, x, y, 0, dire, 16, 32,     PLAYERBMPDATA);
+#define FRAME4 PBUFSFUN(pip[!(pip->video->p)].page, x, y, 16, dire, 16, 32,    PLAYERBMPDATA);
 #else
-#define FRAME1 modexClearRegion(pip[!(pip->video->p)].page, x, y, 24, 32, 2+dire);
-#define FRAME2 modexClearRegion(pip[!(pip->video->p)].page, x, y, 24, 32, 1+dire);
-#define FRAME3 modexClearRegion(pip[!(pip->video->p)].page, x, y, 24, 32, dire);
-#define FRAME4 modexClearRegion(pip[!(pip->video->p)].page, x, y, 24, 32, 1+dire);
+#define FRAME1 modexClearRegion(pip[!(pip->video->p)].page, x, y, 16, 32, 2+dire);
+#define FRAME2 modexClearRegion(pip[!(pip->video->p)].page, x, y, 16, 32, 1+dire);
+#define FRAME3 modexClearRegion(pip[!(pip->video->p)].page, x, y, 16, 32, dire);
+#define FRAME4 modexClearRegion(pip[!(pip->video->p)].page, x, y, 16, 32, 1+dire);
        #endif
        if(!pageflipflop)
                modexCopyPageRegion(pip[1].page, pip[0].page, x-4, y-4, x-4, y-4, 28, 36);
@@ -896,10 +916,25 @@ void near animatePlayer(map_view_t *pip, player_t *player, word pn, sword scroll
        /*modexCopyPageRegion(pip[pip->video->p].page,
  pip[!(pip->video->p)].page, x-4, y-4, x-4, y-4, 28, 36);*/
 //     else modexCopyPageRegion(pip[1].page, pip[0].page, x-4, y-4, x-4, y-4, 28, 40);
-       if(2>ls && ls>=1) { FRAME1 }else
-       if(3>ls && ls>=2) { FRAME2 }else
-       if(4>ls && ls>=3) { FRAME3 }else
-       if(5>ls && ls>=4) { FRAME4 }
+       switch(ls)
+       {
+               case 1:
+                       FRAME1
+               break;
+               case 2:
+                       FRAME2
+               break;
+               case 3:
+                       FRAME3
+               break;
+               case 4:
+                       FRAME4
+               break;
+       }
+//     if(2>ls && ls>=1) { FRAME1 }else
+//     if(3>ls && ls>=2) { FRAME2 }else
+//     if(4>ls && ls>=3) { FRAME3 }else
+//     if(5>ls && ls>=4) { FRAME4 }
        pip->video->r=1;
        //TODO: mask copy //modexCopyPageRegion(dest->page, src->page, x-4, y-4, x-4, y-4, 28, 40);
        //modexClearRegion(top->page, 66, 66, 2, 40, 0);