games/colem: Added (ColecoVision emulator)

Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
This commit is contained in:
B. Watson 2011-02-17 22:31:20 -06:00 committed by Robby Workman
parent e28f17b579
commit 848cabfbeb
10 changed files with 880 additions and 0 deletions

361
games/colem/ColEm.html Normal file
View file

@ -0,0 +1,361 @@
<HTML>
<HEAD>
<TITLE>ColEm Documentation</TITLE>
</HEAD>
<BODY BGCOLOR=#FFFFFF LINK=#006000 VLINK=#006000>
<CENTER>
<H1><FONT COLOR=#FF0000>ColEm<BR>version 2.5</FONT></H1>
<H3>by <A HREF="http://fms.komkon.org/">Marat Fayzullin</A></H3>
</CENTER>>
<H1>Contents</H1>
<UL>
<LI><A HREF="#LABB">New in This Version</A>
<LI><A HREF="#LABC">Introduction</A>
<LI><A HREF="#LABH">Buttons</A>
<LI><A HREF="#LABI">Command Line Options</A>
<LI><A HREF="#LABJ">Frequently Asked Questions</A>
<LI><A HREF="#LABK">History</A>
<LI><A HREF="#LABI">Thanks to...</A>
</UL>
<A NAME="LABB">
<H1>New in This Version</H1>
</A>
<UL>
<LI>Yet again ported ColEm to Unix using the new EMULib
framework. The new <B>ColEm-Unix</B> has been tested to compile
and run on Ubuntu Linux but should work on any other Unix.
ColEm-Unix source code is included with the core source code
distribution.
<LI>Ported ColEm to Maemo OS2008 used in N800 and N810 internet tablets
from Nokia. <B>ColEm-Maemo</B> has been specifically optimized for
the tablets using ARM assembler. It will simulate joypad with the
touch screen and automatically open <CODE>*.cv/*.cv.gz</CODE> files
from the file manager. ColEm-Maemo source code is included with the
core source code distribution.
<LI>Renamed <CODE>-zoom/-nozoom</CODE> to <CODE>-soft/-nosoft</CODE>.
<LI>Added <CODE>-scale</CODE> option to scale window on Unix.
<LI>Added <CODE>-home</CODE> to set home directory with system ROMs.
<LI>Options <CODE>-tv/-notv</CODE>, <CODE>-soft/-nosoft</CODE>, and the
<CODE>[F8]</CODE> key now work for both MSDOS and Unix.
<LI>ColEm-Symbian display routines rewritten in ARM assembler for speed.
<LI>Split ColEm-Symbian configuration menu into four tabs, making
"Video" and "Audio" settings separate.
<LI>Added "Audio Latency", "Skip Frames", and "Sync Updates" settings
to ColEm-Symbian.
<LI>Documentation and built-in help changed, many inconsistencies removed.
</UL>
<A NAME="LABC">
<H1>Introduction</H1>
</A>
<P>
ColEm is a portable emulator of the old ColecoVision videogame console.
It should run most ColecoVision games and supports Coleco's SuperAction
controllers with spin wheels. You can always get the latest ColEm binaries,
source code, and support files from
</P>
<P ALIGN=CENTER>
<A HREF="http://fms.komkon.org/ColEm/">http://fms.komkon.org/ColEm/</A>
</P>
<P>
There are versions of ColEm for many platforms, with Windows, MSDOS, Unix,
and Symbian ports being maintained by myself. All these ports are available
for free from the above website.
</P>
<P>
The ColEm-Symbian port works on the 3rd Edition Series60 phones from
Nokia and its licensees. You can download it, as well as my other
Symbian products, at
</P>
<P ALIGN=CENTER>
<A HREF="http://fms.komkon.org/EmuSymbian/">http://fms.komkon.org/EmuSymbian/</A>
</P>
<P>
ColEm is written in portable C and thus can be ported to any sufficiently
fast computing platform. The current ColEm source code distribution includes
portable core sources and platform-specific sources for Windows and MSDOS.
The ColEm-Unix sources are also available, for a slightly older version
of ColEm.
</P>
<P>
If you would like to port ColEm to another system or make changes in
ColEm's code, <U>please</U>, contact me by email or some other means. Be
aware that ColEm source code is freely distributable, but it is <U>not</U>
public domain and it is <U>not</U> released under GPL. You can not use it
for commercial purposes, distribute, or change it on your own, unless you
contact me to arrange the conditions of such use and get my permission.
Feel free to look at it though.
</P>
<A NAME="LABH">
<H1>Buttons</H1>
</A>
<FONT COLOR="#000060">
<PRE>
<B>All versions:</B>
[ALT] - Hold to switch to the second controller
[SPACE] - FIRE-R button (also: [SHIFT],A,S,D,F,G,H,J,K,L)
[CONTROL] - FIRE-L button (also: Z,X,C,V,B,N,M)
[Q] - SuperAction PURPLE button (also: E,T,U,O)
[W] - SuperAction BLUE button (also: R,Y,I,P)
[0]-[9] - Digit buttons
[-] - [*] button
[=] - [#] button
[PGUP] - Fast-forward emulation (also: [F9])
[ESC] - Quit emulation (also: [F12])
[F2] - Turn soundtrack log on/off
[F3] - Toggle FIRE-R autofire on/off
[F4] - Toggle FIRE-L autofire on/off
[F5] - Invoke configuration menu
[F6] - Load emulation state
[F7] - Save emulation state
[F9] - Fast-forward emulation (also: [PGUP])
[F11] - Reset hardware
[F12] - Quit emulation (also: [ESC])
[ALT]+[PGUP] - Increase audio volume
[ALT]+[PGDOWN] - Decrease audio volume
<B>With #define DEBUG:</B>
[F1] - Go into the built-in debugger
<B>With #define GIFLIB:</B>
[F10] - Make a screen snapshot (SNAPxxxx.GIF)
<B>With #define WINDOWS:</B>
[ALT]+[ENTER] - Switch between full screen and window modes
<B>With #define MSDOS or UNIX:</B>
[F8] - Turn scanline simulation on/off
[CTRL]+[F8] - Toggle screen softening on/off
</PRE>
</FONT>
<A NAME="LABI">
<H1>Command Line Options</H1>
</A>
<FONT COLOR="#000060">
<PRE>
Usage: colem [-option1 [-option2...]] [filename]
[filename] = Name of the file to load as a cartridge [CART.ROM]
This program will transparently uncompress singular GZIPped
and PKZIPped files.
<B>[-option] =</B>
-verbose &lt;level&gt; - Select debugging messages [5]
0 - Silent 1 - Startup messages
2 - VDP 4 - Illegal Z80 ops
16 - Sound
-skip &lt;percent&gt; - Percentage of frames to skip [25]
-help - Print this help page
-home &lt;dirname&gt; - Set directory with system ROM files [off]
-pal/-ntsc - Video system to use [-ntsc]
-adam/-cv - Run in Adam/ColecoVision mode [-cv]
-allspr - Show all sprites [off]
-autoa/-noautoa - Autofire/No autofire for FIRE-R button [-noautoa]
-autob/-noautob - Autofire/No autofire for FIRE-L button [-noautob]
-spin1x/-spin1y - Mouse X/Y position as SuperAction spinner 1 [off]
-spin2x/-spin2y - Mouse X/Y position as SuperAction spinner 2 [off]
-drums/-nodrums - Hit/Don't hit MIDI drums on noise [-nodrums]
-logsnd &lt;filename&gt; - Write soundtrack to a MIDI file [LOG.MID]
-palette &lt;number&gt; - Use given color palette [0]
0 - Scaled VDP colors 1 - Original VDP colors
2 - Faded NTSC colors
-sound [&lt;quality&gt;] - Sound emulation quality [22050]
-nosound - Don't emulate sound [-nosound]
<B>With #define DEBUG:</B>
-trap &lt;address&gt; - Trap execution when PC reaches address [FFFFh]
<B>With #define UNIX or MSDOS:</B>
-sync &lt;frequency&gt; - Sync screen updates to &lt;frequency&gt; [-nosync]
-nosync - Do not sync screen updates [-nosync]
-tv/-notv - Simulate/Don't simulate scanlines [-notv]
-soft/-nosoft - Scale screen up with softening [-nosoft]
<B>With #define MSDOS:</B>
-vsync - Sync screen updates to VGA VBlanks [-vsync]
<B>With #define UNIX:</B>
-saver/-nosaver - Save/don't save CPU when inactive [-saver]
-scale &lt;factor&gt; - Scale window by &lt;factor&gt; [2]
<B>With #define MITSHM:</B>
-shm/-noshm - Use/don't use MIT SHM extensions for X [-shm]
</PRE>
</FONT>
<A NAME="LABJ">
<H1>Frequently Asked Questions</H1>
</A>
<OL>
<LI><B>Why is the emulator so slow on my PC?</B>
<P>
Your computer may be too slow to run the emulator. On slow machines, try
speeding things up by skipping more frames (<CODE>-skip</CODE> command
line option or "Draw XX% frames" menu option). In ColEm-Windows, make
window smaller or switch to the full screen mode with
<CODE>[Alt]+[Enter]</CODE>.
</P>
<LI><B>Emulator is too fast on my PC!</B>
<P>
If ColEm is too fast on your computer, you can slow it down by syncing it
to a timer (<CODE>-sync</CODE> in ColEm-Unix), VBlanks (<CODE>-vsync</CODE>
in ColEm-MSDOS), or by choosing "PAL Video"/"NTSC Video" menu option in
ColEm-Windows.
</P>
<LI><B>I can't get some ROM images to work with the emulator.</B>
<P>
If you can't get ROM image to work, send it to me for analysis.
</P>
<LI><B>Is it legal to spread cartridge ROMs?</B>
<P>
<U>NO</U>. Nobody seems to care though, mainly because there is no
profit to be made from ColecoVision software any longer. Nevertheless, be
aware of the fact that by using commercial software you haven't bought you
are commencing an act of piracy.
</P>
<LI><B>When compiling ColEm-Unix, I get "undefined name" errors.</B>
<P>
This usually means that your linker cannot find the necessary libraries
(namely, libX11 and libXext) or some additional libraries (like libsocket
and libnsl) are required. Find these libraries in your system and modify
the Makefile so that the final invocation of the C compiler has
<CODE>-L&lt;path_to_libs&gt;</CODE> options. If you have no libXext
library and the same functionality isn't provided in libX11, try
#undefining the <CODE>MITSHM</CODE> option.
</P>
<LI><B>When starting ColEm-Unix, I get X_ShmAttach error.</B>
<P>
You are probably trying to run the emulator on a remote Xterminal while
it attempts to use shared memory for interfacing with X. Another reason
for this error may be the lack of MITSHM extension support in your
Xserver. Use <CODE>-noshm</CODE> option to disable the usage of shared
memory.
</P>
<LI><B>When starting ColEm-Unix, I get X_PutImage error.</B>
<P>
Unix/X version of ColEm can currently be compiled for 8bit, 16bit, or
32bit Xterminals. Neither 1bit nor 4bit Xterminals will work with the
drivers included into official ColEm distribution.
</P>
</OL>
<A NAME="LABK">
<H1>History</H1>
</A>
<H2>New in ColEm 2.4</H2>
<UL>
<LI>Ported ColEm to smartphones running <B>Symbian/UIQ3</B> software!
<LI>Added new, much better, scanline simulation and video softening
effects to ColEm-Windows.
<LI>ColEm-Windows full-screen mode now runs in 640x480 resolution.
<LI>Added <CODE>-sync/-nosync</CODE> option to ColEm-MSDOS to sync screen
updates to the timer (use <CODE>-vsync</CODE> for VBlanks).
<LI>Added <CODE>-zoom/-nozoom</CODE> option to ColEm-MSDOS that will
zoom ColEm display to fill the whole screen, using image
softening algorithm.
<LI>ColEm-MSDOS now runs in 640x480x15bpp VESA screen mode when
<CODE>-zoom</CODE> or <CODE>-tv</CODE> options used, otherwise
it runs in 320x200x15bpp screen mode.
<LI>Added [CONTROL]+[F8] key combination to ColEm-MSDOS to toggle
display zoom on/off.
<LI>Added new "Fill & Soften" zoom mode to ColEm-Symbian. It is
rather slow though.
<LI>Fixed possible source of instabilities in the S60 open file dialog
in ColEm-Symbian.
</UL>
<H2>New in ColEm 2.3</H2>
<UL>
<LI>Added <B>network play</B> option to ColEm-Windows and ColEm-Symbian!
<LI>Now resetting R register on ResetZ80() to keep states of both NetPlay
players consistent.
<LI>Now clearing all RAM on ResetColeco() to keep states of both NetPlay
players consistent.
<LI>Added new, much better, scanline simulation and video softening
effects to ColEm-Windows.
<LI>ColEm-Windows full-screen mode now runs in 640x480 resolution.
<LI>Added zoom settings to ColEm-Symbian ("None", "Keep Aspect", and
"Fill Screen").
<LI>Added display orientation settings to ColEm-Symbian ("Landscape",
"Portrait", and "Auto").
<LI>Finally fixed opendir() problem in EMULib-Symbian. All built-in
menu file dialogs work now!
<LI>Further extended and optimized Symbian screen rendering routines.
<LI>Fixed and optimized TV scanline simulation in ColEm-Symbian, made
scanline effect stronger.
<LI>Fixed system warnings in when flipping Nokia E70 open/closed.
<LI>Fixed possible crash when selecting an initial file in ColEm-Symbian.
</UL>
<H2>New in ColEm 2.2</H2>
<UL>
<LI>Changed Z80 NMI handling to comply with the standard.
<LI>Added "show all sprites" option (-allspr).
<LI>Added error messages to ColEm-Windows and ColEm-Symbian.
<LI>Added button and key remapping configuration to ColEm-Symbian.
<LI>ColEm-Symbian application menu is now split into three pages.
<LI>ColEm-MSDOS is now prebound with DOS32A extender, instead of
outdated DOS4GW.
</UL>
<H2>New in ColEm 2.1</H2>
<UL>
<LI>Added builtin configuration menu ([F5]).
<LI>Added palette selection (-palette) between scaled VDP palette, original
VDP palette, and the faded NTSC palette suggested by Richard Drushel.
<LI>Now defaulting to the palette from TMS9918 datasheet scaled by 255/224
to get true white color.
<LI>Fixed console keyboard input in Windows.
<LI>Updated and extended documentation.
</UL>
<H2>New in ColEm 2.0</H2>
<UL>
<LI>MSDOS and Windows versions are now based on the new framework.
<LI>Started adding Coleco Adam emulation (not finished yet).
<LI>Added state saving and loading via .STA files.
<LI>Added SuperAction spinner emulation with the mouse.
<LI>Added zoomed sprites support in VDP.
<LI>Standardized TMS9918 emulation.
<LI>Fixed VDP VBlank interrupt bug.
<LI>Replaced "updates per VBlank" (-uperiod) with "percentage of
skipped frames" parameter (-skip).
<LI>Removed -vperiod/-hperiod parameters as deprecated.
<LI>Added -pal/-ntsc parameters to switch between TMS9918/TMS9928
and TMS9929 VDPs.
<LI>Soundtrack saved into MIDI files.
<LI>Documentation rewritten in HTML.
<LI>Added speed throttling to ColEm-MSDOS (-vsync).
<LI>Keyboard assignments have changed.
</UL>
<H2>New in ColEm 1.0</H2>
<UL>
<LI>Standardized Z80 emulation.
<LI>Standardized PSG emulation.
<LI>Soundtrack saved into .SND files.
<LI>Screen refresh done line-by-line.
<LI>Sprites are refreshed line-by-line.
<LI>Limit on sprites per line introduced.
<LI>General cleanup of the source code.
<LI>Rewritten documentation.
</UL>
<A NAME="LABI">
<H1>Thanks to...</H1>
</A>
<P>
Finally, I would like to thank Hans Guijt, Marcel de Kogel, John Stiles,
Neal Danner, Alan Steremberg, and all other people who helped me with
advice, information, ROM images, and encouragment.
</P>
<HR>
<I>
&copy; Copyright by
<A HREF="http://fms.komkon.org/">Marat Fayzullin</A>
(marat [AT] komkon /DOT/ org)
</I>
</BODY>
</HTML>

33
games/colem/README Normal file
View file

@ -0,0 +1,33 @@
ColEm is a portable emulator of the old ColecoVision videogame console.
It should run most ColecoVision games and supports Coleco's SuperAction
controllers with spin wheels.
In order to run ColecoVision games, you will need a copy of the system
ROM image, but for copyright reasons, no ROM image is included. The
file is generally called "coleco.rom" or "coleco.zip" (which contains
"coleco.rom"). If you own a ColecoVision console, depending on the laws
where you live, it may or may not be legal for you to use a copy of the
ROM. If it's legal, you can either crack open your console, remove the
ROM chip, and read the data from it... or use google-fu to find an
already-dumped image file. Legal issues aside, you have 2 ways to
provide the ROM image for the emulator to use:
1. Place either "coleco.rom" or "coleco.zip" (containing "coleco.rom") in
the directory with the SlackBuild script. The resulting package will
include the ROM image in "usr/share/colem/coleco.rom". If you do this,
DO NOT give anyone a copy of the package! Using the ROM might possibly
be legal, but bundling it with ColEm is against the ColEm license.
2. Build the package without the ROM image. After installing the
package, manually place a copy of "coleco.rom" in "/usr/share/colem/"
or "~/.colem/".
Note about the sources: It appears that every time upstream releases a
new version, the download link for the previous version is removed. If
you are unable to download the source, try visiting the home page and
look for a new version of ColEm. If this is the case, please contact
the maintainer of this script (see the .info file)
By default, ColEm is built for 24- and 32-bit color depth X11 displays.
If you intend to run ColEm on an 8- or 16-bpp display, set either
DISPLAY_BPP=8 or DISPLAY_BPP=16 in the script's environment.

215
games/colem/colem.1 Normal file
View file

@ -0,0 +1,215 @@
.TH COLEM "1" "January 2011" "SlackBuilds.org" "User Commands"
.SH NAME
colem \- Emulator for ColecoVision and Coleco Adam consoles
.SH SYNOPSIS
.B colem
[\fI-option1 \fR[\fI-option2\fR...]] [\fIfilename\fR]
.SH DESCRIPTION
ColEm is a portable emulator of the old ColecoVision videogame console. It should run most ColecoVision games and supports Coleco's SuperAction controllers with spin wheels.
.PP
You can always get the latest ColEm binaries, source code, and support files from
.B http://fms.komkon.org/ColEm/
.SH OPTIONS
.TP
\fB[filename]\fR
Name of the file to load as a cartridge [default: CART.ROM]
.PP
This program will transparently uncompress singular GZIPped
and PKZIPped files.
.TP
\fB\-verbose\fR <level>
Select debugging messages [bitmask, default: 5]
.br
0 \- Silent
.br
1 \- Startup messages
.br
2 \- VDP
.br
4 \- Illegal Z80 ops
.br
16 \- Sound
.TP
\fB\-pal\fR, \fB\-ntsc\fR
Video system to use [default: \-ntsc]
.TP
\fB\-skip\fR <percent>
Percentage of frames to skip [default: 25]
.TP
\fB\-help\fR
Print this help page
.TP
\fB\-home\fR <dirname>
Set directory with system ROM files [default: see FILES, below]
.TP
\fB\-adam\fR, \fB\-cv\fR
Run in Adam/ColecoVision mode [default: \-cv]
.TP
\fB\-allspr\fR
Show all sprites [off]
.TP
\fB\-autoa\fR, \fB\-noautoa\fR
Autofire/No autofire for FIRE\-R button [default: \-noautoa]
.TP
\fB\-autob\fR, \fB\-noautob\fR
Autofire/No autofire for FIRE\-L button [default: \-noautob]
.TP
\fB\-spin1x\fR, \fB\-spin1y\fR
Mouse X/Y position as SuperAction spinner 1 [default: off]
.TP
\fB\-spin2x\fR, \fB\-spin2y\fR
Mouse X/Y position as SuperAction spinner 2 [default: off]
.TP
\fB\-drums\fR, \fB\-nodrums\fR
Hit/Don't hit MIDI drums on noise [default: \-nodrums]
.TP
\fB\-logsnd\fR <filename>
Write soundtrack to a MIDI file [default: LOG.MID]
.TP
\fB\-palette\fR <number>
Use given color palette [default: 0]
.br
0 \- Scaled VDP colors
.br
1 \- Original VDP colors
.br
2 \- Faded NTSC colors
.TP
\fB\-sound\fR [<quality>]
Sound emulation quality [default: 22050]
.TP
\fB\-nosound\fR
Don't emulate sound [default: emulate sound]
.TP
\fB\-trap\fR <address>
Trap execution when PC reaches address [default: FFFFh]
.TP
\fB\-sync\fR <frequency>
Sync screen updates to <frequency> [default: 60]
.TP
\fB\-nosync\fR
Do not sync screen updates [default: \-nosync]
.TP
\fB\-tv\fR, \fB\-notv\fR
Simulate/Don't simulate scanlines [default: \-notv]
.TP
\fB\-soft\fR, \fB\-nosoft\fR
Scale screen up with softening [default: \-nosoft]
.TP
\fB\-saver\fR, \fB\-nosaver\fR
Save/don't save CPU when inactive [default: \-saver]
.TP
\fB\-shm\fR, \fB\-noshm\fR
Use/don't use MIT SHM extensions for X [default: \-shm]
.TP
\fB\-scale\fR <factor>
Scale window by <factor> [default: 2]
.SH "KEYBOARD BINDINGS"
.TP
\fB[ALT]\fR
Hold to switch to the second controller
.TP
\fB[SPACE]\fR
FIRE\-R button (also: [SHIFT],A,S,D,F,G,H,J,K,L)
.TP
\fB[CONTROL]\fR
FIRE\-L button (also: Z,X,C,V,B,N,M)
.TP
\fB[Q]\fR
SuperAction PURPLE button (also: E,T,U,O)
.TP
\fB[W]\fR
SuperAction BLUE button (also: R,Y,I,P)
.TP
\fB[0]\-[9]\fR
Digit buttons
.TP
\fB[\-]\fR
[*] button
.TP
\fB[=]\fR
[#] button
.TP
\fB[PGUP]\fR
Fast\-forward emulation (also: [F9])
.TP
\fB[ESC]\fR
Quit emulation (also: [F12])
.TP
\fB[F1]\fR
Go into the built\-in debugger
.TP
\fB[F2]\fR
Turn soundtrack log on/off
.TP
\fB[F3]\fR
Toggle FIRE\-R autofire on/off
.TP
\fB[F4]\fR
Toggle FIRE\-L autofire on/off
.TP
\fB[F5]\fR
Invoke configuration menu
.TP
\fB[F6]\fR
Load emulation state
.TP
\fB[F7]\fR
Save emulation state
.TP
\fB[F8]\fR
Turn scanline simulation on/off
.TP
\fB[ALT]+[F8]\fR
Toggle screen softening on/off
.TP
\fB[F9]\fR
Fast\-forward emulation (also: [PGUP])
.TP
\fB[F11]\fR
Reset hardware
.TP
\fB[F12]\fR
Quit emulation (also: [ESC])
.TP
\fB[ALT]+[PGUP]\fR
Increase audio volume
.TP
\fB[ALT]+[PGDOWN]\fR
Decrease audio volume
.SH FILES
.TP
\fBcoleco.rom\fR
ColecoVision BIOS ROM image (8192 bytes). This is the only ROM required
for playing ColecoVision games.
.TP
\fBwriter.rom\fR
SmartWriter ROM (32768 bytes), only required for emulating the Coleco ADAM system.
.TP
\fBeos.rom\fR
Extended OS ROM (8192 bytes), only required for emulating the Coleco ADAM system.
.PP
The above ROM images may be named in all\-lowercase or all\-uppercase,
and are searched for in:
.PP
1. The directory specified by \fB\-home\fR, or the current directory if \fB\-home\fR not given.
.br
2. \fI/usr/share/colem\fR
.br
3. \fI~/.colem\fR
.PP
The coleco.rom file will occasionally be found on websites with the names "os7.rom"
or "ColecoVision\ BIOS\ (1982).col". Its md5sum is one of:
.PP
2c66f5911e5b42b8ebe113403548eee7 (original version)
.br
00fd13b66d39c69706aa48eb84a78411 (hacked version, different font)
.br
47f7180592a00b9631c97a12ff0fdd3c (hacked version, no title screen delay)
.PP
ColEm works with any of the above ROM images.
.SH AUTHOR
ColEm is by Marat Fayzullin, (C)FMS 1994\-2010
.PP
This man page is by B. Watson, for the SlackBuilds.org project (but may
be used by anyone for any purpose).

View file

@ -0,0 +1,130 @@
#!/bin/sh
# Slackware build script for colem
# Written by B. Watson (yalhcru@gmail.com)
PRGNAM=colem
VERSION=${VERSION:-2.6}
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}
# Since we have to set endianness at compile-time, included a few
# extra ARCHes here (only i486 and x86_64 are actually tested, you're
# on your own with the others)
# alphaslack and armedslack are little-endian, caught by the default case.
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
BIGENDIAN=yes
elif [ "$ARCH" = "sparc" ]; then
SLKCFLAGS="-O2"
BIGENDIAN=yes
elif [ "$ARCH" = "powerpc" ]; then
SLKCFLAGS="-O2"
BIGENDIAN=yes
else
SLKCFLAGS="-O2"
fi
set -e
ZIPNAME="ColEm"
ZIPVER=$( echo $VERSION | sed 's/\.//g' )
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
mkdir $PRGNAM-$VERSION
cd $PRGNAM-$VERSION
unzip $CWD/$ZIPNAME$ZIPVER-Source.zip
chown -R root:root .
chmod -R a-s,u+w,go+r-w .
sed -i 's/-O3/$(SLKCFLAGS)/' EMULib/Rules.gcc
# Make the emulator look in /usr/share/colem and ~/.colem for the
# system ROMs, as well as the current directory. Without this, it's
# quite annoying to use colem from either the command line or KDE.
patch -p1 < $CWD/rom_path.diff
cd $ZIPNAME/Unix
# Allow building for 8bpp or 16bpp X11 displays (the default is 32,
# which works on either 24bpp or 32bpp, which 99% of everyone is
# using now).
if [ "${DISPLAY_BPP:-32}" != "32" ]; then
sed -i "/^DEFINES/s/-DBPP32/-DBPP$DISPLAY_BPP/" Makefile
fi
# Allow building on big-endian platforms (such as s390)
if [ "${BIGENDIAN:-no}" != "no" ]; then
sed -i "/^DEFINES/s/-DLSB_FIRST/-DMSB_FIRST/" Makefile
fi
make SLKCFLAGS="$SLKCFLAGS"
mkdir -p $PKG/usr/bin
install -s -m0755 -oroot -groot $PRGNAM $PKG/usr/bin
# Man page written by script author.
mkdir -p $PKG/usr/man/man1
gzip -9c < $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
cat $CWD/README > $PKG/usr/doc/$PRGNAM-$VERSION/README
# HTML doc downloaded from http://fms.komkon.org/ColEm/ColEm.html
cat $CWD/$ZIPNAME.html > $PKG/usr/doc/$PRGNAM-$VERSION/$ZIPNAME.html
mkdir -p $PKG/usr/share/pixmaps
cat ../Maemo/Package/colem-64x64.png > $PKG/usr/share/pixmaps/$PRGNAM.png
# .desktop file and mime .xml file originally taken from ColEm-Maemo
# sources and modified to get rid of the Maemo-specific stuff.
mkdir -p $PKG/usr/share/applications
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
mkdir -p $PKG/usr/share/mime/packages
cat $CWD/$PRGNAM.xml > $PKG/usr/share/mime/packages/$PRGNAM.xml
# The ROM directory
mkdir -p $PKG/usr/share/$PRGNAM
# If there's a ROM image in $CWD, include it in the package
if [ -e $CWD/coleco.zip ]; then
( cd $CWD ; unzip -o coleco.zip )
elif [ -e $CWD/COLECO.ZIP ]; then
( cd $CWD ; unzip -o COLECO.ZIP )
fi
if [ -e $CWD/coleco.rom ]; then
cat $CWD/coleco.rom > $PKG/usr/share/$PRGNAM/coleco.rom
elif [ -e $CWD/COLECO.ROM ]; then
cat $CWD/COLECO.ROM > $PKG/usr/share/$PRGNAM/coleco.rom
fi
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}

View file

@ -0,0 +1,8 @@
[Desktop Entry]
Type=Application
Name=ColEm
GenericName=ColecoVision Emulator
Exec=colem
Icon=colem
Terminal=false
Categories=Game;Emulator;

10
games/colem/colem.info Normal file
View file

@ -0,0 +1,10 @@
PRGNAM="colem"
VERSION="2.6"
HOMEPAGE="http://fms.komkon.org/ColEm/"
DOWNLOAD="http://fms.komkon.org/ColEm/ColEm26-Source.zip"
MD5SUM="dbafc021fc71ae5baae3602369f5a6f5"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
MAINTAINER="B. Watson"
EMAIL="yalhcru@gmail.com"
APPROVED="rworkman"

10
games/colem/colem.xml Normal file
View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-cvrom">
<comment>ColecoVision Cartridge ROM</comment>
<glob pattern="*.cv.gz"/>
<glob pattern="*.cv"/>
<glob pattern="*.col.gz"/>
<glob pattern="*.col"/>
</mime-type>
</mime-info>

7
games/colem/doinst.sh Normal file
View file

@ -0,0 +1,7 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
if [ -x /usr/bin/update-mime-database ]; then
/usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
fi

87
games/colem/rom_path.diff Normal file
View file

@ -0,0 +1,87 @@
diff -Naur a/ColEm/Coleco.c b/ColEm/Coleco.c
--- a/ColEm/Coleco.c 2008-03-30 12:53:24.000000000 -0400
+++ b/ColEm/Coleco.c 2009-09-29 17:49:32.000000000 -0400
@@ -19,6 +19,9 @@
#include <stdlib.h>
#include <ctype.h>
#include <unistd.h>
+#include <sys/types.h>
+#include <limits.h>
+#include <pwd.h>
#ifdef __WATCOMC__
#include <direct.h>
@@ -69,6 +72,46 @@
#define fwrite(B,N,L,F) gzwrite(F,B,(L)*(N))
#endif
+/* 20090929 bkw: smart_fopen() searches for ROMs in various places
+ you might expect them to live, on a UNIXey system. Also searches
+ for both upper- and lower-case filenames. */
+static FILE *smart_fopen(const char *path, const char *mode) {
+ FILE *fp;
+ char lowercase_path[20], filename[PATH_MAX + 1];
+ const char *p = path;
+ char *lp = lowercase_path;
+ struct passwd *ent;
+
+ while(*p) *lp++ = tolower(*p++);
+ *lp = '\0';
+
+ if( (fp = fopen(path, mode)) )
+ return fp;
+
+ if( (fp = fopen(lowercase_path, mode)) )
+ return fp;
+
+ sprintf(filename, "/usr/share/colem/%s", path);
+ if( (fp = fopen(filename, mode)) )
+ return fp;
+
+ sprintf(filename, "/usr/share/colem/%s", lowercase_path);
+ if( (fp = fopen(filename, mode)) )
+ return fp;
+
+ if( (ent = getpwuid(getuid())) && (ent->pw_dir) ) {
+ sprintf(filename, "%s/.colem/%s", ent->pw_dir, path);
+ if( (fp = fopen(filename, mode)) )
+ return fp;
+
+ sprintf(filename, "%s/.colem/%s", ent->pw_dir, lowercase_path);
+ if( (fp = fopen(filename, mode)) )
+ return fp;
+ }
+
+ return NULL;
+}
+
/** StartColeco() ********************************************/
/** Allocate memory, load ROM image, initialize hardware, **/
/** CPU and start the emulation. This function returns 0 in **/
@@ -134,7 +177,7 @@
/* COLECO.ROM: OS7 (ColecoVision BIOS) */
if(Verbose) printf(" Opening COLECO.ROM...");
- if(!(F=fopen("COLECO.ROM","rb"))) P="NOT FOUND";
+ if(!(F=smart_fopen("COLECO.ROM","rb"))) P="NOT FOUND";
else
{
if(fread(ROM_BIOS,1,0x2000,F)!=0x2000) P="SHORT FILE";
@@ -145,7 +188,7 @@
if(!P)
{
if(Verbose) printf("OK\n Opening WRITER.ROM...");
- if(F=fopen("WRITER.ROM","rb"))
+ if(F=smart_fopen("WRITER.ROM","rb"))
{
if(fread(ROM_WRITER,1,0x8000,F)==0x8000) ++AdamROMs;
fclose(F);
@@ -157,7 +200,7 @@
if(!P&&AdamROMs)
{
if(Verbose) printf(" Opening EOS.ROM...");
- if(F=fopen("EOS.ROM","rb"))
+ if(F=smart_fopen("EOS.ROM","rb"))
{
if(fread(ROM_EOS,1,0x2000,F)==0x2000) ++AdamROMs;
fclose(F);

19
games/colem/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 ':'.
|-----handy-ruler------------------------------------------------------|
colem: colem (ColecoVision emulator)
colem:
colem: ColEm is a portable emulator of the old ColecoVision videogame
colem: console. It should run most ColecoVision games and supports Coleco's
colem: SuperAction controllers with spin wheels.
colem:
colem:
colem:
colem:
colem:
colem: