#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
-
-#ifndef MSDOS
-#define XK_MISCELLANY
-#define XK_LATIN1
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-#include <X11/Xos.h>
-#include <X11/Intrinsic.h>
-#include <X11/keysymdef.h>
-
-#ifdef XPM_INCLUDE_FILE
-#define USE_XPM_LIBRARY
-#include XPM_INCLUDE_FILE
-#endif
-#else /* MSDOS */
-#include "msdos.h"
-#endif /* MSDOS */
+#include <unistd.h>
+#include <fcntl.h>
#ifdef DEBUG
#define DEBUG_TIMING 0
typedef unsigned char boolean;
typedef unsigned char byte;
+#include "system.h"
+
#ifndef FALSE
#define FALSE 0
#define TRUE (!FALSE)
#define WIN_XSIZE 672
#define WIN_YSIZE 560
+#define WIN_SDL_DEPTH 16 /* !!! change this !!! */
#ifndef MSDOS
#define WIN_XPOS 0
#define WIN_YPOS 0
#define PLAYER_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \
PROTECTED_FIELD(x, y))
-/* Pixmaps with graphic file */
+/* Bitmaps with graphic file */
#define PIX_BACK 0
#define PIX_DOOR 1
#define PIX_HEROES 2
#define PIX_BIGFONT 7
#define PIX_SMALLFONT 8
#define PIX_MEDIUMFONT 9
-/* Pixmaps without graphic file */
+/* Bitmaps without graphic file */
#define PIX_DB_BACK 10
#define PIX_DB_DOOR 11
#define PIX_DB_FIELD 12
#define NUM_PICTURES 10
-#define NUM_PIXMAPS 13
+#define NUM_BITMAPS 13
/* boundaries of arrays etc. */
#define MAX_PLAYER_NAME_LEN 10
boolean serveronly;
boolean network;
boolean verbose;
+ boolean debug;
};
struct SetupJoystickInfo
struct SetupKeyboardInfo
{
- KeySym left;
- KeySym right;
- KeySym up;
- KeySym down;
- KeySym snap;
- KeySym bomb;
+ Key left;
+ Key right;
+ Key up;
+ Key down;
+ Key snap;
+ Key bomb;
};
struct SetupInputInfo
boolean team_mode;
boolean handicap;
boolean time_limit;
+ boolean fullscreen;
struct SetupInputInfo input[MAX_PLAYERS];
};
struct GlobalInfo
{
+ float frames_per_second;
+ boolean fps_slowdown;
+ int fps_slowdown_factor;
};
extern Display *display;
extern Visual *visual;
extern int screen;
-extern Window window;
+extern DrawWindow window;
extern GC gc, clip_gc[], tile_clip_gc;
-extern Pixmap pix[];
+extern Bitmap pix[];
+extern Bitmap pix_masked[], tile_masked[];
extern Pixmap clipmask[], tile_clipmask[];
#ifdef USE_XPM_LIBRARY
extern XpmAttributes xpm_att[];
#endif
-extern Drawable drawto, drawto_field, backbuffer, fieldbuffer;
+extern DrawBuffer drawto, drawto_field, backbuffer, fieldbuffer;
extern Colormap cmap;
extern int sound_pipe[2];
extern int global_joystick_status, joystick_status;
extern int sound_status;
extern boolean sound_loops_allowed;
+extern boolean fullscreen_available;
+extern boolean fullscreen_enabled;
extern boolean redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE];
extern int redraw_x1, redraw_y1;
#define EL_PEARL_BREAKING 521
#define EL_TRAP_ACTIVE 522
#define EL_SPRING_MOVING 523
+#define EL_SP_MURPHY_CLONE 524
/* "unreal" (and therefore not drawable) runtime elements */
#define EL_BLOCKED 600
#define GFX2_SP_TERMINAL (GFX_START_ROCKSSP + 11 * SP_PER_LINE + 8)
#define GFX2_SP_TERMINAL_ACTIVE (GFX_START_ROCKSSP + 12 * SP_PER_LINE + 8)
+#define GFX_SP_MURPHY_CLONE (GFX_START_ROCKSSP + 0 * SP_PER_LINE + 3)
+
/* graphics from "RocksDC" */
#define GFX_BELT1_MIDDLE (GFX_START_ROCKSDC + 0 * DC_PER_LINE + 0)
#define GFX_BELT1_LEFT (GFX_START_ROCKSDC + 1 * DC_PER_LINE + 0)
#define NUM_SOUNDS 62
/* default input keys */
-#define KEY_UNDEFINDED XK_VoidSymbol
-#define DEFAULT_KEY_LEFT XK_Left
-#define DEFAULT_KEY_RIGHT XK_Right
-#define DEFAULT_KEY_UP XK_Up
-#define DEFAULT_KEY_DOWN XK_Down
-#define DEFAULT_KEY_SNAP XK_Shift_L
-#define DEFAULT_KEY_BOMB XK_Shift_R
-#define DEFAULT_KEY_OKAY XK_Return
-#define DEFAULT_KEY_CANCEL XK_Escape
+#define DEFAULT_KEY_LEFT KEY_Left
+#define DEFAULT_KEY_RIGHT KEY_Right
+#define DEFAULT_KEY_UP KEY_Up
+#define DEFAULT_KEY_DOWN KEY_Down
+#define DEFAULT_KEY_SNAP KEY_Shift_L
+#define DEFAULT_KEY_BOMB KEY_Shift_R
+#define DEFAULT_KEY_OKAY KEY_Return
+#define DEFAULT_KEY_CANCEL KEY_Escape
/* directions for moving */
#define MV_NO_MOVING 0
#define TAPES_DIRECTORY "tapes"
#define SCORES_DIRECTORY "scores"
-#define PROGRAM_VERSION_STRING "1.3.5"
+#define PROGRAM_VERSION_STRING "1.5.0"
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
-#define WINDOW_TITLE_STRING PROGRAM_TITLE_STRING " " PROGRAM_VERSION_STRING
-#define COPYRIGHT_STRING "Copyright ^1995-99 by " PROGRAM_AUTHOR_STRING
+#define PROGRAM_RIGHTS_STRING "Copyright ^1995-2000 by"
+#define PROGRAM_DOS_PORT_STRING "DOS port done by Guido Schulz"
+#define PROGRAM_IDENT_STRING PROGRAM_VERSION_STRING " " PLATFORM_STRING
+#define WINDOW_TITLE_STRING PROGRAM_TITLE_STRING " " PROGRAM_IDENT_STRING
+#define WINDOW_SUBTITLE_STRING PROGRAM_RIGHTS_STRING " " PROGRAM_AUTHOR_STRING
/* default name for empty highscore entry */
#define EMPTY_PLAYER_NAME "no name"
#define MB_MENU_CHOICE FALSE
#define MB_MENU_MARK TRUE
#define MB_MENU_INITIALIZE (-1)
-#define MB_LEFT 1
-#define MB_MIDDLE 2
-#define MB_RIGHT 3
+#define MB_LEFTBUTTON 1
+#define MB_MIDDLEBUTTON 2
+#define MB_RIGHTBUTTON 3
/* values for redraw_mask */
#define REDRAW_ALL (1 << 0)
#define REDRAW_MAIN (REDRAW_FIELD | \
REDRAW_TILES | \
REDRAW_MICROLEVEL)
+#define REDRAW_FPS (1 << 10)
#define REDRAWTILES_THRESHOLD (SCR_FIELDX * SCR_FIELDY / 2)
-/* areas in pixmap PIX_DOOR */
+/* areas in bitmap PIX_DOOR */
/* meaning in PIX_DB_DOOR: (3 PAGEs)
PAGEX1: 1. buffer for DOOR_1
PAGEX2: 2. buffer for DOOR_1