if (mScrollX_last == -1 || mScrollY_last == -1)
{
+#if 1
+ mScrollX_last = (mScrollX / TILESIZE) * TILESIZE;
+ mScrollY_last = (mScrollY / TILESIZE) * TILESIZE;
+#else
mScrollX_last = mScrollX;
mScrollY_last = mScrollY;
+#endif
return;
}
int py = 2 * TILEY + (mScrollY - mScrollY_last) % TILEY;
int sx, sy, sxsize, sysize;
-#if 1
- printf("::: %d, %d - %d, %d - %ld, %ld\n",
+#if 0
+ printf("::: %d, %d / %d, %d / %ld, %ld (%ld, %ld) / %d, %d\n",
MurphyScreenXPos, MurphyScreenYPos,
ScreenScrollXPos, ScreenScrollYPos,
- mScrollX, mScrollY);
+ mScrollX, mScrollY,
+ mScrollX_last, mScrollY_last,
+ px, py);
#endif
int xsize = SXSIZE;
sx = SX + (full_xsize < xsize ? (xsize - full_xsize) / 2 : 0);
sy = SY + (full_ysize < ysize ? (ysize - full_ysize) / 2 : 0);
+ /* scroll correction for even number of visible tiles (half tile shifted) */
+ px += game_sp.scroll_xoffset;
+ py += game_sp.scroll_yoffset;
+
#if 1
- if (0 && !menBorder)
+ if (ExplosionShakeMurphy != 0)
{
- if (mScrollX < ScrollMinX + TILEX / 2)
- px += ScrollMinX + TILEX / 2 - mScrollX;
- else if (mScrollX > ScrollMaxX - TILEX / 2)
- px -= mScrollX - (ScrollMaxX - TILEX / 2);
- if (mScrollY < ScrollMinY + TILEY / 2)
- py += ScrollMinY + TILEY / 2 - mScrollY;
- else if (mScrollY > ScrollMaxY - TILEY / 2)
- py -= mScrollY - (ScrollMaxY - TILEY / 2);
- }
-#else
- if (!menBorder)
- {
- px += TILEX / 2;
- py += TILEY / 2;
+ printf("::: ExplosionShakeMurphy\n");
+
+ px += TILEX / 2 - GetSimpleRandom(TILEX + 1);
+ py += TILEY / 2 - GetSimpleRandom(TILEX + 1);
}
#endif