diff --git a/GPU/GLES/DisplayListInterpreter.cpp b/GPU/GLES/DisplayListInterpreter.cpp index b8f98b45ed..ac6d280aec 100644 --- a/GPU/GLES/DisplayListInterpreter.cpp +++ b/GPU/GLES/DisplayListInterpreter.cpp @@ -1010,8 +1010,11 @@ void GLES_GPU::DoBlockTransfer() { // the backbuffer. Detect this and have the framebuffermanager draw the pixels. u32 backBuffer = framebufferManager_.PrevDisplayFramebufAddr(); + u32 displayBuffer = framebufferManager_.DisplayFramebufAddr(); - if (backBuffer != 0 && dstBasePtr == backBuffer && width == 512 && height == 272) { + if ((backBuffer != 0 && dstBasePtr == backBuffer) || + (displayBuffer != 0 && dstBasePtr == displayBuffer) && + dstStride == 512 && height == 272) { framebufferManager_.DrawPixels(Memory::GetPointer(dstBasePtr), 3, 512); } } diff --git a/GPU/GLES/Framebuffer.h b/GPU/GLES/Framebuffer.h index d14f63bf03..f67929f56f 100644 --- a/GPU/GLES/Framebuffer.h +++ b/GPU/GLES/Framebuffer.h @@ -111,6 +111,9 @@ public: u32 PrevDisplayFramebufAddr() { return prevDisplayFramebuf_ ? (0x04000000 | prevDisplayFramebuf_->fb_address) : 0; } + u32 DisplayFramebufAddr() { + return displayFramebuf_ ? (0x04000000 | displayFramebuf_->fb_address) : 0; + } private: u32 ramDisplayFramebufPtr_; // workaround for MotoGP insanity