====== Kingpin: Life of Crime ====== There wasn't a retail Linux version of this game, instead the developers provided a downloadable tarball with Linux binaries to use with the Windows CD : > To install the Kingpin files, you will need to install Kingpin under win32, > and then mount the installation folder under linux, and copy the installed > files across. Rest assured, you won't need to do that ;-) ===== Install the game ===== To install the required utils : # apt-get install unshield xxd Next, let's say you want to install the game in ''$HOME/kingpin'' : # mount /dev/cdrom /media/cdrom $ mkdir $HOME/kingpin $ unshield -d $HOME/kingpin -L x /media/cdrom/kingpin/data1.cab $ cd $HOME/kingpin $ rsync -a common_files/ mature_files/ program_executable_files/ ./ $ rm -rf common_files/ low_violence_files/ mature_files/ program_executable_files/ us_specific_files/ *.exe *.dll main/gamex86.dll $ cd main/models/actors/runt/ $ ln -s r_pstl.mdx R_pstl.mdx $ ln -s l_pstl.mdx L_pstl.mdx $ cd - $ cd main/models/actors/thug/ $ ln -s r_pstl.mdx R_pstl.mdx $ ln -s l_pstl.mdx L_pstl.mdx $ cd - Download ''kingpin-1.20_glibc-i386-linux2.0.tar.gz'' from [[https://downloads.kingpin.info/index.php?dir=kingpin/patches/official/linux/]] $ tar xzf kingpin-1.20_glibc-i386-linux2.0.tar.gz -C $HOME/kingpin $ cd $HOME/kingpin $ rm lib3dfxgl.so libGL.so libMesaGL* libTNTgl.so $ mv kingpin kingpin.x86 $ echo $HOME/kingpin > kingpin.conf $ cp ref_glx.so ref_glx.so.orig $ echo -n "2020" | xxd -r -p -seek 0x46EA6 - ref_glx.so $ echo -n "2020" | xxd -r -p -seek 0x47076 - ref_glx.so Download [[https://github.com/liflg/kingpin_1.20-english_x86/raw/master/kphack.tar.gz|kphack]] and extract it in your installation directory. ''kphack'' can be traced back to this [[https://icculus.org/~ravage/kingpin/|unofficial installer]], but I never found the source code :-( ===== No sound ===== Kingpin is a weird game that doesn't use the SDL and does everything by himself. It does ''mmap()'' on ''/dev/dsp''. This is not supported by ''osspd''. This is bad :'( The only solution is to stop osspd and use the primitive OSS emulation provided by ALSA in the Linux kernel. # systemctl stop osspd # modprobe snd-pcm-oss # echo 'kingpin.x86 0 0 direct' > /proc/asound/card0/pcm0p/oss ===== Start the game ===== #!/bin/sh # # Kingpin: Life of Crime startup script # # The user preferences directory KINGPIN_PREFS="${HOME}/.kingpin" # KPHack options export KPHACK_DGAMOUSE=1 KPHACK_FULLSCREEN=1 KPHACK_WHEEL=0 # Function to find the real directory a program resides in. # Feb. 17, 2000 - Sam Lantinga, Loki Entertainment Software FindPath() { fullpath="`echo $1 | grep /`" if [ "$fullpath" = "" ]; then oIFS="$IFS" IFS=: for path in $PATH do if [ -x "$path/$1" ]; then if [ "$path" = "" ]; then path="." fi fullpath="$path/$1" break fi done IFS="$oIFS" fi if [ "$fullpath" = "" ]; then fullpath="$1" fi # Is the awk/ls magic portable? if [ -L "$fullpath" ]; then fullpath="`ls -l "$fullpath" | awk '{print $11}'`" fi dirname $fullpath } # Set the home if not already set. if [ "${KINGPIN_DATA_PATH}" = "" ]; then KINGPIN_DATA_PATH="`FindPath $0`" fi LD_LIBRARY_PATH=.:${KINGPIN_DATA_PATH}:${LD_LIBRARY_PATH} export LD_LIBRARY_PATH export KINGPIN_DATA_PATH export LD_PRELOAD="${KINGPIN_DATA_PATH}/kphack.so:$LD_PRELOAD" create_prefpath() { path="${KINGPIN_PREFS}" if [ ! -d "$path" ]; then echo "Creating directory $path" mkdir "$path" fi } copy_if_needed() { dist="${KINGPIN_DATA_PATH}/kingpin.conf" file="${KINGPIN_PREFS}/kingpin.conf" if [ ! -f "$file" ]; then echo "Installing default $file" cp "$dist" "$file" fi } # KPHack doesn't play nicely with $HOME/.kingpin when starting a new game # when saves already exist in main/save/current/ fix_current_saves() { if [ -e ${KINGPIN_PREFS}/main/save/current/game.ssv ] then rm ${KINGPIN_PREFS}/main/save/current/* fi } # Hey, it's fun time! if [ ! -d ${KINGPIN_PREFS} ] then echo "Creating preferences directory..." create_prefpath copy_if_needed fi # Let's boogie! if [ -x "${KINGPIN_DATA_PATH}/kingpin.x86" ] then fix_current_saves cd "${KINGPIN_DATA_PATH}/" exec "./kingpin.x86" +set vid_ref glx \ +set gl_driver libGL.so.1 "$@" +set _windowed_mouse 1 $* fi echo "Couldn't run Kingpin: Life of Crime (kingpin.x86). Is KINGPIN_DATA_PATH set?" exit 1