System #1 Primary xmame testing
System #2 Slightly better CPU for enjoying xmame
Software
Both systems began as vanilla RedHat 6.2 boxes, but packages have been heavily recompiled for speed and updated with latest security enhancements. Highlights as follows.
No lectures on obsolescence, please. I know full-well the evils of old-school XFree et. al. Newer systems will be forthcoming on this list soon enough. K6-3+ is a great overclocker, but it won't cut the mustard for kinst. :)
xmame Compile Options
CFLAGS = -O2 -Wall -Wno-unused -march=i586 -pipe -fomit-frame-pointer -fstrict-aliasing -fstrength-reduce -ffast-mathOR
CFLAGS = -O3 -pipe -mcpu=pentium -march=pentium -Wall -Wno-unused -funroll-loops -fstrength-reduce -fomit-frame-pointer -ffast-math -malign-functions=2 -malign-jumps=2 -malign-loops=2
src/sound/multipcm.c does not compile!
Some gcc versions are evidently more picky than others about the ordering of declarations and assignments. gcc 2.91.66 refuses to compile multipcm.c as a result.
The following files need fixes.
FIXES
Below are the details of how to fix the file.
The following lines need to be swapped.
Here's the patch:
--- src/sound/multipcm.c.orig Thu Apr 10 05:33:55 2003 +++ src/sound/multipcm.c Thu Apr 10 05:37:38 2003 @@ -211,11 +211,11 @@ int vol[2]; struct MultiPCM_interface *intf; - intf = msound->sound_interface; - /* make volume table */ double max=255.0; double db=(48.0/128); + + intf = msound->sound_interface; for (i = 0; i < 128; i++) {
src/vidhrdw/seta2.c does not compile!
Some gcc versions are evidently more picky than others about the ordering of declarations and assignments. gcc 2.91.66 refuses to compile seta2.c as a result. This file changed from 0.66.2. sizex and sizey are now assigned before x and y variables are declared. This causes compile to break on old gcc versions.
src/vidhrdw/seta2.c: In function `seta2_draw_sprites': src/vidhrdw/seta2.c:318: parse error before `int' src/vidhrdw/seta2.c:329: `y' undeclared (first use in this function) src/vidhrdw/seta2.c:329: (Each undeclared identifier is reported only once src/vidhrdw/seta2.c:329: for each function it appears in.) src/vidhrdw/seta2.c:331: `x' undeclared (first use in this function) make: *** [xmame.obj/vidhrdw/seta2.o] Error 1
The following files need fixes.
FIXES
Below are the details of how to fix the file.
The following lines need to be swapped.
Here's the patch:
--- src/vidhrdw/seta2.c.orig Thu Apr 10 06:09:43 2003 +++ src/vidhrdw/seta2.c Thu Apr 10 06:49:01 2003 @@ -310,12 +310,12 @@ int flipy = (attr & 0x0008); int color = (attr & 0xffe0) >> 5; + int x,y; + int sizex = use_global_size ? global_sizex : sx; int sizey = use_global_size ? global_sizey : sy; sizex = (1 << ((sizex & 0x0c00)>> 10))-1; sizey = (1 << ((sizey & 0x0c00)>> 10))-1; - - int x,y; sx += xoffs; sy += yoffs;
src/drivers/dynax.c does not compile!
Some gcc versions are evidently more picky than others about the ordering of declarations and assignments. gcc 2.91.66 refuses to compile dynax.c as a result. This file changed from 0.66.2. For "maya" a for loop occurs before *gfx and i are declared. This causes compile to break on old gcc versions.
Compiling src/vidhrdw/dynax.c ... Compiling src/drivers/dynax.c ... src/drivers/dynax.c: In function `init_maya': src/drivers/dynax.c:1789: parse error before `*' src/drivers/dynax.c:1791: parse error before `int' src/drivers/dynax.c:1792: `i' undeclared (first use in this function) src/drivers/dynax.c:1792: (Each undeclared identifier is reported only once src/drivers/dynax.c:1792: for each function it appears in.) src/drivers/dynax.c:1793: `gfx' undeclared (first use in this function) make: *** [xmame.obj/drivers/dynax.o] Error 1
The following files need fixes.
FIXES
Below are the details of how to fix the file.
The following lines need to be swapped.
Here's the patch:
--- src/drivers/dynax.c.orig Thu Apr 10 07:03:36 2003 +++ src/drivers/dynax.c Thu Apr 10 07:23:45 2003 @@ -1775,6 +1775,9 @@ /* Address lines scrambling on 1 z80 rom */ data8_t *rom = memory_region(REGION_CPU1) + 0x28000, *end = rom + 0x10000; + data8_t *gfx = memory_region(REGION_GFX1); + int i; + for (;rom < end; rom+=8) { data8_t temp[8]; @@ -1786,9 +1789,7 @@ } /* Address lines scrambling on the blitter data roms */ - data8_t *gfx = memory_region(REGION_GFX1); rom = memory_region(REGION_USER1); - int i; for (i = 0; i < 0xc0000; i++) gfx[i] = rom[BITSWAP24(i,23,22,21,20,19,18,14,15, 16,17,13,12,11,10,9,8, 7,6,5,4,3,2,1,0)]; }