better MI1 compatibility

svn-id: r3449
This commit is contained in:
Ludvig Strigeus 2001-10-29 23:07:24 +00:00
parent 04aee95df4
commit 710c9051a3
3 changed files with 38 additions and 5 deletions

19
gfx.cpp
View File

@ -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) {

View File

@ -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,

View File

@ -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);
}