aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/script.cpp
diff options
context:
space:
mode:
authorTravis Howell2007-12-26 01:28:03 +0000
committerTravis Howell2007-12-26 01:28:03 +0000
commitd9f28974ef5737ad77595986195a4893a000a88b (patch)
treefe2153a7745750a9d3c5934e28314fd28e76693f /engines/agos/script.cpp
parent5327417c562da6c293ca0d2f5f6b118ece73735e (diff)
downloadscummvm-rg350-d9f28974ef5737ad77595986195a4893a000a88b.tar.gz
scummvm-rg350-d9f28974ef5737ad77595986195a4893a000a88b.tar.bz2
scummvm-rg350-d9f28974ef5737ad77595986195a4893a000a88b.zip
Add alternative hack to main branch, to skip largest speech segment in Simon the Sorcerer 1, when using DS port.
svn-id: r30001
Diffstat (limited to 'engines/agos/script.cpp')
-rw-r--r--engines/agos/script.cpp37
1 files changed, 35 insertions, 2 deletions
diff --git a/engines/agos/script.cpp b/engines/agos/script.cpp
index 33ef3141ce..19df5c0b76 100644
--- a/engines/agos/script.cpp
+++ b/engines/agos/script.cpp
@@ -105,7 +105,19 @@ void AGOSEngine::o_notZero() {
void AGOSEngine::o_eq() {
// 13: equal
uint tmp = getNextVarContents();
- setScriptCondition(tmp == getVarOrWord());
+ uint tmp2 = getVarOrWord();
+
+#ifdef __DS__
+ // HACK: Skip attempt to read Calypso's letter manually,
+ // due to speech segment been too large to fit into memory
+ if (getGameType() == GType_SIMON1 && _currentTable) {
+ if (_currentTable->id == 71 && tmp == 1 && tmp2 == 1) {
+ setScriptCondition(false);
+ return;
+ }
+ }
+#endif
+ setScriptCondition(tmp == tmp2);
}
void AGOSEngine::o_notEq() {
@@ -404,8 +416,29 @@ void AGOSEngine::o_done() {
void AGOSEngine::o_process() {
// 71: start subroutine
Subroutine *sub = getSubroutineByID(getVarOrWord());
- if (sub != NULL)
+ if (sub != NULL) {
+#ifdef __DS__
+ // HACK: Skip scene of Simon reading letter from Calypso
+ // due to speech segment been too large to fit into memory
+ if (getGameType() == GType_SIMON1 && sub->id == 2922) {
+ // set parent special
+ _noParentNotify = true;
+ setItemParent(derefItem(16), me());
+ _noParentNotify = false;
+
+ // set parent special
+ _noParentNotify = true;
+ setItemParent(derefItem(14), me());
+ _noParentNotify = false;
+
+ // set item parent
+ setItemParent(derefItem(12), me());
+
+ return;
+ }
+#endif
startSubroutine(sub);
+ }
}
void AGOSEngine::o_when() {