X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=plugins%2Fgpu_unai%2Fgpu.cpp;h=5152327aaa30ad5954a3df1adb7a225f0d038098;hp=abe76389216982cf9926c8956137e7c41d3a1e34;hb=6d866bb7894b252fc430a24a97769511d5ead1ca;hpb=83a79d01995051a2778784887d086689ff815667 diff --git a/plugins/gpu_unai/gpu.cpp b/plugins/gpu_unai/gpu.cpp index abe76389..5152327a 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); } @@ -860,11 +864,10 @@ void GPU_updateLace(void) #else #include "../../frontend/plugin_lib.h" +#include "../../frontend/arm_utils.h" extern "C" { -extern void bgr555_to_rgb565(void *dst, void *src, int bytes); -extern void bgr888_to_rgb888(void *dst, void *src, int bytes); static const struct rearmed_cbs *cbs; static void *screen_buf; @@ -900,10 +903,17 @@ static void blit(void) if (isRGB24) { +#ifndef MAEMO for (; h1-- > 0; dest += w0 * 3, srcs += 1024) { bgr888_to_rgb888(dest, srcs, w0 * 3); } +#else + for (; h1-- > 0; dest += w0 * 2, srcs += 1024) + { + bgr888_to_rgb565(dest, srcs, w0 * 3); + } +#endif } else {