Warnung: DosBox gehört neben Gngeo und Mame GP2x eindeutig zu den eher schwer ans Laufen zu bringenden Emulatoren. Für Einsteiger sind andere Emulatoren vorzuziehen.
Die Programme für DosBox sollten in installierter Form vorliegen, da sie auf ihrem Quellmedium (Diskette, CD) meist in gepackter Form vorhanden sind. Am besten ist es die Spiele auf den PC zu installieren, und dann den kompletten Ordner auf den GP2x zu kopieren.
Idealerweise benutzt man die PC Version von DosBox, da es unter Windows schon beim Installieren zu Problemen kommen kann.
Man kann die Spiele dann auch mit der PC Version testen, bevor man sich beim GP2x die Karten legt. Die PC Version ist durch ein Front End (D.O.G) deutlich komfortabler und man kann sehr viel schneller unterschiedliche Konfigurationen testen.
Hier gibt es übrigens eine Kompatibilitätsliste für die PC Version von DosBox.
Ein wenig Wissen über MS-DOS kann auch nicht schaden, will man DosBox benutzen. Zumindest sollten einen Begriffe wie "Pfad" und "Extended Memory" etwas sagen...
Zum Konfigurieren von DosBox für den GP2x braucht man unter Windows einen UNIX kompatiblen Editor. Ich nutze Notepad++.
Wichtig ist bei diesem How to, dass zwischen Groß und Kleinschreibung unterschieden wird! Auch sollte man Leerzeichen bei Ordner und Dateinamen vermeiden!
Auf gehts...
DosBox aus dem Archiv herunterladen:
Download DosBox 0.72-5
Das Archiv entpacken und auf die SD Karte kopieren. Dabei habe ich den Ordner auf der SD Karte den Namen "dosbox" gegeben.
Legt nun auf der SD Karte im Ordner "dosbox" einen weiteren Ordner mit dem Namen des Spiels an, daß Ihr auf dem GP2x nutzen wollt. Im diesem How to nennen wir den Ordner "Matrix".
In diesen Ordner kopieren wir die Programm Dateien vom PC hinein.
Ebenfalls in diesen Ordner müssen die Dateien: "dosbox.conf", "mapper.txt" und "Matrix.gpe" erstellt werden. Dies sind einfache Textdateien, die mit einem Editor wie Notebook++ erstellt werden können. Man kann dazu auch die Beispiele aus diesem How To herauskopieren oder man ändert die dem DosBox Archiv beigefügten Beispieldateien (im "Extra" Ordner).
Zuerst die Datei "Matrix.gpe". Die Datei kann frei nach Spielnamen benannt werden. In unserem Fall heißt das Spiel "Matrix Cubed"
Es besteht an diesem Punkt auch die Möglichkeit des Übertaktens. Dazu wird als erstes die Datei "cpu_speed.gpe", die man hier finden kann, in das Hauptverzeichniss der SD Karte kopiert.
Dann fügt man folgende Zeile in der Datei "Matrix.gpe" hinzu:
Die Zahl "280" bedeuten hier ein Übertakten auf 280 MHz. Die restlichen Zahlen optimieren den Speicherzugriff des GP2x. Einige GP2X haben mit diesen Timings allerdings Probleme und man sollte auf diese Optimierung verzichten.
Das Ganze sieht dann so aus:
Als nächstes wird die Datei "dosbox.conf" erstellt. In dem Bereich [autoexec] muß der Ordner des Spieles, in unserem Falle also "Matrix" und der Name des zu startenden DOS Programmes angegeben werden. Im Falle von Matrix Cubed ist das "START.EXE".
Weitere wichtige Einstellungen in der Datei "dosbox.conf" sind:
gp2x_mouse_speed = 0: Aktiviert die Maus Emulation und die Empfindlichkeit. Je höher der Wert, umso langsamer die Maus.
frameskip=0: Hier kann man durch Frameskip die Performance erhöhen. Dazu die 0 durch Werte von 1-3 ersetzen.
scaler: Hier kann man die Skalierung aktivieren (normal2x) oder deaktivieren (none).
fulldouble: Double Buffering ein/ausschalten (Werte: true/false).
machine: Optionen je nach emulierter Grafikkarte: hercules,cga,ega,vga.
memsize: RAM Speicher in MegaByte, Werte zwischen 2 und 8.
core: Emulationsart der CPU: "dynamic" für sehr schnelle Emulation durch Dynarec und "simple" oder "full" für kompatibel aber langsam.
cycles: Emulationsgeschwindigkeit, Werte zwischen 600 und 1500 sind zu empfehlen. Je höher der Wert, desto schneller ist die Emulation. Allerdings erreicht man schnell das Limit des GP2x. Man merkt das daran, dass der Sound anfängt zu stottern, da der GP2x voll ausgelastet ist. Weiteres Erhöhen bringt dann nichts mehr, eher das Gegenteil.
xms: Extended Memory emulieren (Werte: true/false).
ems: Expanded Memory emulieren (Werte: true/false).
umb: Upper Memory Block emulieren (Werte: true/false).
sbtype: Gibt die Art der Soundblasteremulation an. Möglich sind die Werte none,sb1,sb2,sbpro1,sbpro2,sb16. Ebenfalls wichtig sind die Werte darunter. Hier werden IRQ und DMA der Soundkarte eingestellt. Passen die Werte nicht mit denen die im Spiel eingestellt sind überein, gibt es keinen Sound bei der Emulation.
Wie diese Werte einzustellen sind, kommt auf das Spiel an. Hilfestellung bietet teilweise die Anleitung des Spiels unter dem Kapitel "Systemvorraussetzungen". Ansonsten sollte man halt mit den Werten experimentieren, wenn ein Spiel nicht läuft.
Man kann Teile der Soundemulation auf "false" stellen, bzw. die Samplefrequenz auf "11025" verringern, um die Geschwindigkeit des Spieles zu erhöhen.
Als letztes wird die Datei "mapper.txt" erstellt. Hier wird die Tastaturbelegung des GP2x festgelegt. Der linke Wert gibt dabei die PC Tastatur an und der Rechte die des GP2x.
Hier mal ein Beispiel um die Escape Taste auf die Start Taste des GP2x zu legen:
Die Key Codes des GP2x sind dabei folgende:
Hier habe ich mal eine Universal "mapper.txt" erstellt, die für viele Spiele passen sollte:
Der Bereich ab mod_1 "key 274" darf auf keinen Fall geändert werden. Ab hier stehen die Werte für die Virtuelle Tastatur.
Die ersten 5 Zuweisungen am Anfang (die mit "hand2 beginnen) sind Emulatorfunktionen und zwar in dieser Reihenfolge:
1. Legt die Virtuelle Tastatur auf die linke Schultertaste des GP2x. Dabei wählt "B" die Taste aus und mit "Start kann man die Virtuelle Tastatur wieder schließen. Mit den Lautstärketasten kann man die Farbe ändern.
2. Schaltet die Mausemulation ein und aus mit der "X" Taste.
3. Schaltet mit der rechten Schultertaste das OSD mit der FPS und Cycle Anzeige aus und ein.
5. und 6. erhöhen und erniedrigen die Cycle Anzahl mit den Lautstärketasten. Damit kann man versuchen die Performance des Emulators zu verbessern.
Die Zeilen darunter legen "Return" auf die Taste "B", "Space" auf die Taste "Select" und "Esc" auf die Taste "Start". Die Cursortasten sind auf den Joystick/das Pad gelegt.
"A" und "Y" sind frei und können noch belegt werden.
So, nun GP2x starten und die Datei "Matrix.gpe" ausführen.
Viel Spass!
Anmerkungen:
DosBox ist dafür bekannt, sehr ressourcenfressend zu sein. Man sollte also keine Wunderdinge erwarten. Es wird ein 486 PC mit 7MHz Taktfrequenz und ca. 8 MB Speicher emuliert. Alte 286 und einige 386 Spiele sollten einigermaßen laufen. Moderne Protected Mode Spiele laufen allerdings nur sehr langsam. Getestet habe ich bisher die Spiele "Wasteland" (1988), "Bad Blood" (1990), "Special Forces" (1992) und "Matrix Cubed" (1992), die alle annehmbar laufen.
Die Programme für DosBox sollten in installierter Form vorliegen, da sie auf ihrem Quellmedium (Diskette, CD) meist in gepackter Form vorhanden sind. Am besten ist es die Spiele auf den PC zu installieren, und dann den kompletten Ordner auf den GP2x zu kopieren.
Idealerweise benutzt man die PC Version von DosBox, da es unter Windows schon beim Installieren zu Problemen kommen kann.
Man kann die Spiele dann auch mit der PC Version testen, bevor man sich beim GP2x die Karten legt. Die PC Version ist durch ein Front End (D.O.G) deutlich komfortabler und man kann sehr viel schneller unterschiedliche Konfigurationen testen.
Hier gibt es übrigens eine Kompatibilitätsliste für die PC Version von DosBox.
Ein wenig Wissen über MS-DOS kann auch nicht schaden, will man DosBox benutzen. Zumindest sollten einen Begriffe wie "Pfad" und "Extended Memory" etwas sagen...
Zum Konfigurieren von DosBox für den GP2x braucht man unter Windows einen UNIX kompatiblen Editor. Ich nutze Notepad++.
Wichtig ist bei diesem How to, dass zwischen Groß und Kleinschreibung unterschieden wird! Auch sollte man Leerzeichen bei Ordner und Dateinamen vermeiden!
Auf gehts...
DosBox aus dem Archiv herunterladen:
Download DosBox 0.72-5
Das Archiv entpacken und auf die SD Karte kopieren. Dabei habe ich den Ordner auf der SD Karte den Namen "dosbox" gegeben.
Legt nun auf der SD Karte im Ordner "dosbox" einen weiteren Ordner mit dem Namen des Spiels an, daß Ihr auf dem GP2x nutzen wollt. Im diesem How to nennen wir den Ordner "Matrix".
In diesen Ordner kopieren wir die Programm Dateien vom PC hinein.
Ebenfalls in diesen Ordner müssen die Dateien: "dosbox.conf", "mapper.txt" und "Matrix.gpe" erstellt werden. Dies sind einfache Textdateien, die mit einem Editor wie Notebook++ erstellt werden können. Man kann dazu auch die Beispiele aus diesem How To herauskopieren oder man ändert die dem DosBox Archiv beigefügten Beispieldateien (im "Extra" Ordner).
Zuerst die Datei "Matrix.gpe". Die Datei kann frei nach Spielnamen benannt werden. In unserem Fall heißt das Spiel "Matrix Cubed"
#! /bin/sh
DIRROOT=/mnt/sd/dosbox
DIRGAME=${DIRROOT}/Matrix
cd ${DIRGAME}
${DIRROOT}/dosbox -conf ${DIRGAME}/dosbox.conf
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu
Es besteht an diesem Punkt auch die Möglichkeit des Übertaktens. Dazu wird als erstes die Datei "cpu_speed.gpe", die man hier finden kann, in das Hauptverzeichniss der SD Karte kopiert.
Dann fügt man folgende Zeile in der Datei "Matrix.gpe" hinzu:
/mnt/sd/cpu_speed.gpe --upll --timing 1 --cpuclk 280 --trc 6 --tras 4 --twr 1 --tmrd 1 --trfc 1 --trp 2 --trcd 2
Die Zahl "280" bedeuten hier ein Übertakten auf 280 MHz. Die restlichen Zahlen optimieren den Speicherzugriff des GP2x. Einige GP2X haben mit diesen Timings allerdings Probleme und man sollte auf diese Optimierung verzichten.
Das Ganze sieht dann so aus:
#! /bin/sh
/mnt/sd/cpu_speed.gpe --upll --timing 1 --cpuclk 280 --trc 6 --tras 4 --twr 1 --tmrd 1 --trfc 1 --trp 2 --trcd 2
DIRROOT=/mnt/sd/dosbox
DIRGAME=${DIRROOT}/Matrix
cd ${DIRGAME}
${DIRROOT}/dosbox -conf ${DIRGAME}/dosbox.conf
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu
Als nächstes wird die Datei "dosbox.conf" erstellt. In dem Bereich [autoexec] muß der Ordner des Spieles, in unserem Falle also "Matrix" und der Name des zu startenden DOS Programmes angegeben werden. Im Falle von Matrix Cubed ist das "START.EXE".
[sdl]
# fulldouble -- Use double buffering.
# output -- Can only be Surface for the gp2x.
# sensitivity -- Mouse sensitivity.
# mapperfile -- File used to load/save the key/event mappings from.
fulldouble=false
output=surface
sensitivity=100
mapperfile=mapper.txt
gp2x_mouse_speed = 0
fontcolor_front=3
fontcolor_back=15
fontcolor_frontsel=1
fontcolor_backsel=5
[dosbox]
# machine -- The type of machine tries to emulate:hercules,cga,tandy,pcjr,vga.
# memsize -- Amount of memory dosbox has in megabytes.
machine=vga
memsize=4
[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.
# Supported are none,normal2x,normal3x,advmame2x,advmame3x,hq2x,hq3x,
# 2xsai,super2xsai,supereagle,advinterp2x,advinterp3x,
# tv2x,tv3x,rgb2x,rgb3x,scan2x,scan3x.
# If forced is appended (like scaler=hq2x forced), the scaler will be used
# even if the result might not be desired.
frameskip=0
aspect=false
scaler=normal2x
[cpu]
# core -- CPU Core used in emulation: dynamic,simple,normal,full.
# Try dynamic first as this is the fastest, then simple,normal and last full
# cycles -- Amount of instructions dosbox tries to emulate each millisecond.
# Too low and the game will crash randomly / not start up
# Too high and expect slowness
# Just right and you will get a nice speed boost
# 600-1200 ish seems to be about the sweet spot for the things I've tested. (older games)
# cycleup -- Amount of cycles to increase/decrease with keycombo.
# cycledown Setting it lower than 100 will be a percentage.
core=simple
cycles=700
[mixer]
# nosound -- Enable silent mode, sound is still emulated though.
# rate -- Mixer sample rate, setting any devices higher than this will
# probably lower their sound quality.
# blocksize -- Mixer block size, larger blocks might help sound stuttering
# but sound will also be more lagged.
# prebuffer -- How many milliseconds of data to keep on top of the blocksize.
nosound=false
rate=11025
blocksize=512
prebuffer=10
[sblaster]
# sbtype -- Type of sblaster to emulate:none,sb1,sb2,sbpro1,sbpro2,sb16.
# sbbase,irq,dma,hdma -- The IO/IRQ/DMA/High DMA address of the soundblaster.
# mixer -- Allow the soundblaster mixer to modify the dosbox mixer.
# oplmode -- Type of OPL emulation: auto,cms,opl2,dualopl2,opl3.
# On auto the mode is determined by sblaster type.
# All OPL modes are 'Adlib', except for CMS.
# oplrate -- Sample rate of OPL music emulation.
sbtype=sb1
sbbase=220
irq=7
dma=1
hdma=5
mixer=true
oplmode=auto
oplrate=11025
[gus]
# gus -- Enable the Gravis Ultrasound emulation.
# gusbase,irq1,irq2,dma1,dma2 -- The IO/IRQ/DMA addresses of the
# Gravis Ultrasound. (Same IRQ's and DMA's are OK.)
# gusrate -- Sample rate of Ultrasound emulation.
# 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=11025
gusbase=240
irq1=5
irq2=5
dma1=3
dma2=3
ultradir=C:\ULTRASND
[speaker]
# pcspeaker -- Enable PC-Speaker emulation.
# pcrate -- Sample rate of the PC-Speaker sound generation.
# tandy -- Enable Tandy Sound System emulation (off,on,auto).
# For auto Tandysound emulation is present only if machine is set to tandy.
# tandyrate -- Sample rate of the Tandy 3-Voice generation.
# disney -- Enable Disney Sound Source emulation.
pcspeaker=true
pcrate=11025
tandy=off
tandyrate=11025
disney=false
[joystick]
# joysticktype -- needs to be none, or else expect no input.
joysticktype=none
[dos]
# xms -- Enable XMS support.
# ems -- Enable EMS support.
# umb -- Enable UMB support (false,true,max).
xms=true
ems=true
umb=true
[autoexec]
# lines of code to boot the dos program go here
mount C "/mnt/sd/dosbox/Matrix"
c:
START.EXE
exit
Weitere wichtige Einstellungen in der Datei "dosbox.conf" sind:
gp2x_mouse_speed = 0: Aktiviert die Maus Emulation und die Empfindlichkeit. Je höher der Wert, umso langsamer die Maus.
frameskip=0: Hier kann man durch Frameskip die Performance erhöhen. Dazu die 0 durch Werte von 1-3 ersetzen.
scaler: Hier kann man die Skalierung aktivieren (normal2x) oder deaktivieren (none).
fulldouble: Double Buffering ein/ausschalten (Werte: true/false).
machine: Optionen je nach emulierter Grafikkarte: hercules,cga,ega,vga.
memsize: RAM Speicher in MegaByte, Werte zwischen 2 und 8.
core: Emulationsart der CPU: "dynamic" für sehr schnelle Emulation durch Dynarec und "simple" oder "full" für kompatibel aber langsam.
cycles: Emulationsgeschwindigkeit, Werte zwischen 600 und 1500 sind zu empfehlen. Je höher der Wert, desto schneller ist die Emulation. Allerdings erreicht man schnell das Limit des GP2x. Man merkt das daran, dass der Sound anfängt zu stottern, da der GP2x voll ausgelastet ist. Weiteres Erhöhen bringt dann nichts mehr, eher das Gegenteil.
xms: Extended Memory emulieren (Werte: true/false).
ems: Expanded Memory emulieren (Werte: true/false).
umb: Upper Memory Block emulieren (Werte: true/false).
sbtype: Gibt die Art der Soundblasteremulation an. Möglich sind die Werte none,sb1,sb2,sbpro1,sbpro2,sb16. Ebenfalls wichtig sind die Werte darunter. Hier werden IRQ und DMA der Soundkarte eingestellt. Passen die Werte nicht mit denen die im Spiel eingestellt sind überein, gibt es keinen Sound bei der Emulation.
Wie diese Werte einzustellen sind, kommt auf das Spiel an. Hilfestellung bietet teilweise die Anleitung des Spiels unter dem Kapitel "Systemvorraussetzungen". Ansonsten sollte man halt mit den Werten experimentieren, wenn ein Spiel nicht läuft.
Man kann Teile der Soundemulation auf "false" stellen, bzw. die Samplefrequenz auf "11025" verringern, um die Geschwindigkeit des Spieles zu erhöhen.
Als letztes wird die Datei "mapper.txt" erstellt. Hier wird die Tastaturbelegung des GP2x festgelegt. Der linke Wert gibt dabei die PC Tastatur an und der Rechte die des GP2x.
Hier mal ein Beispiel um die Escape Taste auf die Start Taste des GP2x zu legen:
key_esc "key 264"
Die Key Codes des GP2x sind dabei folgende:
GP2x Button = Key code
Oben = key 256
Oben/Links = key 257
Links = key 258
Unten/Links = key 259
Unten = key 260
Unten/Rechts = key 261
Rechts = key 262
Oben/Rechts = key 263
Start = key 264
Select = key 265
L = key 266
R = key 267
A = key 268
B = key 269
X = key 270
Y = key 271
Vol+ = key 272
Vol- = key 273
Stick Click = key 274
Hier habe ich mal eine Universal "mapper.txt" erstellt, die für viele Spiele passen sollte:
hand_g2virtkey "key 266"
hand_g2mouse "key 270"
hand_g2debug "key 267"
hand_cycleup "key 272"
hand_cycledown "key 273"
key_up "key 256"
key_left "key 258"
key_down "key 260"
key_right "key 262"
key_enter "key 269"
key_space "key 265"
key_esc "key 264"
mod_1 "key 274"
key_1 "key 49"
key_2 "key 50"
key_3 "key 51"
key_4 "key 52"
key_5 "key 53"
key_6 "key 54"
key_7 "key 55"
key_8 "key 56"
key_9 "key 57"
key_0 "key 48"
key_a "key 97"
key_b "key 98"
key_c "key 99"
key_d "key 100"
key_e "key 101"
key_f "key 102"
key_g "key 103"
key_h "key 104"
key_i "key 105"
key_j "key 106"
key_k "key 107"
key_l "key 108"
key_m "key 109"
key_n "key 110"
key_o "key 111"
key_p "key 112"
key_q "key 113"
key_r "key 114"
key_s "key 115"
key_t "key 116"
key_u "key 117"
key_v "key 118"
key_w "key 119"
key_x "key 120"
key_y "key 121"
key_z "key 122"
key_f1 "key 282"
key_f2 "key 283"
key_f3 "key 284"
key_f4 "key 285"
key_f5 "key 286"
key_f6 "key 287"
key_f7 "key 288"
key_f8 "key 289"
key_f9 "key 290"
key_f10 "key 291"
key_f11 "key 292"
key_f12 "key 293"
key_space "key 32"
key_grave "key 96"
key_minus "key 45"
key_equals "key 61"
key_lbracket "key 91"
key_rbracket "key 93"
key_semicolon "key 59"
key_quote "key 39"
key_comma "key 44"
key_period "key 46"
key_slash "key 47"
key_backslash "key 92"
key_lessthan "key 60"
key_lshift "key 304"
key_bspace "key 8"
key_enter "key 13"
key_esc "key 27"
key_lalt "key 308"
key_lctrl "key 306"
key_ralt "key 307"
key_rctrl "key 305"
key_insert "key 277"
key_home "key 278"
key_delete "key 127"
key_end "key 279"
key_pagedown "key 281"
key_pageup "key 280"
key_tab "key 9"
key_pause "key 19"
Der Bereich ab mod_1 "key 274" darf auf keinen Fall geändert werden. Ab hier stehen die Werte für die Virtuelle Tastatur.
Die ersten 5 Zuweisungen am Anfang (die mit "hand2 beginnen) sind Emulatorfunktionen und zwar in dieser Reihenfolge:
1. Legt die Virtuelle Tastatur auf die linke Schultertaste des GP2x. Dabei wählt "B" die Taste aus und mit "Start kann man die Virtuelle Tastatur wieder schließen. Mit den Lautstärketasten kann man die Farbe ändern.
2. Schaltet die Mausemulation ein und aus mit der "X" Taste.
3. Schaltet mit der rechten Schultertaste das OSD mit der FPS und Cycle Anzeige aus und ein.
5. und 6. erhöhen und erniedrigen die Cycle Anzahl mit den Lautstärketasten. Damit kann man versuchen die Performance des Emulators zu verbessern.
Die Zeilen darunter legen "Return" auf die Taste "B", "Space" auf die Taste "Select" und "Esc" auf die Taste "Start". Die Cursortasten sind auf den Joystick/das Pad gelegt.
"A" und "Y" sind frei und können noch belegt werden.
So, nun GP2x starten und die Datei "Matrix.gpe" ausführen.
Viel Spass!
Anmerkungen:
DosBox ist dafür bekannt, sehr ressourcenfressend zu sein. Man sollte also keine Wunderdinge erwarten. Es wird ein 486 PC mit 7MHz Taktfrequenz und ca. 8 MB Speicher emuliert. Alte 286 und einige 386 Spiele sollten einigermaßen laufen. Moderne Protected Mode Spiele laufen allerdings nur sehr langsam. Getestet habe ich bisher die Spiele "Wasteland" (1988), "Bad Blood" (1990), "Special Forces" (1992) und "Matrix Cubed" (1992), die alle annehmbar laufen.