+#define SP_NUM_LEVELS_PER_PACKAGE 111
+
+#define SP_STD_PLAYFIELD_WIDTH 60
+#define SP_STD_PLAYFIELD_HEIGHT 24
+#define SP_LEVEL_NAME_LEN 23
+#define SP_MAX_SPECIAL_PORTS 10
+
+#define SP_HEADER_SIZE 96
+#define SP_STD_PLAYFIELD_SIZE (SP_STD_PLAYFIELD_WIDTH * \
+ SP_STD_PLAYFIELD_HEIGHT)
+#define SP_MAX_PLAYFIELD_SIZE (SP_MAX_PLAYFIELD_WIDTH * \
+ SP_MAX_PLAYFIELD_HEIGHT)
+#define SP_STD_LEVEL_SIZE (SP_HEADER_SIZE + SP_STD_PLAYFIELD_SIZE)
+
+#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")
+
+
+// sound actions
+
+#define actActive 0
+#define actImpact 1
+#define actExploding 2
+#define actDigging 3
+#define actSnapping 4
+#define actCollecting 5
+#define actPassing 6
+#define actPushing 7
+#define actDropping 8
+
+
+// ----------------------------------------------------------------------------
+// data structure definitions
+// ----------------------------------------------------------------------------
+
+#ifndef HAS_SpecialPortType
+typedef struct
+{
+ short PortLocation; // = 2*(x+(y*60)) // big endian format
+ 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
+ byte UnUsed;
+} SpecialPortType;
+#define HAS_SpecialPortType
+#endif
+
+#ifndef HAS_LevelInfoType
+typedef struct
+{
+ byte UnUsed[4];
+ byte InitialGravity; // 1=on, anything else (0) = off
+ byte Version; // SpeedFixVersion XOR &H20
+ char LevelTitle[23];
+ byte InitialFreezeZonks; // 2=on, anything else (0) = off. (1=off too!)
+ byte InfotronsNeeded;
+
+ // Number of Infotrons needed. 0 means that Supaplex will count the total
+ // amount of Infotrons in the level, and use the low byte of that number.
+ // (A multiple of 256 Infotrons will then result in 0-to-eat, etc.!)
+ byte SpecialPortCount; // Maximum 10 allowed!
+ SpecialPortType SpecialPort[10];
+ byte SpeedByte; // = Speed XOR Highbyte(RandomSeed)
+ byte CheckSumByte; // = CheckSum XOR SpeedByte
+ short DemoRandomSeed; // little endian format
+} LevelInfoType;
+#define HAS_LevelInfoType
+#endif