// do PEL panning here\r
outp(AC_INDEX, 0x33);\r
outp(AC_INDEX, (moo[0].page->dx & 0x03) << 1);\r
+ vga_state.vga_draw_stride_limit = vga_state.vga_draw_stride = moo[0].page->stridew;\r
}\r
\r
void\r
// else\r
// if(mv[0].video->bgps)\r
// modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[0].map->tiles->tileWidth, mv[0].page->height);\r
- mv[0].video->dorender=1;\r
+ //mv[0].video->dorender=1;//ScrollRight\r
}\r
\r
\r
// else\r
// if(mv[0].video->bgps)\r
// modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[0].map->tiles->tileWidth, mv[0].page->height);\r
- mv[0].video->dorender=1;\r
+ //mv[0].video->dorender=1;//ScrollLeft\r
}\r
\r
\r
// else\r
// if(mv[0].video->bgps)\r
// modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[0].page->width, mv[0].map->tiles->tileHeight);\r
- mv[0].video->dorender=1;\r
+ //mv[0].video->dorender=1;//ScrollUp\r
}\r
\r
\r
// else\r
// if(mv[0].video->bgps)\r
// modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[0].page->width, mv[0].map->tiles->tileHeight);\r
- mv[0].video->dorender=1;\r
+ //mv[0].video->dorender=1;//ScrollDown\r
}\r
\r
void ZC_mapScroll(map_view_t *mv, player_t *player, word pn)\r
if(b) mapScrollUp(mv, player, (1), pn);\r
break;\r
}\r
- mv[0].video->dorender=1;\r
+ //mv[0].video->dorender=1;//ZC_mapScroll\r
}\r
\r
//===========================================================================\r
//TODO: player position here\r
void mapGoTo(map_view_t *mv, int tx, int ty)\r
{\r
- int py;//px,\r
- unsigned int i;\r
-\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
- py=0;\r
- i=mv[0].ty * mv[0].map->width + mv[0].tx;\r
- for(ty=mv[0].ty-1; py < mv[0].page->sh+mv->dyThresh && ty < mv[0].map->height; ty++, py+=mv[0].map->tiles->tileHeight) {\r
- mapDrawWRow(&mv[0], tx-1, ty, py);\r
- mapDrawWRow(&mv[1], tx-1, ty, py);\r
- i+=mv->map->width - tx;\r
- }\r
-// py=0;\r
-// i=mv[1].ty * mv[1].map->width + mv[1].tx;\r
-// for(ty=mv[1].ty-1; py < mv[1].page->sh+mv->dyThresh && ty < mv[1].map->height; ty++, py+=mv[1].map->tiles->tileHeight) {\r
-// mapDrawWRow(&mv[1], tx-1, ty, py);\r
-// i+=mv->map->width - tx;\r
-// }\r
+ ZC_mapredraw(mv, tx, ty);\r
+\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
}\r
\r
mv[0].dyThresh = mv[1].dyThresh = mv[2].dyThresh = mv[3].dyThresh = mv->map->tiles->tileHeight * 2;\r
}\r
\r
+void ZC_mapredraw(map_view_t *mv, int tx, int ty)\r
+{\r
+ int py;//px,\r
+ unsigned int i;\r
+\r
+ py=0;\r
+ i=mv[0].ty * mv[0].map->width + mv[0].tx;\r
+ for(ty=mv[0].ty-1; py < mv[0].page->sh+mv->dyThresh && ty < mv[0].map->height; ty++, py+=mv[0].map->tiles->tileHeight) {\r
+ mapDrawWRow(&mv[0], tx-1, ty, py);\r
+ mapDrawWRow(&mv[1], tx-1, ty, py);\r
+ i+=mv->map->width - tx;\r
+ }\r
+}\r
+\r
void near\r
mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y)\r
{\r
// This fixes *** Null pointer assignment detected error message in ZCROLL.EXE on exit.\r
sprintf(global_temp_status_text, "%.0f fps", (double)gv->kurokku.tiku/ticktock(gv));\r
modexprint(&(gv->video.page[/*!*/(gv->video.p)]), x, y, type, col, bgcol, global_temp_status_text);\r
+//0000printf("dx=%u dy=%u\n", gv->video.page[/*!*/(gv->video.p)].dx, gv->video.page[/*!*/(gv->video.p)].dy);\r
gv->kurokku.tiku=0;\r
}else //copy dat sheet\r
gv->kurokku.tiku++;\r
\r
switch(gv->kurokku.fpscap)\r
{\r
- case 0:\r
+ case 0: //turn this off if XT\r
//modexprint(&(gv->video.page[0]), x, y+8, type, col, bgcol, "sanic!");\r
gv->kurokku.frames_per_second=1;\r
break;\r
case 1:\r
- //turn this off if XT\r
- modexWaitBorder_start();\r
- //vga_wait_for_vsync();\r
+ //modexWaitBorder();\r
+ //modexWaitBorder_start();\r
+ vga_wait_for_vsync();\r
+ //vga_wait_for_vsync_end();\r
gv->kurokku.frames_per_second=60;\r
break;\r
}\r
}\r
}\r
\r
-void near ZC_animatePlayer(map_view_t *pip, player_t *player, nibble pn)\r
+void near ZC_animatePlayer(map_view_t *pip, player_t *player, word pn)\r
{\r
sword x = player[pn].enti.x;\r
sword y = player[pn].enti.y;\r
break;\r
}\r
player[pn].enti.dire+=dd;\r
- if((player[pn].enti.q==1 && player[pn].enti.pred != player[pn].enti.d) || !dd)\r
+ //setting xy position\r
+ player[pn].enti.spri->x = x;\r
+ player[pn].enti.spri->y = y;\r
+\r
+ if((player[pn].enti.q==1 && player[pn].enti.pred != player[pn].enti.d) || !dd)//when dir changed OR when player change face direction\r
{\r
//0000printf(" q=%u pred=%u d=%u dd=%u\n", player[pn].enti.q, player[pn].enti.pred, player[pn].enti.d, dd);\r
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
player[pn].enti.pred = player[pn].enti.d;\r
+ if(!dd)//changed direction while NOT moving!\r
+ {\r
+ modexCopyPageRegion(pip[0].page, pip[1].page, x-4, y-4, x-4, y-4, 28, 40);\r
+ animate_spri(&player[pn].enti, pip[0].video);\r
+ }\r
}\r
\r
- //setting xy position\r
- player[pn].enti.spri->x = x;\r
- player[pn].enti.spri->y = y;\r
-\r
- if(pip[0].video->bgps)\r
+ if(pip[0].video->bgps && dd)//if moving wwww\r
+ {\r
modexCopyPageRegion(pip[0].page, pip[1].page, x-4, y-4, x-4, y-4, 28, 40);\r
- //draw sprite\r
- animate_spri(&player[pn].enti, pip[0].video);\r
+\r
+ //draw sprite\r
+ animate_spri(&player[pn].enti, pip[0].video);\r
+ }\r
//0000if(player[pn].enti.q<4) delay(200);\r
- pip[0].video->dorender = 1;\r
}\r
\r
/*\r