rnd-19980903
[rocksndiamonds.git] / src / msdos.h
diff --git a/src/msdos.h b/src/msdos.h
new file mode 100644 (file)
index 0000000..c3357a6
--- /dev/null
@@ -0,0 +1,472 @@
+/***********************************************************
+*  Rocks'n'Diamonds -- McDuffin Strikes Back!              *
+*----------------------------------------------------------*
+*  ©1995 Artsoft Development                               *
+*        Holger Schemel                                    *
+*        33659 Bielefeld-Senne                             *
+*        Telefon: (0521) 493245                            *
+*        eMail: aeglos@valinor.owl.de                      *
+*               aeglos@uni-paderborn.de                    *
+*               q99492@pbhrzx.uni-paderborn.de             *
+*----------------------------------------------------------*
+*  msdos.h                                                 *
+***********************************************************/
+
+#ifndef XPM_INCLUDE_FILE
+#define XPM_INCLUDE_FILE
+#endif
+
+#define XRES 800
+#define YRES 600
+
+#define TRUE 1
+#define FALSE 0
+
+#include <allegro.h>
+#include <time.h>
+
+// Allegro keyboard mapping
+
+#define OSD_KEY_ESC         1        /* keyboard scan codes */
+#define OSD_KEY_1           2        /* (courtesy of allegro.h) */
+#define OSD_KEY_2           3
+#define OSD_KEY_3           4
+#define OSD_KEY_4           5
+#define OSD_KEY_5           6
+#define OSD_KEY_6           7
+#define OSD_KEY_7           8
+#define OSD_KEY_8           9
+#define OSD_KEY_9           10
+#define OSD_KEY_0           11
+#define OSD_KEY_MINUS       12
+#define OSD_KEY_EQUALS      13
+#define OSD_KEY_BACKSPACE   14
+#define OSD_KEY_TAB         15
+#define OSD_KEY_Q           16
+#define OSD_KEY_W           17
+#define OSD_KEY_E           18
+#define OSD_KEY_R           19
+#define OSD_KEY_T           20
+#define OSD_KEY_Y           21
+#define OSD_KEY_U           22
+#define OSD_KEY_I           23
+#define OSD_KEY_O           24
+#define OSD_KEY_P           25
+#define OSD_KEY_OPENBRACE   26
+#define OSD_KEY_CLOSEBRACE  27
+#define OSD_KEY_ENTER       28
+#define OSD_KEY_LCONTROL    29
+#define OSD_KEY_A           30
+#define OSD_KEY_S           31
+#define OSD_KEY_D           32
+#define OSD_KEY_F           33
+#define OSD_KEY_G           34
+#define OSD_KEY_H           35
+#define OSD_KEY_J           36
+#define OSD_KEY_K           37
+#define OSD_KEY_L           38
+#define OSD_KEY_COLON       39
+#define OSD_KEY_QUOTE       40
+#define OSD_KEY_TILDE       41
+#define OSD_KEY_LSHIFT      42
+/* 43 */
+#define OSD_KEY_Z           44
+#define OSD_KEY_X           45
+#define OSD_KEY_C           46
+#define OSD_KEY_V           47
+#define OSD_KEY_B           48
+#define OSD_KEY_N           49
+#define OSD_KEY_M           50
+#define OSD_KEY_COMMA       51
+#define OSD_KEY_STOP        52
+#define OSD_KEY_SLASH       53
+#define OSD_KEY_RSHIFT      54
+#define OSD_KEY_ASTERISK    55
+#define OSD_KEY_ALT         56
+#define OSD_KEY_SPACE       57
+#define OSD_KEY_CAPSLOCK    58
+#define OSD_KEY_F1          59
+#define OSD_KEY_F2          60
+#define OSD_KEY_F3          61
+#define OSD_KEY_F4          62
+#define OSD_KEY_F5          63
+#define OSD_KEY_F6          64
+#define OSD_KEY_F7          65
+#define OSD_KEY_F8          66
+#define OSD_KEY_F9          67
+#define OSD_KEY_F10         68
+#define OSD_KEY_NUMLOCK     69
+#define OSD_KEY_SCRLOCK     70
+#define OSD_KEY_HOME        71
+#define OSD_KEY_UP          72
+#define OSD_KEY_PGUP        73
+#define OSD_KEY_MINUS_PAD   74
+#define OSD_KEY_LEFT        75
+#define OSD_KEY_5_PAD       76
+#define OSD_KEY_RIGHT       77
+#define OSD_KEY_PLUS_PAD    78
+#define OSD_KEY_END         79
+#define OSD_KEY_DOWN        80
+#define OSD_KEY_PGDN        81
+#define OSD_KEY_INSERT      82
+#define OSD_KEY_DEL         83
+#define OSD_KEY_RCONTROL    84  /* different from Allegro */
+#define OSD_KEY_ALTGR       85  /* different from Allegro */
+/* 86 */
+#define OSD_KEY_F11         87
+#define OSD_KEY_F12         88
+#define OSD_KEY_COMMAND     89
+#define OSD_KEY_OPTION      90
+/* 91 - 100 */
+/* The following are all undefined in Allegro */
+#define OSD_KEY_1_PAD          101
+#define OSD_KEY_2_PAD          102
+#define OSD_KEY_3_PAD          103
+#define OSD_KEY_4_PAD          104
+/* 105 */
+#define OSD_KEY_6_PAD          106
+#define OSD_KEY_7_PAD          107
+#define OSD_KEY_8_PAD          108
+#define OSD_KEY_9_PAD          109
+#define OSD_KEY_0_PAD          110
+#define OSD_KEY_STOP_PAD       111
+#define OSD_KEY_EQUALS_PAD     112
+#define OSD_KEY_SLASH_PAD      113
+#define OSD_KEY_ASTER_PAD      114
+#define OSD_KEY_ENTER_PAD      115
+
+#define OSD_MAX_KEY         115
+
+// X11 keyboard mapping
+
+#define XK_KP_Enter    OSD_KEY_ENTER_PAD
+#define XK_KP_0                OSD_KEY_0_PAD
+#define XK_KP_1                OSD_KEY_1_PAD
+#define XK_KP_2                OSD_KEY_2_PAD
+#define XK_KP_3                OSD_KEY_3_PAD
+#define XK_KP_4                OSD_KEY_4_PAD
+#define XK_KP_6                OSD_KEY_6_PAD
+#define XK_KP_7                OSD_KEY_7_PAD
+#define XK_KP_8                OSD_KEY_8_PAD
+#define XK_KP_9                OSD_KEY_9_PAD
+/*
+#define XK_KP_Home     OSD_KEY_7_PAD
+#define XK_KP_Page_Up  OSD_KEY_9_PAD
+#define XK_KP_Page_Down        OSD_KEY_3_PAD
+#define XK_KP_End      OSD_KEY_1_PAD
+#define XK_KP_Left     OSD_KEY_4_PAD   
+#define XK_KP_Up       OSD_KEY_8_PAD
+#define XK_KP_Right    OSD_KEY_6_PAD
+#define XK_KP_Down     OSD_KEY_2_PAD
+*/
+#define XK_0           OSD_KEY_1
+#define XK_1           OSD_KEY_2
+#define XK_2           OSD_KEY_3
+#define XK_3           OSD_KEY_4
+#define XK_4           OSD_KEY_5
+#define XK_5           OSD_KEY_6
+#define XK_6           OSD_KEY_7
+#define XK_7           OSD_KEY_8
+#define XK_8           OSD_KEY_9
+#define XK_9           OSD_KEY_0
+#define XK_A           OSD_KEY_A
+#define XK_B           OSD_KEY_B
+#define XK_C           OSD_KEY_C
+#define XK_D           OSD_KEY_D
+#define XK_E           OSD_KEY_E
+#define XK_F           OSD_KEY_F
+#define XK_G           OSD_KEY_G
+#define XK_H           OSD_KEY_H
+#define XK_I           OSD_KEY_I
+#define XK_J           OSD_KEY_J
+#define XK_K           OSD_KEY_K
+#define XK_L           OSD_KEY_L
+#define XK_M           OSD_KEY_M
+#define XK_N           OSD_KEY_N
+#define XK_O           OSD_KEY_O
+#define XK_P           OSD_KEY_P
+#define XK_Q           OSD_KEY_Q
+#define XK_R           OSD_KEY_R
+#define XK_S           OSD_KEY_S
+#define XK_T           OSD_KEY_T
+#define XK_U           OSD_KEY_U
+#define XK_V           OSD_KEY_V
+#define XK_W           OSD_KEY_W
+#define XK_X           OSD_KEY_X
+#define XK_Y           OSD_KEY_Y
+#define XK_Z           OSD_KEY_Z
+#define XK_a           OSD_KEY_A
+#define XK_b           OSD_KEY_B
+#define XK_c           OSD_KEY_C
+#define XK_d           OSD_KEY_D
+#define XK_e           OSD_KEY_E
+#define XK_f           OSD_KEY_F
+#define XK_g           OSD_KEY_G
+#define XK_h           OSD_KEY_H
+#define XK_i           OSD_KEY_I
+#define XK_j           OSD_KEY_J
+#define XK_k           OSD_KEY_K
+#define XK_l           OSD_KEY_L
+#define XK_m           OSD_KEY_M
+#define XK_n           OSD_KEY_N
+#define XK_o           OSD_KEY_O
+#define XK_p           OSD_KEY_P
+#define XK_q           OSD_KEY_Q
+#define XK_r           OSD_KEY_R
+#define XK_s           OSD_KEY_S
+#define XK_t           OSD_KEY_T
+#define XK_u           OSD_KEY_U
+#define XK_v           OSD_KEY_V
+#define XK_w           OSD_KEY_W
+#define XK_x           OSD_KEY_X
+#define XK_y           OSD_KEY_Y
+#define XK_z           OSD_KEY_Z
+#define XK_Return      OSD_KEY_ENTER
+#define XK_Escape      OSD_KEY_ESC
+#define XK_Shift_L     OSD_KEY_LSHIFT
+#define XK_Shift_R     OSD_KEY_RSHIFT
+#define XK_Left                OSD_KEY_LEFT    
+#define XK_Up          OSD_KEY_UP
+#define XK_Right       OSD_KEY_RIGHT
+#define XK_Down                OSD_KEY_DOWN
+#define XK_BackSpace   OSD_KEY_BACKSPACE
+#define XK_Delete      OSD_KEY_DEL
+#define XK_Space       OSD_KEY_SPACE
+#define XK_F12         OSD_KEY_F12
+#define XK_F11         OSD_KEY_F11
+#define XK_F10         OSD_KEY_F10
+
+#define MOUSE_FILENAME "graphics\\mouse.gif"
+#define screen myscreen
+
+#define XFlush(a)
+#define XSync(a,b)
+#define XSetClipOrigin(a,b,c,d)
+#define XGetImage(a,b,c,d,e,f,g,h)             ((XImage *) NULL)
+#define XAutoRepeatOn(a)
+#define XAutoRepeatOff(a)
+#define XDisplayName(a)                                ((char *) NULL)
+#define XFreeColors(a,b,c,d,e)
+#define XpmFreeAttributes(a)
+#define XSelectInput(a,b,c)
+#define XDefaultDepth(a,b)                     (8)
+#define XSetWMProperties(a,b,c,d,e,f,g,h,i)
+
+#define MAX_EVENT_BUFFER 256
+
+#define Status int
+#define Bool int
+#define True 1
+#define False 0
+
+#define DUMMY_FILE (void*) -1
+#define DUMMY_MASK -1
+
+#define KeyPressMask                   (1L<<0)  
+#define KeyReleaseMask                 (1L<<1)  
+#define ButtonPressMask                        (1L<<2)  
+#define ButtonReleaseMask              (1L<<3)  
+#define ButtonMotionMask               (1L<<13) 
+#define ExposureMask                   (1L<<15) 
+#define StructureNotifyMask            (1L<<17) 
+#define FocusChangeMask                        (1L<<21) 
+
+#define KeyPress               2
+#define KeyRelease             3
+#define ButtonPress            4
+#define ButtonRelease          5
+#define MotionNotify           6
+#define FocusIn                        9
+#define FocusOut               10
+#define Expose                 12
+#define UnmapNotify            18
+#define MapNotify              19
+
+#define GCForeground            (1L<<2)
+#define GCBackground            (1L<<3)
+#define GCGraphicsExposures     (1L<<16)
+#define GCClipMask             (1L<<19)
+
+#define NormalState 1  /* most applications want to start this way */
+#define InputHint              (1L << 0)
+#define StateHint              (1L << 1)
+#define IconPixmapHint         (1L << 2)
+#define IconMaskHint           (1L << 5)
+#define PSize          (1L << 3) /* program specified size */
+#define PMinSize       (1L << 4) /* program specified minimum size */
+#define PMaxSize       (1L << 5) /* program specified maximum size */
+
+#define XpmSuccess       0
+#define XpmOpenFailed   -1
+#define XpmFileInvalid  -2
+#define XpmNoMemory     -3
+#define XpmColorFailed  -4
+#define XpmCloseness      (1L<<12)
+
+#define BitmapSuccess          0
+#define BitmapOpenFailed       1
+#define BitmapFileInvalid      2
+#define BitmapNoMemory         3
+
+#define ZPixmap                        2       /* depth == drawable depth */
+
+#define DefaultScreen(dpy)     (((_XPrivDisplay)dpy)->default_screen)
+#define DefaultColormap(dpy, scr)(ScreenOfDisplay(dpy,scr)->cmap)
+#define ScreenOfDisplay(dpy, scr)(&((_XPrivDisplay)dpy)->screens[scr])
+#define BlackPixel(dpy, scr)   (ScreenOfDisplay(dpy,scr)->black_pixel)
+#define WhitePixel(dpy, scr)   (ScreenOfDisplay(dpy,scr)->white_pixel)
+#define RootWindow(dpy, scr)   (ScreenOfDisplay(dpy,scr)->root)
+#define AllPlanes              ((unsigned long)~0L)
+
+#define XGetPixel(ximage, x, y) \
+       ((*((ximage)->f.get_pixel))((ximage), (x), (y)))
+
+typedef unsigned long Pixel;   /* Index into colormap */
+typedef unsigned long XID;
+typedef XID Window;
+typedef XID Drawable;
+typedef XID Pixmap;
+typedef XID Colormap;
+typedef XID KeySym;
+typedef XID GContext;
+typedef struct _XDisplay Display;
+
+typedef struct _XGC
+{
+    GContext gid;      /* protocol ID for graphics context */
+} *GC;
+
+typedef struct {
+       Colormap cmap;          /* default color map */
+       Window root;            /* Root window id. */
+       unsigned long white_pixel;
+       unsigned long black_pixel;      /* White and Black pixel values */
+       int x;
+       int y;
+       unsigned int width;
+       unsigned int height;
+       BITMAP *video_bitmap;
+} Screen;
+
+typedef struct _XDisplay
+{
+       int default_screen;     /* default screen for operations */
+       Screen *screens;        /* pointer to list of screens */
+       BITMAP *mouse_ptr;
+} *_XPrivDisplay;
+
+typedef struct _XImage {
+    struct funcs {
+       unsigned long (*get_pixel)  (struct _XImage *, int, int);
+    } f;
+} XImage;
+
+typedef struct {
+       long flags;     /* marks which fields in this structure are defined */
+       int width, height;      /* should set so old wm's don't mess up */
+       int min_width, min_height;
+       int max_width, max_height;
+} XSizeHints;
+
+typedef struct {
+       long flags;     /* marks which fields in this structure are defined */
+       Bool input;     /* does this application rely on the window manager to
+                       get keyboard input? */
+       int initial_state;      /* see below */
+       Pixmap icon_pixmap;     /* pixmap to be used as icon */
+       Pixmap icon_mask;       /* icon mask bitmap */
+} XWMHints;
+
+typedef struct {
+       char *res_name;
+       char *res_class;
+} XClassHint;
+
+typedef struct {
+    unsigned char *value;              /* same as Property routines */
+} XTextProperty;
+
+typedef struct {
+       unsigned long foreground;/* foreground pixel */
+       unsigned long background;/* background pixel */
+       Bool graphics_exposures;/* boolean, should exposures be generated */
+       Pixmap clip_mask;       /* bitmap clipping; other calls for rects */
+       int clip_x_origin;      /* origin for clipping */
+       int clip_y_origin;
+       unsigned long value_mask;
+} XGCValues;
+
+typedef struct {
+    unsigned long valuemask;           /* Specifies which attributes are */
+    unsigned int closeness;            /* Allowable RGB deviation */
+    Pixel *pixels;                     /* List of used color pixels */
+    unsigned int npixels;              /* Number of used pixels */
+} XpmAttributes;
+
+typedef struct {
+       int type;
+       int x, y;
+       int width, height;
+} XExposeEvent;
+
+typedef struct {
+       int type;               /* of event */
+       int x, y;               /* pointer x, y coordinates in event window */
+       unsigned int button;    /* detail */
+} XButtonEvent;
+
+typedef struct {
+       int type;
+       int x, y;               /* pointer x, y coordinates in event window */
+} XMotionEvent;
+
+typedef struct {
+       int type;               /* of event */
+       unsigned int state;     /* key or button mask */
+} XKeyEvent;
+
+typedef struct {
+       int type;               /* FocusIn or FocusOut */
+} XFocusChangeEvent;
+
+
+typedef union _XEvent {
+        int type;              /* must not be changed; first element */
+       XExposeEvent xexpose;
+       XButtonEvent xbutton;
+       XMotionEvent xmotion;
+       XKeyEvent xkey;
+} XEvent;
+
+
+extern void XMapWindow(Display*, Window);
+//extern void XFlush(Display*);
+extern Display *XOpenDisplay(char*);
+//extern char *XDisplayName(char*);
+extern Window XCreateSimpleWindow(Display*, Window, int, int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long);
+extern int XReadBitmapFile(Display*, Drawable, char*, unsigned int*, unsigned int*, Pixmap*, int*, int*);
+extern Status XStringListToTextProperty(char**, int, XTextProperty*);
+//extern void XSetWMProperties(Display*, Window, XTextProperty*, XTextProperty*, char**, int, XSizeHints*, XWMHints*, XClassHint*);
+extern void XFree(void*);
+//extern void XSelectInput(Display*, Window, long);
+extern GC XCreateGC(Display*, Drawable, unsigned long, XGCValues*);
+extern void XFillRectangle(Display*, Drawable, GC, int, int, unsigned int, unsigned int);
+extern Pixmap XCreatePixmap(Display*, Drawable, unsigned int, unsigned int, unsigned int);
+//extern int XDefaultDepth(Display*, int);
+extern inline void XCopyArea(Display*, Drawable, Drawable, GC, int, int, unsigned int, unsigned int, int, int);
+extern int XpmReadFileToPixmap(Display*, Drawable, char*, Pixmap*, Pixmap*, XpmAttributes*);
+//extern void XFreeColors(Display*, Colormap, unsigned long*, int, unsigned long);
+//extern void XpmFreeAttributes(XpmAttributes*);
+extern void XFreePixmap(Display*, Pixmap);
+extern void XFreeGC(Display*, GC);
+extern void XCloseDisplay(Display*);
+extern int XPending(Display*);
+extern void XNextEvent(Display*, XEvent*);
+//extern void XSync(Display*, Bool);
+//extern void XAutoRepeatOn(Display*);
+//extern void XAutoRepeatOff(Display*);
+extern KeySym XLookupKeysym(XKeyEvent*, int);
+//extern void XSetClipOrigin(Display*, GC, int, int);
+//extern XImage *XGetImage(Display*, Drawable, int, int, unsigned int, unsigned int, unsigned long, int);
+
+BITMAP *load_gif(char *filename, RGB *pal);
\ No newline at end of file