diff options
author | B. Watson <yalhcru@gmail.com> | 2014-01-30 17:02:44 +0700 |
---|---|---|
committer | Robby Workman <rworkman@slackbuilds.org> | 2014-02-01 00:40:30 -0600 |
commit | cc3ee0bbc2a4d65982aed9d1614112bd11b0e383 (patch) | |
tree | 889b2d0fe2d772caf5e125937041d6581976410a /games | |
parent | 784b68cd9fd28c0f0e40c9c519ebffda222f8ad2 (diff) |
games/yae: Added (Yet another Apple Emulator).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'games')
-rw-r--r-- | games/yae/README | 9 | ||||
-rw-r--r-- | games/yae/doinst.sh | 3 | ||||
-rw-r--r-- | games/yae/patches/64.diff | 13 | ||||
-rw-r--r-- | games/yae/patches/confile_apple2.diff | 11 | ||||
-rw-r--r-- | games/yae/patches/defaultmasterdisk.diff | 11 | ||||
-rw-r--r-- | games/yae/patches/defaultromlocation.diff | 35 | ||||
-rw-r--r-- | games/yae/patches/disk_selection.diff | 74 | ||||
-rw-r--r-- | games/yae/patches/fix2option.diff | 11 | ||||
-rw-r--r-- | games/yae/slack-desc | 19 | ||||
-rw-r--r-- | games/yae/yae.1 | 220 | ||||
-rw-r--r-- | games/yae/yae.SlackBuild | 149 | ||||
-rw-r--r-- | games/yae/yae.desktop | 9 | ||||
-rw-r--r-- | games/yae/yae.info | 12 | ||||
-rw-r--r-- | games/yae/yae.png | bin | 0 -> 17291 bytes | |||
-rw-r--r-- | games/yae/yae.pod | 122 | ||||
-rw-r--r-- | games/yae/yaerc.sample | 69 |
16 files changed, 767 insertions, 0 deletions
diff --git a/games/yae/README b/games/yae/README new file mode 100644 index 000000000000..4ae1908a53f3 --- /dev/null +++ b/games/yae/README @@ -0,0 +1,9 @@ +yae (Yet another Apple Emulator) + +Emulates the 8-bit Apple II, II+, and //e computers. + +This is an older emulator without a lot of fancy features. + +The package includes the ROM images and an Apple DOS 3.3 disk image. + +Audio is supported, but only if OSS modules are loaded. diff --git a/games/yae/doinst.sh b/games/yae/doinst.sh new file mode 100644 index 000000000000..5fb28930db0b --- /dev/null +++ b/games/yae/doinst.sh @@ -0,0 +1,3 @@ +if [ -x /usr/bin/update-desktop-database ]; then + /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1 +fi diff --git a/games/yae/patches/64.diff b/games/yae/patches/64.diff new file mode 100644 index 000000000000..ace2b9d8bf99 --- /dev/null +++ b/games/yae/patches/64.diff @@ -0,0 +1,13 @@ +diff -Naur yae-0.7/screen.c yae-0.7.patched/screen.c +--- yae-0.7/screen.c 2007-04-03 17:51:44.000000000 -0400 ++++ yae-0.7.patched/screen.c 2013-08-31 02:13:07.000000000 -0400 +@@ -40,6 +40,9 @@ + XImage *ScreenXImage; + XShmSegmentInfo shminfo; + ++XImage *createShmImage( DisplayContext *dc, int width, int height, ++ XShmSegmentInfo *info ); ++ + /* + * frame rate control + */ diff --git a/games/yae/patches/confile_apple2.diff b/games/yae/patches/confile_apple2.diff new file mode 100644 index 000000000000..597623be9cfb --- /dev/null +++ b/games/yae/patches/confile_apple2.diff @@ -0,0 +1,11 @@ +diff -Naur yae-0.7/confile.c yae-0.7.patched/confile.c +--- yae-0.7/confile.c 2007-04-03 17:50:57.000000000 -0400 ++++ yae-0.7.patched/confile.c 2013-08-29 14:17:06.000000000 -0400 +@@ -216,6 +216,7 @@ + if (!strcmp(v, "MachineType")) { + if (!strcmp(h,"IIe")) { MachineType=APPLE_IIE; } + else if (!strcmp(h,"II+")) { MachineType=APPLE_II_PLUS; } ++ else if (!strcmp(h,"II")) { MachineType=APPLE_II; } + else fprintf(stderr,"Unknown MachineType %s in %s\n",h,cfile); + continue; + } diff --git a/games/yae/patches/defaultmasterdisk.diff b/games/yae/patches/defaultmasterdisk.diff new file mode 100644 index 000000000000..f45b1118c334 --- /dev/null +++ b/games/yae/patches/defaultmasterdisk.diff @@ -0,0 +1,11 @@ +diff -Naur yae-0.7/main.c yae-0.7.patched/main.c +--- yae-0.7/main.c 2007-04-03 17:48:36.000000000 -0400 ++++ yae-0.7.patched/main.c 2013-08-28 19:20:59.000000000 -0400 +@@ -95,6 +95,7 @@ + processOptions(argc,argv); + + /* mount disks */ ++ if (optind == argc) disk_name[6][0]="/usr/share/yae/Master.dsk"; + if (optind<argc) disk_name[6][0]=argv[optind++]; + if (optind<argc) disk_name[6][1]=argv[optind++]; + if (optind<argc) disk_name[5][0]=argv[optind++]; diff --git a/games/yae/patches/defaultromlocation.diff b/games/yae/patches/defaultromlocation.diff new file mode 100644 index 000000000000..ee97a9bbb9e0 --- /dev/null +++ b/games/yae/patches/defaultromlocation.diff @@ -0,0 +1,35 @@ +diff -Naur yae-0.7/disk2.c yae-0.7.patched/disk2.c +--- yae-0.7/disk2.c 2007-04-03 17:49:22.000000000 -0400 ++++ yae-0.7.patched/disk2.c 2013-08-28 19:16:54.000000000 -0400 +@@ -105,8 +105,9 @@ + FILE *f; + + f = fopen( DiskROM, "rb" ); ++ if(!f) f = fopen("/usr/share/yae/DISK.ROM", "rb"); + if ( !f ) { +- fprintf( stderr, "Cannot read disk II boot rom %s\n", DiskROM ); ++ fprintf( stderr, "Cannot read disk II boot rom %s or /usr/share/yae/DISK.ROM\n", DiskROM ); + exit(1); + } + fread( boot_ROM, 1, 256, f ); +diff -Naur yae-0.7/memory.c yae-0.7.patched/memory.c +--- yae-0.7/memory.c 2007-04-03 17:42:23.000000000 -0400 ++++ yae-0.7.patched/memory.c 2013-08-28 19:18:13.000000000 -0400 +@@ -88,10 +88,13 @@ + MainMemoryROM[i] = amp; + } + +- if (MachineType < APPLE_IIE) +- loadROMFile( Apple2ROM ); +- else +- loadROMFile( Apple2eROM ); ++ if (MachineType < APPLE_IIE) { ++ if(loadROMFile( Apple2ROM ) != 0) ++ loadROMFile("/usr/share/yae/APPLE2.ROM"); ++ } else { ++ if(loadROMFile( Apple2eROM ) != 0) ++ loadROMFile("/usr/share/yae/APPLE2E.ROM"); ++ } + + for( i = 0; i < 8; i++ ) { + expansion_slot_read[i] = NULL; diff --git a/games/yae/patches/disk_selection.diff b/games/yae/patches/disk_selection.diff new file mode 100644 index 000000000000..ae55d6c3400d --- /dev/null +++ b/games/yae/patches/disk_selection.diff @@ -0,0 +1,74 @@ +diff -Naur yae-0.7/x_window.c yae-0.7.patched/x_window.c +--- yae-0.7/x_window.c 2007-04-03 17:47:59.000000000 -0400 ++++ yae-0.7.patched/x_window.c 2013-08-30 13:36:15.000000000 -0400 +@@ -29,6 +29,8 @@ + #include <stdio.h> + #include <ctype.h> + #include <string.h> ++#include <sys/types.h> ++#include <sys/wait.h> + #include <X11/Xlib.h> + #include <X11/Xutil.h> + #include <X11/keysym.h> +@@ -238,13 +240,27 @@ + XCloseDisplay( dc->display ); + } + ++static int kdialog_select_file(char *buffer) { ++ void *i; ++ int s; ++ FILE *kdialog = popen( ++ "kdialog --title 'YAE - Select Disk Image' --getopenfilename . '*.dsk'", "r"); ++ if(!kdialog) return -1; /* can't fork() or malloc() probably */ ++ i = fgets(buffer, 4096, kdialog); ++ s = WEXITSTATUS(pclose(kdialog)); ++ if(s == 127) return -2; /* shell returns this if kdialog not found */ ++ return i != NULL; /* returns 0 if user hit cancel, 1 if filename OK */ ++} ++ + void X_check_and_handle_event( void *arg ) + { + DisplayContext *dc; + XEvent event; +- int count; ++ int count, kdresult; + BYTE key, Apple_Key(); +- char buffer[256]; ++ char buffer[4096] = "\0", *p; ++ ++ static int diskname_freeable = 0; + + dc = (DisplayContext*)arg; + +@@ -266,15 +282,24 @@ + /* Should ask which drive, and should + * free the existing string if possible - wkt + */ +- puts( "Mount new disk\n" ); +- buffer[0] = '\0'; +- fgets( buffer, 256, stdin ); +- if (buffer[0]) +- buffer[strlen( buffer ) - 1 ] = '\0'; ++ kdresult = kdialog_select_file(buffer); ++ if(kdresult == 0) { ++ break; /* don't do anything if cancelled */ ++ } else if(kdresult < 0) { ++ /* only use stdin if kdialog not found */ ++ puts( "Mount new disk\n" ); ++ buffer[0] = '\0'; ++ fgets( buffer, 256, stdin ); ++ } ++ /* remove trailing \n */ ++ for(p = buffer; *p; p++) ++ if(*p == '\n') *p = '\0'; ++ if(buffer[0] == '\0') break; /* don't use empty filename */ + /* ctkwan: free previosly allocated string */ +- if( disk_name[6][0]!=NULL) ++ if( diskname_freeable && disk_name[6][0]!=NULL) + free( disk_name[6][0] ); +- disk_name[6][0]= strdup(buffer); ++ disk_name[6][0]= strdup(buffer); ++ diskname_freeable = 1; + mount_disk(6,0); + } + break; diff --git a/games/yae/patches/fix2option.diff b/games/yae/patches/fix2option.diff new file mode 100644 index 000000000000..d1038f0be6b8 --- /dev/null +++ b/games/yae/patches/fix2option.diff @@ -0,0 +1,11 @@ +diff -Naur yae-0.7/main.c yae-0.7.patched/main.c +--- yae-0.7/main.c 2007-04-03 17:48:36.000000000 -0400 ++++ yae-0.7.patched/main.c 2013-08-28 14:35:12.000000000 -0400 +@@ -70,6 +70,7 @@ + while((c=getopt(argc,argv,Options))!= EOF) { + switch(c) { + case '2': ++ MachineType=APPLE_II; + break; + case 'e': + MachineType=APPLE_IIE; diff --git a/games/yae/slack-desc b/games/yae/slack-desc new file mode 100644 index 000000000000..8c15fb1fdf88 --- /dev/null +++ b/games/yae/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +yae: yae (Yet another Apple Emulator) +yae: +yae: Emulates the 8-bit Apple II, II+, and //e computers. +yae: +yae: This is an older emulator without a lot of fancy features. +yae: +yae: The package includes the ROM images and an Apple DOS 3.3 disk image. +yae: +yae: +yae: +yae: diff --git a/games/yae/yae.1 b/games/yae/yae.1 new file mode 100644 index 000000000000..41aedfacb232 --- /dev/null +++ b/games/yae/yae.1 @@ -0,0 +1,220 @@ +.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.20) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "YAE 1" +.TH YAE 1 "2013-08-29" "0.7" "yae" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +yae \- Yet another Apple Emulator +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fByae\fR [\-2|\-e|\-+] [disk\-image] ... +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fByae\fR emulates the Apple \s-1II\s0, \s-1II+\s0, and //e 8\-bit computers from Apple, +Inc. Standard .dsk images are supported. If \fByae\fR is run without any +disk image arguments, \fI/usr/share/yae/Master.dsk\fR will be booted. +.PP +\&\s-1ROM\s0 image files are required; see \fB\s-1FILES\s0\fR for details. +.PP +\&\s-1OSS\s0 audio is supported, using the /dev/audio device. For Linux systems +using \s-1ALSA\s0, \s-1OSS\s0 audio is provided by the snd_pcm_oss and snd_mixer_oss +kernel modules. If /dev/audio can't be opened, the emulator will run +with sound disabled. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\-2" 4 +.IX Item "-2" +Emulate the Apple \s-1II\s0. +.Sp +Note that the emulator uses the same \s-1ROM\s0 image for \s-1II\s0 and \s-1II+\s0, so the +emulated \s-1II\s0 will have Applesoft and autostart (which the original \s-1II\s0 +didn't ship with). +.IP "\-+" 4 +Emulate the Apple \s-1II+\s0. +.IP "\-e" 4 +.IX Item "-e" +Emulate the Apple //e (the default). +.SH "KEYSTROKES" +.IX Header "KEYSTROKES" +.IP "Backspace" 4 +.IX Item "Backspace" +Alias for the left-arrow key. +.IP "Control+Delete" 4 +.IX Item "Control+Delete" +Apple Reset key. +.IP "Left Alt" 4 +.IX Item "Left Alt" +The left (open) apple key on the //e keyboard. +.IP "Right Alt" 4 +.IX Item "Right Alt" +The right (closed) apple key on the //e keyboard. +.IP "F1" 4 +.IX Item "F1" +Change disks in the first drive (slot 6, drive 0). This will either +read a filename on standard input (if kdialog can't be run), or display +a kdialog file-selector. Either way, the emulator stops and its window +becomes unresponsive until a file has been chosen. +.IP "F2" 4 +.IX Item "F2" +Exit the emulator immediately. No confirmation dialog, so +be careful. +.PP +All other keystrokes are translated to their equivalent Apple \s-1II\s0 +keystrokes, or ignored if there is no equivalent key on the Apple +keyboard. +.SH "FILES" +.IX Header "FILES" +.IP "\fB.yaerc\fR, \fB~/.yaerc\fR" 4 +.IX Item ".yaerc, ~/.yaerc" +Config file. Searched for first in the current directory, +then in user's home directory. For config file syntax, see +\&\fI/usr/share/yae/yaerc.sample\fR. +.IP "\s-1ROM\s0 files" 4 +.IX Item "ROM files" +For \s-1II\s0 and \s-1II+\s0 emulation, the required \s-1ROM\s0 image is called \fB\s-1APPLE2\s0.ROM\fR. +For the //e, the image is \fB\s-1APPLE2E\s0.ROM\fR. For all modes, \fB\s-1DISK\s0.ROM\fR is +required. +.Sp +\&\s-1ROM\s0 file locations can be set in the config file. By default, they're +searched for in the current directory. If the ROMs can't be found in +the configured location or the current directory, they will searched +for in \fI/usr/share/yae\fR. +.Sp +If the required \s-1ROM\s0 files can't be found, the emulator will refuse +to start. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBkegs\fR(1), \fBdos33fsutils\fR(1) +.SH "AUTHORS" +.IX Header "AUTHORS" +\&\fByae\fR was originally written by Doug Kwan, and includes enhancements by +Warren Toomey. The version documented here also has some small bugfixes +and enhancements by B. Watson. +.PP +This man page was written by B. Watson. diff --git a/games/yae/yae.SlackBuild b/games/yae/yae.SlackBuild new file mode 100644 index 000000000000..60f492aa1b2e --- /dev/null +++ b/games/yae/yae.SlackBuild @@ -0,0 +1,149 @@ +#!/bin/sh + +# Slackware build script for yae + +# Written by B. Watson (yalhcru@gmail.com) + +# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. + +PRGNAM=yae +VERSION=${VERSION:-0.7} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i486 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +fi + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$VERSION +tar xvf $CWD/$PRGNAM-$VERSION.tgz +cd $PRGNAM-$VERSION +chown -R root:root . + +# Diverging from standard boilerplate here due to annoying permissions in +# upstream tarball. SBo admins, please don't "fix" this, it's for a reason. +find . \ + -type d \ + -exec chmod 755 {} \; -o \ + -type f \ + -exec chmod 644 {} \; + +# This is old code with lots of bugs, sorry about all the patches. + +# Fix the -2 option so it actually starts apple II emulation. +patch -p1 < $CWD/patches/fix2option.diff + +# Allow 'MachineType II' in .yaerc +patch -p1 < $CWD/patches/confile_apple2.diff + +# Use kdialog for disk selection. +# Also stop trying to free() the disk name passed in argv. +patch -p1 < $CWD/patches/disk_selection.diff + +# If no disk images given on command line, use Master.dsk. This is because +# the emulator has a bug where it hangs if disk boot fails. Actually it +# isn't a bug: it's taking forever to time out, the same way a real Apple +# would, if you booted from disk with no disk in the drive. +patch -p1 < $CWD/patches/defaultmasterdisk.diff + +# If ROMs not found either in current dir or .yaerc configured location, +# fall back to /usr/share/yae/*.ROM. This allows us to include ROMs in +# this package, which Just Work instead of requiring user configuration. +patch -p1 < $CWD/patches/defaultromlocation.diff + +# Try to make 64-bit work. This seems OK, the scanline code seems to +# assume sizeof(long)==4, which is wrong on x86_64. Using int (which +# is still 4 bytes) fixes the display issues. There still might be +# other less-obvious problems with 64-bit, please let me know if +# you find any. +if [ "$LIBDIRSUFFIX" = "64" ]; then + patch -p1 < $CWD/patches/64.diff + sed -i 's,unsigned *long,unsigned int,g' scanline*.c +fi + +# distributed configure script is too darn old +rm -f config.sub config.guess configure +cp /usr/share/libtool/config/config.sub . +autoreconf -if + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --docdir=/usr/doc/$PRGNAM-$VERSION \ + --build=$ARCH-slackware-linux + +make + +# no install target +mkdir -p $PKG/usr/bin +install -s -m0755 apple2 $PKG/usr/bin/$PRGNAM + +# man page written for this build. If you want to modify it, use yae.pod, +# don't edit yae.1 directly. +mkdir -p $PKG/usr/man/man1 +gzip -9c < $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz + +# ROMs. Master.dsk is the same as what's distributed with linapple. +# The others are renamed copies of stuff from asimov. Probably not legal +# to distribute for copyright reasons, but ftp.asimov.net has had this stuff +# available for maybe 15 years and nobody's complained yet. +tar xvf $CWD/$PRGNAM-roms.tar.gz +mkdir -p $PKG/usr/share/$PRGNAM +install -m0644 -oroot -groot \ + $PRGNAM-roms/*.ROM $PRGNAM-roms/*.dsk \ + $PKG/usr/share/$PRGNAM + +# Sample config file, created for this build (upstream's docs say there's +# one included with the src, but there isn't). +cat $CWD/${PRGNAM}rc.sample > $PKG/usr/share/$PRGNAM/${PRGNAM}rc.sample + +# .desktop created for this build +mkdir -p $PKG/usr/share/applications +cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop + +# icon created for this build, based on +# http://www.callapple.org/soft/images/icons/apple.gif +mkdir -p $PKG/usr/share/pixmaps +cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cat $PRGNAM-roms/README > $PKG/usr/doc/$PRGNAM-$VERSION/README.roms +cp -a README* Readme* ChangeLog *.txt $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +cat $CWD/doinst.sh > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/games/yae/yae.desktop b/games/yae/yae.desktop new file mode 100644 index 000000000000..e2b04ee7fee3 --- /dev/null +++ b/games/yae/yae.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=YAE +Comment=Apple II Emulator +StartupNotify=true +Exec=yae +Icon=yae +Terminal=false +Type=Application +Categories=System; diff --git a/games/yae/yae.info b/games/yae/yae.info new file mode 100644 index 000000000000..33e30de0a643 --- /dev/null +++ b/games/yae/yae.info @@ -0,0 +1,12 @@ +PRGNAM="yae" +VERSION="0.7" +HOMEPAGE="http://sourceforge.net/projects/yae-gpl/" +DOWNLOAD="http://downloads.sourceforge.net/project/yae-gpl/yae-gpl/yae-0.7/yae-0.7.tgz \ + http://urchlay.naptime.net/~urchlay/src/yae-roms.tar.gz" +MD5SUM="4c8b1d40f1ad7dc451f3679466d9e6cf \ + e816c4e83cf302030dc2da8d84ab745b" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="" +MAINTAINER="B. Watson" +EMAIL="yalhcru@gmail.com" diff --git a/games/yae/yae.png b/games/yae/yae.png Binary files differnew file mode 100644 index 000000000000..0df8b4536984 --- /dev/null +++ b/games/yae/yae.png diff --git a/games/yae/yae.pod b/games/yae/yae.pod new file mode 100644 index 000000000000..dbb72b976e30 --- /dev/null +++ b/games/yae/yae.pod @@ -0,0 +1,122 @@ +# pod2man -r0.7 -s1 --stderr -cyae yae.pod > yae.1 + +=pod + +=head1 NAME + +B<yae> - Yet another Apple Emulator + +=head1 SYNOPSIS + +B<yae> [-2|-e|-+] [disk-image] ... + +=head1 DESCRIPTION + +B<yae> emulates the Apple II, II+, and //e 8-bit computers from Apple, +Inc. Standard .dsk images are supported. If B<yae> is run without any +disk image arguments, I</usr/share/yae/Master.dsk> will be booted. + +ROM image files are required; see B<FILES> for details. + +OSS audio is supported, using the /dev/audio device. For Linux systems +using ALSA, OSS audio is provided by the snd_pcm_oss and snd_mixer_oss +kernel modules. If /dev/audio can't be opened, the emulator will run +with sound disabled. + +=head1 OPTIONS + +=over + +=item -2 + +Emulate the Apple II. + +Note that the emulator uses the same ROM image for II and II+, so the +emulated II will have Applesoft and autostart (which the original II +didn't ship with). + +=item -+ + +Emulate the Apple II+. + +=item -e + +Emulate the Apple //e (the default). + +=back + +=head1 KEYSTROKES + +=over + +=item Backspace + +Alias for the left-arrow key. + +=item Control+Delete + +Apple Reset key. + +=item Left Alt + +The left (open) apple key on the //e keyboard. + +=item Right Alt + +The right (closed) apple key on the //e keyboard. + +=item F1 + +Change disks in the first drive (slot 6, drive 0). This will either +read a filename on standard input (if kdialog can't be run), or display +a kdialog file-selector. Either way, the emulator stops and its window +becomes unresponsive until a file has been chosen. + +=item F2 + +Exit the emulator immediately. No confirmation dialog, so +be careful. + +=back + +All other keystrokes are translated to their equivalent Apple II +keystrokes, or ignored if there is no equivalent key on the Apple +keyboard. + +=head1 FILES + +=over + +=item B<.yaerc>, B<~/.yaerc> + +Config file. Searched for first in the current directory, +then in user's home directory. For config file syntax, see +I</usr/share/yae/yaerc.sample>. + +=item ROM files + +For II and II+ emulation, the required ROM image is called B<APPLE2.ROM>. +For the //e, the image is B<APPLE2E.ROM>. For all modes, B<DISK.ROM> is +required. + +ROM file locations can be set in the config file. By default, they're +searched for in the current directory. If the ROMs can't be found in +the configured location or the current directory, they will searched +for in I</usr/share/yae>. + +If the required ROM files can't be found, the emulator will refuse +to start. + +=back + +=head1 SEE ALSO + +B<kegs>(1), B<dos33fsutils>(1) + +=head1 AUTHORS + +B<yae> was originally written by Doug Kwan, and includes enhancements by +Warren Toomey. The version documented here also has some small bugfixes +and enhancements by B. Watson. + +This man page was written by B. Watson. diff --git a/games/yae/yaerc.sample b/games/yae/yaerc.sample new file mode 100644 index 000000000000..54264659d1c9 --- /dev/null +++ b/games/yae/yaerc.sample @@ -0,0 +1,69 @@ +# Sample .yaerc file for yae apple emulator. + +# Comments (like this one) begin with a hash +# Non-comment lines are key and value, separated by whitespace. + +### ROM image files + +# These can be absolute paths, otherwise they're searched for in the current +# directory. No matter what's defined here, the emulator will always fall +# back to looking for DISK.ROM and either APPLE2.ROM or APPLE2E.ROM in +# /usr/share/yae, if the files defined here can't be found. + +#Apple2ROM APPLE2.ROM +#Apple2eROM APPLE2E.ROM +#DiskROM DISK.ROM + +### Disk image files + +# 4 drives are emulated. The emulated Apple boots from Slot 6, Drive 1. +# Again, filenames can be absolute paths, or in the current +# directory. As a fallback, yae will use /usr/share/yae/Master.dsk if +# nothing is defined here, or if the DiskS6D1 file can't be found. + +#DiskS6D1 /usr/share/yae/Master.dsk +#DiskS6D2 /some/other.dsk +#DiskS5D1 /some/other.dsk +#DiskS5D2 /some/other.dsk + +### Printer emulation + +# By default, anything sent to slot 1 (the standard way to print on Apples) +# will be echoed to standard output. If Printer is set here, slot 1's output +# will go to the named file instead. + +#Printer yae_output.txt + +### Machine type + +# 3 machine types are supported: + +# II - Original Apple II (aka ][) +# II+ - Apple II+ (added hi res graphics and bank-switched RAM) +# IIe - Apple //e (added lowercase and 80 columns) + +# If nothing is defined here, the default is IIe. This setting can be +# overridden by the -2, -+, or -e command-line options. Note that +# the emulator uses the same ROM for II and II+, so the emulated II will +# have Applesoft and autostart (which the original II didn't ship with). + +#MachineType IIe + +### Misc options + +# Default emulated CPU speed (in Hz, apparently). The emulator tries to +# maintain this speed, but may slow down on loaded systems. + +#Speed 1022727 + +# Which set of MouseText characters to use, when emulating the IIe/IIc. +# The original version had characters FG as a "running man" glyph, and the +# newer (IIgs only?) revision has a j-shaped left arrow and some horizontal +# lines instead. Can be set to FALSE (the default) or TRUE. + +#RunningMan FALSE + +# Use X11 shared memory to speed up display? Can be set to TRUE (default) +# or FALSE. + +#UseXShm TRUE |