rnd-20100107-1-src
authorHolger Schemel <info@artsoft.org>
Wed, 6 Jan 2010 23:45:59 +0000 (00:45 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:58:14 +0000 (10:58 +0200)
* fixed bug in Supaplex engine regarding initial screen scroll position

ChangeLog
src/conftime.h
src/game_sp/DDScrollBuffer.c
src/game_sp/Display.c
src/game_sp/Globals.c
src/game_sp/InitGameConditions.c
src/game_sp/MainForm.c
src/game_sp/MainForm.h
src/game_sp/main.c

index 0efd5105d46c4f606582d2f6397b7104944bb949..fc0dd1c7f714fba66c2bac7f75e01c0cfcc90f0d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2010-01-06
+       * fixed bug in Supaplex engine regarding initial screen scroll position
+
 2009-12-17
        * fixed EMC style pushing animations in the R'n'D graphics engine (when
          using ".2nd_movement_tile" for animations having start and end tile)
index 51b9787de7d4b9321abecc9a5dc62cb7835f5e49..86fdfa2746cfa29f147b8332afa4be45669dd701 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2009-12-18 23:21"
+#define COMPILE_DATE_STRING "2010-01-07 00:44"
index 24594faa19034b6e58234bb966a8289ac96a340a..53cc5ea06330f63bd4371ce94fef15c1275fe68b 100644 (file)
@@ -882,6 +882,14 @@ void DDScrollBuffer_SoftScrollTo(int X, int Y, long TimeMS, int FPS)
   long oldX, oldY, maxD;
   static boolean AlreadyRunning = False;
 
+#if 0
+  printf(":a: %d, %d [%d, %d] [%d, %d] [%d, %d]\n",
+        mScrollX, mScrollY,
+        mScrollX_last, mScrollY_last,
+        ScreenScrollXPos, ScreenScrollYPos,
+        ScrollX, ScrollY);
+#endif
+
   if (NoDisplayFlag)
     return;
 
@@ -924,9 +932,20 @@ void DDScrollBuffer_SoftScrollTo(int X, int Y, long TimeMS, int FPS)
     mScrollY = oldY + T * dY;
     ScrollX = mScrollX;
     ScrollY = mScrollY;
-    // Blt();
+
+#if 0
+    Blt();
+#endif
   }
 
+#if 0
+  printf(":x: %d, %d [%d, %d] [%d, %d] [%d, %d]\n",
+        mScrollX, mScrollY,
+        mScrollX_last, mScrollY_last,
+        ScreenScrollXPos, ScreenScrollYPos,
+        ScrollX, ScrollY);
+#endif
+
   if (UserDragFlag)
     goto SoftScrollEH;
 
@@ -938,7 +957,10 @@ void DDScrollBuffer_SoftScrollTo(int X, int Y, long TimeMS, int FPS)
   mScrollY = Y;
   ScrollX = mScrollX;
   ScrollY = mScrollY;
-  // Blt();
+
+#if 0
+  Blt();
+#endif
 
 SoftScrollEH:
   AlreadyRunning = False;
@@ -948,7 +970,23 @@ SoftScrollEH:
         mScrollX, mScrollY);
 #endif
 
+#if 0
+  printf(":y: %d, %d [%d, %d] [%d, %d] [%d, %d]\n",
+        mScrollX, mScrollY,
+        mScrollX_last, mScrollY_last,
+        ScreenScrollXPos, ScreenScrollYPos,
+        ScrollX, ScrollY);
+#endif
+
 #if 1
   ScrollPlayfieldIfNeeded();
 #endif
+
+#if 0
+  printf(":z: %d, %d [%d, %d] [%d, %d] [%d, %d]\n",
+        mScrollX, mScrollY,
+        mScrollX_last, mScrollY_last,
+        ScreenScrollXPos, ScreenScrollYPos,
+        ScrollX, ScrollY);
+#endif
 }
index 2eefc737c8a85f01c18b20cbcc5e70a9c604892d..94c846ed02779d0a650907b62b0bb6d7f7ab6249 100644 (file)
@@ -167,6 +167,12 @@ void SoftScrollTo(int X, int Y, long TimeMS, int FPS)
   if (NoDisplayFlag)
     return;
 
+#if 0
+  printf(":(: %d, %d [%d, %d - %d, %d] [%d]\n",
+        X, Y, ScrollMinX, ScrollMinY, ScrollMaxX, ScrollMaxY,
+        ScrollDelta);
+#endif
+
   oldX = ScrollX;
   oldY = ScrollY;
   X = ScrollDelta * (X / ScrollDelta);
@@ -178,5 +184,11 @@ void SoftScrollTo(int X, int Y, long TimeMS, int FPS)
   //  ScrollX = X
   //  ScrollY = Y
 
+#if 0
+  printf(":): %d, %d [%d, %d - %d, %d] [%d]\n",
+        X, Y, ScrollMinX, ScrollMinY, ScrollMaxX, ScrollMaxY,
+        ScrollDelta);
+#endif
+
   Stage.SoftScrollTo(X, Y, TimeMS, FPS);
 }
index 4c4f7afebfac4b97f8a4f7fa93bf254a57024503..ebf59fd6b444a1f76631840bfcc7d15319506a9c 100644 (file)
@@ -630,6 +630,11 @@ void ReadLevel()
 
   copyInternalEngineVars_SP();
 
+#if 1
+  SetDisplayRegion();
+  SetScrollEdges();
+#endif
+
   LevelNumber = level_nr;
 
 #if 0
index 78ecefe15706b90dd9afeee5ad12c02e5bcc930c..050533e8a7b7b60e103109171d65755d7bfbc6ff 100644 (file)
@@ -103,6 +103,14 @@ int InitMurphyPosB(int si)
 
   subCalculateScreenScrollPos();           // calculate screen start addrs
 
+#if 0
+  printf(":1: %d, %d [%d, %d] [%d, %d] [%d, %d]\n",
+        mScrollX, mScrollY,
+        mScrollX_last, mScrollY_last,
+        ScreenScrollXPos, ScreenScrollYPos,
+        ScrollX, ScrollY);
+#endif
+
   if (AutoScrollFlag)
   {
     if (bPlaying)
@@ -115,6 +123,14 @@ int InitMurphyPosB(int si)
     }
   }
 
+#if 0
+  printf(":2: %d, %d [%d, %d] [%d, %d] [%d, %d]\n",
+        mScrollX, mScrollY,
+        mScrollX_last, mScrollY_last,
+        ScreenScrollXPos, ScreenScrollYPos,
+        ScrollX, ScrollY);
+#endif
+
   return InitMurphyPosB;
 } // InitMurphyPosB
 
index 4ac25f812e2f398b756d92b5e710197d940bb8f1..9ee82353ac76f8e22d6ce2e6d8c72eca30aa57ce 100644 (file)
@@ -2490,6 +2490,9 @@ void menPlay_Click()
   UpdateDeltaT();
 #endif
 
+#if 1
+#endif
+
 #if 0
   printf("::: MainForm.c: menPlay_Click(): subFetchAndInitLevelB(): ...\n");
 #endif
@@ -3128,7 +3131,11 @@ static void ReStretch(float NewStretch)
 #endif
 }
 
+#if 0
 static void SetScrollEdges()
+#else
+void SetScrollEdges()
+#endif
 {
 #if 0
   printf("::: MainForm.c: SetScrollEdges() ... [%ld, %ld, %ld, %ld] [%f, %d] [%d, %d, %d, %d]\n",
index 90db2d172b776e1e64495edfa8f925bf9d532213..6d8ab11710d6de7a79ed139c7750221036b432bc 100644 (file)
@@ -26,6 +26,7 @@ extern void Let_PanelVisible(boolean NewVal);
 extern void ReLoadStretchSprites();
 extern void SaveSnapshot(currency Number);
 extern void SetDisplayRegion();
+extern void SetScrollEdges();
 extern void ShowKey(int KeyVar);
 extern void menDemoSpeed_Click(int Index);
 extern void menEdit_Click();
index d63d32a0f2966b9c6d1f18ddfa728c604ef51ecf..fb46ec87fc4b7d8e3a7a66dda268f96780273396 100644 (file)
@@ -15,11 +15,21 @@ void InitGameEngine_SP()
 
   InitScrollPlayfield();
 
+#if 0
+  printf(":A: %d, %d [%d, %d]\n",
+        mScrollX, mScrollY, mScrollX_last, mScrollY_last);
+#endif
+
 #if 1
   menPlay_Click();
 #else
   menPlayDemo_Click();
 #endif
+
+#if 0
+  printf(":B: %d, %d [%d, %d]\n",
+        mScrollX, mScrollY, mScrollX_last, mScrollY_last);
+#endif
 }
 
 #if 0