summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2003-11-10 05:05:25 +0000
committerMike Frysinger <vapier@gentoo.org>2003-11-10 05:05:25 +0000
commit4ca8453fb6db53c80bf006043ed7823f93aae779 (patch)
tree13966d31238c90cfc274fc975a7002711619c7a7 /games-emulation/fceultra/files
parentver bump (diff)
downloadgentoo-2-4ca8453fb6db53c80bf006043ed7823f93aae779.tar.gz
gentoo-2-4ca8453fb6db53c80bf006043ed7823f93aae779.tar.bz2
gentoo-2-4ca8453fb6db53c80bf006043ed7823f93aae779.zip
ver bump
Diffstat (limited to 'games-emulation/fceultra/files')
-rw-r--r--games-emulation/fceultra/files/0.97.4-joystick.patch99
-rw-r--r--games-emulation/fceultra/files/0.97.4-stereo.patch86
-rw-r--r--games-emulation/fceultra/files/digest-fceultra-0.97.41
3 files changed, 186 insertions, 0 deletions
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