aboutsummaryrefslogtreecommitdiff
path: root/plugins/gpu_unai
diff options
context:
space:
mode:
authornotaz2011-01-27 00:18:03 +0200
committernotaz2011-01-27 00:18:03 +0200
commit799a9f26a31d64830fcb887fceea2f987136dd00 (patch)
treebaef812ef62540db6420e2af329cf26a27bd896a /plugins/gpu_unai
parent0ce47d46e07dfb02f3eeef481b963927beeee481 (diff)
downloadpcsx_rearmed-799a9f26a31d64830fcb887fceea2f987136dd00.tar.gz
pcsx_rearmed-799a9f26a31d64830fcb887fceea2f987136dd00.tar.bz2
pcsx_rearmed-799a9f26a31d64830fcb887fceea2f987136dd00.zip
gpu_unai: fix P.E.Op.S. save compatibility for good
Diffstat (limited to 'plugins/gpu_unai')
-rw-r--r--plugins/gpu_unai/gpu.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/plugins/gpu_unai/gpu.cpp b/plugins/gpu_unai/gpu.cpp
index abe7638..f6dd167 100644
--- a/plugins/gpu_unai/gpu.cpp
+++ b/plugins/gpu_unai/gpu.cpp
@@ -184,9 +184,13 @@ long GPU_freeze(unsigned int bWrite, GPUFreeze_t* p2)
{
p2->GPU_gp1 = GPU_GP1;
memset(p2->Control, 0, sizeof(p2->Control));
- p2->Control[5] = DisplayArea[0] | (DisplayArea[1] << 10);
- p2->Control[7] = DisplayArea[4] | (DisplayArea[5] << 10);
- p2->Control[8] = ((GPU_GP1 >> 17) & 0x3f) | ((GPU_GP1 >> 10) & 0x40);
+ // save resolution and registers for P.E.Op.S. compatibility
+ p2->Control[3] = (3 << 24) | ((GPU_GP1 >> 23) & 1);
+ p2->Control[4] = (4 << 24) | ((GPU_GP1 >> 29) & 3);
+ p2->Control[5] = (5 << 24) | (DisplayArea[0] | (DisplayArea[1] << 10));
+ p2->Control[6] = (6 << 24) | (2560 << 12);
+ p2->Control[7] = (7 << 24) | (DisplayArea[4] | (DisplayArea[5] << 10));
+ p2->Control[8] = (8 << 24) | ((GPU_GP1 >> 17) & 0x3f) | ((GPU_GP1 >> 10) & 0x40);
memcpy(p2->FrameBuffer, (u16*)GPU_FrameBuffer, FRAME_BUFFER_SIZE);
return (1);
}