From 0486fdc9bd313ce2f01dafa4d3c151f40e2c729b Mon Sep 17 00:00:00 2001 From: notaz Date: Sun, 1 Jan 2012 02:10:52 +0200 Subject: change lcf handling not quite right but better than before, I hope --- libpcsxcore/new_dynarec/pcsxmem.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'libpcsxcore/new_dynarec/pcsxmem.c') diff --git a/libpcsxcore/new_dynarec/pcsxmem.c b/libpcsxcore/new_dynarec/pcsxmem.c index 2306ca7..0464021 100644 --- a/libpcsxcore/new_dynarec/pcsxmem.c +++ b/libpcsxcore/new_dynarec/pcsxmem.c @@ -212,9 +212,17 @@ static void io_spu_write32(u32 value) static u32 io_gpu_read_status(void) { + u32 v; + // meh2, syncing for img bit, might want to avoid it.. gpuSyncPluginSR(); - return HW_GPU_STATUS; + v = HW_GPU_STATUS; + + // XXX: because of large timeslices can't use hSyncCount, using rough + // approximization instead. Perhaps better use hcounter code here or something. + if (hSyncCount < 240 && (HW_GPU_STATUS & PSXGPU_ILACE_BITS) != PSXGPU_ILACE_BITS) + v |= PSXGPU_LCF & (psxRegs.cycle << 20); + return v; } static void io_gpu_write_status(u32 value) -- cgit v1.2.3