rnd-20100417-2-src
authorHolger Schemel <info@artsoft.org>
Sat, 17 Apr 2010 21:24:08 +0000 (23:24 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:59:04 +0000 (10:59 +0200)
src/conftime.h
src/events.c
src/game_sp/DDScrollBuffer.c
src/game_sp/MainForm.c
src/game_sp/export.h
src/game_sp/main.c
src/libgame/types.h

index aa3503a057bdeffbfb01377d2b4d09dbdd1975d7..631c6c00622c2a68e39df95b129fd6dfb678133c 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2010-04-17 10:50"
+#define COMPILE_DATE_STRING "2010-04-17 23:20"
index 3284723c75fbba3298cd7a3bb66e7e94eae104ad..9a42eb47c16e74f5b7c6edfa7140c2f9712e5091 100644 (file)
@@ -871,6 +871,12 @@ void HandleKey(Key key, int key_status)
        case KSYM_0:
          GameFrameDelay = (GameFrameDelay == 500 ? GAME_FRAME_DELAY : 500);
          break;
+
+       case KSYM_b:
+         setup.sp_show_border_elements = !setup.sp_show_border_elements;
+         printf("Supaplex border elements %s\n",
+                setup.sp_show_border_elements ? "enabled" : "disabled");
+         break;
 #endif
 
        default:
index 70c4c5a6c4835affe4c189ed282d238a9bff69e3..80cddf0d7e745c733bec2879a954f0b29e3ba20a 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;
   }
@@ -223,10 +228,12 @@ void BlitScreenToBitmap_SP(Bitmap *target_bitmap)
   int sx, sy, sxsize, sysize;
 
 #if 1
-  printf("::: %d, %d - %d, %d - %ld, %ld\n",
+  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,6 +246,20 @@ 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);
 
+#if 1
+#if 1
+  {
+    px += game_sp.scroll_xoffset;
+    py += game_sp.scroll_yoffset;
+  }
+#else
+  if (1)
+  {
+    px += TILEX / 2;
+    py += TILEY / 2;
+  }
+#endif
+#else
 #if 1
   if (0 && !menBorder)
   {
@@ -257,6 +278,7 @@ void BlitScreenToBitmap_SP(Bitmap *target_bitmap)
     px += TILEX / 2;
     py += TILEY / 2;
   }
+#endif
 #endif
 
   BlitBitmap(bitmap_db_field_sp, target_bitmap, px, py, sxsize, sysize, sx, sy);
index 9f0b6cb573de48f98f20f2cb195ee858695b49b0..ec0ba33dd22e0d562d1a7a49ccc9e380612246dc 100644 (file)
@@ -197,6 +197,30 @@ void SetScrollEdges()
     ScrollMaxX -= TILEX / 2;
     ScrollMaxY -= TILEY / 2;
   }
+#if 1
+  {
+    ScrollMinX -= game_sp.scroll_xoffset;
+    ScrollMaxX -= game_sp.scroll_xoffset;
+    ScrollMinY -= game_sp.scroll_yoffset;
+    ScrollMaxY -= game_sp.scroll_yoffset;
+  }
+#else
+  if (1)
+  {
+    ScrollMinX -= TILEX / 2;
+    ScrollMaxX -= TILEX / 2;
+    ScrollMinY -= TILEY / 2;
+    ScrollMaxY -= TILEY / 2;
+  }
+#endif
+#else
+  if (!menBorder)
+  {
+    ScrollMinX += TILEX / 2;
+    ScrollMinY += TILEY / 2;
+    ScrollMaxX -= TILEX / 2;
+    ScrollMaxY -= TILEY / 2;
+  }
 #endif
 
 #else
index b5c0d0bb27285ff509b307d131ac5973b41f4712..fe5995fdaf9bff12b5c5ad1dcc7ce1f9e9fa9ae3 100644 (file)
@@ -111,6 +111,8 @@ struct GameInfo_SP
 
   /* needed for engine snapshots */
   int preceding_buffer_size;
+
+  int scroll_xoffset, scroll_yoffset;
 };
 
 struct DemoInfo_SP
index 42f5f753a814de980dd2eb9f06a5060e8f1b329e..a29d6205884c30f563acb4a859608a2bd9f5b6c6 100644 (file)
@@ -28,6 +28,9 @@ void InitGameEngine_SP()
 
   menBorder = setup.sp_show_border_elements;
 
+  game_sp.scroll_xoffset = (EVEN(SCR_FIELDX) ? TILEX / 2 : 0);
+  game_sp.scroll_yoffset = (EVEN(SCR_FIELDY) ? TILEY / 2 : 0);
+
   for (x = 0; x < SP_MAX_PLAYFIELD_WIDTH; x++)
   {
     for (y = 0; y < SP_MAX_PLAYFIELD_HEIGHT; y++)
index d6f49bdd68026c47a6557575f8eb15ad2e8c1d86..6e55364cb9ddd40945865a5eda9cbd262324c8ac 100644 (file)
@@ -58,6 +58,14 @@ typedef unsigned char byte;
 #define SIGN(a)                ((a) < 0 ? -1 : ((a) > 0 ? 1 : 0))
 #endif
 
+#ifndef ODD
+#define ODD(a)         (((a) & 1) == 1)
+#endif
+
+#ifndef EVEN
+#define EVEN(a)                (((a) & 1) == 0)
+#endif
+
 #define SIZEOF_ARRAY(array, type)      (sizeof(array) / sizeof(type))
 #define SIZEOF_ARRAY_INT(array)                SIZEOF_ARRAY(array, int)