diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/agi/agi.cpp | 1 | ||||
-rw-r--r-- | engines/agi/appleIIgs_timedelay_overwrite.h | 19 | ||||
-rw-r--r-- | engines/agi/op_cmd.cpp | 14 |
3 files changed, 25 insertions, 9 deletions
diff --git a/engines/agi/agi.cpp b/engines/agi/agi.cpp index fdfb5dd644..4b344c07eb 100644 --- a/engines/agi/agi.cpp +++ b/engines/agi/agi.cpp @@ -633,6 +633,7 @@ void AgiEngine::artificialDelay_CycleDone() { // script, description, signature patch static const AgiArtificialDelayEntry artificialDelayTable[] = { { GID_PQ1, Common::kPlatformApple2GS, ARTIFICIALDELAYTYPE_NEWPICTURE, 1, 2, 2200 }, // Intro: music track is supposed to finish before credits screen. Developers must have assumed that room loading would take that long. + { GID_MH1, Common::kPlatformApple2GS, ARTIFICIALDELAYTYPE_NEWPICTURE, 155, 183, 2200 }, // Happens, when hitting fingers at bar { GID_AGIDEMO, Common::kPlatformUnknown, ARTIFICIALDELAYTYPE_END, -1, -1, 0 } }; diff --git a/engines/agi/appleIIgs_timedelay_overwrite.h b/engines/agi/appleIIgs_timedelay_overwrite.h index aca3b48a5a..9fcf318c49 100644 --- a/engines/agi/appleIIgs_timedelay_overwrite.h +++ b/engines/agi/appleIIgs_timedelay_overwrite.h @@ -49,10 +49,19 @@ static const AgiAppleIIgsDelayOverwriteRoomEntry appleIIgsDelayOverwriteKQ4[] = }; static const AgiAppleIIgsDelayOverwriteRoomEntry appleIIgsDelayOverwriteMH1[] = { - { 153, 153, 2, true }, // Intro w/ credits - { 104, 104, 2, true }, // Intro cutscene - { 117, 117, 2, true }, // Intro cutscene (ego waking up) - // Room 124+125 are MAD rooms, those seem to work at a proper speed + //{ 153, 153, 2, false }, // Intro w/ credits + //{ 104, 104, 2, false }, // Intro cutscene + //{ 117, 117, 2, false }, // Intro cutscene (ego waking up) + { 114, 114 -1, false }, // interactive MAD map + { 124, 125, -1, false }, // MAD during intro (tracking), seem to work properly at given speed + { 132, 133, -1, false }, // MAD day 2 intro (tracking) + { 137, 137, -1, false }, // Night Club 4th arcade game - game sets speed to 7 + { 115, 116, -1, false }, // MAD day 3 intro (tracking) + { 148, 148, -1, false }, // day 3: arcade sequence under pawn shop (game sets speed to 6) + { 103, 103, -1, false }, // MAD day 4 intro (tracking) + { 105, 105, -1, false }, // day 4 tracking mini game right at the start (game sets speed to 3) + { 107, 107, -1, false }, // MAD day 4 intro (tracking) + { 112, 112, -1, false }, // MAD day 4 intro (tracking) { -1, -1, -1, false } }; @@ -69,7 +78,7 @@ static const AgiAppleIIgsDelayOverwriteGameEntry appleIIgsDelayOverwriteGameTabl { GID_KQ3, 2, nullptr }, { GID_KQ4, 2, appleIIgsDelayOverwriteKQ4 }, { GID_LSL1, 2, nullptr }, // Switch Larry 1 to 10 cycles per second (that's around PC Larry 1's "normal" speed - { GID_MH1, -1, appleIIgsDelayOverwriteMH1 }, // NEEDS TESTING + { GID_MH1, 2, appleIIgsDelayOverwriteMH1 }, // NEEDS TESTING { GID_MIXEDUP, 2, nullptr }, { GID_PQ1, 2, nullptr }, { GID_SQ1, 2, nullptr }, // completed, no issues using these settings diff --git a/engines/agi/op_cmd.cpp b/engines/agi/op_cmd.cpp index 1a549f5253..8ee9958ecd 100644 --- a/engines/agi/op_cmd.cpp +++ b/engines/agi/op_cmd.cpp @@ -37,7 +37,6 @@ namespace Agi { -#define getGameID() state->_vm->getGameID() #define getFeatures() state->_vm->getFeatures() #define getVersion() state->_vm->getVersion() #define getLanguage() state->_vm->getLanguage() @@ -82,7 +81,7 @@ void cmdAssignN(AgiGame *state, AgiEngine *vm, uint8 *parameter) { // variable to the correct value here // Fixes bug #1942476 - "AGI: Fan(Get Outta SQ) - Score // is lost on restart" - if (getGameID() == GID_GETOUTTASQ && varNr == 7) + if (vm->getGameID() == GID_GETOUTTASQ && varNr == 7) vm->setVar(varNr, 8); } @@ -980,6 +979,13 @@ void cmdHideMouse(AgiGame *state, AgiEngine *vm, uint8 *parameter) { return; } + if ((vm->getGameID() == GID_MH1) && (vm->getPlatform() == Common::kPlatformApple2GS)) { + // Called right after beating arcade sequence on day 4 in the hospital Parameter is "1". + // Right before cutscene. show.mouse isn't called. Probably different function. + warning("hide.mouse called, disabled for MH1 Apple IIgs"); + return; + } + // WORKAROUND: Turns off current movement that's being caused with the mouse. // This fixes problems with too many popup boxes appearing in the Amiga // Gold Rush's copy protection failure scene (i.e. the hanging scene, logic.192). @@ -1158,7 +1164,7 @@ void cmdDrawPic(AgiGame *state, AgiEngine *vm, uint8 *parameter) { // above the ground), flag 103 is reset, thereby fixing this issue. Note // that this is a script bug and occurs in the original interpreter as well. // Fixes bug #3056: AGI: SQ1 (2.2 DOS ENG) bizzare exploding roger - if (getGameID() == GID_SQ1 && resourceNr == 20) + if (vm->getGameID() == GID_SQ1 && resourceNr == 20) vm->setFlag(103, false); // Loading trigger @@ -1892,7 +1898,7 @@ void cmdDistance(AgiGame *state, AgiEngine *vm, uint8 *parameter) { // wouldn't chase Rosella around anymore. If it had worked correctly the zombie // wouldn't have come up at all or it would have come up and gone back down // immediately. The latter approach is the one implemented here. - if (getGameID() == GID_KQ4 && (vm->getVar(VM_VAR_CURRENT_ROOM) == 16 || vm->getVar(VM_VAR_CURRENT_ROOM) == 18) && destVarNr >= 221 && destVarNr <= 223) { + if (vm->getGameID() == GID_KQ4 && (vm->getVar(VM_VAR_CURRENT_ROOM) == 16 || vm->getVar(VM_VAR_CURRENT_ROOM) == 18) && destVarNr >= 221 && destVarNr <= 223) { // Rooms 16 and 18 are graveyards where three zombies come up at night. They use logics 16 and 18. // Variables 221-223 are used to save the distance between each zombie and Rosella. // Variables 155, 156 and 162 are used to save the state of each zombie in room 16. |