diff options
-rw-r--r-- | sky/logic.cpp | 5 | ||||
-rw-r--r-- | sky/mouse.cpp | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/sky/logic.cpp b/sky/logic.cpp index 59e56c55f6..f740f02b38 100644 --- a/sky/logic.cpp +++ b/sky/logic.cpp @@ -59,6 +59,8 @@ SkyLogic::SkyLogic(SkyScreen *skyScreen, SkyDisk *skyDisk, SkyText *skyText, Sky _skyGrid = new SkyGrid(_skyDisk); _skyAutoRoute = new SkyAutoRoute(_skyGrid); + memset(_objectList, 0, 30 * sizeof(uint32)); + for (int i = 0; i < ARRAYSIZE(_moduleList); i++) _moduleList[i] = 0; _stackPtr = 0; @@ -1713,6 +1715,7 @@ bool SkyLogic::fnStartMenu(uint32 firstObject, uint32 b, uint32 c) { for (i = 0; i < ARRAYSIZE(_objectList); i++) { if (_objectList[i]) (SkyState::fetchCompact(_objectList[i]))->status = ST_LOGIC; + else break; } // (5) NOW FIND OUT WHICH OBJECT TO START THE DISPLAY FROM (depending on scroll offset) @@ -1724,7 +1727,7 @@ bool SkyLogic::fnStartMenu(uint32 firstObject, uint32 b, uint32 c) { // (6) AND FINALLY, INITIALISE THE 11 OBJECTS SO THEY APPEAR ON SCREEEN - uint16 rollingX = 128 + 28; + uint16 rollingX = TOP_LEFT_X + 28; for (i = 0; i < 11; i++) { cpt = SkyState::fetchCompact( _objectList[_scriptVariables[SCROLL_OFFSET] + i]); diff --git a/sky/mouse.cpp b/sky/mouse.cpp index f702c41828..57b2edfff1 100644 --- a/sky/mouse.cpp +++ b/sky/mouse.cpp @@ -120,8 +120,10 @@ bool SkyMouse::fnAddHuman(void) { _tMouseX = _newSafeX; _tMouseY = _newSafeY; - if (_aMouseY < 2) //stop mouse activating top line + if (_aMouseY < 2) { //stop mouse activating top line _aMouseY = 2; + _system->warp_mouse(GAME_SCREEN_WIDTH / 2, GAME_SCREEN_HEIGHT / 2); + } //force the pointer engine into running a get-off //even if it's over nothing |