SP_MAX_PLAYFIELD_HEIGHT)
#define SP_STD_LEVEL_SIZE (SP_HEADER_SIZE + SP_STD_PLAYFIELD_SIZE)
-#if 0
-#define SP_SCREEN_BUFFER_XSIZE (SCR_FIELDX + 2)
-#define SP_SCREEN_BUFFER_YSIZE (SCR_FIELDY + 2)
-#endif
-
#define SP_FRAMES_PER_SECOND 35
+
+// use a much higher value to be able to load ultra-long MPX demo files
+// (like for level collection 78, level 88 ("WAITING FOR GODOT AGAIN"))
+// #define SP_MAX_TAPE_LEN 500000
#define SP_MAX_TAPE_LEN 64010 /* (see "spfix63.doc") */
#ifndef HAS_SpecialPortType
typedef struct
{
-#if 1
short PortLocation; // = 2*(x+(y*60)) /* big endian format */
-#else
- int PortLocation; // = 2*(x+(y*60))
-#endif
byte Gravity; // 1 = turn on, anything else (0) = turn off
byte FreezeZonks; // 2 = turn on, anything else (0) = turn off (1=off!)
byte FreezeEnemies; // 1 = turn on, anything else (0) = turn off
SpecialPortType SpecialPort[10];
byte SpeedByte; // = Speed XOR Highbyte(RandomSeed)
byte CheckSumByte; // = CheckSum XOR SpeedByte
-#if 1
short DemoRandomSeed; /* little endian format */
-#else
- int DemoRandomSeed;
-#endif
} LevelInfoType;
#define HAS_LevelInfoType
#endif
int score;
/* needed for engine snapshots */
+ char **preceding_buffer;
int preceding_buffer_size;
+
+ int scroll_xoffset, scroll_yoffset;
};
struct DemoInfo_SP
extern struct GraphicInfo_SP graphic_info_sp_player[MAX_PLAYERS][SPR_MAX][8];
extern struct EngineSnapshotInfo_SP engine_snapshot_sp;
-extern void sp_open_all();
-extern void sp_close_all();
+extern void sp_open_all(void);
+extern void sp_close_all(void);
+
+extern void InitPrecedingPlayfieldMemory(void);
+extern void InitGfxBuffers_SP(void);
-extern void InitGameEngine_SP();
+extern void InitGameEngine_SP(void);
extern void GameActions_SP(byte *, boolean);
-extern unsigned int InitEngineRandom_SP(long);
+extern unsigned int InitEngineRandom_SP(int);
-extern void setLevelInfoToDefaults_SP();
-extern void copyInternalEngineVars_SP();
-extern boolean LoadNativeLevel_SP(char *, int);
+extern void setLevelInfoToDefaults_SP(void);
+extern void copyInternalEngineVars_SP(void);
+extern boolean LoadNativeLevel_SP(char *, int, boolean);
extern void SaveNativeLevel_SP(char *);
-extern void BackToFront_SP(void);
+extern int getFieldbufferOffsetX_SP(void);
+extern int getFieldbufferOffsetY_SP(void);
+
extern void BlitScreenToBitmap_SP(Bitmap *);
extern void RedrawPlayfield_SP(boolean);
-extern void DrawGameDoorValues_SP();
-extern void LoadEngineSnapshotValues_SP();
-extern void SaveEngineSnapshotValues_SP();
+extern void LoadEngineSnapshotValues_SP(void);
+extern void SaveEngineSnapshotValues_SP(ListNode **);
extern int map_key_RND_to_SP(int);
extern int map_key_SP_to_RND(int);
+extern int getRedDiskReleaseFlag_SP(void);
+
#endif /* GAME_SP_EXPORT_H */