The king of joysticks is back - Speedlink sells an USB reincarnation of the the Competition Pro, optionally bundled with the Amiga Classix Diamond Edition CD giving you 185 Amiga games, see here. Both the joystick and the games can be used under Linux. In the following I describe the necessary steps.

First to the joystick itself. Just connect it to a free USB port. Next you have to calibrate it, you can use the jscal command here. Under Ubuntu you can install it by running:

sudo apt-get install joystick

Next you run jscal, it should go similar to this:

$ jscal -c /dev/input/js0
Joystick has 2 axes and 4 buttons.
Correction for axis 0 is broken line, precision is 0.
Coeficients are: 128, 128, 4194176, 4227201
Correction for axis 1 is broken line, precision is 0.
Coeficients are: 128, 128, 4194176, 4227201

Calibrating precision: wait and don’t touch the joystick.
Done. Precision is:                                             
Axis: 0:     0
Axis: 1:     0

Move axis 0 to minimum position and push any button.
 (Move the stick to the left and push any button)
Hold … OK.                                                                  
Move axis 0 to center position and push any button.
Hold … OK.                                                                  
Move axis 0 to maximum position and push any button.
 (Move the stick to the right and push any button)
Hold … OK.                                                                  
Move axis 1 to minimum position and push any button.
 (Move the stick up and push any button)
Hold … OK.                                                                  
Move axis 1 to center position and push any button.
Hold … OK.                                                                  
Move axis 1 to maximum position and push any button.
 (Move the stick down and push any button)
Hold … OK.                                                                  

Setting correction to:
Correction for axis 0: broken line, precision: 0.
Coeficients: 128, 128, 4194176, 4227201
Correction for axis 1: broken line, precision: 0.
Coeficients: 128, 128, 4194176, 4227201

That’s it already for the joystick!

Coming to the Games, that is a bit more work. Unfortunately you first have to install it once on some Windows machine since all the relevant files are part of the Setup.exe executable. I tried to decrunch (!) it under Wine, but that did not work for me. So, find some Windows installation and install it there. This should give you a directory AmigaClassixDiamondEdition in the Program Files folder. If you have access to this folder under Linux by mounting the Windows partition, that’s fine. If not, just burn the folder on a CD and bring it to your Linux machine. For each game the following items are provided:

  • the Amiga disk files (*.adf), up to four per game
  • a screenshot of the game
  • a WIN-UAE configuration file file when no joystick is available
  • a WIN-UAE configuration file file when a joystick is available (optional, only when the game can be played with a joystick)
  • a manual text file (optional)

Unfortunately these items are scattered over several directories. I wrote a small bash script which collects all the relevant items and makes a new single directory for each game containing all the upper items, see the following screenshot:

 

Note that the script is just a hack, use it at your own risk! Here we go:

#!/bin/bash
	
# for CLASSIXDIR give the path to the Windows Amiga Classix Diamond edition directory
CLASSIXDIR=/path/to/AmigaClassixDiamondEdition
# for NEWGAMESDIR give the path to the directory where you would like to have your games copied
NEWGAMESDIR=/path/to/Amiga/ClassixGames
	
# Do not modify stuff from here on (unless you know what you are doing)
CLASSIXGAMESDIR=$CLASSIXDIR/msys/games
	
if [ ! -d "$CLASSIXDIR" ]; then
  echo "Directory" $CLASSIXDIR "does not exist. Aborting!"
  exit 1
fi
	
if [ ! -d "$NEWGAMESDIR" ]; then
  echo "Directory" $NEWGAMESDIR "does not exist. Aborting!"
  exit 1
fi
	
echo "Creating directories in " $NEWGAMESDIR
mkdir $NEWGAMESDIR/Action
mkdir $NEWGAMESDIR/Adventure
mkdir $NEWGAMESDIR/Arcade
mkdir $NEWGAMESDIR/Sport
mkdir $NEWGAMESDIR/Strategy
	
# copy the ROM files
cp -r $CLASSIXGAMESDIR/Roms $NEWGAMESDIR
	
# copy the games
for ((i=1;i<=212;i+=1)); do
	
    LINE=`awk " \
        BEGIN {FS = \";\"} \
        NR==$i && \\$1 == \"Action\" \
	{print \"Action;\" \\$2 \";\" \\$6 \";\" \\$7\";\" substr(\\$8,30)\";\" substr(\\$9,30,length(substr(\\$9,30))-1)} \
        NR==$i && \\$1 == \"Adventure\" \
	{print \"Adventure;\" \\$2 \";\" \\$6 \";\" \\$7\";\" substr(\\$8,30)\";\" substr(\\$9,30,length(substr(\\$9,30))-1)} \
        NR==$i && \\$1 == \"Arcade\" \
	{print \"Arcade;\" \\$2 \";\" \\$6 \";\" \\$7\";\" substr(\\$8,30)\";\" substr(\\$9,30,length(substr(\\$9,30))-1)} \
        NR==$i && \\$1 == \"Sport\" \
	{print \"Sport;\" \\$2 \";\" \\$6 \";\" \\$7\";\" substr(\\$8,30)\";\" substr(\\$9,30,length(substr(\\$9,30))-1)} \
        NR==$i && \\$1 == \"Strategy + Mind\" \
	{print \"Strategy;\" \\$2 \";\" \\$6 \";\" \\$7\";\" substr(\\$8,30)\";\" substr(\\$9,30,length(substr(\\$9,30))-1)} \
        " $CLASSIXGAMESDIR/Csv/games.csv`
	
    GENRE=`echo $LINE | cut  -d ';' -f1`
    NAME=`echo $LINE | cut  -d ';' -f2`
    MANUAL=`echo $LINE | cut  -d ';' -f3`
    PIC=`echo $LINE | cut  -d ';' -f4`
    UAECONFIG=`echo $LINE | cut  -d ';' -f5`
    UAEJOYCONFIG=`echo $LINE | cut  -d ';' -f6`
	
    if [ "$GENRE" != "" ]; then
	echo "Copying: " $NAME
	mkdir $NEWGAMESDIR/$GENRE/"$NAME"
	
	# copy the manual text file
	if [ "$MANUAL" !=  "-" ]; then
	    MANFILE=`echo $MANUAL | sed "sXManuals\\\\\XX"`
	    if [ -a "$CLASSIXGAMESDIR/Manuals/$MANFILE" ]; then
		cp $CLASSIXGAMESDIR/Manuals/$MANFILE $NEWGAMESDIR/$GENRE/"$NAME"/
	    fi
	fi
	
	# copy the picture file
	if [ "$PIC" !=  "-" ]; then
	    PICFILE=`echo $PIC | sed "sXPics\\\\\XX"`
	    if [ -a "$CLASSIXGAMESDIR/Pics/$PICFILE" ]; then
		cp $CLASSIXGAMESDIR/Pics/$PICFILE $NEWGAMESDIR/$GENRE/"$NAME"/
	    fi
	fi
	
	# copy the WIN-UAE configuration file and modify ROM and disk file locations
	if [ "$UAECONFIG" !=  "" ]; then
	    if [ -a "$CLASSIXGAMESDIR/Configurations/$UAECONFIG" ]; then
                sed -e 'sXRoms\\X'$NEWGAMESDIR'/Roms/X' -e 'sXGames\\XX' <$CLASSIXGAMESDIR/Configurations/$UAECONFIG  >$NEWGAMESDIR/$GENRE/"$NAME"/$UAECONFIG
	    fi
	fi
	
	# copy the WIN-UAE configuration file for joysticks and modify ROM and disk file locations
	if [ "$UAEJOYCONFIG" !=  "" ]; then
		#if [ -a "$CLASSIXGAMESDIR/Configurations/$UAEJOYCONFIG" ]; then
                sed -e 'sXRoms\\X'$NEWGAMESDIR'/Roms/X' -e 'sXGames\\XX' <$CLASSIXGAMESDIR/Configurations/$UAEJOYCONFIG  >$NEWGAMESDIR/$GENRE/"$NAME"/$UAEJOYCONFIG
		#fi
	fi
	
	# copy the disk files (maximum 4), as they are named in the UAE configuration file
	for ((j=0;j<=3;j+=1)); do
	    FILES=`awk "BEGIN { FS = \"=\"} /floppy$j=/ {print substr(\\$2,7,length(substr(\\$2,7))-1)}" $CLASSIXGAMESDIR/Configurations/$UAECONFIG`
	
	    if [ "$FILES" != "" ]; then
		cp  $CLASSIXGAMESDIR/Games/$FILES $NEWGAMESDIR/$GENRE/"$NAME"/
	    fi
	done
    fi
done

Before you run the script you have to modify the first two variable declarations and set the variables CLASSIXDIR and NEWGAMESDIR, see the script. Having the script done its job, you should have the games copied in the way shown in the picture above. What remains to be done is to download E-UAE. The WIN-UAE configuration files contain some Windows-specific information, but that should not bother. Going into a games directory and invoking:

uae -f name.joy.uae

should work out of the box in most cases. Have fun!