diff -Nrup rubix-1.0.5/fillpoly.c rubix-1.0.5-avr32/fillpoly.c --- rubix-1.0.5/fillpoly.c 2003-10-12 15:41:43.000000000 -0400 +++ rubix-1.0.5-avr32/fillpoly.c 2008-02-29 12:39:51.000000000 -0500 @@ -435,7 +435,7 @@ void fill_lines(device *d, int thecol) ); #endif } - } else if (d->depth==16) { /* here 16bpp */ + } else if ((d->depth==16) | (d->depth==15)) { /* here 16bpp */ register int i; #ifndef PC_ARCHI register int j; diff -Nrup rubix-1.0.5/line.c rubix-1.0.5-avr32/line.c --- rubix-1.0.5/line.c 2003-10-12 14:15:19.000000000 -0400 +++ rubix-1.0.5-avr32/line.c 2008-02-29 12:39:51.000000000 -0500 @@ -1317,7 +1317,7 @@ void drawline(device *d, line *l) #endif if (d->depth==8) drawline8(d, l); - else if (d->depth==16) + else if ((d->depth==16) | (d->depth==15)) drawline16(d, l); else if (d->depth==24) drawline24(d, l); diff -Nrup rubix-1.0.5/Makefile rubix-1.0.5-avr32/Makefile --- rubix-1.0.5/Makefile 2003-12-04 14:27:58.000000000 -0500 +++ rubix-1.0.5-avr32/Makefile 2008-02-29 12:58:30.000000000 -0500 @@ -11,21 +11,17 @@ # Customize to fit your needs (especially if it does not work for now). LANGUAGE=ENGLISH -GAMESDIR=/usr/games #architecture=-DPC_ARCHI # For Solaris #EXTRALIBS=-lsocket -CC=gcc CFLAGS=-Wall -O3 -fomit-frame-pointer -ffast-math \ -DGAMESDIR="\"$(GAMESDIR)\"" \ -D$(LANGUAGE) $(architecture) #CFLAGS=-Wall -g -ffast-math -Iplayer $(architecture) -XINC=-I/usr/X11R6/include -XLIB=-L/usr/X11R6/lib -lX11 #the following should not be changed. @@ -37,7 +33,7 @@ rubix : $(OBJ) install : mkdir -p $(GAMESDIR) - install -c -s rubix $(GAMESDIR) + install -c rubix $(GAMESDIR) clean : rm -f *.o *~ core *.bak *.dat gmon.out diff -Nrup rubix-1.0.5/screen.c rubix-1.0.5-avr32/screen.c --- rubix-1.0.5/screen.c 2004-04-26 04:26:05.000000000 -0400 +++ rubix-1.0.5-avr32/screen.c 2008-02-29 12:39:51.000000000 -0500 @@ -80,11 +80,17 @@ void error_statement(SCREEN *s) int reset_data_buffers(SCREEN *s) { + int temp; if (s->im) XDestroyImage(s->im); + if (s->depth == 15) { + temp=16; + } else { + temp=s->depth; + } - s->buffer=(char *)malloc(((SCREEN_X+7)/8)*SCREEN_Y*s->depth); + s->buffer=(char *)malloc(((SCREEN_X+7)/8)*SCREEN_Y*temp); if (!s->buffer) { error_statement(s); @@ -106,7 +112,7 @@ int reset_data_buffers(SCREEN *s) */ /* Sed - december 2003 - no it has to be 8 */ s->im=XCreateImage(s->d, DefaultVisual(s->d, DefaultScreen(s->d)), - s->depth==32?24:s->depth, ZPixmap, + s->depth, ZPixmap, 0, s->buffer, SCREEN_X, SCREEN_Y, 8, 0); if (!s->im) { @@ -139,8 +145,8 @@ int init_screen(SCREEN *s) s->depth=DefaultDepth(s->d, DefaultScreen(s->d)); - if (s->depth!=8 && s->depth!=16 && s->depth!=24) { - fprintf(stderr, "screen depth not supported (only 8, 16 and 24bpp (which means 32bpp too) handled\n"); + if (s->depth!=8 && s->depth!=15 && s->depth!=16 && s->depth!=24) { + fprintf(stderr, "screen depth not supported (only 8, 15, 16 and 24bpp (which means 32bpp too) handled\n"); XCloseDisplay(s->d); s->d=(Display *)0; return -1; @@ -182,10 +188,10 @@ int init_screen(SCREEN *s) /* let's create and map our window */ s->w=XCreateWindow(s->d, DefaultRootWindow(s->d), 0, 0, - SCREEN_X, SCREEN_Y, 3, s->depth==32?24:s->depth, + SCREEN_X, SCREEN_Y, 3, s->depth, CopyFromParent, CopyFromParent, 0, NULL); s->h=XCreateWindow(s->d, DefaultRootWindow(s->d), 0, 0, - HELP_X, HELP_Y, 3, s->depth==32?24:s->depth, + HELP_X, HELP_Y, 3, s->depth, CopyFromParent, CopyFromParent, 0, NULL); xch.res_name = "rubix"; @@ -946,13 +952,18 @@ void close_screen(SCREEN *s) void clear_screen(SCREEN *s) { /* fill s->im with pixel[10], avoid XPutPixel which is rather slow... */ - int i, w, dw; + int i, w, dw, temp; + if (s->depth == 15) { + temp = 16; + } else { + temp = s->depth; + } w = (SCREEN_X+7)/8; - dw = s->depth/8; + dw = temp/8; XPutPixel(s->im, 0, 0, pixel[10]); for (i=1; i<8*w; i++) memcpy(s->buffer + i*dw, s->buffer, dw); - w = w * s->depth; + w = w * temp; for (i=1; ibuffer + i*w, s->buffer, w); }