diff -urN xgb.x86/Makefile xgb/Makefile --- xgb.x86/Makefile Tue May 29 23:02:09 2001 +++ xgb/Makefile Tue May 29 21:44:28 2001 @@ -1,4 +1,4 @@ -CC = gcc +CC = mipsel-linux-gcc # temp junk #LDLIBS += /home/relnev/ElectricFence-2.2.2/libefence.a -lpthread @@ -9,7 +9,7 @@ #CFLAGS += -fomit-frame-pointer #CFLAGS += -mpentiumpro -march=pentiumpro -mcpu=pentiumpro #CFLAGS = -g -Wall -pedantic -D_REENTRANT -CFLAGS = -O2 +CFLAGS = -O6 -mips2 -msoft-float -funroll-all-loops -fexpensive-optimizations #CFLAGS = -Os -mpentiumpro -march=pentiumpro -mcpu=pentiumpro -finline-functions -fomit-frame-pointer #CFLAGS += -pg @@ -23,8 +23,8 @@ # Currently supported: X11, GLX, SDL -#XGB_OS = X11 -XGB_OS = GLX +XGB_OS = X11 +#XGB_OS = GLX #XGB_OS = SDL # OSS (sound: X11, GLX) @@ -41,7 +41,7 @@ # X11 (OS) ifeq ($(strip $(XGB_OS)), X11) SRC += x11.c - LDLIBS += -L/usr/X11R6/lib -lX11 -lXext -lpthread + LDLIBS += -L/usr/mipsel-linux/lib/X11 -lX11 -lXext -lpthread endif # GLX (OS) diff -urN xgb.x86/oss.c xgb/oss.c --- xgb.x86/oss.c Tue May 29 20:50:13 2001 +++ xgb/oss.c Tue May 29 21:00:11 2001 @@ -64,13 +64,17 @@ } if (want != set) { fprintf(stderr, "Speed: Wanted %d, Got %d\n", want, set); -// exit(EXIT_FAILURE); + exit(EXIT_FAILURE); } if (ioctl(audio_fd, SNDCTL_DSP_GETOSPACE, &info) == -1) { perror("ioctl SNDCTL_DSP_GETOSPACE"); // exit(EXIT_FAILURE); } + info.fragments =16; + info.fragstotal =16; + info.fragsize =2048; + info.bytes =32768; printf("Fragments: %d\n", info.fragments); printf("FragTotal: %d\n", info.fragstotal); printf("Frag Size: %d\n", info.fragsize); diff -urN xgb.x86/x11.c xgb/x11.c --- xgb.x86/x11.c Tue May 29 19:59:49 2001 +++ xgb/x11.c Wed May 30 05:57:36 2001 @@ -58,6 +58,8 @@ #include "colors.h" #include "net.h" +/* aoe */ +#include Display *dpy; int screen; @@ -72,6 +74,9 @@ XColor clr[256]; int PalChanged; +/* aoe */ +unsigned char mycolor[256]; + static int width = 0, height = 0; int shm = 0; @@ -488,7 +493,7 @@ } else { XPutImage(dpy, win, gc, img, 0, 0, 0, 0, width, height); } - if (PalChanged) { + if (PalChanged && (ImgTable.bpp != 4)) { PalChanged = 0; XStoreColors(dpy, cmap, clr, 65); } @@ -513,6 +518,10 @@ switch(ImgTable.bpp) { case 4: + assert(num<256); + mycolor[num]= (r+g+b)/6 ; + assert(mycolor[num]<0x10); + PalChanged = 1; break; fprintf(stderr, "Unsupported depth %d\n", ImgTable.bpp); exit(EXIT_FAILURE); @@ -544,10 +553,28 @@ char *cptr; short int *sptr; int *iptr; - int i; + int i,j; + static unsigned char clut[0x10000],*clutp,itmp; switch(ImgTable.bpp) { case 4: + if(PalChanged) { + fprintf(stderr,"palette changed, recomputing clut\n"); + clutp=clut; + for (i=0;i<0x100;i++) { + itmp=mycolor[i]*16; +// itmp=mycolor[i]<<4; // doesn't work! + assert(!(itmp&0xf)); + for (j=0;j<0x100;j++) { + *clutp++ = itmp+mycolor[j]; + } + } + PalChanged=0; + } + cptr = (char *)ImgTable.ytable[y]; + for (i = 0; i < 160; i++,i++ ) + *cptr++ = clut[(int)index[i]+((int)index[i+1])*0x100]; +// *cptr++ = clut[(int)index[i]+((int)index[i+1])<<8]; // doesn't work! break; case 8: cptr = (char *)ImgTable.ytable[y];