petch |
Mercredi 28 Décembre 2011 à 19:16
|
petch
|
Hi all,
An easy script this time, but for an excellent adventure game: Sanitarium.
Main trick is to use win98 compatibility, the GoG wrapper simply crashes under Wine.
Also, it doesn't like really recent versions of Wine (sound subsystem rewrite maybe?)
Enjoy!
https://raw.github.com/petchema/playonlinux/master/sanitarium-gog
#!/bin/bash
# Date : (2011-12-28 18-20)
# Last revision : (2011-12-28 18-50)
# Wine version used : 1.3.23
# Distribution used to test : Debian Sid (Unstable)
# Author : Pierre Etchemaite petchema@concept-micro.com
# Script licence : GPL v.2
# Program licence : Retail
# Depend :
# Lockup with 1.3.35 when reaching to top of the stairs
# Same with 1.3.34
# Same with 1.3.30
# Crash with 1.3.29 when statue "lights up"
# Heavy flickering with 1.3.27-rawinput2
# Ok with 1.3.24?
# Ok with 1.3.23?
# Ok with 1.2.3?
[ -z "$PLAYONLINUX" ] && exit 0
source "$PLAYONLINUX/lib/sources"
check_install_archive () {
FILE="$1"
EXPECTED_NAME="$2"
EXPECTED_SIZE="$3"
EXPECTED_MD5="$4"
POL_SetupWindow_wait "$(eval_gettext 'Checking install archive...')" "$TITLE"
# Temporarily prevent word splitting
OLDIFS="$IFS"
IFS=''
NAME="$(basename $FILE)"
SIZE="$(stat -c%s $FILE)"
MD5="$(POL_MD5_file $FILE)"
IFS="$OLDIFS"
if [ $SIZE -ne $EXPECTED_SIZE -o "$MD5" != "$EXPECTED_MD5" ]; then
POL_Debug_Error "$(eval_gettext 'Install archive mismatch.\\nEither your install archive is corrupted, or is not the expected version.\\nThis script cannot guarantee that installation will work correctly. Please report success or failure to PlayOnLinux forums.')\\n$(eval_gettext 'Name:') $NAME ($(eval_gettext 'expected') $EXPECTED_NAME)\\n$(eval_gettext 'Size:') $SIZE ($(eval_gettext 'expected') $EXPECTED_SIZE)\\n$(eval_gettext 'MD5:') $MD5\\n ($(eval_gettext 'expected') $EXPECTED_MD5)"
POL_SetupWindow_question "$(eval_gettext 'Continue?')" "$TITLE"
[ "$APP_ANSWER" != "TRUE" ] && POL_Debug_Fatal "$(eval_gettext 'Not the expected archive')"
fi
}
PREFIX="Sanitarium_gog"
WORKING_WINE_VERSION="1.3.23"
TITLE="$(eval_gettext 'Sanitarium (GoG release)')"
SHORTCUT_NAME="Sanitarium"
SHORTCUT_DOC="$SHORTCUT_NAME - $(eval_gettext 'User manual')"
SHORTCUT_README="$SHORTCUT_NAME - $(eval_gettext 'Readme')"
POL_SetupWindow_Init
POL_Debug_Init
POL_SetupWindow_presentation "$TITLE" "DreamForge Intertainment / XS Games" "http://www.gog.com/en/gamecard/sanitarium" "Pierre Etchemaite" "$PREFIX"
POL_Wine_SelectPrefix "$PREFIX"
POL_Wine_PrefixCreate "$WORKING_WINE_VERSION"
cd $HOME
POL_SetupWindow_browse "$(eval_gettext 'Please select the setup file to run.')" "$TITLE"
ARCHIVE="$APP_ANSWER"
check_install_archive "$ARCHIVE" setup_sanitarium.exe 1235894636 "c60d04ddd0614988c7be7c86fa5fe7d8"
POL_SetupWindow_wait "$(eval_gettext 'Please wait while $TITLE is installed.')" "$TITLE"
# Associate .PDF with native app
# http://wiki.winehq.org/FAQ#head-91bf3f0a8ccbfab8dee96f82fae2f1a489e0d243
# Do it before installing the game, so you have the possibility to open
# PDFs with Win32 reader if you choose to install it
cat <<'_EOF_' > "$REPERTOIRE/tmp/pdfnativereader.reg"
[HKEY_CLASSES_ROOT\\.pdf]
@="PDFfile"
"Content Type"="application/pdf"
[HKEY_CLASSES_ROOT\\PDFfile\\Shell\\Open\\command]
@="winebrowser \\"%1\\""
_EOF_
POL_Wine regedit "$REPERTOIRE/tmp/pdfnativereader.reg"
rm "$REPERTOIRE/tmp/pdfnativereader.reg"
POL_Wine start /unix "$ARCHIVE" || POL_Debug_Fatal "$(eval_gettext 'Error while installing archive')"
POL_Wine_WaitExit "$TITLE"
Set_OS win98
POL_SetupWindow_VMS "32"
## PlayOnMac Section
[ -n "$PLAYONMAC" ] && Set_SoundDriver "alsa"
[ -n "$PLAYONMAC" ] || Set_Managed "Off"
## End Section
# Doesn't hurt ;)
POL_Wine_reboot
POL_Shortcut "sntrm.exe" "$SHORTCUT_NAME"
POL_Shortcut "sntrm.exe" "$SHORTCUT_NAME $(eval_gettext '(windowed)')" "" "-w"
POL_Shortcut "start.exe" "$SHORTCUT_DOC" "" "'C:/$PROGRAMFILES/GOG.com/Sanitarium/manual.pdf'"
POL_Shortcut "start.exe" "$SHORTCUT_README" "" "'C:/$PROGRAMFILES/GOG.com/Sanitarium/readme.txt'"
POL_SetupWindow_Close
exit Edité par petch
|
Hartza |
Dimanche 24 Février 2013 à 17:44
|
Hartza
|
I've purchased the game from GOG.com, installed with POL. I usually get an error message:
MapViewOfFile for file 'RES.104' failed ErrorCode=8 Abort game? (Yes/No)
If I click yes crashes with this message: Runtime Error! Program: C:\\Program Files\\GOG.com\\Sanitarium\\sntrm.exe abnormal program termination
If I click no it crashes too.
I get this debug logfile:
[02/24/13 17:38:10] - Running wine-1.3.23 sntrm.exe (Working directory : /home/hartza/.PlayOnLinux/wineprefix/Sanitarium_gog/drive_c/Program Files/GOG.com/Sanitarium) fixme:win:EnumDisplayDevicesW ((null),0,0x32f760,0x00000000), stub! fixme:mixer:ALSA_MixerInit No master control found on HDA NVidia, disabling mixer fixme:dsalsa:IDsDriverBufferImpl_SetVolumePan (0x165408,0x165848): stub fixme:ddraw:ddraw7_WaitForVerticalBlank iface 0x1523f0, flags 0x1, event (nil) stub! fixme:ddraw:ddraw7_FlipToGDISurface iface 0x1523f0 stub! err:mmtime:TIME_MMTimeStop Timer still active?!
|
petch |
Dimanche 24 Février 2013 à 18:42
|
petch
|
I don't think any of the fixme is important and the error line is probably a consequence of the crash rather than the reason. What video driver do you use?
|
Hartza |
Dimanche 24 Février 2013 à 20:24
|
Hartza
|
I changed to Wine 1.5.20 and everything got OK. Now it works perfect.
|
petch |
Dimanche 24 Février 2013 à 21:29
|
petch
|
Does it work for you with 1.4.1 ? Edit: Nah, forget it, with 1.4.1 it freezes for me at the usual place (after climbing the stairs). Need to check 1.5.x Edité par petch
|
petch |
Dimanche 24 Février 2013 à 23:41
|
petch
|
1.4.1: freeze when reaching the top of stairs 1.5.0: crash when statue "lights up" (like 1.3.29 did) 1.5.3: crash when reaching the top of stairs 1.5.4, 1.5.5, 1.5.10, 1.5.15, 1.5.20, 1.5.24: seems to work ok I assume any version above 1.5.4 should do, switching script to 1.5.20 if that's what you use, feel free to report any further issue...
|