aboutsummaryrefslogtreecommitdiff
path: root/engines/sword2/sprite.cpp
diff options
context:
space:
mode:
authorFabio Battaglia2012-01-09 00:17:29 +0100
committerFabio Battaglia2012-01-09 00:17:29 +0100
commit57d586d5982220792e961d95b904427c2972d872 (patch)
treebee5f29253ccc5262360404e713f2baed5cd6193 /engines/sword2/sprite.cpp
parentcc3fc3f3da71a39797cb2d25ff531f174c126358 (diff)
downloadscummvm-rg350-57d586d5982220792e961d95b904427c2972d872.tar.gz
scummvm-rg350-57d586d5982220792e961d95b904427c2972d872.tar.bz2
scummvm-rg350-57d586d5982220792e961d95b904427c2972d872.zip
SWORD2: Force fake transparency for PSX sprites
In PSX version blending is done through hardware transparency, this would have to be simulated using 16-bit mode. As this is not yet available in this engine, fake transparency is used as a placeholder
Diffstat (limited to 'engines/sword2/sprite.cpp')
-rw-r--r--engines/sword2/sprite.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/engines/sword2/sprite.cpp b/engines/sword2/sprite.cpp
index 73a4eca8bd..cb0923cc2f 100644
--- a/engines/sword2/sprite.cpp
+++ b/engines/sword2/sprite.cpp
@@ -772,14 +772,18 @@ int32 Screen::drawSprite(SpriteInfo *s) {
src = sprite + rs.top * srcPitch + rs.left;
dst = _buffer + _screenWide * rd.top + rd.left;
- if (s->type & RDSPR_BLEND && !Sword2Engine::isPsx()) { // Blending is unavailable in PSX version
+ if (s->type & RDSPR_BLEND) {
// The original code had two different blending cases. One for
// s->blend & 0x01 and one for s->blend & 0x02. However, the
// only values that actually appear in the cluster files are
// 0, 513 and 1025 so the s->blend & 0x02 case was never used.
// Which is just as well since that code made no sense to me.
- if (!(_renderCaps & RDBLTFX_SPRITEBLEND)) {
+ // TODO: In PSX version, blending is done through hardware transparency.
+ // The only correct way to simulate this would be using 16-bit mode.
+ // As this is not yet available for this engine, fake transparency is used
+ // as placeholder.
+ if (!(_renderCaps & RDBLTFX_SPRITEBLEND) || Sword2Engine::isPsx()) {
for (i = 0; i < rs.height(); i++) {
for (j = 0; j < rs.width(); j++) {
if (src[j] && ((i & 1) == (j & 1)))