aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sky/logic.cpp5
-rw-r--r--sky/mouse.cpp4
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