*/\r
#include "src/lib/scroll16.h"\r
\r
-#define INC_PER_FRAME if(player[pn].enti.q&1) player[pn].enti.persist_aniframe++; if(player[pn].enti.persist_aniframe>4) player[pn].enti.persist_aniframe = 1;\r
+//#define INC_PER_FRAME if(player[pn].enti.q&1) player[pn].enti.persist_aniframe++; if(player[pn].enti.persist_aniframe>4) player[pn].enti.persist_aniframe = 1;\r
\r
void ZC_walk(map_view_t *pip, player_t *player, word pn)\r
{\r
player[pn].walktype=2;\r
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
- INC_PER_FRAME;\r
+ //INC_PER_FRAME;\r
ANIMATESPRIFUN(pip, player, pn, 2);\r
ScrollRight(pip, player, 3, pn);\r
ScrollRight(pip, player, 2, pn);\r
player[pn].walktype=1;\r
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
- INC_PER_FRAME;\r
+ //INC_PER_FRAME;\r
player[pn].enti.x+=(player[pn].enti.speed);\r
ANIMATESPRIFUN(pip, player, pn, 1);\r
player[pn].enti.q++;\r
player[pn].walktype=2;\r
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
- INC_PER_FRAME;\r
+ //INC_PER_FRAME;\r
ANIMATESPRIFUN(pip, player, pn, 2);\r
ScrollLeft(pip, player, 3, pn);\r
ScrollLeft(pip, player, 2, pn);\r
player[pn].walktype=1;\r
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
- INC_PER_FRAME;\r
+ //INC_PER_FRAME;\r
player[pn].enti.x-=(player[pn].enti.speed);\r
ANIMATESPRIFUN(pip, player, pn, 1);\r
player[pn].enti.q++;\r
player[pn].walktype=2;\r
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
- INC_PER_FRAME;\r
+ //INC_PER_FRAME;\r
ANIMATESPRIFUN(pip, player, pn, 2);\r
ScrollDown(pip, player, 3, pn);\r
ScrollDown(pip, player, 2, pn);\r
player[pn].walktype=1;\r
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
- INC_PER_FRAME;\r
+ //INC_PER_FRAME;\r
player[pn].enti.y+=(player[pn].enti.speed);\r
ANIMATESPRIFUN(pip, player, pn, 1);\r
player[pn].enti.q++;\r
player[pn].walktype=2;\r
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
- INC_PER_FRAME;\r
+ //INC_PER_FRAME;\r
ANIMATESPRIFUN(pip, player, pn, 2);\r
ScrollUp(pip, player, 3, pn);\r
ScrollUp(pip, player, 2, pn);\r
player[pn].walktype=1;\r
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
- INC_PER_FRAME;\r
+ //INC_PER_FRAME;\r
player[pn].enti.y-=(player[pn].enti.speed);\r
ANIMATESPRIFUN(pip, player, pn, 1);\r
player[pn].enti.q++;\r
}\r
\r
\r
-/*\r
-src/lib/scroll16.c: mv[0].video->r=1;\r
-src/lib/scroll16.c: mv[0].video->r=1;\r
-src/lib/scroll16.c: mv[0].video->r=1;\r
-src/lib/scroll16.c: mv[0].video->r=1;\r
-src/lib/scroll16.c: pip->video->r=1;\r
-src/lib/scroll16.c: mv->video->r=1;\r
- */\r
-\r
-void oldwalk(map_view_t *pip, player_t *player, word pn)\r
-{\r
- //printf("player[%d].d=%d\n", pn, player[pn].enti.d);\r
- switch(player[pn].enti.d)\r
- {\r
- //no direction\r
- case 2:\r
- //0000pip[0].video->startclk = (*clockw);\r
- break;\r
- //right movement\r
- case 3:\r
- //printf("pip[0].page->tilesw=%d ", pip[0].page->tilesw); printf("pip[0].page->tw=%d\n", pip[0].page->tw);\r
- if(pip[0].tx >= 0 && pip[0].tx+pip[0].page->tw < pip[0].map->width && player[pn].enti.tx == pip[0].tx+pip[0].page->tilemidposscreenx &&\r
- !(pip[0].map->data[(player[pn].enti.tx)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx+1 == TRIGGX && player[pn].enti.ty == TRIGGY)) //collision detection!\r
- {\r
- if(player[pn].enti.q<=player[pn].enti.spt)\r
- {\r
- INC_PER_FRAME;\r
- ANIMATESPRIFUN(pip, player, pn, 1);\r
- ScrollRight(pip, player, 3, pn);\r
- ScrollRight(pip, player, 2, pn);\r
- //mapScrollRight(pip, player, !(pip[0].video->p), pn);\r
- mapScrollRight(pip, player, (pip[0].video->p), pn);\r
- if(!pageflipflop) modexShowPage(pip[1].page);\r
- player[pn].enti.q++;\r
- //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;\r
- } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.tx++; }\r
- }\r
- else if(player[pn].enti.tx < pip[0].map->width && !(pip[0].map->data[(player[pn].enti.tx)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx+1 == TRIGGX && player[pn].enti.ty == TRIGGY))\r
- {\r
- if(player[pn].enti.q<=player[pn].enti.spt)\r
- {\r
- INC_PER_FRAME;\r
- player[pn].enti.x+=(player[pn].enti.speed);\r
- ANIMATESPRIFUN(pip, player, pn, 0);\r
- if(!pageflipflop) modexShowPage(pip[1].page);\r
- player[pn].enti.q++;\r
- } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.tx++; }\r
- }\r
- else\r
- {\r
- if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32);\r
-#ifdef SPRITE\r
- modexDrawSpriteRegion(pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32, 24, 32, PLAYERBMPDATAPTR);\r
-#else\r
- modexClearRegion(pip[1].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32, 14);\r
-#endif\r
- if(!pageflipflop) modexShowPage(pip[1].page);\r
- player[pn].enti.d = 2;\r
- }\r
- player[pn].enti.triggerx = player[pn].enti.tx+1;\r
- player[pn].enti.triggery = player[pn].enti.ty;\r
- break;\r
-\r
- //left movement\r
- case 1:\r
- if(pip[0].tx > 0 && pip[0].tx+pip[0].page->tw <= pip[0].map->width && player[pn].enti.tx == pip[0].tx+pip[0].page->tilemidposscreenx &&\r
- !(pip[0].map->data[(player[pn].enti.tx-2)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx-1 == TRIGGX && player[pn].enti.ty == TRIGGY)) //collision detection!\r
- {\r
- if(player[pn].enti.q<=player[pn].enti.spt)\r
- {\r
- INC_PER_FRAME;\r
- ANIMATESPRIFUN(pip, player, pn, 1);\r
- ScrollLeft(pip, player, 3, pn);\r
- ScrollLeft(pip, player, 2, pn);\r
- //mapScrollLeft(pip, player, !(pip[0].video->p), pn);\r
- mapScrollLeft(pip, player, (pip[0].video->p), pn);\r
- if(!pageflipflop) modexShowPage(pip[1].page);\r
- player[pn].enti.q++;\r
- //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;\r
- } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.tx--; }\r
- }\r
- else if(player[pn].enti.tx > 1 && !(pip[0].map->data[(player[pn].enti.tx-2)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx-1 == TRIGGX && player[pn].enti.ty == TRIGGY))\r
- {\r
- if(player[pn].enti.q<=player[pn].enti.spt)\r
- {\r
- INC_PER_FRAME;\r
- player[pn].enti.x-=(player[pn].enti.speed);\r
- ANIMATESPRIFUN(pip, player, pn, 0);\r
- if(!pageflipflop) modexShowPage(pip[1].page);\r
- player[pn].enti.q++;\r
- } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.tx--; }\r
- }\r
- else\r
- {\r
- if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32);\r
-#ifdef SPRITE\r
- modexDrawSpriteRegion(pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 96, 24, 32, PLAYERBMPDATAPTR);\r
-#else\r
- modexClearRegion(pip[1].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32, 10);\r
-#endif\r
- if(!pageflipflop) modexShowPage(pip[1].page);\r
- player[pn].enti.d = 2;\r
- }\r
- player[pn].enti.triggerx = player[pn].enti.tx-1;\r
- player[pn].enti.triggery = player[pn].enti.ty;\r
- break;\r
-\r
- //down movement\r
- case 4:\r
- if(pip[0].ty >= 0 && pip[0].ty+pip[0].page->th < pip[0].map->height && player[pn].enti.ty == pip[0].ty+pip[0].page->tilemidposscreeny &&\r
- !(pip[0].map->data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty))] == 0))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty+1 == TRIGGY)) //collision detection!\r
- {\r
- if(player[pn].enti.q<=player[pn].enti.spt)\r
- {\r
- INC_PER_FRAME;\r
- ANIMATESPRIFUN(pip, player, pn, 1);\r
- ScrollDown(pip, player, 3, pn);\r
- ScrollDown(pip, player, 2, pn);\r
- //mapScrollDown(pip, player, !(pip[0].video->p), pn);\r
- mapScrollDown(pip, player, (pip[0].video->p), pn);\r
- if(!pageflipflop) modexShowPage(pip[1].page);\r
- player[pn].enti.q++;\r
- //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;\r
- } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.ty++; }\r
- }\r
- else if(player[pn].enti.ty < pip[0].map->height && !(pip[0].map->data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty))] == 0))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty+1 == TRIGGY))\r
- {\r
- if(player[pn].enti.q<=player[pn].enti.spt)\r
- {\r
- INC_PER_FRAME;\r
- player[pn].enti.y+=(player[pn].enti.speed);\r
- ANIMATESPRIFUN(pip, player, pn, 0);\r
- if(!pageflipflop) modexShowPage(pip[1].page);\r
- player[pn].enti.q++;\r
- } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.ty++; }\r
- }\r
- else\r
- {\r
- if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32);\r
-#ifdef SPRITE\r
- modexDrawSpriteRegion(pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 64, 24, 32, PLAYERBMPDATAPTR);\r
-#else\r
- modexClearRegion(pip[1].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32, 9);\r
-#endif\r
- if(!pageflipflop) modexShowPage(pip[1].page);\r
- player[pn].enti.d = 2;\r
- }\r
- player[pn].enti.triggerx = player[pn].enti.tx;\r
- player[pn].enti.triggery = player[pn].enti.ty+1;\r
- break;\r
-\r
- //up movement\r
- case 0:\r
- if(pip[0].ty > 0 && pip[0].ty+pip[0].page->th <= pip[0].map->height && player[pn].enti.ty == pip[0].ty+pip[0].page->tilemidposscreeny &&\r
- !(pip[0].map->data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty-2))] == 0))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty-1 == TRIGGY)) //collision detection!\r
- {\r
- if(player[pn].enti.q<=player[pn].enti.spt)\r
- {\r
- INC_PER_FRAME;\r
- ANIMATESPRIFUN(pip, player, pn, 1);\r
- ScrollUp(pip, player, 3, pn);\r
- ScrollUp(pip, player, 2, pn);\r
- //mapScrollUp(pip, player, !(pip[0].video->p), pn);\r
- mapScrollUp(pip, player, (pip[0].video->p), pn);\r
- if(!pageflipflop) modexShowPage(pip[1].page);\r
- player[pn].enti.q++;\r
- //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;\r
- } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.ty--; }\r
- }\r
- else if(player[pn].enti.ty > 1 && !(pip[0].map->data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty-2))] == 0))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty-1 == TRIGGY))\r
- {\r
- if(player[pn].enti.q<=player[pn].enti.spt)\r
- {\r
- INC_PER_FRAME;\r
- player[pn].enti.y-=(player[pn].enti.speed);\r
- ANIMATESPRIFUN(pip, player, pn, 0);\r
- if(!pageflipflop) modexShowPage(pip[1].page);\r
- player[pn].enti.q++;\r
- } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.ty--; }\r
- }\r
- else\r
- {\r
- if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32);\r
-#ifdef SPRITE\r
- modexDrawSpriteRegion(pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 0, 24, 32, PLAYERBMPDATAPTR);\r
-#else\r
- modexClearRegion(pip[1].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32, 12);\r
-#endif\r
- if(!pageflipflop) modexShowPage(pip[1].page);\r
- player[pn].enti.d = 2;\r
- }\r
- player[pn].enti.triggerx = player[pn].enti.tx;\r
- player[pn].enti.triggery = player[pn].enti.ty-1;\r
- break;\r
- }\r
-}\r
-\r
//panning page\r
void ZC_panPageManual(map_view_t *pip, player_t *player, word pn)\r
{\r
mapDrawWRow(&mv[0], tx-1, ty, py);\r
i+=mv->map->width - tx;\r
}\r
- //if(!pageploop)\r
+ if(!pageploop)\r
modexCopyPageRegion(mv[1].page, mv[0].page, 0, 0, 0, 0, mv[0].page->width, mv[0].page->height);\r
// {\r
// unsigned int k,j,o;\r
if(i==0)\r
{\r
//wwww\r
- modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, 0); //currently the over scan color!\r
+ modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, 1); //currently the over scan color!\r
}\r
else\r
{\r
case 0:\r
#endif\r
#ifndef TILERENDER\r
- modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, ((dbg_mapdata[i])+1));\r
+ if(!pagenorendermap) modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, ((dbg_mapdata[i])+1));\r
//modexprint(page, x, y, 1, 15, 0, (char const *)(t->debug_data[i]));\r
#else\r
modexDrawBmpRegion (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data));\r
\r
boolean pageflipflop = 1;\r
boolean pageploop = 1;\r
+boolean pagenorendermap = 0;\r
\r
/* sync */\r
void shinku(global_game_variables_t *gv)\r
{\r
word x = (0) + gv->video.page[/*!*/(gv->video.p)].dx; // follow the screen\r
word y = (0) + gv->video.page[/*!*/(gv->video.p)].dy; // follow the screen\r
- word col = 7, bgcol = 0, type = 1;//w = 64, h = 8,\r
+ word col = 2, bgcol = 1, type = 1;//w = 64, h = 8, //col7bgcol0\r
//byte o,o2,i;\r
//modexCopyPageRegion(pip[1].page, pip[2].page, 16, 16, 16, 16, (14*8)+4, 8+4);\r
/* block copy to visible RAM from offscreen */\r
if(elapsed_timer(gv) >= (1.0 / gv->kurokku.frames_per_second))\r
{\r
// NTS: For some bizarre reason, gv->pee is not initialized, but the pointer is not NULL even\r
- // though it should be. Instead it's NULL as a near pointer but contains a non-null\r
+ // though it should be. Instead it's NULL as a neAr pointer but contains a non-null\r
// segment value, so testing against NULL doesn't work. It is initialized properly if\r
- // you call start_timer() though which uses near malloc. Rather than fight with that,\r
+ // you call start_timer() though which uses neAr malloc. Rather than fight with that,\r
// I decided it would be better to declare a temp buffer statically and sprintf to that.\r
//\r
// This fixes *** Null pointer assignment detected error message in ZCROLL.EXE on exit.\r
case 1:\r
//turn this off if XT\r
//modexWaitBorder();\r
- vga_wait_for_vsync();\r
+ //vga_wait_for_vsync();\r
gv->kurokku.frames_per_second=60;\r
break;\r
}\r
+ //render!!\r
if(pageflipflop){\r
- if(gv->video.r){\r
+ if(gv->video.r ){//r=1\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
- modexShowPage(&(gv->video.page[gv->video.p]));\r
+ VL_ShowPage(&(gv->video.page[gv->video.panp]), gv->kurokku.fpscap, 0);//VL_ShowPage(&(gv->video.page[gv->video.p]), gv->kurokku.fpscap, 0);\r
if(!pageploop) gv->video.p=!gv->video.p;\r
- gv->video.r=!gv->video.r;\r
+ gv->video.r =!gv->video.r ;\r
//0000gv->video.tickclk = ((*clockw)-gv->video.startclk)/18.2;\r
}\r
}\r
#define FRAME4 modexClearRegion(pip[/*!*/(pip->video->p)].page, x, y, 16, 32, 1+player[pn].enti.dire);\r
#endif\r
\r
-void /*near*/ animatePlayer(map_view_t *pip, player_t *player, word pn, sword scrollswitch)\r
+void animatePlayer(map_view_t *pip, player_t *player, word pn, sword scrollswitch)\r
{\r
sword x = player[pn].enti.x;\r
sword y = player[pn].enti.y;\r
\r
//draw sprite\r
ZC_drawframe(pip, &player[pn].enti, x, y);\r
-//if(player[pn].enti.q<4) delay(500);\r
+//0000if(player[pn].enti.q<2) delay(200);\r
pip->video->r=1;\r
}\r
\r
}\r
}\r
\r
-void /*near*/ mapScroll(map_view_t *mv, player_t *player)\r
+void mapScroll(map_view_t *mv, player_t *player)\r
{\r
//word x, y; /* coordinate for drawing */\r
int c = 1;\r