aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorathrxx2011-07-14 00:50:14 +0200
committerathrxx2011-07-14 00:53:03 +0200
commited3fe4372a270d22da167a21f61fcca7f974478b (patch)
tree95deeb422fe67026809d3baa770855e1ae34af80 /engines/scumm
parentf814dc971ca9f6526b4f6049642b79d6371dcfb8 (diff)
downloadscummvm-rg350-ed3fe4372a270d22da167a21f61fcca7f974478b.tar.gz
scummvm-rg350-ed3fe4372a270d22da167a21f61fcca7f974478b.tar.bz2
scummvm-rg350-ed3fe4372a270d22da167a21f61fcca7f974478b.zip
SCUMM: fix regression caused by recent sjis code changes
Diffstat (limited to 'engines/scumm')
-rw-r--r--engines/scumm/charset.cpp16
-rw-r--r--engines/scumm/charset.h4
2 files changed, 12 insertions, 8 deletions
diff --git a/engines/scumm/charset.cpp b/engines/scumm/charset.cpp
index b38bd3b674..8558da397e 100644
--- a/engines/scumm/charset.cpp
+++ b/engines/scumm/charset.cpp
@@ -721,7 +721,8 @@ void CharsetRendererClassic::printChar(int chr, bool ignoreCharsetMask) {
_vm->_charsetColorMap[1] = _color;
- prepareDraw(chr);
+ if (!prepareDraw(chr))
+ return;
if (_firstChar) {
_str.left = 0;
@@ -875,11 +876,11 @@ void CharsetRendererClassic::printCharIntern(bool is2byte, const byte *charPtr,
}
}
-void CharsetRendererClassic::prepareDraw(uint16 chr) {
+bool CharsetRendererClassic::prepareDraw(uint16 chr) {
uint32 charOffs = READ_LE_UINT32(_fontPtr + chr * 4 + 4);
assert(charOffs < 0x14000);
if (!charOffs)
- return;
+ return false;
_charPtr = _fontPtr + charOffs;
_width = _origWidth = _charPtr[0];
@@ -894,10 +895,12 @@ void CharsetRendererClassic::prepareDraw(uint16 chr) {
_offsY = (signed char)_charPtr[3];
_charPtr += 4; // Skip over char header
+ return true;
}
void CharsetRendererClassic::drawChar(int chr, Graphics::Surface &s, int x, int y) {
- prepareDraw(chr);
+ if (!prepareDraw(chr))
+ return;
byte *dst = (byte *)s.pixels + y * s.pitch + x;
drawBitsN(s, dst, _charPtr, *_fontPtr, y, _width, _height);
}
@@ -1437,7 +1440,7 @@ void CharsetRendererTownsClassic::drawBitsN(const Graphics::Surface&, byte *dst,
}
}
-void CharsetRendererTownsClassic::prepareDraw(uint16 chr) {
+bool CharsetRendererTownsClassic::prepareDraw(uint16 chr) {
processCharsetColors();
bool noSjis = false;
@@ -1475,8 +1478,9 @@ void CharsetRendererTownsClassic::prepareDraw(uint16 chr) {
}
} else {
_sjisCurChar = 0;
- CharsetRendererClassic::prepareDraw(chr);
+ return CharsetRendererClassic::prepareDraw(chr);
}
+ return true;
}
void CharsetRendererTownsClassic::setupShadowMode() {
diff --git a/engines/scumm/charset.h b/engines/scumm/charset.h
index b80db73a58..b23ec996f5 100644
--- a/engines/scumm/charset.h
+++ b/engines/scumm/charset.h
@@ -113,7 +113,7 @@ class CharsetRendererClassic : public CharsetRendererCommon {
protected:
virtual void drawBitsN(const Graphics::Surface &s, byte *dst, const byte *src, byte bpp, int drawTop, int width, int height);
void printCharIntern(bool is2byte, const byte *charPtr, int origWidth, int origHeight, int width, int height, VirtScreen *vs, bool ignoreCharsetMask);
- virtual void prepareDraw(uint16 chr);
+ virtual bool prepareDraw(uint16 chr);
int _width, _height, _origWidth, _origHeight;
int _offsX, _offsY;
@@ -139,7 +139,7 @@ public:
private:
void drawBitsN(const Graphics::Surface &s, byte *dst, const byte *src, byte bpp, int drawTop, int width, int height);
- void prepareDraw(uint16 chr);
+ bool prepareDraw(uint16 chr);
void setupShadowMode();
bool useFontRomCharacter(uint16 chr);
void processCharsetColors();