summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Holm <dholm@gentoo.org>2004-10-22 13:10:52 +0000
committerDavid Holm <dholm@gentoo.org>2004-10-22 13:10:52 +0000
commit553cf3cffe145432a11ca17e4f3a13bdab0a805a (patch)
treec2611e463628a61e384f82740aed655b28e6914d /app-emulation/uae/files
parentInitial import (Manifest recommit) (diff)
downloadgentoo-2-553cf3cffe145432a11ca17e4f3a13bdab0a805a.tar.gz
gentoo-2-553cf3cffe145432a11ca17e4f3a13bdab0a805a.tar.bz2
gentoo-2-553cf3cffe145432a11ca17e4f3a13bdab0a805a.zip
Added patch from bug #62957, and moved e-uae out of the uae dir
Diffstat (limited to 'app-emulation/uae/files')
-rw-r--r--app-emulation/uae/files/digest-uae-0.8.22-r11
-rw-r--r--app-emulation/uae/files/digest-uae-0.8.25_pre200403021
-rw-r--r--app-emulation/uae/files/digest-uae-0.8.27_pre200407201
-rw-r--r--app-emulation/uae/files/uae-0.8.22-alsa-support.diff323
-rw-r--r--app-emulation/uae/files/uae-0.8.27_pre20040720-ppc-asm-fix.patch45
5 files changed, 324 insertions, 47 deletions
diff --git a/app-emulation/uae/files/digest-uae-0.8.22-r1 b/app-emulation/uae/files/digest-uae-0.8.22-r1
new file mode 100644
index 000000000000..758316cf25dc
--- /dev/null
+++ b/app-emulation/uae/files/digest-uae-0.8.22-r1
@@ -0,0 +1 @@
+MD5 f3d1d0fabf6fa626dc531687cb2bb94d uae-0.8.22.tar.gz 937486
diff --git a/app-emulation/uae/files/digest-uae-0.8.25_pre20040302 b/app-emulation/uae/files/digest-uae-0.8.25_pre20040302
deleted file mode 100644
index 5f3e6f48ef6a..000000000000
--- a/app-emulation/uae/files/digest-uae-0.8.25_pre20040302
+++ /dev/null
@@ -1 +0,0 @@
-MD5 44968ff8e20be721527758bbe1b8cb96 uae-0.8.25-20040302.tar.bz2 1043715
diff --git a/app-emulation/uae/files/digest-uae-0.8.27_pre20040720 b/app-emulation/uae/files/digest-uae-0.8.27_pre20040720
deleted file mode 100644
index ea24f72e6f6f..000000000000
--- a/app-emulation/uae/files/digest-uae-0.8.27_pre20040720
+++ /dev/null
@@ -1 +0,0 @@
-MD5 8f6cdaa23d944611f8d309178fdd8808 uae-0.8.27-20040720.tar.bz2 917319
diff --git a/app-emulation/uae/files/uae-0.8.22-alsa-support.diff b/app-emulation/uae/files/uae-0.8.22-alsa-support.diff
new file mode 100644
index 000000000000..2e13fbbc7374
--- /dev/null
+++ b/app-emulation/uae/files/uae-0.8.22-alsa-support.diff
@@ -0,0 +1,323 @@
+diff -uNr uae-0.8.22-org/configure.in uae-0.8.22/configure.in
+--- uae-0.8.22-org/configure.in 2004-09-11 20:16:30.151434416 +0300
++++ uae-0.8.22/configure.in 2004-09-11 20:16:41.469713776 +0300
+@@ -230,7 +230,8 @@
+ AC_ARG_WITH(svgalib,[ --with-svgalib Use SVGAlib for graphics output],[WANT_SVGALIB=$withval],[])
+ AC_ARG_WITH(sdl,[ --with-sdl Use SDL library for low-level functions],[WANT_SDL=$withval],[])
+ AC_ARG_WITH(sdl-sound,[ --with-sdl-sound Use SDL library for sound],[WANT_SDLSND=$withval],[])
+-AC_ARG_WITH(sdl-gfx,[ --with-sdl-gfx Use SDL library for graphics],[WANT_SDLGFX=$withval],[])
++AC_ARG_WITH(sdl-gfx,[ --with-sdl-gfx Use SDL library for graphics],[WANT_SDLGFX=$withval],[])
++AC_ARG_WITH(alsa,[ --with-alsa Use ALSA library for sound],[WANT_ALSA=$withval],[])
+ AC_ARG_WITH(asciiart,[ --with-asciiart Use ncurses ascii art for graphics output],[WANT_ASCIIART=$withval],[])
+ AC_ARG_ENABLE(dga,[ --enable-dga X11 version: Use the DGA extension],[WANT_DGA=$enableval],[])
+ AC_ARG_ENABLE(vidmode,[ --enable-vidmode X11 version: Use the XF86VidMode extension],[WANT_VIDMODE=$enableval],[])
+@@ -256,6 +257,10 @@
+ fi
+ fi
+
++if [[ "x$WANT_ALSA" = "xyes" ]]; then
++ LIBS="$LIBS -lasound"
++fi
++
+ if [[ "x$WANT_DGA" = "xyes" ]]; then
+ if [[ "x$WANT_SVGALIB" = "xyes" -o "x$WANT_ASCIIART" = "xyes" -o "x$WANT_SDLGFX" = "xyes" ]]; then
+ echo "You can't enable DGA for SVGAlib, SDL and ncurses targets!"
+@@ -853,6 +858,10 @@
+ SOUNDDEP=sd-sdl
+ USE_SOUND=yes
+ NEED_THREAD_SUPPORT=yes
++else if [[ "x$WANT_ALSA" = "xyes" ]]; then
++ AC_MSG_RESULT(ALSA)
++ SOUNDDEP=sd-alsa
++ USE_SOUND=yes
+ else if [[ "x$HAVE_USS_SOUND" = "xyes" ]]; then
+ AC_MSG_RESULT(USS)
+ SOUNDDEP=sd-uss
+@@ -910,6 +919,7 @@
+ fi
+ fi
+ fi
++fi
+
+ if [[ "x$NEED_THREAD_SUPPORT" = "xyes" ]]; then
+ if [[ "x$USE_THREADS" != "xyes" ]]; then
+diff -uNr uae-0.8.22-org/src/sd-alsa/sound.c uae-0.8.22/src/sd-alsa/sound.c
+--- uae-0.8.22-org/src/sd-alsa/sound.c 1970-01-01 02:00:00.000000000 +0200
++++ uae-0.8.22/src/sd-alsa/sound.c 2004-09-11 20:17:00.390837328 +0300
+@@ -0,0 +1,188 @@
++ /*
++ * UAE - The Un*x Amiga Emulator
++ *
++ * Support for Linux/ALSA sound
++ *
++ * Copyright 1997 Bernd Schmidt
++ * Copyright 2004 Heikki Orsila
++ *
++ * BUGS: certainly
++ * TODO:
++ * - if setup_sound() fails, there may still be hope to get the
++ * sound device, but we totally give up.. see sd-uss.
++ */
++
++#include "sysconfig.h"
++#include "sysdeps.h"
++
++#include "config.h"
++#include "options.h"
++#include "memory.h"
++#include "events.h"
++#include "custom.h"
++#include "gensound.h"
++#include "sounddep/sound.h"
++
++#include <alsa/asoundlib.h>
++
++int sound_fd;
++static int have_sound = 0;
++static unsigned long formats;
++
++uae_u16 sndbuffer[44100];
++uae_u16 *sndbufpt;
++int sndbufsize;
++
++snd_pcm_t *alsa_playback_handle = 0;
++int alsa_to_frames_divisor = 4;
++
++void close_sound (void)
++{
++ if (alsa_playback_handle) {
++ snd_pcm_close (alsa_playback_handle);
++ alsa_playback_handle = 0;
++ }
++}
++
++static int open_sound(void)
++{
++ return snd_pcm_open (&alsa_playback_handle, "default", SND_PCM_STREAM_PLAYBACK, 0);
++}
++
++/* Try to determine whether sound is available. This is only for GUI purposes. */
++int setup_sound (void)
++{
++ int err;
++ sound_available = 0;
++ if ((err = open_sound()) < 0) {
++ /* TODO: if the pcm was busy, we should the same as sd-uss does.
++ tell the caller that sound is available. in any other
++ condition we should just return 0. */
++ fprintf (stderr, "cannot open audio device (%s)\n", snd_strerror (err));
++ return 0;
++ }
++ snd_pcm_close (alsa_playback_handle);
++ alsa_playback_handle = 0;
++ sound_available = 1;
++ return 1;
++}
++
++int init_sound (void)
++{
++ int tmp;
++ int rate;
++ int dspbits;
++ int alsamode;
++ int channels;
++ int err;
++ snd_pcm_hw_params_t *hw_params;
++ snd_pcm_uframes_t buffer_frames;
++
++ dspbits = currprefs.sound_bits;
++ channels = currprefs.stereo ? 2 : 1;
++ rate = currprefs.sound_freq;
++
++ have_sound = 0;
++ alsa_playback_handle = 0;
++ if ((err = open_sound()) < 0) {
++ fprintf (stderr, "cannot open audio device (%s)\n", snd_strerror (err));
++ goto nosound;
++ }
++
++ if (currprefs.sound_maxbsiz < 128 || currprefs.sound_maxbsiz > 16384) {
++ fprintf (stderr, "Sound buffer size %d out of range.\n", currprefs.sound_maxbsiz);
++ currprefs.sound_maxbsiz = 8192;
++ }
++ sndbufsize = currprefs.sound_maxbsiz;
++
++ if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0) {
++ fprintf (stderr, "cannot allocate hardware parameter structure (%s)\n",
++ snd_strerror (err));
++ goto nosound;
++ }
++
++ if ((err = snd_pcm_hw_params_any (alsa_playback_handle, hw_params)) < 0) {
++ fprintf (stderr, "cannot initialize hardware parameter structure (%s)\n",
++ snd_strerror (err));
++ goto nosound;
++ }
++
++ if ((err = snd_pcm_hw_params_set_access (alsa_playback_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
++ fprintf (stderr, "cannot set access type (%s)\n",
++ snd_strerror (err));
++ goto nosound;
++ }
++
++ switch (dspbits) {
++ case 8:
++ alsamode = SND_PCM_FORMAT_U8;
++ break;
++ case 16:
++ alsamode = SND_PCM_FORMAT_S16;
++ break;
++ default:
++ fprintf(stderr, "%d bit samples not supported with uae's alsa\n", dspbits);
++ goto nosound;
++ }
++
++ if ((err = snd_pcm_hw_params_set_format (alsa_playback_handle, hw_params, alsamode)) < 0) {
++ fprintf (stderr, "cannot set sample format (%s)\n",
++ snd_strerror (err));
++ goto nosound;
++ }
++
++ if ((err = snd_pcm_hw_params_set_channels (alsa_playback_handle, hw_params, channels)) < 0) {
++ fprintf (stderr, "cannot set channel count (%s)\n",
++ snd_strerror (err));
++ goto nosound;
++ }
++
++ if ((err = snd_pcm_hw_params_set_rate_near (alsa_playback_handle, hw_params, &rate, 0)) < 0) {
++ fprintf (stderr, "cannot set sample rate (%s)\n",
++ snd_strerror (err));
++ goto nosound;
++ }
++
++ alsa_to_frames_divisor = channels * dspbits / 8;
++ buffer_frames = sndbufsize / alsa_to_frames_divisor;
++ if ((err = snd_pcm_hw_params_set_period_size_near(alsa_playback_handle, hw_params, &buffer_frames, 0)) < 0) {
++ fprintf (stderr, "cannot set period size near (%s)\n", snd_strerror (err));
++ goto nosound;
++ }
++
++ if ((err = snd_pcm_hw_params (alsa_playback_handle, hw_params)) < 0) {
++ fprintf (stderr, "cannot set parameters (%s)\n",
++ snd_strerror (err));
++ goto nosound;
++ }
++
++ snd_pcm_hw_params_free (hw_params);
++
++ if ((err = snd_pcm_prepare (alsa_playback_handle)) < 0) {
++ fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
++ snd_strerror (err));
++ goto nosound;
++ }
++
++ scaled_sample_evtime = (unsigned long) MAXHPOS_PAL * MAXVPOS_PAL * VBLANK_HZ_PAL * CYCLE_UNIT / rate;
++ scaled_sample_evtime_ok = 1;
++
++ if (dspbits == 16) {
++ init_sound_table16 ();
++ sample_handler = currprefs.stereo ? sample16s_handler : sample16_handler;
++ } else {
++ init_sound_table8 ();
++ sample_handler = currprefs.stereo ? sample8s_handler : sample8_handler;
++ }
++ have_sound = 1;
++ sound_available = 1;
++ printf ("Sound driver found and configured for %d bits at %d Hz, buffer is %d bytes\n", dspbits, rate, sndbufsize);
++
++ sndbufpt = sndbuffer;
++ return 1;
++
++ nosound:
++ have_sound = 0;
++ close_sound();
++ return 0;
++}
+diff -uNr uae-0.8.22-org/src/sd-alsa/sound.h uae-0.8.22/src/sd-alsa/sound.h
+--- uae-0.8.22-org/src/sd-alsa/sound.h 1970-01-01 02:00:00.000000000 +0200
++++ uae-0.8.22/src/sd-alsa/sound.h 2004-09-11 20:16:41.470713624 +0300
+@@ -0,0 +1,84 @@
++ /*
++ * UAE - The Un*x Amiga Emulator
++ *
++ * Support for Linux/ALSA sound
++ *
++ * Copyright 1997 Bernd Schmidt
++ * Copyright 2004 Heikki Orsila
++ */
++
++#include <alsa/asoundlib.h>
++
++extern int sound_fd;
++extern uae_u16 sndbuffer[];
++extern uae_u16 *sndbufpt;
++extern int sndbufsize;
++extern snd_pcm_t *alsa_playback_handle;
++extern int alsa_to_frames_divisor;
++
++/* alsa_xrun_recovery() function is copied from ALSA manual. why the hell did
++ they make ALSA this hard?! i bet 95% of ALSA programmers would like a
++ simpler way to do error handling.. let the 5% use tricky APIs.
++*/
++static int alsa_xrun_recovery(snd_pcm_t *handle, int err)
++{
++ if (err == -EPIPE) {
++ /* under-run */
++ err = snd_pcm_prepare(handle);
++ if (err < 0)
++ fprintf(stderr, "uae: no recovery with alsa from underrun, prepare failed: %s\n", snd_strerror(err));
++ return 0;
++ } else if (err == -ESTRPIPE) {
++ while ((err = snd_pcm_resume(handle)) == -EAGAIN) {
++ /* wait until the suspend flag is released */
++ fprintf(stderr, "uae: sleeping for alsa.\n");
++ sleep(1);
++ }
++ if (err < 0) {
++ err = snd_pcm_prepare(handle);
++ if (err < 0)
++ fprintf(stderr, "uae: no recovery with alsa from suspend, prepare failed: %s\n", snd_strerror(err));
++ }
++ return 0;
++ }
++ return err;
++}
++
++static void check_sound_buffers (void)
++{
++ if ((char *)sndbufpt - (char *)sndbuffer >= sndbufsize) {
++ int frames = sndbufsize / alsa_to_frames_divisor;
++ char *buf = (char *) sndbuffer;
++ int ret;
++ while (frames > 0) {
++ ret = snd_pcm_writei(alsa_playback_handle, buf, frames);
++ if (ret < 0) {
++ if (ret == -EAGAIN || ret == -EINTR)
++ continue;
++ if (alsa_xrun_recovery(alsa_playback_handle, ret) < 0) {
++ fprintf(stderr, "uae: write error with alsa: %s\n", snd_strerror(ret));
++ exit(-1);
++ }
++ continue;
++ }
++ frames -= ret;
++ buf += ret * alsa_to_frames_divisor;
++ }
++ sndbufpt = sndbuffer;
++ }
++}
++
++#define PUT_SOUND_BYTE(b) do { *(uae_u8 *)sndbufpt = b; sndbufpt = (uae_u16 *)(((uae_u8 *)sndbufpt) + 1); } while (0)
++#define PUT_SOUND_WORD(b) do { *(uae_u16 *)sndbufpt = b; sndbufpt = (uae_u16 *)(((uae_u8 *)sndbufpt) + 2); } while (0)
++#define PUT_SOUND_BYTE_LEFT(b) PUT_SOUND_BYTE(b)
++#define PUT_SOUND_WORD_LEFT(b) PUT_SOUND_WORD(b)
++#define PUT_SOUND_BYTE_RIGHT(b) PUT_SOUND_BYTE(b)
++#define PUT_SOUND_WORD_RIGHT(b) PUT_SOUND_WORD(b)
++#define SOUND16_BASE_VAL 0
++#define SOUND8_BASE_VAL 128
++
++#define DEFAULT_SOUND_MAXB 8192
++#define DEFAULT_SOUND_MINB 8192
++#define DEFAULT_SOUND_BITS 16
++#define DEFAULT_SOUND_FREQ 44100
++#define HAVE_STEREO_SUPPORT
diff --git a/app-emulation/uae/files/uae-0.8.27_pre20040720-ppc-asm-fix.patch b/app-emulation/uae/files/uae-0.8.27_pre20040720-ppc-asm-fix.patch
deleted file mode 100644
index 64070bac02bf..000000000000
--- a/app-emulation/uae/files/uae-0.8.27_pre20040720-ppc-asm-fix.patch
+++ /dev/null
@@ -1,45 +0,0 @@
---- src/md-ppc-gcc/exectasks.h.orig 2004-07-20 14:33:36.961632176 +0200
-+++ src/md-ppc-gcc/exectasks.h 2004-07-20 14:33:42.011864424 +0200
-@@ -28,10 +28,10 @@
-
- __asm__ __volatile__ ("\
- mtctr %0 \n\
-- mr r1,%1 \n\
-- mr r3,%2 \n\
-- mr r4,%3 \n\
-- mr r5,%4 \n\
-+ mr 1,%1 \n\
-+ mr 3,%2 \n\
-+ mr 4,%3 \n\
-+ mr 5,%4 \n\
- bctr"
- :
- : "r" (pc),
---- src/picasso96.c.orig 2004-07-20 14:34:42.122726184 +0200
-+++ src/picasso96.c 2004-07-20 14:35:03.834425504 +0200
-@@ -126,19 +126,19 @@
- asm volatile (
- "addi %2, %2, -1 \n\
- mtctr %2 \n\
-- lwz r0, 0(%1) \n\
-- 1: stwbrx r0, 0, %0 \n\
-+ lwz 0, 0(%1) \n\
-+ 1: stwbrx 0, 0, %0 \n\
- addi %0, %0, 4 \n\
-- lwzu r0, 4(%1) \n\
-+ lwzu 0, 4(%1) \n\
- bdnz 1b \n\
-- stwbrx r0, 0, %0"
-+ stwbrx 0, 0, %0"
- : "+r" (dst), "+r" (src), "+r" (words)
- : //"r" (dst), "r" (src), "r" (words)
- : "r0", "memory");
- } else {
- __asm volatile (
-- "lwz r0, 0(%1) \n\
-- stwbrx r0, 0, %0"
-+ "lwz 0, 0(%1) \n\
-+ stwbrx 0, 0, %0"
- : "+r" (dst), "+r" (src)
- : //"r" (dst), "r" (src)
- : "r0", "memory");