+ int scroll_xoffset = mScrollX - mScrollX_last + game_sp.scroll_xoffset;
+ int scroll_yoffset = mScrollY - mScrollY_last + game_sp.scroll_yoffset;
+ int x1 = 0, x2 = SCR_FIELDX - (scroll_xoffset != 0 ? 0 : 1);
+ int y1 = 0, y2 = SCR_FIELDY - (scroll_yoffset != 0 ? 0 : 1);
+ int full_xsize = (FieldWidth - (menBorder ? 0 : 1)) * TILEX_VAR;
+ int full_ysize = (FieldHeight - (menBorder ? 0 : 1)) * TILEY_VAR;
+ int xsize = SXSIZE;
+ int ysize = SYSIZE;
+ int sxsize = (full_xsize < xsize ? full_xsize : xsize);
+ int sysize = (full_ysize < ysize ? full_ysize : ysize);
+ int sx = SX + (full_xsize < xsize ? (xsize - full_xsize) / 2 : 0);
+ int sy = SY + (full_ysize < ysize ? (ysize - full_ysize) / 2 : 0);
+
+ InitGfxClipRegion(TRUE, sx, sy, sxsize, sysize);
+
+ scroll_xoffset = scroll_xoffset * TILESIZE_VAR / TILESIZE;
+ scroll_yoffset = scroll_yoffset * TILESIZE_VAR / TILESIZE;
+
+ for (x = x1; x <= x2; x++)