aboutsummaryrefslogtreecommitdiff
path: root/engines/access
diff options
context:
space:
mode:
authorStrangerke2015-01-21 00:26:11 +0100
committerStrangerke2015-01-21 00:26:11 +0100
commitf60a4d3e71e2de6a5159f0044874755671933d55 (patch)
treea309779f3f75dfeb78cd67ef10b0a917d78e9710 /engines/access
parentc810ee9a5af2bdd8e27e5b558bb6838d3521541c (diff)
downloadscummvm-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.cpp23
-rw-r--r--engines/access/char.h2
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();
};