rnd-20100420-1-src
[rocksndiamonds.git] / src / game_sp / DDScrollBuffer.c
index 70c4c5a6c4835affe4c189ed282d238a9bff69e3..e8bd2fbce26221c29eb956408a597d7c962dd3d4 100644 (file)
@@ -106,8 +106,13 @@ static void ScrollPlayfieldIfNeededExt(boolean reset)
 
   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;
   }
@@ -222,11 +227,13 @@ void BlitScreenToBitmap_SP(Bitmap *target_bitmap)
   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;
@@ -239,23 +246,15 @@ void BlitScreenToBitmap_SP(Bitmap *target_bitmap)
   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 (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)
+  if (ExplosionShakeMurphy != 0)
   {
-    px += TILEX / 2;
-    py += TILEY / 2;
+    px += TILEX / 2 - GetSimpleRandom(TILEX + 1);
+    py += TILEY / 2 - GetSimpleRandom(TILEX + 1);
   }
 #endif