#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 ZC_WALKR ScrollRight(pip, player, 3, pn); \\r
- ScrollRight(pip, player, 2, pn); \\r
- mapScrollRight(pip, player, (0), pn); \\r
-if(pip[0].video->bgps) mapScrollRight(pip, player, (1), pn);\r
-#define ZC_WALKL ScrollLeft(pip, player, 3, pn); \\r
- ScrollLeft(pip, player, 2, pn); \\r
- mapScrollLeft(pip, player, (0), pn); \\r
-if(pip[0].video->bgps) mapScrollLeft(pip, player, (1), pn);\r
-#define ZC_WALKD ScrollDown(pip, player, 3, pn); \\r
- ScrollDown(pip, player, 2, pn); \\r
- mapScrollDown(pip, player, (0), pn); \\r
-if(pip[0].video->bgps) mapScrollDown(pip, player, (1), pn);\r
-#define ZC_WALKU ScrollUp(pip, player, 3, pn); \\r
- ScrollUp(pip, player, 2, pn); \\r
- mapScrollUp(pip, player, (0), pn); \\r
-if(pip[0].video->bgps) mapScrollUp(pip, player, (1), pn);\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
- ZC_animatePlayer(pip, player, pn, 2);\r
- ZC_WALKR\r
+ ZC_animatePlayer(pip, player, pn);\r
+ ZC_mapScroll(pip, player, pn);\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
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
player[pn].enti.x+=(player[pn].enti.speed);\r
- ZC_animatePlayer(pip, player, pn, 1);\r
+ ZC_animatePlayer(pip, player, pn);\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
player[pn].walktype=0;\r
- ZC_animatePlayer(pip, player, pn, 0);\r
+ ZC_animatePlayer(pip, player, pn);\r
player[pn].enti.d = 2;\r
}\r
player[pn].enti.triggerx = player[pn].enti.tx+1;\r
player[pn].walktype=2;\r
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
- ZC_animatePlayer(pip, player, pn, 2);\r
- ZC_WALKL\r
+ ZC_animatePlayer(pip, player, pn);\r
+ ZC_mapScroll(pip, player, pn);\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
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
player[pn].enti.x-=(player[pn].enti.speed);\r
- ZC_animatePlayer(pip, player, pn, 1);\r
+ ZC_animatePlayer(pip, player, pn);\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
player[pn].walktype=0;\r
- ZC_animatePlayer(pip, player, pn, 0);\r
+ ZC_animatePlayer(pip, player, pn);\r
player[pn].enti.d = 2;\r
}\r
player[pn].enti.triggerx = player[pn].enti.tx-1;\r
player[pn].walktype=2;\r
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
- ZC_animatePlayer(pip, player, pn, 2);\r
- ZC_WALKD\r
+ ZC_animatePlayer(pip, player, pn);\r
+ ZC_mapScroll(pip, player, pn);\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
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
player[pn].enti.y+=(player[pn].enti.speed);\r
- ZC_animatePlayer(pip, player, pn, 1);\r
+ ZC_animatePlayer(pip, player, pn);\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
player[pn].walktype=0;\r
- ZC_animatePlayer(pip, player, pn, 0);\r
+ ZC_animatePlayer(pip, player, pn);\r
player[pn].enti.d = 2;\r
}\r
player[pn].enti.triggerx = player[pn].enti.tx;\r
player[pn].walktype=2;\r
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
- ZC_animatePlayer(pip, player, pn, 2);\r
- ZC_WALKU\r
+ ZC_animatePlayer(pip, player, pn);\r
+ ZC_mapScroll(pip, player, pn);\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
if(player[pn].enti.q<=player[pn].enti.spt)\r
{\r
player[pn].enti.y-=(player[pn].enti.speed);\r
- ZC_animatePlayer(pip, player, pn, 1);\r
+ ZC_animatePlayer(pip, player, pn);\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
player[pn].walktype=0;\r
- ZC_animatePlayer(pip, player, pn, 0);\r
+ ZC_animatePlayer(pip, player, pn);\r
player[pn].enti.d = 2;\r
}\r
player[pn].enti.triggerx = player[pn].enti.tx;\r
\r
void ZC_ShowMV(map_view_t *moo, boolean vsync, boolean sr)\r
{\r
- //VL_ShowPage(moo[moo[0].video->sp].page, vsync, sr);\r
word high_address, low_address, offset;\r
byte crtcOffset;\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->r=1;\r
+ mv[0].video->dorender=1;\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->r=1;\r
+ mv[0].video->dorender=1;\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->r=1;\r
+ mv[0].video->dorender=1;\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->r=1;\r
+ mv[0].video->dorender=1;\r
}\r
\r
void ZC_mapScroll(map_view_t *mv, player_t *player, word pn)\r
mapScrollRight(mv, player, (0), pn);\r
if(b) mapScrollRight(mv, player, (1), pn);\r
break;\r
- case 4://left\r
+ case 1://left\r
ScrollLeft(mv, player, 3, pn);\r
ScrollLeft(mv, player, 2, pn);\r
mapScrollLeft(mv, player, (0), pn);\r
if(b) mapScrollLeft(mv, player, (1), pn);\r
break;\r
- case 1://down\r
+ case 4://down\r
ScrollDown(mv, player, 3, pn);\r
ScrollDown(mv, player, 2, pn);\r
mapScrollDown(mv, player, (0), pn);\r
if(b) mapScrollUp(mv, player, (1), pn);\r
break;\r
}\r
- printf("player[pn].enti.d=%u\n", player[pn].enti.d);\r
- mv->video->r=1;\r
+ mv[0].video->dorender=1;\r
}\r
\r
//===========================================================================\r
//TODO: put player in starting position of assigned spot on map\r
//default player position on the viewable map\r
-void ZC_playerXYpos(int x, int y, player_t *player, map_view_t *pip, nibble pn)\r
+void ZC_playerXYpos(int x, int y, player_t *player, map_view_t *pip, nibble pn, boolean defaultsw)\r
{\r
- player[pn].enti.tx = x + pip[0].tx + pip[0].page->ti.tilemidposscreenx;\r
- player[pn].enti.ty = y + pip[0].ty + pip[0].page->ti.tilemidposscreeny;\r
+ player[pn].enti.tx = x + pip[0].tx;\r
+ player[pn].enti.ty = y + pip[0].ty;\r
+\r
+ switch(defaultsw)\r
+ {\r
+ case 1:\r
+ player[pn].enti.tx += pip[0].page->ti.tilemidposscreenx;\r
+ player[pn].enti.ty += pip[0].page->ti.tilemidposscreeny;\r
+ break;\r
+ case 0:\r
+ break;\r
+ }\r
}\r
//===========================================================================\r
\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
- 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
+// 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
//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
switch(gv->kurokku.fpscap)\r
{\r
case 0:\r
- modexprint(&(gv->video.page[0]), x, y+8, type, col, bgcol, "sanic!");\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
break;\r
}\r
//render!!\r
- if(gv->video.r )\r
+ if(gv->video.dorender )\r
{//r=1\r
/*if(video->bgp s)\r
{\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
- gv->video.r =!gv->video.r ;\r
+ gv->video.dorender =!gv->video.dorender ;\r
//0000gv->video.tickclk = ((*clockw)-gv->video.startclk)/18.2;\r
-// }\r
}\r
}\r
\r
-void near ZC_animatePlayer(map_view_t *pip, player_t *player, word pn, sword scrollswitch)\r
+void near ZC_animatePlayer(map_view_t *pip, player_t *player, nibble pn)\r
{\r
sword x = player[pn].enti.x;\r
sword y = player[pn].enti.y;\r
sword qq,dd; //scroll offset\r
player[pn].enti.dire=10; //direction\r
\r
- switch(scrollswitch)\r
+ switch(player[pn].walktype)\r
{\r
case 0:\r
dd = 0;\r
break;\r
case 2:\r
dd = 1;\r
- qq = ((player[pn].enti.q)*(player[pn].enti.speed));\r
+ qq = player[pn].enti.q*player[pn].enti.speed;\r
break;\r
}\r
x-=4;\r
player[pn].enti.dire+=dd;\r
if((player[pn].enti.q==1 && player[pn].enti.pred != player[pn].enti.d) || !dd)\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
}\r
if(pip[0].video->bgps)\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->video);\r
-//0000if(player[pn].enti.q<2) delay(200);\r
- pip->video->r=1;\r
+ animate_spri(&player[pn].enti, pip[0].video);\r
+//0000if(player[pn].enti.q<4) delay(200);\r
+ pip[0].video->dorender = 1;\r
}\r
\r
/*\r
//#include "src/lib/16_map.h" //new map stuff\r
#include "src/lib/16_timer.h"\r
#include "src/lib/wcpu/16_wcpu.h"\r
-#include "src/lib/16_sprit.h"\r
+#include "src/lib/16_spri.h"\r
\r
#include <hw/cpu/cpu.h>\r
#include <hw/dos/dos.h>\r
#define MAPW 40\r
#define MAPH 30\r
\r
+//===========================================================================//\r
+\r
//if(player[0].enti.hp==0) printf("%d wwww\n", player[0].enti.y+8);\r
//else printf("\nplayer[0].enti.y: %d\n", player[0].enti.y);\r
//printf("gvar.video.p=%u ", gvar.video.p);\r
//printf("&global_temp_status_text = %Fp\n", &global_temp_status_text);\r
//printf("middle tile position: %dx", gvar.video.page[0].tilemidposscreenx); printf("%d\n", gvar.video.page[0].tilemidposscreeny);\r
//printf(" aniframe=%u", player[0].enti.persist_aniframe);\r
-#define SCROLLEXITMESG printf("[0]txy: %dx%d ", mv[1].tx, mv[1].ty); printf("[1]txy: %dx%d", mv[1].tx, mv[1].ty);\\r
+#define SCROLLEXITMESG printf("[0]txy: %dx%d ", mv[0].tx, mv[0].ty); printf("[1]txy: %dx%d", mv[1].tx, mv[1].ty);\\r
printf("\n\n");\\r
printf("player vars:\n");\\r
printf(" xy: %dx%d", player[0].enti.x, player[0].enti.y); printf(" txy: %dx%d", player[0].enti.tx, player[0].enti.ty); printf(" triggxy: %dx%d", player[0].enti.triggerx, player[0].enti.triggery); printf(" value: %d\n", mv[1].map->data[(player[0].enti.triggerx-1)+(map.width*(player[0].enti.triggery-1))]);\\r
- printf(" hp: %d", (player[0].enti.hp)); printf(" q: %d", player[0].enti.q); printf(" info.dir: %d", player[0].info.dir); printf(" d: %d ", player[0].enti.d);\\r
- printf(" pdir: %d\n", player[0].pdir); printf(" delay=%u", player[0].enti.spri->delay);\\r
+ printf(" hp: %d", (player[0].enti.hp)); printf(" q: %u", player[0].enti.q); printf(" info.dir: %u", player[0].info.dir); printf(" d: %u", player[0].enti.d); printf(" dire: %u", player[0].enti.dire);\\r
+ printf(" pdir: %u\n", player[0].pdir); printf(" delay=%u", player[0].enti.spri->delay);\\r
printf("\n\n");\\r
VL_PrintmodexmemInfo(&gvar.video);\\r
\\r
- printf("gvar.video.r=%u ", gvar.video.r);\\r
- printf("gvar.video.bgps=%u ", gvar.video.bgps);\\r
+ printf("gvar.video:\n");\\r
+ printf(" r=%u ", gvar.video.dorender);\\r
+ printf("bgps=%u ", gvar.video.bgps);\\r
printf("\n\n");\r
\r
extern boolean pagenorendermap, pagedelayrendermap;\r
void near mapScrollUp(map_view_t *mv, player_t *player, word id, word plid);\r
void near mapScrollDown(map_view_t *mv, player_t *player, word id, word plid);\r
void ZC_mapScroll(map_view_t *mv, player_t *player, word pn);\r
-void ZC_playerXYpos(int x, int y, player_t *player, map_view_t *pip, nibble pn);\r
+void ZC_playerXYpos(int x, int y, player_t *player, map_view_t *pip, nibble pn, boolean defaultsw);\r
sword chkmap(map_t *map, word q);\r
void mapGoTo(map_view_t *mv, int tx, int ty);\r
void ZC_mapinitMV(map_view_t *mv, int tx, int ty);\r
//sync\r
void shinku(global_game_variables_t *gv);\r
//animate the sprite\r
-void near ZC_animatePlayer(map_view_t *pip, player_t *player, word pn, sword scrollswitch);\r
+void near ZC_animatePlayer(map_view_t *pip, player_t *player, nibble pn);\r
\r
// Move an entity around. Should actually be in 16_entity\r
boolean ZC_walk2(entity_t *ent, map_view_t *map_v);\r