[Midnightbsd-cvs] mports [22206] trunk/emulators: add snes9x

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sun Jan 1 20:11:57 EST 2017


Revision: 22206
          http://svnweb.midnightbsd.org/mports/?rev=22206
Author:   laffer1
Date:     2017-01-01 20:11:57 -0500 (Sun, 01 Jan 2017)
Log Message:
-----------
add snes9x

Modified Paths:
--------------
    trunk/emulators/Makefile

Added Paths:
-----------
    trunk/emulators/snes9x/
    trunk/emulators/snes9x/Makefile
    trunk/emulators/snes9x/distinfo
    trunk/emulators/snes9x/files/
    trunk/emulators/snes9x/files/patch-2XSAI.CPP
    trunk/emulators/snes9x/files/patch-3d.h
    trunk/emulators/snes9x/files/patch-Makefile.in
    trunk/emulators/snes9x/files/patch-configure
    trunk/emulators/snes9x/files/patch-memmap.cpp
    trunk/emulators/snes9x/files/patch-port.h
    trunk/emulators/snes9x/files/patch-unix_unix.cpp
    trunk/emulators/snes9x/files/patch-unix_xf86.cpp
    trunk/emulators/snes9x/files/patch-unzip_unzip.h
    trunk/emulators/snes9x/files/pkg-message.in
    trunk/emulators/snes9x/pkg-descr

Modified: trunk/emulators/Makefile
===================================================================
--- trunk/emulators/Makefile	2017-01-01 17:13:37 UTC (rev 22205)
+++ trunk/emulators/Makefile	2017-01-02 01:11:57 UTC (rev 22206)
@@ -22,6 +22,7 @@
 SUBDIR += pearpc
 SUBDIR += qemu
 SUBDIR += rtc
+SUBDIR += snes9x
 SUBDIR += tpm-emulator
 SUBDIR += vMac
 SUBDIR += virtio-kmod

Added: trunk/emulators/snes9x/Makefile
===================================================================
--- trunk/emulators/snes9x/Makefile	                        (rev 0)
+++ trunk/emulators/snes9x/Makefile	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,118 @@
+# Created by: Yukihiro Nakai<Nakai at Mlab.t.u-tokyo.ac.jp>
+# $FreeBSD: head/emulators/snes9x/Makefile 412346 2016-04-01 14:00:51Z mat $
+# $MidnightBSD$
+
+PORTNAME=	snes9x
+PORTVERSION=	1.51
+CATEGORIES=	emulators
+MASTER_SITES=	http://files.ipherswipsite.com/snes9x/ \
+		http://www.lysator.liu.se/snes9x/${PORTVERSION}/
+DISTNAME=	${PORTNAME}-${PORTVERSION}-src
+
+MAINTAINER=	ports at MidnightBSD.org
+COMMENT=	Super Nintendo Entertainment System(SNES) Emulator
+
+LICENSE=	unknown
+
+LIB_DEPENDS=	libpng.so:${PORTSDIR}/graphics/png
+
+USE_XORG=	x11 sm ice xext
+USES=		gmake tar:bzip2
+GNU_CONFIGURE=	yes
+CONFIGURE_ARGS+=	--without-extensions
+CPPFLAGS+=	-I${LOCALBASE}/include
+LDFLAGS+=	-L${LOCALBASE}/lib
+MAKE_ARGS=	INCLUDES="-I${WRKSRC}/unzip -I${WRKSRC} -I${LOCALBASE}/include" \
+		LDLIBS="-lpthread -L${LOCALBASE}/lib" \
+		OPTIMISE="${CXXFLAGS}"
+WRKSRC=		${WRKDIR}/${DISTNAME}
+
+PLIST_FILES=	bin/${PORTNAME}
+SUB_FILES=	pkg-message
+
+OPTIONS_DEFINE=	DEBUG OPENGL SCREENSHOT JMA NETPLAY DOCS
+OPTIONS_DEFINE_i386=	ASM MMX
+OPTIONS_DEFAULT_i386=	MMX
+OPTIONS_DEFAULT=	SCREENSHOT JMA NETPLAY
+
+SCREENSHOT_DESC=	Enable screenshot support
+MMX_DESC=	Enable MMX
+JMA_DESC=	Enable JMA archive decompression support
+NETPLAY_DESC=	Enable network support
+
+.include <bsd.port.pre.mk>
+
+.if ${PORT_OPTIONS:MDOCS}
+PORTDOCS=	controls.txt control-inputs.txt  changes.txt hardware.txt \
+		porting.html faqs.txt snapshots.txt snes9x.conf.default \
+		README
+.endif
+
+.if ${PORT_OPTIONS:MDEBUG}
+CONFIGURE_ARGS+=	--with-debug
+.else
+CONFIGURE_ARGS+=	--without-debug
+.endif
+
+.if ${ARCH} == "i386"
+.if ${PORT_OPTIONS:MX86_ASM}
+BUILD_DEPENDS+=	nasm:devel/nasm
+CONFIGURE_ARGS+=	--with-assembler
+.else
+CONFIGURE_ARGS+=	--without-assembler
+.endif
+
+.if ${PORT_OPTIONS:MMMX} && !defined(PACKAGE_BUILDING)
+CONFIGURE_ARGS+=	--with-mmx
+.else
+CONFIGURE_ARGS+=	--without-mmx
+.endif
+.endif
+
+.if ${PORT_OPTIONS:MOPENGL}
+USE_GL=		yes
+CONFIGURE_ARGS+=	--with-opengl
+SNES9X_BIN=	osnes9x
+.else
+SNES9X_BIN=	snes9x
+.endif
+
+.if ${PORT_OPTIONS:MSCREENSHOT}
+CONFIGURE_ARGS+=	--with-screenshot
+.else
+CONFIGURE_ARGS+=	--without-screenshot
+.endif
+
+.if ${PORT_OPTIONS:MJMA}
+CONFIGURE_ARGS+=	--with-jma-decomp
+.else
+CONFIGURE_ARGS+=	--without-jma-decomp
+.endif
+
+.if ${PORT_OPTIONS:MNETPLAY}
+CONFIGURE_ARGS+=	--with-netplay
+.else
+CONFIGURE_ARGS+=	--without-netplay
+.endif
+
+.if exists(/usr/lib/libusbhid.a)
+CONFIGURE_ARGS+=	--with-joystick
+.else
+CONFIGURE_ARGS+=	--without-joystick
+.endif
+
+post-patch:
+	@${REINPLACE_CMD} -i "" -e 's|Pitch2|Pitch|g' ${WRKSRC}/unix/opengl.cpp
+
+do-install:
+.if ${PORT_OPTIONS:MDOCS}
+	${MKDIR} ${STAGEDIR}${DOCSDIR}
+.for FILE in control* changes.txt hardware.txt porting.html faqs.txt \
+		snapshots.txt snes9x.conf.default
+	${INSTALL_DATA} ${WRKSRC}/doc/${FILE} ${STAGEDIR}${DOCSDIR}
+.endfor
+	${INSTALL_DATA} ${WRKSRC}/unix/docs/readme_unix.txt ${STAGEDIR}${DOCSDIR}/README
+.endif
+	${INSTALL_PROGRAM} ${WRKSRC}/${SNES9X_BIN} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+.include <bsd.port.post.mk>


Property changes on: trunk/emulators/snes9x/Makefile
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/emulators/snes9x/distinfo
===================================================================
--- trunk/emulators/snes9x/distinfo	                        (rev 0)
+++ trunk/emulators/snes9x/distinfo	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,2 @@
+SHA256 (snes9x-1.51-src.tar.bz2) = 70c8f41fc7f1e000605127e0f4261e3eb52c72019b3cbf9bc8061b0b8ccdf687
+SIZE (snes9x-1.51-src.tar.bz2) = 1707256


Property changes on: trunk/emulators/snes9x/distinfo
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/emulators/snes9x/files/patch-2XSAI.CPP
===================================================================
--- trunk/emulators/snes9x/files/patch-2XSAI.CPP	                        (rev 0)
+++ trunk/emulators/snes9x/files/patch-2XSAI.CPP	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,12 @@
+--- 2xsai.cpp.orig	Fri Dec  5 02:03:08 2003
++++ 2xsai.cpp	Sun Jan 25 01:41:08 2004
+@@ -81,7 +81,8 @@
+ #include "port.h"
+ #include "gfx.h"
+ 
+-#if (defined(USE_X86_ASM) && (defined (__i386__) || defined (__i486__) || \
++#if (defined(USE_X86_ASM) && defined(ASMKREED) && \
++              (defined (__i386__) || defined (__i486__) || \
+                defined (__i586__) || defined (__WIN32__) || defined (__DJGPP)))
+ #  ifndef MMX
+ #    define MMX


Property changes on: trunk/emulators/snes9x/files/patch-2XSAI.CPP
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/emulators/snes9x/files/patch-3d.h
===================================================================
--- trunk/emulators/snes9x/files/patch-3d.h	                        (rev 0)
+++ trunk/emulators/snes9x/files/patch-3d.h	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,11 @@
+--- 3d.h.orig	Wed Aug 13 06:27:16 2003
++++ 3d.h	Fri Sep 12 00:05:49 2003
+@@ -80,7 +80,7 @@
+ #include <GL/gl.h>
+ #include <GL/glu.h>
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__)
+ #include <GL/glx.h>
+ #endif
+ 


Property changes on: trunk/emulators/snes9x/files/patch-3d.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/emulators/snes9x/files/patch-Makefile.in
===================================================================
--- trunk/emulators/snes9x/files/patch-Makefile.in	                        (rev 0)
+++ trunk/emulators/snes9x/files/patch-Makefile.in	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,19 @@
+--- Makefile.in	Tue Dec 26 16:46:56 2006
++++ Makefile.in	Tue Dec 26 16:49:20 2006
+@@ -138,7 +138,6 @@
+ 
+ ifdef THREAD_SOUND
+ CPUDEFINES += -DUSE_THREADS
+-EXTRALIBS += -lpthread
+ endif
+ 
+ ifdef GLIDE
+@@ -150,7 +149,7 @@
+ ifdef OPENGL
+ OPENGLOBJS = unix/opengl.o
+ OPENGLDEFINES = -DUSE_OPENGL
+-OPENGLLIBS = -lGL -lGLU -ldl
++OPENGLLIBS = -lGL -lGLU
+ endif
+ 
+ ifdef AIDO


Property changes on: trunk/emulators/snes9x/files/patch-Makefile.in
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/emulators/snes9x/files/patch-configure
===================================================================
--- trunk/emulators/snes9x/files/patch-configure	                        (rev 0)
+++ trunk/emulators/snes9x/files/patch-configure	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,124 @@
+--- configure.orig	2007-04-29 16:03:52.000000000 -0500
++++ configure	2007-10-03 14:33:44.000000000 -0500
+@@ -860,6 +860,7 @@
+   --with(out)-opengl        Use OpenGL for output (default: without)
+   --with(out)-aido          Use a shared memory area for output (default: without)
+   --with(out)-assembler   Use assembler cores if available (default: with)
++  --with(out)-mmx	Use assembler cores if available (default: with)
+   --with(out)-zsnesc4     Use ZSNES C4 core if available (default: same as --with-assembler)
+   --with(out)-zsnesfx     Use ZSNES SuperFX core if available (default: same as --with-assembler)
+   --with(out)-correct-vram-reads Use Correct VRAM read logic (default: with)
+@@ -5873,7 +5874,9 @@
+ ZSNESFX='#ZSNESFX=1'
+ ZSNESC4='#ZSNESC4=1'
+ ASMCPU=''
++if test yes = "$with_mmx"; then
+ ASMKREED='#ASMKREED=1'
++fi
+ SDD1_DECOMP='#SDD1_DECOMP=1'
+ JMA='#JMA=1'
+ SPC700ASM=''
+@@ -5995,6 +5998,60 @@
+ echo "$as_me:$LINENO: result: $snes9x_cv_i386_cpu" >&5
+ echo "${ECHO_T}$snes9x_cv_i386_cpu" >&6
+ 
++echo "$as_me:$LINENO: checking if the OS is FreeBSD" >&5
++echo $ECHO_N "checking if the OS is FreeBSD... $ECHO_C" >&6
++if test "${snes9x_cv_freebsd_os+set}" = set; then
++  echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++
++  cat >conftest.$ac_ext <<_ACEOF
++#line 3885 "configure"
++/* confdefs.h.  */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h.  */
++
++#ifdef __FreeBSD__
++/* */
++#else
++#error Not FreeBSD.
++#endif
++
++int
++main ()
++{
++
++  ;
++  return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++  (eval $ac_compile) 2>&5
++  ac_status=$?
++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
++  (exit $ac_status); } &&
++         { ac_try='test -s conftest.$ac_objext'
++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++  (eval $ac_try) 2>&5
++  ac_status=$?
++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
++  (exit $ac_status); }; }; then
++  snes9x_cv_freebsd_os=yes
++else
++  echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++snes9x_cv_freebsd_os=no
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++fi
++
++echo "$as_me:$LINENO: result: $snes9x_cv_freebsd_os" >&5
++echo "${ECHO_T}$snes9x_cv_freebsd_os" >&6
++
++
+ echo "$as_me:$LINENO: checking if the OS is Linux" >&5
+ echo $ECHO_N "checking if the OS is Linux... $ECHO_C" >&6
+ if test "${snes9x_cv_linux_os+set}" = set; then
+@@ -6365,7 +6422,10 @@
+   with_joystick=yes
+ fi;
+ 
+-if test yes = "$snes9x_cv_linux_os" -a yes = "$with_joystick"; then
++if test yes = "$snes9x_cv_freebsd_os" -a yes = "$with_joystick"; then
++   JOYDEFINES=' -DJOYSTICK_SUPPORT'
++   SYSLIBS="$SYSLIBS"' -lusbhid'
++elif test yes = "$snes9x_cv_linux_os" -a yes = "$with_joystick"; then
+    JOYDEFINES=' -DJOYSTICK_SUPPORT'
+ else
+    with_joystick="no"
+@@ -6396,6 +6456,13 @@
+    CPUINC='-Ish'
+ fi
+ 
++# Check whether --with-mmx or --without-mmx was given.
++if test "${with_mmx+set}" = set -a yes = "$with_assembler"; then
++  withval="$with_mmx"
++
++else
++  with_mmx=no
++fi;
+ 
+ # Check whether --with-sdd1-decomp or --without-sdd1-decomp was given.
+ if test "${with_sdd1_decomp+set}" = set; then
+@@ -9758,7 +9825,7 @@
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+ 
+-#if defined(__linux) || defined(__sun) || defined(__sgi)
++#if defined(__linux) || defined(__sun) || defined(__sgi) || defined(__FreeBSD__)
+ /* */
+ #else
+ #error No sound for this platform
+@@ -10013,6 +10080,7 @@
+ sound support....... $snes9x_cv_sound
+ display system...... $snes9x_info_display
+ joystick support.... $with_joystick
++using mmx code....   $with_mmx
+ netplay support..... $with_netplay
+ SDD1 decompression.. $with_sdd1_decomp
+ JMA decompression... $with_jma_decomp


Property changes on: trunk/emulators/snes9x/files/patch-configure
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/emulators/snes9x/files/patch-memmap.cpp
===================================================================
--- trunk/emulators/snes9x/files/patch-memmap.cpp	                        (rev 0)
+++ trunk/emulators/snes9x/files/patch-memmap.cpp	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,29 @@
+--- memmap.cpp	2007-10-03 11:11:07.000000000 -0500
++++ memmap.cpp	2007-10-03 11:11:34.000000000 -0500
+@@ -169,7 +169,7 @@
+ #include <ctype.h>
+ #include <assert.h>
+ 
+-#ifdef __linux
++#if defined(__linux) || defined(__FreeBSD__)
+ #include <unistd.h>
+ #endif
+ 
+@@ -1473,7 +1473,7 @@
+ 		{
+ 			fwrite((char *) Multi.sramB, size, 1, file);
+ 			fclose(file);
+-#ifdef __linux
++#if defined(__linux) || defined(__FreeBSD__)
+ 			chown(name, getuid(), getgid());
+ #endif
+ 		}
+@@ -1502,7 +1502,7 @@
+ 		{
+ 			fwrite((char *) SRAM, size, 1, file);
+ 			fclose(file);
+-#ifdef __linux
++#if defined(__linux) || defined(__FreeBSD__)
+ 			chown(sramName, getuid(), getgid());
+ #endif
+ 			if (Settings.SPC7110RTC)


Property changes on: trunk/emulators/snes9x/files/patch-memmap.cpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/emulators/snes9x/files/patch-port.h
===================================================================
--- trunk/emulators/snes9x/files/patch-port.h	                        (rev 0)
+++ trunk/emulators/snes9x/files/patch-port.h	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,13 @@
+--- port.h.orig	Fri Jun 30 08:40:56 2006
++++ port.h	Tue Dec 26 23:09:22 2006
+@@ -360,6 +360,10 @@
+ #define SYS_CONFIG_FILE "/etc/snes9x/snes9x.conf"
+ #endif
+ 
++#ifdef __FreeBSD__
++#define TITLE "Snes9X: FreeBSD"
++#endif
++
+ #ifndef TITLE
+ #define TITLE "Snes9x"
+ #endif


Property changes on: trunk/emulators/snes9x/files/patch-port.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/emulators/snes9x/files/patch-unix_unix.cpp
===================================================================
--- trunk/emulators/snes9x/files/patch-unix_unix.cpp	                        (rev 0)
+++ trunk/emulators/snes9x/files/patch-unix_unix.cpp	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,455 @@
+--- unix/unix.cpp	2007-04-28 19:51:08.000000000 -0500
++++ unix/unix.cpp	2007-10-03 16:53:16.000000000 -0500
+@@ -173,7 +173,7 @@
+ #include <fcntl.h>
+ #include <sys/time.h>
+ /* FIXME: Linux alpha (aristocat) has a broken timercmp. Make testcase */
+-#if defined(__linux)
++#if defined(__linux) || defined(__FreeBSD__)
+ # ifndef timercmp
+ #  define timercmp(tvp, uvp, cmp)\
+         ((tvp)->tv_sec cmp (uvp)->tv_sec ||\
+@@ -197,7 +197,7 @@
+ pthread_mutex_t mutex;
+ #endif
+ 
+-#if !defined(NOSOUND) && defined(__linux)
++#if !defined(NOSOUND) && (defined(__linux) || defined(__FreeBSD__))
+ #include <sys/soundcard.h>
+ #include <sys/mman.h>
+ #endif
+@@ -210,6 +210,11 @@
+ #endif
+ #endif
+ 
++#if defined(__FreeBSD__)
++typedef sig_t SIG_PF;
++#include <err.h>
++#endif
++
+ //Breaks sol9 and probably others.
+ //#if defined(__sun) && defined(__GNUC__)
+ //typedef void (*SIG_PF)();
+@@ -233,11 +238,12 @@
+ 
+ #ifdef NETPLAY_SUPPORT
+ #include "netplay.h"
+-
+ #ifdef _DEBUG
+ #define NP_DEBUG 2
+ #endif
++#endif
+ 
++#if defined(NETPLAY_SUPPORT) || defined(JOYSTICK_SUPPORT)
+ /* accessors into controls.cpp static variables */
+ uint16 MovieGetJoypad(int i);
+ void MovieSetJoypad(int i, uint16 buttons);
+@@ -245,22 +251,86 @@
+ /* Joypads status information */
+ uint32 old_joypads[8];
+ uint32 joypads[8];
+-
+ #endif
+ 
+ #ifdef JOYSTICK_SUPPORT
++#define        JOYSTICK_MAX_DEVICES    4
++int JoystickShift = 0;
++uint8 js_mod [8] = {0, 0, 0, 0, 0, 0, 0, 0};
+ #if defined(__linux)
++#define        JOYSTICK_MAX_BUTTONS    4
+ #include <linux/joystick.h>
+-uint8 js_mod [8] = {0, 0, 0, 0, 0, 0, 0, 0};
+ int js_fd [8] = {-1, -1, -1, -1, -1, -1, -1, -1};
+ char *js_device [8] = {"/dev/js0", "/dev/js1", "/dev/js2", "/dev/js3", "/dev/js4", "/dev/js5", "/dev/js6", "/dev/js7" };
+ #endif
+ 
++#if defined(__FreeBSD__)
++#include <sys/types.h>
++#include <sys/param.h>
++       
++extern "C" {
++#define class klass
++#include <dev/usb/usb.h>
++#include <dev/usb/usbhid.h>   
++#undef class
++       
++#if __FreeBSD_version < 500111
++#include <libusbhid.h>
++#else
++#include <usbhid.h>
++#endif
++}
++
++#define        JOYSTICK_MAX_BUTTONS    16
++
++#define JOYSTICK_MAP_BUTTON_INITIALIZER                                \
++    {                                                          \
++       SNES_Y_MASK, SNES_B_MASK, SNES_A_MASK,                  \
++       SNES_X_MASK, SNES_TL_MASK, SNES_TR_MASK,                \
++       SNES_TL_MASK, SNES_TR_MASK,                             \
++       SNES_SELECT_MASK, SNES_START_MASK, 0, 0, 0, 0, 0, 0     \
++    }
++
++int js_map_button[JOYSTICK_MAX_BUTTONS][16] = {
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER,
++       JOYSTICK_MAP_BUTTON_INITIALIZER
++};
++char *js_device [4] = {"/dev/uhid0", "/dev/uhid1", "/dev/uhid2", "/dev/uhid3"};
++struct js_range {
++       int min, max, lower_third, higher_third;
++};
++struct js_info {
++       char *buf;
++       int reportlen;
++       int offset;
++       struct js_range x, y;
++       int buttons;
++       struct hid_item *hids;
++       int fd;
++       int joy;
++} js_info[4];
++int js_count = 0;
++#endif
++
+ void InitJoysticks ();
+ void ReadJoysticks ();
+ #endif
+ 
+-#if !defined(NOSOUND) && defined (__linux)
++#if !defined(NOSOUND) && (defined (__linux) || defined(__FreeBSD__))
+ #define CONFIGURABLE_SOUND_DEVICE
+     char *sound_device = "/dev/dsp";
+ #endif
+@@ -285,7 +355,7 @@
+ const char *inc_format="%03d";
+ 
+ //FIXME: I see no reason not to configureenable this for all Unixen
+-#if defined(DEBUGGER) && (defined(__linux) || defined(__sun))
++#if defined(DEBUGGER) && (defined(__linux) || defined(__sun) || defined(__FreeBSD__))
+ static void sigbrkhandler(int)
+ {
+     CPU.Flags |= DEBUG_MODE_FLAG;
+@@ -326,22 +396,54 @@
+ 
+ void S9xParseArg (char **argv, int &i, int argc)
+ {
++#ifdef JOYSTICK_SUPPORT
+     if (strcmp (argv [i], "-j") == 0 ||
+ 	     strcasecmp (argv [i], "-nojoy") == 0) {
+-#ifdef JOYSTICK_SUPPORT
+ 	Settings.JoystickEnabled = FALSE;
++    } 
++
++#ifdef __FreeBSD__
++    else if (strcasecmp(argv[i], "-joyshift") == 0)
++       JoystickShift = 1;
++#endif
++    else if (strncasecmp(argv[i], "-joydev", sizeof("-joydev") - 1) == 0) {
++       char *end, *snum = argv[i] + sizeof("-joydev") - 1;
++       unsigned long num;
++
++       if (*snum == '\0' || argc < i + 1)
++               S9xUsage();
++       if ((num = strtoul(snum, &end, 10)) < JOYSTICK_MAX_DEVICES &&
++           num > 0 && *end == '\0')
++               js_device[num - 1] = argv[++i];
++       else
++            S9xUsage ();
++        }
++    else if (strncasecmp(argv[i], "-joymap", sizeof("-joymap") - 1) == 0) {
++       static const int button_masks[] = {
++               SNES_A_MASK, SNES_B_MASK, SNES_X_MASK, SNES_Y_MASK,
++               SNES_TL_MASK, SNES_TR_MASK, SNES_START_MASK, SNES_SELECT_MASK
++       };
++       char *end, *snum = argv[i] + sizeof("-joymap") - 1;
++       unsigned long num;
++       int *js_buttons, b;
++
++       if (argc < i + (sizeof(button_masks) / sizeof(int)) || *snum == '\0')
++               S9xUsage();
++       num = strtoul(snum, &end, 10);
++       if (*end != '\0')
++               S9xUsage();
++       if (num == 0 || num > 4)        /* hardcode: max joysticks */
++               S9xUsage();
++       js_buttons = js_map_button[num - 1];
++       for (b = 0; b < (sizeof(button_masks) / sizeof(int)); b++)
++               if ((num = strtoul(argv[++i], &end, 10)) <= 16 && num != 0 &&
++                   *end == '\0')
++                       js_buttons[num - 1] = button_masks[b];
++     }
++
++    else 
+ #endif
+-    } else if (strncasecmp (argv [i], "-joydev", 7) == 0 && argv[i][7]>='1' && argv[i][7]<='8' && argv[i][8]=='\0')
+-    {
+-        int j = argv[i][7]-'1';
+-	if (i + 1 < argc) {
+-#ifdef JOYSTICK_SUPPORT
+-	    js_device[j] = argv[++i];
+-#else
+-            S9xMessage(S9X_WARNING, S9X_USAGE, "Joystick support is not available!");
+-#endif
+-        } else S9xUsage ();
+-    } else if (strcasecmp (argv [i], "-sounddev") == 0) {
++   if (strcasecmp (argv [i], "-sounddev") == 0) {
+     if (i + 1 < argc) {
+ #if defined(CONFIGURABLE_SOUND_DEVICE)
+         sound_device = argv[++i];
+@@ -552,7 +654,7 @@
+ #if !defined(__MSDOS) && defined(DEBUGGER)
+ #if defined(__unix) && !defined(__NeXT__)
+     struct sigaction sa;
+-#if defined(__linux)
++#if defined(__linux) || defined(__FreeBSD__)
+     sa.sa_handler = sigbrkhandler;
+ #else
+     sa.sa_handler = (SIG_PF) sigbrkhandler;
+@@ -770,6 +872,7 @@
+ }
+ 
+ #ifdef JOYSTICK_SUPPORT
++#ifdef __linux
+ void InitJoysticks ()
+ {
+ #ifdef JSIOCGVERSION
+@@ -854,6 +957,189 @@
+     }
+ #endif
+ }
++#endif
++#if defined(__FreeBSD__)
++
++/*
++ * USB HID code for FreeBSD/NetBSD
++ * Brian Feldman <green at FreeBSD.org>
++ *
++ * Reference used:
++ * X-Mame USB HID joystick driver for NetBSD.
++ *
++ * Written by Krister Walfridsson <cato at df.lth.se>
++ */
++
++int
++InitJoystickFd(int fd, char *dev) {
++       report_desc_t rd;
++       struct hid_data *d;
++       struct hid_item h, new_h;
++       struct js_info *my_info;
++       int reportlen, report_id, is_joystick;
++
++       my_info = &js_info[js_count];
++       rd = hid_get_report_desc(fd);
++       if (rd == 0) {
++               warn("%s", dev);
++               return (-1);
++       }
++       report_id = 0;
++#if __FreeBSD_version < 500111
++       reportlen = hid_report_size(rd, report_id, hid_input);
++#else
++       reportlen = hid_report_size(rd, hid_input, report_id);
++#endif
++       my_info->buf = (char *)malloc(reportlen);
++       if (my_info->buf == NULL)
++               err(1, "malloc");
++       my_info->reportlen = reportlen;
++       my_info->offset = report_id != 0;
++       my_info->buttons = 0;
++       my_info->hids = NULL;
++
++       is_joystick = 0;
++#if __FreeBSD_version < 500111
++       for (d = hid_start_parse(rd, 1 << hid_input);
++#else
++       for (d = hid_start_parse(rd, 1 << hid_input, report_id);
++#endif
++           hid_get_item(d, &h);) {
++               int usage, page, link_it = 0;
++               struct js_range *axis;
++
++               page = HID_PAGE(h.usage);
++               usage = HID_USAGE(h.usage);
++               if (!is_joystick)
++                       is_joystick = (h.kind == hid_collection &&
++                           page == HUP_GENERIC_DESKTOP &&
++                           (usage == HUG_JOYSTICK || usage == HUG_GAME_PAD));
++               if (h.kind != hid_input || !is_joystick)
++                       continue;
++               axis = NULL;
++               if (page == HUP_GENERIC_DESKTOP) {
++                       switch (usage) {
++                       case HUG_X:
++                       case HUG_RX:
++                               axis = &my_info->x;
++                               break;
++                       case HUG_Y:
++                       case HUG_RY:
++                               axis = &my_info->y;
++                               break;
++                       }
++               }
++               if (axis != NULL) {
++                       axis->min = h.logical_minimum;
++                       axis->max = h.logical_maximum;
++                       axis->lower_third = axis->min +
++                          (axis->max - axis->min) / 3;
++                       axis->higher_third = axis->min +
++                          (axis->max - axis->min) * 2 / 3;
++                       link_it = 1;
++               }
++               if (!link_it) {
++                       if (page != HUP_BUTTON || usage > 16)
++                               continue;
++                       if (usage > my_info->buttons)
++                               my_info->buttons = usage;
++               }
++               new_h = h;
++               new_h.next = my_info->hids;
++               my_info->hids = (struct hid_item *)
++                   malloc(sizeof(*my_info->hids));
++               if (my_info->hids == NULL)
++                       err(1, "malloc");
++               *my_info->hids = new_h;
++       }
++       printf("Joystick %s: %d buttons, X range %d - %d, Y range %d - %d\n",
++           dev, my_info->buttons, my_info->x.min, my_info->x.max,
++           my_info->y.min, my_info->y.max);
++       my_info->fd = fd;
++       if (JoystickShift) {
++               my_info->joy = js_count + 1;
++       } else
++               my_info->joy = js_count;
++       return (0);
++}
++
++void
++InitJoysticks() {
++       int i, fd;
++
++       for (i = 0; i < (sizeof(js_device) / sizeof(js_device[0])); i++) {
++               fd = open(js_device[i], O_RDONLY | O_NONBLOCK);
++               if (fd == -1)
++                       continue;
++               if (InitJoystickFd(fd, js_device[i]) == 0)
++                       js_count++;
++               else
++                       close(fd);
++       }
++}
++
++void
++ReadJoysticks() {
++       struct hid_item *h;
++       int page, usage, njoy, joy;
++
++       for (njoy = 0; njoy < js_count; njoy++) {
++               struct js_info *jsi;
++
++               jsi = &js_info[njoy];
++               joy = jsi->joy;
++
++               if (read(jsi->fd, jsi->buf, jsi->reportlen) != jsi->reportlen)
++                       continue;
++               for (h = jsi->hids; h != NULL; h = h->next) {
++                       int d;
++
++                       d = hid_get_data(jsi->buf + jsi->offset, h);
++                       page = HID_PAGE(h->usage);
++                       usage = HID_USAGE(h->usage);
++
++                       switch (page) {
++                       case HUP_GENERIC_DESKTOP:
++                               switch (usage) {
++                               case HUG_X:
++                               case HUG_RX:
++                                       if (d < jsi->x.lower_third) {
++                                               joypads[joy] |= SNES_LEFT_MASK;
++                                               joypads[joy] &= ~SNES_RIGHT_MASK;
++                                       } else if (d < jsi->x.higher_third) {
++                                               joypads[joy] &= ~SNES_LEFT_MASK;
++                                               joypads[joy] &= ~SNES_RIGHT_MASK;
++                                       } else {
++                                               joypads[joy] &= ~SNES_LEFT_MASK;
++                                               joypads[joy] |= SNES_RIGHT_MASK;
++                                       }
++                                       break;
++                               case HUG_Y:
++                               case HUG_RY:
++                                       if (d < jsi->y.lower_third) {
++                                               joypads[joy] |= SNES_UP_MASK;
++                                               joypads[joy] &= ~SNES_DOWN_MASK;
++                                       } else if (d < jsi->y.higher_third) {
++                                               joypads[joy] &= ~SNES_UP_MASK;
++                                               joypads[joy] &= ~SNES_DOWN_MASK;
++                                       } else {
++                                               joypads[joy] &= ~SNES_UP_MASK;
++                                               joypads[joy] |= SNES_DOWN_MASK;
++                                       }
++                                       break;
++                               }
++                               break;
++                       case HUP_BUTTON:
++                               if (d)
++                                       joypads[joy] |= js_map_button[njoy][usage - 1];
++                               else
++                                       joypads[joy] &= ~js_map_button[njoy][usage - 1];
++                               break;
++                       }
++               }
++       }
++}
++#endif // defined(__FreeBSD__)
+ #endif // defined (JOYSTICK_SUPPORT)
+ 
+ START_EXTERN_C
+@@ -1716,7 +2002,7 @@
+ }
+ #endif
+ 
+-#if !defined(NOSOUND) && defined(__linux)
++#if !defined(NOSOUND) && (defined(__linux) || defined(__FreeBSD__))
+ static int Rates[8] =
+ {
+     0, 8000, 11025, 16000, 22050, 32000, 44100, 48000
+@@ -1847,7 +2133,7 @@
+ #endif
+ 
+ 
+-#if !defined(NOSOUND) && (defined (__linux) || defined (__sun))
++#if !defined(NOSOUND) && (defined (__linux) || defined (__sun) || defined(__FreeBSD__))
+ void S9xUnixProcessSound (void)
+ {
+ }
+@@ -1890,7 +2176,7 @@
+ }
+ #endif
+ 
+-#if !defined(NOSOUND) && (defined (__linux) || defined (__sun))
++#if !defined(NOSOUND) && (defined (__linux) || defined (__sun) || defined(__FreeBSD__))
+ void S9xGenerateSound ()
+ {
+     /* Linux and Sun versions */
+@@ -1985,7 +2271,7 @@
+     /* If not, this will be called by timer */
+     if (Settings.Mute)
+         return NULL;
+-#ifdef __linux
++#if defined(__linux) || defined(__FreeBSD__)
+     audio_buf_info info;
+ 
+     if (!Settings.ThreadSound &&


Property changes on: trunk/emulators/snes9x/files/patch-unix_unix.cpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/emulators/snes9x/files/patch-unix_xf86.cpp
===================================================================
--- trunk/emulators/snes9x/files/patch-unix_xf86.cpp	                        (rev 0)
+++ trunk/emulators/snes9x/files/patch-unix_xf86.cpp	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,32 @@
+diff -ru ../../work/release/unix/xf86.cpp ./unix/xf86.cpp
+--- ../../work/release/unix/xf86.cpp	Tue Sep 22 06:36:50 1998
++++ ./unix/xf86.cpp	Wed Dec 29 01:54:04 1999
+@@ -4,16 +4,20 @@
+    Question/comments regarding this file only: maciej at imsa.edu
+  */
+ 
+-#ifdef __linux
++#if defined(__linux) || defined(__FreeBSD__)
+ //#define USE_XF86VIDMODE
+ 
++#ifdef __linux
+ #include <asm/ioctls.h>
++#endif
++#include <sys/types.h>
+ #include <sys/ioctl.h>
+ #include <sys/time.h>
++#ifdef __linux
+ #include <linux/ioctl.h>
++#endif
+ 
+ #include <fcntl.h>
+-#include <sys/types.h>
+ 
+ #include <string.h>
+ #include <ctype.h>
+@@ -833,4 +837,4 @@
+ 	ret = 1;
+     return (ret);
+ }
+-#endif /* __linux */
++#endif /* __linux || __FreeBSD__ */


Property changes on: trunk/emulators/snes9x/files/patch-unix_xf86.cpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/emulators/snes9x/files/patch-unzip_unzip.h
===================================================================
--- trunk/emulators/snes9x/files/patch-unzip_unzip.h	                        (rev 0)
+++ trunk/emulators/snes9x/files/patch-unzip_unzip.h	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,24 @@
+--- unzip/unzip.h	2007-10-03 12:28:47.000000000 -0500
++++ unzip/unzip.h	2007-10-03 12:30:22.000000000 -0500
+@@ -41,14 +41,18 @@
+ #ifndef _unz_H
+ #define _unz_H
+ 
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
++#include <sys/types.h>
+ 
+ #ifndef _ZLIB_H
+ #include <zlib.h>
+ #endif
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#define ZEXPORT
++
+ #if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
+ /* like the STRICT of WIN32, we define a pointer that cannot be converted
+     from (void*) without cast */


Property changes on: trunk/emulators/snes9x/files/patch-unzip_unzip.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/emulators/snes9x/files/pkg-message.in
===================================================================
--- trunk/emulators/snes9x/files/pkg-message.in	                        (rev 0)
+++ trunk/emulators/snes9x/files/pkg-message.in	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,28 @@
+###############################################################################
+
+The SNES9X emulator was installed
+
+1) You can run the emulator using:
+
+   # (o)snes9x -y2 -ts /path/to/rom_file
+
+2) You can see all options that you can use with snes9x at:
+
+   %%DOCSDIR%%/README
+
+   or only typing:
+
+   # (o)snes9x
+
+3) Also you can define a config file, see an example at:
+
+   %%DOCSDIR%%/snes9x.conf.default
+
+   and you can select this config file using:
+
+   # (o)snes9x -conf /path/to/conf_file
+
+4) Enjoy it ;)
+
+
+###############################################################################


Property changes on: trunk/emulators/snes9x/files/pkg-message.in
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/emulators/snes9x/pkg-descr
===================================================================
--- trunk/emulators/snes9x/pkg-descr	                        (rev 0)
+++ trunk/emulators/snes9x/pkg-descr	2017-01-02 01:11:57 UTC (rev 22206)
@@ -0,0 +1,3 @@
+Super Nintendo Entertainment System(SNES) Emulator
+
+WWW: http://www.snes9x.com/


Property changes on: trunk/emulators/snes9x/pkg-descr
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property


More information about the Midnightbsd-cvs mailing list