-#if 0 /* BITMAP CREATION STUFF */
-
- for (i = 0; i < 4; i++)
- {
- name[MAXNAME] = 0;
- snprintf(name, MAXNAME+2, "%s/%s", EM_GFX_DIR, pcxNames[i]);
-
- if (name[MAXNAME])
- snprintf_overflow("read graphics/ files");
-
- if ((pcxBitmaps[i] = LoadImage(name)) == NULL)
- {
- printf("::: LoadImage() failed for file '%s'\n", name);
- return 1;
- }
- }
-
- objBitmap = pcxBitmaps[0];
- botBitmap = pcxBitmaps[1];
- sprBitmap = pcxBitmaps[2];
- ttlBitmap = pcxBitmaps[3];
-
-#if 0
- objPixmap = xpmPixmaps[0];
- botPixmap = xpmPixmaps[1];
- sprPixmap = xpmPixmaps[2];
- ttlPixmap = xpmPixmaps[3];
- objmaskBitmap = xpmBitmaps[0];
- botmaskBitmap = xpmBitmaps[1];
- sprmaskBitmap = xpmBitmaps[2];
- ttlmaskBitmap = xpmBitmaps[3];
-#else
- objPixmap = pcxBitmaps[0]->drawable;
- botPixmap = pcxBitmaps[1]->drawable;
- sprPixmap = pcxBitmaps[2]->drawable;
- ttlPixmap = pcxBitmaps[3]->drawable;
- objmaskBitmap = pcxBitmaps[0]->clip_mask;
- botmaskBitmap = pcxBitmaps[1]->clip_mask;
- sprmaskBitmap = pcxBitmaps[2]->clip_mask;
- ttlmaskBitmap = pcxBitmaps[3]->clip_mask;
-#endif
-
- for (i = 0; i < 4; i++)
- {
- Pixmap clip_mask;
-
- if ((clip_mask = XCreatePixmap(display, window->drawable,
- pcxBitmaps[i]->width * 2,
- pcxBitmaps[i]->height * 2, 1))
- == None)
- {
- printf("::: cannot create clip mask");
- return 1;
- }
-
-#if 0
- {
- XGCValues clip_gc_values;
- unsigned long clip_gc_valuemask;
- GC gc;
-
- clip_gc_values.graphics_exposures = False;
- clip_gc_valuemask = GCGraphicsExposures;
- if ((gc = XCreateGC(display, clip_mask,
- clip_gc_valuemask, &clip_gc_values)) == None)
- {
- printf("X CreateGC failed\n");
- exit(1);
- }
-
- XFillRectangle(display, clip_mask, gc, 0, 0,
- pcxBitmaps[i]->width * 2,
- pcxBitmaps[i]->height * 2);
- }
-#endif
-
-#if 0
- {
- byte * src_ptr;
- int src_width = pcxBitmaps[i]->width;
- int src_height = pcxBitmaps[i]->height;
-
-#if 0
- printf("::: %d, %d [%ld -> %ld (%ld)]\n",
- src_width, src_height,
- src_ptr,
- src_ptr + src_width * src_height * 1,
- src_width * src_height * 1);
-#endif
-
-#if 0
- for (i = src_ptr; i < src_ptr + src_width * src_height * 1; i++)
- {
- byte x = *(byte *)i;
-
- x = x * 1;
- }
-#endif
- }
-#endif
-
- if (ZOOM_FACTOR > 1)
- pcxBitmapsX2[i] = ZoomBitmap(pcxBitmaps[i],
- pcxBitmaps[i]->width * ZOOM_FACTOR,
- pcxBitmaps[i]->height * ZOOM_FACTOR);
- else
- pcxBitmapsX2[i] = pcxBitmaps[i];
-
-#if 1
-
-#if 0
- printf("::: CREATING NEW CLIPMASKS ...\n");
-#endif
-
-#if 1
- clip_mask = Pixmap_to_Mask(pcxBitmapsX2[i]->drawable,
- pcxBitmapsX2[i]->width,
- pcxBitmapsX2[i]->height);
-#endif
-
-#if 0
- printf("::: CREATING NEW CLIPMASKS DONE\n");
-#endif
-
- pcxBitmapsX2[i]->clip_mask = clip_mask;
-
- /* add clip mask GC */
- {
- XGCValues clip_gc_values;
- unsigned long clip_gc_valuemask;
-
- clip_gc_values.graphics_exposures = False;
- clip_gc_values.clip_mask = pcxBitmapsX2[i]->clip_mask;
- clip_gc_valuemask = GCGraphicsExposures | GCClipMask;
- pcxBitmapsX2[i]->stored_clip_gc = XCreateGC(display,
- window->drawable,
- clip_gc_valuemask,
- &clip_gc_values);
- }
-
-#if 0
- printf("::: %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
- pcxBitmaps[i]->gc,
- pcxBitmaps[i]->clip_mask, pcxBitmapsX2[i]->clip_mask,
- pcxBitmaps[i]->width, pcxBitmaps[i]->height,
- pcxBitmapsX2[i]->width, pcxBitmapsX2[i]->height);
-#endif
-
-#if 0
- ZoomPixmap(display, pcxBitmaps[i]->gc,
- pcxBitmaps[i]->clip_mask, pcxBitmapsX2[i]->clip_mask,
- pcxBitmaps[i]->width, pcxBitmaps[i]->height,
- pcxBitmapsX2[i]->width, pcxBitmapsX2[i]->height);
-#endif
-
-#endif
- }
-
-#endif /* BITMAP CREATION STUFF */
-
-#if 1
- SetBitmaps_EM(pcxBitmapsX2);
-#endif
-
- objBitmap = pcxBitmapsX2[0];
- botBitmap = pcxBitmapsX2[1];
- sprBitmap = pcxBitmapsX2[2];
- ttlBitmap = pcxBitmapsX2[3];
-
- objPixmap = pcxBitmapsX2[0]->drawable;
- botPixmap = pcxBitmapsX2[1]->drawable;
- sprPixmap = pcxBitmapsX2[2]->drawable;
- ttlPixmap = pcxBitmapsX2[3]->drawable;
-#if 1
- objmaskBitmap = pcxBitmapsX2[0]->clip_mask;
- botmaskBitmap = pcxBitmapsX2[1]->clip_mask;
- sprmaskBitmap = pcxBitmapsX2[2]->clip_mask;
- ttlmaskBitmap = pcxBitmapsX2[3]->clip_mask;
-#endif
-
-#if 1
- screenBitmap = CreateBitmap(MAX_BUF_XSIZE * TILEX, MAX_BUF_YSIZE * TILEY,
- DEFAULT_DEPTH);
- scoreBitmap = CreateBitmap(20 * TILEX, SCOREY, DEFAULT_DEPTH);
-#endif
-
- screenPixmap = XCreatePixmap(display, xwindow,
- MAX_BUF_XSIZE * TILEX, MAX_BUF_YSIZE * TILEY,
- screenDepth);
- if (screenPixmap == 0)
- {
- fprintf(stderr, "%s: \"%s\": %s: %s\n", progname,
- XDisplayName(arg_display), "failed to create pixmap",
- strerror(errno));
- return(1);
- }
-
- scorePixmap = XCreatePixmap(display, xwindow, 20 * TILEX, SCOREY,
- screenDepth);
- if (scorePixmap == 0)
- {
- fprintf(stderr, "%s: \"%s\": %s: %s\n", progname,
- XDisplayName(arg_display), "failed to create pixmap",
- strerror(errno));
- return(1);
- }
-
-#if 1
- screenBitmap->drawable = screenPixmap;
- scoreBitmap->drawable = scorePixmap;
-#endif
-
- spriteBitmap = XCreatePixmap(display, xwindow, TILEX, TILEY, 1);
- if (spriteBitmap == 0)
- {
- fprintf(stderr, "%s: \"%s\": %s: %s\n", progname,
- XDisplayName(arg_display), "failed to create pixmap",
- strerror(errno));
- return(1);
- }
-
- redColour.pixel = screenWhitePixel;
- whiteColour.pixel = screenBlackPixel;
- gotRed = (xpmAllocColourFunc(display, privateColourmap ? privateColourmap :
- defaultColourmap,
- "red", &redColour, 0) > 0);
- gotWhite = (xpmAllocColourFunc(display, privateColourmap ? privateColourmap :
- defaultColourmap,
- "white", &whiteColour, 0) > 0);
-
- gcValues.graphics_exposures = False;
- screenGC = XCreateGC(display, screenPixmap, GCGraphicsExposures, &gcValues);
- if (screenGC == 0)
- {
- fprintf(stderr, "%s: \"%s\": %s: %s\n", progname,
- XDisplayName(arg_display), "failed to create graphics context",
- strerror(errno));
- return(1);
- }
-
- gcValues.graphics_exposures = False;
- scoreGC = XCreateGC(display, scorePixmap, GCGraphicsExposures, &gcValues);
- if (scoreGC == 0)
- {
- fprintf(stderr, "%s: \"%s\": %s: %s\n", progname,
- XDisplayName(arg_display), "failed to create graphics context",
- strerror(errno));
- return(1);
- }
-
- gcValues.function =
- objmaskBitmap ? GXcopyInverted : sprmaskBitmap ? GXcopy : GXset;
- gcValues.graphics_exposures = False;
- spriteGC = XCreateGC(display, spriteBitmap, GCFunction | GCGraphicsExposures,
- &gcValues);
- if (spriteGC == 0)
- {
- fprintf(stderr, "%s: \"%s\": %s: %s\n", progname,
- XDisplayName(arg_display), "failed to create graphics context",
- strerror(errno));
- return(1);
- }
-
- gcValues.foreground = redColour.pixel;
- gcValues.background = whiteColour.pixel;
- gcValues.line_style = LineDoubleDash;
- gcValues.graphics_exposures = False;
- antsGC = XCreateGC(display, screenPixmap,
- GCForeground | GCBackground | GCLineStyle |
- GCGraphicsExposures,
- &gcValues);
- if (antsGC == 0)
- {
- fprintf(stderr, "%s: \"%s\": %s: %s\n", progname,
- XDisplayName(arg_display), "failed to create graphics context",
- strerror(errno));
- return(1);
- }
-
- for (i = 0; i < 16; i++)
- keycodes[i] = XKeysymToKeycode(display, keysyms[i]);
-
- for (i = 0; i < 3; i++)
- northKeyCode[i] = keycodes[i + 0];
- for (i = 0; i < 3; i++)
- eastKeyCode[i] = keycodes[i + 3];
- for (i = 0; i < 3; i++)
- southKeyCode[i] = keycodes[i + 6];
- for (i = 0; i < 3; i++)
- westKeyCode[i] = keycodes[i + 9];
- for (i = 0; i < 3; i++)
- fireKeyCode[i] = keycodes[i + 12];
- for (i = 0; i < 1; i++)
- escKeyCode[i] = keycodes[i + 15];
-
- /* ----------------------------------------------------------------- */
-
-#if 0
- {
- Bitmap *bm = pcxBitmaps[2];
- Pixmap clip_mask = bm->clip_mask;
-
- if (clip_mask)
- {
-#if 1
- int width = bm->width;
- int height = bm->height;
-#else
- int width = 16 * 4;
- int height = 16 * 4;
-#endif
- XImage *src_ximage = XGetImage(display, clip_mask, 0, 0,
- width, height, AllPlanes, ZPixmap);
- XImage *dst_ximage = XGetImage(display, xwindow, 0, 0,
- width, height, AllPlanes, ZPixmap);
- int x, y;
-
- if (src_ximage == NULL)
- {
- printf("src_ximage failed\n");
- exit(1);
- }
-
- if (dst_ximage == NULL)
- {
- printf("dst_ximage failed\n");
- exit(1);
- }
-
- printf("::: DISPLAY CLIP MASK ...\n");
-
- for (x=0; x<width; x++)
- {
- for (y=0; y<height; y++)
- {
- unsigned long pixel = XGetPixel(src_ximage, x, y);
-
- if (pixel != BlackPixel(display, screen))
- pixel = WhitePixel(display, screen);
-
- XPutPixel(dst_ximage, x, y, pixel);
- }
- }
-
- printf("::: DISPLAY CLIP MASK NOW\n");
-
- XPutImage(display, xwindow, screenGC, dst_ximage, 0, 0,
- 0, 13 * TILEY, width, height);
-
- printf("::: DISPLAY CLIP MASK DONE\n");
- }
- }
-#endif
-
- /* ----------------------------------------------------------------- */
-
-#if 0
- {
- int ii = 2;
-
- XGCValues clip_gc_values;
- unsigned long clip_gc_valuemask;
-
-#if 1
- GC gc = screenGC;
-#else
-#if 1
- GC gc = pcxBitmaps[ii]->stored_clip_gc;
-#else
- GC gc = pcxBitmaps[ii]->gc;
-#endif
-#endif
- Pixmap src_pixmap = pcxBitmaps[ii]->clip_mask;
- Pixmap dst_pixmap = pcxBitmapsX2[ii]->clip_mask;
- int src_width = pcxBitmaps[ii]->width;
- int src_height = pcxBitmaps[ii]->height;
- int dst_width = pcxBitmapsX2[ii]->width;
- int dst_height = pcxBitmapsX2[ii]->height;
-
- XImage *src_ximage, *dst_ximage;
- byte *src_ptr, *dst_ptr;
- int bits_per_pixel;
- int bytes_per_pixel;
- int x, y, xx, yy, i;
-#if 1
- boolean scale_down = (src_width > dst_width);
- int zoom_factor;
-#else
- int zoom_factor = src_width / dst_width; /* currently very limited! */
-#endif
- int row_skip, col_skip;
-
- printf("::: %d\n", scale_down);
-
- xdebug("::: ZOOM STEP 1");
-
- clip_gc_values.graphics_exposures = False;
- clip_gc_valuemask = GCGraphicsExposures;
- if ((gc = XCreateGC(display, pcxBitmaps[ii]->clip_mask,
- clip_gc_valuemask, &clip_gc_values)) == None)
- {
- printf("XCreateGC failed\n");
- exit(1);
- }
-
- xdebug("::: ZOOM STEP 2");
-
- if (scale_down)
- {
- zoom_factor = src_width / dst_width;
-
- /* adjust source image size to integer multiple of destination size */
- src_width = dst_width * zoom_factor;
- src_height = dst_height * zoom_factor;
- }
- else
- {
- zoom_factor = dst_width / src_width;
-
- /* no adjustment needed when scaling up (some pixels may be left blank) */
- }
-
- /* copy source pixmap to temporary image */
- if ((src_ximage = XGetImage(display, src_pixmap, 0, 0, src_width, src_height,
- AllPlanes, ZPixmap)) == NULL)
- Error(ERR_EXIT, "ZoomPixmap(): XGetImage() failed");
-
- bits_per_pixel = src_ximage->bits_per_pixel;
- bytes_per_pixel = (bits_per_pixel + 7) / 8;
-
- printf("::: bits_per_pixel == %d\n", bits_per_pixel);
-
- if ((dst_ximage = XCreateImage(display, visual, src_ximage->depth, ZPixmap,
- 0, NULL, dst_width, dst_height,
- 8, dst_width * bytes_per_pixel)) == NULL)
- Error(ERR_EXIT, "ZoomPixmap(): XC reateImage() failed");
-
- dst_ximage->data =
- checked_malloc(dst_width * dst_height * bytes_per_pixel);
- dst_ximage->byte_order = src_ximage->byte_order;
-
- src_ptr = (byte *)src_ximage->data;
- dst_ptr = (byte *)dst_ximage->data;
-
- if (scale_down)
- {
- col_skip = (zoom_factor - 1) * bytes_per_pixel;
- row_skip = col_skip * src_width;
-
- /* scale image down by scaling factor 'zoom_factor' */
- for (y = 0; y < src_height; y += zoom_factor, src_ptr += row_skip)
- for (x = 0; x < src_width; x += zoom_factor, src_ptr += col_skip)
- for (i = 0; i < bytes_per_pixel; i++)
- *dst_ptr++ = *src_ptr++;
- }
- else
- {
- row_skip = src_width * bytes_per_pixel;
-
-#if 1
- printf("::: %d, %d -> %d, %d [%d / %d]\n[%ld -> %ld (%ld)] [%ld -> %ld (%ld)]\n",
- src_width, src_height,
- dst_width, dst_height,
- zoom_factor, bytes_per_pixel,
- src_ptr,
- src_ptr + src_width * src_height * bytes_per_pixel,
- src_width * src_height * bytes_per_pixel,
- dst_ptr,
- dst_ptr + dst_width * dst_height * bytes_per_pixel,
- dst_width * dst_height * bytes_per_pixel);
-#endif
-
-#if 0
- printf("A\n");
-
- for (i = 0; i < src_width * src_height * bytes_per_pixel;
- i++)
- {
- byte x = *(byte *)(src_ptr + i);
-
- printf("::: %d ...\n", i);
-
- x = x * 1;
- }
-
- printf("B\n");
-#endif
-
- /* scale image up by scaling factor 'zoom_factor' */
- for (y = 0; y < src_height; y++)
- {
- for (yy = 0; yy < zoom_factor; yy++)
- {
- if (yy > 0)
- src_ptr -= row_skip;
-
-#if 0
- printf("::: [%d -> %ld / %ld]\n", y, src_ptr, dst_ptr);
-#endif
-
- for (x = 0; x < src_width; x++)
- {
- for (xx = 0; xx < zoom_factor; xx++)
- for (i = 0; i < bytes_per_pixel; i++)
-#if 1
- {
-#if 0
- printf("::: %d\n", *(src_ptr + i));
-#endif
-
- *dst_ptr++ = *(src_ptr + i);
- }
-#else
- *dst_ptr++ = 0;
-#endif
-
- src_ptr += i;
- }
- }
- }
- }
-
- xdebug("::: ZOOM STEP 9");
-
- /* copy scaled image to destination pixmap */
- XPutImage(display, dst_pixmap, gc, dst_ximage, 0, 0, 0, 0,
- dst_width, dst_height);
-
- /* free temporary images */
- X11DestroyImage(src_ximage);
- X11DestroyImage(dst_ximage);
-
-
- xdebug("::: ZOOM DONE");
-
- }
-#endif
-
- /* ----------------------------------------------------------------- */
-
-#if 0
- {
- Bitmap *bm = pcxBitmapsX2[2];
- Pixmap clip_mask = bm->clip_mask;
-
- if (clip_mask)
- {
-#if 0
- int width = bm->width;
- int height = bm->height;
-#else
- int width = 16 * 4;
- int height = 16 * 4;
-#endif
- XImage *src_ximage = XGetImage(display, clip_mask, 0, 0,
- width, height, AllPlanes, ZPixmap);
- XImage *dst_ximage = XGetImage(display, xwindow, 0, 0,
- width, height, AllPlanes, ZPixmap);
- int x, y;
-
- if (src_ximage == NULL)
- {
- printf("src_ximage failed\n");
- exit(1);
- }
-
- if (dst_ximage == NULL)
- {
- printf("dst_ximage failed\n");
- exit(1);
- }
-
- printf("::: DISPLAY CLIP MASK ...\n");
-
- for (x=0; x<width; x++)
- {
- for (y=0; y<height; y++)
- {
- unsigned long pixel = XGetPixel(src_ximage, x, y);
-
- if (pixel != BlackPixel(display, screen))
- pixel = WhitePixel(display, screen);
-
- XPutPixel(dst_ximage, x, y, pixel);
- }
- }
-
- printf("::: DISPLAY CLIP MASK NOW\n");
-
- XPutImage(display, xwindow, screenGC, dst_ximage, 0, 0,
- 0, 13 * TILEY + height, width, height);
-
- printf("::: DISPLAY CLIP MASK DONE\n");
- }
- }
-#endif
-
- /* ----------------------------------------------------------------- */
-
-#if 0
- {
- XImage *dst_ximage;
-
- printf("::: GET IMAGE ...\n");
-
- dst_ximage = XGetImage(display, xwindow, 0, 0,
- 16, 16, AllPlanes, ZPixmap);
- if (dst_ximage == NULL)
- {
- printf("dst_ximage failed\n");
- exit(1);
- }
-
- printf("::: PUT IMAGE ...\n");
-
- XPutImage(display, xwindow, screenGC, dst_ximage, 0, 0,
- 0, 13 * TILEY, 10, 10);
-
- printf("::: PUT IMAGE DONE\n");
- }
-#endif
-
- /* ----------------------------------------------------------------- */
-
-#if defined(PLATFORM_LINUX) || defined(PLATFORM_BSD)
- if (arg_silence == 0)
- {
- for (i = 0; i < SAMPLE_MAX; i++)
- {
- name[MAXNAME] = 0;
-
- if (arg_basedir)
- {
- snprintf(name, MAXNAME+2, "%s/%s/%s", arg_basedir, EM_SND_DIR,
- sound_names[i]);
- }
- else
- {
- snprintf(name, MAXNAME+2, "%s/%s", EM_SND_DIR, sound_names[i]);
- }
-
- if (name[MAXNAME]) snprintf_overflow("read sounds/ directory");
-
- if (read_sample(name, &sound_data[i], &sound_length[i]))
- return(1);
-
- {
- short *ptr, *stop;
- int mult = sound_volume[i] * 65536 / (100 * MIXER_MAX);
- stop = sound_data[i] + sound_length[i];
- for (ptr = sound_data[i]; ptr < stop; ptr++)
- *ptr = (*ptr * mult) / 65536;
- }
- }
-
- if (pipe(sound_pipe) == -1)
- {
- fprintf(stderr, "%s: %s: %s\n", progname, "unable to create sound pipe",
- strerror(errno));
- return(1);
- }
-
- sound_pid = fork();
- if (sound_pid == -1)
- {
- fprintf(stderr, "%s: %s: %s\n", progname, "unable to fork sound thread",
- strerror(errno));
- return(1);
- }
-
- close(sound_pipe[sound_pid == 0]); sound_pipe[sound_pid == 0] = -1;
- if (sound_pid == 0)
- _exit(sound_thread());
-
- signal(SIGPIPE, SIG_IGN); /* dont crash if sound process dies */
- }
-
-#endif /* defined(PLATFORM_LINUX) || defined(PLATFORM_BSD) */
-
- return(0);