| 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; i<SCREEN_Y; i++) |
| memcpy(s->buffer + i*w, s->buffer, w); |
| } |