summaryrefslogtreecommitdiffstats
path: root/emulators
diff options
context:
space:
mode:
authornsayer <nsayer@FreeBSD.org>2001-04-03 05:57:04 +0000
committernsayer <nsayer@FreeBSD.org>2001-04-03 05:57:04 +0000
commitec1826cfb42c3e882b1a52e6a1dc37c3516a988a (patch)
treed9f270fd36e287016e8a3bb5c79ffbbc0dc4d8aa /emulators
parent50ca4230323ae753d1847e40fab04c8070e35c6e (diff)
downloadFreeBSD-ports-ec1826cfb42c3e882b1a52e6a1dc37c3516a988a.zip
FreeBSD-ports-ec1826cfb42c3e882b1a52e6a1dc37c3516a988a.tar.gz
1. Add support to the xmame port for building the GL version. Yet more
reason to get DRI support working (hint hint). 2. While we're at it, add a quick patch from the author to improve reliability a tiny bit. Approved by: stijn@win.tue.nl
Diffstat (limited to 'emulators')
-rw-r--r--emulators/xmame/Makefile25
-rw-r--r--emulators/xmame/files/patch-ac12
-rw-r--r--emulators/xmame/files/patch-ae138
-rw-r--r--emulators/xmame/pkg-descr4
-rw-r--r--emulators/xmame/pkg-plist12
5 files changed, 182 insertions, 9 deletions
diff --git a/emulators/xmame/Makefile b/emulators/xmame/Makefile
index 5e3477b..b887e74 100644
--- a/emulators/xmame/Makefile
+++ b/emulators/xmame/Makefile
@@ -154,8 +154,23 @@ CFLAGS+= -O3 -march=i686 -Wall -Wno-unused -funroll-loops \
-malign-functions=4 -malign-jumps=4 -malign-loops=4
.endif
-# SDL extension - enabled by default because x{mame,mess} can run full
+# Choose one of several display targets:
+# WITH_GL OpenGL based, displays vector games with hardware
+# acceleration
+# WITH_SDL Uses the SDL library to be able to play fullscreen
+# without root rights
+# WITH_X11 The standard display target, should work without
+# dependancies other than X
+#
+# WITH_SDL is enabled by default because x{mame,mess} can run full
# screen without having to be setuid root.
+.if defined(WITH_GL) && ${WITH_GL} == "yes"
+CFLAGS+= ${PTHREAD_CFLAGS}
+USE_MESA= yes
+DISPLAY_METHOD= xgl
+PLIST_SUB+= OPENGL=""
+.else
+PLIST_SUB+= OPENGL="@comment "
.if !defined(WITH_SDL) || ${WITH_SDL} != "no"
LIB_DEPENDS= SDL-1.1.3:${PORTSDIR}/devel/sdl-devel
SDL_CONFIG?= ${LOCALBASE}/bin/sdl11-config
@@ -164,9 +179,12 @@ DISPLAY_METHOD= SDL
pre-everything::
@${ECHO_MSG} "===> If you don't want ${MAMEMESS:U} to be built with SDL support,"
@${ECHO_MSG} " use \"make WITH_SDL=no\""
+ @${ECHO_MSG} "===> You can also build ${MAMEMESS:U} with OpenGL support."
+ @${ECHO_MSG} " use \"make WITH_GL=yes\" for this"
.else
DISPLAY_METHOD= x11
.endif
+.endif
# The large number of sed regexes here is intended to make this port a whole
# lot easier to maintain - please don't convert them into a patch.
@@ -182,10 +200,11 @@ do-configure:
-e "s@= x11@= ${DISPLAY_METHOD}@g" \
-e "s@= mame@= ${MAMEMESS}@g" \
-e "s@# X86_ASM@${ASM_COMMENT}X86_ASM@g" \
+ -e "s@GLLIBS=.-ldl@GLLIBS= ${PTHREAD_LIBS}@g" \
${WRKSRC}/makefile.unix.sed > ${WRKSRC}/makefile.unix
-.if !defined(WITH_SDL) || ${WITH_SDL} != "no"
${PERL} -pi -e 's@SDL/@SDL11/@' ${WRKSRC}/src/unix/video-drivers/SDL.c
-.endif
+ ${PERL} -pi -e 's@png.h@../../png.h@' \
+ ${WRKSRC}/src/unix/video-drivers/glexport.c
post-build:
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} SDL_VIDEODRIVER=aalib \
diff --git a/emulators/xmame/files/patch-ac b/emulators/xmame/files/patch-ac
index bea3973..9a9567c 100644
--- a/emulators/xmame/files/patch-ac
+++ b/emulators/xmame/files/patch-ac
@@ -1,6 +1,11 @@
--- src/unix/unix.mak.orig Sat Mar 24 02:33:38 2001
-+++ src/unix/unix.mak Fri Mar 30 09:52:29 2001
-@@ -50,14 +50,14 @@
++++ src/unix/unix.mak Mon Apr 2 10:33:48 2001
+@@ -46,18 +46,18 @@
+ LIBS.x11 = $(X11LIB) $(JOY_X11_LIBS) -lX11 -lXext
+ LIBS.svgalib = $(X11LIB) -lvga -lvgagl
+ LIBS.ggi = $(X11LIB) -lggi
+-LIBS.xgl = $(X11LIB) $(JOY_X11_LIBS) -lX11 -lXext $(GLLIBS) -ljpeg
++LIBS.xgl = $(X11LIB) $(JOY_X11_LIBS) -lX11 -lXext $(GLLIBS) -L/usr/local/lib -ljpeg $(PTHREAD_LIBS)
LIBS.xfx = $(X11LIB) $(JOY_X11_LIBS) -lX11 -lXext -lglide2x
LIBS.svgafx = $(X11LIB) -lvga -lvgagl -lglide2x
LIBS.openstep = -framework AppKit
@@ -9,7 +14,8 @@
LIBS.photon2 = -L/usr/lib -lph -lphrender
CFLAGS.x11 = $(X11INC) $(JOY_X11_CFLAGS)
- CFLAGS.xgl = $(X11INC) $(JOY_X11_CFLAGS)
+-CFLAGS.xgl = $(X11INC) $(JOY_X11_CFLAGS)
++CFLAGS.xgl = $(X11INC) $(JOY_X11_CFLAGS) -I/usr/local/include $(PTHREAD_CFLAGS)
CFLAGS.xfx = $(X11INC) $(JOY_X11_CFLAGS) -I/usr/include/glide
CFLAGS.svgafx = -I/usr/include/glide
-CFLAGS.SDL = -D_REENTRANT
diff --git a/emulators/xmame/files/patch-ae b/emulators/xmame/files/patch-ae
new file mode 100644
index 0000000..c030ba9
--- /dev/null
+++ b/emulators/xmame/files/patch-ae
@@ -0,0 +1,138 @@
+--- src/unix/video-drivers/glxtool.h.orig Sat Mar 24 02:33:38 2001
++++ src/unix/video-drivers/glxtool.h Mon Apr 2 21:40:48 2001
+@@ -28,6 +28,8 @@
+ int accumBlueBits;
+ int accumAlphaBits;
+
++ /* internal use only */
++ int gl_supported;
+ long nativeVisualID;
+ } GLCapabilities;
+
+--- src/unix/video-drivers/xgl.c.orig Mon Apr 2 13:33:10 2001
++++ src/unix/video-drivers/xgl.c Mon Apr 2 21:42:05 2001
+@@ -63,14 +63,14 @@
+ GLXContext glContext=NULL;
+
+ const GLCapabilities glCapsDef = { BUFFER_DOUBLE, COLOR_RGBA, STEREO_OFF,
+- 1, 0, 1, 1, 1, 1, 0, 0, 0, 0,
++ 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1,
+ -1
+ };
+
+ GLCapabilities glCaps;
+
+ static const char * xgl_version_str =
+- "\nGLmame v0.83, by Sven Goethel, http://www.jausoft.com, sgoethel@jausoft.com,\nbased upon GLmame v0.6 driver for xmame, written by Mike Oliphant\n\n";
++ "\nGLmame v0.85, by Sven Goethel, http://www.jausoft.com, sgoethel@jausoft.com,\nbased upon GLmame v0.6 driver for xmame, written by Mike Oliphant\n\n";
+
+ struct rc_option display_opts[] = {
+ /* name, shortname, type, dest, deflt, min, max, func, help */
+@@ -237,6 +237,7 @@
+
+ glCaps.alphaBits=(alphablending>0)?1:0;
+ glCaps.buffer =(doublebuffer>0)?BUFFER_DOUBLE:BUFFER_SINGLE;
++ glCaps.gl_supported = 1;
+
+ window = RootWindow(display,DefaultScreen( display ));
+ vgc = findVisualGlX( display, window,
+--- src/unix/video-drivers/glxtool.c.orig Fri Mar 23 17:33:38 2001
++++ src/unix/video-drivers/glxtool.c Mon Apr 2 22:31:23 2001
+@@ -68,6 +68,7 @@
+ GLCapabilities *glCaps )
+ {
+ int i=0;
++ visualAttribList[i++] = GLX_USE_GL; /* paranoia .. */
+ visualAttribList[i++] = GLX_RED_SIZE;
+ visualAttribList[i++] = 1;
+ visualAttribList[i++] = GLX_GREEN_SIZE;
+@@ -134,13 +135,18 @@
+ int gc_ret = 0;
+ int ownwin = 0;
+
++ GLCapabilities _glCaps;
++
+ /**
+ * The Visual seeked by Function: findVisualIdByFeature !
+ */
+ XVisualInfo * visualList=NULL; /* the visual list, to be XFree-ed */
+
++ /* paranoia .. */
++ glCaps->gl_supported = 1;
++
+ /* backup ... */
+- GLCapabilities _glCaps = *glCaps;
++ _glCaps = *glCaps;
+
+ if(pOwnWin) ownwin=*pOwnWin;
+
+@@ -214,14 +220,14 @@
+
+ if( offscreen && vgc.visual!=NULL)
+ {
+- if(*pix!=0)
++ if(pix!=NULL && *pix!=NULL)
+ {
+ XFreePixmap(display, *pix);
+ }
+- if(vgc.visual !=NULL)
++ if(pix!=NULL && vgc.visual !=NULL)
+ *pix = XCreatePixmap( display, rootWin, width, height,
+ vgc.visual->depth);
+- if(*pix!=0)
++ if(pix!=NULL && *pix!=NULL)
+ {
+ *pWin = __glXCreateGLXPixmap( display, vgc.visual, *pix );
+ if(*pWin==0)
+@@ -271,7 +277,7 @@
+ fflush(stderr);
+ }
+
+- if(*pix!=0)
++ if(pix!=NULL && *pix!=NULL)
+ {
+ XFreePixmap(display, *pix);
+ *pix=0;
+@@ -463,6 +469,16 @@
+ int iValue2=0;
+ int iValue3=0;
+
++ memset(glCaps, 0, sizeof(GLCapabilities));
++
++ if(__glXGetConfig( disp, visual, GLX_USE_GL, &iValue)==0)
++ {
++ glCaps->gl_supported=(iValue==True)?1:0;
++ } else {
++ fprintf(stderr,"GLINFO: fetching GLX_USE_GL state failed\n");
++ fflush(stderr);
++ }
++
+ if(__glXGetConfig( disp, visual, GLX_DOUBLEBUFFER, &iValue)==0)
+ {
+ glCaps->buffer=iValue?BUFFER_DOUBLE:BUFFER_SINGLE;
+@@ -530,7 +546,7 @@
+ fprintf(stderr,"GLINFO: fetching rgba AccumSize states failed\n");
+ fflush(stderr);
+ }
+- glCaps->nativeVisualID=(long)visual->visualid;
++ glCaps->nativeVisualID=(long) (visual->visualid);
+
+ return 1;
+ }
+@@ -541,6 +557,8 @@
+ GLCapabilities _glCaps;
+ setGLCapabilities ( display, vi, &_glCaps);
+
++ if(_glCaps.gl_supported != glCaps->gl_supported) return 0;
++
+ if(_glCaps.buffer<glCaps->buffer) return 0;
+
+ if(_glCaps.color<glCaps->color) return 0;
+@@ -635,6 +653,7 @@
+
+ void printGLCapabilities ( GLCapabilities *glCaps )
+ {
++ fprintf(stdout, "\t gl_supported: %d !\n", glCaps->gl_supported);
+ fprintf(stdout, "\t doubleBuff: %d, ", (int)glCaps->buffer);
+ fprintf(stdout, " rgba: %d, ", (int)glCaps->color);
+ fprintf(stdout, " stereo: %d, ", (int)glCaps->stereo);
diff --git a/emulators/xmame/pkg-descr b/emulators/xmame/pkg-descr
index c0dbd88..22bcc30 100644
--- a/emulators/xmame/pkg-descr
+++ b/emulators/xmame/pkg-descr
@@ -2,7 +2,7 @@ XMAME is an arcade game machine emulator for UNIX/X11. It will emulate
the hardware, video, sound, and other services, of many classic arcade
game machines.
-As of this release, XMAME supports an incredible 2073 arcade games, and
+As of this release, XMAME supports an incredible 2843 arcade games, and
the number grows every day! A partial list of the (more popular and
well-known) games currently supported by this emulator include:
@@ -20,5 +20,3 @@ have access to a ROM burner, or you don't own one of these video games
you can obtain ROM images for XMAME on the Net.
WWW: http://x.mame.net/
-
-[ Maintained by Jacob A. Hart <c9710216@studentmail.newcastle.edu.au>. ]
diff --git a/emulators/xmame/pkg-plist b/emulators/xmame/pkg-plist
index 67bf6d4..47f4954 100644
--- a/emulators/xmame/pkg-plist
+++ b/emulators/xmame/pkg-plist
@@ -36,6 +36,18 @@ share/%%MAMEMESS%%/%%MAMEMESS%%rc
%%PINMAMEONLY%%%%PORTDOCS%%share/doc/xpinmame/keys.txt
%%PINMAMEONLY%%%%PORTDOCS%%share/doc/xpinmame/sounds.dat
%%PORTDOCS%%@dirrm share/doc/%%MAMEMESS%%
+%%OPENGL%%share/%%MAMEMESS%%/cab/glmame/cabfront.jpg
+%%OPENGL%%share/%%MAMEMESS%%/cab/glmame/cabtitle.jpg
+%%OPENGL%%share/%%MAMEMESS%%/cab/glmame/glmame.cab
+%%OPENGL%%@dirrm share/%%MAMEMESS%%/cab/glmame
+%%OPENGL%%share/%%MAMEMESS%%/cab/glmamejau/cabfront.jpg
+%%OPENGL%%share/%%MAMEMESS%%/cab/glmamejau/cabside.jpg
+%%OPENGL%%share/%%MAMEMESS%%/cab/glmamejau/cabtitle.jpg
+%%OPENGL%%share/%%MAMEMESS%%/cab/glmamejau/glmamejau.cab
+%%OPENGL%%@dirrm share/%%MAMEMESS%%/cab/glmamejau
+%%OPENGL%%share/%%MAMEMESS%%/cab/trans/trans.cab
+%%OPENGL%%@dirrm share/%%MAMEMESS%%/cab/trans
+%%OPENGL%%@dirrm share/%%MAMEMESS%%/cab
@dirrm share/%%MAMEMESS%%/roms
@dirrm share/%%MAMEMESS%%
@unexec rmdir %%SPOOLGAMES%%/%%MAMEMESS%% 2>/dev/null || true
OpenPOWER on IntegriCloud