[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