aboutsummaryrefslogtreecommitdiff
path: root/games/colem
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2011-02-17 22:31:20 -0600
committerRobby Workman <rworkman@slackbuilds.org>2011-02-28 09:42:03 -0600
commit848cabfbeb0846e0de4597fd83f555c274740311 (patch)
treedc4dcec77bf5991aea80b3711f1c198dc78fb985 /games/colem
parente28f17b579603f84337d96da63626501a40dd7cb (diff)
games/colem: Added (ColecoVision emulator)
Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
Diffstat (limited to 'games/colem')
-rw-r--r--games/colem/ColEm.html361
-rw-r--r--games/colem/README33
-rw-r--r--games/colem/colem.1215
-rw-r--r--games/colem/colem.SlackBuild130
-rw-r--r--games/colem/colem.desktop8
-rw-r--r--games/colem/colem.info10
-rw-r--r--games/colem/colem.xml10
-rw-r--r--games/colem/doinst.sh7
-rw-r--r--games/colem/rom_path.diff87
-rw-r--r--games/colem/slack-desc19
10 files changed, 880 insertions, 0 deletions
diff --git a/games/colem/ColEm.html b/games/colem/ColEm.html
new file mode 100644
index 000000000000..3a641ea82f30
--- /dev/null
+++ b/games/colem/ColEm.html
@@ -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>
diff --git a/games/colem/README b/games/colem/README
new file mode 100644
index 000000000000..47668260fc47
--- /dev/null
+++ b/games/colem/README
@@ -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.
diff --git a/games/colem/colem.1 b/games/colem/colem.1
new file mode 100644
index 000000000000..e8d3c76029c5
--- /dev/null
+++ b/games/colem/colem.1
@@ -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).
diff --git a/games/colem/colem.SlackBuild b/games/colem/colem.SlackBuild
new file mode 100644
index 000000000000..46ca0ab45b5b
--- /dev/null
+++ b/games/colem/colem.SlackBuild
@@ -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}
diff --git a/games/colem/colem.desktop b/games/colem/colem.desktop
new file mode 100644
index 000000000000..33754341edca
--- /dev/null
+++ b/games/colem/colem.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Name=ColEm
+GenericName=ColecoVision Emulator
+Exec=colem
+Icon=colem
+Terminal=false
+Categories=Game;Emulator;
diff --git a/games/colem/colem.info b/games/colem/colem.info
new file mode 100644
index 000000000000..68b263f8f47e
--- /dev/null
+++ b/games/colem/colem.info
@@ -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"
diff --git a/games/colem/colem.xml b/games/colem/colem.xml
new file mode 100644
index 000000000000..816a514c5476
--- /dev/null
+++ b/games/colem/colem.xml
@@ -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>
diff --git a/games/colem/doinst.sh b/games/colem/doinst.sh
new file mode 100644
index 000000000000..9a8ded3c6034
--- /dev/null
+++ b/games/colem/doinst.sh
@@ -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
diff --git a/games/colem/rom_path.diff b/games/colem/rom_path.diff
new file mode 100644
index 000000000000..b2353f2190de
--- /dev/null
+++ b/games/colem/rom_path.diff
@@ -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);
diff --git a/games/colem/slack-desc b/games/colem/slack-desc
new file mode 100644
index 000000000000..d32b9d389939
--- /dev/null
+++ b/games/colem/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 ':'.
+
+ |-----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: