El Foro

[Script] UFO - Enemy Unknown

Early/test version for installation of www.abandonware-france.org version

Autor Respuestas
Sckizo Wednesday 29 October 2014 at 0:08
Sckizo

Hello,

This is my first try of a playOnLinux Script, I choose to try to install my personnal favorite game, the first X-com : UFO - Enemy Unknown.

The installation seem to be correct, but not the execution. I'm sure that soùe expert eye could tell me the newbie error i've made :)

For the record the dosbox config is a recovery

#!/bin/bash
# Date : (2014-10-27 15-00)
# Last revision : (2014-02-16 09-37)
# Wine version used : 1.6.2-dos_support_0.6
# Distribution used to test : Ubuntu 14.04
# Author : Sckizo
# Script licence : GPL v.2
# Program licence : Retail
# Only For : http://www.playonlinux.com

[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"

check_one "7za" "7za"
POL_SetupWindow_missing

# CONSTANTS
TITLE="UFO : Enemy Unknown"
PREFIX="UFO"
WORKING_WINE_VERSION="1.6.2-dos_support_0.6"
DEVELOPER="MicroProse"
INSTALL_DIR="UFO-Enemy_Unknown"
EXEC="UFO Defense.exe"
## MANUAL=""
SHORTCUT_NAME=$TITLE
TMP_DIR=/home/papa/.PlayOnLinux//tmp/

# IMAGES SETUP
POL_GetSetupImages "http://files.playonlinux.com/resources/setups/$PREFIX/top.png" "http://files.playonlinux.com/resources/setups/$PREFIX/left.png" "$TITLE"

# INSTALLATION
POL_SetupWindow_Init
POL_Debug_Init
POL_SetupWindow_presentation "$TITLE" "$DEVELOPER" "http://www.xcomufo.com" "Sckizo" "$PREFIX"

## POL_Call POL_GoG_setup "$GOGID" "$INSTALL_FILE_HASH"

POL_Wine_SelectPrefix "$PREFIX"
POL_Wine_PrefixCreate "$WORKING_WINE_VERSION"

GAME_FILE="ftp://ares:ares@tele500.abandonware-france.org/fichiers/jeux/1994-1995/jeu-00216-ufo_enemy_unknown-pcwin.7z"
## PATCH_FILE="ftp://ares:ares@tele500.abandonware-france.org/fichiers/codes-patches-cracks/pat-00216-ufo_enemy_unknown_windows.7z"

cd "$TMP_DIR"
POL_SetupWindow_download "Downloading $TITLE" "$TITLE" "$GAME_FILE"
## POL_SetupWindow_download "Downloading $TITLE Patch..." "$TITLE" "$PATCH_FILE"
POL_SetupWindow_wait_next_signal "Installation in progress..." "$WINEPREFIX/drive_c/Games/$INSTALL_DIR/$TITLE"
mkdir tmp_ufo
7za x "jeu-00216-ufo_enemy_unknown-pcwin.7z" -otmp_ufo
## 7za x "pat-00216-ufo_enemy_unknown_windows.7z" -otmp_ufo
rm "jeu-00216-ufo_enemy_unknown-pcwin.7z"
## rm "pat-00216-ufo_enemy_unknown_windows.7z"
mkdir "$WINEPREFIX/drive_c/Games"
mv "tmp_ufo/UFO-W95" "$WINEPREFIX/drive_c/Games/$INSTALL_DIR"
## rm tmp_ufo
cd "$WINEPREFIX/drive_c/Games/$INSTALL_DIR"
POL_SetupWindow_detect_exit

#-----

# DOSBOX CONFIG
cat <<_EOFCFG_ > "$WINEPREFIX/playonlinux_dos.cfg"
# This is the configurationfile for DOSBox 0.74. (Please use the latest version of DOSBox)
# Lines starting with a # are commentlines and are ignored by DOSBox.
# They are used to (briefly) document the effect of each option.

[sdl]
#       fullscreen: Start dosbox directly in fullscreen. (Press ALT-Enter to go back)
#       fulldouble: Use double buffering in fullscreen. It can reduce screen flickering, but it can also result in a slow DOSBox.
#   fullresolution: What resolution to use for fullscreen: original or fixed size (e.g. 1024x768).
#                     Using your monitor's native resolution with aspect=true might give the best results.
#                     If you end up with small window on a large screen, try an output different from surface.
# windowresolution: Scale the window to this size IF the output device supports hardware scaling.
#                     (output=surface does not!)
#           output: What video system to use for output.
#                   Possible values: surface, overlay, opengl, openglnb, ddraw.
#         autolock: Mouse will automatically lock, if you click on the screen. (Press CTRL-F10 to unlock)
#      sensitivity: Mouse sensitivity.
#      waitonerror: Wait before closing the console if dosbox has an error.
#         priority: Priority levels for dosbox. Second entry behind the comma is for when dosbox is not focused/minimized.
#                     pause is only valid for the second entry.
#                   Possible values: lowest, lower, normal, higher, highest, pause.
#       mapperfile: File used to load/save the key/event mappings from. Resetmapper only works with the defaul value.
#     usescancodes: Avoid usage of symkeys, might not work on all operating systems.

fullscreen=false
fulldouble=false
fullresolution=original
windowresolution=original
output=surface
autolock=true
sensitivity=100
waitonerror=true
priority=higher,normal
mapperfile=mapper-0.74.map
usescancodes=true

[dosbox]
# language: Select another language file.
#  machine: The type of machine tries to emulate.
#           Possible values: hercules, cga, tandy, pcjr, ega, vgaonly, svga_s3, svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe.
# captures: Directory where things like wave, midi, screenshot get captured.
#  memsize: Amount of memory DOSBox has in megabytes.
#             This value is best left at its default to avoid problems with some games,
#             though few games might require a higher value.
#             There is generally no speed advantage when raising this value.

language=
machine=svga_s3
captures=capture
memsize=16

[render]
# frameskip: How many frames DOSBox skips before drawing one.
#    aspect: Do aspect correction, if your output method doesn't support scaling this can slow things down!.
#    scaler: Scaler used to enlarge/enhance low resolution modes.
#              If 'forced' is appended, then the scaler will be used even if the result might not be desired.
#            Possible values: none, normal2x, normal3x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x.

frameskip=0
aspect=true
scaler=normal2x

[cpu]
#      core: CPU Core used in emulation. auto will switch to dynamic if available and appropriate.
#            Possible values: auto, dynamic, normal, simple.
#   cputype: CPU Type used in emulation. auto is the fastest choice.
#            Possible values: auto, 386, 386_slow, 486_slow, pentium_slow, 386_prefetch.
#    cycles: Amount of instructions DOSBox tries to emulate each millisecond.
#            Setting this value too high results in sound dropouts and lags.
#            Cycles can be set in 3 ways:
#              'auto'          tries to guess what a game needs.
#                              It usually works, but can fail for certain games.
#              'fixed #number' will set a fixed amount of cycles. This is what you usually need if 'auto' fails.
#                              (Example: fixed 4000).
#              'max'           will allocate as much cycles as your computer is able to handle.
#            
#            Possible values: auto, fixed, max.
#   cycleup: Amount of cycles to decrease/increase with keycombo.(CTRL-F11/CTRL-F12)
# cycledown: Setting it lower than 100 will be a percentage.

core=auto
cputype=486_slow
cycles=2000
cycleup=100
cycledown=100

[mixer]
#   nosound: Enable silent mode, sound is still emulated though.
#      rate: Mixer sample rate, setting any device's rate higher than this will probably lower their sound quality.
#            Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
# blocksize: Mixer block size, larger blocks might help sound stuttering but sound will also be more lagged.
#            Possible values: 1024, 2048, 4096, 8192, 512, 256.
# prebuffer: How many milliseconds of data to keep on top of the blocksize.

nosound=false
rate=44100
blocksize=1024
prebuffer=20

[midi]
#     mpu401: Type of MPU-401 to emulate.
#             Possible values: intelligent, uart, none.
# mididevice: Device that will receive the MIDI data from MPU-401.
#             Possible values: default, win32, alsa, oss, coreaudio, coremidi, none.
# midiconfig: Special configuration options for the device driver. This is usually the id of the device you want to use.
#               See the README/Manual for more details.

mpu401=intelligent
mididevice=default
midiconfig=

[sblaster]
#  sbtype: Type of Soundblaster to emulate. gb is Gameblaster.
#          Possible values: sb1, sb2, sbpro1, sbpro2, sb16, gb, none.
#  sbbase: The IO address of the soundblaster.
#          Possible values: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300.
#     irq: The IRQ number of the soundblaster.
#          Possible values: 7, 5, 3, 9, 10, 11, 12.
#     dma: The DMA number of the soundblaster.
#          Possible values: 1, 5, 0, 3, 6, 7.
#    hdma: The High DMA number of the soundblaster.
#          Possible values: 1, 5, 0, 3, 6, 7.
# sbmixer: Allow the soundblaster mixer to modify the DOSBox mixer.
# oplmode: Type of OPL emulation. On 'auto' the mode is determined by sblaster type. All OPL modes are Adlib-compatible, except for 'cms'.
#          Possible values: auto, cms, opl2, dualopl2, opl3, none.
#  oplemu: Provider for the OPL emulation. compat might provide better quality (see oplrate as well).
#          Possible values: default, compat, fast.
# oplrate: Sample rate of OPL music emulation. Use 49716 for highest quality (set the mixer rate accordingly).
#          Possible values: 44100, 49716, 48000, 32000, 22050, 16000, 11025, 8000.

sbtype=sb16
sbbase=220
irq=7
dma=1
hdma=5
sbmixer=true
oplmode=auto
oplemu=default
oplrate=44100

[gus]
#      gus: Enable the Gravis Ultrasound emulation.
#  gusrate: Sample rate of Ultrasound emulation.
#           Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
#  gusbase: The IO base address of the Gravis Ultrasound.
#           Possible values: 240, 220, 260, 280, 2a0, 2c0, 2e0, 300.
#   gusirq: The IRQ number of the Gravis Ultrasound.
#           Possible values: 5, 3, 7, 9, 10, 11, 12.
#   gusdma: The DMA channel of the Gravis Ultrasound.
#           Possible values: 3, 0, 1, 5, 6, 7.
# ultradir: Path to Ultrasound directory. In this directory
#           there should be a MIDI directory that contains
#           the patch files for GUS playback. Patch sets used
#           with Timidity should work fine.

gus=false
gusrate=44100
gusbase=240
gusirq=5
gusdma=3
ultradir=C:\ULTRASND

[speaker]
# pcspeaker: Enable PC-Speaker emulation.
#    pcrate: Sample rate of the PC-Speaker sound generation.
#            Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
#     tandy: Enable Tandy Sound System emulation. For 'auto', emulation is present only if machine is set to 'tandy'.
#            Possible values: auto, on, off.
# tandyrate: Sample rate of the Tandy 3-Voice generation.
#            Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
#    disney: Enable Disney Sound Source emulation. (Covox Voice Master and Speech Thing compatible).

pcspeaker=true
pcrate=44100
tandy=auto
tandyrate=44100
disney=true

[joystick]
# joysticktype: Type of joystick to emulate: auto (default), none,
#               2axis (supports two joysticks),
#               4axis (supports one joystick, first joystick used),
#               4axis_2 (supports one joystick, second joystick used),
#               fcs (Thrustmaster), ch (CH Flightstick).
#               none disables joystick emulation.
#               auto chooses emulation depending on real joystick(s).
#               (Remember to reset dosbox's mapperfile if you saved it earlier)
#               Possible values: auto, 2axis, 4axis, 4axis_2, fcs, ch, none.
#        timed: enable timed intervals for axis. Experiment with this option, if your joystick drifts (away).
#     autofire: continuously fires as long as you keep the button pressed.
#       swap34: swap the 3rd and the 4th axis. can be useful for certain joysticks.
#   buttonwrap: enable button wrapping at the number of emulated buttons.

joysticktype=auto
timed=true
autofire=false
swap34=false
buttonwrap=false

[serial]
# serial1: set type of device connected to com port.
#          Can be disabled, dummy, modem, nullmodem, directserial.
#          Additional parameters must be in the same line in the form of
#          parameter:value. Parameter for all types is irq (optional).
#          for directserial: realport (required), rxdelay (optional).
#                           (realport:COM1 realport:ttyS0).
#          for modem: listenport (optional).
#          for nullmodem: server, rxdelay, txdelay, telnet, usedtr,
#                         transparent, port, inhsocket (all optional).
#          Example: serial1=modem listenport:5000
#          Possible values: dummy, disabled, modem, nullmodem, directserial.
# serial2: see serial1
#          Possible values: dummy, disabled, modem, nullmodem, directserial.
# serial3: see serial1
#          Possible values: dummy, disabled, modem, nullmodem, directserial.
# serial4: see serial1
#          Possible values: dummy, disabled, modem, nullmodem, directserial.

serial1=dummy
serial2=dummy
serial3=disabled
serial4=disabled

[dos]
#            xms: Enable XMS support.
#            ems: Enable EMS support.
#            umb: Enable UMB support.
# keyboardlayout: Language code of the keyboard layout (or none).

xms=true
ems=true
umb=true
keyboardlayout=auto

[ipx]
# ipx: Enable ipx over UDP/IP emulation.

ipx=false

[autoexec]
@echo off
keyb fr
mount C C
c:
cls
echo.-----------------------------------------------
echo               UFO - Enemy Unknown
echo.          VERSION DISQUETTE FRANCAISE
echo.-----------------------------------------------
echo www.abandonware-france.org
echo.-----------------------------------------------
echo DOSBox v0.74
echo.-----------------------------------------------
echo Commandes de base pour Dosbox :
echo ALT + ENTREE - MODE PLEIN ECRAN/FENETRE
echo CTRL + F5 - CAPTURE D'ECRAN
echo CTRL + F10 - CAPTURER/LIBERER LE CURSEUR
echo CTRL + F12/11 - AUGMENTER/REDUIRE LA VITESSE
echo CTRL + F9 - QUITTER DOSBOX
echo.-----------------------------------------------
echo.
echo.
pause
c:
cd UFO
UFO.BAT
cd..
exit
_EOFCFG_

Set_OS win95

# SHORTCUTS
POL_Shortcut "Games/$INSTALL_DIR/$EXEC" "$SHORTCUT_NAME" "$SHORTCUT_NAME.png" "-p" "Game;RolePlaying;"
POL_Shortcut_Document "$SHORTCUT_NAME" "$WINEPREFIX/drive_c/Games/$INSTALL_DIR/$MANUAL"

# THE END
POL_SetupWindow_Close

exit 0

Editado por: Sckizo


Avant j'étais schizophrène ! Maintenant nous allons mieux !
"Je sais que j'plais pas à tout le monde ! Mais quand je vois à qui j'plais pas, j'me demande si ça me dérange vraiment." *Dikkenek*
Sckizo Wednesday 29 October 2014 at 14:13
Sckizo

Cf. French version


Avant j'étais schizophrène ! Maintenant nous allons mieux !
"Je sais que j'plais pas à tout le monde ! Mais quand je vois à qui j'plais pas, j'me demande si ça me dérange vraiment." *Dikkenek*
petch Wednesday 29 October 2014 at 22:26
petch
Developer

check_one "7za" "7za"
POL_SetupWindow_missing

Both check_one and POL_SetupWindow_missing are obsolete statements since PlayOnLinux 4.1.2 (June 2012); However PlayOnLinux checks for the presence of 7z at startup, so just drop those redundant statements.

TMP_DIR=/home/papa/.PlayOnLinux//tmp/

Don't hardcode PlayOnLinux/PlayOnMac state directory anywhere, use $POL_USER_ROOT instead

GAME_FILE="ftp://ares:ares@tele500.abandonware-france.org/fichiers/jeux/1994-1995/jeu-00216-ufo_enemy_unknown-pcwin.7z"

Don't know the legality of this, that looks complicated

POL_SetupWindow_download "Downloading $TITLE" "$TITLE" "$GAME_FILE"

According to comments in the code, in scripts your should use POL_Download instead

POL_SetupWindow_wait_next_signal "Installation in progress..." "$WINEPREFIX/drive_c/Games/$INSTALL_DIR/$TITLE"

All user-oriented messages should support localization. However for the default waiting message, just use

POL_Wine_WaitBefore "$TITLE"

7za x "jeu-00216-ufo_enemy_unknown-pcwin.7z" -otmp_ufo

If you use POL_System_7z instead of 7za, you'll get error management for free: if some error happens during decompression, the script will display an error message and abort (since PlayOnLinux/PlayOnMac 4.1.4)

POL_SetupWindow_detect_exit

This statement does not really make sense, since you didn't start Wine

cat <<_EOFCFG_ > "$WINEPREFIX/playonlinux_dos.cfg"
# This is the configurationfile for DOSBox 0.74. (Please use the latest version of DOSBox)
# Lines starting with a # are commentlines and are ignored by DOSBox.
...

playonlinux_dos.cfg syntax is not DOSBox conf file one, see http://www.playonlinux.com/en/topic-8747-Ultima_123_GOGcom_Edition.html for DOSBox support HOWTO