games/ovcc: Added (CoCo 3 emulator)

Signed-off-by: bedlam <dave@slackbuilds.org>

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
B. Watson 2023-05-25 23:27:28 +01:00 committed by Willy Sudiarto Raharjo
parent 4355ab5e59
commit 16cc68401e
No known key found for this signature in database
GPG key ID: 3F617144D7238786
11 changed files with 596 additions and 0 deletions

11
games/ovcc/README Normal file
View file

@ -0,0 +1,11 @@
ovcc (CoCo 3 emulator)
ovcc is the portable and Open Virtual Color Computer, a cross-platform
port of the Windows-only VCC emulator.
ovcc is an accurate emulation of a "stock" Tandy Color Computer 3 (aka
CoCo 3), just as you would have bought in a Radio Shack store or Tandy
Computer Center in 1986-1992.
The package includes the ROM images needed for all the emulated
hardware.

9
games/ovcc/doinst.sh Normal file
View file

@ -0,0 +1,9 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
if [ -x /usr/bin/gtk-update-icon-cache ]; then
/usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
fi
fi

66
games/ovcc/git2tarxz.sh Normal file
View file

@ -0,0 +1,66 @@
#!/bin/sh
# Create source tarball from git repo, with generated version number.
# Takes one optional argument, which is the commit or tag to create a
# tarball of. With no arg, HEAD is used.
# Version number example: 0.0.1+20200227_ad7ec17
# Notes:
# Do not use this if you're packaging a release.
# This script doesn't need to be run as root. It does need to be able
# to write to the current directory it's run from.
# Running this script twice for the same commit will NOT give identical
# tarballs, even if the contents are identical. This is because tar
# includes the current time in a newly-created tarball (plus there may
# be other git-related reasons).
# Once you've generated a tarball, you'll still need a place to host it.
# Ask on the mailing list, if you don't have your own web server to
# play with.
## Config:
# Github project and user names:
PRGNAM=ovcc
CLONE_URL=https://github.com/WallyZambotti/OVCC
## End of config.
set -e
GITDIR=$( mktemp -dt $PRGNAM.git.XXXXXX )
rm -rf $GITDIR
git clone $CLONE_URL $GITDIR
CWD="$( pwd )"
cd $GITDIR
if [ "$1" != "" ]; then
git reset --hard "$1" || exit 1
fi
GIT_SHA=$( git rev-parse --short HEAD )
DATE=$( git log --date=format:%Y%m%d --format=%cd | head -1 )
# ovcc doesn't use tags, but does have a version number, in the git log.
LOGVER=1.6.0
VERSION=$LOGVER+${DATE}_${GIT_SHA}
rm -rf .git
find . -name .gitignore -print0 | xargs -0 rm -f
cd "$CWD"
rm -rf $PRGNAM-$VERSION $PRGNAM-$VERSION.tar.xz
mv $GITDIR $PRGNAM-$VERSION
tar cvfJ $PRGNAM-$VERSION.tar.xz $PRGNAM-$VERSION
echo
echo "Created tarball: $PRGNAM-$VERSION.tar.xz"
echo "VERSION=\"$VERSION\""
echo "MD5SUM=\"$( md5sum $PRGNAM-$VERSION.tar.xz | cut -d' ' -f1 )\""

145
games/ovcc/ovcc.6 Normal file
View file

@ -0,0 +1,145 @@
.\" Man page generated from reStructuredText.
.
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "OVCC" 6 "2023-05-23" "1.6.0+20230510_f6c395c" "SlackBuilds.org"
.SH NAME
ovcc \- TRS-80 CoCo 3 emulator
.\" RST source for ovcc(1) man page. Convert with:
.
.\" rst2man.py ovcc.rst > ovcc.6
.
.SH SYNOPSIS
.sp
\fBovcc\fP [\fIquickload\-file\fP]
.SH DESCRIPTION
.sp
\fBovcc\fP is "the portable and open Virtual Color Computer", an emulator
for the TRS\-80 Color Computer 3.
.sp
This man page documents \fBovcc\fP as packaged by SlackBuilds.org.
.sp
[\fIquickload\-file\fP] can be a cartridge ROM image (\fB*.rom\fP or \fB*.ccc\fP)
or a binary executable (\fB*.bin\fP). If the file exists, it will be
loaded into the emulator at startup and executed. The filename
extensions are required, although they are case\-insensitive.
.sp
There are no other command\-line options.
.SH KEYBOARD
.sp
The keyboard is laid out like the CoCo 3, meaning that e.g. the
double\-quote is \fIShift\-2\fP\&.
.sp
While \fBovcc\fP is running, press \fIF12\fP for a list of keyboard commands.
.SH DISK IMAGES
.sp
To use a disk image (\fB*.dsk\fP), first connect the floppy drive:
select \fICartridge\fP \-> \fILoad Cart\fP \-> \fBlibfd502.so\fP\&. After doing
this, the \fICartridge\fP menu will now have entries for 4 drives. Select
\fIFD\-502 Drive 0\fP \-> \fIInsert\fP, then use the file selector to navigate
to the disk image. If necessary, you can choose \fIFile\fP \-> \fIHard Reset\fP
or press \fIF9\fP to reboot the Coco 3.
.sp
Note that it\(aqs easier to move or symlink the disk images into the
\fB~/.ovcc\fP directory, since this is the default location for the file
selector.
.sp
All the inserted media are remembered in the config file, so when
you exit and re\-run \fBovcc\fP, the devices and disks will still be
connected and loaded.
.SH FILES
.INDENT 0.0
.TP
.B /usr/games/ovcc
Shell script wrapper, which sets up the per\-user working directory if
needed, \fBchdir\fPs to it, and executes the real executable.
.TP
.B /usr/libexec/ovcc/ovcc
The actual executable. Normally you don\(aqt want to call this directly.
Since \fBovcc\fP was ported from Windows, it expects to find its config
files, ROMs, and loadable modules in the directory it was launched from.
.TP
.B ~/.ovcc
Per\-user working directory for \fBovcc\fP\&. If this dir doesn\(aqt exist, the
\fBovcc\fP wrapper script will create it. Contents:
.INDENT 7.0
.TP
.B Vcc.ini
The config file. Human\-readable and (if you\(aqre careful), editable. However,
the primary way to change the settings here is to use the graphical user
interface. Any changes made there will be written to this file.
.TP
.B Vcc.ini_bck
Backup of the config file, created whenever \fBovcc\fP is about to overwrite the
config.
.TP
.B lib*.so
Loadable modules which emulate various hardware that can be attached to the
CoCo 3. In the GUI, you load these from the Cartridge menu. The standard
floppy disk module is \fBlibfd502.so\fP\&. These are symlinks to the real files
in the package.
.sp
For a description of each emulated device, see:
.sp
\fI\%https://raw.githubusercontent.com/VCCE/VCC/main/README.md\fP
.TP
.B *.rom
ROM images.
.sp
\fBcoco3.rom\fP is automatically loaded when the emulator starts up.
.sp
\fBdisk11.rom\fP is loaded when the \fBlibfd502.so\fP module is loaded.
.sp
Other modules may require other ROM images (not included in the SBo package).
.UNINDENT
.UNINDENT
.SH COPYRIGHT
.sp
See the file /usr/doc/ovcc\-1.6.0+20230510_f6c395c/README.md for license information.
.SH AUTHORS
.sp
ovcc was ported from the original VCC by Joseph Forgione.
.sp
VCC was written by the VCC Developement Team.
.sp
This man page written for the SlackBuilds.org project
by B. Watson, and is licensed under the WTFPL.
.SH SEE ALSO
.sp
The ovcc homepage: \fI\%https://github.com/WallyZambotti/OVCC\fP
.sp
The original (Windows\-only) VCC homepage: \fI\%https://github.com/VCCE/VCC/\fP
.sp
The TRS\-80 Color Computer Archive, which has lots of software for TRS\-80
CoCo machines, including the CoCo 3:
.sp
\fI\%https://colorcomputerarchive.com/\fP
.sp
\fBxroar\fP(6), which can emulate the Color Computer 2.
.\" Generated by docutils manpage writer.
.

146
games/ovcc/ovcc.SlackBuild Normal file
View file

@ -0,0 +1,146 @@
#!/bin/bash
# Slackware build script for ovcc
# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
# This started out as a Windows app, it expects everything to be
# in the current directory (its .ini file, ROMs, "paks" which are
# loadable shared libs). So use a wrapper script to symlink up a dir
# in the user's $HOME, and keep the real binary out of $PATH.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ovcc
VERSION=${VERSION:-1.6.0+20230510_f6c395c}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
# Do not trust precompiled stuff.
rm -f testlib mpu/flt
# Build everything stripped.
sed -i '/^LDFLAGS /s|=|= -Wl,-s|' Makefile.common
LIBDIR=/usr/lib$LIBDIRSUFFIX/$PRGNAM
# Multiple Makefiles, no DESTDIR support.
runmake() {
local destdir="$1"
[ -n "$1" ] && shift
make \
OPT="$SLKCFLAGS" \
prefix=$destdir/usr \
LIBDIR=$destdir/$LIBDIR \
EXEDIR=$destdir/usr/libexec/$PRGNAM \
"$@"
}
runmake
runmake $PKG install
# Shared libs are supposed to be +x.
chmod 755 $PKG/usr/lib*/$PRGNAM/*.so
# Wrapper script.
mkdir -p $PKG/usr/games
sed "s,@64@,$LIBDIRSUFFIX,g" $CWD/$PRGNAM.sh > $PKG/usr/games/$PRGNAM
chmod +x $PKG/usr/games/$PRGNAM
# ROMs. Same as what MAME/MESS uses.
# from grepping the source, it needs these ROMs:
# coco3.rom (coco3.zip; always required)
# disk11.rom (coco3.zip; needed for libfd502.so)
# rgbdos.rom (disk11.rom; needed for libharddisk.so, can be used by libfd502.so)
# orch90.rom (coco_orch90.zip; liborch90.so)
# hdbdwbck.rom (libbecker.so; coco3_hdb1.zip)
unzip $CWD/coco3.zip -d $PKG/$LIBDIR
unzip -p $CWD/coco_orch90.zip '*.ccc' > $PKG/$LIBDIR/orch90.rom
unzip -p $CWD/coco3_hdb1.zip '*.rom' > $PKG/$LIBDIR/hdbdwbck.rom
# Not 100% sure this is the correct ROM, but it seems to work:
cat $CWD/disk11.rom > $PKG/$LIBDIR/rgbdos.rom
# Icon converted from ovcc.app/Contents/Resources/Icon.icns. Use
# adaptive resize because with plain -resize, the 16x16 and 22x22
# icons are just a smear of grey. They still look awful though. But
# upstream's windows icon (OVCC/CoCo/ovcc.ico) looks just as bad.
for px in 16 22 32 48 64 96 128 256; do
size=${px}x${px}
dir=$PKG/usr/share/icons/hicolor/$size/apps
mkdir -p $dir
convert -adaptive-resize $size $CWD/$PRGNAM.png $dir/$PRGNAM.png
done
mkdir -p $PKG/usr/share/pixmaps
ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png
# man page by SlackBuild author. I wasn't going to do this, but I can't find
# any documentation at all on actually using ovcc, so I had to trial-and-error.
# Hopefully documenting my results will save someone some time.
mkdir -p $PKG/usr/man/man6
gzip -9c < $CWD/$PRGNAM.6 > $PKG/usr/man/man6/$PRGNAM.6.gz
# .desktop file by SlackBuild author.
mkdir -p $PKG/usr/share/applications
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
# Precious little documentation. README.md is mostly install instructions,
# but it's all we have.
PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
mkdir -p $PKGDOC
cp -a README.md $PKGDOC
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$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

8
games/ovcc/ovcc.desktop Normal file
View file

@ -0,0 +1,8 @@
[Desktop Entry]
Type=Application
Name=ovcc
Comment=TRS-80 CoCo III Emulator
Exec=/usr/games/ovcc %F
Icon=ovcc
Terminal=false
Categories=Game;Emulator;

18
games/ovcc/ovcc.info Normal file
View file

@ -0,0 +1,18 @@
PRGNAM="ovcc"
VERSION="1.6.0+20230510_f6c395c"
HOMEPAGE="https://github.com/WallyZambotti/OVCC"
DOWNLOAD="https://slackware.uk/~urchlay/src/ovcc-1.6.0+20230510_f6c395c.tar.xz \
https://colorcomputerarchive.com/repo/ROMs/MAME-MESS/coco3.zip \
https://colorcomputerarchive.com/repo/ROMs/MAME-MESS/coco_orch90.zip \
https://colorcomputerarchive.com/repo/ROMs/RGBDOS/MESS/disk11.rom \
https://colorcomputerarchive.com/repo/ROMs/MAME-MESS/coco3_hdb1.zip"
MD5SUM="5a151d00d8ce9a017a0f578d1ab2f435 \
57edb0561a11265b8777ed76e5f37b79 \
834aa159b22f79396bc5bb7ec91d71ed \
196124f2e10da318e5d355814cfcaa2c \
328277bb10f45ca9bdcf7789b4fef99f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="agar"
MAINTAINER="B. Watson"
EMAIL="urchlay@slackware.uk"

BIN
games/ovcc/ovcc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

137
games/ovcc/ovcc.rst Normal file
View file

@ -0,0 +1,137 @@
.. RST source for ovcc(1) man page. Convert with:
.. rst2man.py ovcc.rst > ovcc.6
.. |version| replace:: 1.6.0+20230510_f6c395c
.. |date| date::
====
ovcc
====
----------------------
TRS-80 CoCo 3 emulator
----------------------
:Manual section: 6
:Manual group: SlackBuilds.org
:Date: |date|
:Version: |version|
SYNOPSIS
========
**ovcc** [*quickload-file*]
DESCRIPTION
===========
**ovcc** is "the portable and open Virtual Color Computer", an emulator
for the TRS-80 Color Computer 3.
This man page documents **ovcc** as packaged by SlackBuilds.org.
[*quickload-file*] can be a cartridge ROM image (**\*.rom** or **\*.ccc**)
or a binary executable (**\*.bin**). If the file exists, it will be
loaded into the emulator at startup and executed. The filename
extensions are required, although they are case-insensitive.
There are no other command-line options.
KEYBOARD
========
The keyboard is laid out like the CoCo 3, meaning that e.g. the
double-quote is *Shift-2*.
While **ovcc** is running, press *F12* for a list of keyboard commands.
DISK IMAGES
===========
To use a disk image (**\*.dsk**), first connect the floppy drive:
select *Cartridge* -> *Load Cart* -> **libfd502.so**. After doing
this, the *Cartridge* menu will now have entries for 4 drives. Select
*FD-502 Drive 0* -> *Insert*, then use the file selector to navigate
to the disk image. If necessary, you can choose *File* -> *Hard Reset*
or press *F9* to reboot the Coco 3.
Note that it's easier to move or symlink the disk images into the
**~/.ovcc** directory, since this is the default location for the file
selector.
All the inserted media are remembered in the config file, so when
you exit and re-run **ovcc**, the devices and disks will still be
connected and loaded.
FILES
=====
/usr/games/ovcc
Shell script wrapper, which sets up the per-user working directory if
needed, **chdir**\s to it, and executes the real executable.
/usr/libexec/ovcc/ovcc
The actual executable. Normally you don't want to call this directly.
Since **ovcc** was ported from Windows, it expects to find its config
files, ROMs, and loadable modules in the directory it was launched from.
~/.ovcc
Per-user working directory for **ovcc**. If this dir doesn't exist, the
**ovcc** wrapper script will create it. Contents:
Vcc.ini
The config file. Human-readable and (if you're careful), editable. However,
the primary way to change the settings here is to use the graphical user
interface. Any changes made there will be written to this file.
Vcc.ini_bck
Backup of the config file, created whenever **ovcc** is about to overwrite the
config.
lib\*.so
Loadable modules which emulate various hardware that can be attached to the
CoCo 3. In the GUI, you load these from the Cartridge menu. The standard
floppy disk module is **libfd502.so**. These are symlinks to the real files
in the package.
For a description of each emulated device, see:
https://raw.githubusercontent.com/VCCE/VCC/main/README.md
\*.rom
ROM images.
**coco3.rom** is automatically loaded when the emulator starts up.
**disk11.rom** is loaded when the **libfd502.so** module is loaded.
Other modules may require other ROM images (not included in the SBo package).
COPYRIGHT
=========
See the file /usr/doc/ovcc-|version|/README.md for license information.
AUTHORS
=======
ovcc was ported from the original VCC by Joseph Forgione.
VCC was written by the VCC Developement Team.
This man page written for the SlackBuilds.org project
by B. Watson, and is licensed under the WTFPL.
SEE ALSO
========
The ovcc homepage: https://github.com/WallyZambotti/OVCC
The original (Windows-only) VCC homepage: https://github.com/VCCE/VCC/
The TRS-80 Color Computer Archive, which has lots of software for TRS-80
CoCo machines, including the CoCo 3:
https://colorcomputerarchive.com/
**xroar**\(6), which can emulate the Color Computer 2.

37
games/ovcc/ovcc.sh Normal file
View file

@ -0,0 +1,37 @@
#!/bin/bash
# wrapper script for ovcc, makes it play nicer with unixey systems.
# it expects to find loadable media (ROMs and shared libs that emulate
# peripherals) in the current dir, when it's run.
PRGNAM=ovcc
REALBIN=/usr/libexec/$PRGNAM/$PRGNAM
USERDIR=~/.$PRGNAM
LIBDIR=/usr/lib@64@/$PRGNAM
# ovcc takes one optional argument, the name of a "quickload" file,
# which must end in .rom, .ccc, or .bin. since we're changing
# directories, we have to get the absolute path of the argument,
# if present. yes, this works even with spaces in the filename.
ARG="$1"
if [ "$ARG" != "" ]; then
ARG="$( realpath "$ARG" )"
fi
set -e
if [ ! -d $USERDIR ]; then
mkdir $USERDIR
cd $USERDIR
for i in $LIBDIR/*; do
ln -s $i $( basename $i )
done
fi
cd $USERDIR
if [ "$ARG" = "" ]; then
exec $REALBIN
else
exec $REALBIN "$ARG"
fi

19
games/ovcc/slack-desc Normal file
View file

@ -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------------------------------------------------------|
ovcc: ovcc (CoCo 3 emulator)
ovcc:
ovcc: ovcc is the portable and Open Virtual Color Computer, a cross-platform
ovcc: port of the Windows-only VCC emulator.
ovcc:
ovcc: ovcc is an accurate emulation of a "stock" Tandy Color Computer 3 (aka
ovcc: CoCo 3), just as you would have bought in a Radio Shack store or Tandy
ovcc: Computer Center in 1986-1992.
ovcc:
ovcc:
ovcc: