+2014-05-15
+ * removed MS-DOS support
+
2014-05-14
* cleanup of functions RedrawPlayfield() and BlitScreenToBitmap()
# uncomment to install game in single-user environment (default)
# SCORE_ENTRIES = MANY_PER_NAME
-# paths for cross-compiling (only needed for non-native MS-DOS and Win32 build)
-CROSS_PATH_MSDOS = /usr/local/cross-msdos/i386-msdosdjgpp
+# path for cross-compiling (only needed for non-native Windows build)
CROSS_PATH_WIN32 = /usr/local/cross-tools/i386-mingw32msvc
# compile special edition of R'n'D instead of the normal (classic) version
mac2-static:
@$(MAKE_CMD) PLATFORM=macosx TARGET=sdl2-static
-msdos:
- @$(MAKE_CMD) PLATFORM=msdos
-
os2:
@$(MAKE_CMD) PLATFORM=os2
-cross-msdos:
- @PATH=$(CROSS_PATH_MSDOS)/bin:${PATH} $(MAKE_CMD) PLATFORM=cross-msdos
-
cross-win32:
@PATH=$(CROSS_PATH_WIN32)/bin:${PATH} $(MAKE_CMD) PLATFORM=cross-win32
dist-build-unix:
@BUILD_DIST=TRUE $(MAKE)
-dist-build-msdos:
- @BUILD_DIST=TRUE $(MAKE) cross-msdos
-
dist-build-win32:
@BUILD_DIST=TRUE $(MAKE) cross-win32
dist-package-unix:
./Scripts/make_dist.sh unix .
-dist-package-msdos:
- ./Scripts/make_dist.sh dos .
-
dist-package-win32:
./Scripts/make_dist.sh win .
dist-upload-unix:
./Scripts/make_dist.sh unix . upload
-dist-upload-msdos:
- ./Scripts/make_dist.sh dos . upload
-
dist-upload-win32:
./Scripts/make_dist.sh win . upload
$(MAKE) clean
$(MAKE) dist-build-unix ; $(MAKE) dist-clean
$(MAKE) dist-build-win32 ; $(MAKE) dist-clean
-# $(MAKE) dist-build-msdos ; $(MAKE) dist-clean
dist-package-all:
$(MAKE) dist-package-unix
$(MAKE) dist-package-win32
$(MAKE) dist-package-macosx
$(MAKE) dist-package-macosx-ppc
-# $(MAKE) dist-package-msdos
dist-upload-all:
$(MAKE) dist-upload-unix
$(MAKE) dist-upload-win32
$(MAKE) dist-upload-macosx
$(MAKE) dist-upload-macosx-ppc
-# $(MAKE) dist-upload-msdos
dist-all: dist-build-all dist-package-all
.EXPORT_ALL_VARIABLES:
-ifndef PLATFORM # unknown platform -- try auto detection
-ifdef COMSPEC
-PLATFORM = msdos
-else
+ifndef PLATFORM # unknown platform -- default to Unix
PLATFORM = unix
endif
-endif
ifdef X11_PATH # path to X11 from top level Makefile
XINC_PATH = $(X11_PATH)/include
TARGET = sdl2
endif
-ifeq ($(PLATFORM),cross-msdos) # cross-compiling to MS-DOS
-PROGBASE = rocks
-PROGNAME = ../$(PROGBASE).exe
-TARGET = allegro
-endif
-
-ifeq ($(PLATFORM),msdos) # native compiling to MS-DOS
-PROGBASE = rocks
-PROGNAME = ../$(PROGBASE).exe
-SYS_CFLAGS = -DTARGET_X11
-SYS_LDFLAGS = -s -lalleg
-RM = del
-endif
-
# -----------------------------------------------------------------------------
# configuring target
SYS_LDFLAGS = $(SDL_LIBS) $(shell sdl2-config --static-libs)
endif
-ifeq ($(TARGET),allegro) # compiling for Allegro target
-SYS_CFLAGS = -DTARGET_ALLEGRO -I$(CROSS_PATH_MSDOS)/include
-SYS_LDFLAGS = -lalleg
-endif
-
# -----------------------------------------------------------------------------
# configuring compile-time definitions
-#define COMPILE_DATE_STRING "2014-05-14 23:07"
+#define COMPILE_DATE_STRING "2014-05-15 00:13"
hash.c \
setup.c \
misc.c \
- msdos.c \
x11.c \
sdl.c
hash.o \
setup.o \
misc.o \
- msdos.o \
x11.o \
sdl.o
#if defined(TARGET_X11)
-/* for MS-DOS/Allegro, exclude all except newImage() and freeImage() */
-
Image *newImage(unsigned int width, unsigned int height, unsigned int depth)
{
Image *image;
free(image);
}
-#if defined(PLATFORM_UNIX)
-
/* extra colors to try allocating in private color maps to minimize flashing */
#define NOFLASH_COLORS 256
return PCX_Success;
}
-#endif /* PLATFORM_UNIX */
#endif /* TARGET_X11 */
/* counter functions */
/* ------------------------------------------------------------------------- */
-#if defined(PLATFORM_MSDOS)
-volatile unsigned int counter = 0;
-
-void increment_counter()
-{
- counter++;
-}
-
-END_OF_FUNCTION(increment_counter);
-#endif
-
-
/* maximal allowed length of a command line option */
#define MAX_OPTION_LEN 256
void InitCounter() /* set counter back to zero */
{
-#if !defined(PLATFORM_MSDOS)
mainCounter(INIT_COUNTER);
-#else
- LOCK_VARIABLE(counter);
- LOCK_FUNCTION(increment_counter);
- install_int_ex(increment_counter, BPS_TO_TIMER(100));
-#endif
}
unsigned int Counter() /* get milliseconds since last call of InitCounter() */
{
-#if !defined(PLATFORM_MSDOS)
return mainCounter(READ_COUNTER);
-#else
- return (counter * 10);
-#endif
}
static void sleep_milliseconds(unsigned int milliseconds_delay)
/* system info functions */
/* ------------------------------------------------------------------------- */
-#if !defined(PLATFORM_MSDOS) && !defined(PLATFORM_ANDROID)
+#if !defined(PLATFORM_ANDROID)
static char *get_corrected_real_name(char *real_name)
{
char *real_name_new = checked_malloc(MAX_USERNAME_LEN + 1);
+++ /dev/null
-/***********************************************************
-* Artsoft Retro-Game Library *
-*----------------------------------------------------------*
-* (c) 1994-2006 Artsoft Entertainment *
-* Holger Schemel *
-* Detmolder Strasse 189 *
-* 33604 Bielefeld *
-* Germany *
-* e-mail: info@artsoft.org *
-*----------------------------------------------------------*
-* msdos.c *
-***********************************************************/
-
-#include "system.h"
-
-
-#if defined(PLATFORM_MSDOS)
-
-#include "sound.h"
-#include "joystick.h"
-#include "misc.h"
-#include "setup.h"
-#include "pcx.h"
-
-#define AllegroDefaultScreen() (display->screens[display->default_screen])
-
-/* allegro driver declarations */
-DECLARE_GFX_DRIVER_LIST(GFX_DRIVER_VBEAF GFX_DRIVER_VESA2L GFX_DRIVER_VESA1)
-DECLARE_COLOR_DEPTH_LIST(COLOR_DEPTH_8)
-DECLARE_DIGI_DRIVER_LIST(DIGI_DRIVER_SB)
-DECLARE_MIDI_DRIVER_LIST()
-DECLARE_JOYSTICK_DRIVER_LIST(JOYSTICK_DRIVER_STANDARD)
-
-/* allegro global variables */
-extern volatile int key_shifts;
-extern int num_joysticks;
-extern JOYSTICK_INFO joy[];
-extern int i_love_bill;
-
-/* internal variables of msdos.c */
-static boolean keyboard_auto_repeat = TRUE;
-static int key_press_state[MAX_SCANCODES];
-static XEvent event_buffer[MAX_EVENT_BUFFER];
-static int pending_events;
-static boolean joystick_event;
-static boolean mouse_installed = FALSE;
-static int last_mouse_pos;
-static int last_mouse_b;
-static int last_joystick_state;
-static BITMAP* video_bitmap;
-
-static RGB global_colormap[MAX_COLORS];
-static int global_colormap_entries_used = 0;
-
-boolean wait_for_vsync;
-
-static BITMAP *Read_PCX_to_AllegroBitmap(char *);
-
-static void allegro_init_drivers()
-{
- int i;
-
- for (i = 0; i < MAX_EVENT_BUFFER; i++)
- event_buffer[i].type = 0;
-
- for (i = 0; i < MAX_SCANCODES; i++)
- key_press_state[i] = KeyReleaseMask;
-
- last_mouse_pos = mouse_pos;
- last_mouse_b = 0;
-
- pending_events = 0;
- clear_keybuf();
-
- /* enable Windows friendly timer mode (already default under Windows) */
- i_love_bill = TRUE;
-
- install_keyboard();
- install_timer();
- if (install_mouse() > 0)
- mouse_installed = TRUE;
-
- last_joystick_state = 0;
- joystick_event = FALSE;
-}
-
-static boolean allegro_init_audio()
-{
- reserve_voices(NUM_MIXER_CHANNELS, 0);
-
- if (install_sound(DIGI_AUTODETECT, MIDI_NONE, NULL) == -1)
- if (install_sound(DIGI_SB, MIDI_NONE, NULL) == -1)
- return FALSE;
-
- return TRUE;
-}
-
-static boolean hide_mouse(Display *display, int x, int y,
- unsigned int width, unsigned int height)
-{
- if (mouse_x + display->mouse_ptr->w < x || mouse_x > x + width)
- return FALSE;
- if (mouse_y + display->mouse_ptr->h < y || mouse_y > y + height)
- return FALSE;
-
- show_mouse(NULL);
-
- return TRUE;
-}
-
-static void unhide_mouse(Display *display)
-{
- if (mouse_installed)
- show_mouse(video_bitmap);
-}
-
-static KeySym ScancodeToKeySym(byte scancode)
-{
- switch(scancode)
- {
- case KEY_ESC: return XK_Escape;
- case KEY_1: return XK_1;
- case KEY_2: return XK_2;
- case KEY_3: return XK_3;
- case KEY_4: return XK_4;
- case KEY_5: return XK_5;
- case KEY_6: return XK_6;
- case KEY_7: return XK_7;
- case KEY_8: return XK_8;
- case KEY_9: return XK_9;
- case KEY_0: return XK_0;
- case KEY_MINUS: return XK_minus;
- case KEY_EQUALS: return XK_equal;
- case KEY_BACKSPACE: return XK_BackSpace;
- case KEY_TAB: return XK_Tab;
- case KEY_Q: return XK_q;
- case KEY_W: return XK_w;
- case KEY_E: return XK_e;
- case KEY_R: return XK_r;
- case KEY_T: return XK_t;
- case KEY_Y: return XK_y;
- case KEY_U: return XK_u;
- case KEY_I: return XK_i;
- case KEY_O: return XK_o;
- case KEY_P: return XK_p;
- case KEY_OPENBRACE: return XK_braceleft;
- case KEY_CLOSEBRACE: return XK_braceright;
- case KEY_ENTER: return XK_Return;
- case KEY_LCONTROL: return XK_Control_L;
- case KEY_A: return XK_a;
- case KEY_S: return XK_s;
- case KEY_D: return XK_d;
- case KEY_F: return XK_f;
- case KEY_G: return XK_g;
- case KEY_H: return XK_h;
- case KEY_J: return XK_j;
- case KEY_K: return XK_k;
- case KEY_L: return XK_l;
- case KEY_COLON: return XK_colon;
- case KEY_QUOTE: return XK_apostrophe;
- case KEY_TILDE: return XK_asciitilde;
- case KEY_LSHIFT: return XK_Shift_L;
- case KEY_BACKSLASH: return XK_backslash;
- case KEY_Z: return XK_z;
- case KEY_X: return XK_x;
- case KEY_C: return XK_c;
- case KEY_V: return XK_v;
- case KEY_B: return XK_b;
- case KEY_N: return XK_n;
- case KEY_M: return XK_m;
- case KEY_COMMA: return XK_comma;
- case KEY_STOP: return XK_period;
- case KEY_SLASH: return XK_slash;
- case KEY_RSHIFT: return XK_Shift_R;
- case KEY_ASTERISK: return XK_KP_Multiply;
- case KEY_ALT: return XK_Alt_L;
- case KEY_SPACE: return XK_space;
- case KEY_CAPSLOCK: return XK_Caps_Lock;
- case KEY_F1: return XK_F1;
- case KEY_F2: return XK_F2;
- case KEY_F3: return XK_F3;
- case KEY_F4: return XK_F4;
- case KEY_F5: return XK_F5;
- case KEY_F6: return XK_F6;
- case KEY_F7: return XK_F7;
- case KEY_F8: return XK_F8;
- case KEY_F9: return XK_F9;
- case KEY_F10: return XK_F10;
- case KEY_NUMLOCK: return XK_Num_Lock;
- case KEY_SCRLOCK: return XK_Scroll_Lock;
- case KEY_HOME: return XK_Home;
- case KEY_UP: return XK_Up;
- case KEY_PGUP: return XK_Page_Up;
- case KEY_MINUS_PAD: return XK_KP_Subtract;
- case KEY_LEFT: return XK_Left;
- case KEY_5_PAD: return XK_KP_5;
- case KEY_RIGHT: return XK_Right;
- case KEY_PLUS_PAD: return XK_KP_Add;
- case KEY_END: return XK_End;
- case KEY_DOWN: return XK_Down;
- case KEY_PGDN: return XK_Page_Down;
- case KEY_INSERT: return XK_Insert;
- case KEY_DEL: return XK_Delete;
- case KEY_PRTSCR: return XK_Print;
- case KEY_F11: return XK_F11;
- case KEY_F12: return XK_F12;
- case KEY_LWIN: return XK_Meta_L;
- case KEY_RWIN: return XK_Meta_R;
- case KEY_MENU: return XK_Menu;
- case KEY_PAD: return XK_VoidSymbol;
- case KEY_RCONTROL: return XK_Control_R;
- case KEY_ALTGR: return XK_Alt_R;
- case KEY_SLASH2: return XK_KP_Divide;
- case KEY_PAUSE: return XK_Pause;
-
- case NEW_KEY_BACKSLASH: return XK_backslash;
- case NEW_KEY_1_PAD: return XK_KP_1;
- case NEW_KEY_2_PAD: return XK_KP_2;
- case NEW_KEY_3_PAD: return XK_KP_3;
- case NEW_KEY_4_PAD: return XK_KP_4;
- case NEW_KEY_5_PAD: return XK_KP_5;
- case NEW_KEY_6_PAD: return XK_KP_6;
- case NEW_KEY_7_PAD: return XK_KP_7;
- case NEW_KEY_8_PAD: return XK_KP_8;
- case NEW_KEY_9_PAD: return XK_KP_9;
- case NEW_KEY_0_PAD: return XK_KP_0;
- case NEW_KEY_STOP_PAD: return XK_KP_Separator;
- case NEW_KEY_EQUALS_PAD: return XK_KP_Equal;
- case NEW_KEY_SLASH_PAD: return XK_KP_Divide;
- case NEW_KEY_ASTERISK_PAD: return XK_KP_Multiply;
- case NEW_KEY_ENTER_PAD: return XK_KP_Enter;
-
- default: return XK_VoidSymbol;
- }
-}
-
-Pixel AllegroAllocColorCell(int r, int g, int b)
-{
- byte pixel_mapping = 0;
- int i;
-
- r >>= 10;
- g >>= 10;
- b >>= 10;
-
- /* try to use existing colors from the global colormap */
- for (i = 0; i < global_colormap_entries_used; i++)
- {
- if (r == global_colormap[i].r &&
- g == global_colormap[i].g &&
- b == global_colormap[i].b) /* color found */
- {
- pixel_mapping = i;
- break;
- }
- }
-
- if (i == global_colormap_entries_used) /* color not found */
- {
- if (global_colormap_entries_used < MAX_COLORS)
- global_colormap_entries_used++;
-
- i = global_colormap_entries_used - 1;
-
- global_colormap[i].r = r;
- global_colormap[i].g = g;
- global_colormap[i].b = b;
-
- set_palette(global_colormap);
-
- pixel_mapping = i;
- }
-
- return pixel_mapping;
-}
-
-void XMapWindow(Display *display, Window window)
-{
- int x, y;
- unsigned int width, height;
- boolean mouse_off;
-
- x = AllegroDefaultScreen().x;
- y = AllegroDefaultScreen().y;
- width = AllegroDefaultScreen().width;
- height = AllegroDefaultScreen().height;
-
- mouse_off = hide_mouse(display, x, y, width, height);
- blit((BITMAP *)window, video_bitmap, 0, 0, x, y, width, height);
-
- if (mouse_off)
- unhide_mouse(display);
-}
-
-Display *XOpenDisplay(char *display_name)
-{
- Screen *screen;
- Display *display;
- BITMAP *mouse_bitmap = NULL;
- char *mouse_filename = getCustomImageFilename(program.msdos_cursor_filename);
-
- if ((mouse_bitmap = Read_PCX_to_AllegroBitmap(mouse_filename)) == NULL)
- return NULL;
-
- screen = malloc(sizeof(Screen));
- display = malloc(sizeof(Display));
-
- screen[0].cmap = 0;
- screen[0].root = 0;
- screen[0].white_pixel = AllegroAllocColorCell(0xFFFF, 0xFFFF, 0xFFFF);
- screen[0].black_pixel = AllegroAllocColorCell(0x0000, 0x0000, 0x0000);
- screen[0].video_bitmap = NULL;
-
- display->default_screen = 0;
- display->screens = screen;
- display->mouse_ptr = mouse_bitmap;
-
- allegro_init();
- allegro_init_drivers();
- set_color_depth(8);
-
- /* force Windows 95 to switch to fullscreen mode */
- set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0);
- rest(200);
- set_gfx_mode(GFX_AUTODETECT, XRES, YRES, 0, 0);
-
- return display;
-}
-
-Window XCreateSimpleWindow(Display *display, Window parent, int x, int y,
- unsigned int width, unsigned int height,
- unsigned int border_width, unsigned int border,
- unsigned int background)
-{
- video_bitmap = create_video_bitmap(XRES, YRES);
- clear_to_color(video_bitmap, background);
-
- AllegroDefaultScreen().video_bitmap = video_bitmap;
- AllegroDefaultScreen().x = x;
- AllegroDefaultScreen().y = y;
- AllegroDefaultScreen().width = XRES;
- AllegroDefaultScreen().height = YRES;
-
- set_mouse_sprite(display->mouse_ptr);
-
-#if 0
- set_mouse_sprite_focus(1, 1);
-#endif
-
- set_mouse_speed(1, 1);
- set_mouse_range(AllegroDefaultScreen().x + 1,
- AllegroDefaultScreen().y + 1,
- AllegroDefaultScreen().x + video.width + 1,
- AllegroDefaultScreen().y + video.height + 1);
-
- show_video_bitmap(video_bitmap);
-
- return (Window)video_bitmap;
-}
-
-Status XStringListToTextProperty(char **list, int count,
- XTextProperty *text_prop_return)
-{
- char *string;
-
- if (count >= 1)
- {
- string = malloc(strlen(list[0] + 1));
- strcpy(string, list[0]);
- text_prop_return->value = (unsigned char *)string;
- return 1;
- }
- else
- text_prop_return = NULL;
-
- return 0;
-}
-
-void XFree(void *data)
-{
- checked_free(data);
-}
-
-GC XCreateGC(Display *display, Drawable d, unsigned int value_mask,
- XGCValues *values)
-{
- XGCValues *gcv;
- gcv = malloc(sizeof(XGCValues));
- gcv->foreground = values->foreground;
- gcv->background = values->background;
- gcv->graphics_exposures = values->graphics_exposures;
- gcv->clip_mask = values->clip_mask;
- gcv->clip_x_origin = values->clip_x_origin;
- gcv->clip_y_origin = values->clip_y_origin;
- gcv->value_mask = value_mask;
- return (GC)gcv;
-}
-
-void XSetClipMask(Display *display, GC gc, Pixmap pixmap)
-{
- XGCValues *gcv = (XGCValues *)gc;
-
- gcv->clip_mask = pixmap;
- gcv->value_mask |= GCClipMask;
-}
-
-void XSetClipOrigin(Display *display, GC gc, int x, int y)
-{
- XGCValues *gcv = (XGCValues *)gc;
-
- gcv->clip_x_origin = x;
- gcv->clip_x_origin = y;
-}
-
-void XFillRectangle(Display *display, Drawable d, GC gc, int x, int y,
- unsigned int width, unsigned int height)
-{
- boolean mouse_off = FALSE;
-
- if ((BITMAP *)d == video_bitmap)
- {
- x += AllegroDefaultScreen().x;
- y += AllegroDefaultScreen().y;
- freeze_mouse_flag = TRUE;
- mouse_off = hide_mouse(display, x, y, width, height);
- }
-
- rectfill((BITMAP *)d, x, y, x + width - 1, y + height - 1,
- ((XGCValues *)gc)->foreground);
-
- if (mouse_off)
- unhide_mouse(display);
-
- freeze_mouse_flag = FALSE;
-}
-
-Pixmap XCreatePixmap(Display *display, Drawable d, unsigned int width,
- unsigned int height, unsigned int depth)
-{
- BITMAP *bitmap = NULL;
-
- if (gfx_capabilities & GFX_HW_VRAM_BLIT &&
- width == gfx.scrollbuffer_width && height == gfx.scrollbuffer_height)
- bitmap = create_video_bitmap(width, height);
-
- if (bitmap == NULL)
- bitmap = create_bitmap(width, height);
-
- return (Pixmap)bitmap;
-}
-
-void XSync(Display *display, Bool discard_events)
-{
- wait_for_vsync = TRUE;
-}
-
-inline void XCopyArea(Display *display, Drawable src, Drawable dest, GC gc,
- int src_x, int src_y,
- unsigned int width, unsigned int height,
- int dest_x, int dest_y)
-{
- boolean mouse_off = FALSE;
-
- if ((BITMAP *)src == video_bitmap)
- {
- src_x += AllegroDefaultScreen().x;
- src_y += AllegroDefaultScreen().y;
- }
-
- if ((BITMAP *)dest == video_bitmap)
- {
- dest_x += AllegroDefaultScreen().x;
- dest_y += AllegroDefaultScreen().y;
- freeze_mouse_flag = TRUE;
- mouse_off = hide_mouse(display, dest_x, dest_y, width, height);
- }
-
- if (wait_for_vsync)
- {
- wait_for_vsync = FALSE;
- vsync();
- }
-
- if (((XGCValues *)gc)->value_mask & GCClipMask)
- masked_blit((BITMAP *)src, (BITMAP *)dest, src_x, src_y, dest_x, dest_y,
- width, height);
- else
- blit((BITMAP *)src, (BITMAP *)dest, src_x, src_y, dest_x, dest_y,
- width, height);
-
- if (mouse_off)
- unhide_mouse(display);
-
- freeze_mouse_flag = FALSE;
-}
-
-static BITMAP *Image_to_AllegroBitmap(Image *image)
-{
- BITMAP *bitmap;
- byte *src_ptr = image->data;
- byte pixel_mapping[MAX_COLORS];
- unsigned int depth = 8;
- int i, x, y;
-
- if (image->type == IMAGETYPE_TRUECOLOR && depth == 8)
- Error(ERR_EXIT, "cannot handle true-color images on 8-bit display");
-
- /* allocate new allegro bitmap structure */
- if ((bitmap = create_bitmap_ex(depth, image->width, image->height)) == NULL)
- {
- errno_pcx = PCX_NoMemory;
- return NULL;
- }
-
- clear(bitmap);
-
- /* try to use existing colors from the global colormap */
- for (i = 0; i < MAX_COLORS; i++)
- {
- if (!image->rgb.color_used[i])
- continue;
-
- pixel_mapping[i] = AllegroAllocColorCell(image->rgb.red[i],
- image->rgb.green[i],
- image->rgb.blue[i]);
- }
-
- /* copy bitmap data */
- for (y = 0; y < image->height; y++)
- for (x = 0; x < image->width; x++)
- putpixel(bitmap, x, y, pixel_mapping[*src_ptr++]);
-
- return bitmap;
-}
-
-static BITMAP *Read_PCX_to_AllegroBitmap(char *filename)
-{
- BITMAP *bitmap;
- Image *image;
-
- /* read the graphic file in PCX format to internal image structure */
- if ((image = Read_PCX_to_Image(filename)) == NULL)
- return NULL;
-
- /* convert internal image structure to allegro bitmap structure */
- if ((bitmap = Image_to_AllegroBitmap(image)) == NULL)
- return NULL;
-
- set_palette(global_colormap);
-
- return bitmap;
-}
-
-int Read_PCX_to_Pixmap(Display *display, Window window, GC gc, char *filename,
- Pixmap *pixmap, Pixmap *pixmap_mask)
-{
- BITMAP *bitmap;
-
- if ((bitmap = Read_PCX_to_AllegroBitmap(filename)) == NULL)
- return errno_pcx;
-
- *pixmap = (Pixmap)bitmap;
-
- /* pixmap_mask will never be used in Allegro (which uses masked_blit()),
- so use non-NULL dummy pointer to empty Pixmap */
- *pixmap_mask = (Pixmap)DUMMY_MASK;
-
- return PCX_Success;
-}
-
-int XReadBitmapFile(Display *display, Drawable d, char *filename,
- unsigned int *width_return, unsigned int *height_return,
- Pixmap *bitmap_return,
- int *x_hot_return, int *y_hot_return)
-{
- BITMAP *bitmap;
-
- if ((bitmap = Read_PCX_to_AllegroBitmap(filename)) == NULL)
- return BitmapOpenFailed;
-
- *width_return = bitmap->w;
- *height_return = bitmap->h;
- *x_hot_return = -1;
- *y_hot_return = -1;
- *bitmap_return = (Pixmap)bitmap;
-
- return BitmapSuccess;
-}
-
-void XFreePixmap(Display *display, Pixmap pixmap)
-{
- if (pixmap != DUMMY_MASK &&
- (is_memory_bitmap((BITMAP *)pixmap) ||
- is_screen_bitmap((BITMAP *)pixmap)))
- destroy_bitmap((BITMAP *)pixmap);
-}
-
-void XFreeGC(Display *display, GC gc)
-{
- XGCValues *gcv = (XGCValues *)gc;
-
- checked_free(gcv);
-}
-
-void XUnmapWindow(Display *display, Window window)
-{
-}
-
-void XCloseDisplay(Display *display)
-{
- BITMAP *bitmap = video_bitmap;
-
- if (is_screen_bitmap(bitmap))
- destroy_bitmap(bitmap);
-
- checked_free(display->screens);
- checked_free(display);
-
- /* return to text mode (or DOS box on Windows screen) */
- set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
-}
-
-void XNextEvent(Display *display, XEvent *event_return)
-{
- while (!pending_events)
- XPending(display);
-
- memcpy(event_return, &event_buffer[pending_events], sizeof(XEvent));
- pending_events--;
-}
-
-static void NewKeyEvent(int key_press_state, KeySym keysym)
-{
- XKeyEvent *xkey;
-
- if (pending_events >= MAX_EVENT_BUFFER)
- return;
-
- pending_events++;
- xkey = (XKeyEvent *)&event_buffer[pending_events];
- xkey->type = key_press_state;
- xkey->state = (unsigned int)keysym;
-}
-
-#define HANDLE_RAW_KB_ALL_KEYS 0
-#define HANDLE_RAW_KB_MODIFIER_KEYS_ONLY 1
-
-static int modifier_scancode[] =
-{
- KEY_LSHIFT,
- KEY_RSHIFT,
- KEY_LCONTROL,
- KEY_RCONTROL,
- KEY_ALT,
- KEY_ALTGR,
- KEY_LWIN,
- KEY_RWIN,
- KEY_CAPSLOCK,
- KEY_NUMLOCK,
- KEY_SCRLOCK,
- -1
-};
-
-static void HandleKeyboardRaw(int mode)
-{
- int i;
-
- for (i = 0; i < MAX_SCANCODES; i++)
- {
- int scancode, new_state, event_type;
- char key_pressed;
-
- if (mode == HANDLE_RAW_KB_MODIFIER_KEYS_ONLY)
- {
- if ((scancode = modifier_scancode[i]) == -1)
- return;
- }
- else
- scancode = i;
-
- key_pressed = key[scancode];
- new_state = (key_pressed ? KeyPressMask : KeyReleaseMask);
- event_type = (key_pressed ? KeyPress : KeyRelease);
-
- if (key_press_state[i] == new_state) /* state not changed */
- continue;
-
- key_press_state[i] = new_state;
-
- NewKeyEvent(event_type, ScancodeToKeySym(scancode));
- }
-}
-
-static void HandleKeyboardEvent()
-{
- if (keypressed())
- {
- int key_info = readkey();
- int scancode = (key_info >> 8);
- int ascii = (key_info & 0xff);
- KeySym keysym = ScancodeToKeySym(scancode);
-
- if (scancode == KEY_PAD)
- {
- /* keys on the numeric keypad return just scancode 'KEY_PAD'
- for some reason, so we must handle them separately */
-
- if (ascii >= '0' && ascii <= '9')
- keysym = XK_KP_0 + (KeySym)(ascii - '0');
- else if (ascii == '.')
- keysym = XK_KP_Separator;
- }
- else if (ascii >= ' ' && ascii <= 'Z')
- keysym = XK_space + (KeySym)(ascii - ' ');
- else if (ascii == '^')
- keysym = XK_asciicircum;
- else if (ascii == '_')
- keysym = XK_underscore;
- else if (ascii == 'Ä')
- keysym = XK_Adiaeresis;
- else if (ascii == 'Ö')
- keysym = XK_Odiaeresis;
- else if (ascii == 'Ü')
- keysym = XK_Udiaeresis;
- else if (ascii == 'ä')
- keysym = XK_adiaeresis;
- else if (ascii == 'ö')
- keysym = XK_odiaeresis;
- else if (ascii == 'ü')
- keysym = XK_udiaeresis;
- else if (ascii == 'ß')
- keysym = XK_ssharp;
-
- NewKeyEvent(KeyPress, keysym);
- }
- else if (key_shifts & (KB_SHIFT_FLAG | KB_CTRL_FLAG | KB_ALT_FLAG))
- {
- /* the allegro function keypressed() does not give us single pressed
- modifier keys, so we must detect them with the internal global
- allegro variable 'key_shifts' and then handle them separately */
-
- HandleKeyboardRaw(HANDLE_RAW_KB_MODIFIER_KEYS_ONLY);
- }
-}
-
-int XPending(Display *display)
-{
- XButtonEvent *xbutton;
- XMotionEvent *xmotion;
- int i;
-
- /* When using 'HandleKeyboardRaw()', keyboard input is also stored in
- the allegro keyboard input buffer and would be available a second
- time by calling 'HandleKeyboardEvent()'. To avoid double keyboard
- events, the allegro function 'clear_keybuf()' must be called each
- time when switching from calling 'HandleKeyboardRaw()' to calling
- 'HandleKeyboardEvent()' to get keyboard input, which is actually
- done by 'XAutoRepeatOn()' which sets keyboard_auto_repeat to TRUE. */
-
- /* keyboard event */
- if (keyboard_auto_repeat)
- HandleKeyboardEvent();
- else
- HandleKeyboardRaw(HANDLE_RAW_KB_ALL_KEYS);
-
- /* mouse motion event */
- if (mouse_pos != last_mouse_pos)
- {
- last_mouse_pos = mouse_pos;
- pending_events++;
- xmotion = (XMotionEvent *)&event_buffer[pending_events];
- xmotion->type = MotionNotify;
- xmotion->x = mouse_x - AllegroDefaultScreen().x;
- xmotion->y = mouse_y - AllegroDefaultScreen().y;
- }
-
- /* mouse button event */
- if (mouse_b != last_mouse_b)
- {
- for (i = 0; i < 3; i++) /* check all three mouse buttons */
- {
- int bitmask = (1 << i);
-
- if ((last_mouse_b & bitmask) != (mouse_b & bitmask))
- {
- int mapping[3] = { 1, 3, 2 };
-
- pending_events++;
- xbutton = (XButtonEvent *)&event_buffer[pending_events];
- xbutton->type = (mouse_b & bitmask ? ButtonPress : ButtonRelease);
- xbutton->button = mapping[i];
- xbutton->x = mouse_x - AllegroDefaultScreen().x;
- xbutton->y = mouse_y - AllegroDefaultScreen().y;
- }
- }
- last_mouse_b = mouse_b;
- }
-
- return pending_events;
-}
-
-KeySym XLookupKeysym(XKeyEvent *key_event, int index)
-{
- return key_event->state;
-}
-
-int XLookupString(XKeyEvent *key_event, char *buffer, int buffer_size,
- KeySym *key, XComposeStatus *compose)
-{
- *key = key_event->state;
- return 0;
-}
-
-void XSetForeground(Display *display, GC gc, unsigned int pixel)
-{
- XGCValues *gcv = (XGCValues *)gc;
-
- gcv->foreground = pixel;
-}
-
-void XDrawLine(Display *display, Drawable d, GC gc,
- int x1, int y1, int x2, int y2)
-{
- XGCValues *gcv = (XGCValues *)gc;
- boolean mouse_off = FALSE;
-
- if ((BITMAP *)d == video_bitmap)
- {
- x1 += AllegroDefaultScreen().x;
- y1 += AllegroDefaultScreen().y;
- x2 += AllegroDefaultScreen().x;
- y2 += AllegroDefaultScreen().y;
- freeze_mouse_flag = TRUE;
- mouse_off = hide_mouse(display, MIN(x1, x2), MIN(y1, y2),
- MAX(x1, x2) - MIN(x1, x2),
- MAX(y1, y2) - MIN(y1, y2));
- }
-
- line((BITMAP *)d, x1, y1, x2, y2, gcv->foreground);
-
- if (mouse_off)
- unhide_mouse(display);
-
- freeze_mouse_flag = FALSE;
-}
-
-void XDestroyImage(XImage *ximage)
-{
-}
-
-void XDestroyWindow(Display *display, Window window)
-{
-}
-
-Bool XQueryPointer(Display *display, Window window,
- Window *root, Window *child, int *root_x, int *root_y,
- int *win_x, int *win_y, unsigned int *mask)
-{
- *win_x = mouse_x - AllegroDefaultScreen().x;
- *win_y = mouse_y - AllegroDefaultScreen().y;
-
- return True;
-}
-
-void XAutoRepeatOn(Display *display)
-{
- keyboard_auto_repeat = TRUE;
- clear_keybuf();
-}
-
-void XAutoRepeatOff(Display *display)
-{
- keyboard_auto_repeat = FALSE;
-}
-
-void AllegroDrawLine(Drawable d, int from_x, int from_y, int to_x, int to_y,
- Pixel color)
-{
- boolean mouse_off = FALSE;
-
- if ((BITMAP *)d == video_bitmap)
- {
- int dx = AllegroDefaultScreen().x;
- int dy = AllegroDefaultScreen().y;
- int x1, y1, x2, y2;
-
- from_x += dx;
- from_y += dy;
- to_x += dx;
- to_y += dy;
-
- x1 = (from_x < to_x ? from_x : to_x);
- y1 = (from_y < to_y ? from_y : to_y);
- x2 = (from_x < to_x ? to_x : from_x);
- y2 = (from_y < to_y ? to_y : from_y);
-
- freeze_mouse_flag = TRUE;
- mouse_off = hide_mouse(display, x1, y1, x2 - x1 + 1, y2 - y1 + 1);
- }
-
- line((BITMAP *)d, from_x, from_y, to_x, to_y, color);
-
- if (mouse_off)
- unhide_mouse(display);
-
- freeze_mouse_flag = FALSE;
-}
-
-Pixel AllegroGetPixel(Drawable d, int x, int y)
-{
- return getpixel((BITMAP *)d, x, y);
-}
-
-void AllegroZoomBitmap(Drawable src, Drawable dst,
- int src_width, int src_height,
- int dst_width, int dst_height)
-{
- stretch_blit((BITMAP *)src, (BITMAP *)dst,
- 0, 0, src_width, src_height, 0, 0, dst_width, dst_height);
-}
-
-void MSDOSOpenAudio(void)
-{
- if (allegro_init_audio())
- {
- audio.sound_available = TRUE;
- audio.music_available = TRUE;
- audio.loops_available = TRUE;
- audio.sound_enabled = TRUE;
-
- audio.num_channels = NUM_MIXER_CHANNELS;
- audio.music_channel = MUSIC_CHANNEL;
- audio.first_sound_channel = FIRST_SOUND_CHANNEL;
-
- Mixer_InitChannels();
- }
-}
-
-void MSDOSCloseAudio(void)
-{
- /* nothing to be done here */
-}
-
-void NetworkServer(int port, int serveronly)
-{
- Error(ERR_WARN, "networking not supported in DOS version");
-}
-
-
-/* ========================================================================= */
-/* joystick functions */
-/* ========================================================================= */
-
-void MSDOSInitJoysticks()
-{
- int i;
-
- /* start from scratch */
- remove_joystick();
-
- /* try to access two joysticks; if that fails, try to access just one */
- if (install_joystick(JOY_TYPE_2PADS) == 0 ||
- install_joystick(JOY_TYPE_AUTODETECT) == 0)
- joystick.status = JOYSTICK_ACTIVATED;
-
- for (i = 0; i < MAX_PLAYERS; i++)
- {
- char *device_name = setup.input[i].joy.device_name;
- int joystick_nr = getJoystickNrFromDeviceName(device_name);
-
- if (joystick_nr >= num_joysticks)
- joystick_nr = -1;
-
- /* misuse joystick file descriptor variable to store joystick number */
- joystick.fd[i] = joystick_nr;
- }
-}
-
-boolean MSDOSReadJoystick(int nr, int *x, int *y, boolean *b1, boolean *b2)
-{
- /* the allegro global variable 'num_joysticks' contains the number
- of joysticks found at initialization under MS-DOS / Windows */
-
- if (nr < 0 || nr >= num_joysticks)
- return FALSE;
-
- poll_joystick();
-
- if (x != NULL)
- *x = joy[nr].stick[0].axis[0].pos;
- if (y != NULL)
- *y = joy[nr].stick[0].axis[1].pos;
-
- if (b1 != NULL)
- *b1 = joy[nr].button[0].b;
- if (b2 != NULL)
- *b2 = joy[nr].button[1].b;
-
- return TRUE;
-}
-
-#endif /* PLATFORM_MSDOS */
+++ /dev/null
-/***********************************************************
-* Artsoft Retro-Game Library *
-*----------------------------------------------------------*
-* (c) 1994-2006 Artsoft Entertainment *
-* Holger Schemel *
-* Detmolder Strasse 189 *
-* 33604 Bielefeld *
-* Germany *
-* e-mail: info@artsoft.org *
-*----------------------------------------------------------*
-* msdos.h *
-***********************************************************/
-
-#ifndef MSDOS_H
-#define MSDOS_H
-
-#include <time.h>
-#include "allegro.h"
-
-
-/* symbol 'window' is defined in DJGPP cross-compiler in libc.a(conio.o) */
-#define window window_internal
-
-/* symbol 'font' is defined in "allegro.h" */
-#define font font_internal
-
-/* system dependent definitions */
-
-#define TARGET_STRING "DOS"
-
-/* allegro defines TRUE as -1 */
-#ifdef TRUE
-#undef TRUE
-#undef FALSE
-#endif
-
-#define TRUE 1
-#define FALSE 0
-
-#define XRES 800
-#define YRES 600
-
-/* allegro defines some macros that bother the rest of the program */
-#ifdef joy_x
-#undef joy_x
-#undef joy_y
-#undef joy_left
-#undef joy_right
-#undef joy_up
-#undef joy_down
-#undef joy_b1
-#undef joy_b2
-#endif
-
-/* additional Allegro keyboard mapping */
-
-/* The following are all undefined in Allegro */
-#define NEW_KEY_BACKSLASH 86
-#define NEW_KEY_1_PAD 101
-#define NEW_KEY_2_PAD 102
-#define NEW_KEY_3_PAD 103
-#define NEW_KEY_4_PAD 104
-#define NEW_KEY_5_PAD 105
-#define NEW_KEY_6_PAD 106
-#define NEW_KEY_7_PAD 107
-#define NEW_KEY_8_PAD 108
-#define NEW_KEY_9_PAD 109
-#define NEW_KEY_0_PAD 110
-#define NEW_KEY_STOP_PAD 111
-#define NEW_KEY_EQUALS_PAD 112
-#define NEW_KEY_SLASH_PAD 113
-#define NEW_KEY_ASTERISK_PAD 114
-#define NEW_KEY_ENTER_PAD 115
-
-/* X11 keyboard mapping (from 'keysymdef.h') */
-
-#define XK_VoidSymbol 0xFFFFFF /* void symbol */
-
-/*
- * TTY Functions, cleverly chosen to map to ascii, for convenience of
- * programming, but could have been arbitrary (at the cost of lookup
- * tables in client code.
- */
-
-#define XK_BackSpace 0xFF08 /* back space, back char */
-#define XK_Tab 0xFF09
-#define XK_Linefeed 0xFF0A /* Linefeed, LF */
-#define XK_Clear 0xFF0B
-#define XK_Return 0xFF0D /* Return, enter */
-#define XK_Pause 0xFF13 /* Pause, hold */
-#define XK_Scroll_Lock 0xFF14
-#define XK_Sys_Req 0xFF15
-#define XK_Escape 0xFF1B
-#define XK_Delete 0xFFFF /* Delete, rubout */
-
-/* International & multi-key character composition */
-
-#define XK_Multi_key 0xFF20 /* Multi-key character compose */
-#define XK_SingleCandidate 0xFF3C
-#define XK_MultipleCandidate 0xFF3D
-#define XK_PreviousCandidate 0xFF3E
-
-/* Cursor control & motion */
-
-#define XK_Home 0xFF50
-#define XK_Left 0xFF51 /* Move left, left arrow */
-#define XK_Up 0xFF52 /* Move up, up arrow */
-#define XK_Right 0xFF53 /* Move right, right arrow */
-#define XK_Down 0xFF54 /* Move down, down arrow */
-#define XK_Prior 0xFF55 /* Prior, previous */
-#define XK_Page_Up 0xFF55
-#define XK_Next 0xFF56 /* Next */
-#define XK_Page_Down 0xFF56
-#define XK_End 0xFF57 /* EOL */
-#define XK_Begin 0xFF58 /* BOL */
-
-/* Misc Functions */
-
-#define XK_Select 0xFF60 /* Select, mark */
-#define XK_Print 0xFF61
-#define XK_Execute 0xFF62 /* Execute, run, do */
-#define XK_Insert 0xFF63 /* Insert, insert here */
-#define XK_Undo 0xFF65 /* Undo, oops */
-#define XK_Redo 0xFF66 /* redo, again */
-#define XK_Menu 0xFF67
-#define XK_Find 0xFF68 /* Find, search */
-#define XK_Cancel 0xFF69 /* Cancel, stop, abort, exit */
-#define XK_Help 0xFF6A /* Help */
-#define XK_Break 0xFF6B
-#define XK_Mode_switch 0xFF7E /* Character set switch */
-#define XK_script_switch 0xFF7E /* Alias for mode_switch */
-#define XK_Num_Lock 0xFF7F
-
-/* Keypad Functions, keypad numbers cleverly chosen to map to ascii */
-
-#define XK_KP_Space 0xFF80 /* space */
-#define XK_KP_Tab 0xFF89
-#define XK_KP_Enter 0xFF8D /* enter */
-#define XK_KP_F1 0xFF91 /* PF1, KP_A, ... */
-#define XK_KP_F2 0xFF92
-#define XK_KP_F3 0xFF93
-#define XK_KP_F4 0xFF94
-#define XK_KP_Home 0xFF95
-#define XK_KP_Left 0xFF96
-#define XK_KP_Up 0xFF97
-#define XK_KP_Right 0xFF98
-#define XK_KP_Down 0xFF99
-#define XK_KP_Prior 0xFF9A
-#define XK_KP_Page_Up 0xFF9A
-#define XK_KP_Next 0xFF9B
-#define XK_KP_Page_Down 0xFF9B
-#define XK_KP_End 0xFF9C
-#define XK_KP_Begin 0xFF9D
-#define XK_KP_Insert 0xFF9E
-#define XK_KP_Delete 0xFF9F
-#define XK_KP_Equal 0xFFBD /* equals */
-#define XK_KP_Multiply 0xFFAA
-#define XK_KP_Add 0xFFAB
-#define XK_KP_Separator 0xFFAC /* separator, often comma */
-#define XK_KP_Subtract 0xFFAD
-#define XK_KP_Decimal 0xFFAE
-#define XK_KP_Divide 0xFFAF
-
-#define XK_KP_0 0xFFB0
-#define XK_KP_1 0xFFB1
-#define XK_KP_2 0xFFB2
-#define XK_KP_3 0xFFB3
-#define XK_KP_4 0xFFB4
-#define XK_KP_5 0xFFB5
-#define XK_KP_6 0xFFB6
-#define XK_KP_7 0xFFB7
-#define XK_KP_8 0xFFB8
-#define XK_KP_9 0xFFB9
-
-/*
- * Auxilliary Functions; note the duplicate definitions for left and right
- * function keys; Sun keyboards and a few other manufactures have such
- * function key groups on the left and/or right sides of the keyboard.
- * We've not found a keyboard with more than 35 function keys total.
- */
-
-#define XK_F1 0xFFBE
-#define XK_F2 0xFFBF
-#define XK_F3 0xFFC0
-#define XK_F4 0xFFC1
-#define XK_F5 0xFFC2
-#define XK_F6 0xFFC3
-#define XK_F7 0xFFC4
-#define XK_F8 0xFFC5
-#define XK_F9 0xFFC6
-#define XK_F10 0xFFC7
-#define XK_F11 0xFFC8
-#define XK_L1 0xFFC8
-#define XK_F12 0xFFC9
-#define XK_L2 0xFFC9
-#define XK_F13 0xFFCA
-#define XK_L3 0xFFCA
-#define XK_F14 0xFFCB
-#define XK_L4 0xFFCB
-#define XK_F15 0xFFCC
-#define XK_L5 0xFFCC
-#define XK_F16 0xFFCD
-#define XK_L6 0xFFCD
-#define XK_F17 0xFFCE
-#define XK_L7 0xFFCE
-#define XK_F18 0xFFCF
-#define XK_L8 0xFFCF
-#define XK_F19 0xFFD0
-#define XK_L9 0xFFD0
-#define XK_F20 0xFFD1
-#define XK_L10 0xFFD1
-#define XK_F21 0xFFD2
-#define XK_R1 0xFFD2
-#define XK_F22 0xFFD3
-#define XK_R2 0xFFD3
-#define XK_F23 0xFFD4
-#define XK_R3 0xFFD4
-#define XK_F24 0xFFD5
-#define XK_R4 0xFFD5
-#define XK_F25 0xFFD6
-#define XK_R5 0xFFD6
-#define XK_F26 0xFFD7
-#define XK_R6 0xFFD7
-#define XK_F27 0xFFD8
-#define XK_R7 0xFFD8
-#define XK_F28 0xFFD9
-#define XK_R8 0xFFD9
-#define XK_F29 0xFFDA
-#define XK_R9 0xFFDA
-#define XK_F30 0xFFDB
-#define XK_R10 0xFFDB
-#define XK_F31 0xFFDC
-#define XK_R11 0xFFDC
-#define XK_F32 0xFFDD
-#define XK_R12 0xFFDD
-#define XK_F33 0xFFDE
-#define XK_R13 0xFFDE
-#define XK_F34 0xFFDF
-#define XK_R14 0xFFDF
-#define XK_F35 0xFFE0
-#define XK_R15 0xFFE0
-
-/* Modifiers */
-
-#define XK_Shift_L 0xFFE1 /* Left shift */
-#define XK_Shift_R 0xFFE2 /* Right shift */
-#define XK_Control_L 0xFFE3 /* Left control */
-#define XK_Control_R 0xFFE4 /* Right control */
-#define XK_Caps_Lock 0xFFE5 /* Caps lock */
-#define XK_Shift_Lock 0xFFE6 /* Shift lock */
-
-#define XK_Meta_L 0xFFE7 /* Left meta */
-#define XK_Meta_R 0xFFE8 /* Right meta */
-#define XK_Alt_L 0xFFE9 /* Left alt */
-#define XK_Alt_R 0xFFEA /* Right alt */
-#define XK_Super_L 0xFFEB /* Left super */
-#define XK_Super_R 0xFFEC /* Right super */
-#define XK_Hyper_L 0xFFED /* Left hyper */
-#define XK_Hyper_R 0xFFEE /* Right hyper */
-
-/*
- * Latin 1
- * Byte 3 = 0
- */
-
-#define XK_space 0x020
-#define XK_exclam 0x021
-#define XK_quotedbl 0x022
-#define XK_numbersign 0x023
-#define XK_dollar 0x024
-#define XK_percent 0x025
-#define XK_ampersand 0x026
-#define XK_apostrophe 0x027
-#define XK_quoteright 0x027 /* deprecated */
-#define XK_parenleft 0x028
-#define XK_parenright 0x029
-#define XK_asterisk 0x02a
-#define XK_plus 0x02b
-#define XK_comma 0x02c
-#define XK_minus 0x02d
-#define XK_period 0x02e
-#define XK_slash 0x02f
-#define XK_0 0x030
-#define XK_1 0x031
-#define XK_2 0x032
-#define XK_3 0x033
-#define XK_4 0x034
-#define XK_5 0x035
-#define XK_6 0x036
-#define XK_7 0x037
-#define XK_8 0x038
-#define XK_9 0x039
-#define XK_colon 0x03a
-#define XK_semicolon 0x03b
-#define XK_less 0x03c
-#define XK_equal 0x03d
-#define XK_greater 0x03e
-#define XK_question 0x03f
-#define XK_at 0x040
-#define XK_A 0x041
-#define XK_B 0x042
-#define XK_C 0x043
-#define XK_D 0x044
-#define XK_E 0x045
-#define XK_F 0x046
-#define XK_G 0x047
-#define XK_H 0x048
-#define XK_I 0x049
-#define XK_J 0x04a
-#define XK_K 0x04b
-#define XK_L 0x04c
-#define XK_M 0x04d
-#define XK_N 0x04e
-#define XK_O 0x04f
-#define XK_P 0x050
-#define XK_Q 0x051
-#define XK_R 0x052
-#define XK_S 0x053
-#define XK_T 0x054
-#define XK_U 0x055
-#define XK_V 0x056
-#define XK_W 0x057
-#define XK_X 0x058
-#define XK_Y 0x059
-#define XK_Z 0x05a
-#define XK_bracketleft 0x05b
-#define XK_backslash 0x05c
-#define XK_bracketright 0x05d
-#define XK_asciicircum 0x05e
-#define XK_underscore 0x05f
-#define XK_grave 0x060
-#define XK_quoteleft 0x060 /* deprecated */
-#define XK_a 0x061
-#define XK_b 0x062
-#define XK_c 0x063
-#define XK_d 0x064
-#define XK_e 0x065
-#define XK_f 0x066
-#define XK_g 0x067
-#define XK_h 0x068
-#define XK_i 0x069
-#define XK_j 0x06a
-#define XK_k 0x06b
-#define XK_l 0x06c
-#define XK_m 0x06d
-#define XK_n 0x06e
-#define XK_o 0x06f
-#define XK_p 0x070
-#define XK_q 0x071
-#define XK_r 0x072
-#define XK_s 0x073
-#define XK_t 0x074
-#define XK_u 0x075
-#define XK_v 0x076
-#define XK_w 0x077
-#define XK_x 0x078
-#define XK_y 0x079
-#define XK_z 0x07a
-#define XK_braceleft 0x07b
-#define XK_bar 0x07c
-#define XK_braceright 0x07d
-#define XK_asciitilde 0x07e
-
-#define XK_nobreakspace 0x0a0
-#define XK_exclamdown 0x0a1
-#define XK_cent 0x0a2
-#define XK_sterling 0x0a3
-#define XK_currency 0x0a4
-#define XK_yen 0x0a5
-#define XK_brokenbar 0x0a6
-#define XK_section 0x0a7
-#define XK_diaeresis 0x0a8
-#define XK_copyright 0x0a9
-#define XK_ordfeminine 0x0aa
-#define XK_guillemotleft 0x0ab /* left angle quotation mark */
-#define XK_notsign 0x0ac
-#define XK_hyphen 0x0ad
-#define XK_registered 0x0ae
-#define XK_macron 0x0af
-#define XK_degree 0x0b0
-#define XK_plusminus 0x0b1
-#define XK_twosuperior 0x0b2
-#define XK_threesuperior 0x0b3
-#define XK_acute 0x0b4
-#define XK_mu 0x0b5
-#define XK_paragraph 0x0b6
-#define XK_periodcentered 0x0b7
-#define XK_cedilla 0x0b8
-#define XK_onesuperior 0x0b9
-#define XK_masculine 0x0ba
-#define XK_guillemotright 0x0bb /* right angle quotation mark */
-#define XK_onequarter 0x0bc
-#define XK_onehalf 0x0bd
-#define XK_threequarters 0x0be
-#define XK_questiondown 0x0bf
-#define XK_Agrave 0x0c0
-#define XK_Aacute 0x0c1
-#define XK_Acircumflex 0x0c2
-#define XK_Atilde 0x0c3
-#define XK_Adiaeresis 0x0c4
-#define XK_Aring 0x0c5
-#define XK_AE 0x0c6
-#define XK_Ccedilla 0x0c7
-#define XK_Egrave 0x0c8
-#define XK_Eacute 0x0c9
-#define XK_Ecircumflex 0x0ca
-#define XK_Ediaeresis 0x0cb
-#define XK_Igrave 0x0cc
-#define XK_Iacute 0x0cd
-#define XK_Icircumflex 0x0ce
-#define XK_Idiaeresis 0x0cf
-#define XK_ETH 0x0d0
-#define XK_Eth 0x0d0 /* deprecated */
-#define XK_Ntilde 0x0d1
-#define XK_Ograve 0x0d2
-#define XK_Oacute 0x0d3
-#define XK_Ocircumflex 0x0d4
-#define XK_Otilde 0x0d5
-#define XK_Odiaeresis 0x0d6
-#define XK_multiply 0x0d7
-#define XK_Ooblique 0x0d8
-#define XK_Ugrave 0x0d9
-#define XK_Uacute 0x0da
-#define XK_Ucircumflex 0x0db
-#define XK_Udiaeresis 0x0dc
-#define XK_Yacute 0x0dd
-#define XK_THORN 0x0de
-#define XK_Thorn 0x0de /* deprecated */
-#define XK_ssharp 0x0df
-#define XK_agrave 0x0e0
-#define XK_aacute 0x0e1
-#define XK_acircumflex 0x0e2
-#define XK_atilde 0x0e3
-#define XK_adiaeresis 0x0e4
-#define XK_aring 0x0e5
-#define XK_ae 0x0e6
-#define XK_ccedilla 0x0e7
-#define XK_egrave 0x0e8
-#define XK_eacute 0x0e9
-#define XK_ecircumflex 0x0ea
-#define XK_ediaeresis 0x0eb
-#define XK_igrave 0x0ec
-#define XK_iacute 0x0ed
-#define XK_icircumflex 0x0ee
-#define XK_idiaeresis 0x0ef
-#define XK_eth 0x0f0
-#define XK_ntilde 0x0f1
-#define XK_ograve 0x0f2
-#define XK_oacute 0x0f3
-#define XK_ocircumflex 0x0f4
-#define XK_otilde 0x0f5
-#define XK_odiaeresis 0x0f6
-#define XK_division 0x0f7
-#define XK_oslash 0x0f8
-#define XK_ugrave 0x0f9
-#define XK_uacute 0x0fa
-#define XK_ucircumflex 0x0fb
-#define XK_udiaeresis 0x0fc
-#define XK_yacute 0x0fd
-#define XK_thorn 0x0fe
-#define XK_ydiaeresis 0x0ff
-
-/* end of X11 keyboard mapping */
-
-
-#define screen myscreen
-
-#define XFlush(a)
-#define XGetImage(a,b,c,d,e,f,g,h) ((XImage *) NULL)
-#define XDisplayName(a) ((char *) NULL)
-#define XFreeColors(a,b,c,d,e)
-#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 MAX_SCANCODES 128
-
-#define True 1
-#define False 0
-#define None 0L
-
-#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 ClientMessage 33
-
-#define LineSolid 0
-#define LineOnOffDash 1
-#define LineDoubleDash 2
-
-#define CapNotLast 0
-#define CapButt 1
-#define CapRound 2
-#define CapProjecting 3
-
-#define JoinMiter 0
-#define JoinRound 1
-#define JoinBevel 2
-
-#define GCForeground (1L << 2)
-#define GCBackground (1L << 3)
-#define GCLineWidth (1L << 4)
-#define GCLineStyle (1L << 5)
-#define GCCapStyle (1L << 6)
-#define GCJoinStyle (1L << 7)
-#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 PCX_Success 0
-#define PCX_OpenFailed -1
-#define PCX_ReadFailed -2
-#define PCX_FileInvalid -3
-#define PCX_NoMemory -4
-#define PCX_ColorFailed -5
-
-#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 int)~0L)
-
-#define DefaultVisual(dpy, scr) (NULL)
-#define DefaultDepth(dpy, scr) (NULL)
-#define XDisplayWidth(dpy, scr) (XRES)
-#define XDisplayHeight(dpy, scr) (YRES)
-
-#define XGetPixel(ximage, x, y) \
- ((*((ximage)->f.get_pixel))((ximage), (x), (y)))
-
-typedef unsigned int Pixel; /* Index into colormap */
-typedef unsigned int XID;
-typedef XID Window;
-typedef XID Drawable;
-typedef XID Pixmap;
-typedef XID Colormap;
-typedef XID KeySym;
-typedef XID GContext;
-typedef struct _XDisplay Display;
-typedef int Visual;
-typedef int XVisualInfo;
-typedef int Atom;
-typedef int Status;
-typedef int Bool;
-typedef int XComposeStatus; /* we don't need the real type */
-
-typedef struct _XGC
-{
- GContext gid; /* protocol ID for graphics context */
-} *GC;
-
-typedef struct
-{
- Colormap cmap; /* default color map */
- Window root; /* root window id */
- unsigned int white_pixel; /* white pixel value */
- unsigned int black_pixel; /* black pixel value */
- 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 int (*get_pixel) (struct _XImage *, int, int);
- } f;
-} XImage;
-
-typedef struct
-{
- int 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
-{
- int 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 int foreground; /* foreground pixel */
- unsigned int background; /* background pixel */
- Bool graphics_exposures; /* boolean, should exposures be generated */
- Pixmap clip_mask; /* bitmap clipping; other calls for rects */
- int clip_x_origin; /* x origin for clipping */
- int clip_y_origin; /* y origin for clipping */
- unsigned int value_mask;
- int line_width; /* line width */
- int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */
- int cap_style; /* CapNotLast, CapButt,
- CapRound, CapProjecting */
- int join_style; /* JoinMiter, JoinRound, JoinBevel */
-
-} XGCValues;
-
-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 struct
-{
- int type; /* ClientMessage */
-} XClientMessageEvent;
-
-typedef union _XEvent
-{
- int type; /* must not be changed; first element */
- XExposeEvent xexpose;
- XButtonEvent xbutton;
- XMotionEvent xmotion;
- XKeyEvent xkey;
-} XEvent;
-
-Pixel AllegroAllocColorCell(int, int, int);
-
-void XMapWindow(Display *, Window);
-Display *XOpenDisplay(char *);
-Window XCreateSimpleWindow(Display *, Window, int, int,
- unsigned int, unsigned int, unsigned int,
- unsigned int, unsigned int);
-Status XStringListToTextProperty(char **, int, XTextProperty *);
-void XFree(void *);
-GC XCreateGC(Display *, Drawable, unsigned int, XGCValues *);
-void XSetClipMask(Display *, GC, Pixmap);
-void XSetClipOrigin(Display *, GC, int, int);
-void XFillRectangle(Display *, Drawable, GC, int, int,
- unsigned int, unsigned int);
-Pixmap XCreatePixmap(Display *, Drawable, unsigned int, unsigned int,
- unsigned int);
-void XSync(Display *, Bool);
-void XCopyArea(Display *, Drawable, Drawable, GC, int, int,
- unsigned int, unsigned int, int, int);
-int Read_PCX_to_Pixmap(Display *, Window, GC, char *, Pixmap *, Pixmap *);
-int XReadBitmapFile(Display *, Drawable, char *,
- unsigned int *, unsigned int *, Pixmap *, int *, int *);
-void XFreePixmap(Display *, Pixmap);
-void XFreeGC(Display *, GC);
-void XUnmapWindow(Display *, Window);
-void XCloseDisplay(Display *);
-void XNextEvent(Display *, XEvent *);
-int XPending(Display *);
-KeySym XLookupKeysym(XKeyEvent *, int);
-int XLookupString(XKeyEvent *, char *, int, KeySym *, XComposeStatus *);
-void XSetForeground(Display *, GC, unsigned int);
-void XDrawLine(Display *, Drawable, GC, int, int, int, int);
-void XDestroyImage(XImage *);
-void XDestroyWindow(Display *, Window);
-Bool XQueryPointer(Display *, Window, Window *, Window *, int *, int *,
- int *, int *, unsigned int *);
-void XAutoRepeatOn(Display *);
-void XAutoRepeatOff(Display *);
-
-void AllegroDrawLine(Drawable, int, int, int, int, Pixel);
-Pixel AllegroGetPixel(Drawable, int, int);
-
-void AllegroZoomBitmap(Drawable, Drawable, int, int, int, int);
-
-void MSDOSOpenAudio(void);
-void MSDOSCloseAudio(void);
-
-void NetworkServer(int, int);
-
-void MSDOSInitJoysticks();
-boolean MSDOSReadJoystick(int, int *, int *, boolean *, boolean *);
-
-#endif /* MSDOS_H */
/* define main platform keywords */
/* ========================================================================= */
-#if defined(MSDOS)
-#define PLATFORM_MSDOS
-#define PLATFORM_STRING "DOS"
-#elif defined(WIN32) || defined(_WIN32)
+#if defined(WIN32) || defined(_WIN32)
#define PLATFORM_WIN32
#define PLATFORM_STRING "Windows"
#else
/* define additional target keywords */
/* ========================================================================= */
-#if defined(PLATFORM_MSDOS)
-#ifndef TARGET_ALLEGRO
-#define TARGET_ALLEGRO
-#endif
-#ifndef TARGET_X11
-#define TARGET_X11
-#endif
-#endif
-
#if defined(PLATFORM_UNIX) && defined(TARGET_X11)
#define TARGET_X11_NATIVE
#endif
{
char *basename_corrected = basename;
-#if defined(PLATFORM_MSDOS)
- if (program.filename_prefix != NULL)
- {
- int prefix_len = strlen(program.filename_prefix);
-
- if (strncmp(basename, program.filename_prefix, prefix_len) == 0)
- basename_corrected = &basename[prefix_len];
-
- /* if corrected filename is still longer than standard MS-DOS filename
- size (8 characters + 1 dot + 3 characters file extension), shorten
- filename by writing file extension after 8th basename character */
- if (strlen(basename_corrected) > 8 + 1 + 3)
- {
- static char *msdos_filename = NULL;
-
- checked_free(msdos_filename);
-
- msdos_filename = getStringCopy(basename_corrected);
- strncpy(&msdos_filename[8], &basename[strlen(basename) - (1+3)], 1+3 +1);
-
- basename_corrected = msdos_filename;
- }
- }
-#endif
-
return basename_corrected;
}
#include "platform.h"
-#if defined(PLATFORM_MSDOS)
-#include <fcntl.h>
-#endif
-
#include "system.h"
#include "image.h"
#include "sound.h"
#endif
char *icon_title,
char *x11_icon_filename, char *x11_iconmask_filename,
- char *sdl_icon_filename, char *msdos_cursor_filename,
+ char *sdl_icon_filename,
char *cookie_prefix, char *filename_prefix,
int program_version)
{
program.x11_icon_filename = x11_icon_filename;
program.x11_iconmask_filename = x11_iconmask_filename;
program.sdl_icon_filename = sdl_icon_filename;
- program.msdos_cursor_filename = msdos_cursor_filename;
program.cookie_prefix = cookie_prefix;
program.filename_prefix = filename_prefix;
// this is initialized in GetOptions(), but may already be used before
options.verbose = TRUE;
-#if defined(PLATFORM_MSDOS)
- _fmode = O_BINARY;
-#endif
-
#if defined(PLATFORM_MACOSX)
updateUserGameDataDir();
#endif
void ClosePlatformDependentStuff(void)
{
-#if defined(PLATFORM_WIN32) || defined(PLATFORM_MSDOS)
+#if defined(PLATFORM_WIN32)
closeErrorFile();
#endif
-
-#if defined(PLATFORM_MSDOS)
- dumpErrorFile();
-#endif
}
void InitGfxFieldInfo(int sx, int sy, int sxsize, int sysize,
/* mouse pointer functions */
/* ------------------------------------------------------------------------- */
-#if !defined(PLATFORM_MSDOS)
#define USE_ONE_PIXEL_PLAYFIELD_MOUSEPOINTER 0
+
/* XPM image definitions */
static const char *cursor_image_none[] =
{
/* hot spot */
"0,0"
};
+
#if USE_ONE_PIXEL_PLAYFIELD_MOUSEPOINTER
static const char *cursor_image_dot[] =
{
return cursor;
}
-#endif /* !PLATFORM_MSDOS */
void SetMouseCursor(int mode)
{
-#if !defined(PLATFORM_MSDOS)
static struct MouseCursorInfo *cursor_none = NULL;
static struct MouseCursorInfo *cursor_playfield = NULL;
struct MouseCursorInfo *cursor_new;
#elif defined(TARGET_X11_NATIVE)
X11SetMouseCursor(cursor_new);
#endif
-#endif
}
SDLOpenAudio();
#elif defined(PLATFORM_UNIX)
UnixOpenAudio();
-#elif defined(PLATFORM_MSDOS)
- MSDOSOpenAudio();
#endif
}
SDLCloseAudio();
#elif defined(PLATFORM_UNIX)
UnixCloseAudio();
-#elif defined(PLATFORM_MSDOS)
- MSDOSCloseAudio();
#endif
audio.sound_enabled = FALSE;
SDLInitJoysticks();
#elif defined(PLATFORM_UNIX)
UnixInitJoysticks();
-#elif defined(PLATFORM_MSDOS)
- MSDOSInitJoysticks();
#endif
#if 0
return SDLReadJoystick(nr, x, y, b1, b2);
#elif defined(PLATFORM_UNIX)
return UnixReadJoystick(nr, x, y, b1, b2);
-#elif defined(PLATFORM_MSDOS)
- return MSDOSReadJoystick(nr, x, y, b1, b2);
#endif
}
#include "macosx.h"
#elif defined(PLATFORM_WIN32)
#include "windows.h"
-#elif defined(PLATFORM_MSDOS)
-#include "msdos.h"
#elif defined(PLATFORM_ANDROID)
#include "android.h"
#endif
#define DOCS_DIRECTORY "docs"
#define CACHE_DIRECTORY "cache"
-#if !defined(PLATFORM_MSDOS)
#define GFX_CLASSIC_SUBDIR "gfx_classic"
#define SND_CLASSIC_SUBDIR "snd_classic"
#define MUS_CLASSIC_SUBDIR "mus_classic"
-#else
-#define GFX_CLASSIC_SUBDIR "gfx_orig"
-#define SND_CLASSIC_SUBDIR "snd_orig"
-#define MUS_CLASSIC_SUBDIR "mus_orig"
-#endif
#if defined(CREATE_SPECIAL_EDITION_RND_JUE)
#define GFX_DEFAULT_SUBDIR "jue0"
#endif
/* file names and filename extensions */
-#if !defined(PLATFORM_MSDOS)
#define LEVELSETUP_DIRECTORY "levelsetup"
#define SETUP_FILENAME "setup.conf"
#define LEVELSETUP_FILENAME "levelsetup.conf"
#define LEVELFILE_EXTENSION "level"
#define TAPEFILE_EXTENSION "tape"
#define SCOREFILE_EXTENSION "score"
-#else
-#define LEVELSETUP_DIRECTORY "lvlsetup"
-#define SETUP_FILENAME "setup.cnf"
-#define LEVELSETUP_FILENAME "lvlsetup.cnf"
-#define EDITORSETUP_FILENAME "edsetup.cnf"
-#define EDITORCASCADE_FILENAME "edcascad.conf"
-#define HELPANIM_FILENAME "helpanim.cnf"
-#define HELPTEXT_FILENAME "helptext.cnf"
-#define LEVELINFO_FILENAME "lvlinfo.cnf"
-#define GRAPHICSINFO_FILENAME "gfxinfo.cnf"
-#define SOUNDSINFO_FILENAME "sndinfo.cnf"
-#define MUSICINFO_FILENAME "musinfo.cnf"
-#define ARTWORKINFO_CACHE_FILE "artinfo.cac"
-#define LEVELFILE_EXTENSION "lvl"
-#define TAPEFILE_EXTENSION "tap"
-#define SCOREFILE_EXTENSION "sco"
-#endif
#define ERROR_BASENAME "stderr.txt"
#define STRING_NEWLINE_UNIX "\n"
#define STRING_NEWLINE_DOS "\r\n"
-#if defined(PLATFORM_WIN32) || defined(PLATFORM_MSDOS)
+#if defined(PLATFORM_WIN32)
#define CHAR_PATH_SEPARATOR CHAR_PATH_SEPARATOR_DOS
#define STRING_PATH_SEPARATOR STRING_PATH_SEPARATOR_DOS
#define STRING_NEWLINE STRING_NEWLINE_DOS
char *x11_icon_filename;
char *x11_iconmask_filename;
char *sdl_icon_filename;
- char *msdos_cursor_filename;
char *cookie_prefix;
char *filename_prefix; /* prefix to cut off from DOS filenames */
#if 1
void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *,
- char *, char *, char *, char *, int);
+ char *, char *, char *, int);
#else
void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *,
char *, char *, char *, char *, char *, int);
static void X11InitDisplay()
{
-#if !defined(PLATFORM_MSDOS)
XVisualInfo vinfo_template, *vinfo;
int num_visuals;
-#endif
unsigned int depth;
/* connect to X server */
depth = DefaultDepth(display, screen);
cmap = DefaultColormap(display, screen);
-#if !defined(PLATFORM_MSDOS)
/* look for good enough visual */
vinfo_template.screen = screen;
vinfo_template.class = (depth == 8 ? PseudoColor : TrueColor);
(depth > 8 && visual->class != TrueColor &&
visual->class != DirectColor))
Error(ERR_EXIT, "X11 display not supported (inappropriate visual)");
-#endif /* !PLATFORM_MSDOS */
}
static DrawWindow *X11InitWindow()
unsigned int border_width = 4;
XGCValues gc_values;
unsigned int gc_valuemask;
-#if !defined(PLATFORM_MSDOS)
XTextProperty windowName, iconName;
Pixmap icon_pixmap, iconmask_pixmap;
unsigned int icon_width, icon_height;
char *icon_name = program.window_title;
int window_event_mask;
Atom proto_atom = None, delete_atom = None;
-#endif
int screen_width, screen_height;
int win_xpos, win_ypos;
unsigned int pen_fg = WhitePixel(display, screen);
width, height, border_width,
pen_fg, pen_bg);
-#if !defined(PLATFORM_MSDOS)
proto_atom = XInternAtom(display, "WM_PROTOCOLS", FALSE);
delete_atom = XInternAtom(display, "WM_DELETE_WINDOW", FALSE);
if ((proto_atom != None) && (delete_atom != None))
KeyPressMask | KeyReleaseMask;
XSelectInput(display, new_window->drawable, window_event_mask);
-#endif
/* create GC for drawing with window depth and background color (black) */
gc_values.graphics_exposures = False;
#ifndef X11_H
#define X11_H
-#if !defined(PLATFORM_MSDOS)
#define XK_MISCELLANY
#define XK_LATIN1
#include <X11/Xos.h>
#include <X11/Intrinsic.h>
#include <X11/keysymdef.h>
-#endif
/* system dependent definitions */
-/* MS-DOS header file also defines "TARGET_STRING" */
-#ifndef TARGET_STRING
#define TARGET_STRING "X11"
-#endif
-#if defined(PLATFORM_UNIX)
/* This triggers some stuff that is needed because X11 (XSetClipOrigin(),
to be precise) is often very slow when preparing a masked XCopyArea()
for big Pixmaps.
To prevent this, small (tile-sized) mask Pixmaps are created which will
then be set much faster with XSetClipOrigin() and speed things up a lot. */
#define TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND
-#endif
#define WINDOW_SCALING_STATUS WINDOW_SCALING_NOT_AVAILABLE
#define FULLSCREEN_STATUS FULLSCREEN_NOT_AVAILABLE
InitProgramInfo(argv[0], USERDATA_DIRECTORY, USERDATA_DIRECTORY_UNIX,
PROGRAM_TITLE_STRING, ICON_TITLE_STRING,
X11_ICON_FILENAME, X11_ICONMASK_FILENAME, SDL_ICON_FILENAME,
- MSDOS_POINTER_FILENAME,
COOKIE_PREFIX, FILENAME_PREFIX, GAME_VERSION_ACTUAL);
#else
char *window_title_string = getWindowTitleString();
InitProgramInfo(argv[0], USERDATA_DIRECTORY, USERDATA_DIRECTORY_UNIX,
PROGRAM_TITLE_STRING, window_title_string, ICON_TITLE_STRING,
X11_ICON_FILENAME, X11_ICONMASK_FILENAME, SDL_ICON_FILENAME,
- MSDOS_POINTER_FILENAME,
COOKIE_PREFIX, FILENAME_PREFIX, GAME_VERSION_ACTUAL);
#endif
#define USERDATA_DIRECTORY_WIN32 PROGRAM_TITLE_STRING
#define USERDATA_DIRECTORY_MACOSX PROGRAM_TITLE_STRING
#define USERDATA_DIRECTORY_UNIX PROGRAM_UNIX_DATADIR_STRING
-#define USERDATA_DIRECTORY_DOS "userdata"
+#define USERDATA_DIRECTORY_OTHER "userdata"
#if defined(PLATFORM_WIN32)
#define USERDATA_DIRECTORY USERDATA_DIRECTORY_WIN32
#elif defined(PLATFORM_UNIX)
#define USERDATA_DIRECTORY USERDATA_DIRECTORY_UNIX
#else
-#define USERDATA_DIRECTORY USERDATA_DIRECTORY_DOS
+#define USERDATA_DIRECTORY USERDATA_DIRECTORY_OTHER
#endif
#define X11_ICON_FILENAME "rocks_icon.xbm"
#define X11_ICONMASK_FILENAME "rocks_iconmask.xbm"
#define SDL_ICON_FILENAME "RocksIcon32x32.png"
-#define MSDOS_POINTER_FILENAME "mouse.pcx"
/* file version numbers for resource files (levels, tapes, score, setup, etc.)
** currently supported/known file version numbers: