aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/hopkins/dialogs.cpp1
-rw-r--r--engines/sci/detection_tables.h40
-rw-r--r--engines/sci/parser/grammar.cpp4
-rw-r--r--engines/toon/anim.cpp4
4 files changed, 36 insertions, 13 deletions
diff --git a/engines/hopkins/dialogs.cpp b/engines/hopkins/dialogs.cpp
index 5b9fb8afc2..c8a478f93b 100644
--- a/engines/hopkins/dialogs.cpp
+++ b/engines/hopkins/dialogs.cpp
@@ -422,6 +422,7 @@ void DialogsManager::showInventory() {
if (cursorId != 1 && cursorId != 2 && cursorId != 3 && cursorId != 16) {
if (mouseButton == 2) {
_vm->_objectsMan->nextObjectIcon(newInventoryItem);
+ cursorId = _vm->_events->_mouseCursorId;
if (cursorId != 23)
_vm->_events->changeMouseCursor(cursorId);
}
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index c8137c8fb4..62d88ba1a5 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -696,6 +696,14 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::DE_DEU, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
+ // Gabriel Knight - French DOS Floppy (supplied my kervala in bug report #3611487)
+ // SCI interpreter version 2.000.000
+ {"gk1", "", {
+ {"resource.map", 0, "236e36cc847cdeafdd5e5fa8cba916ed", 10801},
+ {"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13033072},
+ AD_LISTEND},
+ Common::FR_FRA, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
+
// Gabriel Knight - English DOS CD (from jvprat)
// Executable scanning reports "2.000.000", VERSION file reports "01.100.000"
{"gk1", "CD", {
@@ -1911,17 +1919,6 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
- // Larry 3 - English DOS
- // SCI interpreter version 0.000.572
- {"lsl3", "", {
- {"resource.map", 0, "0b6bd3e039682830a51c5755c06591db", 5916},
- {"resource.001", 0, "f18441027154292836b973c655fa3175", 456722},
- {"resource.002", 0, "f18441027154292836b973c655fa3175", 578024},
- {"resource.003", 0, "f18441027154292836b973c655fa3175", 506807},
- {"resource.004", 0, "f18441027154292836b973c655fa3175", 513651},
- AD_LISTEND},
- Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
-
// Larry 3 - English DOS (supplied by ssburnout in bug report #3049193)
// 1.021 8x5.25" (label: Int#5.15.90)
{"lsl3", "", {
@@ -1950,6 +1947,27 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
+ // Larry 3 - English DOS
+ // SCI interpreter version 0.000.572
+ {"lsl3", "", {
+ {"resource.map", 0, "0b6bd3e039682830a51c5755c06591db", 5916},
+ {"resource.001", 0, "f18441027154292836b973c655fa3175", 456722},
+ {"resource.002", 0, "f18441027154292836b973c655fa3175", 578024},
+ {"resource.003", 0, "f18441027154292836b973c655fa3175", 506807},
+ {"resource.004", 0, "f18441027154292836b973c655fa3175", 513651},
+ AD_LISTEND},
+ Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
+
+ // Larry 3 - English DOS (supplied by kervala in bug report #3611488)
+ {"lsl3", "", {
+ {"resource.map", 0, "534d8946f10bc71a71b5bf89a84c31be", 5916},
+ {"resource.001", 0, "f18441027154292836b973c655fa3175", 456265},
+ {"resource.002", 0, "f18441027154292836b973c655fa3175", 577059},
+ {"resource.003", 0, "f18441027154292836b973c655fa3175", 506817},
+ {"resource.004", 0, "f18441027154292836b973c655fa3175", 513337},
+ AD_LISTEND},
+ Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
+
// Larry 3 - English DOS Non-Interactive Demo
// SCI interpreter version 0.000.530
{"lsl3", "Demo", {
diff --git a/engines/sci/parser/grammar.cpp b/engines/sci/parser/grammar.cpp
index 6e02eb75e3..26e3ec9238 100644
--- a/engines/sci/parser/grammar.cpp
+++ b/engines/sci/parser/grammar.cpp
@@ -386,8 +386,10 @@ ParseRuleList *Vocabulary::buildGNF(bool verbose) {
for (uint i = 1; i < _parserBranches.size(); i++) { // branch rule 0 is treated specially
ParseRule *rule = _vbuild_rule(&_parserBranches[i]);
- if (!rule)
+ if (!rule) {
+ freeRuleList(ntlist);
return NULL;
+ }
ntlist = _vocab_add_rule(ntlist, rule);
}
diff --git a/engines/toon/anim.cpp b/engines/toon/anim.cpp
index 1c85a8d798..a6744568f7 100644
--- a/engines/toon/anim.cpp
+++ b/engines/toon/anim.cpp
@@ -78,8 +78,10 @@ bool Animation::loadAnimation(const Common::String &file) {
delete[] _frames;
_frames = new AnimationFrame[_numFrames];
for (int32 e = 0; e < _numFrames; e++) {
- if (READ_LE_UINT32(data) != 0x12345678)
+ if (READ_LE_UINT32(data) != 0x12345678) {
+ delete[] finalBuffer;
return false;
+ }
int32 oldRef = READ_LE_UINT32(data + 4);
uint32 compressedSize = READ_LE_UINT32(data + 8);