fn os_date_t os_local_time_now(void) { os_date_t result = {0}; SYSTEMTIME lt; GetLocalTime(<); result.ms = lt.wMilliseconds; result.sec = lt.wSecond; result.min = lt.wMinute; result.hour = lt.wHour; result.day = lt.wDay; result.month = lt.wMonth; result.year = lt.wYear; return result; } fn f64 os_seconds_now(void) { static int64_t counts_per_second; if (counts_per_second == 0) { LARGE_INTEGER freq; QueryPerformanceFrequency(&freq); counts_per_second = freq.QuadPart; } LARGE_INTEGER time; QueryPerformanceCounter(&time); f64 result = (f64)time.QuadPart / (f64)counts_per_second; return result; } fn f64 os_get_milliseconds(void) { f64 secs = os_seconds_now(); f64 result = secs * 1000; return result; }