prepared code to support more tape actions than players
authorHolger Schemel <info@artsoft.org>
Tue, 21 Apr 2020 15:57:41 +0000 (17:57 +0200)
committerHolger Schemel <info@artsoft.org>
Tue, 19 May 2020 16:21:18 +0000 (18:21 +0200)
src/files.c
src/game.c
src/tape.c
src/tape.h

index 54835e281f2136a93ba98abcf09ad7b074e122c8..981411f0a9a171d1cd266232412766f2c1a4e299 100644 (file)
@@ -3986,7 +3986,7 @@ static void CopyNativeTape_SP_to_RND(struct LevelInfo *level)
     int demo_repeat = (demo->data[i] & 0xf0) >> 4;
     int tape_action = map_key_SP_to_RND(demo_action);
     int tape_repeat = demo_repeat + 1;
-    byte action[MAX_PLAYERS] = { tape_action, 0, 0, 0 };
+    byte action[MAX_TAPE_ACTIONS] = { tape_action };
     boolean success = 0;
     int j;
 
index 5d9e473b0d412d0cd976ff55ec44ece8308d33c5..e43739030777399cda01f06e2f86ef62833cd187 100644 (file)
@@ -11374,7 +11374,7 @@ static void GameActionsExt(void)
   unsigned int game_frame_delay_value;
   byte *recorded_player_action;
   byte summarized_player_action = 0;
-  byte tape_action[MAX_PLAYERS];
+  byte tape_action[MAX_TAPE_ACTIONS] = { 0 };
   int i;
 
   // detect endless loops, caused by custom element programming
index bf24b531d24b9adbdd6679012689ddb3a12f7f51..61c0ec6ea55e85ef88fa92bc3e5fdc9a8f88847f 100644 (file)
@@ -660,7 +660,7 @@ void TapeStopRecording(void)
   MapTapeEjectButton();
 }
 
-boolean TapeAddAction(byte action[MAX_PLAYERS])
+boolean TapeAddAction(byte action[MAX_TAPE_ACTIONS])
 {
   int i;
 
@@ -668,7 +668,7 @@ boolean TapeAddAction(byte action[MAX_PLAYERS])
   {
     boolean changed_events = FALSE;
 
-    for (i = 0; i < MAX_PLAYERS; i++)
+    for (i = 0; i < MAX_TAPE_ACTIONS; i++)
       if (tape.pos[tape.counter].action[i] != action[i])
        changed_events = TRUE;
 
@@ -686,7 +686,7 @@ boolean TapeAddAction(byte action[MAX_PLAYERS])
 
   if (tape.pos[tape.counter].delay == 0)       // store new action
   {
-    for (i = 0; i < MAX_PLAYERS; i++)
+    for (i = 0; i < MAX_TAPE_ACTIONS; i++)
       tape.pos[tape.counter].action[i] = action[i];
 
     tape.pos[tape.counter].delay++;
@@ -695,15 +695,15 @@ boolean TapeAddAction(byte action[MAX_PLAYERS])
   return TRUE;
 }
 
-void TapeRecordAction(byte action_raw[MAX_PLAYERS])
+void TapeRecordAction(byte action_raw[MAX_TAPE_ACTIONS])
 {
-  byte action[MAX_PLAYERS];
+  byte action[MAX_TAPE_ACTIONS];
   int i;
 
   if (!tape.recording)         // (record action even when tape is paused)
     return;
 
-  for (i = 0; i < MAX_PLAYERS; i++)
+  for (i = 0; i < MAX_TAPE_ACTIONS; i++)
     action[i] = action_raw[i];
 
   if (!tape.use_mouse && tape.set_centered_player)
@@ -825,7 +825,7 @@ byte *TapePlayAction(void)
   int update_delay = FRAMES_PER_SECOND / 2;
   boolean update_video_display = (FrameCounter % update_delay == 0);
   boolean update_draw_label_on = ((FrameCounter / update_delay) % 2 == 1);
-  static byte action[MAX_PLAYERS];
+  static byte action[MAX_TAPE_ACTIONS];
   int i;
 
   if (!tape.playing || tape.pausing)
@@ -874,12 +874,12 @@ byte *TapePlayAction(void)
     DrawVideoDisplaySymbol(state);
   }
 
-  for (i = 0; i < MAX_PLAYERS; i++)
+  for (i = 0; i < MAX_TAPE_ACTIONS; i++)
     action[i] = tape.pos[tape.counter].action[i];
 
 #if DEBUG_TAPE_WHEN_PLAYING
   printf("%05d", FrameCounter);
-  for (i = 0; i < MAX_PLAYERS; i++)
+  for (i = 0; i < MAX_TAPE_ACTIONS; i++)
     printf("   %08x", action[i]);
   printf("\n");
 #endif
index 40ddd0949e39dbd36f8ef830c834802b998983e1..c20fab418805ac8bdf5251b18f230640b05f39fc 100644 (file)
@@ -27,6 +27,8 @@
 #define TAPE_ACTION_BUTTON     2
 #define TAPE_ACTION_UNUSED     3
 
+#define MAX_TAPE_ACTIONS       4
+
 // some positions in the video tape control window
 #define VIDEO_DISPLAY1_XPOS    5
 #define VIDEO_DISPLAY1_YPOS    5
@@ -194,7 +196,7 @@ struct TapeInfo
 
   struct
   {
-    byte action[MAX_PLAYERS];
+    byte action[MAX_TAPE_ACTIONS];
     byte delay;
   } pos[MAX_TAPE_LEN];