From 7960ffe4660ccdfa8d53dea7153d6399ec474b82 Mon Sep 17 00:00:00 2001 From: Lucas Date: Wed, 26 Sep 2018 10:01:28 +0200 Subject: [PATCH] nv2a: Ptimer fixes (#113) Set NV2A_CRYSTAL_FREQ to Retail speed Fix ptimer_get_clock() behaviour --- hw/xbox/nv2a/nv2a_int.h | 2 +- hw/xbox/nv2a/nv2a_ptimer.c | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hw/xbox/nv2a/nv2a_int.h b/hw/xbox/nv2a/nv2a_int.h index 6d150f9311..f9f592317e 100644 --- a/hw/xbox/nv2a/nv2a_int.h +++ b/hw/xbox/nv2a/nv2a_int.h @@ -1292,7 +1292,7 @@ #define NV2A_VERTEX_ATTR_RESERVED2 14 #define NV2A_VERTEX_ATTR_RESERVED3 15 -#define NV2A_CRYSTAL_FREQ 13500000 +#define NV2A_CRYSTAL_FREQ 16666666 #define NV2A_NUM_CHANNELS 32 #define NV2A_NUM_SUBCHANNELS 8 #define NV2A_CACHE1_SIZE 128 diff --git a/hw/xbox/nv2a/nv2a_ptimer.c b/hw/xbox/nv2a/nv2a_ptimer.c index 564a49085f..7b3daa6c2f 100644 --- a/hw/xbox/nv2a/nv2a_ptimer.c +++ b/hw/xbox/nv2a/nv2a_ptimer.c @@ -19,12 +19,14 @@ * along with this program; if not, see . */ -/* PIMTER - time measurement and time-based alarms */ +/* PTIMER - time measurement and time-based alarms */ static uint64_t ptimer_get_clock(NV2AState *d) { - return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), - d->pramdac.core_clock_freq * d->ptimer.numerator, - NANOSECONDS_PER_SECOND * d->ptimer.denominator); + return muldiv64(muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), + d->pramdac.core_clock_freq, + NANOSECONDS_PER_SECOND), + d->ptimer.denominator, + d->ptimer.numerator); } uint64_t ptimer_read(void *opaque, hwaddr addr, unsigned int size)