aboutsummaryrefslogtreecommitdiff
path: root/engines/cryo
diff options
context:
space:
mode:
authorFilippos Karapetis2017-02-10 03:00:10 +0200
committerFilippos Karapetis2017-02-10 04:33:36 +0200
commit6ff7ef95d73c29051a675d03bdccd42f0a5a215b (patch)
treee82a571f024958f74240a9b05f61f45c51170e93 /engines/cryo
parent01e072fbbc1baaf8aaa48aba0842bf8977510b93 (diff)
downloadscummvm-rg350-6ff7ef95d73c29051a675d03bdccd42f0a5a215b.tar.gz
scummvm-rg350-6ff7ef95d73c29051a675d03bdccd42f0a5a215b.tar.bz2
scummvm-rg350-6ff7ef95d73c29051a675d03bdccd42f0a5a215b.zip
CRYO: Use cryo.dat for all game versions
All the static data will be eventually moved into this file
Diffstat (limited to 'engines/cryo')
-rw-r--r--engines/cryo/eden.cpp52
1 files changed, 28 insertions, 24 deletions
diff --git a/engines/cryo/eden.cpp b/engines/cryo/eden.cpp
index 4ff18bf307..214744f530 100644
--- a/engines/cryo/eden.cpp
+++ b/engines/cryo/eden.cpp
@@ -4729,29 +4729,30 @@ void EdenGame::convertMacToPC() {
}
void EdenGame::loadpermfiles() {
- switch (_vm->getPlatform()) {
- case Common::kPlatformDOS:
- {
- // Since PC version stores hotspots and rooms info in the executable, load them from premade resource file
- Common::File f;
+ Common::File f;
+ const int kNumIcons = 136;
+ const int kNumRooms = 424;
- if (f.open("cryo.dat")) {
- const int kNumIcons = 136;
- const int kNumRooms = 424;
- const int dataSize = f.size() - 8 - 1; // CRYODATA + version
- char headerId[9];
-
- f.read(headerId, 8);
- headerId[8] = '\0';
- if (strcmp(headerId, "CRYODATA"))
- error("Invalid aux data file");
+ if (f.open("cryo.dat")) {
+ const int dataSize = f.size() - 8 - 1; // CRYODATA + version
+ char headerId[9];
- if (f.readByte() != CRYO_DAT_VER)
- error("Incorrect aux data version");
+ f.read(headerId, 8);
+ headerId[8] = '\0';
+ if (strcmp(headerId, "CRYODATA"))
+ error("Invalid aux data file");
- if (dataSize != kNumIcons * sizeof(Icon) + kNumRooms * sizeof(Room))
- error("Mismatching data in aux data file");
+ if (f.readByte() != CRYO_DAT_VER)
+ error("Incorrect aux data version");
+ if (dataSize != kNumIcons * sizeof(Icon) + kNumRooms * sizeof(Room))
+ error("Mismatching data in aux data file");
+ } else
+ error("Can not load aux data");
+
+ switch (_vm->getPlatform()) {
+ case Common::kPlatformDOS:
+ // Since PC version stores hotspots and rooms info in the executable, load them from premade resource file
for (int i = 0; i < kNumIcons; i++) {
_gameIcons[i].sx = f.readSint16LE();
_gameIcons[i].sy = f.readSint16LE();
@@ -4774,22 +4775,25 @@ void EdenGame::loadpermfiles() {
_gameRooms[i]._location = f.readByte();
_gameRooms[i]._backgroundBankNum = f.readByte();
}
-
- f.close();
- } else
- error("Can not load aux data");
- }
break;
case Common::kPlatformMacintosh:
loadIconFile(2498, _gameIcons);
loadRoomFile(2497, _gameRooms);
loadRawFile(2486, _gameLipsync);
convertMacToPC();
+
+ // Skip the icons and rooms of the DOS version
+ f.skip(kNumIcons * sizeof(Icon) + kNumRooms * sizeof(Room));
break;
default:
error("Unsupported platform");
}
+ // Read the common static data
+ // TODO
+
+ f.close();
+
loadRawFile(0, _mainBankBuf);
loadRawFile(402, _gameFont);
loadRawFile(404, _gameDialogs);