[Scummvm-git-logs] scummvm master -> 7739d0c5c11021e0c3b28509181f052d573bf4ff
bluegr
bluegr at gmail.com
Sat Feb 11 22:40:16 CET 2017
This automated email contains information about 23 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
c73270a3d3 CRYO: Add ID and versioning to cryo.dat
29616127b3 CRYO: Rename create_led_dat to create_cryo_dat
248e5d3c59 CRYO: Add handling for the cryo.dat aux data file
130dfccfc1 CRYO: Use cryo.dat for all game versions
aa56958b8e CRYO: Add explicit sizes to some static data arrays
8ed8b3225f CRYO: Move all static data for Lost Eden to cryo.dat (1/2)
77f1194586 CRYO: Move all static data for Lost Eden to cryo.dat (2/2)
6b2ac7c7af CRYO: Wrap enums around namespaces, to use EnumName::EnumValue
fed7341481 CRYO: Use hardcoded values for structs instead of sizeof()
37c53cdf49 CRYO: Move more static data to cryo.dat (1/2)
05c99c5b0d CRYO: Move more static data to cryo.dat (2/2)
24a4c231da CRYO: Rename variables to conform to our formatting guidelines
a3f59d8433 CRYO: Remove one more usage of sizeof()
fefad640cd CRYO: Change the version of cryo.dat to be a 32-bit integer (1/2)
deb0857f68 CRYO: Change the version of cryo.dat to be a 32-bit integer (2/2)
fffe7c7867 CRYO: Add missing int32 typedef to create_cryo
01e7b4edcf CRYO: Fix typos in some sizeof() values
c0d9752730 CRYO: Add cryo.dat to engine-data
5d119b6038 CRYO: Add cryo.dat to all messages related to it
724730dbcc CRYO: Fix typo in create_cryo
e95ed8eb90 CRYO: Clean up and document some variables
8eb38c0933 CRYO: Rename variables to conform to our code formatting guidelines
7739d0c5c1 Merge pull request #899 from bluegr/cryo_dat
Commit: c73270a3d38798c01dbc5bbc1937efacce79632b
https://github.com/scummvm/scummvm/commit/c73270a3d38798c01dbc5bbc1937efacce79632b
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-10T10:12:04+02:00
Commit Message:
CRYO: Add ID and versioning to cryo.dat
Changed paths:
devtools/create_cryo/create_led_dat.cpp
diff --git a/devtools/create_cryo/create_led_dat.cpp b/devtools/create_cryo/create_led_dat.cpp
index e58ee75..794dee3 100644
--- a/devtools/create_cryo/create_led_dat.cpp
+++ b/devtools/create_cryo/create_led_dat.cpp
@@ -26,6 +26,8 @@
#include "eden_icons.h"
#include "eden_rooms.h"
+#define CRYO_DAT_VER 1 // 1 byte
+
template <typename T>
static void writeLE(FILE *f, T value) {
for (int i = 0; i < sizeof(value); i++, value >>= 8) {
@@ -84,6 +86,9 @@ static int emitData(char *outputFilename) {
printf("Generating %s...\n", outputFilename);
+ fwrite("CRYODATA", 8, 1, f);
+ writeLE<byte>(f, CRYO_DAT_VER);
+
emitIcons(f);
emitRooms(f);
Commit: 29616127b32d833c7c413cfc979f2c523def1e11
https://github.com/scummvm/scummvm/commit/29616127b32d833c7c413cfc979f2c523def1e11
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-10T10:12:04+02:00
Commit Message:
CRYO: Rename create_led_dat to create_cryo_dat
Changed paths:
A devtools/create_cryo/create_cryo_dat.cpp
R devtools/create_cryo/create_led_dat.cpp
devtools/create_cryo/module.mk
diff --git a/devtools/create_cryo/create_cryo_dat.cpp b/devtools/create_cryo/create_cryo_dat.cpp
new file mode 100644
index 0000000..794dee3
--- /dev/null
+++ b/devtools/create_cryo/create_cryo_dat.cpp
@@ -0,0 +1,110 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include <stdio.h>
+
+#include "eden.h"
+#include "eden_icons.h"
+#include "eden_rooms.h"
+
+#define CRYO_DAT_VER 1 // 1 byte
+
+template <typename T>
+static void writeLE(FILE *f, T value) {
+ for (int i = 0; i < sizeof(value); i++, value >>= 8) {
+ unsigned char b = value & 0xFF;
+ fwrite(&b, 1, 1, f);
+ }
+}
+
+struct _icon_t : icon_t {
+ void write(FILE *f) {
+ writeLE<int16>(f, sx);
+ writeLE<int16>(f, sy);
+ writeLE<int16>(f, ex);
+ writeLE<int16>(f, ey);
+ writeLE<uint16>(f, cursor_id);
+ writeLE<unsigned int>(f, action_id);
+ writeLE<unsigned int>(f, object_id);
+ }
+};
+
+static void emitIcons(FILE *f) {
+ _icon_t *icons = (_icon_t*)gameIcons;
+ for (int i = 0; i < kNumIcons; i++)
+ icons[i].write(f);
+}
+
+struct _room_t : room_t {
+ void write(FILE *f) {
+ writeLE<byte>(f, ff_0);
+ writeLE<byte>(f, exits[0]);
+ writeLE<byte>(f, exits[1]);
+ writeLE<byte>(f, exits[2]);
+ writeLE<byte>(f, exits[3]);
+ writeLE<byte>(f, flags);
+ writeLE<uint16>(f, bank);
+ writeLE<uint16>(f, party);
+ writeLE<byte>(f, level);
+ writeLE<byte>(f, video);
+ writeLE<byte>(f, location);
+ writeLE<byte>(f, background);
+ }
+};
+
+static void emitRooms(FILE *f) {
+ _room_t *rooms = (_room_t*)gameRooms;
+ for (int i = 0; i < kNumRooms; i++)
+ rooms[i].write(f);
+}
+
+static int emitData(char *outputFilename) {
+ FILE *f = fopen(outputFilename, "w+b");
+ if (!f) {
+ printf("ERROR: Unable to create output file %s\n", outputFilename);
+ return 1;
+ }
+
+ printf("Generating %s...\n", outputFilename);
+
+ fwrite("CRYODATA", 8, 1, f);
+ writeLE<byte>(f, CRYO_DAT_VER);
+
+ emitIcons(f);
+ emitRooms(f);
+
+ fclose(f);
+
+ printf("Done!\n");
+
+ return 0;
+}
+
+int main(int argc, char **argv) {
+
+ if (argc > 1)
+ return emitData(argv[1]);
+ else
+ printf("Usage: %s <output.dat>\n", argv[0]);
+
+ return 0;
+}
diff --git a/devtools/create_cryo/create_led_dat.cpp b/devtools/create_cryo/create_led_dat.cpp
deleted file mode 100644
index 794dee3..0000000
--- a/devtools/create_cryo/create_led_dat.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include <stdio.h>
-
-#include "eden.h"
-#include "eden_icons.h"
-#include "eden_rooms.h"
-
-#define CRYO_DAT_VER 1 // 1 byte
-
-template <typename T>
-static void writeLE(FILE *f, T value) {
- for (int i = 0; i < sizeof(value); i++, value >>= 8) {
- unsigned char b = value & 0xFF;
- fwrite(&b, 1, 1, f);
- }
-}
-
-struct _icon_t : icon_t {
- void write(FILE *f) {
- writeLE<int16>(f, sx);
- writeLE<int16>(f, sy);
- writeLE<int16>(f, ex);
- writeLE<int16>(f, ey);
- writeLE<uint16>(f, cursor_id);
- writeLE<unsigned int>(f, action_id);
- writeLE<unsigned int>(f, object_id);
- }
-};
-
-static void emitIcons(FILE *f) {
- _icon_t *icons = (_icon_t*)gameIcons;
- for (int i = 0; i < kNumIcons; i++)
- icons[i].write(f);
-}
-
-struct _room_t : room_t {
- void write(FILE *f) {
- writeLE<byte>(f, ff_0);
- writeLE<byte>(f, exits[0]);
- writeLE<byte>(f, exits[1]);
- writeLE<byte>(f, exits[2]);
- writeLE<byte>(f, exits[3]);
- writeLE<byte>(f, flags);
- writeLE<uint16>(f, bank);
- writeLE<uint16>(f, party);
- writeLE<byte>(f, level);
- writeLE<byte>(f, video);
- writeLE<byte>(f, location);
- writeLE<byte>(f, background);
- }
-};
-
-static void emitRooms(FILE *f) {
- _room_t *rooms = (_room_t*)gameRooms;
- for (int i = 0; i < kNumRooms; i++)
- rooms[i].write(f);
-}
-
-static int emitData(char *outputFilename) {
- FILE *f = fopen(outputFilename, "w+b");
- if (!f) {
- printf("ERROR: Unable to create output file %s\n", outputFilename);
- return 1;
- }
-
- printf("Generating %s...\n", outputFilename);
-
- fwrite("CRYODATA", 8, 1, f);
- writeLE<byte>(f, CRYO_DAT_VER);
-
- emitIcons(f);
- emitRooms(f);
-
- fclose(f);
-
- printf("Done!\n");
-
- return 0;
-}
-
-int main(int argc, char **argv) {
-
- if (argc > 1)
- return emitData(argv[1]);
- else
- printf("Usage: %s <output.dat>\n", argv[0]);
-
- return 0;
-}
diff --git a/devtools/create_cryo/module.mk b/devtools/create_cryo/module.mk
index f8e350a..f1e8ea3 100644
--- a/devtools/create_cryo/module.mk
+++ b/devtools/create_cryo/module.mk
@@ -2,10 +2,10 @@
MODULE := devtools/create_cryo
MODULE_OBJS := \
- create_led_dat.o
+ create_cryo_dat.o
# Set the name of the executable
-TOOL_EXECUTABLE := create_led_dat
+TOOL_EXECUTABLE := create_cryo_dat
# Include common rules
include $(srcdir)/rules.mk
Commit: 248e5d3c59adae40006db4b80a0efc3107312082
https://github.com/scummvm/scummvm/commit/248e5d3c59adae40006db4b80a0efc3107312082
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-10T10:12:05+02:00
Commit Message:
CRYO: Add handling for the cryo.dat aux data file
Changed paths:
engines/cryo/eden.cpp
diff --git a/engines/cryo/eden.cpp b/engines/cryo/eden.cpp
index b8e191c..4ff18bf 100644
--- a/engines/cryo/eden.cpp
+++ b/engines/cryo/eden.cpp
@@ -48,6 +48,8 @@
namespace Cryo {
+#define CRYO_DAT_VER 1 // 1 byte
+
int16 _torchTick = 0;
int16 _glowIndex = 0;
int16 _torchCurIndex = 0;
@@ -4733,11 +4735,23 @@ void EdenGame::loadpermfiles() {
// Since PC version stores hotspots and rooms info in the executable, load them from premade resource file
Common::File f;
- if (f.open("led.dat")) {
+ if (f.open("cryo.dat")) {
const int kNumIcons = 136;
const int kNumRooms = 424;
- if (f.size() != kNumIcons * sizeof(Icon) + kNumRooms * sizeof(Room))
- error("Mismatching aux data");
+ 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.readByte() != CRYO_DAT_VER)
+ error("Incorrect aux data version");
+
+ if (dataSize != kNumIcons * sizeof(Icon) + kNumRooms * sizeof(Room))
+ error("Mismatching data in aux data file");
+
for (int i = 0; i < kNumIcons; i++) {
_gameIcons[i].sx = f.readSint16LE();
_gameIcons[i].sy = f.readSint16LE();
Commit: 130dfccfc155d7806e5972d71bb1c8f894de1e69
https://github.com/scummvm/scummvm/commit/130dfccfc155d7806e5972d71bb1c8f894de1e69
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-10T10:12:05+02:00
Commit Message:
CRYO: Use cryo.dat for all game versions
All the static data will be eventually moved into this file
Changed paths:
engines/cryo/eden.cpp
diff --git a/engines/cryo/eden.cpp b/engines/cryo/eden.cpp
index 4ff18bf..214744f 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);
Commit: aa56958b8e7a4097101569a8ab2f84505ca8c805
https://github.com/scummvm/scummvm/commit/aa56958b8e7a4097101569a8ab2f84505ca8c805
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-10T10:12:06+02:00
Commit Message:
CRYO: Add explicit sizes to some static data arrays
Makes it easier to move them to a data file
Changed paths:
engines/cryo/staticdata.cpp
diff --git a/engines/cryo/staticdata.cpp b/engines/cryo/staticdata.cpp
index 1184791..ad33ce3 100644
--- a/engines/cryo/staticdata.cpp
+++ b/engines/cryo/staticdata.cpp
@@ -25,7 +25,7 @@
namespace Cryo {
-Follower followerList[] = {
+Follower followerList[15] = {
// char, X, sx, sy, ex, ey,bank,
{ PersonId::pidGregor, 5, 211, 9, 320, 176, 228, 0, 0 },
{ PersonId::pidEloi, 4, 162, 47, 223, 176, 228, 112, 78 },
@@ -44,15 +44,7 @@ Follower followerList[] = {
{ -1, -1, -1, -1, -1, -1, -1, -1, -1 }
};
-
-/*
- Labyrinth of Mo
-
- | | | | | | | |
-
-*/
-
-byte kLabyrinthPath[] = {
+byte kLabyrinthPath[70] = {
// each nibble tells which direction to choose to exit the labyrinth
0x11, 0x11, 0x11, 0x22, 0x33, 0x55, 0x25, 0x44, 0x25, 0x11, 0x11, 0x11,
0x11, 0x35, 0x55, 0x45, 0x45, 0x44, 0x44, 0x34, 0x44, 0x34, 0x32, 0x52,
@@ -64,7 +56,7 @@ byte kLabyrinthPath[] = {
char kDinoSpeedForCitaLevel[16] = { 1, 2, 3, 4, 4, 5, 6, 7, 8, 9 };
-char kTabletView[] = { //TODO: make as struct?
+char kTabletView[12] = { //TODO: make as struct?
// opposite tablet id, video id
Objects::obUnused10, 83,
Objects::obUnused10, 84,
@@ -75,7 +67,7 @@ char kTabletView[] = { //TODO: make as struct?
};
// special character backgrounds for specific rooms
-char kPersoRoomBankTable[] = {
+char kPersoRoomBankTable[84] = {
// first entry is default bank, then pairs of [roomNum, bankNum], terminated by -1
0, 3, 33, -1,
21, 17, 35, -1,
@@ -102,7 +94,7 @@ char kPersoRoomBankTable[] = {
};
// area transition descriptors
-Goto gotos[] = {
+Goto gotos[130] = {
// area, oldarea, vid, time, valleyVid
{ 0, 1, 0, 2, 20 },
{ 0, 1, 162, 3, 168 },
@@ -236,7 +228,7 @@ Goto gotos[] = {
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
};
-object_t _objects[] = {
+object_t _objects[42] = {
//id,fl,loc,masklow,maskhi,ct
{ 1, 0, 3, 1, 0, 0}, // Eve's Way Stone
{ 2, 0, 3, 2, 0, 0}, // Thau's Seashell
@@ -371,7 +363,7 @@ perso_t kPersons[] = {
{ 0x628, 237, PersonMask::pmEve , PersonId::pidEve , 0, 78, 10, 0, 0, 7, 35, 0, 0 }
};
-Citadel _citadelList[] = {
+Citadel _citadelList[7] = {
{ 1, { 163, 182, 0, 0, 124, 147, 193, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0 } },
{ 48, { 285, 286, 0, 0, 287, 288, 284, 0 }, { 114, 115, 0, 0, 116, 117, 113, 0 } },
{ 63, { 290, 291, 0, 0, 292, 293, 289, 0 }, { 119, 120, 0, 0, 121, 122, 118, 0 } },
@@ -381,7 +373,7 @@ Citadel _citadelList[] = {
{ 255, { 310, 311, 0, 0, 312, 313, 309, 0 }, { 139, 140, 0, 0, 141, 142, 138, 0 } }
};
-prect_t _characterRects[] = { //TODO: just an array of int16s?
+prect_t _characterRects[19] = { // TODO: just an array of int16s?
{ 93, 69, 223, 176},
{ 102, 86, 162, 126},
{ 88, 103, 168, 163},
@@ -403,7 +395,7 @@ prect_t _characterRects[] = { //TODO: just an array of int16s?
{ 188, 83, 251, 158}
};
-byte _characterArray[][5] = { //TODO: struc?
+byte _characterArray[][5] = { // TODO: struc?
{ 8, 15, 23, 25, 0xFF},
{ 0, 9, 0xFF },
{ 0, 9, 0xFF },
Commit: 8ed8b3225f2fa521f795aeb1cbf765263c99c7f1
https://github.com/scummvm/scummvm/commit/8ed8b3225f2fa521f795aeb1cbf765263c99c7f1
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-10T11:41:50+02:00
Commit Message:
CRYO: Move all static data for Lost Eden to cryo.dat (1/2)
Changed paths:
A devtools/create_cryo/eden_static.h
devtools/create_cryo/create_cryo_dat.cpp
devtools/create_cryo/eden.h
diff --git a/devtools/create_cryo/create_cryo_dat.cpp b/devtools/create_cryo/create_cryo_dat.cpp
index 794dee3..a3fefc2 100644
--- a/devtools/create_cryo/create_cryo_dat.cpp
+++ b/devtools/create_cryo/create_cryo_dat.cpp
@@ -25,6 +25,7 @@
#include "eden.h"
#include "eden_icons.h"
#include "eden_rooms.h"
+#include "eden_static.h"
#define CRYO_DAT_VER 1 // 1 byte
@@ -77,6 +78,108 @@ static void emitRooms(FILE *f) {
rooms[i].write(f);
}
+static void emitStatic(FILE *f) {
+ const int kNumFollowers = 15;
+ const int kNumLabyrinthPath = 70;
+ const int kNumDinoSpeedForCitaLevel = 16;
+ const int kNumTabletView = 12;
+ const int kNumPersoRoomBankTable = 84;
+ const int kNumGotos = 130;
+ const int kNumObjects = 42;
+ const int kNumObjectLocations = 45;
+ const int kNumPersons = 58;
+ const int kNumCitadel = 7;
+ const int kNumCharacterRects = 19;
+ const int kNumCharacters = 20;
+ const int kNumActionCursors = 299;
+ const int kNumAreas = 12;
+
+ for (int i = 0; i < kNumFollowers; i++) {
+ writeLE<char>(f, followerList[i]._id);
+ writeLE<char>(f, followerList[i]._spriteNum);
+ writeLE<int16>(f, followerList[i].sx);
+ writeLE<int16>(f, followerList[i].sy);
+ writeLE<int16>(f, followerList[i].ex);
+ writeLE<int16>(f, followerList[i].ey);
+ writeLE<int16>(f, followerList[i]._spriteBank);
+ writeLE<int16>(f, followerList[i].ff_C);
+ writeLE<int16>(f, followerList[i].ff_E);
+ }
+
+ fwrite(kLabyrinthPath, 1, kNumLabyrinthPath, f);
+ fwrite(kDinoSpeedForCitaLevel, 1, kNumDinoSpeedForCitaLevel, f);
+ fwrite(kTabletView, 1, kNumTabletView, f);
+ fwrite(kPersoRoomBankTable, 1, kNumPersoRoomBankTable, f);
+ fwrite(gotos, sizeof(Goto), kNumGotos, f);
+
+ for (int i = 0; i < kNumObjects; i++) {
+ writeLE<byte>(f, _objects[i]._id);
+ writeLE<byte>(f, _objects[i]._flags);
+ writeLE<int>(f, _objects[i]._locations);
+ writeLE<uint16>(f, _objects[i]._itemMask);
+ writeLE<uint16>(f, _objects[i]._powerMask);
+ writeLE<int16>(f, _objects[i]._count);
+ }
+
+ for (int i = 0; i < kNumObjectLocations; i++) {
+ writeLE<uint16>(f, kObjectLocations[i]);
+ }
+
+ for (int i = 0; i < kNumPersons; i++) {
+ writeLE<uint16>(f, kPersons[i]._roomNum);
+ writeLE<uint16>(f, kPersons[i]._actionId);
+ writeLE<uint16>(f, kPersons[i]._partyMask);
+ writeLE<byte>(f, kPersons[i]._id);
+ writeLE<byte>(f, kPersons[i]._flags);
+ writeLE<byte>(f, kPersons[i]._roomBankId);
+ writeLE<byte>(f, kPersons[i]._spriteBank);
+ writeLE<uint16>(f, kPersons[i]._items);
+ writeLE<uint16>(f, kPersons[i]._powers);
+ writeLE<byte>(f, kPersons[i]._targetLoc);
+ writeLE<byte>(f, kPersons[i]._lastLoc);
+ writeLE<byte>(f, kPersons[i]._speed);
+ writeLE<byte>(f, kPersons[i]._steps);
+ }
+
+ for (int i = 0; i < kNumCitadel; i++) {
+ writeLE<int16>(f, _citadelList[i]._id);
+ for (int j = 0; j < 8; j++)
+ writeLE<int16>(f, _citadelList[i]._bank[j]);
+ for (int j = 0; j < 8; j++)
+ writeLE<int16>(f, _citadelList[i]._video[j]);
+ }
+
+ for (int i = 0; i < kNumCharacterRects; i++) {
+ writeLE<int16>(f, _characterRects[i].left);
+ writeLE<int16>(f, _characterRects[i].top);
+ writeLE<int16>(f, _characterRects[i].right);
+ writeLE<int16>(f, _characterRects[i].bottom);
+ }
+
+ fwrite(_characterArray, 5, kNumCharacters, f);
+
+ for (int i = 0; i < kNumAreas; i++) {
+ writeLE<byte>(f, kAreasTable[i]._num);
+ writeLE<byte>(f, kAreasTable[i]._type);
+ writeLE<uint16>(f, kAreasTable[i]._flags);
+ writeLE<uint16>(f, kAreasTable[i]._firstRoomIdx);
+ writeLE<byte>(f, kAreasTable[i]._citadelLevel);
+ writeLE<byte>(f, kAreasTable[i]._placeNum);
+ // pointer to _citadelRoomPtr is always initialized to null
+ writeLE<int16>(f, kAreasTable[i]._visitCount);
+ }
+
+ for (int i = 0; i < 64; i++) {
+ writeLE<uint16>(f, tab_2CEF0[i]);
+ }
+
+ for (int i = 0; i < 64; i++) {
+ writeLE<uint16>(f, tab_2CF70[i]);
+ }
+
+ fwrite(kActionCursors, 1, kNumActionCursors, f);
+}
+
static int emitData(char *outputFilename) {
FILE *f = fopen(outputFilename, "w+b");
if (!f) {
@@ -91,7 +194,8 @@ static int emitData(char *outputFilename) {
emitIcons(f);
emitRooms(f);
-
+ emitStatic(f);
+
fclose(f);
printf("Done!\n");
diff --git a/devtools/create_cryo/eden.h b/devtools/create_cryo/eden.h
index dfbe7ca..e9dd6be 100644
--- a/devtools/create_cryo/eden.h
+++ b/devtools/create_cryo/eden.h
@@ -49,3 +49,236 @@ struct room_t {
byte background;
};
#define END_ROOMS {0xFF, {0xFF, 0xFF, 0xFF, 0xFF}, 0xFF, 0xFFFF, 0xFFFF, 0xFF, 0xFF, 0xFF, 0xFF}
+
+struct Follower { // Characters on Mirror screen
+ char _id; // character
+ char _spriteNum; // sprite number
+ int16 sx;
+ int16 sy;
+ int16 ex;
+ int16 ey;
+ int16 _spriteBank;
+ int16 ff_C;
+ int16 ff_E;
+};
+
+enum PersonId {
+ pidGregor = 0, // The King
+ pidDina, // Pink dino
+ pidTau, // Late grandpa
+ pidMonk, // Old wizard
+ pidJabber, // Executioner
+ pidEloi, // Evergreen ptero
+ pidMungo, // Dina's husband
+ pidEve, // Blonde girl
+ pidShazia, // Big boobs sis
+ pidLeadersBegin, // 9
+ pidChongOfChamaar = pidLeadersBegin, // Dogface
+ pidKommalaOfKoto, // Clones
+ pidUlanOfUlele, // Shaman
+ pidCabukaOfCantura, // Stone people
+ pidMarindaOfEmbalmers, // Gods
+ pidFuggOfTamara, // Boar-like
+ pidThugg, // Bodyguard
+ pidNarrator, // 16, Old Eloi, also BGM
+ pidNarrim, // Sea snake
+ pidMorkus, // Vicious tyran
+ pidDinosaur, // different species of friendly dino
+ pidEnemy // different species of enemy dino
+};
+
+enum PersonMask {
+ pmGregor = 1,
+ pmDina = 2,
+ pmTau = 4,
+ pmMonk = 8,
+ pmJabber = 0x10,
+ pmEloi = 0x20,
+ pmMungo = 0x40,
+ pmEve = 0x80,
+ pmShazia = 0x100,
+ pmLeader = 0x200, // valley tribe leader
+ pmThugg = 0x400,
+ pmQuest = 0x800, // special quest person
+ pmDino = 0x1000,
+ pmEnemy = 0x2000,
+ pmMorkus = 0x4000
+};
+
+enum PersonFlags {
+ pfType0 = 0,
+ pftTyrann,
+ pfType2,
+ pfType3,
+ pfType4,
+ pfType5,
+ pfType6,
+ pfType7,
+ pfType8,
+ pftMosasaurus,
+ pftTriceraptor,
+ pftVelociraptor,
+ pfType12,
+ pfType13,
+ pfType14,
+ pfType15,
+ pfTypeMask = 0xF,
+ pf10 = 0x10,
+ pf20 = 0x20,
+ pfInParty = 0x40,
+ pf80 = 0x80
+};
+
+enum Objects {
+ obNone,
+ obWayStone,
+ obShell,
+ obTalisman,
+ obTooth,
+ obPrism, // 5
+ obFlute,
+ obApple,
+ obEgg, // 8
+ obRoot,
+ obUnused10,
+ obShroom, // 11
+ obBadShroom, // 12
+ obKnife, // 13
+ obNest, // 14
+ obFullNest, // 15
+ obGold, // 16
+ obMoonStone,
+ obBag,
+ obSunStone, // 19
+ obHorn, // 20
+ obSword,
+
+ obMaskOfDeath,
+ obMaskOfBonding,
+ obMaskOfBirth,
+
+ obEyeInTheStorm, // 25
+ obSkyHammer,
+ obFireInTheClouds,
+ obWithinAndWithout,
+ obEyeInTheCyclone,
+ obRiverThatWinds,
+
+ obTrumpet, // 31
+ obUnused32,
+ obDrum,
+ obUnused34,
+ obUnused35,
+ obRing,
+
+ obTablet1, // 37 is 1st plaque, 6 total
+ obTablet2,
+ obTablet3, // 39
+ obTablet4,
+ obTablet5,
+ obTablet6
+};
+
+struct Goto {
+ byte _areaNum; // target area
+ byte _curAreaNum; // current area
+ byte _enterVideoNum;
+ byte _travelTime; // time to skip while in travel
+ byte _arriveVideoNum;
+};
+
+struct object_t {
+ byte _id;
+ byte _flags;
+ int _locations; // index in kObjectLocations
+ uint16 _itemMask;
+ uint16 _powerMask; // object of power bitmask
+ int16 _count;
+};
+
+struct perso_t {
+ uint16 _roomNum; // room this person currently in
+ uint16 _actionId; // TODO: checkme
+ uint16 _partyMask; // party bit mask
+ byte _id; // character
+ byte _flags; // flags and kind
+ byte _roomBankId;// index in kPersoRoomBankTable for specific room banks
+ byte _spriteBank; // sprite bank
+ uint16 _items; // inventory
+ uint16 _powers; // obj of power bitmask
+ byte _targetLoc; // For party member this is mini sprite index
+ byte _lastLoc; // For party member this is mini sprite x offset
+ byte _speed; // num ticks per step
+ byte _steps; // current ticks
+};
+
+struct Citadel {
+ int16 _id;
+ int16 _bank[8];
+ int16 _video[8];
+};
+
+// A struct to hold the struct members of Common::Rect
+struct Rect {
+ int16 left, top, right, bottom;
+};
+
+enum Areas {
+ arMo = 1,
+ arTausCave,
+ arChamaar,
+ arUluru,
+ arKoto,
+ arTamara,
+ arCantura,
+ arShandovra,
+ arNarimsCave,
+ arEmbalmersCave,
+ arWhiteArch,
+ arMoorkusLair
+};
+
+enum AreaFlags {
+ afFlag1 = 1,
+ afFlag2 = 2,
+ afFlag4 = 4,
+ afFlag8 = 8,
+ afGaveGold = 0x10,
+ afFlag20 = 0x20,
+
+ HasTriceraptors = 0x100,
+ HasVelociraptors = 0x200,
+ HasTyrann = 0x400,
+
+ TyrannSighted = 0x4000,
+ afFlag8000 = 0x8000
+};
+
+struct Room {
+ byte _id;
+ byte _exits[4]; //TODO: signed?
+ byte _flags;
+ uint16 _bank;
+ uint16 _party;
+ byte _level; // Citadel level
+ byte _video;
+ byte _location;
+ byte _backgroundBankNum; // bg/mirror image number (relative)
+};
+
+struct Area {
+ byte _num;
+ byte _type;
+ uint16 _flags;
+ uint16 _firstRoomIdx;
+ byte _citadelLevel;
+ byte _placeNum;
+ Room *_citadelRoomPtr;
+ int16 _visitCount;
+};
+
+enum AreaType {
+ atCitadel = 1,
+ atValley = 2,
+ atCave = 3
+};
diff --git a/devtools/create_cryo/eden_static.h b/devtools/create_cryo/eden_static.h
new file mode 100644
index 0000000..fe4ff20
--- /dev/null
+++ b/devtools/create_cryo/eden_static.h
@@ -0,0 +1,479 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#pragma once
+#include "eden.h"
+
+Follower followerList[15] = {
+// char, X, sx, sy, ex, ey,bank,
+ { PersonId::pidGregor, 5, 211, 9, 320, 176, 228, 0, 0 },
+ { PersonId::pidEloi, 4, 162, 47, 223, 176, 228, 112, 78 },
+ { PersonId::pidDina, 3, 55, 0, 172, 176, 228, 90, 16 },
+ { PersonId::pidChongOfChamaar, 4, 0, 5, 114, 176, 229, 0, 16 },
+ { PersonId::pidKommalaOfKoto, 3, 0, 15, 102, 176, 229, 0, 16 },
+ { PersonId::pidUlanOfUlele, 1, 0, 0, 129, 176, 230, 0, 16 },
+ { PersonId::pidCabukaOfCantura, 2, 0, 0, 142, 176, 230, 0, 16 },
+ { PersonId::pidFuggOfTamara, 0, 0, 17, 102, 176, 230, 0, 16 },
+ { PersonId::pidJabber, 2, 0, 6, 134, 176, 228, 0, 16 },
+ { PersonId::pidShazia, 1, 90, 17, 170, 176, 228, 50, 22 },
+ { PersonId::pidThugg, 0, 489, 8, 640, 176, 228, 160, 24 },
+ { PersonId::pidMungo, 5, 361, 0, 517, 176, 229, 0, 16 },
+ { PersonId::pidMonk, 0, 419, 22, 569, 176, 229, 100, 30 },
+ { PersonId::pidEve, 1, 300, 28, 428, 176, 229, 0, 38 },
+ { -1, -1, -1, -1, -1, -1, -1, -1, -1 }
+};
+
+byte kLabyrinthPath[70] = {
+// each nibble tells which direction to choose to exit the labyrinth
+ 0x11, 0x11, 0x11, 0x22, 0x33, 0x55, 0x25, 0x44, 0x25, 0x11, 0x11, 0x11,
+ 0x11, 0x35, 0x55, 0x45, 0x45, 0x44, 0x44, 0x34, 0x44, 0x34, 0x32, 0x52,
+ 0x33, 0x23, 0x24, 0x44, 0x24, 0x22, 0x54, 0x22, 0x54, 0x54, 0x44, 0x22,
+ 0x22, 0x42, 0x45, 0x22, 0x42, 0x45, 0x35, 0x11, 0x44, 0x34, 0x52, 0x11,
+ 0x44, 0x32, 0x55, 0x11, 0x11, 0x33, 0x11, 0x11, 0x53, 0x11, 0x11, 0x53,
+ 0x54, 0x24, 0x11, 0x22, 0x25, 0x33, 0x53, 0x54, 0x23, 0x44
+};
+
+char kDinoSpeedForCitaLevel[16] = { 1, 2, 3, 4, 4, 5, 6, 7, 8, 9 };
+
+char kTabletView[12] = { //TODO: make as struct?
+ // opposite tablet id, video id
+ Objects::obUnused10, 83,
+ Objects::obUnused10, 84,
+ Objects::obTablet4, 85,
+ Objects::obTablet3, 86,
+ Objects::obTablet6, 87,
+ Objects::obTablet5, 85
+};
+
+// special character backgrounds for specific rooms
+char kPersoRoomBankTable[84] = {
+ // first entry is default bank, then pairs of [roomNum, bankNum], terminated by -1
+ 0, 3, 33, -1,
+ 21, 17, 35, -1,
+ 0, 2, 36, -1,
+ 22, 9, 38, 3, 39, -1,
+ 23, 8, 40, -1,
+ 0, 3, 41, 7, 42, -1,
+ 25, -1,
+ 27, 17, 45, -1,
+ 28, 26, 46, -1,
+ 29, 51, 48, -1,
+ 30, 53, 49, -1,
+ 0, 27, 50, -1,
+ 32, 17, 51, -1,
+ 52, 2, 52, -1,
+ -3, 3, -3, -1,
+ 31, -1,
+ 24, 6, 43, -1,
+ 47, -1,
+ 0, 2, 64, -1,
+ 54, 3, 54, -1,
+ 27, -1,
+ 26, 17, 45, -1
+};
+
+// area transition descriptors
+Goto gotos[130] = {
+// area, oldarea, vid, time, valleyVid
+ { 0, 1, 0, 2, 20 },
+ { 0, 1, 162, 3, 168 },
+ { 0, 2, 0, 2, 21 },
+ { 0, 6, 0, 3, 108 },
+ { 0, 9, 151, 3, 0 },
+ { 0, 7, 106, 2, 101 },
+ { 0, 10, 79, 3, 102 },
+ { 0, 12, 0, 3, 0 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 1, 3, 58, 2, 104 },
+ { 1, 4, 100, 4, 104 },
+ { 1, 5, 107, 6, 104 },
+ { 1, 6, 155, 8, 104 },
+ { 1, 7, 165, 6, 104 },
+ { 1, 8, 169, 6, 104 },
+ { 1, 10, 111, 2, 104 },
+ { 1, 11, 164, 4, 104 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 1, 3, 161, 3, 102 },
+ { 1, 4, 163, 6, 102 },
+ { 1, 5, 157, 9, 102 },
+ { 1, 9, 160, 9, 102 },
+ { 1, 10, 79, 3, 102 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 1, 3, 0, 3, 153 }, // 24
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 3, 1, 154, 2, 103 },
+ { 3, 4, 100, 2, 103 },
+ { 3, 5, 107, 4, 103 },
+ { 3, 6, 155, 6, 103 },
+ { 3, 7, 165, 8, 103 },
+ { 3, 8, 169, 6, 103 },
+ { 3, 10, 111, 4, 103 },
+ { 3, 11, 164, 6, 103 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 3, 1, 162, 3, 22 },
+ { 3, 4, 163, 6, 22 },
+ { 3, 5, 157, 9, 22 },
+ { 3, 9, 160, 9, 22 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 3, 1, 0, 3, 166 }, // 40
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 4, 1, 154, 4, 51 },
+ { 4, 3, 58, 2, 51 },
+ { 4, 5, 107, 2, 51 },
+ { 4, 6, 155, 4, 51 },
+ { 4, 7, 165, 6, 51 },
+ { 4, 8, 169, 8, 51 },
+ { 4, 10, 111, 6, 51 },
+ { 4, 11, 164, 8, 51 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 4, 1, 162, 3, 109 }, // 51
+ { 4, 3, 161, 6, 109 },
+ { 4, 5, 157, 9, 109 },
+ { 4, 9, 160, 9, 109 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 5, 1, 154, 6, 33 },
+ { 5, 3, 58, 4, 33 },
+ { 5, 4, 100, 2, 33 },
+ { 5, 6, 155, 2, 33 },
+ { 5, 7, 165, 4, 33 },
+ { 5, 8, 169, 8, 33 },
+ { 5, 10, 111, 8, 33 },
+ { 5, 11, 164, 8, 33 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 5, 1, 162, 3, 99 }, // 65
+ { 5, 3, 161, 6, 99 },
+ { 5, 4, 163, 9, 99 },
+ { 5, 9, 160, 9, 99 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 9, 1, 162, 3, 167 }, // 70
+ { 9, 3, 161, 6, 167 },
+ { 9, 4, 163, 9, 167 },
+ { 9, 5, 157, 9, 167 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 6, 1, 154, 8, 105 }, // 75
+ { 6, 3, 58, 6, 105 },
+ { 6, 4, 100, 4, 105 },
+ { 6, 5, 107, 2, 105 },
+ { 6, 7, 165, 2, 105 },
+ { 6, 8, 169, 10, 105 },
+ { 6, 10, 111, 6, 105 },
+ { 6, 11, 164, 8, 105 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 7, 1, 154, 4, 158 }, // 84
+ { 7, 3, 58, 6, 158 },
+ { 7, 4, 100, 6, 158 },
+ { 7, 5, 107, 4, 158 },
+ { 7, 6, 155, 2, 158 },
+ { 7, 8, 169, 8, 158 },
+ { 7, 10, 111, 4, 158 },
+ { 7, 11, 164, 6, 158 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 8, 1, 154, 2, 159 }, // 93
+ { 8, 3, 58, 4, 159 },
+ { 8, 4, 100, 6, 159 },
+ { 8, 5, 107, 8, 159 },
+ { 8, 6, 155, 10, 159 },
+ { 8, 7, 165, 8, 159 },
+ { 8, 10, 111, 6, 159 },
+ { 8, 11, 164, 4, 159 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 10, 1, 154, 2, 77 }, // 102
+ { 10, 3, 58, 4, 77 },
+ { 10, 4, 100, 6, 77 },
+ { 10, 5, 107, 8, 77 },
+ { 10, 6, 155, 6, 77 },
+ { 10, 7, 165, 4, 77 },
+ { 10, 8, 169, 6, 77 },
+ { 10, 11, 164, 4, 77 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 11, 1, 154, 2, 80 }, // 111
+ { 11, 3, 58, 4, 80 },
+ { 11, 4, 100, 6, 80 },
+ { 11, 5, 107, 8, 80 },
+ { 11, 6, 155, 8, 80 },
+ { 11, 7, 165, 6, 80 },
+ { 11, 8, 169, 2, 80 },
+ { 11, 10, 111, 4, 80 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 12, 1, 154, 8, 56 }, // 120
+ { 12, 3, 58, 4, 56 },
+ { 12, 4, 100, 4, 56 },
+ { 12, 5, 107, 6, 56 },
+ { 12, 6, 155, 8, 56 },
+ { 12, 7, 165, 10, 56 },
+ { 12, 8, 169, 4, 56 },
+ { 12, 10, 111, 10, 56 },
+ { 12, 11, 164, 6, 56 },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+};
+
+object_t _objects[42] = {
+ //id,fl,loc,masklow,maskhi,ct
+ { 1, 0, 3, 1, 0, 0}, // Eve's Way Stone
+ { 2, 0, 3, 2, 0, 0}, // Thau's Seashell
+ { 3, 0, 3, 4, 0, 0}, // Talisman of bravery
+ { 4, 0, 3, 8, 0, 0}, // An old tooth. Very old! Whoever lost it most certainly has no further use for it!
+ { 5, 0, 0, 0x10, 0, 0}, // Prism
+ { 6, 0, 3, 0, 0, 0}, // Flute
+ { 7, 0, 3, 0x4000, 0, 0}, // Apple
+ { 8, 0, 4, 0x1000, 0, 0}, // Egg of Destiny
+ { 9, 0, 3, 0x800, 0, 0}, // Root
+ { 10, 0, 3, 0, 0, 0}, // ???
+ { 11, 0, 6, 0, 0, 0}, // Mushroom
+ { 12, 0, 13, 0, 0, 0}, // Poisonous Mushroom
+ { 13, 0, 2, 0x400, 0, 0}, // Graa's Knife
+ { 14, 0, 22, 0, 0, 0}, // Empty Nest
+ { 15, 0, 26, 0, 0, 0}, // Full Nest
+ { 16, 0, 33, 0x20, 0, 0}, // Gold
+ { 17, 0, 3, 0, 0, 0}, // Sign of Shadow Mistress (moon stone)
+ { 18, 0, 3, 0, 0, 0}, // Sign of Mother of all (bag of soil)
+ { 19, 0, 40, 0, 0, 0}, // Sign of the life-giving (sun star)
+ { 20, 0, 20, 0x200, 0, 0}, // King's Horn
+ { 21, 0, 3, 0, 0, 0}, // Golden Sword of Mashaar
+ // Masks
+ { 22, 0, 3, 0x40, 0, 0}, // Mask of Death
+ { 23, 0, 3, 0x80, 0, 0}, // Mask of Bonding
+ { 24, 0, 3, 0x100, 0, 0}, // Mask of Birth
+ // Objects of power
+ { 25, 0, 3, 0, 1, 0}, // Eye in the Storm
+ { 26, 0, 3, 0, 2, 0}, // Sky Hammer
+ { 27, 0, 3, 0, 4, 0}, // Fire in the Clouds
+ { 28, 0, 3, 0, 8, 0}, // Within and Without
+ { 29, 0, 3, 0, 0x10, 0}, // Eye in the Cyclone
+ { 30, 0, 3, 0, 0x20, 0}, // River that Winds
+ // Musical instruments
+ { 31, 0, 3, 0, 0x40, 0}, // Trumpet
+ { 32, 0, 3, 0, 0x80, 0}, // -- unused (but still has a dialog line)
+ { 33, 0, 3, 0, 0x100, 0}, // Drum
+ { 34, 0, 3, 0, 0x200, 0}, // -- unused (but still has a dialog line)
+ { 35, 0, 3, 0, 0x400, 0}, // -- unused (but still has a dialog line)
+ { 36, 0, 3, 0, 0x800, 0}, // Ring
+ // Tablets
+ { 37, 0, 3, 0, 0, 0}, // Tablet #1 (Mo)
+ { 38, 0, 42, 0x2000, 0, 0}, // Tablet #2 (Morkus' Lair)
+ { 39, 0, 3, 0, 0, 0}, // Tablet #3 (White Arch?)
+ { 40, 0, 3, 0, 0, 0}, // Tablet #4
+ { 41, 0, 3, 0, 0, 0}, // Tablet #5
+ { 42, 0, 3, 0x8000, 0, 0} // Tablet #6 (Castra)
+};
+
+uint16 kObjectLocations[45] = {
+ 0x112, 0xFFFF,
+ 0x202, 0xFFFF,
+ 0x120, 0xFFFF,
+ 0x340, 0x44B, 0x548, 0x640, 0x717, 0x830, 0xFFFF,
+ 0x340, 0x44B, 0x548, 0x640, 0x717, 0x830, 0xFFFF,
+ 0, 0xFFFF,
+ 0x344, 0x53A, 0x831, 0xFFFF,
+ 0x331, 0x420, 0x54B, 0x637, 0x716, 0x840, 0xFFFF,
+ 0x834A, 0x8430, 0x8531, 0x644, 0x745, 0x838, 0xFFFF,
+ 0x510, 0xFFFF,
+ 0xC04, 0xFFFF,
+ 0xFFFF
+};
+
+perso_t kPersons[58] = {
+ // room, aid, party mask, id, flags, X,bank,X, X,sprId,sprX,speed, X
+ { 0x103, 230, PersonMask::pmGregor, PersonId::pidGregor , 0, 0, 1, 0, 0, 0, 0, 0, 0 },
+ { 0x116, 231, PersonMask::pmDina , PersonId::pidDina , 0, 4, 2, 0, 0, 3, 9, 0, 0 },
+ { 0x202, 232, PersonMask::pmTau , PersonId::pidTau , 0, 8, 3, 0, 0, 0, 0, 0, 0 },
+ { 0x109, 233, PersonMask::pmMonk , PersonId::pidMonk , 0, 12, 4, 0, 0, 6, 52, 0, 0 },
+ { 0x108, 234, PersonMask::pmJabber, PersonId::pidJabber , 0, 18, 5, 0, 0, 2, 0, 0, 0 },
+ { 0x103, 235, PersonMask::pmEloi , PersonId::pidEloi , 0, 22, 6, 0, 0, 4, 20, 0, 0 },
+ { 0x301, 236, PersonMask::pmMungo , PersonId::pidMungo , 0, 28, 8, 0, 0, 11, 45, 0, 0 },
+ { 0x628, 237, PersonMask::pmEve , PersonId::pidEve , 0, 30, 10, 0, 0, 7, 35, 0, 0 },
+ { 0x81A, 238, PersonMask::pmShazia, PersonId::pidShazia , 0, 34, 11, 0, 0, 1, 11, 0, 0 },
+ { 0x330, 239, PersonMask::pmLeader, PersonId::pidChongOfChamaar , 0, 38, 13, 0, 0, 10, 0, 0, 0 },
+ { 0x41B, 239, PersonMask::pmLeader, PersonId::pidUlanOfUlele , 0, 46, 15, 0, 0, 13, 0, 0, 0 },
+ { 0x53B, 239, PersonMask::pmLeader, PersonId::pidKommalaOfKoto , 0, 42, 14, 0, 0, 9, 0, 0, 0 },
+ { 0x711, 239, PersonMask::pmLeader, PersonId::pidCabukaOfCantura , 0, 50, 16, 0, 0, 14, 0, 0, 0 },
+ { 0xA02, 239, PersonMask::pmLeader, PersonId::pidMarindaOfEmbalmers, 0, 54, 17, 0, 0, 0, 0, 0, 0 },
+ { 0x628, 239, PersonMask::pmLeader, PersonId::pidFuggOfTamara , 0, 62, 18, 0, 0, 12, 0, 0, 0 },
+ { 0x801, 239, PersonMask::pmLeader, PersonId::pidChongOfChamaar , 0, 38, 13, 0, 0, 10, 0, 0, 0 },
+ { 0x41B, 10, PersonMask::pmQuest , PersonId::pidUlanOfUlele , PersonFlags::pfType2 , 46, 15, 0, 0, 13, 0, 0, 0 },
+ { 0x711, 11, PersonMask::pmQuest , PersonId::pidCabukaOfCantura , PersonFlags::pfType2 , 50, 16, 0, 0, 14, 0, 0, 0 },
+ { 0x106, 240, PersonMask::pmThugg , PersonId::pidThugg , 0, 64, 7, 0, 0, 0, 61, 0, 0 },
+ { 0, 13, 0, PersonId::pidNarrator , 0, 68, 12, 0, 0, 0, 0, 0, 0 },
+ { 0x902, 241, PersonMask::pmQuest , PersonId::pidNarrim , 0, 70, 19, 0, 0, 0, 0, 0, 0 },
+ { 0xC03, 244, PersonMask::pmMorkus, PersonId::pidMorkus , 0, 74, 20, 0, 0, 0, 0, 0, 0 },
+ // dinos in each valley
+ { 0x332, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x329, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x33B, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x317, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftVelociraptor, 0, 0, 0, 0, 0, 0, 1, 0 },
+ { 0x320, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType12 , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x349, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 },
+
+ { 0x429, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x43B, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x422, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftVelociraptor, 0, 0, 0, 0, 0, 0, 1, 0 },
+ { 0x432, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 },
+
+ { 0x522, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x534, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x515, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pftVelociraptor , 0, 0, 0, 0, 0, 0, 1, 0 },
+ { 0x533, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 },
+
+ { 0x622, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x630, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x643, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftVelociraptor, 0, 0, 0, 0, 0, 0, 1, 0 },
+ { 0x63A, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 },
+
+ { 0x737, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x739, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x74A, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftVelociraptor, 0, 0, 0, 0, 0, 0, 1, 0 },
+ { 0x726, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 },
+
+ { 0x842, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x822, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x828, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pftVelociraptor , 0, 0, 0, 0, 0, 0, 1, 0 },
+ { 0x84B, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 },
+
+ { 0xB03, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 58, 252, 0, 0, 0, 0, 0, 0 },
+ // enemy dinos
+ { 0x311, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x410, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x51B, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x618, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x71B, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x81B, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0xFFFF, 0xFFFF, 0xFFFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFFFF, 0xFFFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ { 0x628, 237, PersonMask::pmEve , PersonId::pidEve , 0, 80, 9, 0, 0, 8, 35, 0, 0 },
+ { 0x628, 237, PersonMask::pmEve , PersonId::pidEve , 0, 78, 10, 0, 0, 7, 35, 0, 0 }
+};
+
+Citadel _citadelList[7] = {
+ { 1, { 163, 182, 0, 0, 124, 147, 193, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { 48, { 285, 286, 0, 0, 287, 288, 284, 0 }, { 114, 115, 0, 0, 116, 117, 113, 0 } },
+ { 63, { 290, 291, 0, 0, 292, 293, 289, 0 }, { 119, 120, 0, 0, 121, 122, 118, 0 } },
+ { 95, { 295, 296, 0, 0, 297, 298, 294, 0 }, { 124, 125, 0, 0, 126, 127, 123, 0 } },
+ { 127, { 300, 301, 0, 0, 302, 303, 299, 0 }, { 129, 130, 0, 0, 131, 132, 128, 0 } },
+ { 159, { 305, 306, 0, 0, 307, 308, 304, 0 }, { 134, 135, 0, 0, 136, 137, 133, 0 } },
+ { 255, { 310, 311, 0, 0, 312, 313, 309, 0 }, { 139, 140, 0, 0, 141, 142, 138, 0 } }
+};
+
+Rect _characterRects[19] = { // TODO: just an array of int16s?
+ { 93, 69, 223, 176},
+ { 102, 86, 162, 126},
+ { 88, 103, 168, 163},
+ { 116, 66, 192, 176},
+ { 129, 92, 202, 153},
+ { 60, 95, 160, 176},
+ { 155, 97, 230, 145},
+ { 100, 77, 156, 145},
+ { 110, 78, 170, 156},
+ { 84, 76, 166, 162},
+ { 57, 77, 125, 114},
+ { 93, 69, 223, 175},
+ { 93, 69, 223, 176},
+ { 93, 69, 223, 176},
+ { 154, 54, 245, 138},
+ { 200, 50, 261, 116},
+ { 70, 84, 162, 176},
+ { 125, 101, 222, 172},
+ { 188, 83, 251, 158}
+};
+
+byte _characterArray[20][5] = { // TODO: struc?
+ { 8, 15, 23, 25, 0xFF },
+ { 0, 9, 0xFF, 0, 0 },
+ { 0, 9, 0xFF, 0, 0 },
+ { 0, 9, 0xFF, 0, 0 },
+ { 0, 13, 0xFF, 0, 0 },
+ { 16, 21, 0xFF, 0, 0 },
+ { 11, 20, 0xFF, 0, 0 },
+ { 0, 12, 0xFF, 0, 0 },
+ { 0, 9, 0xFF, 0, 0 },
+ { 0, 9, 0xFF, 0, 0 },
+ { 5, 13, 0xFF, 0, 0 },
+ { 0xFF, 0, 0, 0, 0 },
+ { 0, 8, 0xFF, 0, 0 },
+ { 0xFF, 0, 0, 0, 0 },
+ { 0, 7, 0xFF, 0, 0 },
+ { 0, 8, 0xFF, 0, 0 },
+ { 8, 12, 0xFF, 0, 0 },
+ { 0, 5, 0xFF, 0, 0 },
+ { 0, 4, 0xFF, 0, 0 },
+ { 0xFF, 0, 0, 0, 0 }
+};
+
+Area kAreasTable[12] = {
+ { Areas::arMo , AreaType::atCitadel, 0, 0, 0, 1, 0, 0},
+ { Areas::arTausCave , AreaType::atCave , 0, 112, 0, 2, 0, 0},
+ { Areas::arChamaar , AreaType::atValley , 0, 133, 0, 3, 0, 0},
+ { Areas::arUluru , AreaType::atValley , 0, 187, 0, 4, 0, 0},
+ { Areas::arKoto , AreaType::atValley , AreaFlags::HasVelociraptors, 236, 0, 5, 0, 0},
+ { Areas::arTamara , AreaType::atValley , 0, 288, 0, 6, 0, 0},
+ { Areas::arCantura , AreaType::atValley , 0, 334, 0, 7, 0, 0},
+ { Areas::arShandovra , AreaType::atValley , 0, 371, 0, 8, 0, 0},
+ { Areas::arNarimsCave , AreaType::atCave , 0, 115, 0, 9, 0, 0},
+ { Areas::arEmbalmersCave, AreaType::atCave , 0, 118, 0, 10, 0, 0},
+ { Areas::arWhiteArch , AreaType::atCave , 0, 122, 0, 11, 0, 0},
+ { Areas::arMoorkusLair , AreaType::atCave , 0, 127, 0, 12, 0, 0}
+};
+
+int16 tab_2CEF0[64] = {
+ 25, 257, 0, 0, 37, 258, 38, 259, 0, 0, 24, 260, 0, 0, 0, 0,
+ 0, 0, 53, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 39, 261, 0, 0, 40, 262, 62, 263, 0, 0, 63, 264, 0, 0, 0, 0,
+ 18, 275, 0, 0, 35, 254, 36, 255, 19, 318, 23, 256, 0, 0, 0, 0
+};
+
+int16 tab_2CF70[64] = {
+ 65, 266, 0, 0, 66, 267, 67, 268, 0, 0, 68, 269, 0, 0, 0, 0,
+ 0, 0, 73, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 69, 270, 0, 0, 70, 271, 71, 272, 0, 0, 72, 273, 0, 0, 0, 0,
+ 18, 275, 0, 0, 35, 254, 36, 255, 19, 318, 23, 256, 0, 0, 0, 0,
+};
+
+byte kActionCursors[299] = {
+ 3, 1, 2, 4, 5, 5, 5, 0, 5, 5,
+ 5, 5, 5, 3, 2, 5, 5, 5, 3, 2,
+ 4, 5, 7, 7, 4, 5, 5, 0, 0, 0,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 0, 0, 0, 0, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 0, 0,
+ 0, 0, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 0, 0, 0, 0, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 0, 5, 6,
+ 6, 1, 6, 6, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 6, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 0, 0, 6, 6,
+ 53, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
Commit: 77f11945865e02c6f2f30409ccae938fc1e3800d
https://github.com/scummvm/scummvm/commit/77f11945865e02c6f2f30409ccae938fc1e3800d
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-10T11:51:58+02:00
Commit Message:
CRYO: Move all static data for Lost Eden to cryo.dat (2/2)
Changed paths:
R engines/cryo/staticdata.cpp
engines/cryo/defs.h
engines/cryo/eden.cpp
engines/cryo/eden.h
engines/cryo/module.mk
diff --git a/engines/cryo/defs.h b/engines/cryo/defs.h
index b7206dc..e646b9f 100644
--- a/engines/cryo/defs.h
+++ b/engines/cryo/defs.h
@@ -783,33 +783,6 @@ enum {
LAB_W
};
-extern byte kLabyrinthPath[];
-
-extern char kDinoSpeedForCitaLevel[16];
-
-extern char kTabletView[];
-
-// special character backgrounds for specific rooms
-extern char kPersoRoomBankTable[];
-
-// area transition descriptors
-extern Goto gotos[];
-extern object_t _objects[];
-extern uint16 kObjectLocations[100];
-extern perso_t kPersons[];
-extern Citadel _citadelList[];
-
-struct prect_t {
- int16 left, top, right, bottom;
-};
-
-extern prect_t _characterRects[];
-extern byte _characterArray[][5];
-extern Area kAreasTable[];
-extern int16 tab_2CEF0[64];
-extern int16 tab_2CF70[64];
-extern int16 kActionCursors[299];
-
struct CubeFace {
int tri;
char ff_4;
diff --git a/engines/cryo/eden.cpp b/engines/cryo/eden.cpp
index 214744f..47cd1e0 100644
--- a/engines/cryo/eden.cpp
+++ b/engines/cryo/eden.cpp
@@ -4732,6 +4732,42 @@ void EdenGame::loadpermfiles() {
Common::File f;
const int kNumIcons = 136;
const int kNumRooms = 424;
+ const int kNumFollowers = 15;
+ const int kNumLabyrinthPath = 70;
+ const int kNumDinoSpeedForCitaLevel = 16;
+ const int kNumTabletView = 12;
+ const int kNumPersoRoomBankTable = 84;
+ const int kNumGotos = 130;
+ const int kNumObjects = 42;
+ const int kNumObjectLocations = 45;
+ const int kNumPersons = 58;
+ const int kNumCitadel = 7;
+ const int kNumCharacterRects = 19;
+ const int kNumCharacters = 20;
+ const int kNumAreas = 12;
+ // tab_2CEF0
+ // tab_2CF70
+ const int kNumActionCursors = 299;
+
+ const int expectedDataSize =
+ kNumIcons * sizeof(Icon) +
+ kNumRooms * sizeof(Room) +
+ kNumFollowers * sizeof(Follower) +
+ kNumLabyrinthPath +
+ kNumDinoSpeedForCitaLevel +
+ kNumTabletView +
+ kNumPersoRoomBankTable +
+ kNumGotos * sizeof(Goto) +
+ kNumObjects * sizeof(object_t) +
+ kNumObjectLocations * 2 +
+ kNumPersons * sizeof(perso_t) +
+ kNumCitadel * sizeof(Citadel) +
+ kNumCharacterRects * 8 +
+ kNumCharacters * 5 +
+ kNumAreas * (sizeof(Area) - 4) +
+ 64 * 2 +
+ 64 * 2 +
+ kNumActionCursors;
if (f.open("cryo.dat")) {
const int dataSize = f.size() - 8 - 1; // CRYODATA + version
@@ -4745,8 +4781,8 @@ void EdenGame::loadpermfiles() {
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");
+ if (dataSize != expectedDataSize)
+ error("Mismatching data in aux data file (got %d, expected %d)", dataSize, expectedDataSize);
} else
error("Can not load aux data");
@@ -4763,7 +4799,7 @@ void EdenGame::loadpermfiles() {
_gameIcons[i]._objectId = f.readUint32LE();
}
- for (int i = 0; i <kNumRooms; i++) {
+ for (int i = 0; i < kNumRooms; i++) {
_gameRooms[i]._id = f.readByte();
for (int j = 0; j < 4; j++)
_gameRooms[i]._exits[j] = f.readByte();
@@ -4790,7 +4826,91 @@ void EdenGame::loadpermfiles() {
}
// Read the common static data
- // TODO
+
+ for (int i = 0; i < kNumFollowers; i++) {
+ followerList[i]._id = f.readSByte();
+ followerList[i]._spriteNum = f.readSByte();
+ followerList[i].sx = f.readSint16LE();
+ followerList[i].sy = f.readSint16LE();
+ followerList[i].ex = f.readSint16LE();
+ followerList[i].ey = f.readSint16LE();
+ followerList[i]._spriteBank = f.readSint16LE();
+ followerList[i].ff_C = f.readSint16LE();
+ followerList[i].ff_E = f.readSint16LE();
+ }
+
+ f.read(kLabyrinthPath, kNumLabyrinthPath);
+ f.read(kDinoSpeedForCitaLevel, kNumDinoSpeedForCitaLevel);
+ f.read(kTabletView, kNumTabletView);
+ f.read(kPersoRoomBankTable, kNumPersoRoomBankTable);
+ f.read(gotos, kNumGotos * sizeof(Goto));
+
+ for (int i = 0; i < kNumObjects; i++) {
+ _objects[i]._id = f.readByte();
+ _objects[i]._flags = f.readByte();
+ _objects[i]._locations = f.readUint32LE();
+ _objects[i]._itemMask = f.readUint16LE();
+ _objects[i]._powerMask = f.readUint16LE();
+ _objects[i]._count = f.readSint16LE();
+ }
+
+ for (int i = 0; i < kNumObjectLocations; i++) {
+ kObjectLocations[i] = f.readUint16LE();
+ }
+
+ for (int i = 0; i < kNumPersons; i++) {
+ kPersons[i]._roomNum = f.readUint16LE();
+ kPersons[i]._actionId = f.readUint16LE();
+ kPersons[i]._partyMask = f.readUint16LE();
+ kPersons[i]._id = f.readByte();
+ kPersons[i]._flags = f.readByte();
+ kPersons[i]._roomBankId = f.readByte();
+ kPersons[i]._spriteBank = f.readByte();
+ kPersons[i]._items = f.readUint16LE();
+ kPersons[i]._powers = f.readUint16LE();
+ kPersons[i]._targetLoc = f.readByte();
+ kPersons[i]._lastLoc = f.readByte();
+ kPersons[i]._speed = f.readByte();
+ kPersons[i]._steps = f.readByte();
+ }
+
+ for (int i = 0; i < kNumCitadel; i++) {
+ _citadelList[i]._id = f.readSint16LE();
+ for (int j = 0; j < 8; j++)
+ _citadelList[i]._bank[j] = f.readSint16LE();
+ for (int j = 0; j < 8; j++)
+ _citadelList[i]._video[j] = f.readSint16LE();
+ }
+
+ for (int i = 0; i < kNumCharacterRects; i++) {
+ _characterRects[i].left = f.readSint16LE();
+ _characterRects[i].top = f.readSint16LE();
+ _characterRects[i].right = f.readSint16LE();
+ _characterRects[i].bottom = f.readSint16LE();
+ }
+
+ f.read(_characterArray, kNumCharacters * 5);
+
+ for (int i = 0; i < kNumAreas; i++) {
+ kAreasTable[i]._num = f.readByte();
+ kAreasTable[i]._type = f.readByte();
+ kAreasTable[i]._flags = f.readUint16LE();
+ kAreasTable[i]._firstRoomIdx = f.readUint16LE();
+ kAreasTable[i]._citadelLevel = f.readByte();
+ kAreasTable[i]._placeNum = f.readByte();
+ kAreasTable[i]._citadelRoomPtr = nullptr;
+ kAreasTable[i]._visitCount = f.readSint16LE();
+ }
+
+ for (int i = 0; i < 64; i++) {
+ tab_2CEF0[i] = f.readSint16LE();
+ }
+
+ for (int i = 0; i < 64; i++) {
+ tab_2CF70[i] = f.readSint16LE();
+ }
+
+ f.read(kActionCursors, kNumActionCursors);
f.close();
diff --git a/engines/cryo/eden.h b/engines/cryo/eden.h
index b6d8f25..1abc364 100644
--- a/engines/cryo/eden.h
+++ b/engines/cryo/eden.h
@@ -576,7 +576,7 @@ private:
int _lastAnimFrameNumb;
int _curAnimFrameNumb;
int _lastAnimTicks;
- prect_t *_curCharacterRect;
+ Common::Rect *_curCharacterRect;
int16 _numAnimFrames;
int16 _maxPersoDesc;
int16 _numImgDesc;
@@ -737,6 +737,32 @@ private:
uint8 tab_2CB1E[8][4];
const unsigned int kMaxMusicSize; // largest .mus file size
+
+ // Loaded from cryo.dat
+ Follower followerList[15];
+ byte kLabyrinthPath[70];
+ char kDinoSpeedForCitaLevel[16];
+ char kTabletView[12];
+ char kPersoRoomBankTable[84]; // special character backgrounds for specific rooms
+
+ // Loaded from cryo.dat - Area transition descriptors
+ Goto gotos[130];
+ object_t _objects[42];
+ uint16 kObjectLocations[45];
+ perso_t kPersons[58];
+ Citadel _citadelList[7];
+
+ // Loaded from cryo.dat
+ Common::Rect _characterRects[19];
+ byte _characterArray[20][5];
+ Area kAreasTable[12];
+ int16 tab_2CEF0[64];
+ int16 tab_2CF70[64];
+ byte kActionCursors[299];
+
+ float _translationZ = -3400;
+ float flt_2DF80 = -3400;
+ float flt_2DF84 = 200;
};
}
diff --git a/engines/cryo/module.mk b/engines/cryo/module.mk
index d0eae37..aa9649f 100644
--- a/engines/cryo/module.mk
+++ b/engines/cryo/module.mk
@@ -7,7 +7,6 @@ MODULE_OBJS = \
detection.o \
eden.o \
sound.o \
- staticdata.o \
video.o
# This module can be built as a plugin
diff --git a/engines/cryo/staticdata.cpp b/engines/cryo/staticdata.cpp
deleted file mode 100644
index ad33ce3..0000000
--- a/engines/cryo/staticdata.cpp
+++ /dev/null
@@ -1,487 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "cryo/defs.h"
-#include "cryo/cryolib.h"
-
-namespace Cryo {
-
-Follower followerList[15] = {
-// char, X, sx, sy, ex, ey,bank,
- { PersonId::pidGregor, 5, 211, 9, 320, 176, 228, 0, 0 },
- { PersonId::pidEloi, 4, 162, 47, 223, 176, 228, 112, 78 },
- { PersonId::pidDina, 3, 55, 0, 172, 176, 228, 90, 16 },
- { PersonId::pidChongOfChamaar, 4, 0, 5, 114, 176, 229, 0, 16 },
- { PersonId::pidKommalaOfKoto, 3, 0, 15, 102, 176, 229, 0, 16 },
- { PersonId::pidUlanOfUlele, 1, 0, 0, 129, 176, 230, 0, 16 },
- { PersonId::pidCabukaOfCantura, 2, 0, 0, 142, 176, 230, 0, 16 },
- { PersonId::pidFuggOfTamara, 0, 0, 17, 102, 176, 230, 0, 16 },
- { PersonId::pidJabber, 2, 0, 6, 134, 176, 228, 0, 16 },
- { PersonId::pidShazia, 1, 90, 17, 170, 176, 228, 50, 22 },
- { PersonId::pidThugg, 0, 489, 8, 640, 176, 228, 160, 24 },
- { PersonId::pidMungo, 5, 361, 0, 517, 176, 229, 0, 16 },
- { PersonId::pidMonk, 0, 419, 22, 569, 176, 229, 100, 30 },
- { PersonId::pidEve, 1, 300, 28, 428, 176, 229, 0, 38 },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1 }
-};
-
-byte kLabyrinthPath[70] = {
-// each nibble tells which direction to choose to exit the labyrinth
- 0x11, 0x11, 0x11, 0x22, 0x33, 0x55, 0x25, 0x44, 0x25, 0x11, 0x11, 0x11,
- 0x11, 0x35, 0x55, 0x45, 0x45, 0x44, 0x44, 0x34, 0x44, 0x34, 0x32, 0x52,
- 0x33, 0x23, 0x24, 0x44, 0x24, 0x22, 0x54, 0x22, 0x54, 0x54, 0x44, 0x22,
- 0x22, 0x42, 0x45, 0x22, 0x42, 0x45, 0x35, 0x11, 0x44, 0x34, 0x52, 0x11,
- 0x44, 0x32, 0x55, 0x11, 0x11, 0x33, 0x11, 0x11, 0x53, 0x11, 0x11, 0x53,
- 0x54, 0x24, 0x11, 0x22, 0x25, 0x33, 0x53, 0x54, 0x23, 0x44
-};
-
-char kDinoSpeedForCitaLevel[16] = { 1, 2, 3, 4, 4, 5, 6, 7, 8, 9 };
-
-char kTabletView[12] = { //TODO: make as struct?
- // opposite tablet id, video id
- Objects::obUnused10, 83,
- Objects::obUnused10, 84,
- Objects::obTablet4, 85,
- Objects::obTablet3, 86,
- Objects::obTablet6, 87,
- Objects::obTablet5, 85
-};
-
-// special character backgrounds for specific rooms
-char kPersoRoomBankTable[84] = {
- // first entry is default bank, then pairs of [roomNum, bankNum], terminated by -1
- 0, 3, 33, -1,
- 21, 17, 35, -1,
- 0, 2, 36, -1,
- 22, 9, 38, 3, 39, -1,
- 23, 8, 40, -1,
- 0, 3, 41, 7, 42, -1,
- 25, -1,
- 27, 17, 45, -1,
- 28, 26, 46, -1,
- 29, 51, 48, -1,
- 30, 53, 49, -1,
- 0, 27, 50, -1,
- 32, 17, 51, -1,
- 52, 2, 52, -1,
- -3, 3, -3, -1,
- 31, -1,
- 24, 6, 43, -1,
- 47, -1,
- 0, 2, 64, -1,
- 54, 3, 54, -1,
- 27, -1,
- 26, 17, 45, -1
-};
-
-// area transition descriptors
-Goto gotos[130] = {
-// area, oldarea, vid, time, valleyVid
- { 0, 1, 0, 2, 20 },
- { 0, 1, 162, 3, 168 },
- { 0, 2, 0, 2, 21 },
- { 0, 6, 0, 3, 108 },
- { 0, 9, 151, 3, 0 },
- { 0, 7, 106, 2, 101 },
- { 0, 10, 79, 3, 102 },
- { 0, 12, 0, 3, 0 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 1, 3, 58, 2, 104 },
- { 1, 4, 100, 4, 104 },
- { 1, 5, 107, 6, 104 },
- { 1, 6, 155, 8, 104 },
- { 1, 7, 165, 6, 104 },
- { 1, 8, 169, 6, 104 },
- { 1, 10, 111, 2, 104 },
- { 1, 11, 164, 4, 104 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 1, 3, 161, 3, 102 },
- { 1, 4, 163, 6, 102 },
- { 1, 5, 157, 9, 102 },
- { 1, 9, 160, 9, 102 },
- { 1, 10, 79, 3, 102 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 1, 3, 0, 3, 153 }, // 24
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 3, 1, 154, 2, 103 },
- { 3, 4, 100, 2, 103 },
- { 3, 5, 107, 4, 103 },
- { 3, 6, 155, 6, 103 },
- { 3, 7, 165, 8, 103 },
- { 3, 8, 169, 6, 103 },
- { 3, 10, 111, 4, 103 },
- { 3, 11, 164, 6, 103 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 3, 1, 162, 3, 22 },
- { 3, 4, 163, 6, 22 },
- { 3, 5, 157, 9, 22 },
- { 3, 9, 160, 9, 22 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 3, 1, 0, 3, 166 }, // 40
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 4, 1, 154, 4, 51 },
- { 4, 3, 58, 2, 51 },
- { 4, 5, 107, 2, 51 },
- { 4, 6, 155, 4, 51 },
- { 4, 7, 165, 6, 51 },
- { 4, 8, 169, 8, 51 },
- { 4, 10, 111, 6, 51 },
- { 4, 11, 164, 8, 51 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 4, 1, 162, 3, 109 }, // 51
- { 4, 3, 161, 6, 109 },
- { 4, 5, 157, 9, 109 },
- { 4, 9, 160, 9, 109 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 5, 1, 154, 6, 33 },
- { 5, 3, 58, 4, 33 },
- { 5, 4, 100, 2, 33 },
- { 5, 6, 155, 2, 33 },
- { 5, 7, 165, 4, 33 },
- { 5, 8, 169, 8, 33 },
- { 5, 10, 111, 8, 33 },
- { 5, 11, 164, 8, 33 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 5, 1, 162, 3, 99 }, // 65
- { 5, 3, 161, 6, 99 },
- { 5, 4, 163, 9, 99 },
- { 5, 9, 160, 9, 99 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 9, 1, 162, 3, 167 }, // 70
- { 9, 3, 161, 6, 167 },
- { 9, 4, 163, 9, 167 },
- { 9, 5, 157, 9, 167 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 6, 1, 154, 8, 105 }, // 75
- { 6, 3, 58, 6, 105 },
- { 6, 4, 100, 4, 105 },
- { 6, 5, 107, 2, 105 },
- { 6, 7, 165, 2, 105 },
- { 6, 8, 169, 10, 105 },
- { 6, 10, 111, 6, 105 },
- { 6, 11, 164, 8, 105 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 7, 1, 154, 4, 158 }, // 84
- { 7, 3, 58, 6, 158 },
- { 7, 4, 100, 6, 158 },
- { 7, 5, 107, 4, 158 },
- { 7, 6, 155, 2, 158 },
- { 7, 8, 169, 8, 158 },
- { 7, 10, 111, 4, 158 },
- { 7, 11, 164, 6, 158 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 8, 1, 154, 2, 159 }, // 93
- { 8, 3, 58, 4, 159 },
- { 8, 4, 100, 6, 159 },
- { 8, 5, 107, 8, 159 },
- { 8, 6, 155, 10, 159 },
- { 8, 7, 165, 8, 159 },
- { 8, 10, 111, 6, 159 },
- { 8, 11, 164, 4, 159 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 10, 1, 154, 2, 77 }, // 102
- { 10, 3, 58, 4, 77 },
- { 10, 4, 100, 6, 77 },
- { 10, 5, 107, 8, 77 },
- { 10, 6, 155, 6, 77 },
- { 10, 7, 165, 4, 77 },
- { 10, 8, 169, 6, 77 },
- { 10, 11, 164, 4, 77 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 11, 1, 154, 2, 80 }, // 111
- { 11, 3, 58, 4, 80 },
- { 11, 4, 100, 6, 80 },
- { 11, 5, 107, 8, 80 },
- { 11, 6, 155, 8, 80 },
- { 11, 7, 165, 6, 80 },
- { 11, 8, 169, 2, 80 },
- { 11, 10, 111, 4, 80 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
- { 12, 1, 154, 8, 56 }, // 120
- { 12, 3, 58, 4, 56 },
- { 12, 4, 100, 4, 56 },
- { 12, 5, 107, 6, 56 },
- { 12, 6, 155, 8, 56 },
- { 12, 7, 165, 10, 56 },
- { 12, 8, 169, 4, 56 },
- { 12, 10, 111, 10, 56 },
- { 12, 11, 164, 6, 56 },
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
-};
-
-object_t _objects[42] = {
- //id,fl,loc,masklow,maskhi,ct
- { 1, 0, 3, 1, 0, 0}, // Eve's Way Stone
- { 2, 0, 3, 2, 0, 0}, // Thau's Seashell
- { 3, 0, 3, 4, 0, 0}, // Talisman of bravery
- { 4, 0, 3, 8, 0, 0}, // An old tooth. Very old! Whoever lost it most certainly has no further use for it!
- { 5, 0, 0, 0x10, 0, 0}, // Prism
- { 6, 0, 3, 0, 0, 0}, // Flute
- { 7, 0, 3, 0x4000, 0, 0}, // Apple
- { 8, 0, 4, 0x1000, 0, 0}, // Egg of Destiny
- { 9, 0, 3, 0x800, 0, 0}, // Root
- { 10, 0, 3, 0, 0, 0}, // ???
- { 11, 0, 6, 0, 0, 0}, // Mushroom
- { 12, 0, 13, 0, 0, 0}, // Poisonous Mushroom
- { 13, 0, 2, 0x400, 0, 0}, // Graa's Knife
- { 14, 0, 22, 0, 0, 0}, // Empty Nest
- { 15, 0, 26, 0, 0, 0}, // Full Nest
- { 16, 0, 33, 0x20, 0, 0}, // Gold
- { 17, 0, 3, 0, 0, 0}, // Sign of Shadow Mistress (moon stone)
- { 18, 0, 3, 0, 0, 0}, // Sign of Mother of all (bag of soil)
- { 19, 0, 40, 0, 0, 0}, // Sign of the life-giving (sun star)
- { 20, 0, 20, 0x200, 0, 0}, // King's Horn
- { 21, 0, 3, 0, 0, 0}, // Golden Sword of Mashaar
- // Masks
- { 22, 0, 3, 0x40, 0, 0}, // Mask of Death
- { 23, 0, 3, 0x80, 0, 0}, // Mask of Bonding
- { 24, 0, 3, 0x100, 0, 0}, // Mask of Birth
- // Objects of power
- { 25, 0, 3, 0, 1, 0}, // Eye in the Storm
- { 26, 0, 3, 0, 2, 0}, // Sky Hammer
- { 27, 0, 3, 0, 4, 0}, // Fire in the Clouds
- { 28, 0, 3, 0, 8, 0}, // Within and Without
- { 29, 0, 3, 0, 0x10, 0}, // Eye in the Cyclone
- { 30, 0, 3, 0, 0x20, 0}, // River that Winds
- // Musical instruments
- { 31, 0, 3, 0, 0x40, 0}, // Trumpet
- { 32, 0, 3, 0, 0x80, 0}, // -- unused (but still has a dialog line)
- { 33, 0, 3, 0, 0x100, 0}, // Drum
- { 34, 0, 3, 0, 0x200, 0}, // -- unused (but still has a dialog line)
- { 35, 0, 3, 0, 0x400, 0}, // -- unused (but still has a dialog line)
- { 36, 0, 3, 0, 0x800, 0}, // Ring
- // Tablets
- { 37, 0, 3, 0, 0, 0}, // Tablet #1 (Mo)
- { 38, 0, 42, 0x2000, 0, 0}, // Tablet #2 (Morkus' Lair)
- { 39, 0, 3, 0, 0, 0}, // Tablet #3 (White Arch?)
- { 40, 0, 3, 0, 0, 0}, // Tablet #4
- { 41, 0, 3, 0, 0, 0}, // Tablet #5
- { 42, 0, 3, 0x8000, 0, 0} // Tablet #6 (Castra)
-};
-
-uint16 kObjectLocations[100] = {
- 0x112, 0xFFFF,
- 0x202, 0xFFFF,
- 0x120, 0xFFFF,
- 0x340, 0x44B, 0x548, 0x640, 0x717, 0x830, 0xFFFF,
- 0x340, 0x44B, 0x548, 0x640, 0x717, 0x830, 0xFFFF,
- 0, 0xFFFF,
- 0x344, 0x53A, 0x831, 0xFFFF,
- 0x331, 0x420, 0x54B, 0x637, 0x716, 0x840, 0xFFFF,
- 0x834A, 0x8430, 0x8531, 0x644, 0x745, 0x838, 0xFFFF,
- 0x510, 0xFFFF,
- 0xC04, 0xFFFF,
- 0xFFFF
-};
-
-perso_t kPersons[] = {
- // room, aid, party mask, id, flags, X,bank,X, X,sprId,sprX,speed, X
- { 0x103, 230, PersonMask::pmGregor, PersonId::pidGregor , 0, 0, 1, 0, 0, 0, 0, 0, 0 },
- { 0x116, 231, PersonMask::pmDina , PersonId::pidDina , 0, 4, 2, 0, 0, 3, 9, 0, 0 },
- { 0x202, 232, PersonMask::pmTau , PersonId::pidTau , 0, 8, 3, 0, 0, 0, 0, 0, 0 },
- { 0x109, 233, PersonMask::pmMonk , PersonId::pidMonk , 0, 12, 4, 0, 0, 6, 52, 0, 0 },
- { 0x108, 234, PersonMask::pmJabber, PersonId::pidJabber , 0, 18, 5, 0, 0, 2, 0, 0, 0 },
- { 0x103, 235, PersonMask::pmEloi , PersonId::pidEloi , 0, 22, 6, 0, 0, 4, 20, 0, 0 },
- { 0x301, 236, PersonMask::pmMungo , PersonId::pidMungo , 0, 28, 8, 0, 0, 11, 45, 0, 0 },
- { 0x628, 237, PersonMask::pmEve , PersonId::pidEve , 0, 30, 10, 0, 0, 7, 35, 0, 0 },
- { 0x81A, 238, PersonMask::pmShazia, PersonId::pidShazia , 0, 34, 11, 0, 0, 1, 11, 0, 0 },
- { 0x330, 239, PersonMask::pmLeader, PersonId::pidChongOfChamaar , 0, 38, 13, 0, 0, 10, 0, 0, 0 },
- { 0x41B, 239, PersonMask::pmLeader, PersonId::pidUlanOfUlele , 0, 46, 15, 0, 0, 13, 0, 0, 0 },
- { 0x53B, 239, PersonMask::pmLeader, PersonId::pidKommalaOfKoto , 0, 42, 14, 0, 0, 9, 0, 0, 0 },
- { 0x711, 239, PersonMask::pmLeader, PersonId::pidCabukaOfCantura , 0, 50, 16, 0, 0, 14, 0, 0, 0 },
- { 0xA02, 239, PersonMask::pmLeader, PersonId::pidMarindaOfEmbalmers, 0, 54, 17, 0, 0, 0, 0, 0, 0 },
- { 0x628, 239, PersonMask::pmLeader, PersonId::pidFuggOfTamara , 0, 62, 18, 0, 0, 12, 0, 0, 0 },
- { 0x801, 239, PersonMask::pmLeader, PersonId::pidChongOfChamaar , 0, 38, 13, 0, 0, 10, 0, 0, 0 },
- { 0x41B, 10, PersonMask::pmQuest , PersonId::pidUlanOfUlele , PersonFlags::pfType2 , 46, 15, 0, 0, 13, 0, 0, 0 },
- { 0x711, 11, PersonMask::pmQuest , PersonId::pidCabukaOfCantura , PersonFlags::pfType2 , 50, 16, 0, 0, 14, 0, 0, 0 },
- { 0x106, 240, PersonMask::pmThugg , PersonId::pidThugg , 0, 64, 7, 0, 0, 0, 61, 0, 0 },
- { 0, 13, 0, PersonId::pidNarrator , 0, 68, 12, 0, 0, 0, 0, 0, 0 },
- { 0x902, 241, PersonMask::pmQuest , PersonId::pidNarrim , 0, 70, 19, 0, 0, 0, 0, 0, 0 },
- { 0xC03, 244, PersonMask::pmMorkus, PersonId::pidMorkus , 0, 74, 20, 0, 0, 0, 0, 0, 0 },
- // dinos in each valley
- { 0x332, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x329, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x33B, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x317, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftVelociraptor, 0, 0, 0, 0, 0, 0, 1, 0 },
- { 0x320, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType12 , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x349, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 },
-
- { 0x429, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x43B, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x422, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftVelociraptor, 0, 0, 0, 0, 0, 0, 1, 0 },
- { 0x432, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 },
-
- { 0x522, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x534, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x515, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pftVelociraptor , 0, 0, 0, 0, 0, 0, 1, 0 },
- { 0x533, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 },
-
- { 0x622, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x630, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x643, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftVelociraptor, 0, 0, 0, 0, 0, 0, 1, 0 },
- { 0x63A, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 },
-
- { 0x737, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x739, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x74A, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftVelociraptor, 0, 0, 0, 0, 0, 0, 1, 0 },
- { 0x726, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 },
-
- { 0x842, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x822, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x828, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pftVelociraptor , 0, 0, 0, 0, 0, 0, 1, 0 },
- { 0x84B, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 },
-
- { 0xB03, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 58, 252, 0, 0, 0, 0, 0, 0 },
- // enemy dinos
- { 0x311, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x410, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x51B, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x618, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x71B, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0x81B, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0xFFFF, 0xFFFF, 0xFFFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFFFF, 0xFFFF, 0xFF, 0xFF, 0xFF, 0xFF},
- { 0x628, 237, PersonMask::pmEve , PersonId::pidEve , 0, 80, 9, 0, 0, 8, 35, 0, 0 },
- { 0x628, 237, PersonMask::pmEve , PersonId::pidEve , 0, 78, 10, 0, 0, 7, 35, 0, 0 }
-};
-
-Citadel _citadelList[7] = {
- { 1, { 163, 182, 0, 0, 124, 147, 193, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0 } },
- { 48, { 285, 286, 0, 0, 287, 288, 284, 0 }, { 114, 115, 0, 0, 116, 117, 113, 0 } },
- { 63, { 290, 291, 0, 0, 292, 293, 289, 0 }, { 119, 120, 0, 0, 121, 122, 118, 0 } },
- { 95, { 295, 296, 0, 0, 297, 298, 294, 0 }, { 124, 125, 0, 0, 126, 127, 123, 0 } },
- { 127, { 300, 301, 0, 0, 302, 303, 299, 0 }, { 129, 130, 0, 0, 131, 132, 128, 0 } },
- { 159, { 305, 306, 0, 0, 307, 308, 304, 0 }, { 134, 135, 0, 0, 136, 137, 133, 0 } },
- { 255, { 310, 311, 0, 0, 312, 313, 309, 0 }, { 139, 140, 0, 0, 141, 142, 138, 0 } }
-};
-
-prect_t _characterRects[19] = { // TODO: just an array of int16s?
- { 93, 69, 223, 176},
- { 102, 86, 162, 126},
- { 88, 103, 168, 163},
- { 116, 66, 192, 176},
- { 129, 92, 202, 153},
- { 60, 95, 160, 176},
- { 155, 97, 230, 145},
- { 100, 77, 156, 145},
- { 110, 78, 170, 156},
- { 84, 76, 166, 162},
- { 57, 77, 125, 114},
- { 93, 69, 223, 175},
- { 93, 69, 223, 176},
- { 93, 69, 223, 176},
- { 154, 54, 245, 138},
- { 200, 50, 261, 116},
- { 70, 84, 162, 176},
- { 125, 101, 222, 172},
- { 188, 83, 251, 158}
-};
-
-byte _characterArray[][5] = { // TODO: struc?
- { 8, 15, 23, 25, 0xFF},
- { 0, 9, 0xFF },
- { 0, 9, 0xFF },
- { 0, 9, 0xFF },
- { 0, 13, 0xFF },
- { 16, 21, 0xFF },
- { 11, 20, 0xFF },
- { 0, 12, 0xFF },
- { 0, 9, 0xFF },
- { 0, 9, 0xFF },
- { 5, 13, 0xFF },
- { 0xFF },
- { 0, 8, 0xFF },
- { 0xFF },
- { 0, 7, 0xFF },
- { 0, 8, 0xFF },
- { 8, 12, 0xFF },
- { 0, 5, 0xFF },
- { 0, 4, 0xFF },
- { 0xFF }
-};
-
-Area kAreasTable[] = {
- { Areas::arMo , AreaType::atCitadel, 0, 0, 0, 1, 0, 0},
- { Areas::arTausCave , AreaType::atCave , 0, 112, 0, 2, 0, 0},
- { Areas::arChamaar , AreaType::atValley , 0, 133, 0, 3, 0, 0},
- { Areas::arUluru , AreaType::atValley , 0, 187, 0, 4, 0, 0},
- { Areas::arKoto , AreaType::atValley , AreaFlags::HasVelociraptors, 236, 0, 5, 0, 0},
- { Areas::arTamara , AreaType::atValley , 0, 288, 0, 6, 0, 0},
- { Areas::arCantura , AreaType::atValley , 0, 334, 0, 7, 0, 0},
- { Areas::arShandovra , AreaType::atValley , 0, 371, 0, 8, 0, 0},
- { Areas::arNarimsCave , AreaType::atCave , 0, 115, 0, 9, 0, 0},
- { Areas::arEmbalmersCave, AreaType::atCave , 0, 118, 0, 10, 0, 0},
- { Areas::arWhiteArch , AreaType::atCave , 0, 122, 0, 11, 0, 0},
- { Areas::arMoorkusLair , AreaType::atCave , 0, 127, 0, 12, 0, 0}
-};
-
-int16 tab_2CEF0[64] = {
- 25, 257, 0, 0, 37, 258, 38, 259, 0, 0, 24, 260, 0, 0, 0, 0,
- 0, 0, 53, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 39, 261, 0, 0, 40, 262, 62, 263, 0, 0, 63, 264, 0, 0, 0, 0,
- 18, 275, 0, 0, 35, 254, 36, 255, 19, 318, 23, 256, 0, 0, 0, 0
-};
-
-int16 tab_2CF70[64] = {
- 65, 266, 0, 0, 66, 267, 67, 268, 0, 0, 68, 269, 0, 0, 0, 0,
- 0, 0, 73, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 69, 270, 0, 0, 70, 271, 71, 272, 0, 0, 72, 273, 0, 0, 0, 0,
- 18, 275, 0, 0, 35, 254, 36, 255, 19, 318, 23, 256, 0, 0, 0, 0,
-};
-
-int16 kActionCursors[299] = {
- 3, 1, 2, 4, 5, 5, 5, 0, 5, 5,
- 5, 5, 5, 3, 2, 5, 5, 5, 3, 2,
- 4, 5, 7, 7, 4, 5, 5, 0, 0, 0,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 0, 0, 0, 0, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 0, 0,
- 0, 0, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 0, 0, 0, 0, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 0, 5, 6,
- 6, 1, 6, 6, 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 0, 0, 6, 6,
- 53, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-float _translationZ = -3400;
-float flt_2DF80 = -3400;
-float flt_2DF84 = 200;
-
-} // End of namespace Cryo
Commit: 6b2ac7c7afc15f89bb0a6694fc323e594a5a471f
https://github.com/scummvm/scummvm/commit/6b2ac7c7afc15f89bb0a6694fc323e594a5a471f
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T16:34:47+02:00
Commit Message:
CRYO: Wrap enums around namespaces, to use EnumName::EnumValue
Changed paths:
devtools/create_cryo/eden.h
diff --git a/devtools/create_cryo/eden.h b/devtools/create_cryo/eden.h
index e9dd6be..dac0766 100644
--- a/devtools/create_cryo/eden.h
+++ b/devtools/create_cryo/eden.h
@@ -62,6 +62,7 @@ struct Follower { // Characters on Mirror screen
int16 ff_E;
};
+namespace PersonId {
enum PersonId {
pidGregor = 0, // The King
pidDina, // Pink dino
@@ -86,7 +87,9 @@ enum PersonId {
pidDinosaur, // different species of friendly dino
pidEnemy // different species of enemy dino
};
+}
+namespace PersonMask {
enum PersonMask {
pmGregor = 1,
pmDina = 2,
@@ -104,7 +107,9 @@ enum PersonMask {
pmEnemy = 0x2000,
pmMorkus = 0x4000
};
+}
+namespace PersonFlags {
enum PersonFlags {
pfType0 = 0,
pftTyrann,
@@ -128,7 +133,9 @@ enum PersonFlags {
pfInParty = 0x40,
pf80 = 0x80
};
+}
+namespace Objects {
enum Objects {
obNone,
obWayStone,
@@ -178,6 +185,7 @@ enum Objects {
obTablet5,
obTablet6
};
+}
struct Goto {
byte _areaNum; // target area
@@ -223,6 +231,7 @@ struct Rect {
int16 left, top, right, bottom;
};
+namespace Areas {
enum Areas {
arMo = 1,
arTausCave,
@@ -237,7 +246,9 @@ enum Areas {
arWhiteArch,
arMoorkusLair
};
+}
+namespace AreaFlags {
enum AreaFlags {
afFlag1 = 1,
afFlag2 = 2,
@@ -253,6 +264,7 @@ enum AreaFlags {
TyrannSighted = 0x4000,
afFlag8000 = 0x8000
};
+}
struct Room {
byte _id;
@@ -277,8 +289,10 @@ struct Area {
int16 _visitCount;
};
+namespace AreaType {
enum AreaType {
atCitadel = 1,
atValley = 2,
atCave = 3
};
+}
Commit: fed7341481ee454a4b656788d91c511414a8ce09
https://github.com/scummvm/scummvm/commit/fed7341481ee454a4b656788d91c511414a8ce09
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T17:10:26+02:00
Commit Message:
CRYO: Use hardcoded values for structs instead of sizeof()
Changed paths:
engines/cryo/eden.cpp
diff --git a/engines/cryo/eden.cpp b/engines/cryo/eden.cpp
index 47cd1e0..49ede20 100644
--- a/engines/cryo/eden.cpp
+++ b/engines/cryo/eden.cpp
@@ -4603,7 +4603,7 @@ void EdenGame::loadIconFile(uint16 num, Icon *buffer) {
debug("* Loading icon - Resource %d (%s) at 0x%X, %d bytes", num, file->_name.c_str(), offs, size);
_bigfile.seek(offs, SEEK_SET);
- int count = size / sizeof(Icon);
+ int count = size / 14; // sizeof(Icon)
for (int i = 0; i < count; i++) {
if (_vm->getPlatform() == Common::kPlatformMacintosh) {
buffer[i].sx = _bigfile.readSint16BE();
@@ -4638,7 +4638,7 @@ void EdenGame::loadRoomFile(uint16 num, Room *buffer) {
debug("* Loading room - Resource %d (%s) at 0x%X, %d bytes", num, file->_name.c_str(), offs, size);
_bigfile.seek(offs, SEEK_SET);
- int count = size / sizeof(Room);
+ int count = size / 11; // sizeof(Room)
for (int i = 0; i < count; i++) {
buffer[i]._id = _bigfile.readByte();
for (int j = 0; j < 4; j++)
@@ -4750,21 +4750,21 @@ void EdenGame::loadpermfiles() {
const int kNumActionCursors = 299;
const int expectedDataSize =
- kNumIcons * sizeof(Icon) +
- kNumRooms * sizeof(Room) +
- kNumFollowers * sizeof(Follower) +
+ kNumIcons * 14 + // sizeof(Icon)
+ kNumRooms * 11 + // sizeof(Room)
+ kNumFollowers * 16 + // sizeof(Follower)
kNumLabyrinthPath +
kNumDinoSpeedForCitaLevel +
kNumTabletView +
kNumPersoRoomBankTable +
- kNumGotos * sizeof(Goto) +
- kNumObjects * sizeof(object_t) +
+ kNum_gotos * 5 + // sizeof(Goto)
+ kNumObjects * 10 + // sizeof(object_t)
kNumObjectLocations * 2 +
- kNumPersons * sizeof(perso_t) +
- kNumCitadel * sizeof(Citadel) +
+ kNumPersons * 18 + // sizeof(perso_t)
+ kNumCitadel * 6 + // sizeof(Citadel)
kNumCharacterRects * 8 +
kNumCharacters * 5 +
- kNumAreas * (sizeof(Area) - 4) +
+ kNumAreas * 10 + // (sizeof(Area) - 4)
64 * 2 +
64 * 2 +
kNumActionCursors;
@@ -4819,7 +4819,7 @@ void EdenGame::loadpermfiles() {
convertMacToPC();
// Skip the icons and rooms of the DOS version
- f.skip(kNumIcons * sizeof(Icon) + kNumRooms * sizeof(Room));
+ f.skip(kNumIcons * 14 + kNumRooms * 11);
break;
default:
error("Unsupported platform");
@@ -4843,7 +4843,7 @@ void EdenGame::loadpermfiles() {
f.read(kDinoSpeedForCitaLevel, kNumDinoSpeedForCitaLevel);
f.read(kTabletView, kNumTabletView);
f.read(kPersoRoomBankTable, kNumPersoRoomBankTable);
- f.read(gotos, kNumGotos * sizeof(Goto));
+ f.read(gotos, kNumGotos * 5); // sizeof(Goto)
for (int i = 0; i < kNumObjects; i++) {
_objects[i]._id = f.readByte();
Commit: 37c53cdf49209a582cc661b3c300c5b067ced8b8
https://github.com/scummvm/scummvm/commit/37c53cdf49209a582cc661b3c300c5b067ced8b8
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T17:16:26+02:00
Commit Message:
CRYO: Move more static data to cryo.dat (1/2)
Changed paths:
devtools/create_cryo/create_cryo_dat.cpp
devtools/create_cryo/eden_static.h
diff --git a/devtools/create_cryo/create_cryo_dat.cpp b/devtools/create_cryo/create_cryo_dat.cpp
index a3fefc2..875acad 100644
--- a/devtools/create_cryo/create_cryo_dat.cpp
+++ b/devtools/create_cryo/create_cryo_dat.cpp
@@ -178,6 +178,8 @@ static void emitStatic(FILE *f) {
}
fwrite(kActionCursors, 1, kNumActionCursors, f);
+ fwrite(mapMode, 1, 12, f);
+ fwrite(cubeTextureCoords, 6 * 2 * 3 * 2, 3, f);
}
static int emitData(char *outputFilename) {
diff --git a/devtools/create_cryo/eden_static.h b/devtools/create_cryo/eden_static.h
index fe4ff20..4bff896 100644
--- a/devtools/create_cryo/eden_static.h
+++ b/devtools/create_cryo/eden_static.h
@@ -477,3 +477,65 @@ byte kActionCursors[299] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0
};
+
+byte mapMode[12] = { 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 2, 0 };
+
+// Cube faces to texture coords mapping
+// each entry is num_polys(6) * num_faces_per_poly(2) * vertex_per_face(3) * uv(2)
+byte cubeTextureCoords[3][6 * 2 * 3 * 2] = {
+ {
+ 32, 32, 0, 32, 0, 0,
+ 32, 32, 0, 0, 32, 0,
+
+ 0, 32, 0, 0, 32, 0,
+ 0, 32, 32, 0, 32, 32,
+
+ 32, 32, 0, 32, 0, 0,
+ 32, 32, 0, 0, 32, 0,
+
+ 32, 0, 32, 32, 0, 32,
+ 32, 0, 0, 32, 0, 0,
+
+ 0, 0, 32, 0, 32, 32,
+ 0, 0, 32, 32, 0, 32,
+
+ 0, 32, 0, 0, 32, 0,
+ 0, 32, 32, 0, 32, 32
+ }, {
+ 32, 32, 0, 32, 0, 0,
+ 32, 32, 0, 0, 32, 0,
+
+ 32, 0, 32, 32, 0, 32,
+ 32, 0, 0, 32, 0, 0,
+
+ 32, 0, 32, 32, 0, 32,
+ 32, 0, 0, 32, 0, 0,
+
+ 0, 32, 0, 0, 32, 0,
+ 0, 32, 32, 0, 32, 32,
+
+ 32, 0, 32, 32, 0, 32,
+ 32, 0, 0, 32, 0, 0,
+
+ 32, 0, 32, 32, 0, 32,
+ 32, 0, 0, 32, 0, 0
+ }, {
+ 30, 30, 2, 30, 2, 2,
+ 30, 30, 2, 2, 30, 2,
+
+ 2, 30, 2, 2, 30, 2,
+ 2, 30, 30, 2, 30, 30,
+
+ 30, 30, 2, 30, 2, 2,
+ 30, 30, 2, 2, 30, 2,
+
+ 30, 2, 30, 30, 2, 30,
+ 30, 2, 2, 30, 2, 2,
+
+ 2, 2, 30, 2, 30, 30,
+ 2, 2, 30, 30, 2, 30,
+
+ 2, 30, 2, 2, 30, 2,
+ 2, 30, 30, 2, 30, 30
+ }
+};
\ No newline at end of file
Commit: 05c99c5b0d2103bbbceeb68520484cc5ecbd0360
https://github.com/scummvm/scummvm/commit/05c99c5b0d2103bbbceeb68520484cc5ecbd0360
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T17:16:45+02:00
Commit Message:
CRYO: Move more static data to cryo.dat (2/2)
Changed paths:
engines/cryo/eden.cpp
engines/cryo/eden.h
diff --git a/engines/cryo/eden.cpp b/engines/cryo/eden.cpp
index 49ede20..b0175e3 100644
--- a/engines/cryo/eden.cpp
+++ b/engines/cryo/eden.cpp
@@ -4911,6 +4911,8 @@ void EdenGame::loadpermfiles() {
}
f.read(kActionCursors, kNumActionCursors);
+ f.read(_mapMode, 12);
+ f.read(_cubeTextureCoords, 3 * 6 * 2 * 3 * 2);
f.close();
@@ -8829,77 +8831,15 @@ int EdenGame::nextVal(char **ptr, char *error) {
}
void EdenGame::selectMap(int16 num) {
- static const char mapMode[12] = { 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 2, 0 };
- // Cube faces to texture coords mapping
- // each entry is num_polys(6) * num_faces_per_poly(2) * vertex_per_face(3) * uv(2)
-
- static const int16 cube_texcoords[3][6 * 2 * 3 * 2] = {
- {
- 32, 32, 0, 32, 0, 0,
- 32, 32, 0, 0, 32, 0,
-
- 0, 32, 0, 0, 32, 0,
- 0, 32, 32, 0, 32, 32,
-
- 32, 32, 0, 32, 0, 0,
- 32, 32, 0, 0, 32, 0,
-
- 32, 0, 32, 32, 0, 32,
- 32, 0, 0, 32, 0, 0,
-
- 0, 0, 32, 0, 32, 32,
- 0, 0, 32, 32, 0, 32,
-
- 0, 32, 0, 0, 32, 0,
- 0, 32, 32, 0, 32, 32
- }, {
- 32, 32, 0, 32, 0, 0,
- 32, 32, 0, 0, 32, 0,
-
- 32, 0, 32, 32, 0, 32,
- 32, 0, 0, 32, 0, 0,
-
- 32, 0, 32, 32, 0, 32,
- 32, 0, 0, 32, 0, 0,
-
- 0, 32, 0, 0, 32, 0,
- 0, 32, 32, 0, 32, 32,
-
- 32, 0, 32, 32, 0, 32,
- 32, 0, 0, 32, 0, 0,
-
- 32, 0, 32, 32, 0, 32,
- 32, 0, 0, 32, 0, 0
- }, {
- 30, 30, 2, 30, 2, 2,
- 30, 30, 2, 2, 30, 2,
-
- 2, 30, 2, 2, 30, 2,
- 2, 30, 30, 2, 30, 30,
-
- 30, 30, 2, 30, 2, 2,
- 30, 30, 2, 2, 30, 2,
-
- 30, 2, 30, 30, 2, 30,
- 30, 2, 2, 30, 2, 2,
-
- 2, 2, 30, 2, 30, 30,
- 2, 2, 30, 30, 2, 30,
-
- 2, 30, 2, 2, 30, 2,
- 2, 30, 30, 2, 30, 30
- }
- };
-
_cursCurPCMap = num;
int16 k = 0;
- int mode = mapMode[num];
+ int mode = _mapMode[num];
int16 x = (num & 7) * 32;
int16 y = (num & 0x18) * 4;
for (int i = 0; i < 6 * 2; i++) {
for (int j = 0; j < 3; j++) {
- _cube._faces[i]->_uv[j * 2 ] = x + cube_texcoords[mode][k++];
- _cube._faces[i]->_uv[j * 2 + 1] = y + cube_texcoords[mode][k++];
+ _cube._faces[i]->_uv[j * 2 ] = x + _cubeTextureCoords[mode][k++];
+ _cube._faces[i]->_uv[j * 2 + 1] = y + _cubeTextureCoords[mode][k++];
}
}
}
diff --git a/engines/cryo/eden.h b/engines/cryo/eden.h
index 1abc364..79ea63a 100644
--- a/engines/cryo/eden.h
+++ b/engines/cryo/eden.h
@@ -759,7 +759,8 @@ private:
int16 tab_2CEF0[64];
int16 tab_2CF70[64];
byte kActionCursors[299];
-
+ byte _mapMode[12];
+ byte _cubeTextureCoords[3][6 * 2 * 3 * 2];
float _translationZ = -3400;
float flt_2DF80 = -3400;
float flt_2DF84 = 200;
Commit: 24a4c231dabcea6d35c909a1731e59af209f4496
https://github.com/scummvm/scummvm/commit/24a4c231dabcea6d35c909a1731e59af209f4496
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T17:20:54+02:00
Commit Message:
CRYO: Rename variables to conform to our formatting guidelines
Changed paths:
engines/cryo/defs.h
engines/cryo/eden.cpp
engines/cryo/eden.h
diff --git a/engines/cryo/defs.h b/engines/cryo/defs.h
index e646b9f..7952fef 100644
--- a/engines/cryo/defs.h
+++ b/engines/cryo/defs.h
@@ -312,7 +312,7 @@ struct perso_t {
uint16 _partyMask; // party bit mask
byte _id; // character
byte _flags; // flags and kind
- byte _roomBankId;// index in kPersoRoomBankTable for specific room banks
+ byte _roomBankId;// index in _personRoomBankTable for specific room banks
byte _spriteBank; // sprite bank
uint16 _items; // inventory
uint16 _powers; // obj of power bitmask
@@ -340,7 +340,7 @@ enum ObjectFlags {
struct object_t {
byte _id;
byte _flags;
- int _locations; // index in kObjectLocations
+ int _locations; // index in _objectLocations
uint16 _itemMask;
uint16 _powerMask; // object of power bitmask
int16 _count;
diff --git a/engines/cryo/eden.cpp b/engines/cryo/eden.cpp
index b0175e3..b6064c7 100644
--- a/engines/cryo/eden.cpp
+++ b/engines/cryo/eden.cpp
@@ -302,7 +302,7 @@ void EdenGame::characterInMirror() {
displayFollower(suiveur, suiveur->sx, suiveur->sy);
for (; suiveur->_id != -1; suiveur++) {
perso_t *perso;
- for (perso = kPersons; perso != &kPersons[PER_UNKN_156]; perso++) {
+ for (perso = _persons; perso != &_persons[PER_UNKN_156]; perso++) {
if (perso->_id != suiveur->_id)
continue;
@@ -358,7 +358,7 @@ void EdenGame::flipMode() {
if (_personTalking) {
endCharacterSpeech();
if (_globals->_displayFlags == DisplayFlags::dfPerson) {
- if (_globals->_characterPtr == &kPersons[PER_TAU] && _globals->_phaseNum >= 80)
+ if (_globals->_characterPtr == &_persons[PER_TAU] && _globals->_phaseNum >= 80)
displaySubtitles();
else {
getDataSync();
@@ -510,7 +510,7 @@ void EdenGame::deplaval(uint16 roomNum) {
if (c1 == 0xFF) {
_globals->_eventType = EventType::etEventE;
showEvents();
- if (!kPersons[PER_ELOI]._roomNum && checkEloiReturn())
+ if (!_persons[PER_ELOI]._roomNum && checkEloiReturn())
setChrono(800);
return;
}
@@ -526,9 +526,9 @@ void EdenGame::deplaval(uint16 roomNum) {
newRoomNum |= 1;
_globals->_newRoomNum = newRoomNum;
if (newAreaNum == Areas::arTausCave)
- gotoPlace(&gotos[0]);
+ gotoPlace(&_gotos[0]);
else {
- for (Goto *go = gotos + 1; go->_curAreaNum != 0xFF; go++) {
+ for (Goto *go = _gotos + 1; go->_curAreaNum != 0xFF; go++) {
if (go->_curAreaNum == curAreaNum) {
gotoPlace(go);
break;
@@ -707,7 +707,7 @@ void EdenGame::actionChoose() {
// Original name: dinaparle
void EdenGame::handleDinaDialog() {
- perso_t *perso = &kPersons[PER_DINA];
+ perso_t *perso = &_persons[PER_DINA];
if (perso->_partyMask & (_globals->_party | _globals->_partyOutside)) {
if (_globals->_frescoNumber < 3)
_globals->_frescoNumber = 3;
@@ -873,7 +873,7 @@ void EdenGame::actionGetTablet() {
// Original name: voirlac
void EdenGame::actionLookLake() {
- perso_t *perso = &kPersons[PER_MORKUS];
+ perso_t *perso = &_persons[PER_MORKUS];
Room *room = _globals->_roomPtr;
Area *area = _globals->_areaPtr;
int16 vid = _globals->_curObjectId == Objects::obApple ? 81 : 54;
@@ -1610,7 +1610,7 @@ void EdenGame::drawTopScreen() { // Draw top bar (location / party / map)
noclipax(36, 83, 0);
noclipax(_globals->_areaPtr->_num - 1, 0, 0);
noclipax(23, 145, 0);
- for (perso_t *perso = &kPersons[PER_DINA]; perso != &kPersons[PER_UNKN_156]; perso++) {
+ for (perso_t *perso = &_persons[PER_DINA]; perso != &_persons[PER_UNKN_156]; perso++) {
if ((perso->_flags & PersonFlags::pfInParty) && !(perso->_flags & PersonFlags::pf80))
noclipax(perso->_targetLoc + 18, perso->_lastLoc + 120, 0);
}
@@ -1624,7 +1624,7 @@ void EdenGame::drawTopScreen() { // Draw top bar (location / party / map)
void EdenGame::displayValleyMap() { // Draw mini-map
if (_globals->_areaPtr->_type == AreaType::atValley) {
noclipax(_globals->_areaPtr->_num + 9, 266, 1);
- for (perso_t *perso = &kPersons[PER_UNKN_18C]; perso->_roomNum != 0xFFFF; perso++) {
+ for (perso_t *perso = &_persons[PER_UNKN_18C]; perso->_roomNum != 0xFFFF; perso++) {
if (((perso->_roomNum >> 8) == _globals->_areaNum)
&& !(perso->_flags & PersonFlags::pf80) && (perso->_flags & PersonFlags::pf20))
displayMapMark(33, perso->_roomNum & 0xFF);
@@ -1716,7 +1716,7 @@ void EdenGame::saveAdamMapMark(int16 x, int16 y) {
bool EdenGame::istrice(int16 roomNum) {
char loc = roomNum & 0xFF;
int16 area = roomNum & 0xFF00;
- for (perso_t *perso = &kPersons[PER_UNKN_18C]; perso != &kPersons[PER_UNKN_372]; perso++) {
+ for (perso_t *perso = &_persons[PER_UNKN_18C]; perso != &_persons[PER_UNKN_372]; perso++) {
if ((perso->_flags & PersonFlags::pf80) || (perso->_flags & PersonFlags::pfTypeMask) != PersonFlags::pftTriceraptor)
continue;
if (perso->_roomNum == (area | (loc - 16)))
@@ -1735,7 +1735,7 @@ bool EdenGame::istyran(int16 roomNum) {
char loc = roomNum & 0xFF;
int16 area = roomNum & 0xFF00;
// TODO: orig bug: this ptr is not initialized when first called from getsalle
- // PC version scans kPersons[] directly and is not affected
+ // PC version scans _persons[] directly and is not affected
if (!_tyranPtr)
return false;
@@ -1757,7 +1757,7 @@ bool EdenGame::istyran(int16 roomNum) {
void EdenGame::istyranval(Area *area) {
byte areaNum = area->_num;
area->_flags &= ~AreaFlags::HasTyrann;
- for (perso_t *perso = &kPersons[PER_UNKN_372]; perso->_roomNum != 0xFFFF; perso++) {
+ for (perso_t *perso = &_persons[PER_UNKN_372]; perso->_roomNum != 0xFFFF; perso++) {
if (perso->_flags & PersonFlags::pf80)
continue;
@@ -1808,7 +1808,7 @@ bool EdenGame::canMoveThere(char loc, perso_t *perso) {
continue;
if (!(room->_flags & RoomFlags::rf01))
return false;
- for (perso = &kPersons[PER_UNKN_18C]; perso->_roomNum != 0xFFFF; perso++) {
+ for (perso = &_persons[PER_UNKN_18C]; perso->_roomNum != 0xFFFF; perso++) {
if (perso->_flags & PersonFlags::pf80)
continue;
if (perso->_roomNum == roomNum)
@@ -1849,7 +1849,7 @@ void EdenGame::scrambleDirections() {
}
bool EdenGame::naitredino(char persoType) {
- for (perso_t *perso = &kPersons[PER_MORKUS]; (++perso)->_roomNum != 0xFFFF;) {
+ for (perso_t *perso = &_persons[PER_MORKUS]; (++perso)->_roomNum != 0xFFFF;) {
char areaNum = perso->_roomNum >> 8;
if (areaNum != _globals->_citadelAreaNum)
continue;
@@ -1879,7 +1879,7 @@ void EdenGame::newCitadel(char area, int16 level, Room *room) {
// Original name: citaevol
void EdenGame::evolveCitadel(int16 level) {
Room *room = _globals->_curAreaPtr->_citadelRoomPtr;
- perso_t *perso = &kPersons[PER_UNKN_372];
+ perso_t *perso = &_persons[PER_UNKN_372];
byte loc = room->_location;
if (level >= 80 && !istrice((_globals->_citadelAreaNum << 8) | loc)) {
room->_level = 79;
@@ -1899,7 +1899,7 @@ void EdenGame::evolveCitadel(int16 level) {
}
room->_level = level;
newCitadel(_globals->_citadelAreaNum, level, room);
- byte speed = kDinoSpeedForCitaLevel[room->_level >> 4];
+ byte speed = _dinoSpeedForCitadelLevel[room->_level >> 4];
for (; perso->_roomNum != 0xFFFF; perso++) {
if (perso->_flags & PersonFlags::pf80)
continue;
@@ -1910,7 +1910,7 @@ void EdenGame::evolveCitadel(int16 level) {
// Original name: citacapoute
void EdenGame::destroyCitadelRoom(int16 roomNum) {
- perso_t *perso = &kPersons[PER_UNKN_18C];
+ perso_t *perso = &_persons[PER_UNKN_18C];
Room *room = _globals->_curAreaPtr->_citadelRoomPtr;
room->_flags |= RoomFlags::rf01;
room->_flags &= ~RoomFlags::rfHasCitadel;
@@ -1974,7 +1974,7 @@ void EdenGame::buildCitadel() {
Room *room = _globals->_curAreaPtr->_citadelRoomPtr;
byte loc = room->_location;
- _tyranPtr = &kPersons[PER_UNKN_372];
+ _tyranPtr = &_persons[PER_UNKN_372];
if (istyran((_globals->_citadelAreaNum << 8) | loc)) {
if (!(_globals->_curAreaPtr->_flags & AreaFlags::TyrannSighted)) {
addInfo(_globals->_citadelAreaNum + ValleyNews::vnTyrannIn);
@@ -2041,7 +2041,7 @@ void EdenGame::moveDino(perso_t *perso) {
// Original name: deplaalldino
void EdenGame::moveAllDino() {
- for (perso_t *perso = &kPersons[PER_UNKN_18C]; perso->_roomNum != 0xFFFF; perso++) {
+ for (perso_t *perso = &_persons[PER_UNKN_18C]; perso->_roomNum != 0xFFFF; perso++) {
if (((perso->_roomNum >> 8) & 0xFF) != _globals->_citadelAreaNum)
continue;
if ((perso->_flags & PersonFlags::pf80) || !perso->_targetLoc)
@@ -2060,7 +2060,7 @@ void EdenGame::moveAllDino() {
void EdenGame::newValley() {
static int16 roomNumList[] = { 2075, 2080, 2119, -1};
- perso_t *perso = &kPersons[PER_UNKN_372];
+ perso_t *perso = &_persons[PER_UNKN_372];
int16 *ptr = roomNumList;
int16 roomNum = *ptr++;
while (roomNum != -1) {
@@ -2071,7 +2071,7 @@ void EdenGame::newValley() {
roomNum = *ptr++;
}
perso->_roomNum = 0xFFFF;
- kAreasTable[7]._flags |= AreaFlags::HasTyrann;
+ _areasTable[7]._flags |= AreaFlags::HasTyrann;
_globals->_worldHasTyran = 32;
}
@@ -2140,7 +2140,7 @@ void EdenGame::placeVava(Area *area) {
}
void EdenGame::vivredino() {
- for (perso_t *perso = &kPersons[PER_UNKN_18C]; perso->_roomNum != 0xFFFF; perso++) {
+ for (perso_t *perso = &_persons[PER_UNKN_18C]; perso->_roomNum != 0xFFFF; perso++) {
if (((perso->_roomNum >> 8) & 0xFF) != _globals->_citadelAreaNum)
continue;
if (perso->_flags & PersonFlags::pf80)
@@ -2175,7 +2175,7 @@ void EdenGame::vivredino() {
case PersonFlags::pftVelociraptor:
if (perso->_flags & PersonFlags::pf10) {
if (perso->_roomNum == _globals->_roomNum) {
- perso_t *perso2 = &kPersons[PER_UNKN_372];
+ perso_t *perso2 = &_persons[PER_UNKN_372];
bool found = false;
for (; perso2->_roomNum != 0xFFFF; perso2++) {
if ((perso->_roomNum & ~0xFF) == (perso2->_roomNum & ~0xFF)) {
@@ -2190,7 +2190,7 @@ void EdenGame::vivredino() {
if (found)
continue;
} else {
- _tyranPtr = &kPersons[PER_UNKN_372];
+ _tyranPtr = &_persons[PER_UNKN_372];
if (istyran(perso->_roomNum)) {
if (_globals->_phaseNum < 481 && (perso->_powers & (1 << (_globals->_citadelAreaNum - 3)))) {
_tyranPtr->_flags |= PersonFlags::pf80;
@@ -2230,7 +2230,7 @@ void EdenGame::vivredino() {
void EdenGame::vivreval(int16 areaNum) {
_globals->_citadelAreaNum = areaNum;
- _globals->_curAreaPtr = &kAreasTable[areaNum - 1];
+ _globals->_curAreaPtr = &_areasTable[areaNum - 1];
_globals->_citaAreaFirstRoom = &_gameRooms[_globals->_curAreaPtr->_firstRoomIdx];
moveAllDino();
buildCitadel();
@@ -2359,7 +2359,7 @@ void EdenGame::addanim() {
_globals->_curCharacterAnimPtr = _globals->_persoSpritePtr;
getanimrnd();
_animationActive = true;
- if (_globals->_characterPtr == &kPersons[PER_KING])
+ if (_globals->_characterPtr == &_persons[PER_KING])
return;
setCharacterSprite(_globals->_persoSpritePtr + READ_LE_UINT16(_globals->_persoSpritePtr)); //TODO: GetElem(0)
_mouthAnimations = _imageDesc + 200;
@@ -2671,7 +2671,7 @@ void EdenGame::displayBackgroundFollower() {
void EdenGame::displayNoFollower(int16 bank) {
if (bank) {
useBank(bank);
- if (_globals->_characterPtr == &kPersons[PER_UNKN_156])
+ if (_globals->_characterPtr == &_persons[PER_UNKN_156])
noclipax_avecnoir(0, 0, 16);
else
noclipax(0, 0, 16);
@@ -2682,7 +2682,7 @@ void EdenGame::displayNoFollower(int16 bank) {
void EdenGame::displayCharacterBackground1() {
byte bank;
char *ptab;
- if (_globals->_characterPtr == &kPersons[PER_ELOI]) {
+ if (_globals->_characterPtr == &_persons[PER_ELOI]) {
_gameIcons[0].sx = 0;
_characterRects[PER_ELOI].left = 2;
bank = _globals->_characterBackgroundBankIdx;
@@ -2694,14 +2694,14 @@ void EdenGame::displayCharacterBackground1() {
_gameIcons[0].sx = 60;
_characterRects[PER_ELOI].left = 62;
}
- if (_globals->_characterPtr == &kPersons[PER_TAU]) {
+ if (_globals->_characterPtr == &_persons[PER_TAU]) {
bank = 37;
if (_globals->_curObjectId == Objects::obShell) {
displayNoFollower(bank);
return;
}
}
- ptab = kPersoRoomBankTable + _globals->_characterPtr->_roomBankId;
+ ptab = _personRoomBankTable + _globals->_characterPtr->_roomBankId;
bank = *ptab++;
if (!(_globals->_characterPtr->_partyMask & _globals->_party)) {
while ((bank = *ptab++) != 0xFF) {
@@ -2712,7 +2712,7 @@ void EdenGame::displayCharacterBackground1() {
ptab++;
}
if (bank == 0xFF) {
- ptab = kPersoRoomBankTable + _globals->_characterPtr->_roomBankId;
+ ptab = _personRoomBankTable + _globals->_characterPtr->_roomBankId;
bank = *ptab++;
}
}
@@ -2733,7 +2733,7 @@ void EdenGame::setCharacterIcon() {
if (_globals->_iconsIndex == 4)
return;
- if (_globals->_characterPtr == &kPersons[PER_ELOI] && _globals->_eventType == EventType::etEventE) {
+ if (_globals->_characterPtr == &_persons[PER_ELOI] && _globals->_eventType == EventType::etEventE) {
_globals->_iconsIndex = 123;
return;
}
@@ -2758,7 +2758,7 @@ void EdenGame::showCharacter() {
loadCharacter(perso);
setCharacterIcon();
displayCharacterBackground();
- if (perso == &kPersons[PER_TAU] && _globals->_curObjectId == Objects::obShell) {
+ if (perso == &_persons[PER_TAU] && _globals->_curObjectId == Objects::obShell) {
displaySubtitles();
updateCursor();
_paletteUpdateRequired = true;
@@ -2775,10 +2775,10 @@ void EdenGame::showCharacter() {
}
_restartAnimation = true;
animCharacter();
- if (perso != &kPersons[PER_UNKN_156])
+ if (perso != &_persons[PER_UNKN_156])
updateCursor();
_paletteUpdateRequired = true;
- if (perso != &kPersons[PER_UNKN_156])
+ if (perso != &_persons[PER_UNKN_156])
rundcurs();
display();
} else {
@@ -2801,10 +2801,10 @@ void EdenGame::displayCharacterPanel() {
if (_globals->_drawFlags & DrawFlags::drDrawFlag8)
return;
animCharacter();
- if (perso != &kPersons[PER_UNKN_156])
+ if (perso != &_persons[PER_UNKN_156])
updateCursor();
display();
- if (perso != &kPersons[PER_UNKN_156])
+ if (perso != &_persons[PER_UNKN_156])
rundcurs();
_globals->_drawFlags |= DrawFlags::drDrawFlag8;
_globals->_iconsIndex = 112;
@@ -3249,7 +3249,7 @@ void EdenGame::parle_moi() {
if (!ok) {
parlemoiNormalFlag = true;
if (_globals->_var60) {
- if (_globals->_characterPtr == &kPersons[PER_ELOI]) {
+ if (_globals->_characterPtr == &_persons[PER_ELOI]) {
_globals->_dialogType = DialogType::dtTalk;
if (_globals->_eloiHaveNews)
parlemoi_normal();
@@ -3278,7 +3278,7 @@ void EdenGame::initCharacterPointers(perso_t *perso) {
void EdenGame::perso1(perso_t *perso) {
_globals->_phaseActionsCount++;
- if (perso == &kPersons[PER_TAU])
+ if (perso == &_persons[PER_TAU])
_globals->_phaseActionsCount--;
_globals->_characterPtr = perso;
initCharacterPointers(perso);
@@ -3294,7 +3294,7 @@ void EdenGame::perso_normal(perso_t *perso) {
// Original name: persoparle
void EdenGame::handleCharacterDialog(int16 pers) {
- perso_t *perso = &kPersons[pers];
+ perso_t *perso = &_persons[pers];
_globals->_characterPtr = perso;
_globals->_dialogType = DialogType::dtInspect;
uint16 idx = perso->_id * 8 | _globals->_dialogType;
@@ -3308,53 +3308,53 @@ void EdenGame::handleCharacterDialog(int16 pers) {
// Original name: roi
void EdenGame::actionKing() {
- perso_normal(&kPersons[PER_KING]);
+ perso_normal(&_persons[PER_KING]);
}
// Original name: dina
void EdenGame::actionDina() {
- perso_normal(&kPersons[PER_DINA]);
+ perso_normal(&_persons[PER_DINA]);
}
// Original name: thoo
void EdenGame::actionThoo() {
- perso_normal(&kPersons[PER_TAU]);
+ perso_normal(&_persons[PER_TAU]);
}
// Original name: monk
void EdenGame::actionMonk() {
- perso_normal(&kPersons[PER_MONK]);
+ perso_normal(&_persons[PER_MONK]);
}
// Original name: bourreau
void EdenGame::actionTormentor() {
- perso_normal(&kPersons[PER_JABBER]);
+ perso_normal(&_persons[PER_JABBER]);
}
// Original name: messager
void EdenGame::actionMessenger() {
- perso_normal(&kPersons[PER_ELOI]);
+ perso_normal(&_persons[PER_ELOI]);
}
// Original name: mango
void EdenGame::actionMango() {
- perso_normal(&kPersons[PER_MUNGO]);
+ perso_normal(&_persons[PER_MUNGO]);
}
// Original name: eve
void EdenGame::actionEve() {
- perso_normal(&kPersons[PER_EVE]);
+ perso_normal(&_persons[PER_EVE]);
}
// Original name: azia
void EdenGame::actionAzia() {
- perso_normal(&kPersons[PER_SHAZIA]);
+ perso_normal(&_persons[PER_SHAZIA]);
}
// Original name: mammi
void EdenGame::actionMammi() {
perso_t *perso;
- for (perso = &kPersons[PER_MAMMI]; perso->_partyMask == PersonMask::pmLeader; perso++) {
+ for (perso = &_persons[PER_MAMMI]; perso->_partyMask == PersonMask::pmLeader; perso++) {
if (perso->_roomNum == _globals->_roomNum) {
perso_normal(perso);
break;
@@ -3364,23 +3364,23 @@ void EdenGame::actionMammi() {
// Original name: gardes
void EdenGame::actionGuards() {
- perso_normal(&kPersons[PER_GUARDS]);
+ perso_normal(&_persons[PER_GUARDS]);
}
// Original name: bambou
void EdenGame::actionBamboo() {
- perso_normal(&kPersons[PER_BAMBOO]);
+ perso_normal(&_persons[PER_BAMBOO]);
}
// Original name: kabuka
void EdenGame::actionKabuka() {
- if (_globals->_roomNum == 0x711) perso_normal(&kPersons[PER_KABUKA]);
+ if (_globals->_roomNum == 0x711) perso_normal(&_persons[PER_KABUKA]);
else actionBamboo();
}
// Original name: fisher
void EdenGame::actionFisher() {
- if (_globals->_roomNum == 0x902) perso_normal(&kPersons[PER_FISHER]);
+ if (_globals->_roomNum == 0x902) perso_normal(&_persons[PER_FISHER]);
else actionKabuka();
}
@@ -3405,13 +3405,13 @@ void EdenGame::actionDino() {
waitEndSpeak();
if (_vm->shouldQuit())
return;
- perso = &kPersons[PER_MUNGO];
+ perso = &_persons[PER_MUNGO];
if (!(_globals->_party & PersonMask::pmMungo)) {
- perso = &kPersons[PER_DINA];
+ perso = &_persons[PER_DINA];
if (!(_globals->_party & PersonMask::pmDina)) {
- perso = &kPersons[PER_EVE];
+ perso = &_persons[PER_EVE];
if (!(_globals->_party & PersonMask::pmEve)) {
- perso = &kPersons[PER_GUARDS];
+ perso = &_persons[PER_GUARDS];
}
}
}
@@ -3436,13 +3436,13 @@ void EdenGame::actionTyran() {
_globals->_roomCharacterFlags = perso->_flags;
_globals->_characterPtr = perso;
initCharacterPointers(perso);
- perso = &kPersons[PER_MUNGO];
+ perso = &_persons[PER_MUNGO];
if (!(_globals->_party & PersonMask::pmMungo)) {
- perso = &kPersons[PER_DINA];
+ perso = &_persons[PER_DINA];
if (!(_globals->_party & PersonMask::pmDina)) {
- perso = &kPersons[PER_EVE];
+ perso = &_persons[PER_EVE];
if (!(_globals->_party & PersonMask::pmEve)) {
- perso = &kPersons[PER_GUARDS];
+ perso = &_persons[PER_GUARDS];
}
}
}
@@ -3454,15 +3454,15 @@ void EdenGame::actionTyran() {
// Original name: morkus
void EdenGame::actionMorkus() {
- perso_normal(&kPersons[PER_MORKUS]);
+ perso_normal(&_persons[PER_MORKUS]);
}
void EdenGame::comment() {
- perso_t *perso = &kPersons[PER_DINA];
+ perso_t *perso = &_persons[PER_DINA];
if (!(_globals->_party & PersonMask::pmDina)) {
- perso = &kPersons[PER_EVE];
+ perso = &_persons[PER_EVE];
if (!(_globals->_party & PersonMask::pmEve)) {
- perso = &kPersons[PER_GUARDS];
+ perso = &_persons[PER_GUARDS];
if (!(_globals->_party & PersonMask::pmThugg))
return;
}
@@ -3503,12 +3503,12 @@ void EdenGame::actionAdam() {
updateRoom(_globals->_roomNum);
} else {
_globals->_dialogType = DialogType::dtHint;
- perso1(&kPersons[PER_EVE]);
+ perso1(&_persons[PER_EVE]);
}
break;
case Objects::obShell:
_globals->_dialogType = DialogType::dtHint;
- perso1(&kPersons[PER_TAU]);
+ perso1(&_persons[PER_TAU]);
break;
case Objects::obFlute:
case Objects::obTrumpet:
@@ -3528,7 +3528,7 @@ void EdenGame::actionAdam() {
if ((_globals->_partyOutside & PersonMask::pmDina)
&& _globals->_curObjectId == Objects::obTablet1 && _globals->_phaseNum == 370)
incPhase();
- char *objvid = &kTabletView[(_globals->_curObjectId - Objects::obTablet1) * 2];
+ char *objvid = &_tabletView[(_globals->_curObjectId - Objects::obTablet1) * 2];
object_t *object = getObjectPtr(*objvid++);
int16 vid = 84;
if (!object->_count)
@@ -3550,7 +3550,7 @@ void EdenGame::actionAdam() {
case Objects::obDrum:
if (_globals->_party & PersonMask::pmThugg) {
_globals->_dialogType = DialogType::dtHint;
- perso1(&kPersons[PER_GUARDS]);
+ perso1(&_persons[PER_GUARDS]);
}
break;
default:
@@ -3587,7 +3587,7 @@ void EdenGame::specialEmptyNest(perso_t *perso) {
perso->_flags |= PersonFlags::pf10;
_globals->_roomCharacterFlags |= PersonFlags::pf10;
_globals->_gameFlags |= GameFlags::gfFlag400;
- if (_globals->_characterPtr == &kPersons[PER_EVE]) {
+ if (_globals->_characterPtr == &_persons[PER_EVE]) {
_globals->_areaPtr->_flags |= AreaFlags::afFlag4;
_globals->_curAreaFlags |= AreaFlags::afFlag4;
perso->_flags |= PersonFlags::pfInParty;
@@ -3601,7 +3601,7 @@ void EdenGame::specialEmptyNest(perso_t *perso) {
// Original name: SpcNido
void EdenGame::specialNestWithEggs(perso_t *perso) {
- if (perso == &kPersons[PER_GUARDS])
+ if (perso == &_persons[PER_GUARDS])
giveObject();
}
@@ -3630,7 +3630,7 @@ void EdenGame::specialGold(perso_t *perso) {
// Original name: SpcPrisme
void EdenGame::specialPrism(perso_t *perso) {
- if (perso == &kPersons[PER_DINA]) {
+ if (perso == &_persons[PER_DINA]) {
if (_globals->_partyOutside & PersonMask::pmMonk)
_globals->_gameFlags |= GameFlags::gfPrismAndMonk;
}
@@ -3638,13 +3638,13 @@ void EdenGame::specialPrism(perso_t *perso) {
// Original name: SpcTalisman
void EdenGame::specialTalisman(perso_t *perso) {
- if (perso == &kPersons[PER_DINA])
+ if (perso == &_persons[PER_DINA])
addToParty(PER_DINA);
}
// Original name: SpcMasque
void EdenGame::specialMask(perso_t *perso) {
- if (perso == &kPersons[PER_BAMBOO]) {
+ if (perso == &_persons[PER_BAMBOO]) {
dialautoon();
parlemoiNormalFlag = true;
}
@@ -3654,7 +3654,7 @@ void EdenGame::specialMask(perso_t *perso) {
void EdenGame::specialBag(perso_t *perso) {
if (_globals->_textToken1 != 3)
return;
- if (perso == &kPersons[PER_KABUKA] || perso == &kPersons[PER_MAMMI_3])
+ if (perso == &_persons[PER_KABUKA] || perso == &_persons[PER_MAMMI_3])
loseObject(_curSpecialObject->_id);
}
@@ -3682,14 +3682,14 @@ void EdenGame::specialWeapons(perso_t *perso) {
void EdenGame::specialInstrument(perso_t *perso) {
if (!isAnswerYes())
return;
- if (perso == &kPersons[PER_MONK]) {
+ if (perso == &_persons[PER_MONK]) {
_globals->_partyInstruments &= ~1; //TODO: check me
if (_curSpecialObject->_id == Objects::obRing) {
_globals->_partyInstruments |= 1;
_globals->_monkGotRing++; //TODO: |= 1 ?
}
}
- if (perso == &kPersons[PER_GUARDS]) {
+ if (perso == &_persons[PER_GUARDS]) {
_globals->_partyInstruments &= ~2;
if (_curSpecialObject->_id == Objects::obDrum)
_globals->_partyInstruments |= 2;
@@ -3778,7 +3778,7 @@ void EdenGame::dialautooff() {
void EdenGame::follow() {
if (_globals->_roomCharacterType == PersonFlags::pfType12) {
- debug("follow: hiding person %ld", _globals->_roomCharacterPtr - kPersons);
+ debug("follow: hiding person %ld", _globals->_roomCharacterPtr - _persons);
_globals->_roomCharacterPtr->_flags |= PersonFlags::pf80;
_globals->_roomCharacterPtr->_roomNum = 0;
_globals->_gameFlags |= GameFlags::gfFlag8;
@@ -3799,7 +3799,7 @@ void EdenGame::dialonfollow() {
// Original name: abortdial
void EdenGame::abortDialogue() {
_globals->_varF6++;
- if (_globals->_roomCharacterType != PersonFlags::pftTriceraptor || _globals->_characterPtr != &kPersons[PER_EVE])
+ if (_globals->_roomCharacterType != PersonFlags::pftTriceraptor || _globals->_characterPtr != &_persons[PER_EVE])
return;
_globals->_areaPtr->_flags |= AreaFlags::afFlag4;
_globals->_curAreaFlags |= AreaFlags::afFlag4;
@@ -3831,11 +3831,11 @@ void EdenGame::handleNarrator() {
}
_globals->_varF5 |= 0x80;
_globals->_varF2 &= ~1; //TODO: check me
- _globals->_characterPtr = &kPersons[PER_UNKN_156];
+ _globals->_characterPtr = &_persons[PER_UNKN_156];
_globals->_var60 = 0;
_globals->_eventType = 0;
_globals->_var103 = 69;
- if (dialogEvent(&kPersons[PER_UNKN_156])) {
+ if (dialogEvent(&_persons[PER_UNKN_156])) {
_globals->_narratorDialogPtr = _globals->_dialogPtr;
dialautoon();
_globals->_varF2 |= 1;
@@ -3901,7 +3901,7 @@ byte *EdenGame::getPhrase(int16 id) {
// Original name: gotocarte
void EdenGame::actionGotoMap() {
- Goto *go = &gotos[_curSpot2->_objectId];
+ Goto *go = &_gotos[_curSpot2->_objectId];
endCharacterSpeech();
byte newArea = go->_areaNum;
_globals->_newRoomNum = (go->_areaNum << 8) | 1;
@@ -3935,7 +3935,7 @@ void EdenGame::record() {
if (_globals->_curObjectId)
return;
- if (_globals->_characterPtr >= &kPersons[PER_UNKN_18C])
+ if (_globals->_characterPtr >= &_persons[PER_UNKN_18C])
return;
if (_globals->_eventType == EventType::etEventE || _globals->_eventType >= EventType::etGotoArea)
@@ -3958,9 +3958,9 @@ void EdenGame::record() {
}
perso_t *perso = _globals->_characterPtr;
- if (perso == &kPersons[PER_EVE])
- perso = _globals->_phaseNum >= 352 ? &kPersons[PER_UNKN_372]
- : &kPersons[PER_UNKN_402];
+ if (perso == &_persons[PER_EVE])
+ perso = _globals->_phaseNum >= 352 ? &_persons[PER_UNKN_372]
+ : &_persons[PER_UNKN_402];
tape->_textNum = _globals->_textNum;
tape->_perso = perso;
tape->_party = _globals->_party;
@@ -4018,7 +4018,7 @@ bool EdenGame::dial_scan(Dialog *dial) {
if (!skipFl) {
perso_t *perso;
- for (perso = kPersons; !(perso->_partyMask == mask && perso->_roomNum == _globals->_roomNum); perso++)
+ for (perso = _persons; !(perso->_partyMask == mask && perso->_roomNum == _globals->_roomNum); perso++)
; //Find matching
_globals->_characterPtr = perso;
@@ -4089,7 +4089,7 @@ bool EdenGame::dialogEvent(perso_t *perso) {
// Original name: stay_here
void EdenGame::characterStayHere() {
- if (_globals->_characterPtr == &kPersons[PER_DINA] && _globals->_roomNum == 260)
+ if (_globals->_characterPtr == &_persons[PER_DINA] && _globals->_roomNum == 260)
_globals->_gameFlags |= GameFlags::gfFlag1000;
removeCharacterFromParty();
}
@@ -4162,9 +4162,9 @@ void EdenGame::setChrono(int16 t) {
// Original name: prechargephrases
void EdenGame::preloadDialogs(int16 vid) {
- perso_t *perso = &kPersons[PER_MORKUS];
+ perso_t *perso = &_persons[PER_MORKUS];
if (vid == 170)
- perso = &kPersons[PER_UNKN_156];
+ perso = &_persons[PER_UNKN_156];
_globals->_characterPtr = perso;
_globals->_dialogType = DialogType::dtInspect;
int num = (perso->_id << 3) | _globals->_dialogType;
@@ -4757,7 +4757,7 @@ void EdenGame::loadpermfiles() {
kNumDinoSpeedForCitaLevel +
kNumTabletView +
kNumPersoRoomBankTable +
- kNum_gotos * 5 + // sizeof(Goto)
+ kNumGotos * 5 + // sizeof(Goto)
kNumObjects * 10 + // sizeof(object_t)
kNumObjectLocations * 2 +
kNumPersons * 18 + // sizeof(perso_t)
@@ -4839,11 +4839,11 @@ void EdenGame::loadpermfiles() {
followerList[i].ff_E = f.readSint16LE();
}
- f.read(kLabyrinthPath, kNumLabyrinthPath);
- f.read(kDinoSpeedForCitaLevel, kNumDinoSpeedForCitaLevel);
- f.read(kTabletView, kNumTabletView);
- f.read(kPersoRoomBankTable, kNumPersoRoomBankTable);
- f.read(gotos, kNumGotos * 5); // sizeof(Goto)
+ f.read(_labyrinthPath, kNumLabyrinthPath);
+ f.read(_dinoSpeedForCitadelLevel, kNumDinoSpeedForCitaLevel);
+ f.read(_tabletView, kNumTabletView);
+ f.read(_personRoomBankTable, kNumPersoRoomBankTable);
+ f.read(_gotos, kNumGotos * 5); // sizeof(Goto)
for (int i = 0; i < kNumObjects; i++) {
_objects[i]._id = f.readByte();
@@ -4855,23 +4855,23 @@ void EdenGame::loadpermfiles() {
}
for (int i = 0; i < kNumObjectLocations; i++) {
- kObjectLocations[i] = f.readUint16LE();
+ _objectLocations[i] = f.readUint16LE();
}
for (int i = 0; i < kNumPersons; i++) {
- kPersons[i]._roomNum = f.readUint16LE();
- kPersons[i]._actionId = f.readUint16LE();
- kPersons[i]._partyMask = f.readUint16LE();
- kPersons[i]._id = f.readByte();
- kPersons[i]._flags = f.readByte();
- kPersons[i]._roomBankId = f.readByte();
- kPersons[i]._spriteBank = f.readByte();
- kPersons[i]._items = f.readUint16LE();
- kPersons[i]._powers = f.readUint16LE();
- kPersons[i]._targetLoc = f.readByte();
- kPersons[i]._lastLoc = f.readByte();
- kPersons[i]._speed = f.readByte();
- kPersons[i]._steps = f.readByte();
+ _persons[i]._roomNum = f.readUint16LE();
+ _persons[i]._actionId = f.readUint16LE();
+ _persons[i]._partyMask = f.readUint16LE();
+ _persons[i]._id = f.readByte();
+ _persons[i]._flags = f.readByte();
+ _persons[i]._roomBankId = f.readByte();
+ _persons[i]._spriteBank = f.readByte();
+ _persons[i]._items = f.readUint16LE();
+ _persons[i]._powers = f.readUint16LE();
+ _persons[i]._targetLoc = f.readByte();
+ _persons[i]._lastLoc = f.readByte();
+ _persons[i]._speed = f.readByte();
+ _persons[i]._steps = f.readByte();
}
for (int i = 0; i < kNumCitadel; i++) {
@@ -4892,14 +4892,14 @@ void EdenGame::loadpermfiles() {
f.read(_characterArray, kNumCharacters * 5);
for (int i = 0; i < kNumAreas; i++) {
- kAreasTable[i]._num = f.readByte();
- kAreasTable[i]._type = f.readByte();
- kAreasTable[i]._flags = f.readUint16LE();
- kAreasTable[i]._firstRoomIdx = f.readUint16LE();
- kAreasTable[i]._citadelLevel = f.readByte();
- kAreasTable[i]._placeNum = f.readByte();
- kAreasTable[i]._citadelRoomPtr = nullptr;
- kAreasTable[i]._visitCount = f.readSint16LE();
+ _areasTable[i]._num = f.readByte();
+ _areasTable[i]._type = f.readByte();
+ _areasTable[i]._flags = f.readUint16LE();
+ _areasTable[i]._firstRoomIdx = f.readUint16LE();
+ _areasTable[i]._citadelLevel = f.readByte();
+ _areasTable[i]._placeNum = f.readByte();
+ _areasTable[i]._citadelRoomPtr = nullptr;
+ _areasTable[i]._visitCount = f.readSint16LE();
}
for (int i = 0; i < 64; i++) {
@@ -4910,7 +4910,7 @@ void EdenGame::loadpermfiles() {
tab_2CF70[i] = f.readSint16LE();
}
- f.read(kActionCursors, kNumActionCursors);
+ f.read(_actionCursors, kNumActionCursors);
f.read(_mapMode, 12);
f.read(_cubeTextureCoords, 3 * 6 * 2 * 3 * 2);
@@ -5018,7 +5018,7 @@ void EdenGame::expandHSQ(byte *input, byte *output) {
// Original name: ajouinfo
void EdenGame::addInfo(byte info) {
byte idx = _globals->_nextInfoIdx;
- if (kPersons[PER_ELOI]._roomNum)
+ if (_persons[PER_ELOI]._roomNum)
info |= 0x80;
_infoList[idx] = info;
if (idx == _globals->_lastInfoIdx)
@@ -5286,7 +5286,7 @@ void EdenGame::displaySingleRoom(Room *room) {
if (addIcon) {
icon->_actionId = b0;
icon->_objectId = b0;
- icon->_cursorId = kActionCursors[b0];
+ icon->_cursorId = _actionCursors[b0];
int16 x = READ_LE_UINT16(ptr);
ptr += 2;
int16 y = READ_LE_UINT16(ptr);
@@ -5386,14 +5386,14 @@ void EdenGame::specialout() {
if (_globals->_phaseNum >= 32 && _globals->_phaseNum < 48) {
if (_globals->_newLocation == 9 || _globals->_newLocation == 4 || _globals->_newLocation == 24) {
- kPersons[PER_ELOI]._roomNum = 263;
+ _persons[PER_ELOI]._roomNum = 263;
return;
}
}
if ((_globals->_phaseNum == 434) && (_globals->_newLocation == 5)) {
removeFromParty(PER_JABBER);
- kPersons[PER_JABBER]._roomNum = 264;
+ _persons[PER_JABBER]._roomNum = 264;
return;
}
@@ -5425,7 +5425,7 @@ void EdenGame::specialin() {
_gameRooms[129]._exits[0] = 0;
_gameRooms[129]._exits[2] = 1;
_globals->_roomNum = 3074;
- kPersons[PER_MUNGO]._roomNum = 3074;
+ _persons[PER_MUNGO]._roomNum = 3074;
_globals->_eventType = EventType::etEvent5;
updateRoom(_globals->_roomNum);
return;
@@ -5437,7 +5437,7 @@ void EdenGame::specialin() {
if (_globals->_roomNum == 259 && _globals->_phaseNum == 129)
_globals->_narratorSequence = 12;
if (_globals->_roomNum >= 289 && _globals->_roomNum < 359)
- _globals->_labyrinthDirections = kLabyrinthPath[(_globals->_roomNum & 0xFF) - 33];
+ _globals->_labyrinthDirections = _labyrinthPath[(_globals->_roomNum & 0xFF) - 33];
if (_globals->_roomNum == 305 && _globals->_prevLocation == 103)
_globals->_gameFlags &= ~GameFlags::gfFlag2000;
if (_globals->_roomNum == 304 && _globals->_prevLocation == 105)
@@ -5474,7 +5474,7 @@ void EdenGame::getdino(Room *room) {
assert(tab_2CEF0[4] == 0x25);
room->_flags &= ~0xC;
- for (perso_t *perso = &kPersons[PER_UNKN_18C]; perso->_roomNum != 0xFFFF; perso++) {
+ for (perso_t *perso = &_persons[PER_UNKN_18C]; perso->_roomNum != 0xFFFF; perso++) {
if (perso->_flags & PersonFlags::pf80)
continue;
if (perso->_roomNum != _globals->_roomNum)
@@ -5548,7 +5548,7 @@ void EdenGame::initPlace(int16 roomNum) {
_globals->_gameFlags |= GameFlags::gfFlag4000;
_gameIcons[18]._cursorId |= 0x8000;
_globals->_lastAreaPtr = _globals->_areaPtr;
- _globals->_areaPtr = &kAreasTable[((roomNum >> 8) & 0xFF) - 1];
+ _globals->_areaPtr = &_areasTable[((roomNum >> 8) & 0xFF) - 1];
Area *area = _globals->_areaPtr;
area->_visitCount++;
_globals->_areaVisitCount = area->_visitCount;
@@ -6506,23 +6506,23 @@ void EdenGame::handleHNMSubtitles() {
switch (_globals->_curVideoNum) {
case 170:
frames = kFramesVid170;
- perso = &kPersons[PER_UNKN_156];
+ perso = &_persons[PER_UNKN_156];
break;
case 83:
frames = kFramesVid83;
- perso = &kPersons[PER_MORKUS];
+ perso = &_persons[PER_MORKUS];
break;
case 88:
frames = kFramesVid88;
- perso = &kPersons[PER_MORKUS];
+ perso = &_persons[PER_MORKUS];
break;
case 89:
frames = kFramesVid89;
- perso = &kPersons[PER_MORKUS];
+ perso = &_persons[PER_MORKUS];
break;
case 94:
frames = kFramesVid94;
- perso = &kPersons[PER_MORKUS];
+ perso = &_persons[PER_MORKUS];
break;
default:
return;
@@ -6825,7 +6825,7 @@ void EdenGame::lostObject() {
// Original name: objecthere
bool EdenGame::isObjectHere(int16 id) {
object_t *object = getObjectPtr(id);
- for (_currentObjectLocation = &kObjectLocations[object->_locations]; *_currentObjectLocation != 0xFFFF; _currentObjectLocation++) {
+ for (_currentObjectLocation = &_objectLocations[object->_locations]; *_currentObjectLocation != 0xFFFF; _currentObjectLocation++) {
if (*_currentObjectLocation == _globals->_roomNum)
return true;
}
@@ -6876,7 +6876,7 @@ void EdenGame::putObject() {
void EdenGame::newObject(int16 id, int16 arg2) {
object_t *object = getObjectPtr(id);
- uint16 e, *t = &kObjectLocations[object->_locations];
+ uint16 e, *t = &_objectLocations[object->_locations];
while ((e = *t) != 0xFFFF) {
e &= ~0x8000;
if ((e >> 8) == arg2)
@@ -6887,7 +6887,7 @@ void EdenGame::newObject(int16 id, int16 arg2) {
void EdenGame::giveobjectal(int16 id) {
if (id == Objects::obKnife)
- kObjectLocations[2] = 0;
+ _objectLocations[2] = 0;
if (id == Objects::obApple)
_globals->_stepsToFindAppleNormal = 0;
if (id >= Objects::obEyeInTheStorm && id < (Objects::obRiverThatWinds + 1) && _globals->_roomCharacterType == PersonFlags::pftVelociraptor) {
@@ -6942,7 +6942,7 @@ void EdenGame::newEmptyNest() {
if (_objects[Objects::obNest - 1]._count)
return;
object_t *obj = getObjectPtr(Objects::obNest);
- for (uint16 *ptr = kObjectLocations + obj->_locations; *ptr != 0xFFFF; ptr++) {
+ for (uint16 *ptr = _objectLocations + obj->_locations; *ptr != 0xFFFF; ptr++) {
if ((*ptr & ~0x8000) >> 8 != _globals->_citadelAreaNum)
continue;
*ptr &= ~0x8000;
@@ -6966,7 +6966,7 @@ void EdenGame::newNestWithEggs() {
if (_objects[Objects::obNest - 1]._count)
return;
object_t *obj = getObjectPtr(Objects::obFullNest);
- for (uint16 *ptr = kObjectLocations + obj->_locations; *ptr != 0xFFFF; ptr++) {
+ for (uint16 *ptr = _objectLocations + obj->_locations; *ptr != 0xFFFF; ptr++) {
if ((*ptr & ~0x8000) >> 8 != _globals->_citadelAreaNum)
continue;
*ptr &= ~0x8000;
@@ -7074,9 +7074,9 @@ void EdenGame::cancel2() {
void EdenGame::testvoice() {
_globals->_frescoNumber = 0;
- _globals->_characterPtr = kPersons;
+ _globals->_characterPtr = _persons;
_globals->_dialogType = DialogType::dtInspect;
- int16 num = (kPersons[PER_KING]._id << 3) | _globals->_dialogType;
+ int16 num = (_persons[PER_KING]._id << 3) | _globals->_dialogType;
dialoscansvmas((Dialog *)getElem(_gameDialogs, num));
restoreUnderSubtitles();
displaySubtitles();
@@ -7142,9 +7142,9 @@ void EdenGame::initafterload() {
_gameIcons[18]._cursorId |= 0x8000;
if (_globals->_curAreaType == AreaType::atValley)
_gameIcons[18]._cursorId &= ~0x8000;
- kPersoRoomBankTable[30] = 27;
+ _personRoomBankTable[30] = 27;
if (_globals->_phaseNum >= 352)
- kPersoRoomBankTable[30] = 26;
+ _personRoomBankTable[30] = 26;
_animateTalking = false;
_animationActive = false;
_globals->_var100 = 0;
@@ -7199,9 +7199,9 @@ void EdenGame::panelrestart() {
_gameIcons[18]._cursorId |= 0x8000;
if (_globals->_curAreaType == AreaType::atValley)
_gameIcons[18]._cursorId &= ~0x8000;
- kPersoRoomBankTable[30] = 27;
+ _personRoomBankTable[30] = 27;
if (_globals->_phaseNum >= 352)
- kPersoRoomBankTable[30] = 26;
+ _personRoomBankTable[30] = 26;
_animateTalking = false;
_animationActive = false;
_globals->_var100 = 0;
@@ -7512,9 +7512,9 @@ void EdenGame::displayTopPanel() {
// Original name: affresult
void EdenGame::displayResult() {
restoreUnderSubtitles();
- _globals->_characterPtr = &kPersons[19];
+ _globals->_characterPtr = &_persons[19];
_globals->_dialogType = DialogType::dtInspect;
- int16 num = (kPersons[PER_UNKN_156]._id << 3) | _globals->_dialogType;
+ int16 num = (_persons[PER_UNKN_156]._id << 3) | _globals->_dialogType;
if (dialoscansvmas((Dialog *)getElem(_gameDialogs, num)))
displaySubtitles();
_globals->_varCA = 0;
@@ -7590,7 +7590,7 @@ void EdenGame::evenements(perso_t *perso) {
if (_globals->_var113)
return;
- if (perso >= &kPersons[PER_UNKN_18C])
+ if (perso >= &_persons[PER_UNKN_18C])
return;
if (!dialogEvent(perso))
@@ -7633,7 +7633,7 @@ void EdenGame::rangermammi(perso_t *perso, Room *room) {
}
void EdenGame::perso_ici(int16 action) {
- perso_t *perso = &kPersons[PER_UNKN_156];
+ perso_t *perso = &_persons[PER_UNKN_156];
// room_t *room = p_global->last_area_ptr->room_ptr; //TODO: compiler opt bug? causes access to zero ptr??? last_area_ptr == 0
switch (action) {
case 0:
@@ -7652,7 +7652,7 @@ void EdenGame::perso_ici(int16 action) {
rangermammi(perso, _globals->_lastAreaPtr->_citadelRoomPtr);
break;
}
- perso = kPersons;
+ perso = _persons;
do {
if (perso->_roomNum == _globals->_roomNum && !(perso->_flags & PersonFlags::pf80)) {
switch (action) {
@@ -7679,7 +7679,7 @@ void EdenGame::perso_ici(int16 action) {
// Original name: setpersohere
void EdenGame::setCharacterHere() {
- debug("setCharacterHere, perso is %ld", _globals->_characterPtr - kPersons);
+ debug("setCharacterHere, perso is %ld", _globals->_characterPtr - _persons);
_globals->_partyOutside = 0;
_globals->_party = 0;
_globals->_roomCharacterPtr = nullptr;
@@ -7705,7 +7705,7 @@ void EdenGame::faire_suivre(int16 roomNum) {
// Original name: suis_moi5
void EdenGame::AddCharacterToParty() {
- debug("adding person %ld to party", _globals->_characterPtr - kPersons);
+ debug("adding person %ld to party", _globals->_characterPtr - _persons);
_globals->_characterPtr->_flags |= PersonFlags::pfInParty;
_globals->_characterPtr->_roomNum = _globals->_roomNum;
_globals->_party |= _globals->_characterPtr->_partyMask;
@@ -7715,14 +7715,14 @@ void EdenGame::AddCharacterToParty() {
// Original name: suis_moi
void EdenGame::addToParty(int16 index) {
perso_t *old_perso = _globals->_characterPtr;
- _globals->_characterPtr = &kPersons[index];
+ _globals->_characterPtr = &_persons[index];
AddCharacterToParty();
_globals->_characterPtr = old_perso;
}
// Original name: reste_ici5
void EdenGame::removeCharacterFromParty() {
- debug("removing person %ld from party", _globals->_characterPtr - kPersons);
+ debug("removing person %ld from party", _globals->_characterPtr - _persons);
_globals->_characterPtr->_flags &= ~PersonFlags::pfInParty;
_globals->_partyOutside |= _globals->_characterPtr->_partyMask;
_globals->_party &= ~_globals->_characterPtr->_partyMask;
@@ -7732,7 +7732,7 @@ void EdenGame::removeCharacterFromParty() {
// Original name: reste_ici
void EdenGame::removeFromParty(int16 index) {
perso_t *old_perso = _globals->_characterPtr;
- _globals->_characterPtr = &kPersons[index];
+ _globals->_characterPtr = &_persons[index];
removeCharacterFromParty();
_globals->_characterPtr = old_perso;
}
@@ -7741,8 +7741,8 @@ void EdenGame::removeFromParty(int16 index) {
void EdenGame::handleEloiDeparture() {
removeFromParty(PER_ELOI);
_globals->_gameFlags &= ~GameFlags::gfFlag4000;
- kPersons[PER_ELOI]._roomNum = 0;
- _globals->_partyOutside &= ~kPersons[PER_ELOI]._partyMask;
+ _persons[PER_ELOI]._roomNum = 0;
+ _globals->_partyOutside &= ~_persons[PER_ELOI]._partyMask;
if (_globals->_roomNum == 2817)
setChrono(3000);
_globals->_eloiDepartureDay = _globals->_gameDays;
@@ -7765,8 +7765,8 @@ bool EdenGame::checkEloiReturn() {
// Original name: eloirevient
void EdenGame::handleEloiReturn() {
- if (_globals->_areaPtr->_type == AreaType::atValley && !kPersons[PER_ELOI]._roomNum)
- kPersons[PER_ELOI]._roomNum = (_globals->_roomNum & 0xFF00) + 1;
+ if (_globals->_areaPtr->_type == AreaType::atValley && !_persons[PER_ELOI]._roomNum)
+ _persons[PER_ELOI]._roomNum = (_globals->_roomNum & 0xFF00) + 1;
}
//// phase.c
void EdenGame::incPhase() {
@@ -7810,7 +7810,7 @@ void EdenGame::incPhase() {
void EdenGame::phase113() {
removeFromParty(PER_DINA);
- kPersons[PER_DINA]._roomNum = 274;
+ _persons[PER_DINA]._roomNum = 274;
}
void EdenGame::phase130() {
@@ -7821,7 +7821,7 @@ void EdenGame::phase130() {
void EdenGame::phase161() {
Area *area = _globals->_areaPtr;
addToParty(PER_MAMMI);
- kPersons[PER_MAMMI]._flags |= PersonFlags::pf10;
+ _persons[PER_MAMMI]._flags |= PersonFlags::pf10;
area->_flags |= AreaFlags::afFlag1;
_globals->_curAreaFlags |= AreaFlags::afFlag1;
}
@@ -7840,8 +7840,8 @@ void EdenGame::phase257() {
void EdenGame::phase353() {
removeFromParty(PER_DINA);
- kPersons[PER_DINA]._roomNum = 0;
- kTabletView[1] = 88;
+ _persons[PER_DINA]._roomNum = 0;
+ _tabletView[1] = 88;
}
void EdenGame::phase369() {
@@ -7882,8 +7882,8 @@ void EdenGame::phase418() {
void EdenGame::phase433() {
dialautoon();
- kPersons[PER_MAMMI_4]._flags &= ~PersonFlags::pf80;
- kPersons[PER_JABBER]._flags &= ~PersonFlags::pf80;
+ _persons[PER_MAMMI_4]._flags &= ~PersonFlags::pf80;
+ _persons[PER_JABBER]._flags &= ~PersonFlags::pf80;
setCharacterHere();
_globals->_chronoFlag = 0;
_globals->_chrono = 0;
@@ -7997,11 +7997,11 @@ void EdenGame::phase48() {
void EdenGame::phase64() {
addToParty(PER_DINA);
- kPersons[PER_ELOI]._roomNum = 259;
+ _persons[PER_ELOI]._roomNum = 259;
}
void EdenGame::phase80() {
- kPersons[PER_TAU]._roomNum = 0;
+ _persons[PER_TAU]._roomNum = 0;
}
void EdenGame::phase96() {
@@ -8032,7 +8032,7 @@ void EdenGame::phase176() {
void EdenGame::phase192() {
Area *area = _globals->_areaPtr;
addToParty(PER_MAMMI_1);
- kPersons[PER_MAMMI_1]._flags |= PersonFlags::pf10;
+ _persons[PER_MAMMI_1]._flags |= PersonFlags::pf10;
dialautoon();
area->_flags |= AreaFlags::afFlag1;
_globals->_curAreaFlags |= AreaFlags::afFlag1;
@@ -8051,7 +8051,7 @@ void EdenGame::phase224() {
void EdenGame::phase240() {
Area *area = _globals->_areaPtr;
addToParty(PER_MAMMI_2);
- kPersons[PER_MAMMI_2]._flags |= PersonFlags::pf10;
+ _persons[PER_MAMMI_2]._flags |= PersonFlags::pf10;
area->_flags |= AreaFlags::afFlag1;
_globals->_curAreaFlags |= AreaFlags::afFlag1;
}
@@ -8067,7 +8067,7 @@ void EdenGame::phase272() {
void EdenGame::phase288() {
setChoiceYes();
- kPersons[PER_MUNGO]._roomNum = 0;
+ _persons[PER_MUNGO]._roomNum = 0;
removeFromParty(PER_MUNGO);
addToParty(PER_ELOI);
_globals->_narratorSequence = 8;
@@ -8077,7 +8077,7 @@ void EdenGame::phase304() {
Area *area = _globals->_areaPtr;
addToParty(PER_EVE);
addToParty(PER_MAMMI_5);
- kPersons[PER_MAMMI_5]._flags |= PersonFlags::pf10;
+ _persons[PER_MAMMI_5]._flags |= PersonFlags::pf10;
dialautoon();
area->_flags |= AreaFlags::afFlag1;
_globals->_curAreaFlags |= AreaFlags::afFlag1;
@@ -8095,9 +8095,9 @@ void EdenGame::phase336() {
}
void EdenGame::phase352() {
- kPersoRoomBankTable[30] = 26;
- kPersons[PER_EVE]._spriteBank = 9;
- kPersons[PER_EVE]._targetLoc = 8;
+ _personRoomBankTable[30] = 26;
+ _persons[PER_EVE]._spriteBank = 9;
+ _persons[PER_EVE]._targetLoc = 8;
followerList[13]._spriteNum = 2;
dialautoon();
_gameRooms[288]._exits[0] = 0xFF;
@@ -8109,8 +8109,8 @@ void EdenGame::phase352() {
void EdenGame::phase368() {
removeFromParty(PER_EVE);
dialautoon();
- kPersons[PER_ELOI]._roomNum = 1811;
- kPersons[PER_DINA]._roomNum = 1607;
+ _persons[PER_ELOI]._roomNum = 1811;
+ _persons[PER_DINA]._roomNum = 1607;
}
void EdenGame::phase384() {
@@ -8125,10 +8125,10 @@ void EdenGame::phase384() {
void EdenGame::phase400() {
dialonfollow();
- kPersons[PER_KING]._roomNum = 0;
- kPersons[PER_MONK]._roomNum = 259;
+ _persons[PER_KING]._roomNum = 0;
+ _persons[PER_MONK]._roomNum = 259;
_globals->_eloiHaveNews = 0;
- kObjectLocations[20] = 259;
+ _objectLocations[20] = 259;
}
void EdenGame::phase416() {
@@ -8140,9 +8140,9 @@ void EdenGame::phase416() {
void EdenGame::phase432() {
_globals->_narratorSequence = 3;
- kPersons[PER_MAMMI_4]._flags |= PersonFlags::pf80;
- kPersons[PER_JABBER]._flags |= PersonFlags::pf80;
- kPersons[PER_ELOI]._roomNum = 257;
+ _persons[PER_MAMMI_4]._flags |= PersonFlags::pf80;
+ _persons[PER_JABBER]._flags |= PersonFlags::pf80;
+ _persons[PER_ELOI]._roomNum = 257;
_gameRooms[0]._exits[0] = 0xFF;
_globals->_drawFlags |= DrawFlags::drDrawTopScreen;
}
@@ -8155,7 +8155,7 @@ void EdenGame::phase448() {
void EdenGame::phase464() {
_globals->_areaPtr->_flags |= AreaFlags::afFlag1;
_globals->_curAreaFlags |= AreaFlags::afFlag1;
- kPersons[PER_MAMMI_6]._flags |= PersonFlags::pf10;
+ _persons[PER_MAMMI_6]._flags |= PersonFlags::pf10;
addToParty(PER_SHAZIA);
_globals->_citadelAreaNum = _globals->_areaNum;
naitredino(8);
@@ -8165,7 +8165,7 @@ void EdenGame::phase480() {
giveObject();
newValley();
handleEloiReturn();
- kTabletView[1] = 94;
+ _tabletView[1] = 94;
}
void EdenGame::phase496() {
@@ -8198,7 +8198,7 @@ void EdenGame::phase544() {
}
void EdenGame::phase560() {
- kPersons[PER_ELOI]._roomNum = 3073;
+ _persons[PER_ELOI]._roomNum = 3073;
_gameRooms[127]._exits[1] = 0;
}
@@ -8226,23 +8226,23 @@ h->write(ptr, *size);
size = (char *)(&_gameIcons[134]) - (char *)(&_gameIcons[123]);
CLFile_Write(handle, &_gameIcons[123], &size);
lieuoffsetout();
- size = (char *)(&kAreasTable[12]) - (char *)(&kAreasTable[0]);
- CLFile_Write(handle, &kAreasTable[0], &size);
+ size = (char *)(&_areasTable[12]) - (char *)(&_areasTable[0]);
+ CLFile_Write(handle, &_areasTable[0], &size);
size = (char *)(&_gameRooms[423]) - (char *)(&_gameRooms[0]);
CLFile_Write(handle, &_gameRooms[0], &size);
size = (char *)(&_objects[42]) - (char *)(&_objects[0]);
CLFile_Write(handle, &_objects[0], &size);
- size = (char *)(&kObjectLocations[45]) - (char *)(&kObjectLocations[0]);
- CLFile_Write(handle, &kObjectLocations[0], &size);
+ size = (char *)(&_objectLocations[45]) - (char *)(&_objectLocations[0]);
+ CLFile_Write(handle, &_objectLocations[0], &size);
size = (char *)(&followerList[14]) - (char *)(&followerList[13]);
CLFile_Write(handle, &followerList[13], &size);
- size = (char *)(&kPersons[PER_UNKN_3DE]) - (char *)(&kPersons[PER_KING]);
- CLFile_Write(handle, &kPersons[PER_KING], &size);
+ size = (char *)(&_persons[PER_UNKN_3DE]) - (char *)(&_persons[PER_KING]);
+ CLFile_Write(handle, &_persons[PER_KING], &size);
bandeoffsetout();
size = (char *)(&_tapes[16]) - (char *)(&_tapes[0]);
CLFile_Write(handle, &_tapes[0], &size);
- size = (char *)(&kTabletView[6]) - (char *)(&kTabletView[0]);
- CLFile_Write(handle, &kTabletView[0], &size);
+ size = (char *)(&_tabletView[6]) - (char *)(&_tabletView[0]);
+ CLFile_Write(handle, &_tabletView[0], &size);
size = (char *)(&_gameDialogs[10240]) - (char *)(&_gameDialogs[0]); //TODO: const size 10240
CLFile_Write(handle, &_gameDialogs[0], &size);
@@ -8270,8 +8270,8 @@ void EdenGame::loadrestart() {
size = (char *)(&_gameIcons[134]) - (char *)(&_gameIcons[123]);
loadpartoffile(2495, &_gameIcons[123], offs, size);
offs += size;
- size = (char *)(&kAreasTable[12]) - (char *)(&kAreasTable[0]);
- loadpartoffile(2495, &kAreasTable[0], offs, size);
+ size = (char *)(&_areasTable[12]) - (char *)(&_areasTable[0]);
+ loadpartoffile(2495, &_areasTable[0], offs, size);
offs += size;
lieuoffsetin();
size = (char *)(&_gameRooms[423]) - (char *)(&_gameRooms[0]);
@@ -8280,21 +8280,21 @@ void EdenGame::loadrestart() {
size = (char *)(&_objects[42]) - (char *)(&_objects[0]);
loadpartoffile(2495, &_objects[0], offs, size);
offs += size;
- size = (char *)(&kObjectLocations[45]) - (char *)(&kObjectLocations[0]);
- loadpartoffile(2495, &kObjectLocations[0], offs, size);
+ size = (char *)(&_objectLocations[45]) - (char *)(&_objectLocations[0]);
+ loadpartoffile(2495, &_objectLocations[0], offs, size);
offs += size;
size = (char *)(&followerList[14]) - (char *)(&followerList[13]);
loadpartoffile(2495, &followerList[13], offs, size);
offs += size;
- size = (char *)(&kPersons[PER_UNKN_3DE]) - (char *)(&kPersons[PER_KING]);
- loadpartoffile(2495, &kPersons[PER_KING], offs, size);
+ size = (char *)(&_persons[PER_UNKN_3DE]) - (char *)(&_persons[PER_KING]);
+ loadpartoffile(2495, &_persons[PER_KING], offs, size);
offs += size;
size = (char *)(&_tapes[16]) - (char *)(&_tapes[0]);
loadpartoffile(2495, &_tapes[0], offs, size);
offs += size;
bandeoffsetin();
- size = (char *)(&kTabletView[6]) - (char *)(&kTabletView[0]);
- loadpartoffile(2495, &kTabletView[0], offs, size);
+ size = (char *)(&_tabletView[6]) - (char *)(&_tabletView[0]);
+ loadpartoffile(2495, &_tabletView[0], offs, size);
offs += size;
size = (char *)(&_gameDialogs[10240]) - (char *)(&_gameDialogs[0]); //TODO: const size 10240
loadpartoffile(2495, &_gameDialogs[0], offs, size);
@@ -8319,24 +8319,24 @@ void EdenGame::loadgame(char *name) {
vavaoffsetin();
size = (char *)(&_gameIcons[134]) - (char *)(&_gameIcons[123]);
CLFile_Read(handle, &_gameIcons[123], &size);
- size = (char *)(&kAreasTable[12]) - (char *)(&kAreasTable[0]);
- CLFile_Read(handle, &kAreasTable[0], &size);
+ size = (char *)(&_areasTable[12]) - (char *)(&_areasTable[0]);
+ CLFile_Read(handle, &_areasTable[0], &size);
lieuoffsetin();
size = (char *)(&_gameRooms[423]) - (char *)(&_gameRooms[0]);
CLFile_Read(handle, &_gameRooms[0], &size);
size = (char *)(&_objects[42]) - (char *)(&_objects[0]);
CLFile_Read(handle, &_objects[0], &size);
- size = (char *)(&kObjectLocations[45]) - (char *)(&kObjectLocations[0]);
- CLFile_Read(handle, &kObjectLocations[0], &size);
+ size = (char *)(&_objectLocations[45]) - (char *)(&_objectLocations[0]);
+ CLFile_Read(handle, &_objectLocations[0], &size);
size = (char *)(&followerList[14]) - (char *)(&followerList[13]);
CLFile_Read(handle, &followerList[13], &size);
- size = (char *)(&kPersons[55]) - (char *)(&kPersons[0]);
- CLFile_Read(handle, &kPersons[0], &size);
+ size = (char *)(&_persons[55]) - (char *)(&_persons[0]);
+ CLFile_Read(handle, &_persons[0], &size);
size = (char *)(&_tapes[16]) - (char *)(&_tapes[0]);
CLFile_Read(handle, &_tapes[0], &size);
bandeoffsetin();
- size = (char *)(&kTabletView[6]) - (char *)(&kTabletView[0]);
- CLFile_Read(handle, &kTabletView[0], &size);
+ size = (char *)(&_tabletView[6]) - (char *)(&_tabletView[0]);
+ CLFile_Read(handle, &_tabletView[0], &size);
size = (char *)(&_gameDialogs[10240]) - (char *)(&_gameDialogs[0]); //TODO: const size 10240
CLFile_Read(handle, &_gameDialogs[0], &size);
@@ -8361,11 +8361,11 @@ void EdenGame::vavaoffsetout() {
OFSOUT(_globals->_nextRoomIcon, _gameIcons, Icon);
OFSOUT(_globals->_roomPtr, _gameRooms, Room);
OFSOUT(_globals->_citaAreaFirstRoom, _gameRooms, Room);
- OFSOUT(_globals->_areaPtr, kAreasTable, Area);
- OFSOUT(_globals->_lastAreaPtr, kAreasTable, Area);
- OFSOUT(_globals->_curAreaPtr, kAreasTable, Area);
- OFSOUT(_globals->_characterPtr, kPersons, perso_t);
- OFSOUT(_globals->_roomCharacterPtr, kPersons, perso_t);
+ OFSOUT(_globals->_areaPtr, _areasTable, Area);
+ OFSOUT(_globals->_lastAreaPtr, _areasTable, Area);
+ OFSOUT(_globals->_curAreaPtr, _areasTable, Area);
+ OFSOUT(_globals->_characterPtr, _persons, perso_t);
+ OFSOUT(_globals->_roomCharacterPtr, _persons, perso_t);
}
void EdenGame::vavaoffsetin() {
@@ -8377,33 +8377,33 @@ void EdenGame::vavaoffsetin() {
OFSIN(_globals->_nextRoomIcon, _gameIcons, Icon);
OFSIN(_globals->_roomPtr, _gameRooms, Room);
OFSIN(_globals->_citaAreaFirstRoom, _gameRooms, Room);
- OFSIN(_globals->_areaPtr, kAreasTable, Area);
- OFSIN(_globals->_lastAreaPtr, kAreasTable, Area);
- OFSIN(_globals->_curAreaPtr, kAreasTable, Area);
- OFSIN(_globals->_characterPtr, kPersons, perso_t);
- OFSIN(_globals->_roomCharacterPtr, kPersons, perso_t);
+ OFSIN(_globals->_areaPtr, _areasTable, Area);
+ OFSIN(_globals->_lastAreaPtr, _areasTable, Area);
+ OFSIN(_globals->_curAreaPtr, _areasTable, Area);
+ OFSIN(_globals->_characterPtr, _persons, perso_t);
+ OFSIN(_globals->_roomCharacterPtr, _persons, perso_t);
}
void EdenGame::lieuoffsetout() {
for (int i = 0; i < 12; i++)
- OFSOUT(kAreasTable[i]._citadelRoomPtr, _gameRooms, Room);
+ OFSOUT(_areasTable[i]._citadelRoomPtr, _gameRooms, Room);
}
void EdenGame::lieuoffsetin() {
for (int i = 0; i < 12; i++)
- OFSIN(kAreasTable[i]._citadelRoomPtr, _gameRooms, Room);
+ OFSIN(_areasTable[i]._citadelRoomPtr, _gameRooms, Room);
}
void EdenGame::bandeoffsetout() {
for (int i = 0; i < 16; i++) {
- OFSOUT(_tapes[i]._perso, kPersons, perso_t);
+ OFSOUT(_tapes[i]._perso, _persons, perso_t);
OFSOUT(_tapes[i]._dialog, _gameDialogs, Dialog);
}
}
void EdenGame::bandeoffsetin() {
for (int i = 0; i < 16; i++) {
- OFSIN(_tapes[i]._perso, kPersons, perso_t);
+ OFSIN(_tapes[i]._perso, _persons, perso_t);
OFSIN(_tapes[i]._dialog, _gameDialogs, Dialog);
}
}
diff --git a/engines/cryo/eden.h b/engines/cryo/eden.h
index 79ea63a..9b0b75b 100644
--- a/engines/cryo/eden.h
+++ b/engines/cryo/eden.h
@@ -740,25 +740,25 @@ private:
// Loaded from cryo.dat
Follower followerList[15];
- byte kLabyrinthPath[70];
- char kDinoSpeedForCitaLevel[16];
- char kTabletView[12];
- char kPersoRoomBankTable[84]; // special character backgrounds for specific rooms
+ byte _labyrinthPath[70];
+ char _dinoSpeedForCitadelLevel[16];
+ char _tabletView[12];
+ char _personRoomBankTable[84]; // special character backgrounds for specific rooms
// Loaded from cryo.dat - Area transition descriptors
- Goto gotos[130];
+ Goto _gotos[130];
object_t _objects[42];
- uint16 kObjectLocations[45];
- perso_t kPersons[58];
+ uint16 _objectLocations[45];
+ perso_t _persons[58];
Citadel _citadelList[7];
// Loaded from cryo.dat
Common::Rect _characterRects[19];
byte _characterArray[20][5];
- Area kAreasTable[12];
+ Area _areasTable[12];
int16 tab_2CEF0[64];
int16 tab_2CF70[64];
- byte kActionCursors[299];
+ byte _actionCursors[299];
byte _mapMode[12];
byte _cubeTextureCoords[3][6 * 2 * 3 * 2];
float _translationZ = -3400;
Commit: a3f59d8433230cbb279092c8e7876522a7830fd2
https://github.com/scummvm/scummvm/commit/a3f59d8433230cbb279092c8e7876522a7830fd2
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T18:02:47+02:00
Commit Message:
CRYO: Remove one more usage of sizeof()
Changed paths:
devtools/create_cryo/create_cryo_dat.cpp
diff --git a/devtools/create_cryo/create_cryo_dat.cpp b/devtools/create_cryo/create_cryo_dat.cpp
index 875acad..5a693d9 100644
--- a/devtools/create_cryo/create_cryo_dat.cpp
+++ b/devtools/create_cryo/create_cryo_dat.cpp
@@ -110,7 +110,7 @@ static void emitStatic(FILE *f) {
fwrite(kDinoSpeedForCitaLevel, 1, kNumDinoSpeedForCitaLevel, f);
fwrite(kTabletView, 1, kNumTabletView, f);
fwrite(kPersoRoomBankTable, 1, kNumPersoRoomBankTable, f);
- fwrite(gotos, sizeof(Goto), kNumGotos, f);
+ fwrite(gotos, 5, kNumGotos, f); // sizeof(Goto)
for (int i = 0; i < kNumObjects; i++) {
writeLE<byte>(f, _objects[i]._id);
Commit: fefad640cd171fd17f8a7e08326c7e6f3e91d684
https://github.com/scummvm/scummvm/commit/fefad640cd171fd17f8a7e08326c7e6f3e91d684
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T18:04:42+02:00
Commit Message:
CRYO: Change the version of cryo.dat to be a 32-bit integer (1/2)
Though it's unlikely that we'll ever have that many changes, it's
better to provision for more space now, for versioning
Changed paths:
devtools/create_cryo/create_cryo_dat.cpp
diff --git a/devtools/create_cryo/create_cryo_dat.cpp b/devtools/create_cryo/create_cryo_dat.cpp
index 5a693d9..ca6d4bf 100644
--- a/devtools/create_cryo/create_cryo_dat.cpp
+++ b/devtools/create_cryo/create_cryo_dat.cpp
@@ -27,7 +27,7 @@
#include "eden_rooms.h"
#include "eden_static.h"
-#define CRYO_DAT_VER 1 // 1 byte
+#define CRYO_DAT_VER 1 // 32-bit integer
template <typename T>
static void writeLE(FILE *f, T value) {
@@ -192,7 +192,7 @@ static int emitData(char *outputFilename) {
printf("Generating %s...\n", outputFilename);
fwrite("CRYODATA", 8, 1, f);
- writeLE<byte>(f, CRYO_DAT_VER);
+ writeLE<uint32>(f, CRYO_DAT_VER);
emitIcons(f);
emitRooms(f);
Commit: deb0857f6822274947c4e63aa801efc992748e44
https://github.com/scummvm/scummvm/commit/deb0857f6822274947c4e63aa801efc992748e44
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T18:05:07+02:00
Commit Message:
CRYO: Change the version of cryo.dat to be a 32-bit integer (2/2)
Though it's unlikely that we'll ever have that many changes, it's
better to provision for more space now, for versioning
Changed paths:
engines/cryo/eden.cpp
diff --git a/engines/cryo/eden.cpp b/engines/cryo/eden.cpp
index b6064c7..4807a94 100644
--- a/engines/cryo/eden.cpp
+++ b/engines/cryo/eden.cpp
@@ -4778,7 +4778,7 @@ void EdenGame::loadpermfiles() {
if (strcmp(headerId, "CRYODATA"))
error("Invalid aux data file");
- if (f.readByte() != CRYO_DAT_VER)
+ if (f.readUint32LE() != CRYO_DAT_VER)
error("Incorrect aux data version");
if (dataSize != expectedDataSize)
Commit: fffe7c786752fdad7098e21bcf2e4a412c9df283
https://github.com/scummvm/scummvm/commit/fffe7c786752fdad7098e21bcf2e4a412c9df283
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T18:15:41+02:00
Commit Message:
CRYO: Add missing int32 typedef to create_cryo
Changed paths:
devtools/create_cryo/eden.h
diff --git a/devtools/create_cryo/eden.h b/devtools/create_cryo/eden.h
index dac0766..91ad394 100644
--- a/devtools/create_cryo/eden.h
+++ b/devtools/create_cryo/eden.h
@@ -25,6 +25,8 @@
typedef unsigned char byte;
typedef short int16;
typedef unsigned short uint16;
+typedef int uint32;
+typedef unsigned int uint32;
struct icon_t {
int16 sx;
Commit: 01e7b4edcf1ac22e1e3ad8889d42fe3469468b12
https://github.com/scummvm/scummvm/commit/01e7b4edcf1ac22e1e3ad8889d42fe3469468b12
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T20:42:07+02:00
Commit Message:
CRYO: Fix typos in some sizeof() values
Changed paths:
engines/cryo/eden.cpp
diff --git a/engines/cryo/eden.cpp b/engines/cryo/eden.cpp
index 4807a94..18d8be2 100644
--- a/engines/cryo/eden.cpp
+++ b/engines/cryo/eden.cpp
@@ -4603,7 +4603,7 @@ void EdenGame::loadIconFile(uint16 num, Icon *buffer) {
debug("* Loading icon - Resource %d (%s) at 0x%X, %d bytes", num, file->_name.c_str(), offs, size);
_bigfile.seek(offs, SEEK_SET);
- int count = size / 14; // sizeof(Icon)
+ int count = size / 18; // sizeof(Icon)
for (int i = 0; i < count; i++) {
if (_vm->getPlatform() == Common::kPlatformMacintosh) {
buffer[i].sx = _bigfile.readSint16BE();
@@ -4638,7 +4638,7 @@ void EdenGame::loadRoomFile(uint16 num, Room *buffer) {
debug("* Loading room - Resource %d (%s) at 0x%X, %d bytes", num, file->_name.c_str(), offs, size);
_bigfile.seek(offs, SEEK_SET);
- int count = size / 11; // sizeof(Room)
+ int count = size / 14; // sizeof(Room)
for (int i = 0; i < count; i++) {
buffer[i]._id = _bigfile.readByte();
for (int j = 0; j < 4; j++)
@@ -4750,27 +4750,29 @@ void EdenGame::loadpermfiles() {
const int kNumActionCursors = 299;
const int expectedDataSize =
- kNumIcons * 14 + // sizeof(Icon)
- kNumRooms * 11 + // sizeof(Room)
+ kNumIcons * 18 + // sizeof(Icon)
+ kNumRooms * 14 + // sizeof(Room)
kNumFollowers * 16 + // sizeof(Follower)
kNumLabyrinthPath +
kNumDinoSpeedForCitaLevel +
kNumTabletView +
kNumPersoRoomBankTable +
kNumGotos * 5 + // sizeof(Goto)
- kNumObjects * 10 + // sizeof(object_t)
+ kNumObjects * 12 + // sizeof(object_t)
kNumObjectLocations * 2 +
kNumPersons * 18 + // sizeof(perso_t)
- kNumCitadel * 6 + // sizeof(Citadel)
+ kNumCitadel * 34 + // sizeof(Citadel)
kNumCharacterRects * 8 +
kNumCharacters * 5 +
kNumAreas * 10 + // (sizeof(Area) - 4)
64 * 2 +
64 * 2 +
- kNumActionCursors;
+ kNumActionCursors +
+ 12 +
+ 3 * 6 * 2 * 3 * 2;
if (f.open("cryo.dat")) {
- const int dataSize = f.size() - 8 - 1; // CRYODATA + version
+ const int dataSize = f.size() - 8 - 4; // CRYODATA + version
char headerId[9];
f.read(headerId, 8);
Commit: c0d9752730b3f02ed5dc968643a3c5e9a09f1880
https://github.com/scummvm/scummvm/commit/c0d9752730b3f02ed5dc968643a3c5e9a09f1880
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T20:47:15+02:00
Commit Message:
CRYO: Add cryo.dat to engine-data
Changed paths:
A dists/engine-data/cryo.dat
dists/engine-data/README
diff --git a/dists/engine-data/README b/dists/engine-data/README
index 06939db..e564b18 100644
--- a/dists/engine-data/README
+++ b/dists/engine-data/README
@@ -4,6 +4,9 @@ engine-data README
access.dat
TODO
+cryo.dat
+This file contains a lot of hardcoded tables used by the Cryo engine.
+
drascula.dat
TODO
diff --git a/dists/engine-data/cryo.dat b/dists/engine-data/cryo.dat
new file mode 100644
index 0000000..4f23480
Binary files /dev/null and b/dists/engine-data/cryo.dat differ
Commit: 5d119b603819add698ad852c6136083e26e64309
https://github.com/scummvm/scummvm/commit/5d119b603819add698ad852c6136083e26e64309
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T20:48:52+02:00
Commit Message:
CRYO: Add cryo.dat to all messages related to it
Changed paths:
engines/cryo/eden.cpp
diff --git a/engines/cryo/eden.cpp b/engines/cryo/eden.cpp
index 18d8be2..f1d0f18 100644
--- a/engines/cryo/eden.cpp
+++ b/engines/cryo/eden.cpp
@@ -4778,15 +4778,15 @@ void EdenGame::loadpermfiles() {
f.read(headerId, 8);
headerId[8] = '\0';
if (strcmp(headerId, "CRYODATA"))
- error("Invalid aux data file");
+ error("Invalid cryo.dat aux data file");
if (f.readUint32LE() != CRYO_DAT_VER)
- error("Incorrect aux data version");
+ error("Incorrect data version for cryo.dat");
if (dataSize != expectedDataSize)
- error("Mismatching data in aux data file (got %d, expected %d)", dataSize, expectedDataSize);
+ error("Mismatching data in cryo.dat aux data file (got %d, expected %d)", dataSize, expectedDataSize);
} else
- error("Can not load aux data");
+ error("Can not load cryo.dat");
switch (_vm->getPlatform()) {
case Common::kPlatformDOS:
Commit: 724730dbcc0c897a2b4a5e4daec3a81865c9aec1
https://github.com/scummvm/scummvm/commit/724730dbcc0c897a2b4a5e4daec3a81865c9aec1
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T21:02:19+02:00
Commit Message:
CRYO: Fix typo in create_cryo
Changed paths:
devtools/create_cryo/eden.h
diff --git a/devtools/create_cryo/eden.h b/devtools/create_cryo/eden.h
index 91ad394..771c830 100644
--- a/devtools/create_cryo/eden.h
+++ b/devtools/create_cryo/eden.h
@@ -25,7 +25,7 @@
typedef unsigned char byte;
typedef short int16;
typedef unsigned short uint16;
-typedef int uint32;
+typedef int int32;
typedef unsigned int uint32;
struct icon_t {
Commit: e95ed8eb9053d4b772429fec99f05d3fbede1472
https://github.com/scummvm/scummvm/commit/e95ed8eb9053d4b772429fec99f05d3fbede1472
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T21:51:36+02:00
Commit Message:
CRYO: Clean up and document some variables
Changed paths:
engines/cryo/defs.h
engines/cryo/eden.cpp
engines/cryo/eden.h
diff --git a/engines/cryo/defs.h b/engines/cryo/defs.h
index 7952fef..c69600c 100644
--- a/engines/cryo/defs.h
+++ b/engines/cryo/defs.h
@@ -806,10 +806,6 @@ struct Cube {
Point3D *_vertices;
};
-extern float _translationZ;
-extern float flt_2DF80;
-extern float flt_2DF84;
-
struct XYZ {
signed short x, y, z;
};
diff --git a/engines/cryo/eden.cpp b/engines/cryo/eden.cpp
index f1d0f18..05dac78 100644
--- a/engines/cryo/eden.cpp
+++ b/engines/cryo/eden.cpp
@@ -49,13 +49,10 @@
namespace Cryo {
#define CRYO_DAT_VER 1 // 1 byte
-
-int16 _torchTick = 0;
-int16 _glowIndex = 0;
-int16 _torchCurIndex = 0;
-
-bool _allowDoubled = true;
-int _cursCenter = 11;
+#define Z_RESET -3400
+#define Z_STEP 200
+#define Z_UP 1
+#define Z_DOWN -1
EdenGame::EdenGame(CryoEngine *vm) : _vm(vm), kMaxMusicSize(2200000) {
static uint8 statTab2CB1E[8][4] = {
@@ -170,6 +167,14 @@ EdenGame::EdenGame(CryoEngine *vm) : _vm(vm), kMaxMusicSize(2200000) {
for (int j = 0; j < 4; j++)
tab_2CB1E[i][j] = statTab2CB1E[i][j];
}
+
+ _translationZ = Z_RESET;
+ _zDirection = Z_UP;
+
+ _torchTick = 0;
+ _glowIndex = 0;
+ _torchCurIndex = 0;
+ _cursCenter = 11;
}
void EdenGame::removeConsole() {
@@ -5875,19 +5880,18 @@ void EdenGame::signon(const char *s) {
void EdenGame::FRDevents() {
_vm->pollEvents();
- if (_allowDoubled) {
+
#if 0 // CLKeyboard_IsScanCodeDown currently always returns false
- if (_vm->isScanCodeDown(0x30)) { //TODO: const
- if (!_keyboardHeld) {
- _doubledScreen = !_doubledScreen;
- _mainView->_doubled = _doubledScreen;
- CLBlitter_FillScreenView(0);
- _keyboardHeld = true;
- }
- } else
+ if (_vm->isScanCodeDown(0x30)) { //TODO: const
+ if (!_keyboardHeld) {
+ _doubledScreen = !_doubledScreen;
+ _mainView->_doubled = _doubledScreen;
+ CLBlitter_FillScreenView(0);
+ _keyboardHeld = true;
+ }
+ } else
#endif
- _keyboardHeld = false;
- }
+ _keyboardHeld = false;
int16 mouseY;
int16 mouseX;
@@ -6361,19 +6365,19 @@ void EdenGame::showMovie(char arg1) {
CLBlitter_CopyView2Screen(_hnmView);
assert(_vm->_screenView->_pitch == 320);
_vm->pollEvents();
- if (_allowDoubled) {
+
#if 0 // CLKeyboard_IsScanCodeDown currently always returns false
- if (_vm->isScanCodeDown(0x30)) { //TODO: const
- if (!_keyboardHeld) {
- _doubledScreen = !_doubledScreen;
- _hnmView->_doubled = _doubledScreen; //TODO: but mainview ?
- CLBlitter_FillScreenView(0);
- _keyboardHeld = true;
- }
- } else
+ if (_vm->isScanCodeDown(0x30)) { //TODO: const
+ if (!_keyboardHeld) {
+ _doubledScreen = !_doubledScreen;
+ _hnmView->_doubled = _doubledScreen; //TODO: but mainview ?
+ CLBlitter_FillScreenView(0);
+ _keyboardHeld = true;
+ }
+ } else
#endif
- _keyboardHeld = false;
- }
+ _keyboardHeld = false;
+
if (arg1) {
if (_vm->isMouseButtonDown()) {
if (!_mouseHeld) {
@@ -8889,14 +8893,14 @@ void EdenGame::Eden_dep_and_rot() {
case 5:
_rotationAngleZ = 0;
_rotationAngleX = 0;
- _translationZ += flt_2DF84;
- if ((_translationZ < -3600.0 + flt_2DF80) || _translationZ > flt_2DF80)
- flt_2DF84 = -flt_2DF84;
+ _translationZ += _zDirection * Z_STEP;
+ if ((_translationZ < -3600 + Z_RESET) || _translationZ > Z_RESET)
+ _zDirection = -_zDirection;
break;
case 6:
_rotationAngleZ = 0;
_rotationAngleX = 0;
- _translationZ = flt_2DF80;
+ _translationZ = Z_RESET;
break;
case 7:
_rotationAngleZ -= 2;
@@ -8908,22 +8912,22 @@ void EdenGame::Eden_dep_and_rot() {
case 8:
_rotationAngleZ = 0;
_rotationAngleX = 0;
- _translationZ = flt_2DF80;
+ _translationZ = Z_RESET;
break;
case 9:
_rotationAngleZ = 0;
_rotationAngleX = 0;
- _translationZ = flt_2DF80;
+ _translationZ = Z_RESET;
break;
}
}
void EdenGame::restoreZDEP() {
- flt_2DF84 = 200.0;
- if (_translationZ < flt_2DF80)
- _translationZ += flt_2DF84;
- if (_translationZ > flt_2DF80)
- _translationZ -= flt_2DF84;
+ _zDirection = Z_UP;
+ if (_translationZ < Z_RESET)
+ _translationZ += _zDirection * Z_STEP;
+ if (_translationZ > Z_RESET)
+ _translationZ -= _zDirection * Z_STEP;
}
// Original name: affiche_polygone_mapping
diff --git a/engines/cryo/eden.h b/engines/cryo/eden.h
index 9b0b75b..8133ff7 100644
--- a/engines/cryo/eden.h
+++ b/engines/cryo/eden.h
@@ -761,9 +761,16 @@ private:
byte _actionCursors[299];
byte _mapMode[12];
byte _cubeTextureCoords[3][6 * 2 * 3 * 2];
- float _translationZ = -3400;
- float flt_2DF80 = -3400;
- float flt_2DF84 = 200;
+
+ int32 _translationZ;
+ int8 _zDirection; // 1 (up) or -1 (down)
+
+ // Torch/glow related
+ int16 _torchTick;
+ int16 _glowIndex;
+ int16 _torchCurIndex;
+
+ int _cursCenter;
};
}
Commit: 8eb38c09330159b66eca4dee1889f120cb844923
https://github.com/scummvm/scummvm/commit/8eb38c09330159b66eca4dee1889f120cb844923
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T21:53:10+02:00
Commit Message:
CRYO: Rename variables to conform to our code formatting guidelines
Changed paths:
engines/cryo/defs.h
engines/cryo/eden.cpp
engines/cryo/eden.h
diff --git a/engines/cryo/defs.h b/engines/cryo/defs.h
index c69600c..617172d 100644
--- a/engines/cryo/defs.h
+++ b/engines/cryo/defs.h
@@ -764,11 +764,6 @@ struct Citadel {
int16 _video[8];
};
-/////////////// vars
-
-extern Follower followerList[];
-
-
/*
Labyrinth of Mo
diff --git a/engines/cryo/eden.cpp b/engines/cryo/eden.cpp
index 05dac78..9bd2e8d 100644
--- a/engines/cryo/eden.cpp
+++ b/engines/cryo/eden.cpp
@@ -287,7 +287,7 @@ void EdenGame::displayFollower(Follower *follower, int16 x, int16 y) {
void EdenGame::characterInMirror() {
Icon *icon1 = &_gameIcons[3];
Icon *icon = &_gameIcons[_roomIconsBase];
- Follower *suiveur = followerList;
+ Follower *suiveur = _followerList;
int16 num = 1;
for (int i = 0; i < 16; i++) {
if (_globals->_party & (1 << i))
@@ -2661,7 +2661,7 @@ void EdenGame::closeCharacterScreen() {
// Original name: af_fondsuiveur
void EdenGame::displayBackgroundFollower() {
char id = _globals->_characterPtr->_id;
- for (Follower *follower = followerList; follower->_id != -1; follower++) {
+ for (Follower *follower = _followerList; follower->_id != -1; follower++) {
if (follower->_id == id) {
int bank = 326;
if (follower->sx >= 320)
@@ -4835,15 +4835,15 @@ void EdenGame::loadpermfiles() {
// Read the common static data
for (int i = 0; i < kNumFollowers; i++) {
- followerList[i]._id = f.readSByte();
- followerList[i]._spriteNum = f.readSByte();
- followerList[i].sx = f.readSint16LE();
- followerList[i].sy = f.readSint16LE();
- followerList[i].ex = f.readSint16LE();
- followerList[i].ey = f.readSint16LE();
- followerList[i]._spriteBank = f.readSint16LE();
- followerList[i].ff_C = f.readSint16LE();
- followerList[i].ff_E = f.readSint16LE();
+ _followerList[i]._id = f.readSByte();
+ _followerList[i]._spriteNum = f.readSByte();
+ _followerList[i].sx = f.readSint16LE();
+ _followerList[i].sy = f.readSint16LE();
+ _followerList[i].ex = f.readSint16LE();
+ _followerList[i].ey = f.readSint16LE();
+ _followerList[i]._spriteBank = f.readSint16LE();
+ _followerList[i].ff_C = f.readSint16LE();
+ _followerList[i].ff_E = f.readSint16LE();
}
f.read(_labyrinthPath, kNumLabyrinthPath);
@@ -8104,7 +8104,7 @@ void EdenGame::phase352() {
_personRoomBankTable[30] = 26;
_persons[PER_EVE]._spriteBank = 9;
_persons[PER_EVE]._targetLoc = 8;
- followerList[13]._spriteNum = 2;
+ _followerList[13]._spriteNum = 2;
dialautoon();
_gameRooms[288]._exits[0] = 0xFF;
_gameRooms[289]._exits[0] = 0xFF;
@@ -8240,8 +8240,8 @@ h->write(ptr, *size);
CLFile_Write(handle, &_objects[0], &size);
size = (char *)(&_objectLocations[45]) - (char *)(&_objectLocations[0]);
CLFile_Write(handle, &_objectLocations[0], &size);
- size = (char *)(&followerList[14]) - (char *)(&followerList[13]);
- CLFile_Write(handle, &followerList[13], &size);
+ size = (char *)(&_followerList[14]) - (char *)(&_followerList[13]);
+ CLFile_Write(handle, &_followerList[13], &size);
size = (char *)(&_persons[PER_UNKN_3DE]) - (char *)(&_persons[PER_KING]);
CLFile_Write(handle, &_persons[PER_KING], &size);
bandeoffsetout();
@@ -8289,8 +8289,8 @@ void EdenGame::loadrestart() {
size = (char *)(&_objectLocations[45]) - (char *)(&_objectLocations[0]);
loadpartoffile(2495, &_objectLocations[0], offs, size);
offs += size;
- size = (char *)(&followerList[14]) - (char *)(&followerList[13]);
- loadpartoffile(2495, &followerList[13], offs, size);
+ size = (char *)(&_followerList[14]) - (char *)(&_followerList[13]);
+ loadpartoffile(2495, &_followerList[13], offs, size);
offs += size;
size = (char *)(&_persons[PER_UNKN_3DE]) - (char *)(&_persons[PER_KING]);
loadpartoffile(2495, &_persons[PER_KING], offs, size);
@@ -8334,8 +8334,8 @@ void EdenGame::loadgame(char *name) {
CLFile_Read(handle, &_objects[0], &size);
size = (char *)(&_objectLocations[45]) - (char *)(&_objectLocations[0]);
CLFile_Read(handle, &_objectLocations[0], &size);
- size = (char *)(&followerList[14]) - (char *)(&followerList[13]);
- CLFile_Read(handle, &followerList[13], &size);
+ size = (char *)(&_followerList[14]) - (char *)(&_followerList[13]);
+ CLFile_Read(handle, &_followerList[13], &size);
size = (char *)(&_persons[55]) - (char *)(&_persons[0]);
CLFile_Read(handle, &_persons[0], &size);
size = (char *)(&_tapes[16]) - (char *)(&_tapes[0]);
diff --git a/engines/cryo/eden.h b/engines/cryo/eden.h
index 8133ff7..e3078b1 100644
--- a/engines/cryo/eden.h
+++ b/engines/cryo/eden.h
@@ -739,7 +739,7 @@ private:
const unsigned int kMaxMusicSize; // largest .mus file size
// Loaded from cryo.dat
- Follower followerList[15];
+ Follower _followerList[15];
byte _labyrinthPath[70];
char _dinoSpeedForCitadelLevel[16];
char _tabletView[12];
Commit: 7739d0c5c11021e0c3b28509181f052d573bf4ff
https://github.com/scummvm/scummvm/commit/7739d0c5c11021e0c3b28509181f052d573bf4ff
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2017-02-11T22:40:00+01:00
Commit Message:
Merge pull request #899 from bluegr/cryo_dat
CRYO: Move all static engine data into cryo.dat
Changed paths:
A devtools/create_cryo/create_cryo_dat.cpp
A devtools/create_cryo/eden_static.h
A dists/engine-data/cryo.dat
R devtools/create_cryo/create_led_dat.cpp
R engines/cryo/staticdata.cpp
devtools/create_cryo/eden.h
devtools/create_cryo/module.mk
dists/engine-data/README
engines/cryo/defs.h
engines/cryo/eden.cpp
engines/cryo/eden.h
engines/cryo/module.mk
More information about the Scummvm-git-logs
mailing list