diff options
author | Strangerke | 2015-01-21 00:26:11 +0100 |
---|---|---|
committer | Strangerke | 2015-01-21 00:26:11 +0100 |
commit | f60a4d3e71e2de6a5159f0044874755671933d55 (patch) | |
tree | a309779f3f75dfeb78cd67ef10b0a917d78e9710 /engines/access | |
parent | c810ee9a5af2bdd8e27e5b558bb6838d3521541c (diff) | |
download | scummvm-rg350-f60a4d3e71e2de6a5159f0044874755671933d55.tar.gz scummvm-rg350-f60a4d3e71e2de6a5159f0044874755671933d55.tar.bz2 scummvm-rg350-f60a4d3e71e2de6a5159f0044874755671933d55.zip |
ACCESS: MM - Fix the "android" watch dialog and animation
Diffstat (limited to 'engines/access')
-rw-r--r-- | engines/access/char.cpp | 23 | ||||
-rw-r--r-- | engines/access/char.h | 2 |
2 files changed, 18 insertions, 7 deletions
diff --git a/engines/access/char.cpp b/engines/access/char.cpp index c4fb0f2f6c..d2b1aa65cd 100644 --- a/engines/access/char.cpp +++ b/engines/access/char.cpp @@ -27,19 +27,30 @@ namespace Access { -CharEntry::CharEntry(const byte *data, int gameType) { +CharEntry::CharEntry(const byte *data, AccessEngine *vm) { Common::MemoryReadStream s(data, 999); _charFlag = s.readByte(); - if (gameType == GType_MartianMemorandum) + if (vm->getGameID() == GType_MartianMemorandum) _estabIndex = -1; else _estabIndex = s.readSint16LE(); _screenFile.load(s); + + if (vm->getGameID() == GType_MartianMemorandum) { + int idx = s.readSint16LE(); + if (idx != -1) + warning("TODO: more CharEntry"); + } + _paletteFile.load(s); _startColor = s.readUint16LE(); - _numColors = s.readUint16LE(); + if (vm->getGameID() == GType_MartianMemorandum) { + int lastColor = s.readUint16LE(); + _numColors = lastColor - _startColor; + } else + _numColors = s.readUint16LE(); // Load cells for (byte cell = s.readByte(); cell != 0xff; cell = s.readByte()) { @@ -77,16 +88,16 @@ CharManager::CharManager(AccessEngine *vm) : Manager(vm) { // Setup character list if (_vm->isDemo()) { for (int i = 0; i < 27; ++i) - _charTable.push_back(CharEntry(Amazon::CHARTBL_DEMO[i], vm->getGameID())); + _charTable.push_back(CharEntry(Amazon::CHARTBL_DEMO[i], vm)); } else { for (int i = 0; i < 37; ++i) - _charTable.push_back(CharEntry(Amazon::CHARTBL[i], vm->getGameID())); + _charTable.push_back(CharEntry(Amazon::CHARTBL[i], vm)); } break; case GType_MartianMemorandum: for (int i = 0; i < 27; ++i) - _charTable.push_back(CharEntry(Martian::CHARTBL_MM[i], vm->getGameID())); + _charTable.push_back(CharEntry(Martian::CHARTBL_MM[i], vm)); break; default: diff --git a/engines/access/char.h b/engines/access/char.h index 827d4d612a..e64e90078c 100644 --- a/engines/access/char.h +++ b/engines/access/char.h @@ -41,7 +41,7 @@ public: FileIdent _scriptFile; Common::Array<ExtraCell> _extraCells; public: - CharEntry(const byte *data, int gameType); + CharEntry(const byte *data, AccessEngine *vm); CharEntry(); }; |