/* Project 16 Source Code~
- * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669
+ * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123
*
* This file is part of Project 16.
*
{
//right movement
case 3:
+ //printf("pip[0].page->tilesw=%d\n", pip[0].page->tilesw);
if(pip[0].tx >= 0 && pip[0].tx+pip[0].page->tilesw < pip[0].map->width && player[pn].tx == pip[0].tx+pip[0].page->tilemidposscreenx &&
!(pip[0].map->data[(player[pn].tx)+(pip[0].map->width*(player[pn].ty-1))] == 0))//!(player[pn].tx+1 == TRIGGX && player[pn].ty == TRIGGY)) //collision detection!
{
{
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);
#ifdef SPRITE
- modexDrawSpriteRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 24, 32, &player[pn].data);
+ PBUFSFUN(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 24, 32, PLAYERBMPDATA);
#else
modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 14);
#endif
{
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);
#ifdef SPRITE
- modexDrawSpriteRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 96, 24, 32, &player[pn].data);
+ PBUFSFUN(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 96, 24, 32, PLAYERBMPDATA);
#else
modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 10);
#endif
{
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);
#ifdef SPRITE
- modexDrawSpriteRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 64, 24, 32, &player[pn].data);
+ PBUFSFUN(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 64, 24, 32, PLAYERBMPDATA);
#else
modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 9);
#endif
{
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);
#ifdef SPRITE
- modexDrawSpriteRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 0, 24, 32, &player[pn].data);
+ PBUFSFUN(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 0, 24, 32, PLAYERBMPDATA);
#else
modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 12);
#endif
}
/* draw the next column */
- x= SCREEN_WIDTH + mv[id].map->tiles->tileWidth;
+ x= mv[0].page->sw + mv[id].map->tiles->tileWidth;
if(player[plid].q%4)
if(id==0)
- mapDrawCol(&mv[0], mv[0].tx + 20 , mv[0].ty-1, x, player, mv->page->dx);
+ mapDrawCol(&mv[0], mv[0].tx + mv[0].page->tilesw, mv[0].ty-1, x, player, mv->page->dx);
else
- modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*17);
+ modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*(mv[0].page->tilesh+2));
//}
}
if(id==0)
mapDrawCol(&mv[0], mv[0].tx - 1, mv[0].ty-1, x, player, mv->page->dx);
else
- modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*17);
+ modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*(mv[0].page->tilesh+2));
//}
}
if(id==0)
mapDrawRow(&mv[0], mv[0].tx - 1, mv[0].ty-1, y, player, mv->page->dy);
else
- modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*22, mv[id].map->tiles->tileHeight);
+ modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*(mv[0].page->tilesw+2), mv[id].map->tiles->tileHeight);
//}
}
}
/* draw the next row */
- y= SCREEN_HEIGHT + mv[id].map->tiles->tileHeight;
+ y= mv[0].page->sh + mv[id].map->tiles->tileHeight;
if(player[plid].q%3)
if(id==0)
- mapDrawRow(&mv[0], mv[0].tx - 1, mv[0].ty+15, y, player, mv->page->dy);
+ mapDrawRow(&mv[0], mv[0].tx - 1, mv[0].ty+mv[0].page->tilesh, y, player, mv->page->dy);
else
- modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*22, mv[id].map->tiles->tileHeight);
+ modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*(mv[0].page->tilesw+2), mv[id].map->tiles->tileHeight);
//}
}
modexClearRegion(mv->page, 0, 0, mv->page->width, mv->page->height, 0);
py=0;
i=mv->ty * mv->map->width + mv->tx;
- for(ty=mv->ty-1; py < SCREEN_HEIGHT+mv->dyThresh && ty < mv->map->height; ty++, py+=mv->map->tiles->tileHeight) {
+ for(ty=mv->ty-1; py < mv->page->sh+mv->dyThresh && ty < mv->map->height; ty++, py+=mv->map->tiles->tileHeight) {
mapDrawWRow(mv, tx-1, ty, py);
i+=mv->map->width - tx;
}
switch(t->debug_text)
{
case 0:
-#ifndef SPRITE
- modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, ((t->debug_data[i])+1)*2);
+#ifndef TILERENDER
+ modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, ((t->debug_data[i])+1));
//cannot print number value du to it being slow as bakapee
#else
- modexDrawBmpRegion(page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data));
+ PBUFBFUN (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data));
+ /* then the sprite. note modding ram ptr means we just draw to (x&3,0) */
+ //draw_vrl1_vgax_modex(x-rx,y-ry,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));
+ //modexDrawBmpRegion (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data));
#endif
break;
case 1:
- modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, (t->debug_data[i])+1);
+ modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, (t->debug_data[i]+1));
//modexprintbig(page, x, y, 1, 15, 0, (t->debug_data));
/*for(texty=0; texty<2; texty++)
{
//printf("y: %d\n", poopoffset);
/* the position within the map array */
i=ty * mv->map->width + tx;
- for(x=poopoffset; x<(SCREEN_WIDTH+mv->dxThresh)/(poopoffset+1) && tx < mv->map->width; x+=mv->map->tiles->tileWidth, tx++) {
+ for(x=poopoffset; x<(mv->page->sw+mv->dxThresh)/(poopoffset+1) && tx < mv->map->width; x+=mv->map->tiles->tileWidth, tx++) {
if(i>=0) {
/* we are in the map, so copy! */
mapDrawTile(mv->map->tiles, mv->map->data[i], mv->page, x, y);
/* We'll copy all of the columns in the screen,
i + 1 row above and one below */
- for(y=poopoffset; y<(SCREEN_HEIGHT+mv->dyThresh)/(poopoffset+1) && ty < mv->map->height; y+=mv->map->tiles->tileHeight, ty++) {
+ for(y=poopoffset; y<(mv->page->sh+mv->dyThresh)/(poopoffset+1) && ty < mv->map->height; y+=mv->map->tiles->tileHeight, ty++) {
if(i>=0) {
/* we are in the map, so copy away! */
mapDrawTile(mv->map->tiles, mv->map->data[i], mv->page, x, y);
/* the position within the map array */
i=ty * mv->map->width + tx;
- for(x=0; x<SCREEN_WIDTH+mv->dxThresh && tx < mv->map->width; x+=mv->map->tiles->tileWidth, tx++) {
+ for(x=0; x<mv->page->sw+mv->dxThresh && tx < mv->map->width; x+=mv->map->tiles->tileWidth, tx++) {
if(i>=0) {
/* we are in the map, so copy! */
mapDrawTile(mv->map->tiles, mv->map->data[i], mv->page, x, y);
/* We'll copy all of the columns in the screen,
i + 1 row above and one below */
- for(y=0; y<SCREEN_HEIGHT+mv->dyThresh && ty < mv->map->height; y+=mv->map->tiles->tileHeight, ty++) {
+ for(y=0; y<mv->page->sh+mv->dyThresh && ty < mv->map->height; y+=mv->map->tiles->tileHeight, ty++) {
if(i>=0) {
/* we are in the map, so copy away! */
mapDrawTile(mv->map->tiles, mv->map->data[i], mv->page, x, y);
//setkb(0);
}*/
+unsigned char shinku_fps_indicator_page = 0;
+
/* sync */
-void shinku(map_view_t *pip, global_game_variables_t *gv)
+void shinku(global_game_variables_t *gv)
{
- //float t;
//modexCopyPageRegion(pip[1].page, pip[2].page, 16, 16, 16, 16, (14*8)+4, 8+4);
if(elapsed_timer(gv) >= (1.0 / gv->kurokku.frames_per_second))
{
- word x = (16);
- word y = (8+16);
- word col = 15;
+ word x = (16) + gv->video.page[shinku_fps_indicator_page].dx; // follow the screen
+ word y = (16) + gv->video.page[shinku_fps_indicator_page].dy; // follow the screen
+ word col = 7;
word bgcol = 0;
- word type = 1;
+ word type = 0;
+
//t=(((*(gv->clock))-gv->clock_start) /18.2);
sprintf(gv->pee, "%f fps", (double)gv->kurokku.tiku/ticktock(gv));
- modexprint(pip[1].page, 16, 16, 1, 15, 0, gv->pee);
+// printf("%s\n", gv->pee);
+ //FIXME PLEASE!!
+ modexprint(&(gv->video.page[shinku_fps_indicator_page]), x, y, type, col, bgcol, gv->pee);
+//++++ modexprint(&(gv->video.page[0]), x, y, type, col, bgcol, gv->pee);
//(gv->clock_start)=*(gv->clock);
gv->kurokku.tiku=0;
}
case 1:
//turn this off if XT
modexWaitBorder();
+ //vga_wait_for_vsync();
gv->kurokku.frames_per_second=60;
break;
}
}
-void near animatePlayer(map_view_t *pip, player_t *player, word playnum, sword scrollswitch)
+void near animatePlayer(map_view_t *pip, player_t *player, word pn, sword scrollswitch)
{
- sword x = player[playnum].x;
- sword y = player[playnum].y;
+ 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[playnum].persist_aniframe;
+ word ls = player[pn].persist_aniframe;
if(scrollswitch==0) qq = 0;
- else qq = ((player[playnum].q)*(player[playnum].speed));
+ else qq = ((player[pn].q)*(player[pn].speed));
x-=4;
y-=TILEWH;
- switch (player[playnum].d)
+ switch (player[pn].d)
{
case 0:
//up
- dire*=player[playnum].d;
+ dire*=player[pn].d;
y-=qq;
break;
case 3:
// right
- dire*=(player[playnum].d-2);
+ dire*=(player[pn].d-2);
x+=qq;
break;
case 2:
break;
case 4:
//down
- dire*=(player[playnum].d-2);
+ dire*=(player[pn].d-2);
y+=qq;
break;
case 1:
//left
- dire*=(player[playnum].d+2);
+ dire*=(player[pn].d+2);
x-=qq;
break;
}
#ifdef SPRITE
-#ifdef BMPTYPE
-#define FRAME1 oldDrawBmp(VGA, x, y, &player[playnum].data, 1);
-#define FRAME2 oldDrawBmp(VGA, x, y, &player[playnum].data, 1);
-#define FRAME3 oldDrawBmp(VGA, x, y, &player[playnum].data, 1);
-#define FRAME4 oldDrawBmp(VGA, x, y, &player[playnum].data, 1);
-#else
-#define FRAME1 modexDrawSpriteRegion(pip[1].page, x, y, 48, dire, 24, 32, &player[playnum].data);
-#define FRAME2 modexDrawSpriteRegion(pip[1].page, x, y, 24, dire, 24, 32, &player[playnum].data);
-#define FRAME3 modexDrawSpriteRegion(pip[1].page, x, y, 0, dire, 24, 32, &player[playnum].data);
-#define FRAME4 modexDrawSpriteRegion(pip[1].page, x, y, 24, dire, 24, 32, &player[playnum].data);
-#endif
+// #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[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);
#else
#define FRAME1 modexClearRegion(pip[1].page, x, y, 24, 32, 2+dire);
#define FRAME2 modexClearRegion(pip[1].page, x, y, 24, 32, 1+dire);