animatePlayer(pip, player, pn, 1);
mapScrollRight(pip, player, 0, pn);
mapScrollRight(pip, player, 1, pn);
- modexShowPage(pip[1].page);
+ ScrollRight(pip, player, 2, pn);
+ ScrollRight(pip, player, 3, pn);
+ if(!pageflipflop) modexShowPage(pip[1].page);
player[pn].q++;
} else { player[pn].q = 1; player[pn].d = 2; player[pn].tx++; }
}
INC_PER_FRAME;
player[pn].x+=(player[pn].speed);
animatePlayer(pip, player, pn, 0);
- modexShowPage(pip[1].page);
+ if(!pageflipflop) modexShowPage(pip[1].page);
player[pn].q++;
} else { player[pn].q = 1; player[pn].d = 2; player[pn].tx++; }
}
#else
modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 14);
#endif
- modexShowPage(pip[1].page);
+ if(!pageflipflop) modexShowPage(pip[1].page);
player[pn].d = 2;
}
player[pn].triggerx = player[pn].tx+1;
animatePlayer(pip, player, pn, 1);
mapScrollLeft(pip, player, 0, pn);
mapScrollLeft(pip, player, 1, pn);
- modexShowPage(pip[1].page);
+ ScrollLeft(pip, player, 2, pn);
+ ScrollLeft(pip, player, 3, pn);
+ if(!pageflipflop) modexShowPage(pip[1].page);
player[pn].q++;
} else { player[pn].q = 1; player[pn].d = 2; player[pn].tx--; }
}
INC_PER_FRAME;
player[pn].x-=(player[pn].speed);
animatePlayer(pip, player, pn, 0);
- modexShowPage(pip[1].page);
+ if(!pageflipflop) modexShowPage(pip[1].page);
player[pn].q++;
} else { player[pn].q = 1; player[pn].d = 2; player[pn].tx--; }
}
#else
modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 10);
#endif
- modexShowPage(pip[1].page);
+ if(!pageflipflop) modexShowPage(pip[1].page);
player[pn].d = 2;
}
player[pn].triggerx = player[pn].tx-1;
animatePlayer(pip, player, pn, 1);
mapScrollDown(pip, player, 0, pn);
mapScrollDown(pip, player, 1, pn);
- modexShowPage(pip[1].page);
+ ScrollDown(pip, player, 2, pn);
+ ScrollDown(pip, player, 3, pn);
+ if(!pageflipflop) modexShowPage(pip[1].page);
player[pn].q++;
} else { player[pn].q = 1; player[pn].d = 2; player[pn].ty++; }
}
INC_PER_FRAME;
player[pn].y+=(player[pn].speed);
animatePlayer(pip, player, pn, 0);
- modexShowPage(pip[1].page);
+ if(!pageflipflop) modexShowPage(pip[1].page);
player[pn].q++;
} else { player[pn].q = 1; player[pn].d = 2; player[pn].ty++; }
}
#else
modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 9);
#endif
- modexShowPage(pip[1].page);
+ if(!pageflipflop) modexShowPage(pip[1].page);
player[pn].d = 2;
}
player[pn].triggerx = player[pn].tx;
animatePlayer(pip, player, pn, 1);
mapScrollUp(pip, player, 0, pn);
mapScrollUp(pip, player, 1, pn);
- modexShowPage(pip[1].page);
+ ScrollUp(pip, player, 2, pn);
+ ScrollUp(pip, player, 3, pn);
+ if(!pageflipflop) modexShowPage(pip[1].page);
player[pn].q++;
} else { player[pn].q = 1; player[pn].d = 2; player[pn].ty--; }
}
INC_PER_FRAME;
player[pn].y-=(player[pn].speed);
animatePlayer(pip, player, 0, pn);
- modexShowPage(pip[1].page);
+ if(!pageflipflop) modexShowPage(pip[1].page);
player[pn].q++;
} else { player[pn].q = 1; player[pn].d = 2; player[pn].ty--; }
}
#else
modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 12);
#endif
- modexShowPage(pip[1].page);
+ if(!pageflipflop) modexShowPage(pip[1].page);
player[pn].d = 2;
}
player[pn].triggerx = player[pn].tx;
{
word x, y; /* coordinate for drawing */
- /* increment the pixel position and update the page */
+ /* decrement the pixel position and update the page */
mv[id].page->dx -= player[plid].speed;
/* check to see if this changes the tile */
{
word x, y; /* coordinate for drawing */
- /* increment the pixel position and update the page */
+ /* decrement the pixel position and update the page */
mv[id].page->dy -= player[plid].speed;
/* check to see if this changes the tile */
//}
}
+
+//TODO finish this wwww
+void near ScrollRight(map_view_t *mv, player_t *player, word id, word plid)
+{
+ /* increment the pixel position and update the page */
+ mv[0].video->page[id].dx += player[plid].speed;
+
+ /* check to see if this changes the tile */
+ if(mv[0].video->page[id].dx >= mv[id].dxThresh )
+ {
+ /* Snap the origin forward */
+ mv[0].video->page[id].data += 4;
+ mv[0].video->page[id].dx = mv[0].map->tiles->tileWidth;
+ }
+}
+
+
+void near ScrollLeft(map_view_t *mv, player_t *player, word id, word plid)
+{
+ /* decrement the pixel position and update the page */
+ mv[0].video->page[id].dx -= player[plid].speed;
+
+ /* check to see if this changes the tile */
+ if(mv[0].video->page[id].dx == 0)
+ {
+ /* Snap the origin backward */
+ mv[0].video->page[id].data -= 4;
+ mv[0].video->page[id].dx = mv[0].map->tiles->tileWidth;
+ }
+}
+
+void near ScrollUp(map_view_t *mv, player_t *player, word id, word plid)
+{
+ /* decrement the pixel position and update the page */
+ mv[0].video->page[id].dy -= player[plid].speed;
+
+ /* check to see if this changes the tile */
+ if(mv[0].video->page[id].dy == 0)
+ {
+ /* Snap the origin backward */
+ mv[0].video->page[id].data -= 4;
+ mv[0].video->page[id].dy = mv[0].map->tiles->tileWidth;
+ }
+}
+
+void near ScrollDown(map_view_t *mv, player_t *player, word id, word plid)
+{
+ /* increment the pixel position and update the page */
+ mv[0].video->page[id].dy += player[plid].speed;
+
+ /* check to see if this changes the tile */
+ if(mv[0].video->page[id].dy >= mv[id].dxThresh )
+ {
+ /* Snap the origin forward */
+ mv[0].video->page[id].data += 4;
+ mv[0].video->page[id].dy = mv[0].map->tiles->tileWidth;
+ }
+}
+
sword chkmap(map_t *map, word q)
{
// bitmap_t bp;
//setkb(0);
}*/
+unsigned char shinku_fps_indicator_page = 0;
+boolean pageflipflop;
+//gv->video.p
+
/* sync */
-void shinku(map_view_t *pip, global_game_variables_t *gv)
+void shinku(global_game_variables_t *gv)
{
- //float t;
+ word x = (0) + gv->video.page[shinku_fps_indicator_page].dx; // follow the screen
+ word y = (0) + gv->video.page[shinku_fps_indicator_page].dy; // follow the screen
+ word w = 64;
+ word h = 8;
+ word col = 7;
+ word bgcol = 0;
+ word type = 1;
+ byte o,o2,i;
//modexCopyPageRegion(pip[1].page, pip[2].page, 16, 16, 16, 16, (14*8)+4, 8+4);
+ /* block copy to visible RAM from offscreen */
+ vga_setup_wm1_block_copy();
+ modexCopyPageRegion(&(gv->video.page[shinku_fps_indicator_page]), &(gv->video.page[!shinku_fps_indicator_page]), x, y, x+w, 0, w, h);
+// o = *(gv->video.page[2].data); // source offscreen
+// o2 = *(gv->video.page[shinku_fps_indicator_page].data)+(y * vga_state.vga_stride) + (x >> 2); // dest visible (original stride)
+// for (i=0;i < h;i++,o += vga_state.vga_draw_stride,o2 += vga_state.vga_stride) vga_wm1_mem_block_copy(o2,o,w >> 2);
+ /* must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally */
+ vga_restore_rm0wm0();
if(elapsed_timer(gv) >= (1.0 / gv->kurokku.frames_per_second))
{
- word x = (16);
- word y = (8+16);
- word col = 15;
- word bgcol = 0;
- word type = 1;
- //t=(((*(gv->clock))-gv->clock_start) /18.2);
- //sprintf(gv->pee, "%f fps", (double)gv->kurokku.tiku/ticktock(gv));
- vga_moveto(x,y);
- vga_sync_bios_cursor();
- printf("%f fps", (double)gv->kurokku.tiku/ticktock(gv));
- //modexprint(pip[1].page, 16, 16, 1, 15, 0, gv->pee, 1);
- //(gv->clock_start)=*(gv->clock);
+ sprintf(gv->pee, "%.0f fps", (double)gv->kurokku.tiku/ticktock(gv));
+ //modexClearRegion(&(gv->video.page[shinku_fps_indicator_page]), x, y, w, h, 45);
+ modexprint(&(gv->video.page[shinku_fps_indicator_page]), x, y, type, col, bgcol, gv->pee);
gv->kurokku.tiku=0;
- }
- //modexprint(page, 16, 16, 1, 15, 0, pee);
+ /* block copy to visible RAM from offscreen */
+ vga_setup_wm1_block_copy();
+// o = *(gv->video.page[shinku_fps_indicator_page].data); // source offscreen
+// o2 = *(gv->video.page[2].data)+(y * vga_state.vga_stride) + (x >> 2); // dest visible (original stride)
+// for (i=0;i < h;i++,o += vga_state.vga_draw_stride,o2 += vga_state.vga_stride) vga_wm1_mem_block_copy(o2,o,w >> 2);
+ modexCopyPageRegion(&(gv->video.page[shinku_fps_indicator_page]), &(gv->video.page[!shinku_fps_indicator_page]), x, y, x, 0, w, h);
+ /* must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally */
+ vga_restore_rm0wm0();
+ }else //copy dat sheet
gv->kurokku.tiku++;
+
switch(gv->kurokku.fpscap)
{
case 0:
- //modexprint(page, 16, 32, 1, 15, 0, "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) modexShowPage(&(gv->video.page[gv->video.p]));
+ gv->video.p=!gv->video.p;
}
void near animatePlayer(map_view_t *pip, player_t *player, word pn, sword scrollswitch)
#define FRAME2 modexClearRegion(pip[1].page, x, y, 24, 32, 1+dire);
#define FRAME3 modexClearRegion(pip[1].page, x, y, 24, 32, dire);
#define FRAME4 modexClearRegion(pip[1].page, x, y, 24, 32, 1+dire);
-#endif
- modexCopyPageRegion(pip[1].page, pip[0].page, x-4, y-4, x-4, y-4, 28, 40);
+ #endif
+ if(pageflipflop)
+ modexCopyPageRegion(pip[pip->video->p].page,
+ pip[!(pip->video->p)].page, x-4, y-4, x-4, y-4, 28, 40);
+ else modexCopyPageRegion(pip[1].page, pip[0].page, x-4, y-4, x-4, y-4, 28, 40);
//modexCopyPageRegion(pip[2].page, pip[1].page, 16, 16, 16, 16, (14*8)+4, 8+4);
if(2>ls && ls>=1) { FRAME1 }else
if(3>ls && ls>=2) { FRAME2 }else