]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/scroll16.c
textInit() for font. add variable so shinku() knows what page we're on.
[16.git] / src / lib / scroll16.c
index ac883cba0bf6e367fd59abe53ae997f643435789..1780d960d4b6c338383c30f9f69dbdf063e88990 100755 (executable)
@@ -1,5 +1,5 @@
 /* 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.
  *
@@ -60,11 +60,8 @@ void walk(map_view_t *pip, player_t *player, word pn)
                        {
                                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
-#ifdef BMPTYPE
-                               modexDrawPBufRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 24, 32, &player[pn].data, 1);
+                               PBUFSFUN(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 24, 32, PLAYERBMPDATA);
 #else
-                               modexDrawSpriteRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 24, 32, &player[pn].data);
-#endif
                                modexClearRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 32, 14);
 #endif
                                modexShowPage(pip[1].page);
@@ -104,11 +101,7 @@ void walk(map_view_t *pip, player_t *player, word pn)
                        {
                                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
-#ifdef BMPTYPE
-                               modexDrawPBufRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 96, 24, 32, &player[pn].data, 1);
-#else
-                               modexDrawSpriteRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 96, 24, 32, &player[pn].data);
-#endif
+                               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
@@ -149,11 +142,7 @@ void walk(map_view_t *pip, player_t *player, word pn)
                        {
                                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
-#ifdef BMPTYPE
-                               modexDrawPBufRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 64, 24, 32, &player[pn].data, 1);
-#else
-                               modexDrawSpriteRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 64, 24, 32, &player[pn].data);
-#endif
+                               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
@@ -194,11 +183,7 @@ void walk(map_view_t *pip, player_t *player, word pn)
                        {
                                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
-#ifdef BMPTYPE
-                               modexDrawPBufRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 0, 24, 32, &player[pn].data, 1);
-#else
-                               modexDrawSpriteRegion(pip[1].page, player[pn].x-4, player[pn].y-TILEWH, 24, 0, 24, 32, &player[pn].data);
-#endif
+                               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
@@ -499,19 +484,18 @@ mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y)
                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
-#ifdef BMPTYPE
-                               //modexDrawPBufRegion(page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data), 0);
-#else
-                               modexDrawBmpRegion(page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data));
-#endif
+                               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++)
                                {
@@ -602,21 +586,26 @@ void mapDrawWCol(map_view_t *mv, int tx, int ty, word x)
        //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;
        }
@@ -631,65 +620,63 @@ void shinku(map_view_t *pip, global_game_variables_t *gv)
                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 modexDrawPBufRegion(pip[1].page, x, y, 48, dire, 24, 32, &player[playnum].data, 1);
-#define FRAME2 modexDrawPBufRegion(pip[1].page, x, y, 24, dire, 24, 32, &player[playnum].data, 1);
-#define FRAME3 modexDrawPBufRegion(pip[1].page, x, y, 0, dire, 24, 32, &player[playnum].data, 1);
-#define FRAME4 modexDrawPBufRegion(pip[1].page, x, y, 24, dire, 24, 32, &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);