]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/scroll16.c
repo sync ^^
[16.git] / src / lib / scroll16.c
index 41634957455fae46f0847231cece1246f845cb44..42a787ae977a11d4b466588748ce1d87a45d84d8 100755 (executable)
@@ -489,6 +489,8 @@ mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y)
                                //cannot print number value du to it being slow as bakapee
 #else
                                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;
@@ -584,26 +586,34 @@ 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;
+       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();
+       o =     *(gv->video.page[2].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);
+       /* 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));
-               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);
+       }else //copy dat sheet
        gv->kurokku.tiku++;
        switch(gv->kurokku.fpscap)
        {
@@ -614,6 +624,7 @@ 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;
        }
@@ -662,6 +673,10 @@ void near animatePlayer(map_view_t *pip, player_t *player, word pn, sword scroll
        }
 
 #ifdef SPRITE
+// #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);