From 06c93b1821c4d3a1ebd2c8281095858f0b080ed4 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Thu, 11 Sep 2003 13:02:13 +0000 Subject: oops svn-id: r10171 --- scumm/scummvm.cpp | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) (limited to 'scumm') diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp index 8eef25aa52..8973625567 100644 --- a/scumm/scummvm.cpp +++ b/scumm/scummvm.cpp @@ -1948,29 +1948,30 @@ void Scumm::startScene(int room, Actor *a, int objectNr) { else loadRoomObjects(); - if (!(_features & GF_NEW_CAMERA)) { - camera._mode = CM_NORMAL; - camera._cur.x = camera._dest.x = _screenWidth / 2; - camera._cur.y = camera._dest.y = _screenHeight / 2; + if (_version > 2) { + + if (VAR_V6_SCREEN_WIDTH != 0xFF && VAR_V6_SCREEN_HEIGHT != 0xFF) { + VAR(VAR_V6_SCREEN_WIDTH) = _roomWidth; + VAR(VAR_V6_SCREEN_HEIGHT) = _roomHeight; + } + + if (_features & GF_NEW_CAMERA) { + VAR(VAR_CAMERA_MIN_Y) = _screenHeight / 2; + VAR(VAR_CAMERA_MAX_Y) = _roomHeight - (_screenHeight / 2); + setCameraAt(_screenWidth / 2, _screenHeight / 2); + } else { + camera._mode = CM_NORMAL; + camera._cur.x = camera._dest.x = _screenWidth / 2; + camera._cur.y = camera._dest.y = _screenHeight / 2; + } } - if (VAR_V6_SCREEN_WIDTH != 0xFF && VAR_V6_SCREEN_HEIGHT != 0xFF) { - VAR(VAR_V6_SCREEN_WIDTH) = _roomWidth; - VAR(VAR_V6_SCREEN_HEIGHT) = _roomHeight; - } + if (_roomResource == 0) + return; VAR(VAR_CAMERA_MIN_X) = _screenWidth / 2; VAR(VAR_CAMERA_MAX_X) = _roomWidth - (_screenWidth / 2); - if (_features & GF_NEW_CAMERA) { - VAR(VAR_CAMERA_MIN_Y) = _screenHeight / 2; - VAR(VAR_CAMERA_MAX_Y) = _roomHeight - (_screenHeight / 2); - setCameraAt(_screenWidth / 2, _screenHeight / 2); - } - - if (_roomResource == 0) - return; - memset(gfxUsageBits, 0, sizeof(gfxUsageBits)); if (a) { @@ -1991,8 +1992,9 @@ void Scumm::startScene(int room, Actor *a, int objectNr) { runEntryScript(); if (_version <= 2) runScript(5, 0, 0, 0); - - if (_version < 7) { + else if (_version <= 4 && _version <= 6) { + // FIXME: The check above maybe should only trigger for V5&V6 games (i.e. not + // for V4). More investigation (ASM) needed. See also o5_loadRoomWithEgo(). if (a && !_egoPositioned) { int x, y; getObjectXYPos(objectNr, x, y); -- cgit v1.2.3