diff options
-rw-r--r-- | gfx.cpp | 19 | ||||
-rw-r--r-- | scumm.h | 4 | ||||
-rw-r--r-- | scummvm.cpp | 20 |
3 files changed, 38 insertions, 5 deletions
@@ -17,6 +17,9 @@ * * Change Log: * $Log$ + * Revision 1.10 2001/10/29 23:07:24 strigeus + * better MI1 compatibility + * * Revision 1.9 2001/10/26 17:34:50 strigeus * bug fixes, code cleanup * @@ -1556,13 +1559,23 @@ void Scumm::panCameraTo(int x) { } void Scumm::actorFollowCamera(int act) { - int old = camera._follows; + int old; + CameraData *cd = &camera; + /* mi1 compatibilty */ + if (act==0) { + cd->_mode = 1; + cd->_follows = 0; + cd->_movingToActor = 0; + return; + } + + old = cd->_follows; setCameraFollows(derefActorSafe(act, "actorFollowCamera")); - if (camera._follows != old) + if (cd->_follows != old) runHook(0); - camera._movingToActor = 0; + cd->_movingToActor = 0; } void Scumm::setCameraAtEx(int at) { @@ -17,6 +17,9 @@ * * Change Log: * $Log$ + * Revision 1.15 2001/10/29 23:07:24 strigeus + * better MI1 compatibility + * * Revision 1.14 2001/10/26 17:34:50 strigeus * bug fixes, code cleanup * @@ -326,6 +329,7 @@ enum ScummVars { VAR_VERSION = 75, VAR_V5_DRAWFLAGS = 9, + VAR_MI1_TIMER = 14, VAR_V5_OBJECT_LO = 15, VAR_V5_OBJECT_HI = 16, VAR_V5_TALK_STRING_Y = 54, diff --git a/scummvm.cpp b/scummvm.cpp index 34f31b2ce8..8600d0f654 100644 --- a/scummvm.cpp +++ b/scummvm.cpp @@ -17,6 +17,9 @@ * * Change Log: * $Log$ + * Revision 1.14 2001/10/29 23:07:24 strigeus + * better MI1 compatibility + * * Revision 1.13 2001/10/26 17:34:50 strigeus * bug fixes, code cleanup * @@ -265,7 +268,7 @@ void Scumm::scummMain(int argc, char **argv) { if (_gameId==GID_INDY4 && _bootParam==0) { _bootParam = -7873; } - + initGraphics(this); if (_majorScummVersion==6) @@ -278,6 +281,11 @@ void Scumm::scummMain(int argc, char **argv) { _vars[VAR_VERSION] = 21; _vars[VAR_DEBUGMODE] = _debugMode; + if (_gameId==GID_MONKEY) { + _vars[74] = 1225; + } + + runScript(1,0,0,&_bootParam); _scummTimer = 0; @@ -326,6 +334,9 @@ void Scumm::scummMain(int argc, char **argv) { _vars[VAR_MOUSE_Y] = mouse.y; _vars[VAR_DEBUGMODE] = _debugMode; + if (_gameId==GID_MONKEY) + _vars[VAR_MI1_TIMER]+=40; + if (_saveLoadFlag) { char buf[256]; @@ -923,7 +934,12 @@ void NORETURN CDECL error(const char *s, ...) { va_end(va); if (scumm._currentScript != 0xFF) { - fprintf(stderr, "Error(%d): %s!\nPress a key to quit.\n", scumm.vm.slot[scumm._currentScript].number, buf); + ScriptSlot *ss = &scumm.vm.slot[scumm._currentScript]; + fprintf(stderr, "Error(%d:%d:0x%X): %s!\nPress a key to quit.\n", + scumm._roomResource, + ss->number, + scumm._scriptPointer - scumm._scriptOrgPointer, + buf); } else { fprintf(stderr, "Error: %s!\nPress a key to quit.\n", buf); } |