aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBluddy2011-05-02 14:45:53 +0300
committerBluddy2011-05-02 15:49:15 +0300
commit7c840b0c5e69fa2ffb636afc26affb0f25d14cbb (patch)
tree3d46f9313c79aad6084f7c29c9886bf90647b8bb
parent39d9566133f581369aee1437a0d178c41a3e0abc (diff)
downloadscummvm-rg350-7c840b0c5e69fa2ffb636afc26affb0f25d14cbb.tar.gz
scummvm-rg350-7c840b0c5e69fa2ffb636afc26affb0f25d14cbb.tar.bz2
scummvm-rg350-7c840b0c5e69fa2ffb636afc26affb0f25d14cbb.zip
PSP: fixed cursor disappearance bug in 16-bit games
The 5650 16-bit format doesn't include alpha bits and is treated as having alpha by the PSP hardware. Other formats such as 5551 don't have their alpha bit set in the cursor buffer. Instead of adding it, we just turn on the 'reverse alpha' feature for these bits. The problem was not making an exception for 5650.
-rw-r--r--backends/platform/psp/cursor.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/backends/platform/psp/cursor.cpp b/backends/platform/psp/cursor.cpp
index cf879e095a..420b0398c3 100644
--- a/backends/platform/psp/cursor.cpp
+++ b/backends/platform/psp/cursor.cpp
@@ -327,8 +327,20 @@ inline void Cursor::setRendererModePalettized(bool palettized) {
_renderer.setAlphaReverse(false);
_renderer.setColorTest(false);
} else { // 16 bits, no palette
+ // Color test is an easy way for the hardware to make our keycolor
+ // transparent.
+ _renderer.setColorTest(true);
+
+ // Alpha blending is not strictly required, but makes the cursor look
+ // much better
_renderer.setAlphaBlending(true);
- _renderer.setAlphaReverse(true); // We can't change all alpha values, so just reverse
- _renderer.setColorTest(true); // Color test to make our key color transparent
+
+ // Pixel formats without alpha (5650) are considered to have their alpha set.
+ // Since pixel formats with alpha don't have their alpha bits set, we reverse
+ // the alpha format for them so that 0 alpha is 1.
+ if (_buffer.getPixelFormat() != PSPPixelFormat::Type_5650)
+ _renderer.setAlphaReverse(true);
+ else
+ _renderer.setAlphaReverse(false);
}
}