aboutsummaryrefslogtreecommitdiff
path: root/graphics/sjis.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2009-09-30 13:07:12 +0000
committerJohannes Schickel2009-09-30 13:07:12 +0000
commit1b94303b788bdad949a954e2ec603ab7003da509 (patch)
tree79c2f142da3dbfc6360e46f06d35eb54a909ce1c /graphics/sjis.cpp
parentfd21bb2611b4260a1243ab14c9a0797fb9ba3617 (diff)
downloadscummvm-rg350-1b94303b788bdad949a954e2ec603ab7003da509.tar.gz
scummvm-rg350-1b94303b788bdad949a954e2ec603ab7003da509.tar.bz2
scummvm-rg350-1b94303b788bdad949a954e2ec603ab7003da509.zip
Update SJIS code to read SJIS.FNT version 2 data (no support for drawing ASCII and half-width katakana glyphs yet).
svn-id: r44483
Diffstat (limited to 'graphics/sjis.cpp')
-rw-r--r--graphics/sjis.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/graphics/sjis.cpp b/graphics/sjis.cpp
index 9f5def8f10..e6ad08e14c 100644
--- a/graphics/sjis.cpp
+++ b/graphics/sjis.cpp
@@ -245,18 +245,20 @@ bool FontSjisSVM::loadData() {
}
uint32 version = data->readUint32BE();
- if (version != 1) {
+ if (version != 2) {
delete data;
return false;
}
- uint numChars = data->readUint16BE();
+ uint numChars16x16 = data->readUint16BE();
+ /*uint numChars8x16 = */data->readUint16BE();
- _fontData = new uint16[numChars * 16];
- assert(_fontData);
+ _fontData16x16 = new uint16[numChars16x16 * 16];
+ assert(_fontData16x16);
+ _fontData16x16Size = numChars16x16 * 16;
+
+ for (uint i = 0; i < _fontData16x16Size; ++i)
+ _fontData16x16[i] = data->readUint16BE();
- for (uint i = 0; i < numChars * 16; ++i)
- _fontData[i] = data->readUint16BE();
-
bool retValue = !data->err();
delete data;
return retValue;
@@ -285,7 +287,9 @@ const uint16 *FontSjisSVM::getCharData(uint16 c) const {
if (index < 0 || index >= 0xBC || base < 0)
return 0;
- return _fontData + (base * 0xBC + index) * 16;
+ const uint offset = (base * 0xBC + index) * 16;
+ assert(offset + 16 <= _fontData16x16Size);
+ return _fontData16x16 + offset;
}
} // end of namespace Graphics