[Scummvm-cvs-logs] scummvm master -> 4d94bdc0648f19b41be6d6bc313244165a3448a5
lavosspawn
lavosspawn at users.noreply.github.com
Thu Jul 21 19:25:40 CEST 2016
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
e40b4850f7 Modified compact implementation to work around bug
4d94bdc064 Verified the sky.cpt file that digitall provided in https://sourceforge.net/p/scummvm/bugs/2687/
Commit: e40b4850f7ac94766c90873a9ac3e598f31bba40
https://github.com/scummvm/scummvm/commit/e40b4850f7ac94766c90873a9ac3e598f31bba40
Author: lavosspawn (robert at goeffringmann.de)
Date: 2016-07-21T19:14:46+02:00
Commit Message:
Modified compact implementation to work around bug
https://sourceforge.net/p/scummvm/bugs/2687/
when playing Beneath a Steel Sky with our (slightly broken) sky.cpt
Changed paths:
engines/sky/compact.cpp
engines/sky/compact.h
engines/sky/logic.cpp
diff --git a/engines/sky/compact.cpp b/engines/sky/compact.cpp
index ee16593..ce62dcb 100644
--- a/engines/sky/compact.cpp
+++ b/engines/sky/compact.cpp
@@ -236,6 +236,8 @@ SkyCompact::SkyCompact() {
for (cnt = 0; cnt < _numSaveIds; cnt++)
_saveIds[cnt] = FROM_LE_16(_saveIds[cnt]);
_resetDataPos = _cptFile->pos();
+
+ checkAndFixOfficerBluntError();
}
SkyCompact::~SkyCompact() {
@@ -257,6 +259,21 @@ SkyCompact::~SkyCompact() {
delete _cptFile;
}
+/* WORKAROUND for bug #2687:
+ The first release of scummvm with externalized, binary compact data has one broken 16 bit reference.
+ When talking to Officer Blunt on ground level while in a crouched position, the game enters an
+ unfinishable state because Blunt jumps into the lake and can no longer be interacted with.
+ This fixes the problem when playing with a broken sky.cpt */
+#define SCUMMVM_BROKEN_TALK_INDEX 158
+void SkyCompact::checkAndFixOfficerBluntError() {
+ // Retrieve the table with the animation ids to use for talking
+ uint16 *talkTable = (uint16*)fetchCpt(CPT_TALK_TABLE_LIST);
+ if (talkTable[SCUMMVM_BROKEN_TALK_INDEX] == ID_SC31_GUARD_TALK) {
+ debug(1, "SKY.CPT with Officer Blunt bug encountered, fixing talk gfx.");
+ talkTable[SCUMMVM_BROKEN_TALK_INDEX] = ID_SC31_GUARD_TALK2;
+ }
+}
+
// needed for some workaround where the engine has to check if it's currently processing joey, for example
bool SkyCompact::cptIsId(Compact *cpt, uint16 id) {
return (cpt == fetchCpt(id));
diff --git a/engines/sky/compact.h b/engines/sky/compact.h
index 0bd5b49..86db0ba 100644
--- a/engines/sky/compact.h
+++ b/engines/sky/compact.h
@@ -78,6 +78,8 @@ public:
uint16 giveDataListLen(uint16 listNum);
const char *nameForType(uint16 type);
private:
+ void checkAndFixOfficerBluntError();
+
uint16 _numDataLists;
uint16 *_dataListLen;
uint16 *_rawBuf;
diff --git a/engines/sky/logic.cpp b/engines/sky/logic.cpp
index e1175f9..ad656ac 100644
--- a/engines/sky/logic.cpp
+++ b/engines/sky/logic.cpp
@@ -1717,7 +1717,7 @@ bool Logic::fnSpeakMe(uint32 targetId, uint32 mesgNum, uint32 animNum) {
on other screens, as the lack of speech files for these lines
will cause Foster's speech to be aborted if the timing is bad.
*/
- if (targetId == 0x4039 && animNum == 0x9B && Logic::_scriptVariables[SCREEN] != 38) {
+ if (targetId == ID_DANIELLE && animNum == 0x9B && Logic::_scriptVariables[SCREEN] != 38) {
return false;
}
Commit: 4d94bdc0648f19b41be6d6bc313244165a3448a5
https://github.com/scummvm/scummvm/commit/4d94bdc0648f19b41be6d6bc313244165a3448a5
Author: lavosspawn (robert at goeffringmann.de)
Date: 2016-07-21T19:24:31+02:00
Commit Message:
Verified the sky.cpt file that digitall provided in https://sourceforge.net/p/scummvm/bugs/2687/
The contained data corresponds to Revolution's original assembly sources, scummvm's initial file contained one incorrect reference.
This will stop Officer Blunt from swimming in the lake without any further sideeffects.
Changed paths:
dists/engine-data/sky.cpt
diff --git a/dists/engine-data/sky.cpt b/dists/engine-data/sky.cpt
index 24c2f03..cc55210 100644
Binary files a/dists/engine-data/sky.cpt and b/dists/engine-data/sky.cpt differ
More information about the Scummvm-git-logs
mailing list