summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emulators/fmsx/Makefile65
-rw-r--r--emulators/fmsx/PLIST11
-rw-r--r--emulators/fmsx/distinfo18
-rw-r--r--emulators/fmsx/patches/patch-aa43
-rw-r--r--emulators/fmsx/patches/patch-ab48
-rw-r--r--emulators/fmsx/patches/patch-ac20
-rw-r--r--emulators/fmsx/patches/patch-ad180
-rw-r--r--emulators/fmsx/patches/patch-ae13
-rw-r--r--emulators/fmsx/patches/patch-af12
-rw-r--r--emulators/fmsx/patches/patch-ag17
-rw-r--r--emulators/fmsx/patches/patch-ah12
11 files changed, 142 insertions, 297 deletions
diff --git a/emulators/fmsx/Makefile b/emulators/fmsx/Makefile
index fd95689eb3c..9a62cbfed06 100644
--- a/emulators/fmsx/Makefile
+++ b/emulators/fmsx/Makefile
@@ -1,11 +1,10 @@
-# $NetBSD: Makefile,v 1.25 2008/03/03 19:21:38 jlam Exp $
+# $NetBSD: Makefile,v 1.26 2010/01/07 08:38:43 obache Exp $
-DISTNAME= fMSX24.tar
-PKGNAME= fmsx-2.4
-PKGREVISION= 1
+DISTNAME= fMSX351
+PKGNAME= fmsx-3.5.1
CATEGORIES= emulators x11
MASTER_SITES= http://fms.komkon.org/fMSX/
-EXTRACT_SUFX= .Z
+EXTRACT_SUFX= .zip
MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= http://fms.komkon.org/fMSX/
@@ -13,55 +12,57 @@ COMMENT= MSX (Z80-based computer) emulator
RESTRICTED= ROM image copyright is questionable
NO_BIN_ON_CDROM= ${RESTRICTED}
-NO_SRC_ON_CDROM= ${RESTRICTED}
NO_BIN_ON_FTP= ${RESTRICTED}
+NO_SRC_ON_CDROM= ${RESTRICTED}
NO_SRC_ON_FTP= ${RESTRICTED}
PKG_DESTDIR_SUPPORT= user-destdir
-WRKSRC= ${WRKDIR}/MSX
+WRKSRC= ${WRKDIR}
+
+BUILD_DIRS= fMSX/Unix
.include "../../mk/bsd.prefs.mk"
+.include "../../mk/endian.mk"
+
.if ${OPSYS} == "NetBSD" || ${OPSYS} == "SunOS"
USE_SUN_AUDIO?= YES
.else
USE_SUN_AUDIO?= NO
.endif
-DEFS= -DFontDir=\"${PREFIX:Q}/share/fmsx/\"
-DEFS+= -DRomDir=\"${PREFIX:Q}/share/fmsx/\"
-DEFS+= -DMITSHM -D${CUR_DEPTH} -DSOUND
+DEFS+= -DRomDir=\"${PREFIX:Q}/share/fmsx\"
.if ${USE_SUN_AUDIO} == "YES"
DEFS+= -DSUN_AUDIO
-.endif
+.else
+. include "../../mk/oss.buildlink3.mk"
-MAKE_ENV+= DEFS=${DEFS:Q}
+SUBST_CLASSES+= devdsp
+SUBST_STAGE.devdsp= pre-build
+SUBST_FILES.devdsp= EMULib/SndUnix.c
+SUBST_SED.devdsp= -e 's|/dev/dsp|${DEVOSSSOUND}|g'
-INSTALLATION_DIRS= bin
+.endif
+.if ${MACHINE_ENDIAN} == "big"
+DEFS+= -DMSB_FIRST
+.elif ${MACHINE_ENDIAN} == "little"
+DEFS+= -DLSB_FIRST
+.else
+BROKEN+= "Unknown endian"
+.endif
-post-extract:
- @${RM} ${WRKSRC}/CMOS.ROM
- @${CHMOD} -R a+r ${WRKSRC}
+MAKE_ENV+= DEFS=${DEFS:Q}
-pre-install:
- @${INSTALL_DATA_DIR} ${PREFIX}/share/fmsx
- @${INSTALL_DATA_DIR} ${PREFIX}/share/doc/html
+INSTALLATION_DIRS= bin share/fmsx share/doc
# Makefile of fMSX doesn't have install target.
do-install:
- ${INSTALL_PROGRAM} ${WRKSRC}/fmsx ${DESTDIR}${PREFIX}/bin
- ${INSTALL_PROGRAM} ${WRKSRC}/rddsk ${DESTDIR}${PREFIX}/bin
- ${INSTALL_PROGRAM} ${WRKSRC}/wrdsk ${DESTDIR}${PREFIX}/bin
- ${INSTALL_DATA} ${WRKSRC}/*.ROM ${DESTDIR}${PREFIX}/share/fmsx
- ${INSTALL_DATA} ${WRKSRC}/fMSX.html ${DESTDIR}${PREFIX}/share/doc/html
+ ${INSTALL_PROGRAM} ${WRKSRC}/fMSX/Unix/fmsx ${DESTDIR}${PREFIX}/bin
+ ${INSTALL_DATA} ${WRKSRC}/fMSX/ROMs/*.ROM ${DESTDIR}${PREFIX}/share/fmsx
+ ${INSTALL_DATA} ${WRKSRC}/fMSX/ROMs/*.FNT ${DESTDIR}${PREFIX}/share/fmsx
+ ${INSTALL_DATA} ${WRKSRC}/fMSX/fMSX.html ${DESTDIR}${PREFIX}/share/doc
+.include "../../devel/zlib/buildlink3.mk"
.include "../../x11/libXext/buildlink3.mk"
.include "../../x11/xextproto/buildlink3.mk"
+.include "../../mk/pthread.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
-
-# XXX It would be nice to customize for each user's display, but this
-# way of doing it at build time depending on build environment is wrong.
-#.ifdef DISPLAY
-#CUR_DEPTH!= ( xwininfo -display ${DISPLAY} -root | fgrep Depth: | ${SED} 's-.*Depth: -BPP-' )
-#.else
-CUR_DEPTH= BPP8
-#.endif
diff --git a/emulators/fmsx/PLIST b/emulators/fmsx/PLIST
index 2a3913c4c7f..3c3ab36fc9c 100644
--- a/emulators/fmsx/PLIST
+++ b/emulators/fmsx/PLIST
@@ -1,14 +1,17 @@
-@comment $NetBSD: PLIST,v 1.2 2009/06/14 17:51:04 joerg Exp $
+@comment $NetBSD: PLIST,v 1.3 2010/01/07 08:38:43 obache Exp $
bin/fmsx
-bin/rddsk
-bin/wrdsk
+share/doc/fMSX.html
+share/fmsx/CYRILLIC.FNT
share/fmsx/DISK.ROM
share/fmsx/FMPAC.ROM
+share/fmsx/FMPAC16.ROM
+share/fmsx/ITALIC.FNT
share/fmsx/KANJI.ROM
share/fmsx/MSX.ROM
share/fmsx/MSX2.ROM
share/fmsx/MSX2EXT.ROM
share/fmsx/MSX2P.ROM
share/fmsx/MSX2PEXT.ROM
+share/fmsx/MSXDOS2.ROM
share/fmsx/PAINTER.ROM
-share/doc/html/fMSX.html
+share/fmsx/RS232.ROM
diff --git a/emulators/fmsx/distinfo b/emulators/fmsx/distinfo
index 713d2f58976..b49475130b7 100644
--- a/emulators/fmsx/distinfo
+++ b/emulators/fmsx/distinfo
@@ -1,9 +1,11 @@
-$NetBSD: distinfo,v 1.5 2006/01/15 19:32:44 joerg Exp $
+$NetBSD: distinfo,v 1.6 2010/01/07 08:38:43 obache Exp $
-SHA1 (fMSX24.tar.Z) = ea44eb273b9532ad0fb388e5ffbebdf348d00467
-RMD160 (fMSX24.tar.Z) = 1df5673271ed354ccc6ee720ad06ccbb07e60a91
-Size (fMSX24.tar.Z) = 506755 bytes
-SHA1 (patch-aa) = 07ee581d3dc3aab51a311c7504c2616f39e3409b
-SHA1 (patch-ab) = 58d44910dbae52ebecb42854f477f32b7a75e20b
-SHA1 (patch-ac) = 884f137a757be514a87005c82f2f3a0c4031190d
-SHA1 (patch-ad) = 8d0db8cc68283e1a98e355672db4cb7ca0de42e9
+SHA1 (fMSX351.zip) = d28d2bf3bc2a1ae273899c80bbbe9bdf4dd98767
+RMD160 (fMSX351.zip) = be16d466f5ff29265d0faebd186a701a96ba81f6
+Size (fMSX351.zip) = 515112 bytes
+SHA1 (patch-aa) = 80191e7d1ff6b36cc1cf97174162e179d743b149
+SHA1 (patch-ab) = 7bff0051685efd22e678c66ffa4075830143e6d6
+SHA1 (patch-ae) = 7168f963dac8686200119b297af3bcf8f8203c4c
+SHA1 (patch-af) = df2dd22ae51558497e1691a13cfaf4556562f483
+SHA1 (patch-ag) = 2a1f29485ffe0d51eeaf093de434e9a49a4b8f48
+SHA1 (patch-ah) = eb44189e26a485b9bc50462127b7b74b8d161734
diff --git a/emulators/fmsx/patches/patch-aa b/emulators/fmsx/patches/patch-aa
index 6592bf5789e..4afb17cee07 100644
--- a/emulators/fmsx/patches/patch-aa
+++ b/emulators/fmsx/patches/patch-aa
@@ -1,30 +1,21 @@
-$NetBSD: patch-aa,v 1.4 2006/01/15 19:32:44 joerg Exp $
+$NetBSD: patch-aa,v 1.5 2010/01/07 08:38:43 obache Exp $
---- Makefile.orig Mon May 14 07:38:23 2001
-+++ Makefile Sun Jun 3 04:48:12 2001
-@@ -42,10 +42,8 @@
- # If you are getting linker errors about not found X11 functions,
- # change the -L/usr/X11R6/lib to the directory where X11
- # libraries libX11.* and libXext.* are located on your system.
--CC = gcc
--DEFINES = -DFMSX -DUNIX -DLSB_FIRST -DDEBUG -DMITSHM \
-- -DDISK -DNARROW -DSOUND -DBPP16
--CFLAGS = -O3 -I/usr/X11R6/include -L/usr/X11R6/lib ${DEFINES}
-+DEFINES = -DFMSX -DUNIX -DDISK -DNARROW ${DEFS}
-+CFLAGS = -O3 -Wall -fomit-frame-pointer -I${X11BASE}/include ${DEFINES}
- OBJECTS = fMSX.o MSX.o Z80.o AY8910.o YM2413.o SCC.o I8251.o V9938.o \
- Patch.o Debug.o Disk.o Unix.o LibUnix.o SndUnix.o Sound.o
+--- fMSX/Unix/Makefile.orig 2008-01-28 19:29:59.000000000 +0000
++++ fMSX/Unix/Makefile
+@@ -1,6 +1,6 @@
+ include ../../EMULib/Rules.Unix
-@@ -61,7 +59,11 @@
- # fMSX Unix/X requires X11 libraries. See note above if you are
- # experiencing any problems.
- fmsx: ${OBJECTS}
-- ${CC} ${CFLAGS} -o fmsx ${OBJECTS} -lXext -lX11
-+.if defined(USE_SUN_AUDIO)
-+ ${CC} ${CFLAGS} -o fmsx ${OBJECTS} -Wl,-R${X11BASE}/lib -L${X11BASE}/lib -lXext -lX11
-+.else
-+ ${CC} ${CFLAGS} -o fmsx ${OBJECTS} -Wl,-R${X11BASE}/lib -L${X11BASE}/lib ${LIBOSSAUDIO} -lXext -lX11
-+.endif
+-DEFINES+= -DFMSX -DLSB_FIRST -DBPP16 -DCONDEBUG -DDEBUG
++DEFINES+= -DFMSX -DBPP16 -DCONDEBUG -DDEBUG $(DEFS)
+ CFLAGS += -I$(LIBZ80)
+ OBJECTS+= $(EMUUNIX) $(FLOPPY) $(FDIDISK) \
+ $(Z80) $(I8255) $(YM2413) $(AY8910) $(SCC) $(WD1793) \
+@@ -10,7 +10,7 @@ OBJECTS+= $(EMUUNIX) $(FLOPPY) $(FDIDISK
+ all: fmsx
+
+ fmsx: Makefile $(OBJECTS)
+- $(CC) -o $@ $(CFLAGS) $(OBJECTS) $(LIBS)
++ $(CC) -o $@ $(LDFLAGS) $(OBJECTS) $(LIBS)
- # Clean up.
clean:
+ rm -f $(OBJECTS)
diff --git a/emulators/fmsx/patches/patch-ab b/emulators/fmsx/patches/patch-ab
index 8914b46b7a6..0a3c5594b16 100644
--- a/emulators/fmsx/patches/patch-ab
+++ b/emulators/fmsx/patches/patch-ab
@@ -1,8 +1,8 @@
-$NetBSD: patch-ab,v 1.4 2006/01/15 19:32:44 joerg Exp $
+$NetBSD: patch-ab,v 1.5 2010/01/07 08:38:43 obache Exp $
---- SndUnix.c.orig 2001-03-07 19:15:16.000000000 +0000
-+++ SndUnix.c
-@@ -31,7 +31,9 @@
+--- EMULib/SndUnix.c.orig 2007-12-30 16:01:34.000000000 +0000
++++ EMULib/SndUnix.c
+@@ -30,7 +30,9 @@
#include <sys/audioio.h>
#include <sys/conf.h>
@@ -10,31 +10,25 @@ $NetBSD: patch-ab,v 1.4 2006/01/15 19:32:44 joerg Exp $
#include <stropts.h>
+#endif
- #define AUDIO_CONV(A) (ULAW[0xFF&(128+(A))])
+ #define AUDIO_CONV(A) (ULAW[0xFF&(128+(A))])
-@@ -73,15 +75,11 @@ static unsigned char ULAW[256] =
-
- #else /* SUN_AUDIO */
-
--#ifdef __FreeBSD__
--#include <machine/soundcard.h>
--#endif
--
- #ifdef __NetBSD__
- #include <soundcard.h>
- #endif
-
--#ifdef __linux__
-+#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__linux__)
+@@ -84,6 +86,10 @@ static const unsigned char ULAW[256] =
#include <sys/soundcard.h>
#endif
-
-@@ -236,7 +234,7 @@ static void SoundSignal(int SIG)
- case SIGUSR1:
- /* Suspend execution, until SIGUSR2 catched */
+
++#ifdef __DragonFly__
++#include <sys/soundcard.h>
++#endif
++
+ #define AUDIO_CONV(A) (128+(A))
+
+ #endif /* !SUN_AUDIO */
+@@ -224,7 +230,7 @@ void TrashAudio(void)
+ if(SoundFD>=0)
+ {
#ifndef SUN_AUDIO
-- ioctl(SoundFD,SNDCTL_DSP_RESET);
-+ ioctl(SoundFD,SNDCTL_DSP_RESET,1);
+- ioctl(SoundFD,SNDCTL_DSP_RESET);
++ ioctl(SoundFD,SNDCTL_DSP_RESET, 1);
#endif
- close(SoundFD);
- for(Suspended=1;Suspended;pause());
+ close(SoundFD);
+ }
diff --git a/emulators/fmsx/patches/patch-ac b/emulators/fmsx/patches/patch-ac
deleted file mode 100644
index 7fedf04c10b..00000000000
--- a/emulators/fmsx/patches/patch-ac
+++ /dev/null
@@ -1,20 +0,0 @@
-$NetBSD: patch-ac,v 1.2 2000/08/06 14:45:05 wiz Exp $
-
---- Z80.h.orig Thu Aug 3 18:56:00 2000
-+++ Z80.h Sun Aug 6 15:25:54 2000
-@@ -46,6 +46,15 @@
- #endif
- typedef signed char offset;
-
-+#include <sys/endian.h>
-+#if (_BYTE_ORDER == _LITTLE_ENDIAN)
-+#define LSB_FIRST
-+#elif (_BYTE_ORDER == _BIG_ENDIAN)
-+#define MSB_FIRST
-+#else
-+#warn Check if your machine is big endian or not and define as appropriate one.
-+#endif
-+
- /** Structured Datatypes *************************************/
- /** NOTICE: #define LSB_FIRST for machines where least **/
- /** signifcant byte goes first. **/
diff --git a/emulators/fmsx/patches/patch-ad b/emulators/fmsx/patches/patch-ad
deleted file mode 100644
index 5d79e2a000e..00000000000
--- a/emulators/fmsx/patches/patch-ad
+++ /dev/null
@@ -1,180 +0,0 @@
-$NetBSD: patch-ad,v 1.3 2001/06/03 17:34:58 kei Exp $
-
---- MSX.c.orig Mon May 14 07:35:08 2001
-+++ MSX.c Sun Jun 3 04:36:49 2001
-@@ -287,6 +287,7 @@
- byte *P;
- word A;
- FILE *F;
-+ char string[FILENAME_MAX];
-
- /*** STARTUP CODE starts here: ***/
-
-@@ -380,7 +381,7 @@
-
- /* Save current directory and cd to wherever system ROMs are */
- if(ProgDir)
-- if(WorkDir=getcwd(NULL,0))
-+ if((WorkDir=getcwd(NULL,0)))
- {
- Chunks[CCount++]=WorkDir;
- chdir(ProgDir);
-@@ -391,7 +392,10 @@
- {
- case 0:
- if(Verbose) printf(" Opening MSX.ROM...");
-- P=LoadROM("MSX.ROM",0x8000,0);
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, "MSX.ROM");
-+ P=LoadROM(string,0x8000,0);
- PRINTRESULT(P);
- if(!P) return(0);
- MemMap[0][0][0]=P;
-@@ -402,7 +406,10 @@
-
- case 1:
- if(Verbose) printf(" Opening MSX2.ROM...");
-- P=LoadROM("MSX2.ROM",0x8000,0);
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, "MSX2.ROM");
-+ P=LoadROM(string,0x8000,0);
- PRINTRESULT(P);
- if(!P) return(0);
- MemMap[0][0][0]=P;
-@@ -410,7 +417,10 @@
- MemMap[0][0][2]=P+0x4000;
- MemMap[0][0][3]=P+0x6000;
- if(Verbose) printf(" Opening MSX2EXT.ROM...");
-- P=LoadROM("MSX2EXT.ROM",0x4000,0);
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, "MSX2EXT.ROM");
-+ P=LoadROM(string,0x4000,0);
- PRINTRESULT(P);
- if(!P) return(0);
- MemMap[3][1][0]=P;
-@@ -419,7 +429,10 @@
-
- case 2:
- if(Verbose) printf(" Opening MSX2P.ROM...");
-- P=LoadROM("MSX2P.ROM",0x8000,0);
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, "MSX2P.ROM");
-+ P=LoadROM(string,0x8000,0);
- PRINTRESULT(P);
- if(!P) return(0);
- MemMap[0][0][0]=P;
-@@ -427,7 +440,10 @@
- MemMap[0][0][2]=P+0x4000;
- MemMap[0][0][3]=P+0x6000;
- if(Verbose) printf(" Opening MSX2PEXT.ROM...");
-- P=LoadROM("MSX2PEXT.ROM",0x4000,0);
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, "MSX2PEXT.ROM");
-+ P=LoadROM(string,0x4000,0);
- PRINTRESULT(P);
- if(!P) return(0);
- MemMap[3][1][0]=P;
-@@ -436,7 +452,10 @@
- }
-
- /* Try loading DiskROM */
-- if(P=LoadROM("DISK.ROM",0x4000,0))
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, "DISK.ROM");
-+ if((P=LoadROM(string,0x4000,0)))
- {
- if(Verbose) puts(" Opening DISK.ROM...OK");
- MemMap[3][1][2]=P;
-@@ -469,16 +488,25 @@
- if(Verbose) printf("Loading other ROMs: ");
-
- /* Try loading CMOS memory contents */
-- if(LoadROM("CMOS.ROM",sizeof(RTC),(byte *)RTC))
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, "CMOS.ROM");
-+ if(LoadROM(string,sizeof(RTC),(byte *)RTC))
- { if(Verbose) printf("CMOS.ROM.."); }
- else memcpy(RTC,RTCInit,sizeof(RTC));
-
- /* Try loading Kanji alphabet ROM */
-- if(Kanji=LoadROM("KANJI.ROM",0x20000,0))
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, "KANJI.ROM");
-+ if((Kanji=LoadROM(string,0x20000,0)))
- { if(Verbose) printf("KANJI.ROM.."); }
-
- /* Try loading RS232 support ROM */
-- if(P=LoadROM("RS232.ROM..",0x4000,0))
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, "RS232.ROM");
-+ if((P=LoadROM(string,0x4000,0)))
- {
- if(Verbose) printf("RS232.ROM..");
- MemMap[3][0][2]=P;
-@@ -486,7 +514,10 @@
- }
-
- /* Try loading FM-PAC support ROM */
-- if(P=LoadROM("FMPAC.ROM",0x4000,0))
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, "FMPAC.ROM");
-+ if((P=LoadROM(string,0x4000,0)))
- {
- if(Verbose) printf("FMPAC.ROM..");
- MemMap[3][3][2]=P;
-@@ -574,7 +605,10 @@
- if(J&&(MemMap[3][1][2]!=EmptyRAM))
- {
- if(J==2) ROMTypeB=1; else ROMTypeA=1;
-- if(LoadCart("MSXDOS2.ROM",J-1))
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, "MSXDOS2.ROM");
-+ if(LoadCart(string,J-1))
- SetMegaROM(J-1,0,1,ROMMask[J-1]-1,ROMMask[J-1]);
- }
-
-@@ -584,15 +618,21 @@
- else J=0;
-
- /* Try loading PAINTER ROM if slot found */
-- if(J) LoadCart("PAINTER.ROM",J-1);
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, "PAINTER.ROM");
-+ if(J) LoadCart(string,J-1);
- }
-
- /* We are now back to working directory */
- if(WorkDir) chdir(WorkDir);
-
- /* Try loading font */
-- if(Verbose) printf("Loading %s font...",FontName);
-- FontBuf=LoadROM(FontName,0x800,0);
-+ bzero(string, sizeof(string));
-+ strcpy(string, RomDir);
-+ strcat(string, FontName);
-+ if(Verbose) printf("Loading %s font...",string);
-+ FontBuf=LoadROM(string,0x800,0);
- PRINTRESULT(FontBuf);
-
- /* Open stream for a printer */
-@@ -624,7 +664,7 @@
-
- /* Open casette image */
- if(CasName)
-- if(CasStream=fopen(CasName,"r+b"))
-+ if((CasStream=fopen(CasName,"r+b")))
- if(Verbose) printf("Using %s as a tape\n",CasName);
-
- if(Verbose)
diff --git a/emulators/fmsx/patches/patch-ae b/emulators/fmsx/patches/patch-ae
new file mode 100644
index 00000000000..0ccd98bbc32
--- /dev/null
+++ b/emulators/fmsx/patches/patch-ae
@@ -0,0 +1,13 @@
+$NetBSD: patch-ae,v 1.1 2010/01/07 08:38:44 obache Exp $
+
+--- EMULib/NetUnix.c.orig 2007-12-30 16:01:15.000000000 +0000
++++ EMULib/NetUnix.c
+@@ -17,6 +17,8 @@
+ #include <stdio.h>
+ #include <netdb.h>
+ #include <errno.h>
++#include <netinet/in.h>
++#include <sys/types.h>
+ #include <sys/ioctl.h>
+ #include <sys/socket.h>
+
diff --git a/emulators/fmsx/patches/patch-af b/emulators/fmsx/patches/patch-af
new file mode 100644
index 00000000000..8238970becd
--- /dev/null
+++ b/emulators/fmsx/patches/patch-af
@@ -0,0 +1,12 @@
+$NetBSD: patch-af,v 1.1 2010/01/07 08:38:44 obache Exp $
+
+--- EMULib/Rules.Unix.orig 2008-01-28 19:48:23.000000000 +0000
++++ EMULib/Rules.Unix
+@@ -1,5 +1,5 @@
+ include ../../EMULib/Rules.gcc
+
+-CFLAGS += -I/usr/X11R6/include
++CFLAGS += -I${X11BASE}/include
+ DEFINES+= -DUNIX -DMITSHM
+-LIBS += -lX11 -lXext
++LIBS += ${COMPILER_RPATH_FLAG}${X11BASE}/lib -L${X11BASE}/lib -lX11 -lXext
diff --git a/emulators/fmsx/patches/patch-ag b/emulators/fmsx/patches/patch-ag
new file mode 100644
index 00000000000..e60a986888f
--- /dev/null
+++ b/emulators/fmsx/patches/patch-ag
@@ -0,0 +1,17 @@
+$NetBSD: patch-ag,v 1.1 2010/01/07 08:38:44 obache Exp $
+
+--- EMULib/Rules.gcc.orig 2008-01-28 19:17:27.000000000 +0000
++++ EMULib/Rules.gcc
+@@ -8,9 +8,10 @@ PRIVATE = $(BASEDIR)/Private
+
+ CC = gcc
+ CPP = cpp
+-CFLAGS = -O3 -pthread -I.. -I$(EMULIB)
++CFLAGS = -O3 $(PTHREAD_CFLAGS) -fomit-frame-pointer -I.. -I$(EMULIB)
+ DEFINES = -DZLIB
+-LIBS = -lz -lpthread
++LIBS = -lz $(PTHREAD_LIBS) $(LIBOSSAUDIO)
++LDFLAGS = $(PTHREAD_LDFLAGS)
+
+ # EMULib sound, console, and other utility functions
+ OBJECTS = $(EMULIB)/EMULib.o $(EMULIB)/Console.o $(EMULIB)/Sound.o \
diff --git a/emulators/fmsx/patches/patch-ah b/emulators/fmsx/patches/patch-ah
new file mode 100644
index 00000000000..9d0c5297198
--- /dev/null
+++ b/emulators/fmsx/patches/patch-ah
@@ -0,0 +1,12 @@
+$NetBSD: patch-ah,v 1.1 2010/01/07 08:38:44 obache Exp $
+
+--- fMSX/fMSX.c.orig 2007-12-30 16:03:22.000000000 +0000
++++ fMSX/fMSX.c
+@@ -72,6 +72,7 @@ int main(int argc,char *argv[])
+ ProgDir=GetFilePath(argv[0]);
+ #else
+ Verbose=1;
++ ProgDir=RomDir;
+ #endif
+
+ /* Clear everything */