PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MAME 0.113 und der Sound



SailorSat
06-03-2007, 14:11
Wah...
Ich mein das Aaron ein Händchen dafür hat Sachen kaputt zu fixen ist ja nichts neues.
Aber die neue Sound Engine ist ein Graus :)

Pac-Man (und die anderen 60,60Hz Spiele) ist derzeit auf meinem CAB nicht ordentlich zu hören.
Selbst mit Frameskip auf 1 oder Auto springt der Sound.

Ich hab ihm zwar schon eine Mail geschrieben in der ich ihm ein paar Vorschläge mache wie man das Problem "elegant" löst, aber ob und wann er darauf eingeht ist ja immer so eine Sache...

Gehen wir also davon aus unsere Emulation erzeugt bei 100% pro Sekunde 60,60 Bildern und 44100 Audiosamples.

Das ganze wird über die Grafikkarte "ausgebremst" auf etwa 59,98 Hz Bildfrequenz.

59,98 / 60,60 = ~0,98 = 98%

Der derzeitige Fehler besteht darin, das der Ton weiterhin mit 44100Hz abgegriffen wird, wir aber bei 98% Emulationsgeschwindigkeit nur 43218 Audiosamples erzeugen.

Da gibt es nun zwei Lösungen.

Die erste wäre, am Host (also DirectSound unter Windows) die Samplerate auf eben 43218 zu senken. Das könnte allerdings zu Problemen mit Digitalen Abspielgeräten führen (z.B. einem Dolby 5.1 Verstärker).

Die zweite wäre, in MAME einen Zwischenpuffer einzufügen der sich 43218 Audiosamples nimmt, und sie auf 44100 umrechnet.

Ein schöner Vergleich ist, wenn ich eine Schallplatte "langsamer" abspiele.

Luigi
06-03-2007, 14:31
Wah...
Ich mein das Aaron ein Händchen dafür hat Sachen kaputt zu fixen ist ja nichts neues.
Aber die neue Sound Engine ist ein Graus :)

Pac-Man (und die anderen 60,60Hz Spiele) ist derzeit auf meinem CAB nicht ordentlich zu hören.
Selbst mit Frameskip auf 1 oder Auto springt der Sound.

Ich hab ihm zwar schon eine Mail geschrieben in der ich ihm ein paar Vorschläge mache wie man das Problem "elegant" löst, aber ob und wann er darauf eingeht ist ja immer so eine Sache...

Gehen wir also davon aus unsere Emulation erzeugt bei 100% pro Sekunde 60,60 Bildern und 44100 Audiosamples.

Das ganze wird über die Grafikkarte "ausgebremst" auf etwa 59,98 Hz Bildfrequenz.

59,98 / 60,60 = ~0,98 = 98%

Der derzeitige Fehler besteht darin, das der Ton weiterhin mit 44100Hz abgegriffen wird, wir aber bei 98% Emulationsgeschwindigkeit nur 43218 Audiosamples erzeugen.

Da gibt es nun zwei Lösungen.

Die erste wäre, am Host (also DirectSound unter Windows) die Samplerate auf eben 43218 zu senken. Das könnte allerdings zu Problemen mit Digitalen Abspielgeräten führen (z.B. einem Dolby 5.1 Verstärker).

Die zweite wäre, in MAME einen Zwischenpuffer einzufügen der sich 43218 Audiosamples nimmt, und sie auf 44100 umrechnet.

Ein schöner Vergleich ist, wenn ich eine Schallplatte "langsamer" abspiele.



Bahnhof - Abfahrt - Gepäckträger :D

zyx
06-03-2007, 15:40
naja man könnte sagen das ihm halt eine bessere emulation wichtiger ist als die spielbarkeit. bisher ist aber noch fast alles "gefixt" worden.

@luigi: so schwer ist das jetzt aber auch nicht. Sailor hat ja extra für dich einen guten vergleich hinterlassen..;)

Luigi
06-03-2007, 18:08
@zyx: ganz so blöd bin ich ja auch nicht, ich finds nur interessant, mit welch unterschiedlichen Sachen sich die Leute beschäftigen. Ich meine jetzt nicht Mame im Allgemeinen, sondern so die Feinheiten: Die einen überlegen sich, wie sie welche Controller am besten da verwenden können, andere beschäftigen sich mit der 100%-Emulation und den daraus resultierenden Problemen und deren Lösungen :)

KoolKolo
06-03-2007, 18:37
Wah...

Da gibt es nun zwei Lösungen.

Die erste wäre, am Host (also DirectSound unter Windows) die Samplerate auf eben 43218 zu senken. Das könnte allerdings zu Problemen mit Digitalen Abspielgeräten führen (z.B. einem Dolby 5.1 Verstärker).

Die zweite wäre, in MAME einen Zwischenpuffer einzufügen der sich 43218 Audiosamples nimmt, und sie auf 44100 umrechnet.

Ein schöner Vergleich ist, wenn ich eine Schallplatte "langsamer" abspiele.

Mame und der Sound, das war ja schon immer ein Problemkind.
ich finde es sehr schade, daß das nun wieder so stiefmütterlich von den Mame Devs behandelt wird, denn ein ordentlicher Sound gehört ja noch immer dazu.
100% Emulation, ja, aber bitte nicht mit 0% Spaß an der Joystick Front.

Nr. 1 wird wohl nicht passieren und Nr.2 wohl nur mit einem ungeliebten "patch", der erst kommt, wenn genug Leute auch das Problem feststellen. da viele aber nicht wöchentlich upgraden wird das dauern :(

zyx
06-03-2007, 18:53
ja dauern wirds sicherlich etwas, gerade beim sound der schlecht "emuliert" werden kann.. Aber ein Lösung wird sicherlich nachgeliefert...

SailorSat
02-04-2007, 03:28
Jau, und zwar von mir! :D
Wenn auch nur unter Windows.

Und zwar bedien ich mich einem relativ simplen Trick :evil:
1 Zeile verändert, 2 Zeilen hinzugefügt.


---


src\osd\windows\sound.c - Ab Zeile 188 hinzufügen

IDirectSoundBuffer_SetFrequency(stream_buffer, Machine->sample_rate);
Setzt regelmäßig (ich glaube jede volle Sekunde) die Abspiel-Frequenz des DirectSound Streams auf den Inhalt von "Machine->sample_rate".


---


src\osd\windows\sound.c - In Zeile 381 ändern

stream_desc.dwFlags = DSBCAPS_CTRLVOLUME | DSBCAPS_GLOBALFOCUS | DSBCAPS_GETCURRENTPOSITION2;

durch

stream_desc.dwFlags = DSBCAPS_CTRLVOLUME | DSBCAPS_GLOBALFOCUS | DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLFREQUENCY;

Änder die Parameter des DirectSound Streams so, das man auch die Frequenz verändern kann.


---


src\emu\video.c - In Zeile 1473 hinzufügen

Machine->sample_rate = options_get_int(mame_options(), OPTION_SAMPLERATE) * global.speed_percent;
Aktualisiert bei jeder vollen Sekunde den Wert in "Machine->sample_rate" mit dem Ergebniss der Sound-Frequenz in der mame.ini, multipliziert mit dem Prozentwert der Emulation (1.0 = 100%).


---


Im Falle von Pac-Man (60,61Hz) wäre das bei exakt 60,00Hz Ausgabe wiefolgt.
MAME.INI-Frequenz = 48000Hz
Emulations-Prozent = 60Hz / 60,61Hz = 0,989 (98,9%)
Machine->sample_rate = 48000Hz * 0,989 = 47472Hz

Das bedeutet konkret das Pac-Man etwas langsamer abgespielt wird und tiefer klingt, was allerdings bei dem einen Prozent praktisch nicht auffällt.

Nebenbei wird auch das Neo-Geo, das ja eigentlich 59.19Hz hat, etwas schneller abgespielt wird, und etwas höher klingt.
60Hz / 59.19Hz = 1,013 (101,3%)
48000Hz * 1,013 = 48624Hz

Bei mir im Cab wird vorerst nur MAME mit eben diesem 3-Zeilen Hack laufen, damit der Sound perfekt synchron ist.

Nedo
02-04-2007, 08:55
Da ich selber nicht MAME compiliere bleib ich vorerst bei 0.111
bis sich da was tut, aber vielleicht kann mir aber jemand die
Mame32 plus 0.113 mit Sailorsat's Hack compilieren ?
wäre zu nett ;)

Nitewing
02-04-2007, 20:53
Sach mal Sailorsat,

woher kannst du diesen ganzen Kram eigentlich? Is ja doch etwas "ungewöhnlich" das ein 24jähriges Mädel die meisten hier mit Technik- und Softwarewissen verwirrt... und dann auch noch mit Hand und Fuß...

Stand da nicht was von Kauffrau in Deinem Profil?

EIn verwirrter Nitewing mit noch verwirrteren Grüßen :confused::confused::confused::D

SailorSat
02-04-2007, 21:58
a) Weibliche Neugier ;)
b) Früh mit Hardwaregebastel angefangen (Null Modem Kabel für den Amiga iirc.)
c) Zuviel Zeit
d) Ehrgeiz :D

Such dir was aus :)

Retrodreamer
03-04-2007, 03:01
a) Weibliche Neugier ;)
b) Früh mit Hardwaregebastel angefangen (Null Modem Kabel für den Amiga iirc.)
c) Zuviel Zeit
d) Ehrgeiz :D

Such dir was aus :)


einfach unglaublich ;)

loray
03-04-2007, 09:09
hmm... ich hab dbzgl. mit SDLMAME 0.113 noch nichts feststellen können - hab aber auch noch nicht wirklich Zeit gehabt weil ich mich mit QT4 rumärgere :D
Denke mal die Soundumstellungen die ja ab 0.112 gemacht werden, werden sicher in den kommenden Versionen verbessert. Vom Grunde her wäre die Emulation ja auch so korrekt was die Töne betrifft etc.

SailorSat
03-04-2007, 11:08
Wenn ich eine Schallplatte mit 75% abspiel wir der Ton langsamer und tiefer anstatt zu springen und sich zu wiederholen :)

loray
03-04-2007, 11:54
nanana, wer wird denn gleich ;)
ehrlich gesagt hab ich es eben mal mit paar Games gecheckt, hab das Problem mit SDLMame nicht, wenn ich auf Frameskip "auto" schalte und mir werden immer schön 100% angezeigt. Werde das aber mal ausführlich abchecken.

SailorSat
03-04-2007, 12:10
pfui deivel, auto frameskip :)
Werd mir wohl doch mal SDLmame anschauen :)

loray
04-04-2007, 06:10
tja... alles zurück, behaupte das Gegenteil ;)
Hatte gestern Pooyan gecheckt - der Einmarsch der Schweinchen war mehr mit dem Einmarsch der Gladiatoren zu vergleichen - dem Tamtam nach, das gemacht wurde. Trommelwirble Trommelwirbel... und das 5fach überschlagen :D - richtig zum Würgen.
Da bringen wohl die besten settings nichts... entweder hängt der Sound oder wird mehrfach gespielt. Schau mir mal die SDLMame 0.114 an, sobald ich dafür ein package bekomme - zum Kompilieren hab ich mom. keine Zeit, evtl. mal die späteren Versionen.
Ansonsten hoffe ich mal, dass die da bald was schrauben.

loray
04-04-2007, 08:48
so, jetzt hab ich den Spass mal mit SDLMame 0.114 getestet.
Wenn ich dann autoframeskip = false, switchres = true, rdtsc = true
schalte, dann funktioniert bei mir Pooyan einwandfrei und auch Frogger z. B.
- das konnte ich mit der 0.113 nicht behaupten :D
Also, nen Versuch ist es wert - ich warte auf deinen Bericht ;)

SailorSat
05-04-2007, 14:45
Wah...
R-Type mit MAME 0.114 auf einer ArcadeVGA ist ja ein Drama :)
Mit Tripple Buffering hab ich elenden Sound (401x256 = 53Hz, R-Type = 55Hz)
Ohne Tripple Buffering ziemlich massiv Tearing.

Konrad
05-04-2007, 14:53
Jaha ! SO macht das Spass. Wie war das ? Never change a running system ;) ? Solange alle Spiele, die ich auf meinem Automaten habe(n will), vernünftig laufen, werde ich mich wegen eben solchen Gründen nicht zum Update animieren lassen :D.

nexus6
05-04-2007, 14:59
al sich die news von der soundänderung hörte, habe ich nur bis 0.112 geupdated und bin froh darum.

SailorSat
05-04-2007, 15:05
Aaron hat wirklich ein Händchen dafür Sachen kaputt zu machen ;)

nexus6
05-04-2007, 15:20
und das alles im namen der 100%igen emulation ;)

SailorSat
05-04-2007, 16:13
Wobei 0.114 natürlich auch was gutes hat :D

Virtua Racing mit Wheel und Pedalen ist mal gooooil :)

nexus6
05-04-2007, 16:15
ist es denn in einer erträglichen geschwindigkeit spielbar?

Konrad
05-04-2007, 16:23
Ahjoa, auf jeden Fall. Hat aber noch einige Bugs.

SailorSat
05-04-2007, 16:33
Also auf meinem 3GHz P4 schon.

Auf dem Athlon64 3000+ hab ich bei FrameSkip 0 so etwa 65%

loray
06-04-2007, 10:34
hmmm... ich weiss nicht, werde irgendwie auch nicht glücklich mit der 0.114. Andauernd darf ich bei den Games an den settings rumschrauben, dass ich vernünftige Geschwindigkeit und Sound hab.
Habs aber auch mal mit 0.112 probiert - gleicher Dreck. Irgendwie war die letzte vernünftige die 0.106 xmame.SDL die einwandfrei lief ohne Probleme.

Konrad
06-04-2007, 13:20
Naja. Aber was der Aaron auf der Homepage schreibt liest sich auf jeden Fall vernünftig. Und bei so einschneidenden Änderungen ist es klar, dass Probleme auftauchen. Ich hoffe mal, dass bis 0.115 die Soundprobleme wieder behoben sind. Gehe ich auch eigentlich von aus. Bei so vielen Leuten, die meckern ;) (siehe BYOAC)...

loray
06-04-2007, 16:44
ich sag mal so, wenn man mit Audio latency rumspielt bekommt man eigentlich jedes Spiel irgendwie hin. Allerdings bin ich es eben nicht gewohnt, dass ich für jedes Game an den settings rumbasteln muss :D

loray
07-04-2007, 09:27
wenn ich bei mir Audio latency auf "-2" stelle läuft jedes Spiel einwandfrei, egal ob alt oder neu :) Also vielleicht mal etwas rumspielen.

nexus6
16-08-2007, 08:32
endlich tut sich was (0.118u2):

Added new experimental control for overall emulation speed. This
lets you specify how fast/slow the gameplay should happen relative to
the original. -speed 1.0 means run at normal speed. -speed 2.0 means
run at 2x speed. -speed 0.5 means run at half speed. Note that the
sound pitch is shifted as a result. If you are running early Namco
games that normally run at 60.60Hz, you can run them at -speed 0.99
and it should run at under 60Hz, which should prevent sound stuttering
if your monitor is not capable of greater than 60Hz refresh rates.
If this turns out to be useful, future versions may support a
-speed refresh parameter that automatically tweaks the speed to keep
you under your monitor´s refresh rate. [Aaron Giles]

da hat wohl jemand auf sailorsat gehört :)
ich bin dafür, dass sie ins mamedev-team aufgenommen wird ;)

Konrad
16-08-2007, 08:43
Naja, sie treibt sich immerhin im MAMEdev Forum rum, das muss reichen ;).

SailorSat
16-08-2007, 11:21
Na mein "fix" hat Aaron ja nicht gefallen weil er "dirty" (very dirty indeed) war :)

Mal schaun wie es sich anhört ;)

nexus6
16-08-2007, 11:31
Na mein "fix" hat Aaron ja nicht gefallen weil er "dirty" (very dirty indeed) war :)

... pfui! ;)

rocomat
28-08-2007, 21:41
1 Zeile verändert, 2 Zeilen hinzugefügt.
--
src\osd\windows\sound.c - Ab Zeile 188 hinzufügen

IDirectSoundBuffer_SetFrequency(stream_buffer, Machine->sample_rate);Setzt regelmäßig (ich glaube jede volle Sekunde) die Abspiel-Frequenz des DirectSound Streams auf den Inhalt von "Machine->sample_rate".




Bei mir finde ich keinen passenden Ordner "src"
Wo wäre der denn zu finden /sollte er sein ?

Konrad
28-08-2007, 21:46
Wenn du dir den Sourcecode runtergeladen hast findest du das auch.
Wenn du einfach nur MAME von der Homepage runtergeladen hast, also den laufenden Emulator, gibts kein src-Verzeichnis.
Das ist ja der Gag dabei: Du musst dir den Sourcecode/Quelltext von MAME runterladen, diesen entsprechend verändern, und dann selber kompileren, also eine EXE erzeugen.

Starbucks
22-12-2007, 05:53
Wah...
R-Type mit MAME 0.114 auf einer ArcadeVGA ist ja ein Drama :)
Mit Tripple Buffering hab ich elenden Sound (401x256 = 53Hz, R-Type = 55Hz)
Ohne Tripple Buffering ziemlich massiv Tearing.

ehh was isn eigentlich Tearing? :confused:

mrdo!
22-12-2007, 07:01
Tearing ist, wenn du auf dem Monitor ein Bild siehst, daß aus mehren Bildern der Graphikkarte besteht. Bilderzeugung und Bildausgabe sind nicht synchron.
Man sieht (bei Bewegungen) Streifen im Bild. Im optimal Fall wird das Bild genau so ausgegeben, wie es erzeugt wird (im Takt des vsync).

Nebeneffekt: Alte 50hz PAL Röhrenfernseher haben ein sehr schön "flüssiges" Bild. Flachfernseher eben nicht (da im PAL Betrieb immer zwei Halbbilder zu einem kombiniert werden).