aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gfx.cpp19
-rw-r--r--scumm.h4
-rw-r--r--scummvm.cpp20
3 files changed, 38 insertions, 5 deletions
diff --git a/gfx.cpp b/gfx.cpp
index 9e5617c3c8..3aafdc4ba0 100644
--- a/gfx.cpp
+++ b/gfx.cpp
@@ -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) {
diff --git a/scumm.h b/scumm.h
index 88e4465765..71c5fe2e59 100644
--- a/scumm.h
+++ b/scumm.h
@@ -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);
}