diff options
author | notaz | 2012-01-01 02:10:52 +0200 |
---|---|---|
committer | notaz | 2012-01-01 02:10:52 +0200 |
commit | 0486fdc9bd313ce2f01dafa4d3c151f40e2c729b (patch) | |
tree | 6613be25e0846f1b7b9bbfa9e2afccc94c14147b /libpcsxcore/new_dynarec | |
parent | c7945666b47fa5636762bfa52cd6328125d607c4 (diff) | |
download | pcsx_rearmed-0486fdc9bd313ce2f01dafa4d3c151f40e2c729b.tar.gz pcsx_rearmed-0486fdc9bd313ce2f01dafa4d3c151f40e2c729b.tar.bz2 pcsx_rearmed-0486fdc9bd313ce2f01dafa4d3c151f40e2c729b.zip |
change lcf handling
not quite right but better than before, I hope
Diffstat (limited to 'libpcsxcore/new_dynarec')
-rw-r--r-- | libpcsxcore/new_dynarec/pcsxmem.c | 10 |
1 files changed, 9 insertions, 1 deletions
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) |