X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=plugins%2Fgpulib%2Fgpu.c;h=f034812a41ef03db5c8cfd25e3c5672676aa7e44;hb=48e85d1b2f4dafad7c9e1e38994858ec0dfc7b5e;hp=d72909164a1f2f896c1dc838b4a6f42640960f67;hpb=495d603c20ec58689bd7f73348d16e17f5491f5b;p=pcsx_rearmed.git diff --git a/plugins/gpulib/gpu.c b/plugins/gpulib/gpu.c index d7290916..f034812a 100644 --- a/plugins/gpulib/gpu.c +++ b/plugins/gpulib/gpu.c @@ -54,6 +54,7 @@ static noinline void do_cmd_reset(void) static noinline void do_reset(void) { unsigned int i; + do_cmd_reset(); memset(gpu.regs, 0, sizeof(gpu.regs)); @@ -136,14 +137,13 @@ static noinline void get_gpu_info(uint32_t data) gpu.gp0 = gpu.ex_regs[data & 7] & 0xfffff; break; case 0x05: - case 0x06: gpu.gp0 = gpu.ex_regs[5] & 0x3fffff; break; case 0x07: gpu.gp0 = 2; break; default: - gpu.gp0 = 0; + // gpu.gp0 unchanged break; } } @@ -606,7 +606,7 @@ void GPUwriteData(uint32_t data) flush_cmd_buffer(); } -long GPUdmaChain(uint32_t *rambase, uint32_t start_addr) +long GPUdmaChain(uint32_t *rambase, uint32_t start_addr, uint32_t *progress_addr) { uint32_t addr, *list, ld_addr = 0; int len, left, count; @@ -638,6 +638,10 @@ long GPUdmaChain(uint32_t *rambase, uint32_t start_addr) log_anomaly("GPUdmaChain: discarded %d/%d words\n", left, len); } + if (progress_addr) { + *progress_addr = addr; + break; + } #define LD_THRESHOLD (8*1024) if (count >= LD_THRESHOLD) { if (count == LD_THRESHOLD) {