PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [DEUTSCH] Übersicht



SailorSat
07-11-2007, 12:57
Was ist cabMAME?
cabMAME(UI) ist eine speziell auf den Cabinet Betrieb angepasste Version von MAME bzw. MAMEUI. cabMAME umfasst eine Reihe von "Hacks" die das Verhalten von MAME so verändern, damit es im Cabinet Betrieb weniger "Störfaktoren" gibt.

Hierbei spielt es im übrigen keine Rolle ob ihr einen Arcade-Bildschirm mit 15kHz, einen "Präsentationsbildschirm" mit 31kHz oder einen normalen VGA Monitor verwendet, für jeden ist etwas dabei.



Einige Hacks im Detail
Ich will versuchen hier einige Hacks zu beschreiben, also was sie tun und wofür sie gut sind.


SoundSync
Grade bei neueren MAME Versionen kommt es in Verbindung mit VSync oder TrippleBuffer gerne zu leichtem stottern im Ton, als Beispiel seien hier Pac-Man und Galaga genannt, da diese Spiele eigentlich eine Bildwiederholrate von 60,61Hz haben, und damit auf 60,00Hz oder weniger (ArcadeVGA) abgebremmst werden. Dadurch kann das Spiel nicht mehr genug "Sound-Samples" in den Puffer schreiben, und es kommt zu einem sogenannten Underrun, das heißt Windows liest schneller die Daten als MAME sie erzeugt, und der Ton springt bzw. stottert.

SoundSync ist nun ein kleiner Hack der die "Abspielgeschwindigkeit" des Soundpuffers verändert, ausgehend von der Emulationsgeschwindigkeit.
Wenn also Pac-Man nur mit 98% Geschwindigkeit emuliert wird, so wird die Soundausgabe ebenfalls auf 98% reduziert. Zwar wird der Ton damit minimal tiefer und langsamer, allerdings hört man das zum einen kaum, zum anderen ist das immernoch besser als wenn der Ton springt :).



CleanStretch
Einige kennen vielleicht noch die Funktion "CleanStretch" aus den älteren MAME Versionen.
Nun, normalerweise vergrößert MAME das Bild (unter Direct3D) mit Flieskommazahlen. Das bedeutet konkret, das ein Spiel, von 304 Pixeln Breite auf 320 Pixel Breite gezogen würde, was einem Faktor von 1,0526... entspräche. Bei einer Auflösung mit 640 Pixel breite wäre der Faktor entsprechend schon 2,1052.... Das hat zur Folge das das Bild zwar "Bildschirmfüllend" ist, es aber bei niedrigen Auflösungen zu deutlich sichtbaren verzerrungen kommt.

Nun, CleanStretch ist ein kleiner Hack, der dazu führt das statt mit Flieskommazahlen nur noch mit Ganzzahlen Gerundet wird, das Bedeutet, ein 304 Pixel Bild würde auf einer 320 Pixel Auflösung bei eben 304 Pixeln, Faktor 1 bleibt, und bei einer 640 Pixel Auflösung auf 604 Pixel Bild, bei einem Faktor von 2 kommt. Dadurch wird immer "Pixelgenau" vergrößert und es kommt zu keinen Verzerrungen. Und das bisschen schwarzen Rand außenrum, kann man zur Not an den Monitor Einstellungen nachjustieren.



ChangeRes
MAME wechselt im normalfall nur einmal die Bildschirmauflösung, nämlich zu beginn der Emulation. In fast allen Fällen ist das auch genug, da nur sehr wenige Spiele nachträglich die Auflösung umschalten.

Nehmen wir als Beispiel die PSX basierten Spiele.
Die PSX Hardware kann eine Auflösung von 640x480 darstellen, was die Meisten Spiele zumindest im BIOS und/oder auf dem Titelbildschirm auch tun, jedoch schalten die meisten Spiele "im Spiel" auf eine geringere Auflösung wie z.B. 512x240 Pixel runter. Das normale MAME würde hier entweder zoomen müssen, was nicht schön aussieht, oder müsste Trauerränder setzen, was ebenfalls nicht schön ist.

Für genau diese Fälle kommt ChangeRes ins Spiel. Hiermit können Spiele nachträglich die Auflösung erneut umschalten. Einziger wehmutstropfen, bei 3Dfx Voodoo basierten Spielen kann es passieren das MAME sich auf MultiThreaded/MultiCore PCs dabei aufhängt :(.



Redraw
Wenn man mit VSync und TrippleBuffer arbeitet, sollte man idealerweise "Throttle" deaktivieren damit es nicht wegen eventuell übersprungener Bilder zu leichtem rucken kommt.

Dummerweise gibt es aber Spiele, wie z.B. Green Beret die mit 30Hz laufen, und folgerichtig ohne "Throttle" auf einem 60Hz Bildschirm mit 200% Geschwindigkeit laufen und folglich unspielbar werden.
Etwas ähnliches passiert wenn man auf einem Präsentationsmonitor eine LowRes Auflösung mit 120Hz darstellt, da hier ebenfalls alles mit 200% (oder mehr) läuft.

An dieser Stelle greift Redraw ein, und prüft regelmäßig die Emulationsgeschwindigkeit und passt gegebenenfalls (über 150%) den sogenannten "Redraw Faktor" an. Je höher dieser Faktor ist, desto öfter wird ein Bild "übermalt", das bedeutet das MAME ein und das selbe Bild mehrmals an die Grafikkarte überträgt, und damit die Emulationsgeschwindigkeit effektiv drosselt. Normale 60Hz Spiele bekommen damit bei 120Hz einen Faktor von 1, werden also "einmal übermalt" bzw. doppelt ausgegeben, Spiele wie Green Beret, die normal 30Hz haben, werden bei 120Hz schon mit einem Faktor von 3 ausgegeben, also "dreimal übermalt" bzw. vierfach ausgegeben.




Konfiguration
Alle diese Hacks lassen sich über die MAME.INI (bei cabMAME) bzw. die INI/MAME.INI (bei cabMAMEUI) einstellen.
Eine Konfiguration über das MAMEUI Menü ist derzeit leider noch nicht möglich.

Da wären folgende Optionen:


cleanstretch 0/1 - kann entweder 0 (Flieskomma-Zoom) oder 1 (Ganzzahl-Zoom) sein.


changeres 0/1 - kann entweder 0 (einmalig Auflösung umschalten) oder 1 (mehrfach Auflösung umschalten) sein.


redraw auto/0-X - kann entweder auto (automatisch anpassen), 0 (nicht "übermalen") oder eine Zahl ab 1 (X mal übermalen) sein.




Downloads


Hacks 0.146 als .DIFF (http://files.arianchen.de/cabmame/0146_hacks.zip)


cabMAME 0.146 {32Bit} (http://files.arianchen.de/cabmame/0146_cabmame32.zip)
cabMAME 0.146 {64Bit} (http://files.arianchen.de/cabmame/0146_cabmame64.zip)


cabMESS 0.146 {32Bit} (http://files.arianchen.de/cabmame/0146_cabmess32.zip)
cabMESS 0.146 {64Bit} (http://files.arianchen.de/cabmame/0146_cabmess64.zip)



Keine UI-Varianten im Moment :(