X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2FDDScrollBuffer.c;h=e8bd2fbce26221c29eb956408a597d7c962dd3d4;hb=76c6cf34f934b80bcd42ed1f0940c6c56ac1c209;hp=70c4c5a6c4835affe4c189ed282d238a9bff69e3;hpb=41def9c1d8c6939b8754fdab43579272e49d4da4;p=rocksndiamonds.git diff --git a/src/game_sp/DDScrollBuffer.c b/src/game_sp/DDScrollBuffer.c index 70c4c5a6..e8bd2fbc 100644 --- a/src/game_sp/DDScrollBuffer.c +++ b/src/game_sp/DDScrollBuffer.c @@ -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