aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMartin Kiewitz2016-02-18 16:55:49 +0100
committerMartin Kiewitz2016-02-18 16:55:49 +0100
commited92ccde23e847123d8a6bd8cb330378b9f5d939 (patch)
tree716c1d094aa431f8bf30fdc8db1b0f2a81fd0187 /engines
parent22b453c4b2621eb9b6edc1b759e6406c923f20c2 (diff)
downloadscummvm-rg350-ed92ccde23e847123d8a6bd8cb330378b9f5d939.tar.gz
scummvm-rg350-ed92ccde23e847123d8a6bd8cb330378b9f5d939.tar.bz2
scummvm-rg350-ed92ccde23e847123d8a6bd8cb330378b9f5d939.zip
AGI: Apple IIgs time delay override MH1 completed
+ Disable hide.mouse for MH1 Apple IIgs
Diffstat (limited to 'engines')
-rw-r--r--engines/agi/agi.cpp1
-rw-r--r--engines/agi/appleIIgs_timedelay_overwrite.h19
-rw-r--r--engines/agi/op_cmd.cpp14
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.