switched from uclock() to PCTIMER in love.timer

This commit is contained in:
Ilu
2023-07-01 18:55:17 +02:00
parent e320ce7a1e
commit 2644cf58f5
5 changed files with 17 additions and 7 deletions

1
.gitignore vendored
View File

@@ -5,3 +5,4 @@ LOVE/
rel/
test/
test2/
pi/

View File

@@ -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 */

6
src/main.h Normal file
View File

@@ -0,0 +1,6 @@
#ifndef MAIN_H
#define MAIN_H
#define TICKS_PER_SEC 1000
#endif // MAIN_H

View File

@@ -6,10 +6,11 @@
*/
#include <dos.h>
#include <time.h>
#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;
}

View File

@@ -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