added some performance tuning for "autotest" and warp mode
[rocksndiamonds.git] / src / game_sp / main.c
index f9dcecc5b63d377473810d2a8611166c5b9bd0cd..c7239cc80ed0371faa5ef8651877dd5bb75e2418 100644 (file)
@@ -54,6 +54,10 @@ void InitGameEngine_SP()
 
 void RedrawPlayfield_SP(boolean force_redraw)
 {
+  // skip redrawing playfield in warp mode or when testing tapes with "autotest"
+  if (DrawingDeactivatedField())
+    return;
+
   if (force_redraw)
     RestorePlayfield();
 
@@ -73,7 +77,8 @@ void GameActions_SP(byte action[MAX_PLAYERS], boolean warp_mode)
   byte single_player_action = action[0];
   int x, y;
 
-  UpdateEngineValues(mScrollX / TILEX, mScrollY / TILEY);
+  UpdateEngineValues(mScrollX / TILEX, mScrollY / TILEY,
+                    MurphyScreenXPos / TILEX, MurphyScreenYPos / TILEY);
 
   subMainGameLoop_Main(single_player_action, warp_mode);
 
@@ -91,5 +96,8 @@ void GameActions_SP(byte action[MAX_PLAYERS], boolean warp_mode)
 
 int getRedDiskReleaseFlag_SP()
 {
+  /* 0: when Murphy is moving (including the destination tile!) */
+  /* 1: when Murphy is not moving for at least one game frame */
+
   return RedDiskReleaseFlag;
 }