ColEm
version 5.6

by Marat Fayzullin

Contents

New in This Version

Introduction

ColEm is a portable emulator of the old ColecoVision videogame console and Coleco Adam personal computer. 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

http://fms.komkon.org/ColEm/

There are versions of ColEm for many platforms. Windows and Unix ports are available for free from the above website. MSDOS, Symbian, Maemo, and Meego ports have been discontinued due to the death of their respective platforms. The Android port can be downloaded from the Google Play:

https://play.google.com/store/apps/details?id=com.fms.colem.deluxe (full version)

https://play.google.com/store/apps/details?id=com.fms.colem (free version)

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 Unix, Windows, and MSDOS.

If you would like to port ColEm to another system or make changes in ColEm's code, please, contact me by email or some other means. Be aware that ColEm source code is freely distributable, but it is not public domain and it is not 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.

Buttons

Coleco Adam:
  When using Coleco Adam keyboard, press [CONTROL]+[KEY] to
  access the special function of a [KEY], if it also performs
  a keyboard function.

All versions:
  [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
  [F8]           - Replay recorded gameplay
  [F9]           - Fast-forward emulation (also: [PGUP])
  [F11]          - Reset hardware
  [F12]          - Quit emulation (also: [ESC])
  [ALT]+[PGUP]   - Increase audio volume
  [ALT]+[PGDOWN] - Decrease audio volume

With #define DEBUG:
  [F1]           - Go into the built-in debugger

With #define GIFLIB:
  [F10]          - Make a screen snapshot (SNAPxxxx.GIF)

With #define WINDOWS:
  [ALT]+[ENTER]  - Switch between full screen and window modes

Coleco Adam keys:
  [F7]           - UNDO
  [F8]           - WILDCARD
  [PGUP]         - MOVE / COPY
  [PGDOWN]       - STORE / FETCH
  [HOME]         - HOME
  [INSERT]       - INSERT
  [DELETE]       - DELETE
  [END]          - CLEAR
  [PRTSCR]       - PRINT

Command Line Options

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.

[-option] =
  -verbose <level>    - Select debugging messages [5]
                          0 - Silent       1 - Startup messages
                          2 - VDP          4 - Illegal Z80 ops
                          8 - EEPROM      16 - Sound
                         32 - Disks       64 - Tapes
                        128 - AdamNet
  -skip <percent>     - Percentage of frames to skip [25]
  -help               - Print this help page
  -home <dirname>     - Set directory with system ROM files [off]
  -pal/-ntsc          - Video system to use [-ntsc]
  -adam/-cv           - Run in Adam/ColecoVision mode [-cv]
  -sgm/-nosgm         - Enable Super Game Module extension [-nosgm]
  -24c08/-24c256      - Enable serial EEPROM emulation [off]
  -sram               - Enable battery-backed SRAM emulation [off]
  -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 <filename>  - Write soundtrack to a MIDI file [LOG.MID]
  -palette <filename> - Load color palette from given file [ColEm.pal]
  -palette <number>   - Use given color palette [0]
                        0 - Scaled VDP colors   1 - Original VDP colors
                        2 - Faded NTSC colors
  -sync <frequency>   - Sync screen updates to <frequency> [-nosync]
  -nosync             - Do not sync screen updates [-nosync]
  -tv/-lcd/-raster    - Simulate TV scanlines or LCD raster [off]
  -linear             - Scale display with linear interpolation [off]
  -soft/-eagle        - Scale display with 2xSaI or EAGLE [off]
  -epx/-scale2x       - Scale display with EPX or Scale2X [off]
  -cmy/-rgb           - Simulate CMY/RGB pixel raster [off]
  -mono/-sepia        - Simulate monochrome or sepia CRT [off]
  -green/-amber       - Simulate green or amber CRT [off]
  -4x3                - Force 4:3 television screen ratio [off]
  -fps                - Show framerate counter [off]
  -sound [<quality>]  - Sound emulation quality [22050]
  -nosound            - Don't emulate sound [-nosound]
  -printer <filename> - Redirect Adam printer output to file [stdout]
  -diska <filename>   - Set disk image used for drive A: [none]
  -diskb <filename>   - Set disk image used for drive B: [none]
  -diskc <filename>   - Set disk image used for drive C: [none]
  -diskd <filename>   - Set disk image used for drive D: [none]
  -tapea <filename>   - Set tape image used for drive A: [none]
  -tapeb <filename>   - Set tape image used for drive B: [none]
  -tapec <filename>   - Set tape image used for drive C: [none]
  -taped <filename>   - Set tape image used for drive D: [none]

With #define DEBUG:
  -trap <address>     - Trap execution when PC reaches address [FFFFh]

With #define MSDOS:
  -vsync              - Sync screen updates to VGA VBlanks [-vsync]

With #define UNIX:
  -saver/-nosaver     - Save/don't save CPU when inactive [-saver]
  -scale <factor>     - Scale window by <factor> [2]

With #define MITSHM:
  -shm/-noshm         - Use/don't use MIT SHM extensions for X [-shm]

Frequently Asked Questions

  1. Why is the emulator so slow on my PC?

    Your computer may be too slow to run the emulator. On slow machines, try speeding things up by skipping more frames (-skip command line option or "Draw XX% frames" menu option). In ColEm-Windows, make window smaller or switch to the full screen mode with [Alt]+[Enter].

  2. Emulator is too fast on my PC!

    If ColEm is too fast on your computer, you can slow it down by syncing it to a timer (-sync in ColEm-Unix), VBlanks (-vsync in ColEm-MSDOS), or by choosing "PAL Video"/"NTSC Video" menu option in ColEm-Windows.

  3. I can't get some ROM images to work with the emulator.

    If you can't get ROM image to work, send it to me for analysis.

  4. Is it legal to spread cartridge ROMs?

    NO. 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.

  5. When compiling ColEm-Unix, I get "undefined name" errors.

    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 -L<path_to_libs> options. If you have no libXext library and the same functionality isn't provided in libX11, try #undefining the MITSHM option.

  6. When starting ColEm-Unix, I get X_ShmAttach error.

    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 -noshm option to disable the usage of shared memory.

  7. When starting ColEm-Unix, I get X_PutImage error.

    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.

History

New in ColEm 5.5

New in ColEm 5.4

New in ColEm 5.3

New in ColEm 5.2

New in ColEm 5.1

New in ColEm 5.0

New in ColEm 4.8

New in ColEm 4.7

New in ColEm 4.6

New in ColEm 4.5

New in ColEm 4.4

New in ColEm 4.3

New in ColEm 4.2

New in ColEm 4.1

New in ColEm 4.0

New in ColEm 3.8

New in ColEm 3.7

New in ColEm 3.6

New in ColEm 3.5

New in ColEm 3.4

New in ColEm 3.3

New in ColEm 3.2

New in ColEm 2.9

New in ColEm 2.6

New in ColEm 2.5

New in ColEm 2.4

New in ColEm 2.3

New in ColEm 2.2

New in ColEm 2.1

New in ColEm 2.0

New in ColEm 1.0

Thanks to...

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.


© Copyright by Marat Fayzullin (marat [AT] komkon /DOT/ org)