+ { GFX_SPIELER_UP, 4 },
+ { GFX_SPIELER_DOWN, 4 },
+ { GFX_SPIELER_LEFT, 4 },
+ { GFX_SPIELER_RIGHT, 4 },
+ { GFX_SPIELER_PUSH_LEFT, 4 },
+ { GFX_SPIELER_PUSH_RIGHT, 4 },
+ { GFX_GEBLUBBER, 4 },
+ { GFX_DYNAMIT, 7 },
+ { GFX_DYNABOMB, 4 },
+ { GFX_SOKOBAN_OBJEKT, 1 },
+ { GFX_MASK_SPARKLING, 3 },
+ { -1, 0 }
+ };
+
+#ifdef DEBUG_TIMING
+ long count1, count2;
+ count1 = Counter();
+#endif
+
+ LoadGfx(PIX_SMALLFONT,&pic[PIX_SMALLFONT]);
+ DrawInitText(WINDOWTITLE_STRING,20,FC_YELLOW);
+ DrawInitText(COPYRIGHT_STRING,50,FC_RED);
+#ifdef MSDOS
+ DrawInitText("MSDOS version done by Guido Schulz",210,FC_BLUE);
+ rest(200);
+#endif MSDOS
+ DrawInitText("Loading graphics:",120,FC_GREEN);
+
+ for(i=0; i<NUM_PICTURES; i++)
+ if (i != PIX_SMALLFONT)
+ LoadGfx(i,&pic[i]);
+
+#ifdef DEBUG_TIMING
+ count2 = Counter();
+ printf("SUMMARY: %.2f SECONDS LOADING TIME\n",(float)(count2-count1)/1000.0);
+#endif
+
+
+ pix[PIX_DB_BACK] = XCreatePixmap(display, window,
+ WIN_XSIZE,WIN_YSIZE,
+ XDefaultDepth(display,screen));
+ pix[PIX_DB_DOOR] = XCreatePixmap(display, window,
+ 3*DXSIZE,DYSIZE+VYSIZE,
+ XDefaultDepth(display,screen));
+ pix[PIX_DB_FIELD] = XCreatePixmap(display, window,
+ FXSIZE,FYSIZE,
+ XDefaultDepth(display,screen));
+
+ clip_gc_values.graphics_exposures = False;
+ clip_gc_valuemask = GCGraphicsExposures;
+ copy_clipmask_gc =
+ XCreateGC(display,clipmask[PIX_BACK],clip_gc_valuemask,&clip_gc_values);
+
+ clip_gc_values.graphics_exposures = False;
+ clip_gc_valuemask = GCGraphicsExposures;
+ tile_clip_gc =
+ XCreateGC(display,window,clip_gc_valuemask,&clip_gc_values);
+
+ /* initialize pixmap array to Pixmap 'None' */
+ for(i=0; i<NUM_TILES; i++)
+ tile_clipmask[i] = None;
+
+ /* create only those clipping Pixmaps we really need */
+ for(i=0; tile_needs_clipping[i].start>=0; i++)
+ {
+ for(j=0; j<tile_needs_clipping[i].count; j++)