diff options
author | Mike Frysinger <vapier@gentoo.org> | 2003-11-10 05:05:25 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2003-11-10 05:05:25 +0000 |
commit | 4ca8453fb6db53c80bf006043ed7823f93aae779 (patch) | |
tree | 13966d31238c90cfc274fc975a7002711619c7a7 /games-emulation | |
parent | ver bump (diff) | |
download | gentoo-2-4ca8453fb6db53c80bf006043ed7823f93aae779.tar.gz gentoo-2-4ca8453fb6db53c80bf006043ed7823f93aae779.tar.bz2 gentoo-2-4ca8453fb6db53c80bf006043ed7823f93aae779.zip |
ver bump
Diffstat (limited to 'games-emulation')
-rw-r--r-- | games-emulation/fceultra/ChangeLog | 7 | ||||
-rw-r--r-- | games-emulation/fceultra/fceultra-0.97.4.ebuild | 61 | ||||
-rw-r--r-- | games-emulation/fceultra/files/0.97.4-joystick.patch | 99 | ||||
-rw-r--r-- | games-emulation/fceultra/files/0.97.4-stereo.patch | 86 | ||||
-rw-r--r-- | games-emulation/fceultra/files/digest-fceultra-0.97.4 | 1 |
5 files changed, 253 insertions, 1 deletions
diff --git a/games-emulation/fceultra/ChangeLog b/games-emulation/fceultra/ChangeLog index 219afca52234..de24a8377bae 100644 --- a/games-emulation/fceultra/ChangeLog +++ b/games-emulation/fceultra/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog for games-emulation/fceultra # Copyright 2002-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/games-emulation/fceultra/ChangeLog,v 1.3 2003/09/17 10:07:04 msterret Exp $ +# $Header: /var/cvsroot/gentoo-x86/games-emulation/fceultra/ChangeLog,v 1.4 2003/11/10 05:05:25 vapier Exp $ + +*fceultra-0.97.4 (10 Nov 2003) + + 10 Nov 2003; Mike Frysinger <vapier@gentoo.org> : + Version bump. *fceultra-081-r1 (17 Sep 2003) diff --git a/games-emulation/fceultra/fceultra-0.97.4.ebuild b/games-emulation/fceultra/fceultra-0.97.4.ebuild new file mode 100644 index 000000000000..9ae3cfc8bbd3 --- /dev/null +++ b/games-emulation/fceultra/fceultra-0.97.4.ebuild @@ -0,0 +1,61 @@ +# Copyright 1999-2003 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/games-emulation/fceultra/fceultra-0.97.4.ebuild,v 1.1 2003/11/10 05:05:25 vapier Exp $ + +inherit games gcc eutils + +DESCRIPTION="A portable NES/Famicom emulator" +HOMEPAGE="http://fceultra.sourceforge.net/" +SRC_URI="http://xodnizel.net/fceultra/downloads/fceu-${PV}.src.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="-* ~x86" +IUSE="sdl svga" + +# Because of code generation bugs, FCEUltra now depends on a version +# of gcc greater than or equal to GCC 3.2.2. +DEPEND="|| ( + svga? ( media-libs/svgalib ) + sdl? ( media-libs/libsdl ) + media-libs/libsdl + ) + >=sys-devel/gcc-3.2.2 + sys-libs/zlib" + +S=${WORKDIR}/fceu + +src_unpack() { + unpack ${A} + + cd ${S} + epatch ${FILESDIR}/${PV}-stereo.patch + epatch ${FILESDIR}/${PV}-joystick.patch + sed -i \ + -e 's:-mcpu=i686 -O2::' \ + -e 's:-fomit-frame-pointer::' \ + Makefile.linuxvga Makefile.unixsdl Makefile.unixsdl.gtk + sed -i \ + -e "s:\${TFLAGS}:\${TFLAGS} ${CFLAGS}:" \ + Makefile.base +} + +src_compile() { + if [ `use sdl` ] || [ -z "`use sdl``use svga`" ] ; then + make -f Makefile.unixsdl || die "sdl make failed" + mv fceu fceu-sdl + make -f Makefile.unixsdl clean + fi + if [ `use svga` ] ; then + make -f Makefile.linuxvga || die "svga make failed" + mv fceu fceu-svga + fi +} + +src_install() { + use sdl && dogamesbin fceu-sdl + use svga && dogamesbin fceu-svga + use sdl || use svga || dogamesbin fceu-sdl + dodoc Documentation/{*,rel/readme-linux.txt} + prepgamesdirs +} diff --git a/games-emulation/fceultra/files/0.97.4-joystick.patch b/games-emulation/fceultra/files/0.97.4-joystick.patch new file mode 100644 index 000000000000..40bb7457a1b0 --- /dev/null +++ b/games-emulation/fceultra/files/0.97.4-joystick.patch @@ -0,0 +1,99 @@ +--- drivers/cli/sdl-joystick.c.orig 2003-06-21 22:49:24.000000000 -0500 ++++ drivers/cli/sdl-joystick.c 2003-07-10 19:10:38.000000000 -0500 +@@ -143,20 +143,12 @@ + /* Configure a joystick axis. */ + void AConfig (int n, int a) + { +- Sint16 lastaxe[64]; +- int numaxes; +- int axis; ++ SDL_Event event; + + WNoInput(); + + joyAMap[n][a] = a; + +- numaxes=SDL_JoystickNumAxes(jo[n]); +- if(numaxes>64) numaxes=64; +- +- for(axis=0;axis<numaxes;axis++) /* Pre-load. */ +- lastaxe[axis]=SDL_JoystickGetAxis(jo[n], axis); +- + while (1) + { + uint8 t; +@@ -167,31 +159,26 @@ + } + else + break; +- +- SDL_JoystickUpdate(); +- +- for (axis=0;axis<numaxes;axis++) { +- if (abs((Sint32)SDL_JoystickGetAxis(jo[n],axis)-lastaxe[axis]) > 8192) { +- joyAMap[n][a] = axis; +- /* 4096 should be good enough to account for any jitter. */ +- while (abs((Sint32)SDL_JoystickGetAxis(jo[n],axis)-lastaxe[axis]) > 4096) { +- SDL_JoystickUpdate(); +- SDL_Delay(50); +- } +- goto endaconfig; +- } +- } +- SDL_Delay(100); +- } +- +- endaconfig: +- WNoInput(); ++ ++ SDL_JoystickUpdate(); ++ if (SDL_PollEvent(&event) && (event.type == SDL_JOYAXISMOTION)) ++ { ++ // Make sure the joystick was moved by some significant amount ++ if ((event.jaxis.value < -3000) || (event.jaxis.value > 3000)) ++ { ++ joyAMap[n][a] = event.jaxis.axis; ++ WNoInput(); ++ return; ++ } ++ } ++ } + return; + } + + /* Configure a joystick button. */ + void BConfig (int n, int b) + { ++ SDL_Event event; + WNoInput(); + joyBMap[n][b] = 0; + while (1) +@@ -206,23 +193,15 @@ + break; + + SDL_JoystickUpdate(); ++ ++ if (SDL_PollEvent(&event) && event.type == SDL_JOYBUTTONDOWN) + { +- int buttons; +- for (buttons = SDL_JoystickNumButtons(jo[n])-1;buttons >= 0;buttons--) { +- if (SDL_JoystickGetButton(jo[n],buttons)) { +- joyBMap[n][b] = buttons+1; +- while (SDL_JoystickGetButton(jo[n], buttons)) { +- SDL_JoystickUpdate(); +- SDL_Delay(50); +- } +- goto endbconfig; +- } +- } ++ joyBMap[n][b] = event.jbutton.button+1; ++ WNoInput(); ++ return; + } +- SDL_Delay(100); + } + +- endbconfig: + WNoInput(); + return; + } diff --git a/games-emulation/fceultra/files/0.97.4-stereo.patch b/games-emulation/fceultra/files/0.97.4-stereo.patch new file mode 100644 index 000000000000..ec0e783f16e1 --- /dev/null +++ b/games-emulation/fceultra/files/0.97.4-stereo.patch @@ -0,0 +1,86 @@ +--- drivers/common/unixdsp.c.orig 2003-11-09 22:33:13.000000000 -0500 ++++ drivers/common/unixdsp.c 2003-11-09 23:40:46.496436000 -0500 +@@ -37,7 +37,7 @@ + + static int format; + static int dspfd; +- ++static int fakestereo; + + // fsize is in samples, not bytes(gets translated before ioctl()) + int InitUNIXDSPSound(int *rate, int bits, int fsize, int nfrags, int dev) +@@ -92,9 +92,17 @@ + + if(ioctl(dspfd,SNDCTL_DSP_SETFRAGMENT,&x)==-1) + FCEUI_printf("ERROR (continuing anyway)\n"); +- x=0; ++ // Set mono sound. ++ // Some sound cards can only do stereo, so simulate stereo for these cards. ++ x=1; ++ fakestereo=0; + FCEUI_printf("\n Setting mono sound..."); +- if(ioctl(dspfd,SNDCTL_DSP_STEREO,&x)==-1) goto __disperror; ++ if(ioctl(dspfd,SNDCTL_DSP_CHANNELS,&x)==-1) goto __disperror; ++ if(x == 2) ++ { ++ printf("\n Couldn't set mono, faking stereo...\n"); ++ fakestereo = 1; ++ } + FCEUI_printf("\n Setting playback rate of %d hz...",*rate); + if(ioctl(dspfd,SNDCTL_DSP_SPEED,rate)==-1) goto __disperror; + FCEUI_printf("Set to %d hz\n",*rate); +@@ -110,9 +118,10 @@ + } + + static int16 MBuffer[2048]; ++static int16 fakebuffer[4098]; + void WriteUNIXDSPSound(int32 *Buffer, int Count, int noblocking) + { +- int P,c; ++ int P,c,i; + int32 *src=Buffer; + + if(format) +@@ -130,13 +139,35 @@ + c=Count<<1; + } + +- //noblocking=!noblocking; // speed testing +- if(noblocking) ++ // If a device can only support stereo, fake stereo by duplicating each item in the buffer. ++ if(fakestereo) ++ { ++ for (i=0; i <= c; i++ ) ++ { ++ fakebuffer[2*i] = MBuffer[i]; ++ fakebuffer[2*i+1] = MBuffer[i]; ++ } ++ c = c * 2; ++ // noblocking=!noblocking; // speed testing ++ if(noblocking) ++ { ++ struct audio_buf_info ai; ++ if(!ioctl(dspfd,SNDCTL_DSP_GETOSPACE,&ai)) ++ if(ai.bytes<c) ++ return; ++ } ++ write(dspfd,(uint8 *)fakebuffer,c); ++ } ++ else + { +- struct audio_buf_info ai; +- if(!ioctl(dspfd,SNDCTL_DSP_GETOSPACE,&ai)) +- if(ai.bytes<c) +- return; ++ // noblocking=!noblocking; // speed testing ++ if(noblocking) ++ { ++ struct audio_buf_info ai; ++ if(!ioctl(dspfd,SNDCTL_DSP_GETOSPACE,&ai)) ++ if(ai.bytes<c) ++ return; ++ } ++ write(dspfd,(uint8 *)MBuffer,c); + } +- write(dspfd,(uint8 *)MBuffer,c); + } diff --git a/games-emulation/fceultra/files/digest-fceultra-0.97.4 b/games-emulation/fceultra/files/digest-fceultra-0.97.4 new file mode 100644 index 000000000000..ea739c0fd0c2 --- /dev/null +++ b/games-emulation/fceultra/files/digest-fceultra-0.97.4 @@ -0,0 +1 @@ +MD5 b1247e24196798f623481ffd5a1e865b fceu-0.97.4.src.tar.gz 559070 |