aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/charset.cpp24
-rw-r--r--scumm/charset.h1
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v7he.cpp30
4 files changed, 28 insertions, 28 deletions
diff --git a/scumm/charset.cpp b/scumm/charset.cpp
index fff1f3b728..a3e5755ea4 100644
--- a/scumm/charset.cpp
+++ b/scumm/charset.cpp
@@ -50,30 +50,6 @@ CharsetRenderer::CharsetRenderer(ScummEngine *vm) {
_curId = 0;
}
-int CharsetRenderer::getLetter(int letter) {
- int offset, result;
-
- byte *ptr = _vm->getResourceAddress(rtCharset, _curId);
- if (!ptr)
- error("CharsetRenderer::getLetter: charset %d not found!", _curId);
-
- offset = READ_LE_UINT32(ptr + 29 + letter);
- if (offset == 0)
- return 0;
-
- ptr += offset;
-
- result = READ_LE_UINT16(ptr + 2);
- byte start = *ptr;
-
- if (result >= 0x80) {
- result = result - 256 + start;
- } else {
- result += start;
- };
- return (result);
-}
-
void CharsetRendererCommon::setCurID(byte id) {
checkRange(_vm->_numCharsets - 1, 0, id, "Printing with bad charset %d");
diff --git a/scumm/charset.h b/scumm/charset.h
index 2613c934a6..66c506e73c 100644
--- a/scumm/charset.h
+++ b/scumm/charset.h
@@ -71,7 +71,6 @@ public:
virtual void printChar(int chr) = 0;
virtual void drawChar(int chr, const Graphics::Surface &s, int x, int y) {}
- int getLetter(int letter);
int getStringWidth(int a, const byte *str);
void addLinebreaks(int a, byte *str, int pos, int maxwidth);
diff --git a/scumm/intern.h b/scumm/intern.h
index 8d58fa9dc6..c820782e36 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -615,6 +615,7 @@ protected:
virtual const char *getOpcodeDesc(byte i);
byte stringLen(byte *);
+ int getCharsetOffset(int letter);
/* Version 7 script opcodes */
void o7_cursorCommand();
diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp
index 0150ab88ab..606f3e71f2 100644
--- a/scumm/script_v7he.cpp
+++ b/scumm/script_v7he.cpp
@@ -407,6 +407,31 @@ byte ScummEngine_v7he::stringLen(byte *ptr) {
return len;
}
+int ScummEngine_v7he::getCharsetOffset(int letter) {
+ int offset, result;
+ int id = _charset->getCurID();
+
+ byte *ptr = getResourceAddress(rtCharset, id);
+ if (!ptr)
+ error("getCharsetOffset: charset %d not found!", id);
+
+ offset = READ_LE_UINT32(ptr + 29 + letter);
+ if (offset == 0)
+ return 0;
+
+ ptr += offset;
+
+ result = READ_LE_UINT16(ptr + 2);
+ byte start = *ptr;
+
+ if (result >= 0x80) {
+ result = result - 256 + start;
+ } else {
+ result += start;
+ };
+ return (result);
+}
+
void ScummEngine_v7he::o7_cursorCommand() {
int a, i;
int args[16];
@@ -726,8 +751,7 @@ void ScummEngine_v7he::o7_unknownED() {
writeVar(0, array);
while (len >= pos) {
letter = readArray(0, 0, pos);
- if (letter)
- result += _charset->getLetter(letter);
+ result += getCharsetOffset(letter);
pos++;
}
@@ -903,7 +927,7 @@ void ScummEngine_v7he::o7_unknownF5() {
while (len <= pos) {
letter = readArray(0, 0, pos);
- result += _charset->getLetter(letter);
+ result += getCharsetOffset(letter);
if (result >= ebx)
break;
pos++;