#define SP_NUM_LEVELS_PER_PACKAGE 111
-#define SP_PLAYFIELD_WIDTH 60
-#define SP_PLAYFIELD_HEIGHT 24
+#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_PLAYFIELD_SIZE (SP_PLAYFIELD_WIDTH * \
- SP_PLAYFIELD_HEIGHT)
-#define SP_LEVEL_SIZE (SP_HEADER_SIZE + SP_PLAYFIELD_SIZE)
+#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)
+#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
#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 */
/* ------------------------------------------------------------------------- */
{
boolean LevelSolved;
boolean GameOver;
+
+ /* needed for updating panel */
+ int time_played;
+ int infotrons_still_needed;
+ int red_disk_count;
+ int score;
+
+ /* needed for engine snapshots */
+ int preceding_buffer_size;
};
struct DemoInfo_SP
byte playfield[SP_MAX_PLAYFIELD_WIDTH][SP_MAX_PLAYFIELD_HEIGHT];
struct DemoInfo_SP demo;
+
+ /* used for runtime values */
+ struct GameInfo_SP *game_sp;
};
struct GraphicInfo_SP
struct EngineSnapshotInfo_SP
{
struct GameInfo_SP game_sp;
+
+ int PlayField16[SP_MAX_PLAYFIELD_SIZE + SP_HEADER_SIZE];
+ byte PlayField8[SP_MAX_PLAYFIELD_SIZE + SP_HEADER_SIZE];
+ byte DisPlayField[SP_MAX_PLAYFIELD_SIZE + SP_HEADER_SIZE];
+
+ int AnimationPosTable[SP_MAX_PLAYFIELD_SIZE];
+ byte AnimationSubTable[SP_MAX_PLAYFIELD_SIZE];
+ byte TerminalState[SP_MAX_PLAYFIELD_SIZE + SP_HEADER_SIZE];
};
/* ------------------------------------------------------------------------- */
extern struct GlobalInfo_SP global_sp_info;
-extern struct GameInfo_SP game_sp_info;
+extern struct GameInfo_SP game_sp;
extern struct LevelInfo_SP native_sp_level;
extern struct GraphicInfo_SP graphic_info_sp_object[TILE_MAX][8];
extern struct GraphicInfo_SP graphic_info_sp_player[MAX_PLAYERS][SPR_MAX][8];
extern void setLevelInfoToDefaults_SP();
extern void copyInternalEngineVars_SP();
extern boolean LoadNativeLevel_SP(char *, int);
+extern void SaveNativeLevel_SP(char *);
extern void BackToFront_SP(void);
extern void BlitScreenToBitmap_SP(Bitmap *);