From d9f28974ef5737ad77595986195a4893a000a88b Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Wed, 26 Dec 2007 01:28:03 +0000 Subject: Add alternative hack to main branch, to skip largest speech segment in Simon the Sorcerer 1, when using DS port. svn-id: r30001 --- engines/agos/script.cpp | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'engines/agos/script.cpp') 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() { -- cgit v1.2.3