X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fscroll16.c;h=abbd978e4a74b26faeb5fb41dfe162048a295127;hb=07ada6cbfb76cc2c43feb0225d0b1f82408ca8bf;hp=c36c5f3f6ecd47c6087aebe99753c0d406118995;hpb=0f9b18eec27fe5c3fabe82216fa6af177bae7ac4;p=16.git diff --git a/src/lib/scroll16.c b/src/lib/scroll16.c index c36c5f3f..abbd978e 100755 --- a/src/lib/scroll16.c +++ b/src/lib/scroll16.c @@ -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);