A bunch of fixes as suggested by upstream developer Richard Drummond!
authorPeter Volkov <pva@gentoo.org>
Wed, 14 Jun 2006 17:08:23 +0000 (17:08 +0000)
committerPeter Volkov <pva@gentoo.org>
Wed, 14 Jun 2006 17:08:23 +0000 (17:08 +0000)
Package-Manager: portage-2.0.54-r2

app-emulation/e-uae/ChangeLog
app-emulation/e-uae/Manifest
app-emulation/e-uae/e-uae-0.8.28-r1.ebuild [new file with mode: 0644]
app-emulation/e-uae/files/digest-e-uae-0.8.28-r1 [new file with mode: 0644]
app-emulation/e-uae/files/e-uae-0.8.28-fix-JIT-cache-on-NX-cpu.patch [new file with mode: 0644]
app-emulation/e-uae/files/e-uae-0.8.28-fix-atoscroll-screen-support.patch [new file with mode: 0644]
app-emulation/e-uae/files/e-uae-0.8.28-fix-joystick-conflicts.patch [new file with mode: 0644]

index 60d09af76b9a160866173c2ec9e5158e63ba9da6..49ba7815f19c93ab222183f513366a29aeb94945 100644 (file)
@@ -1,6 +1,14 @@
 # ChangeLog for app-emulation/e-uae
 # Copyright 1999-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-emulation/e-uae/ChangeLog,v 1.9 2006/06/14 14:17:05 pva Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-emulation/e-uae/ChangeLog,v 1.10 2006/06/14 17:08:23 pva Exp $
+
+*e-uae-0.8.28-r1 (14 Jun 2006)
+
+  14 Jun 2006; Peter Volkov <pva@gentoo.org>
+  +files/e-uae-0.8.28-fix-JIT-cache-on-NX-cpu.patch,
+  +files/e-uae-0.8.28-fix-atoscroll-screen-support.patch,
+  +files/e-uae-0.8.28-fix-joystick-conflicts.patch, +e-uae-0.8.28-r1.ebuild:
+  A bunch of fixes suggested by upstream developer Richard Drummond!
 
   14 Jun 2006; Peter Volkov <pva@gentoo.org>
   +files/e-uae-0.8.28-shm-crash.patch, e-uae-0.8.28.ebuild:
index 96b6ed29f2ee2503ec91066d513417a84590127e..ed4e27eba84a6af87bd257caed398f580eda3b40 100644 (file)
@@ -1,7 +1,12 @@
-MD5 9464ea4152adbbdd977cf85960bb365d ChangeLog 1463
+MD5 1ba5d65b48cb6fa4c5d849436e0c49ab ChangeLog 1799
 MD5 624de9bf2b723d7882a4a8e2485f71ef e-uae-0.8.27.ebuild 1635
+MD5 d9c2dd5174bb239ea1bf58e729b8c0db e-uae-0.8.28-r1.ebuild 3595
 MD5 1a85d3c4ef89e6d13eacb5f5a9f0b15d e-uae-0.8.28.ebuild 3431
 MD5 851c3d9c0e2846a1241c99e5ff19bf01 files/digest-e-uae-0.8.27 66
 MD5 856093362e575805efb4ef8117d8f98c files/digest-e-uae-0.8.28 66
+MD5 856093362e575805efb4ef8117d8f98c files/digest-e-uae-0.8.28-r1 66
+MD5 781bdea3cdebd0d2b11de41508613ab5 files/e-uae-0.8.28-fix-JIT-cache-on-NX-cpu.patch 660
+MD5 9f2bf139b66d3a4c3e6c8405c428ae60 files/e-uae-0.8.28-fix-atoscroll-screen-support.patch 3178
+MD5 66a07fc56b355aa2bb8ce779b66e17d7 files/e-uae-0.8.28-fix-joystick-conflicts.patch 907
 MD5 774c0436b6e91dd8f18b0df23f10c75b files/e-uae-0.8.28-shm-crash.patch 582
 MD5 107be5d8d010a6b3dac228473128bdf4 metadata.xml 468
diff --git a/app-emulation/e-uae/e-uae-0.8.28-r1.ebuild b/app-emulation/e-uae/e-uae-0.8.28-r1.ebuild
new file mode 100644 (file)
index 0000000..1ee684c
--- /dev/null
@@ -0,0 +1,124 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-emulation/e-uae/e-uae-0.8.28-r1.ebuild,v 1.1 2006/06/14 17:08:23 pva Exp $
+
+inherit eutils flag-o-matic
+
+DESCRIPTION="The Eggplant Umiquious Amiga Emulator"
+HOMEPAGE="http://www.rcdrummond.net/uae/"
+SRC_URI="http://www.rcdrummond.net/uae/${P}/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86"
+IUSE="X dga ncurses sdl gtk alsa oss sdl-sound capslib"
+
+# Note: opposed to ./configure --help zlib support required! Check
+# src/Makefile.am that includes zfile.c unconditionaly.
+RDEPEND="X? ( || ( ( x11-libs/libXt
+                                        x11-libs/libxkbfile
+                                        x11-libs/libXext
+                                        dga? ( x11-libs/libXxf86dga
+                                                   x11-libs/libXxf86vm )
+                                  )
+                                  virtual/x11
+                               )
+                       )
+               !X? ( sdl? ( media-libs/libsdl )
+                         !sdl? ( sys-libs/ncurses ) )
+               alsa? ( media-libs/alsa-lib )
+               !alsa? ( sdl-sound? ( media-libs/sdl-sound ) )
+               gtk? ( >=x11-libs/gtk+-2.0 )
+               capslib? ( games-emulation/caps )
+               sys-libs/zlib
+               app-cdr/cdrtools"
+
+DEPEND="$RDEPEND
+               X? ( dga? ( x11-proto/xf86vidmodeproto
+                                       x11-proto/xf86dgaproto ) )"
+
+pkg_setup() {
+       # Sound setup.
+       if use alsa; then
+               einfo "Choosing alsa as sound target to use."
+               myconf="--with-alsa --without-sdl-sound"
+       elif use sdl-sound ; then
+               if ! use sdl ; then
+                       ewarn "sdl-sound is not enabled because sdl is switched off. Leaving"
+                       ewarn "sound on oss autodetection."
+                       myconf="--without-alsa --without-sdl-sound"
+                       ebeep
+               else
+                       einfo "Choosing sdl-sound as sound target to use."
+                       myconf="--without-alsa --with-sdl-sound"
+               fi
+       elif use oss ; then
+               einfo "Choosing oss as sound target to use."
+               ewarn "oss will be autodetected. See output of configure."
+               myconf="--without-alsa --without-sdl-sound"
+       else
+               ewarn "There is no alsa, sdl-sound or oss in USE. Sound target disabled!"
+               myconf="--disable-audio"
+       fi
+
+       # VIDEO setup. X is autodetected (there is no --with-X option).
+       if use X ; then
+               myconf="$myconf --without-curses --without-sdl-gfx"
+               use dga && myconf="$myconf --enable-dga --enable-vidmode"
+       elif use sdl ; then
+               myconf="$myconf --with-sdl --with-sdl-gfx --without-curses"
+       elif use ncurses; then
+               myconf="$myconf --with-curses --without-sdl-gfx"
+       else
+               ewarn "There is no X or sdl or ncurses in USE!"
+               ewarn "Following upstream falling back on ncurses."
+               myconf="$myconf --with-curses --without-sdl-gfx"
+               ebeep
+       fi
+
+       use gtk && myconf="$myconf --enable-ui --enable-threads"
+       use gtk || myconf="$myconf --disable-ui"
+
+       use capslib && myconf="$myconf --with-caps"
+
+       myconf="$myconf --with-zlib"
+
+       # And explicitly state defaults:
+       myconf="$myconf --enable-aga"
+       myconf="$myconf --enable-autoconfig --enable-scsi-device --enable-cdtv --enable-cd32"
+       myconf="$myconf --enable-bsdsock"
+}
+
+src_unpack() {
+       unpack ${A}
+       cd ${S}
+
+       epatch ${FILESDIR}/${P}-shm-crash.patch
+       epatch ${FILESDIR}/${P}-fix-joystick-conflicts.patch
+       epatch ${FILESDIR}/${P}-fix-atoscroll-screen-support.patch
+       epatch ${FILESDIR}/${P}-fix-JIT-cache-on-NX-cpu.patch
+}
+
+src_compile() {
+       strip-flags
+
+       econf ${myconf} \
+               --with-libscg-includedir=/usr/include/scsilib \
+               || die "./configure failed"
+
+       emake -j1 || die "emake failed"
+}
+
+src_install() {
+       make DESTDIR="${D}" install || die "make install failed"
+
+       insinto /usr/share/uae/amiga-tools
+       doins amiga/{*hack,trans*,uae*,*.library}
+
+       # Rename it to e-uae
+       mv ${D}/usr/bin/uae ${D}/usr/bin/e-uae
+       mv ${D}/usr/bin/readdisk ${D}/usr/bin/e-readdisk
+       mv ${D}/usr/share/uae ${D}/usr/share/${PN}
+
+       dodoc docs/* README ChangeLog CHANGES
+}
diff --git a/app-emulation/e-uae/files/digest-e-uae-0.8.28-r1 b/app-emulation/e-uae/files/digest-e-uae-0.8.28-r1
new file mode 100644 (file)
index 0000000..f84b6f6
--- /dev/null
@@ -0,0 +1 @@
+MD5 9fc186f9256d04f940304044e29175ef e-uae-0.8.28.tar.bz2 1148790
diff --git a/app-emulation/e-uae/files/e-uae-0.8.28-fix-JIT-cache-on-NX-cpu.patch b/app-emulation/e-uae/files/e-uae-0.8.28-fix-JIT-cache-on-NX-cpu.patch
new file mode 100644 (file)
index 0000000..43a14b2
--- /dev/null
@@ -0,0 +1,24 @@
+diff -Naur e-uae-0.8.28.orig/src/od-generic/memory.c e-uae-0.8.28/src/od-generic/memory.c
+--- e-uae-0.8.28.orig/src/od-generic/memory.c  2005-01-07 05:25:04.000000000 +0300
++++ e-uae-0.8.28/src/od-generic/memory.c       2006-06-14 20:55:33.000000000 +0400
+@@ -14,6 +14,9 @@
+ #ifdef JIT
+ #include <sys/mman.h>
++#include <malloc.h>
++#include <stdlib.h>
++#include <unistd.h>
+ /*
+  * Allocate executable memory for JIT cache
+@@ -22,7 +25,9 @@
+ {
+    void *cache;
+-   if ((cache = malloc (size)))
++   size = size < getpagesize() ? getpagesize() : size;
++
++   if ((cache = valloc (size)))
+       mprotect (cache, size, PROT_READ|PROT_WRITE|PROT_EXEC);
+    return cache;
diff --git a/app-emulation/e-uae/files/e-uae-0.8.28-fix-atoscroll-screen-support.patch b/app-emulation/e-uae/files/e-uae-0.8.28-fix-atoscroll-screen-support.patch
new file mode 100644 (file)
index 0000000..50fec9a
--- /dev/null
@@ -0,0 +1,85 @@
+diff -Naur e-uae-0.8.28.orig/src/picasso96.c e-uae-0.8.28/src/picasso96.c
+--- e-uae-0.8.28.orig/src/picasso96.c  2005-09-01 22:17:22.000000000 +0400
++++ e-uae-0.8.28/src/picasso96.c       2006-06-14 20:53:06.000000000 +0400
+@@ -5,7 +5,7 @@
+  *
+  * Copyright 1997-2001 Brian King <Brian_King@Mitel.com, Brian_King@Cloanto.com>
+  * Copyright 2000-2001 Bernd Roesch
+- * Copyright 2003-2004 Richard Drummond
++ * Copyright 2003-2005 Richard Drummond
+  *
+  * Theory of operation:
+  * On the Amiga side, a Picasso card consists mainly of a memory area that
+@@ -27,7 +27,6 @@
+  * accesses which may be rather slow.
+  *
+  * TODO:
+- * - add panning capability
+  * - we want to add a manual switch to override SetSwitch for hardware banging
+  *   programs started from a Picasso workbench.
+  */
+@@ -615,7 +614,7 @@
+      * coordinates for the source rectangle in the framebuffer - not the source
+      * coordinates.
+      */
+-    srcp = ri->Memory + dstx * Bpp + dsty * ri->BytesPerRow;
++    srcp = ri->Memory + (dstx + xoff) * Bpp + (dsty + yoff) * ri->BytesPerRow;
+     dstp += dsty * picasso_vidinfo.rowbytes + dstx * picasso_vidinfo.pixbytes;
+@@ -625,7 +624,6 @@
+              width,height, picasso_vidinfo.pixbytes));
+     P96TRACE (("P96: gfxmem is at 0x%x\n", gfxmemory));
+-    DX_Invalidate (dsty, dsty + height - 1);
+@@ -771,11 +769,11 @@
+ static void flush_currline (void)
+ {
+-   unsigned int line_no = (unsigned int)(currline_y - picasso96_state.YOffset);
++    int line_no = currline_y - picasso96_state.YOffset;
+-   /* We only need to flush this line to the screen if the line
+-    * is acutally visible on screen */
+-   if (/*line_no >= 0 && */line_no < picasso96_state.Height) {
++    /* We only need to flush this line to the screen if the line
++     * is acutally visible on screen */
++    if (line_no >= 0 && line_no < picasso96_state.Height) {
+       /* Tell the graphics system that this line needs to be
+        * redrawn */
+@@ -795,10 +793,11 @@
+               srcp       += first_byte;
+               first_byte = 0;
+           }
+-          if (first_byte + byte_count > picasso96_state.Width * fb_bpp)
++          if ((first_byte + byte_count) > (picasso96_state.Width * fb_bpp))
+               byte_count = picasso96_state.Width * fb_bpp - first_byte;
+-          write_currline (srcp, line_no, first_byte, byte_count);
++          if (byte_count > 0)
++              write_currline (srcp, line_no, first_byte, byte_count);
+       }
+     }
+     currline_start = 0xFFFFFFFF;
+@@ -1548,6 +1547,8 @@
+     picasso96_state.YOffset   = (uae_s16) m68k_dreg (&regs, 2);
+     picasso96_state.RGBFormat =           m68k_dreg (&regs, 7);
++    wgfx_flushline();
++
+     /* Get our BoardInfo ptr's BitMapExtra ptr */
+     bmeptr = get_long (bi + PSSO_BoardInfo_BitMapExtra);
+@@ -2830,7 +2831,7 @@
+           /* If this line is outside of the p96 screen in the framebuffer
+            * we ignore it */
+-          if (line_no < picasso96_state.VirtualHeight) {
++          if ((line_no >= picasso96_state.YOffset) && (line_no < picasso96_state.YOffset + picasso96_state.Height)) {
+               currline_start = picasso96_state.Address + line_no * picasso96_state.BytesPerRow;
+               currline_end   = currline_start + picasso96_state.BytesPerRow;
+               currline_min   = addr;
diff --git a/app-emulation/e-uae/files/e-uae-0.8.28-fix-joystick-conflicts.patch b/app-emulation/e-uae/files/e-uae-0.8.28-fix-joystick-conflicts.patch
new file mode 100644 (file)
index 0000000..f9aa388
--- /dev/null
@@ -0,0 +1,25 @@
+diff -Naur e-uae-0.8.28.orig/src/jd-linuxold/joystick.c e-uae-0.8.28/src/jd-linuxold/joystick.c
+--- e-uae-0.8.28.orig/src/jd-linuxold/joystick.c       2005-08-21 19:02:09.000000000 +0400
++++ e-uae-0.8.28/src/jd-linuxold/joystick.c    2006-06-14 20:54:30.000000000 +0400
+@@ -8,7 +8,7 @@
+   *
+   * Copyright 1997 Bernd Schmidt
+   * Copyright 1998 Krister Walfridsson
+-  * Copyright 2003-2005 Richard Drummond
++  * Copyright 2003-2006 Richard Drummond
+   * Copyright 2004 Nick Seow (Alternative Linux joystick device path)
+   */
+@@ -75,8 +75,10 @@
+     int fd = nr == 0 ? js0 : js1;
+     struct joy_range *r = nr == 0 ? &range0 : &range1;
+-    if (nr >= nr_joysticks)
+-      return;
++    if (currprefs.input_selected_setting == 0) {
++      if (jsem_isjoy (0, &currprefs) != (int)nr && jsem_isjoy (1, &currprefs) != (int)nr)
++          return;
++    }
+     len = read(fd, &buffer, sizeof(buffer));
+     if (len != sizeof(buffer))