From 713d33d0c193f880d665dc6f4e62eac9549b747e Mon Sep 17 00:00:00 2001 From: John Tsiombikas Date: Mon, 9 Mar 2020 01:54:00 +0200 Subject: [PATCH] fps counter with rle sprites --- Makefile | 11 ++++------- src/dos/gfx.c | 3 +++ src/game.c | 33 +++++++++++++++++++++++++++++++++ src/game.h | 2 ++ src/introscr.c | 2 -- src/sdl/main.c | 2 ++ 6 files changed, 44 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index fa039e8..9ff0e58 100644 --- a/Makefile +++ b/Makefile @@ -5,8 +5,7 @@ dosobj = src/dos/main.obj src/dos/gfx.obj src/dos/timer.obj src/dos/watdpmi.obj scrobj = src/introscr.obj src/menuscr.obj gameobj = src/game.obj src/util.obj src/gfxutil.obj src/dynarr.obj src/rbtree.obj gfxobj = src/3dgfx/3dgfx.obj src/3dgfx/mesh.obj src/3dgfx/meshload.obj & - src/3dgfx/polyfill.obj src/3dgfx/polyclip.obj -csprobj = cspr/dbgfont.obj + src/3dgfx/polyfill.obj src/3dgfx/polyclip.obj src/sprite.obj incpath = -Isrc -Isrc/dos -Ilibs/imago/src libpath = libpath libs/imago !else @@ -17,13 +16,12 @@ scrobj = src\introscr.obj src\menuscr.obj gameobj = src\game.obj src\util.obj src\gfxutil.obj src\dynarr.obj & src\rbtree.obj gfxobj = src\3dgfx\3dgfx.obj src\3dgfx\mesh.obj src\3dgfx\meshload.obj & - src\3dgfx\polyfill.obj src\3dgfx\polyclip.obj -csprobj = cspr/dbgfont.obj + src\3dgfx\polyfill.obj src\3dgfx\polyclip.obj src\sprite.obj incpath = -Isrc -Isrc\dos -Ilibs\imago\src libpath = libpath libs\imago !endif -obj = $(dosobj) $(gameobj) $(gfxobj) $(scrobj) $(csprobj) +obj = $(dosobj) $(gameobj) $(gfxobj) $(scrobj) bin = game.exe def = -dM_PI=3.141592653589793 @@ -40,7 +38,7 @@ $(bin): cflags.occ $(obj) libs/imago/imago.lib $(LD) debug all name $@ system dos4g file { @objects } @ldflags .c: src;src/dos;src/3dgfx -.asm: src;src/dos;src/3dgfx;cspr +.asm: src;src/dos;src/3dgfx cflags.occ: Makefile %write $@ $(CFLAGS) @@ -60,7 +58,6 @@ clean: .symbolic clean: .symbolic del src\*.obj del src\dos\*.obj - del cspr\*.obj del *.lnk del cflags.occ del $(bin) diff --git a/src/dos/gfx.c b/src/dos/gfx.c index cde439e..671cd8a 100644 --- a/src/dos/gfx.c +++ b/src/dos/gfx.c @@ -236,6 +236,7 @@ void *page_flip(int vsync) static void blit_frame_lfb(void *pixels, int vsync) { + dbg_fps(pixels); if(vsync) wait_vsync(); memcpy(vpgaddr[frontidx], pixels, pgsize); } @@ -246,6 +247,8 @@ static void blit_frame_banked(void *pixels, int vsync) unsigned int pending; unsigned char *pptr = pixels; + dbg_fps(pixels); + if(vsync) wait_vsync(); /* assume initial window offset at 0 */ diff --git a/src/game.c b/src/game.c index 4c220b5..86170cb 100644 --- a/src/game.c +++ b/src/game.c @@ -1,3 +1,5 @@ +#include +#include #include "game.h" #include "screens.h" #include "sprite.h" @@ -50,3 +52,34 @@ void dbg_print(void *fb, int x, int y, const char *str) } } +void dbg_printf(void *fb, int x, int y, const char *fmt, ...) +{ + static char buf[2048]; + va_list ap; + + va_start(ap, fmt); + vsprintf(buf, fmt, ap); + va_end(ap); + + dbg_print(fb, x, y, buf); +} + +void dbg_fps(void *fb) +{ + static char fpsbuf[8]; + static long frame, prev_upd; + long msec = time_msec; + long delta; + + frame++; + + delta = msec - prev_upd; + if(delta >= 1024) { + frame *= 1000; + sprintf(fpsbuf, "%2ld.%1ld", frame >> 10, 10 * (frame & 0x3ff) >> 10); + frame = 0; + prev_upd = msec; + } + + dbg_print(fb, 2, 2, fpsbuf); +} diff --git a/src/game.h b/src/game.h index d01ad00..a986389 100644 --- a/src/game.h +++ b/src/game.h @@ -42,5 +42,7 @@ extern void (*key_event)(int key, int pressed); void game_quit(void); void dbg_print(void *fb, int x, int y, const char *str); +void dbg_printf(void *fb, int x, int y, const char *fmt, ...); +void dbg_fps(void *fb); #endif /* GAME_H_ */ diff --git a/src/introscr.c b/src/introscr.c index c4d2040..4d0db19 100644 --- a/src/introscr.c +++ b/src/introscr.c @@ -66,8 +66,6 @@ void intro_draw(void) } } - dbg_print(fb_pixels, 10, 10, "foo"); - blit_frame(fb_pixels, 1); } diff --git a/src/sdl/main.c b/src/sdl/main.c index 86e5198..cfd9761 100644 --- a/src/sdl/main.c +++ b/src/sdl/main.c @@ -103,6 +103,8 @@ void blit_frame(void *pixels, int vsync) wait_vsync(); } + dbg_fps(pixels); + if(SDL_MUSTLOCK(fbsurf)) { SDL_LockSurface(fbsurf); } -- 1.7.10.4