From 7e54e159df6698ceb60864946357b8eb00c21ac4 Mon Sep 17 00:00:00 2001 From: kichikuou Date: Tue, 2 Apr 2024 13:24:16 +0900 Subject: [PATCH] system.GetTime(): Use SDL_GetTicks() instead of clock_gettime() Some games (e.g. Toushin Toshi 3) malfunction when system.GetTime() returns a negative number. On many systems clock_gettime(CLOCK_MONOTONIC) returns the time since OS startup, but this wraps to a negative number after about 24.8 days. As a mitigation, use SDL_GetTicks() instead, which returns the elapsed time since game startup. --- src/vm.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/vm.c b/src/vm.c index 6b177ee..25fa910 100644 --- a/src/vm.c +++ b/src/vm.c @@ -2383,9 +2383,7 @@ _Noreturn void _vm_error(const char *fmt, ...) int vm_time(void) { - struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); - return (ts.tv_sec * 1000) + (ts.tv_nsec / 1000000); + return SDL_GetTicks(); } void vm_sleep(int ms)