diff --git a/.gitignore b/.gitignore index 54d61e7..24697bd 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ LOVE/ rel/ test/ test2/ +pi/ diff --git a/src/main.c b/src/main.c index 95b9b0d..0cb69cd 100644 --- a/src/main.c +++ b/src/main.c @@ -24,6 +24,7 @@ #include "package.h" #include "vgm.h" #include "lib/pctimer/gccint8.h" +#include "main.h" static lua_State *L; @@ -64,7 +65,7 @@ int main(int argc, char **argv) { palette_init(); keyboard_init(); mouse_init(); - pctimer_init(1000); + pctimer_init(TICKS_PER_SEC); init_vgm(); /* Init lua */ diff --git a/src/main.h b/src/main.h new file mode 100644 index 0000000..a3be8ed --- /dev/null +++ b/src/main.h @@ -0,0 +1,6 @@ +#ifndef MAIN_H +#define MAIN_H + +#define TICKS_PER_SEC 1000 + +#endif // MAIN_H diff --git a/src/modules/l_timer.c b/src/modules/l_timer.c index a2b0a20..059a98a 100644 --- a/src/modules/l_timer.c +++ b/src/modules/l_timer.c @@ -6,10 +6,11 @@ */ #include -#include #include "luaobj.h" #include "image.h" #include "vga.h" +#include "lib/pctimer/gccint8.h" +#include "main.h" long long timer_lastStep; double timer_lastDt; @@ -21,13 +22,13 @@ double timer_avgTimer; int l_timer_step(lua_State *L) { /* Do delta */ - long long now; + unsigned long now; /* Sometimes a call to uclock() will return a slightly earlier time than the * previous call, resulting in a negative delta time. The below loop keeps * trying for a proper value if this occurs. */ do { - now = uclock(); - timer_lastDt = (now - timer_lastStep) / (double)UCLOCKS_PER_SEC; + now = pctimer_get_ticks(); + timer_lastDt = (now - timer_lastStep) / (double)TICKS_PER_SEC; } while (timer_lastDt < 0); timer_lastStep = now; /* Do average */ @@ -64,7 +65,7 @@ int l_timer_getFPS(lua_State *L) { } int l_timer_getTime(lua_State *L) { - lua_pushnumber(L, uclock() / (double)UCLOCKS_PER_SEC); + lua_pushnumber(L, pctimer_get_ticks() / (double)TICKS_PER_SEC); return 1; } diff --git a/src/vgm.c b/src/vgm.c index adf4388..aae4341 100644 --- a/src/vgm.c +++ b/src/vgm.c @@ -34,9 +34,10 @@ VGM specs are at https://vgmrips.net/wiki/VGM_Specification #include "vgm.h" #include "lib/pctimer/gccint8.h" #include "filesystem.h" +#include "main.h" #define VGM_RESOLUTION 44100 -#define VGM_FACTOR 44 +#define VGM_FACTOR (VGM_RESOLUTION / TICKS_PER_SEC) #define VGM_OPL_ADDR 0x388 #define VGM_OPL_DATA 0x389