aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2016-06-04 17:24:38 -0400
committerPaul Gilbert2016-07-15 19:19:45 -0400
commit764cfcb6d6ccad3046c9d96788b3edd5857f1c79 (patch)
treeddf2c37d07ef9d0c51cbd4f608afb288a970c93f
parent02b3526e297e38984eeb99c98b5c020f3a57da9e (diff)
downloadscummvm-rg350-764cfcb6d6ccad3046c9d96788b3edd5857f1c79.tar.gz
scummvm-rg350-764cfcb6d6ccad3046c9d96788b3edd5857f1c79.tar.bz2
scummvm-rg350-764cfcb6d6ccad3046c9d96788b3edd5857f1c79.zip
TITANIC: gcc compilation fixes
-rw-r--r--devtools/create_titanic/create_titanic_dat.cpp46
-rw-r--r--engines/titanic/core/game_object.cpp2
-rw-r--r--engines/titanic/pet_control/pet_control.cpp2
-rw-r--r--engines/titanic/support/font.cpp4
-rw-r--r--engines/titanic/true_talk/tt_npc_script.h2
5 files changed, 51 insertions, 5 deletions
diff --git a/devtools/create_titanic/create_titanic_dat.cpp b/devtools/create_titanic/create_titanic_dat.cpp
index 4999ee3f7d..b8d3565368 100644
--- a/devtools/create_titanic/create_titanic_dat.cpp
+++ b/devtools/create_titanic/create_titanic_dat.cpp
@@ -50,7 +50,7 @@
*/
#define VERSION_NUMBER 1
-#define HEADER_SIZE 0x340
+#define HEADER_SIZE 0x380
Common::File inputFile, outputFile;
Common::PEResources res;
@@ -309,6 +309,47 @@ void writeNumbers() {
dataOffset += size;
}
+void writeResponseTree() {
+ const int FILE_DIFF = 0x401C00;
+ outputFile.seek(dataOffset);
+
+ inputFile.seek(0x619500 - FILE_DIFF);
+ char buffer[32];
+ inputFile.read(buffer, 32);
+ if (strcmp(buffer, "ReadInt(): No number to read")) {
+ printf("Could not find tree data at expected position\n");
+ exit(1);
+ }
+
+ for (int idx = 0; idx < 1022; ++idx) {
+ inputFile.seek(0x619520 - FILE_DIFF + idx * 8);
+ uint id = inputFile.readLong();
+ uint offset = inputFile.readLong();
+
+ outputFile.writeLong(id);
+ if (!id) {
+ // An end of list id
+ } else if (offset >= 0x619520 && offset <= 0x61B510) {
+ // Offset to another table
+ outputFile.writeByte(0);
+ outputFile.writeLong((offset - 0x619520) / 8);
+ } else {
+ // Offset to ASCIIZ string
+ outputFile.writeByte(1);
+ inputFile.seek(offset - FILE_DIFF);
+ char c;
+ do {
+ c = inputFile.readByte();
+ outputFile.writeByte(c);
+ } while (c);
+ }
+ }
+
+ uint size = outputFile.size() - dataOffset;
+ writeEntryHeader("TEXT/TREE", dataOffset, size);
+ dataOffset += size;
+}
+
void writeHeader() {
// Write out magic string
const char *MAGIC_STR = "SVTN";
@@ -337,6 +378,8 @@ void writeData() {
writeResource("STFONT", 152);
writeResource("STFONT", 153);
+ writeResource("STARFIELD", 132);
+
writeResource("TEXT", "STVOCAB.TXT");
writeResource("TEXT", "JRQUOTES.TXT");
writeResource("TEXT", 155);
@@ -351,6 +394,7 @@ void writeData() {
writeStringArray("TEXT/REPLACEMENTS2", 0x21C120, 1576);
writeStringArray("TEXT/REPLACEMENTS3", 0x21D9C8, 82);
writeStringArray("TEXT/PRONOUNS", 0x22F718, 15);
+ writeResponseTree();
writeNumbers();
writeAllScriptResponses();
diff --git a/engines/titanic/core/game_object.cpp b/engines/titanic/core/game_object.cpp
index eaf1dfe9a8..624a4b0e67 100644
--- a/engines/titanic/core/game_object.cpp
+++ b/engines/titanic/core/game_object.cpp
@@ -237,6 +237,8 @@ void CGameObject::loadResource(const CString &name) {
case FILETYPE_MOVIE:
loadMovie(name);
break;
+ default:
+ break;
}
}
diff --git a/engines/titanic/pet_control/pet_control.cpp b/engines/titanic/pet_control/pet_control.cpp
index 85bac6a63e..51631a3e1b 100644
--- a/engines/titanic/pet_control/pet_control.cpp
+++ b/engines/titanic/pet_control/pet_control.cpp
@@ -495,7 +495,7 @@ void CPetControl::summonNPC(const CString &name, int val) {
void CPetControl::startPetTimer(uint timerIndex, uint firstDuration, uint duration, void *target) {
stopPetTimer(timerIndex);
- _timers[timerIndex]._id = (timerIndex, firstDuration, duration);
+ _timers[timerIndex]._id = addTimer(timerIndex, firstDuration, duration);
_timers[timerIndex]._target = target;
setTimer44(_timers[timerIndex]._id, 0);
}
diff --git a/engines/titanic/support/font.cpp b/engines/titanic/support/font.cpp
index f4466def31..07e4c28991 100644
--- a/engines/titanic/support/font.cpp
+++ b/engines/titanic/support/font.cpp
@@ -112,7 +112,7 @@ int STFont::stringWidth(const CString &text) const {
const char *srcP = text.c_str();
int total = 0;
char c;
- while (c = (*srcP++)) {
+ while ((c = *srcP++)) {
if (c == 26) {
// Skip over command parameter bytes
srcP += 3;
@@ -120,7 +120,7 @@ int STFont::stringWidth(const CString &text) const {
// Skip over command parameter bytes
srcP += 4;
} else if (c != '\n') {
- total += _chars[c]._width;
+ total += _chars[(byte)c]._width;
}
}
diff --git a/engines/titanic/true_talk/tt_npc_script.h b/engines/titanic/true_talk/tt_npc_script.h
index 15ff5303b7..7362d4db87 100644
--- a/engines/titanic/true_talk/tt_npc_script.h
+++ b/engines/titanic/true_talk/tt_npc_script.h
@@ -210,7 +210,7 @@ public:
* Sets the value for an NPC's dial
*/
virtual void setDial(int dialNum, int value);
-
+
/**
* Returns a dial's region number
*/