Mit dem letzten XBMC Update (Dharma, 10.0) ist unter anderem der Plugin Support verbessert worden. Plugins können nun direkt über XBMC heruntergeladen und installiert werden.
Unter den vielen Plugins gibt es ein Programm Plugin namens "Executor" dass es erlaubt Starter zu definieren und diese von XBMC aus zu starten.
Dieses Plugin werde ich benutzen um auf meinem HTPC alte DOS-Spiele zu starten. Die meisten alten Kracher wie z.B. Prince of Persia oder The Lost Vikings sind abandonware und sind auf http://www.abandonia.com/ frei erhältlich.
Da diese Spiele natürlich native auf einem Linux System nicht funktionieren (sie funktionieren auf Windows meist auch nicht mehr) braucht man einen Emulator: dosbox emuliert einen kompletten DOS PC und ist unter anderem für Windows und Linux erhältlich.
Nach dem Start erhält man einen DOS prompt:
Um auf lokale Verzeichnisse zugreifen zu können müssen diese erst per mount eingebunden werden. Die Syntax ist folgende:
mount <laufwerk> <verzeichnis>
Danach kann man schon loslegen und Spielen!
Sollen diverse Befehle automatisch beim Start ausgeführt werden so können diese in der [autoexec] Section in der config angegeben werden. Unter Linux befindet sich diese im Verzeichnis ~/.dosbox:
[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
mount c /home/wizard/games
c:
Somit wird /home/wizard/games auf c gemounted und anschließend das Laufwerk gewechselt.
Standardmässig ist das Tastaturlayout auf Englisch; will man es auf Deutsch haben, so kann man das in der [dos] Section in der config ändern:
[dos]
[...]
keyboardlayout=gr
Eine Liste der verfügbaren Layouts befindet sich hier.
Wer Dosbox im Vollbildschirmmodus starten will, kann dies ebenfalls in der config angeben:
[sdl]
[...]
fullscreen=true
Nachdem man dosbox fertig konfiguriert hat kann man daran gehen, Starter für Spiele zu basteln. Mit -c kann dosbox ein Befehl übergeben werden, der ausgeführt werden soll. Wird dosbox z.B. folgendermaßen gestartet:
dosbox -c "cd lotus" -c "lotus"
so wird zuerst in das Verzeichnis "Lotus" gewechselt, und dann das Spiel gestartet. Wird das Spiel beendet so wird allerdings dosbox nicht beendet. Dies ist allerdings notwendig, damit später wenn dosbox von XBMC aufgerufen wird die Kontrolle wieder an XBMC zurückgeht wenn das Spiel beendet wird. Ein hinzufügen von
dosbox -c [...] -c "exit"
bringt leider nicht das gewünschte Ergebnis, und beendet dosbox sofort wieder. Der Switch -exit brachte bei mir leider nicht das gewünschte Ergebnis, und beendete dosbox nicht. Als Abhilfe habe ich mir ein kleines Shell-Script geschrieben, das dosbox startet und bei bedarf ein batchscript schreibt das dosbox nachdem das Spiel beendet wurde auch beendet:
#!/bin/bash
export basedir=/home/wizard/games
export folder=$1
export executable=$2
#etwaige spezialsettings für games
if [ -e "$basedir/startscripts/$executable_start.sh" ]; then
echo calling specific script
$basedir/startscripts/$executable_start.sh
fi
#dosbox soll sich nach beenden des spiels auch wieder beenden;
#leider führt ein weiteres -c "exit" zum sofortigen beenden
#darum bei bedarf ein batchscript schreiben dass nach beenden
#des spieles dosbox beendet
if [ ! -e "$basedir/$folder/$executable.bat" ]; then
echo batchscript does not exist, create it
echo $executable.exe > $basedir/$folder/$executable.bat
echo exit >> $basedir/$folder/$executable.bat
fi
dosbox -c "cd $folder" -c "$executable.bat" -noconsole -exit
if [ -e "$basedir/startscripts/$executable_stop.sh" ]; then
echo calling specific script
$basedir/startscripts/$executable_stop.sh
fi
Diesem Script muss nun nur noch der Unterordner und die Executable übergeben werden und los gehts.
Benötigt ein Spiel vor dem Start von dosbox noch irgendwelche Spezialsettings oder muss vorher noch etwas gestartet werden, so starte ich diese Programme im <spielname>_start.sh; in <spielname>_stop.sh können Aktionen nach dem Beenden des Spieles ausgeführt werden (z.B. in _start gestartete Programme beenden etc.).
Sollten in dosbox für ein Spiel noch spezielle Settings vorgenommen werden, so kann ich dies im erzeugten Batchscript hinzufügen. Da dieses File nur geschrieben wird wenn es noch nicht existiert bleiben etwaige Änderungen erhalten.
Um ein DOS Spiel zu starten muss ich nun also nur noch das Script mit den Parametern aufrufen:
./startdosgame.sh lotus lotus
Nun kann ich darangehen, die Spiele in Executor einzubinden. Dies kann ich entweder über die GUI in XBMC machen, oder ich editiere das zugehörige config File. Will man mehr als nur ein Spiel hinzufügen ist man eindeutig über das config File schneller.
Das File programs.cfg befindet sich unter
~/.xbmc/userdata/addon_data/plugin.program.executorDort gibt es je Spiel einen Eintrag:
[name]
exec = /pfad/zu/executable
icon = /pfad/zu/imageHier füge ich unser Script ein und rufe es mit den Richtigen Parametern auf. Im Verzeichnis "lotus" liegt die executable "lotus"; das Spiel heißt Lotus:
[lotus]
exec = /home/wizard/games/startscripts/startdosgame.sh lotus lotus
icon = /home/wizard/games/icons/lotus.pngUnd schon erscheint es im Executor Menü:
Von dort aus kann ich das Spiel nun starten, und es heißt Gamepad krallen und Spielen bis der Daumen glüht!

Keine Kommentare:
Kommentar veröffentlichen