The forum

Projet WineBooster

petit delire perso

Author Replies
GNU_Raziel Sunday 3 June 2007 at 21:19
GNU_Raziel

Nom du script : WineBooster
Nom reel : Projet WineBooster
Editeur : GNU_Raziel
Commentaire : Usage exclusif réservé au projet PlayOnLinux
Script :

#!/bin/bash
if [ "$PLAYONLINUX" = "" ]
then
exit 0
fi
source "$PLAYONLINUX/lib/sources"
cfg_check


presentation "Optimisation de Wine" "PlayOnLinux" "http://webadvance.free.fr/PlayOnLinux/index.php" "GNU_Raziel" "WineBooster"

message "Si vous ne SAVEZ PAS quoi mettre en valeur, laissez la valeur par DEFAUT !!!"

JEUX=$(menu "Lancer un jeu" "$(ls $REPERTOIRE/configurations/installed)" 400 300);
verifier_installation_e "$JEUX"

A_WVERSION=`cat $REPERTOIRE/jeux/$JEUX | grep "Version" | awk {'print $2'} | tr -d '\' | sed -e {s/Version//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_WVERSION" == "" ]; then
WVERSION=$(champ "Quelle version de Windows utiliser? (Valeurs : vista, win2003, winxp, win2k, winnt, winme, win98, win95, win31 - Défault : winxp )" "winxp" ) ;
else
WVERSION=$(champ "Quelle version de Windows utiliser? (Valeurs : vista, win2003, winxp, win2k, winnt, winme, win98, win95, win31 - Défault : winxp )" "$A_WVERSION" ) ;
fi
if [ "$WVERSION" == "vista" ]; then
WINE_WVERSION="vista"
else if [ "$WVERSION" == "win2003" ]; then
WINE_WVERSION="win2003"
else if [ "$WVERSION" == "winxp" ]; then
WINE_WVERSION="winxp"
else if [ "$WVERSION" == "win2k" ]; then
WINE_WVERSION="win2k"
else if [ "$WVERSION" == "winnt" ]; then
WINE_WVERSION="winnt"
else if [ "$WVERSION" == "winme" ]; then
WINE_WVERSION="winme"
else if [ "$WVERSION" == "win98" ]; then
WINE_WVERSION="win98"
else if [ "$WVERSION" == "win95" ]; then
WINE_WVERSION="win95"
else if [ "$WVERSION" == "win31" ]; then
WINE_WVERSION="win31"
else
WINE_WVERSION="winxp"
fi
fi
fi
fi
fi
fi
fi
fi
fi

A_DDR=`cat $REPERTOIRE/jeux/$JEUX | grep "DirectDrawRenderer" | awk {'print $2'} | tr -d '\' | sed -e {s/DirectDrawRenderer//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_DDR" == "" ]; then
DDR=$(champ "Quel mode de rendu utiliser? (Valeurs : Opengl, gdi - Défault : gdi)" "gdi" ) ;
else
DDR=$(champ "Quel mode de rendu utiliser? (Valeurs : Opengl, gdi - Défault : gdi)" "$A_DDR" ) ;
fi
if [ "$DDR" == "opengl" ]; then
WINE_DDR="opengl"
else
WINE_DDR="gdi"
fi

A_VERTEXSHADER=`cat $REPERTOIRE/jeux/$JEUX | grep "VertexShaderMode" | awk {'print $2'} | tr -d '\' | sed -e {s/VertexShaderMode//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_VERTEXSHADER" == "" ]; then
VERTEXSHADER=$(champ "Activer le Mode VertexShader? (Défault : Non ou N)" "Non" ) ;
else
VERTEXSHADER=$(champ "Activer le Mode VertexShader? (Défault : Non ou N)" "$A_VERTEXSHADER" ) ;
fi
if [ "$VERTEXSHADER" == "Oui" ]; then
WINE_VS="enabled"
else if [ "$VERTEXSHADER" == "Y" ]; then
WINE_VS="enabled"
else
WINE_VS="disabled"
fi
fi

A_PIXELSHADER=`cat $REPERTOIRE/jeux/$JEUX | grep "PixelShaderMode" | awk {'print $2'} | tr -d '\' | sed -e {s/PixelShaderMode//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_PIXELSHADER" == "" ]; then
PIXELSHADER=$(champ "Activer le Mode PixelShader? (Défault : Non ou N)" "Non" ) ;
else
PIXELSHADER=$(champ "Activer le Mode PixelShader? (Défault : Non ou N)" "$A_PIXELSHADER" ) ;
fi
if [ "$VERTEXSHADER" == "Oui" ]; then
WINE_PS="enabled"
else if [ "$PIXELSHADER" == "Y" ]; then
WINE_PS="enabled"
else
WINE_PS="disabled"
fi
fi

A_UGLSL=`cat $REPERTOIRE/jeux/$JEUX | grep "UseGLSL" | awk {'print $2'} | tr -d '\' | sed -e {s/UseGLSL//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_UGLSL" == "" ]; then
UGLSL=$(champ "Activer le Support GLSL? (Défault : Non ou N)" "Non" ) ;
else
UGLSL=$(champ "Activer le Support GLSL? (Défault : Non ou N)" "$A_UGLSL" ) ;
fi
if [ "$UGLSL" == "Oui" ]; then
WINE_GLSL="enabled"
else if [ "$UGLSL" == "Y" ]; then
WINE_GLSL="enabled"
else
WINE_GLSL="disabled"
fi
fi

A_VMS=`cat $REPERTOIRE/jeux/$JEUX | grep "VideoMemorySize" | awk {'print $2'} | tr -d '\' | sed -e {s/VideoMemorySize//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_VMS" == "" ]; then
VMS=$(champ "Quel est la quantité de mémoire (Mo) de votre Carte Graphique? (Défault : 64)" "64" ) ;
else
VMS=$(champ "Quel est la quantité de mémoire (Mo) de votre Carte Graphique? (Défault : 64)" "$A_VMS" ) ;
fi
if [ "$VMS" == "" ]; then
WINE_VMS="64"
else
WINE_VMS=$VMS
fi

A_ORM=`cat $REPERTOIRE/jeux/$JEUX | grep "OffscreenRenderingMode" | awk {'print $2'} | tr -d '\' | sed -e {s/OffscreenRenderingMode//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_ORM" == "" ]; then
ORM=$(champ "Quel Mode utiliser pour afficher les \"OffScreen textures/Images\"? (Valeurs : backbuffer, pbuffer, fbo - Défault : backbuffer)" "backbuffer" ) ;
else
ORM=$(champ "Quel Mode utiliser pour afficher les \"OffScreen textures/Images\"? (Valeurs : backbuffer, pbuffer, fbo - Défault : backbuffer)" "$A_ORM" ) ;
fi
if [ "$ORM" == "pbuffer" ]; then
WINE_ORM="pbuffer"
else if [ "$ORM" == "fbo" ]; then
WINE_ORM="fbo"
else
WINE_ORM="backbuffer"
fi
fi

A_RTLM=`cat $REPERTOIRE/jeux/$JEUX | grep "RenderTargetLockMode" | awk {'print $2'} | tr -d '\' | sed -e {s/RenderTargetLockMode//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_RTLM" == "" ]; then
RTLM=$(champ "Quel Mode utiliser pour gerer le Rendu de Cible vérouillée? (Valeurs : auto, readdraw, readtex, texdraw, textex, disabled - Défault : auto)" "auto" ) ;
else
RTLM=$(champ "Quel Mode utiliser pour gerer le Rendu de Cible vérouillée? (Valeurs : auto, readdraw, readtex, texdraw, textex, disabled - Défault : auto)" "$A_RTLM" ) ;
fi
if [ "$RTLM" == "disabled" ]; then
WINE_RTLM="disabled"
else if [ "$RTLM" == "readdraw" ]; then
WINE_RTLM="readdraw"
else if [ "$RTLM" == "readtex" ]; then
WINE_RTLM="readtex"
else if [ "$RTLM" == "texdraw" ]; then
WINE_RTLM="texdraw"
else if [ "$RTLM" == "textex" ]; then
WINE_RTLM="textex"
else
WINE_RTLM="auto"
fi
fi
fi
fi
fi

A_WDESKTOP=`cat $REPERTOIRE/jeux/$JEUX | grep "Desktop" | awk {'print $2'} | tr -d '\' | sed -e {s/Desktop//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_WDESKTOP" == "" ]; then
WDESKTOP=$(champ "Quelle résolution du mode WINE Fenêtré choisir (NE CHANGE PAS LA RESOLUTION DU JEU !!)? (Exemple : 1024x768 - Défault : 0 = mode plein écran)" "0" ) ;
else
WDESKTOP=$(champ "Quelle résolution du mode WINE Fenêtré choisir (NE CHANGE PAS LA RESOLUTION DU JEU !!)? (Exemple : 1024x768 - Défault : 0 = mode plein écran)" "$A_WDESKTOP" ) ;
fi
if [ "$WDESKTOP" == "0" ]; then
WINE_DESKTOP="0"
else
WINE_DESKTOP=$WDESKTOP
fi

A_WMANAGED=`cat $REPERTOIRE/jeux/$JEUX | grep "Managed" | awk {'print $2'} | tr -d '\' | sed -e {s/Managed//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_WMANAGED" == "" ]; then
WMANAGED=$(champ "Autoriser le contrôle des fenêtres par votre gestionnaire? ( Défault : Oui ou Y )" "Oui" ) ;
else
WMANAGED=$(champ "Autoriser le contrôle des fenêtres par votre gestionnaire? ( Défault : Oui ou Y )" "$A_WMANAGED" ) ;
fi
if [ "$WMANAGED" == "Oui" ]; then
WINE_MANAGED="Y"
else if [ "$WMANAGED" == "Y" ]; then
WINE_MANAGED="Y"
else
WINE_MANAGED="N"
fi
fi

A_WDXGRAB=`cat $REPERTOIRE/jeux/$JEUX | grep "DXGrab" | awk {'print $2'} | tr -d '\' | sed -e {s/DXGrab//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_WDXGRAB" == "" ]; then
WDXGRAB=$(champ "Autoriser DirectX a empêcher le pointeur de souri de sortir des fenêtres? ( Défault : Non ou N )" "Non" ) ;
else
WDXGRAB=$(champ "Autoriser DirectX a empêcher le pointeur de souri de sortir des fenêtres? ( Défault : Non ou N )" "$A_WDXGRAB" ) ;
fi
if [ "$WDXGRAB" == "Oui" ]; then
WINE_DXGRAB="Y"
else if [ "$WDXGRAB" == "Y" ]; then
WINE_DXGRAB="Y"
else
WINE_DXGRAB="N"
fi
fi

A_WAUDIO=`cat $REPERTOIRE/jeux/$JEUX | grep "Audio" | awk {'print $2'} | tr -d '\' | sed -e {s/Audio//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_WAUDIO" == "" ]; then
WAUDIO=$(champ "Quel Pilote Audio choisir? (Valeurs : oss, alsa - Défault : alsa)" "alsa" ) ;
else
WAUDIO=$(champ "Quel Pilote Audio choisir? (Valeurs : oss, alsa - Défault : alsa)" "$A_WAUDIO" ) ;
fi
if [ "$WAUDIO" == "oss" ]; then
WINE_AUDIO="oss"
else
WINE_AUDIO="alsa"
fi

A_AEMUL=`cat $REPERTOIRE/jeux/$JEUX | grep "EmulDriver" | awk {'print $2'} | tr -d '\' | sed -e {s/EmulDriver//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_AEMUL" == "" ]; then
AEMUL=$(champ "Emuler le pilote DirectSound? (Défault : Non ou N)" "Non" ) ;
else
AEMUL=$(champ "Emuler le pilote DirectSound? (Défault : Non ou N)" "$A_AEMUL" ) ;
fi
if [ "$AEMUL" == "Oui" ]; then
WINE_AEMUL="Y"
else if [ "$AEMUL" == "Y" ]; then
WINE_AEMUL="Y"
else
WINE_AEMUL="N"
fi
fi

TEMP="$HOME/.PlayOnLinux/tmp/WineBooster"
chmod 777 $TEMP -R
rm $TEMP -R
mkdir -p $TEMP
cd $REPERTOIRE/wineprefix/$JEUX
select_prefixe "$(pwd)"

echo "[HKEY_CURRENT_USER\Software\Wine\Direct3D]" > $TEMP/winebooster.reg
echo "\"DirectDrawRenderer\"=\"$WINE_DDR\"" >> $TEMP/winebooster.reg
echo "\"RenderTargetLockMode\"=\"$WINE_RTLM\"" >> $TEMP/winebooster.reg
echo "\"OffscreenRenderingMode\"=\"$WINE_ORM\"" >> $TEMP/winebooster.reg
echo "\"UseGLSL\"=\"$WINE_GLSL\"" >> $TEMP/winebooster.reg
echo "\"VideoMemorySize\"=\"$WINE_VMS\"" >> $TEMP/winebooster.reg
echo "\"PixelShaderMode\"=\"$WINE_PS\"" >> $TEMP/winebooster.reg
echo "\"VertexShaderMode\"=\"$WINE_VS\"" >> $TEMP/winebooster.reg
echo "[HKEY_CURRENT_USER\Software\Wine\Driver]" >> $TEMP/winebooster.reg
echo "\"Audio\"=\"$WINE_AUDIO\"" >> $TEMP/winebooster.reg
echo "[HKEY_CURRENT_USER\Software\Wine\DirectSound]" >> $TEMP/winebooster.reg
echo "\"EmulDriver\"=\"$WINE_AEMUL\"" >> $TEMP/winebooster.reg
echo "[HKEY_CURRENT_USER\Software\Wine\X11 Driver]" >> $TEMP/winebooster.reg
echo "\"Desktop\"=\"$WINE_DESKTOP\"" >> $TEMP/winebooster.reg
echo "\"Managed\"=\"$WINE_MANAGED\"" >> $TEMP/winebooster.reg
echo "\"DXGrab\"=\"$WINE_DXGRAB\"" >> $TEMP/winebooster.reg
echo "[HKEY_CURRENT_USER\Software\Wine]" >> $TEMP/winebooster.reg
echo "\"Version\"=\"$WINE_WVERSION\"" >> $TEMP/winebooster.reg
regedit $TEMP/winebooster.reg

simuler_reboot
chmod 777 $TEMP -R
rm $TEMP -R

message "Optimisation terminée"
exit


Un petit script permettant d'optimiser comme on le souhaite les principales options de Wine pour le jeu choisi

Edited by GNU_Raziel

Quentin PÂRIS Sunday 3 June 2007 at 21:23
Quentin PÂRIS
Admin

Wa !! Je suis impressionné la ! Il sera surement rajouté dans un menu "Expert" d'une version future de PlayOnLinux (1.6.2)

Très bonne initiative ! Ca marche bien ?

Bravo en tout cas
Christhaal Sunday 3 June 2007 at 21:24
Christhaal

Ca ne modifie pas que pour un jeu, ca modifie pour tous les jeux c'est bien ca?

Il faudrait permettre l'enregistrement d'un réglage pour chaque jeu Et don un simple clique paramettrerais Wine pour le jeu désiré (ou pourquoi pas lancer l'optimisation juste avant de lancer le jeu, de manière transparente donc)

GNU_Raziel Sunday 3 June 2007 at 21:25
GNU_Raziel

Oui ça marche super bien

Ca permet par exemple de tester facilement differents réglages pour un jeu ce qui nous permettra par la suite de proposer des versions "optimisés" des scripts

Et non, ca modifi pour un seul jeu a la fois, il faut relancer le script pour modifié un autre jeu

Edited by GNU_Raziel

Quentin PÂRIS Sunday 3 June 2007 at 21:27
Quentin PÂRIS
Admin

Non ! Le script demande au démarrage pour quel jeu appliquer les changements ! C'est géant je trouve ! Franchement bien !

Tu peux rajouter le mode "controlé par le gestionnaire de fenêtre ou non" ?

Sinon l'idéal de chez idéal, ce serait qu'il détecte la configuration de l'installation actuelle et qu'il les mettent en valeur par défault

Bravo !
GNU_Raziel Sunday 3 June 2007 at 21:34
GNU_Raziel


Tu peux rajouter le mode "controlé par le gestionnaire de fenêtre ou non" ?

Quote from Tinou

Connais pas ce mode, je n'ai survolé que très brièvement PlayOnLinux, dit m'en un peu plus la dessus


Sinon l'idéal de chez idéal, ce serait qu'il détecte la configuration de l'installation actuelle et qu'il les mettent en valeur par défault

Quote from Tinou

je peu voir ça, mais mes cours de bash n'étant plus qu'un lointain souvenir, va falloir que je me rafraichisse la mémoire sur l'exploration et la "capture" de valeurs dans un fichier
Quentin PÂRIS Sunday 3 June 2007 at 21:38
Quentin PÂRIS
Admin

Tu peux utiliser des choses style :

if [ $(cat user.reg | grep GLSL) = "" ]
then
pasglsl
fi


Pour le mode dont je te parle :

echo "[HKEY_CURRENT_USER\Software\Wine\X11 Driver]" > $REPERTOIRE/tmp/managed.reg
echo "\"Managed\"=\"N\"" >> $REPERTOIRE/tmp/managed.reg
regedit $REPERTOIRE/tmp/managed.reg


Si cette clée est mise, alors, le gestionnaire de fenêtre (metacity par exemple), ne pourra pas contrôler l'application. C'est nécessaire pour certains jeux
GNU_Raziel Sunday 3 June 2007 at 21:40
GNU_Raziel

Tu peux utiliser des choses style :

if [ $(cat user.reg | grep GLSL) = "" ]
then
pasglsl
fi


Pour le mode dont je te parle :

echo "[HKEY_CURRENT_USER\Software\Wine\X11 Driver]" > $REPERTOIRE/tmp/managed.reg
echo "\"Managed\"=\"N\"" >> $REPERTOIRE/tmp/managed.reg
regedit $REPERTOIRE/tmp/managed.reg


Si cette clée est mise, alors, le gestionnaire de fenêtre (metacity par exemple), ne pourra pas contrôler l'application. C'est nécessaire pour certains jeux

Quote from Tinou


Ca roule, je m'en occupe après Die Hard (j'adore ce film)
Quentin PÂRIS Sunday 3 June 2007 at 21:47
Quentin PÂRIS
Admin

Pour tester, tu t'apercevra vite que la fenêtre n'est plus contrôlé par metacity, ou kwin.

Elle ne répondra plus aux alt+tab, s'affichera sur tout les bureaux, n'aura pas la même bordure, ne sera pas réduit dans la barre... ect... C'est nécessaire pour Half-Life 1 par exemple.

Quelques suggestions d'améliorations
- Tu peux aussi demander quelle version de windows utiliser entre vista, xp, 2003, 2000, me, 98, 95, 3.1, 3.0, 2.03

DXGrab : Proposer si les applications DirectX doivent empêcher la souris de quitter leur fenêtre (mais je ne me rappelle plus de la clé).


Quentin PÂRIS Sunday 3 June 2007 at 21:54
Quentin PÂRIS
Admin

JEUX=$(champ "Quel jeu modifier? Vous devez utiliser le NOM DE CODE du jeu (Défault : aucun)" "" ) ;
if [ "$JEUX" == "" ]; then
message "Pourquoi avoir lancer ce script si vous ne voulez modifier aucun jeu ??!!"
exit 0
else
verifier_installation_e "$JEUX"
fi


Tu devrais remplacer par :

verifier_existence_jeux
JEUX=$(menu "Lancer un jeu" "$(ls $REPERTOIRE/configurations/installed)" 400 300);
if [ "$?" != 0 ]
then
menu_principal
fi





GNU_Raziel Sunday 3 June 2007 at 22:05
GNU_Raziel

La récupération des valeurs de registre actuelles va être relou, par exemple pour la valeur "Desktop" on a ça :

raziel@linuxbox:~/.PlayOnLinux$ cat wineprefix/Painkiller/user.reg | grep "Desktop"
[Control Panel\\Desktop] 1180810832
[Control Panel\\Desktop\\WindowMetrics] 1180810832
"Desktop"="c:\\windows\\profiles\\raziel\\Bureau"
"Desktop"=str(2):"%USERPROFILE%\\Bureau"
"Desktop"="1024x768"


Sachant que si on affecte pas unev aleur a une clé, elle n'apparait pas dans le registre et a une valeur par défaut, par exemple si on ne donne pas de valeur a la clé "Desktop" de "X11Driver" elle n'apparait pas dans user.reg mais a quand même une valeur (0 en ce qui concerne cette clé)

Je pense donc faire la récupération des valeurs de clé directement dans les scripts d'installation pour éviter les problèmes
GNU_Raziel Sunday 3 June 2007 at 22:13
GNU_Raziel

JEUX=$(champ "Quel jeu modifier? Vous devez utiliser le NOM DE CODE du jeu (Défault : aucun)" "" ) ;
if [ "$JEUX" == "" ]; then
message "Pourquoi avoir lancer ce script si vous ne voulez modifier aucun jeu ??!!"
exit 0
else
verifier_installation_e "$JEUX"
fi


Tu devrais remplacer par :

verifier_existence_jeux
JEUX=$(menu "Lancer un jeu" "$(ls $REPERTOIRE/configurations/installed)" 400 300);
if [ "$?" != 0 ]
then
menu_principal
fi





Quote from Tinou


Marche pas, ca renvoi au menu principal quoi que tu fasses
Quentin PÂRIS Sunday 3 June 2007 at 22:22
Quentin PÂRIS
Admin

Vire le if en dessous
GNU_Raziel Sunday 3 June 2007 at 23:15
GNU_Raziel

Voila, la version a été modifié a votre convenance
Ca m'a fait tout drôle de me replonger dans les man de sed, ect...

J'espère que ça vous plait

Edited by GNU_Raziel

Quentin PÂRIS Monday 4 June 2007 at 19:52
Quentin PÂRIS
Admin

Ton script est intégré dans la version 1.6.2 ! Félécitation
GNU_Raziel Monday 4 June 2007 at 20:31
GNU_Raziel

Super

Par contre je me demande pourquoi tu n'a pas intégré Painkiller, son addon et la mise a jour a la liste des jeux ?? les scripts et le jeu(+addon+update) fonctionnent super bien pourtant

Edited by GNU_Raziel

Quentin PÂRIS Monday 4 June 2007 at 20:32
Quentin PÂRIS
Admin

Ah ! Je l'ai oublié. J'ai juste quelques question à te poser dessus, donc je change de topic