Passer des paramètres a DOSBOX pour monter et lancer ses jeux.

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
marcgforce
Niveau 3
Niveau 3
Messages : 47
Enregistré le : lun. 07 mars 2016 07:20
Status : Hors ligne

Passer des paramètres a DOSBOX pour monter et lancer ses jeux.

#1

Message par marcgforce »

Je ne sais pas si c'est votre cas, mais il m'arrive quelquefois de jouer à de vieux jeux DOS abandonware, histoire de retrouver la nostalgie d’antan, mais à chaque fois je devais lancer DOSBOX et taper la ligne de commande qui va bien ou paramétrer le fichier ini DOSBOX pour lancer un jeu; Je trouvais ça fatiguant et ai décidé de créer un petit script qui m'aiderai à passer les bons paramètres pour monter mon jeu dans l'émulateur.

Il fallait pourvoir monter les dossiers, des fichiers images de disquettes ou disque dur, et des fichier iso de cd-rom. J'ai poussé un peu plus loin ma réflexion pour y ajouter un historique des jeux joués pour pouvoir continuer un jeu commencé ou garder la trace des dernier jeux joués.

Pour ceux qui n'en n'auraient jamais entendu parler, je mets un lien vers le site officiel qui vous aidera surement à comprendre à quoi il sert: https://www.dosbox.com/

Donc voilà le script qui ne casse pas des briques, mais effectue les actions qu'on lui demande:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#Region ### START Koda GUI section ### Form=
$version="0.4"
$counthist=1
$dosboxhist = FileExists(@TempDir& "\dbxhist.conf"); vérification de l’existence du fichier gérant l'historique des jeux ouverts
if $dosboxhist Then
   $tempfile= @TempDir & "\dbxhist.conf"
Else
   FileWrite(@TempDir & "\dbxhist.conf","Historique de dosboxmount")
      $tempfile= @TempDir & "\dbxhist.conf"
      for $i = 1 to 5 Step 1
      IniWriteSection($tempfile,"histo" & $i,"label=Vide" & @CRLF & "commande=")
   next
      iniwritesection($tempfile,"Compteur","valeur=0")
EndIf
$histitem1=IniRead($tempfile,"histo1","label","Vide")
$histitem2=IniRead($tempfile,"histo2","label","Vide")
$histitem3=IniRead($tempfile,"histo3","label","Vide")
$histitem4=IniRead($tempfile,"histo4","label","Vide")
$histitem5=IniRead($tempfile,"histo5","label","Vide")
$Form1 = GUICreate("DosBoxMount !", 194, 159, 192, 124)
$MenuItem1 = GUICtrlCreateMenu("&Monter...")
$MenuItem2 = GUICtrlCreateMenu("&Historique...")
$menuitem3 = GUICtrlCreateMenu("Aide")
$idFileItem1 = GUICtrlCreateMenuItem("une image (*.img...)", $MenuItem1)
$idFileItem2 = GUICtrlCreateMenuItem("un iso", $MenuItem1)
$idFileItem3 = GUICtrlCreateMenuItem("un repertoire", $MenuItem1)
$idFileItem4 = GUICtrlCreateMenuItem("&Quitter", $MenuItem1)
$histfileitem1 = GUICtrlCreateMenuItem($histitem1,$MenuItem2)
$histfileitem2 = GUICtrlCreateMenuItem($histitem2,$MenuItem2)
$histfileitem3 = GUICtrlCreateMenuItem($histitem3,$MenuItem2)
$histfileitem4 = GUICtrlCreateMenuItem($histitem4,$MenuItem2)
$histfileitem5 = GUICtrlCreateMenuItem($histitem5,$MenuItem2)
$aideitem=GUICtrlCreateMenuItem("A propos",$menuitem3)
;~ GUICtrlSetState(-1, $GUI_CHECKED)
GUISetBkColor(0x000080)
fileinstall(".\dosboxmount.jpg", @ScriptDir & "\dosboxmount.jpg"); installation d'une image de fond (qui n'est pas obligatoire)
$Pic1 = GUICtrlCreatePic(@ScriptDir & "\dosboxmount.jpg", 0, 0, 193, 137)

;~ $dosbox = FileExists(@ScriptDir & "\dosbox.exe"); le programme fonctionne avec dosbox, il faut donc le placer dans le même répertoire que celui-ci
if $dosbox Then
   $dosbox = @scriptdir & "\dosbox.exe"
Else
   msgbox(0,"Erreur","Impossible de trouver Dosbox.exe" & @CRLF & "placer ce fichier au même niveau que Dosbos.exe, Au revoir !")
   exit
EndIf
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
      Case $idFileItem1
         $counthist = IniRead($tempfile,"compteur","valeur",1); un compteur qui permet de gérér un historique des fichiers ouverts
         $file2open = FileOpenDialog("Selection du jeu", @ScriptDir, "Images disque et disquettes (*.ima;*.img)", $FD_FILEMUSTEXIST); ouverture des images diskettes ou disque dur (.img, .ima ,ect...)
         If @error Then
            ContinueLoop
         Else
            $namehisto = $file2open
            $size = FileGetSize($file2open); récupération de la taille du fichier pour determiner comment l'ouvrir
            If $size < 2949121 Then ; c'est une image diskette
               $file="'" & $file2open & "'"
               $file="""imgmount a " & $file & "-t floppy""" ; création de la ligne de commande à envoyer à dosbox
               $line = " -c " & $file & " -c a: -c dir"
               $counthist = $counthist + 1 ; incrementation du compteur
               if $counthist > 5 Then ; l'historique permet de faire tourner les 5 derniers jeux joués
                  $counthist=1
                  IniWriteSection($tempfile,"Compteur","valeur=" & $counthist) ; écriture du compteur dans un fichier ini dans %temp%
                  IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
               Else
                  IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
                  IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
               EndIf
            Else
               $file="'" & $file2open & "'" ; si ce n'est pas une image diskette alors on monte un disque dur
               $file="""imgmount c " & $file & """"
               $line = " -c " & $file & " -c c: -c dir"
               $counthist = $counthist + 1
               if $counthist > 5 Then
                  $counthist=1
                  IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
                  IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
               Else
                  IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
                  IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
               EndIf
            EndIf
            executer($line)
         EndIf
      Case $idFileItem2
         $counthist = IniRead($tempfile,"compteur","valeur",1)
         $file2open = FileOpenDialog("Selection du jeu", @ScriptDir, "Images iso (*.iso)", $FD_FILEMUSTEXIST); ouvreture d'une image CD .iso
         If @error Then
            ContinueLoop
         Else
            $namehisto = $file2open
            $file="'" & $file2open & "'"
            $file="""imgmount d " & $file & "-t cdrom"""
            $line = " -c " & $file & " -c d:"
            $counthist = $counthist + 1
               if $counthist > 5 Then
                  $counthist=1
                  IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
                  IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
               Else
                  IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
                  IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)

               EndIf
            executer($line)
         EndIf
      Case $idFileItem3
         $counthist = IniRead($tempfile,"compteur","valeur",1)
         $file2open = FileSelectFolder("Selection du dossier", @ScriptDir); monter un dossier présent directement dans le disque de l'ordinateur
         If @error Then
            ContinueLoop
         Else
            $namehisto = $file2open
            $file="'" & $file2open & "'"
            $file="""mount c " & $file & """"
            $line = " -c " & $file & " -c c:"
            $counthist = $counthist + 1

            if $counthist > 5 Then
               $counthist=1
               IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
               IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
            Else
               IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
               IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
            EndIf
;~             MsgBox(0,"",$line)
            executer($line)
         EndIf
      case $idFileItem4
         Exit
      case $histfileitem1 ; gestion de l'historique, surement à améliorer car beaucoup de code redondant
         $file = IniRead($tempfile,"histo1","label","")
         if $file = "Vide" Then
            ContinueLoop
         Else
            $line=IniRead($tempfile,"histo1","commande","")
            Executer($line)
         EndIf
      case $histfileitem2
         $file = IniRead($tempfile,"histo2","label","")
         if $file = "Vide" Then
            ContinueLoop
         Else
            $line=IniRead($tempfile,"histo2","commande","")
            Executer($line)
         EndIf
      case $histfileitem3
         $file = IniRead($tempfile,"histo3","label","")
         if $file = "Vide" Then
            ContinueLoop
         Else
            $line=IniRead($tempfile,"histo3","commande","")
            Executer($line)
         EndIf
      case $histfileitem4
         $file = IniRead($tempfile,"histo4","label","")
         if $file = "Vide" Then
            ContinueLoop
         Else
            $line=IniRead($tempfile,"histo4","commande","")
            Executer($line)
         EndIf
      case $histfileitem5
         $file = IniRead($tempfile,"histo5","label","")
         if $file = "Vide" Then
            ContinueLoop
         Else
            $line=IniRead($tempfile,"histo5","commande","")
            Executer($line)
         EndIf
   case $aideitem
      MsgBox(4096,"Dosbox mount" & " version " & $version,"Concept et devellopement : -Marc GRAZIANI-")
   EndSwitch
WEnd
Func executer($file); la fonction qui permet de passer les paramètres a DOSBOX.
   ShellExecute($dosbox,$file)
EndFunc   ;==>executer
Pour l'image donnée dans fileinstall : Image

J'espère que ce script sera utile à certains qui comme moi cherchaient une solution pour lancer ses jeux rapidement
wiwileborne
Niveau 1
Niveau 1
Messages : 9
Enregistré le : lun. 12 déc. 2016 13:44
Status : Hors ligne

Re: Passer des paramètres a DOSBOX pour monter et lancer ses jeux.

#2

Message par wiwileborne »

Bonjour j'ai remarquer une petite erreur ligne 44 je crois pour moi donc j'ai remplacer la ligne par

if FileExists(@ScriptDir & "\dosbox.exe") Then
marcgforce
Niveau 3
Niveau 3
Messages : 47
Enregistré le : lun. 07 mars 2016 07:20
Status : Hors ligne

Re: Passer des paramètres a DOSBOX pour monter et lancer ses jeux.

#3

Message par marcgforce »

Bonjour, effectivement, la ligne j'avais placé la ligne au dessus en commentaire et ai oublié de corriger ce defaut, merci beaucoup :)
Répondre