4

I'm searching an emulator for colecovision - a home games console from the early '80s.

I've found two:

  1. ColEM, which starts but doesn't seems to load the cartidges
  2. AdamEM, compiled but not working (doesn't start, saying that "Only 8,16,32 bpp display mode of X are supported. I set to 16 via Nvidia panel).

Are there any other friendly emulators?

(xmess is too messy for my patience and I'd prefer a specific emulator).

What I've tried:

If I try to compile adamEM with svga ("sudo make svga") it says:

raffaele@Natty:~/Scrivania/adamem$ sudo make svga
[sudo] password for raffaele: 
make -f Makefile.SVGALib
make[1]: ingresso nella directory "/home/raffaele/Scrivania/adamem"
gcc  -Wall -m486 -O2 -fomit-frame-pointer -DZLIB -DLSB_FIRST -DHAVE_CLOCK -DLINUX_SVGA -DUNIX -DJOYSTICK -DSOUND -DX86_ASM   -c -o ADAMEm.o ADAMEm.c
cc1: error: unrecognized command line option "-m486"
make[1]: *** [ADAMEm.o] Errore 1
make[1]: uscita dalla directory "/home/raffaele/Scrivania/adamem"
make: *** [svga] Errore 2

When I compile it with X ("make x")

raffaele@Natty:~/Scrivania/adamem$ make x
make -f Makefile.X
make[1]: ingresso nella directory "/home/raffaele/Scrivania/adamem"
gcc  -Wall -O2 -fomit-frame-pointer -DLSB_FIRST -DUNIX_X -DUNIX -DMITSHM -DHAVE_CLOCK -DSOUND -DZLIB   -c -o ADAMEm.o ADAMEm.c
ADAMEm.c: In function ‘LoadConfigFile’:
ADAMEm.c:589:18: warning: pointer targets in assignment differ in signedness
ADAMEm.c: In function ‘FixFileNames’:
ADAMEm.c:630:34: warning: statement with no effect
ADAMEm.c: In function ‘main’:
ADAMEm.c:742:2: warning: pointer targets in passing argument 2 of ‘LoadConfigFile’ differ in signedness
ADAMEm.c:575:13: note: expected ‘unsigned char *’ but argument is of type ‘char *’
ADAMEm.c:758:2: warning: pointer targets in passing argument 2 of ‘LoadConfigFile’ differ in signedness
ADAMEm.c:575:13: note: expected ‘unsigned char *’ but argument is of type ‘char *’
ADAMEm.c: In function ‘LoadConfigFile’:
ADAMEm.c:581:8: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result
gcc  -Wall -O2 -fomit-frame-pointer -DLSB_FIRST -DUNIX_X -DUNIX -DMITSHM -DHAVE_CLOCK -DSOUND -DZLIB   -c -o Coleco.o Coleco.c
Coleco.c: In function ‘GetSnapshotParams’:
Coleco.c:1128:2: warning: pointer targets in passing argument 1 of ‘__builtin_strlen’ differ in signedness
Coleco.c:1128:2: note: expected ‘const char *’ but argument is of type ‘byte *’
Coleco.c:1128:2: warning: pointer targets in passing argument 1 of ‘__builtin_strcmp’ differ in signedness
Coleco.c:1128:2: note: expected ‘const char *’ but argument is of type ‘byte *’
Coleco.c:1128:2: warning: pointer targets in passing argument 1 of ‘__builtin_strlen’ differ in signedness
Coleco.c:1128:2: note: expected ‘const char *’ but argument is of type ‘byte *’
Coleco.c:1128:2: warning: pointer targets in passing argument 1 of ‘__builtin_strcmp’ differ in signedness
Coleco.c:1128:2: note: expected ‘const char *’ but argument is of type ‘byte *’
Coleco.c:1128:2: warning: pointer targets in passing argument 1 of ‘__builtin_strcmp’ differ in signedness
Coleco.c:1128:2: note: expected ‘const char *’ but argument is of type ‘byte *’
Coleco.c:1128:2: warning: pointer targets in passing argument 1 of ‘__builtin_strcmp’ differ in signedness
Coleco.c:1128:2: note: expected ‘const char *’ but argument is of type ‘byte *’
Coleco.c: In function ‘_SaveSnapshotFile’:
Coleco.c:1254:2: warning: pointer targets in passing argument 1 of ‘strcpy’ differ in signedness
/usr/include/bits/string3.h:103:1: note: expected ‘char * __restrict__’ but argument is of type ‘byte *’
Coleco.c:1259:3: warning: pointer targets in passing argument 1 of ‘strcpy’ differ in signedness
/usr/include/bits/string3.h:103:1: note: expected ‘char * __restrict__’ but argument is of type ‘byte *’
Coleco.c:1265:3: warning: pointer targets in passing argument 1 of ‘strcpy’ differ in signedness
/usr/include/bits/string3.h:103:1: note: expected ‘char * __restrict__’ but argument is of type ‘byte *’
Coleco.c: In function ‘StartColeco’:
Coleco.c:1496:6: warning: suggest explicit braces to avoid ambiguous ‘else’
Coleco.c: In function ‘OptionsDialogue’:
Coleco.c:2638:9: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result
Coleco.c: In function ‘CheckGZ’:
Coleco.c:869:9: warning: ignoring return value of ‘tmpnam’, declared with attribute warn_unused_result
Coleco.c: In function ‘StartColeco’:
Coleco.c:1127:5: warning: array subscript is above array bounds
gcc  -Wall -O2 -fomit-frame-pointer -DLSB_FIRST -DUNIX_X -DUNIX -DMITSHM -DHAVE_CLOCK -DSOUND -DZLIB   -c -o Z80.o Z80.c
gcc  -Wall -O2 -fomit-frame-pointer -DLSB_FIRST -DUNIX_X -DUNIX -DMITSHM -DHAVE_CLOCK -DSOUND -DZLIB   -c -o DSP.o DSP.c
In file included from DSP.c:24:0:
Mixer.h: In function ‘voiceon’:
Mixer.h:198:30: warning: cast from pointer to integer of different size
Mixer.h:198:41: warning: cast from pointer to integer of different size
Mixer.h:198:56: warning: cast from pointer to integer of different size
Mixer.h: In function ‘_mix_some_samples’:
Mixer.h:298:11: warning: suggest explicit braces to avoid ambiguous ‘else’
Mixer.h:322:11: warning: suggest explicit braces to avoid ambiguous ‘else’
Mixer.h:353:11: warning: suggest explicit braces to avoid ambiguous ‘else’
Mixer.h:378:11: warning: suggest explicit braces to avoid ambiguous ‘else’
Mixer.h:277:6: warning: suggest explicit braces to avoid ambiguous ‘else’
Mixer.h: In function ‘readpipe’:
Mixer.h:522:26: warning: cast to pointer from integer of different size
Mixer.h:522:51: warning: cast to pointer from integer of different size
Mixer.h:523:15: warning: cast to pointer from integer of different size
DSP.c: In function ‘writepipe’:
Mixer.h:101:8: warning: ignoring return value of ‘write’, declared with attribute warn_unused_result
DSP.c: In function ‘SoundMainLoop’:
dev_dsp.h:69:10: warning: ignoring return value of ‘write’, declared with attribute warn_unused_result
gcc  -Wall -O2 -fomit-frame-pointer -DLSB_FIRST -DUNIX_X -DUNIX -DMITSHM -DHAVE_CLOCK -DSOUND -DZLIB   -c -o Sound.o Sound.c
gcc  -Wall -O2 -fomit-frame-pointer -DLSB_FIRST -DUNIX_X -DUNIX -DMITSHM -DHAVE_CLOCK -DSOUND -DZLIB   -c -o X.o X.c
X.c: In function ‘keyb_handler’:
X.c:428:9: warning: suggest explicit braces to avoid ambiguous ‘else’
X.c: In function ‘InitMachine’:
X.c:938:13: warning: pointer targets in assignment differ in signedness
X.c:964:9: warning: pointer targets in passing argument 6 of ‘XCreateImage’ differ in signedness
/usr/include/X11/Xlib.h:1449:16: note: expected ‘char *’ but argument is of type ‘byte *’
In file included from X.c:1432:0:
Common.h: In function ‘BigSprite’:
Common.h:58:5: warning: suggest explicit braces to avoid ambiguous ‘else’
Common.h: In function ‘Sprite’:
Common.h:86:5: warning: suggest explicit braces to avoid ambiguous ‘else’
X.c: In function ‘CalibrateJoystick’:
X.c:677:9: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result
X.c:678:9: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result
gcc  -Wall -O2 -fomit-frame-pointer -DLSB_FIRST -DUNIX_X -DUNIX -DMITSHM -DHAVE_CLOCK -DSOUND -DZLIB   -c -o Z80Debug.o Z80Debug.c
gcc  -Wall -O2 -fomit-frame-pointer -DLSB_FIRST -DUNIX_X -DUNIX -DMITSHM -DHAVE_CLOCK -DSOUND -DZLIB   -c -o Bitmap.o Bitmap.c
gcc  -Wall -O2 -fomit-frame-pointer -DLSB_FIRST -DUNIX_X -DUNIX -DMITSHM -DHAVE_CLOCK -DSOUND -DZLIB   -c -o Unix.o Unix.c
gcc  -s -Wl,-Map,adamem.map -L/usr/X11R6/lib \
              -o adamem ADAMEm.o Coleco.o Z80.o DSP.o Sound.o X.o Z80Debug.o Bitmap.o Unix.o -lXext -lX11 -lz
Coleco.o: In function `CheckGZ':
Coleco.c:(.text+0x1e8a): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
rm -f cvem
ln -s adamem cvem
gcc  -Wall -O2 -fomit-frame-pointer -DLSB_FIRST -DUNIX_X -DUNIX -DMITSHM -DHAVE_CLOCK -DSOUND -DZLIB   -c -o keys.o keys.c
gcc  -s -o keys keys.o
gcc  -Wall -O2 -fomit-frame-pointer -DLSB_FIRST -DUNIX_X -DUNIX -DMITSHM -DHAVE_CLOCK -DSOUND -DZLIB   -c -o makedata.o makedata.c
makedata.c: In function ‘main’:
makedata.c:69:3: warning: pointer targets in passing argument 3 of ‘LoadSam’ differ in signedness
makedata.c:28:12: note: expected ‘int *’ but argument is of type ‘unsigned int *’
makedata.c:74:10: warning: ignoring return value of ‘fscanf’, declared with attribute warn_unused_result
makedata.c: In function ‘LoadSam’:
makedata.c:50:8: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result
gcc  -s -o makedata makedata.o -lz
makedata
make[1]: makedata: comando non trovato
make[1]: *** [adamem.snd] Errore 127
make[1]: uscita dalla directory "/home/raffaele/Scrivania/adamem"
make: *** [x] Errore 2

When I try to start emulator (./adamem or ./cvem) complains with:

Initialising Unix/X drivers...
Opening display... FAILED - Only 8,16 and 32 bpp displays are supported
fossfreedom
  • 172,746
Hadden
  • 687

1 Answers1

2

For me the ubuntu binaries from the ColEm download site works fine - however you'll need to use a trick to get it working successfully. Also I found some great retro ROMs that work great with this emulator.

Few steps to follow:

  1. Download the ColEm emulator
  2. Extract the files in a subfolder - for example ~/Downloads/colem
  3. Download some compatible ROMs and unzip these into the colem folder above
  4. Ensure you have the pulseaudio utilities installed:

sudo apt-get install pulseaudio-utils

Now to start the emulator with a particular rom you use the syntax

padsp ./colem32 <rom name>

for example: padsp ./colem32 Galaxian.rom

enter image description here

fossfreedom
  • 172,746
  • 1
    The roms I had are in format .col (colem works only with .rom). However I've tried to rename one of them to see if works with emulator. They works. How can I convert all the .col in .rom files with terminal? – Hadden Sep 03 '11 at 03:01
  • 1
    good question - this AU question should help: http://askubuntu.com/questions/35922/how-to-change-extension-of-multiple-files-from-command-line – fossfreedom Sep 03 '11 at 04:20