Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen




  • Der Update-Report für diesen Monat ist voller CPU-Optimierungen, da die Entwicklerin "FionaAeterna" sich dazu entschieden hatte, den JIT-Code zu beschleunigen. Und die Bestie hat wirklich kräftig zugeschlagen: Seit Ende Juli hat man in der Dolphin-Benchmark einen Performanceboost von 26% gemessen! Nein, das ist kein Schreibfehler! Aber auch an der Genauigkeit der Emulation hat sich was getan: Es wurden wieder Bugs gefixt, welche schon seit den Anfangszeiten von Dolphin bestehen...


    Änderungen für den August 2014:


    4.0-2368, 4.0-2386 und 4.0-2547- Audiofehler behoben von booto

    Bei einer frühen Version eines Emulators, ist der Spielesound nur eine Nebensache. Als erstes kümmert man sich um die korrekte Emulation und Darstellung, danach kommt alles andere. So war es auch bei Dolphin, sodass der Spielesound vorerst weg blieb. Inzwischen ist Dolphin mehr als 10 Jahre alt, und unterstützt in fast jedem Spiel auch Ton.

    Als durch den sogenannten "DTK-Audiofix" im letzten Monat Paar kleine Bugs in den Emulator kamen, wollte der Entwickler "booto" diese unbedingt beheben. Als er sie behoben hat, waren diese Bugs weg, und natürlich gab es auch einen positiven Nebeneffekt: Zum ersten mal in der Geschichte von Dolphin hat "Pokémon Snap (VC)" keinen Tonausfall und bei "Harvest Moon: Magical Melody" spielt der Sound auch endlich mit der richtigen Geschwindigkeit!




    Das Ergebnis von booto ist also ein riesiger Haufen voller Fehlerbehebungen. Es war zwar nicht leicht, da öfters mal auch kleinere Probleme aufgetreten sind, aber die Arbeit hat sich gelohnt.

    Fehler behoben: 7045, 7121, 7170 und 7545


    Manchmal verhalten sich Spiele so schräg bei der Emulation, dass sogar die Entwickler nicht mehr weiter wissen. Es wusste z.B. niemand, dass manche Spiele Zugriff auf die GQR-Bits (Graphic Quantization Register) haben. Kurz gesagt: Eine wichtige Funktion im Spiel wurde knallhart ignoriert und es sind Fehler aufgetreten.


    dirt2broken_thumb.jpg

    Die Textur von der Straße ist viel zu hell!

    dirt2working_thumb.jpg

    So sollte es laufen!




    Beispiele: In "Dirt 2" und "Are You Smarter Than a 5th Grader?" waren manche Texturen viel zu hell und bei "Turok: Evolution", "Vexx" und "XIII" ist Dolphin gleich komplett abgeschmiert. Man konte es davor zwar auch umgehen (Volle MMU-Emulation) aber das hat ziemlich viel Performance gefressen.

    Fehler behoben: 3249, 7073 und 7506


    Der Vertex-Loader von Dolphin war schon schrecklich veraltet. Er wurde, so simpel wie es auch klingt, neu geschrieben und es wurde eine Cache-Unterstützung hinzugefügt, was in Vertex-basierenden Spielen wie "Super Mario Galaxy" und "The Last Story" einen Performanceboost von bis zu 20% gebracht hat!


    Vor einer sehr langen Zeit war OpenGL mehr auf die Genauigkeit, als auf Geschwindigkeit ausgelegt, was sich aber mit dem "GLSL-Rewrite" gendert hat. Jetzt hatte OpenGL nicht nur die bessere Spiele-Kompatibilität, sondern war auch fast so schnell die D3D. Heutzutage ist OpenGL und D3D fast gleich auf, immerhin teilen sie sich viele Sachen aus den Code, seit dem "VideoCommon-Rewrite". Und wieso erzähle ich euch das? Weil OpenGL einen kaputten Code von D3D9 übernommen hatte. Kurz gesagt: Bei OpenGL wollten die sogenannten Matrix-Schatten nicht funktionieren!

    KScorp, ein Newcomer in dieser Szene, hat die Fehler mit einem Schwung behoben. Immerhin sind die Matrix-Schatten wichtig, da sie z.B. in vielen bekannten Spielen, wie "The Legend of Zelda: The Skyward Sword", "Luigis Mansion" und "Metroid Prime" verwendet werden.


    skywardbroken_thumb.jpg

    Der einzige Weg, um diese Fehler zu umgehen, war EFB2RAM aktivieren, was extrem viel Leistung gekostet hatte.

    skywardworking_thumb.jpg

    Und nun funktioniert es auch ohne EFB2RAM.



    MarioGalaxy2FogBroken_thumb.jpg

    Der Nebel in Super Mario Galaxy spielt verrückt. Selbst die Option "Nebel deaktivieren" in Dolphin konnte nichts ausrichten!

    MarioGalaxy2FogFixed_thumb.jpg

    Und nun funktioniert alles, wie es funktionieren sollte.




    Fehler behoben: 5070, 6424, 6771, 7007, 7123


    Viele Nutzer hatten ein kleines Problem: Wenn man bei Gamecube-Spielen die Memory-Card, statt den GCI-Ordnern nutzt, hängt sich Dolphin beim schließen auf. Es ist zwar nur ein relativ kleiner Bug, aber da anscheinend viele Leute das Problem hatten, musste dieser Bug so schnell wie möglich gefixt werden.


    Als der "PPC_Analyzer Rewrite" von Sonicadvance endlich abgeschlossen war, hat er sich gefreut. Einfach kompiliert und hat sich direkt um was anderes gekümmert. Es war alles perfekt, bis auf eine Funktion namens "num_instructions". Die ist zwar voll funktionsfähig, aber wurde nirgendswo im ganzen Code abgerufen! Dieser Fix bringt einen kleinen Performanceschub in mehr CPU-basierten Spielen, wie Virtual Console Spielen.


    Anscheinend wird jeden oder jeden zweiten Monat eine alte Komponente des Emulators über Bord geschmissen. Nach langer überlegung hat man sich entschlossen, die DSound-Unterstützung zu entfernen. Das neuere XAudio2 funktioniert so wie es soll, und sogar noch besser. Der einzige Vorteil von DSound wäre die native Unterstützung von Windows XP, aber das ist ja seit der Entfernung von D3D9 eher egal geworden.


    4.0-2726 - PPC_FP Optimiertvon FioraAeterna

    Fiora findet immer irgendwelchen kreativen Ideen, um den JIT-Code zu optimieren. Dieses mal, hat sie sich an PPC_FP gesetzt. Diese änderung bewirkt, dass Nicht-Gleitkommazahlen nicht mehr beschädigt werden, wenn sie durch einen Gleitkommazahlen-Register gehen. Das hat zwar bei manchen Spielen viel Leistung gezogen, aber inzwischen ist wieder alles im Lot, da Fiora herausgefunden hat, dass es gerade mal 0.01% der Nicht-Gleitkommazahlen betrifft. Durch einen kleinen Bugfix wurde nun aber Genaugkeit und Geschwindigtkeit verbessert!




    Im Update-Report für den Juni 2014 habe ich euch ein Videogezeigt, welches euch zeigt, dass die Physikberechnung in Spielen wie Mario Kart noch nicht ganz perfekt ist und dadurch Replay-Files von einer echten Wii nicht in Dolphin nutzbar sind. Durch magumagus neuer Gleitkommazahl-Implementation funktionierte es zwar, aber dafür hat es einen furchtbaren Performance-Einbruch in fast jedem Spiel gegeben, obwohl nicht mal 99% aller Spiele eine solche Genauigkeit bei der Physikberechnung benötigen.

    "JIT-Magierin" Fiora hat aber wieder alles zurecht gebogen, was sie aber ohne magumagus "SoftFP" nicht geschafft hätte. Es ist also nun möglich, Replays-Daten einer echten Wii zu nehmen und sie zu emulieren, ohne irgendwelche Desyncs zu verursachen. In paar Spielen wurde das sogar schon bestätigt, wie den klassikern "Mario Kart Wii", Super Smash Bros Brawl" und "F-Zero GX".




    Beachtet, dass diese Veränderung aber momentan nur bei x86-64 JIT implementiert sind. Oder besser gesagt: Nutzer von der Android-Version von Dolphin müssen noch lange warten.

    Fehler behoben: 3122 und 4241




    FPRF (Floating-Point Result Flag) ist eine Funktion, welche nur sehr selten in Spielen verwendet wird. Und genau weil diese Funktion so selten verwendet wird, hatten sich die Entwickler entschlossen, alle FPRF-Befehle an den Interpreter weiter zu geben. In den meisten Spielen/Engines läuft das ohne Probleme, bis auf eine Ausnahme: Die Engine von der "Super Monkey Ball-Serie" und von F-Zero GX basiert so stark auf FPRF, dass das Spiel einen Unglaublichen Performanceeinruch erleidet.



    Diese Grafik zeigt euch einen ungefähren Unterschied zwischen FPRF-Aus (Was ist den meisten Spielen zu abstürzen führen würde), FPRF-Interpreter (Total langsam) und FPRF-JIT (Der eigentliche Bugfix). Die Benchmark zeigt deutlich den Unterschied zwischen dem Interpreter und dem neuen FPRF-Code im JIT, da "POVRay" (Die verwendete Benchmark) größtenteils auf Gleitkommaoperationen (Floating-Point Operations) basiert.

    Auch wenn FPRF einen großen Speedup bewirkt hat, wird es (noch) keine Standarteinstellung. Oder besser gesagt: Wenn ihr mit einem bestimmten Spiel Probleme habt, die nicht im Interpreter auftreten, öffnet mal die Game-INI von diesem Spiel und setzt "EnableFPRF=true" in diese Datei rein.


    Das Speichern dauert bei Dolphin 570ms im Durchschnitt, und dass merkt man auch deutlich. Comex hat sich aber entschieden, die PointerWrap funktion zu verbessern, welche zum Speichern verwendet wird. Das Ergebnis? Es dauert jetzt nur noch ungefähr 17ms (etwas mehr als ein Frame) zum speichern, was vorallem die TAS-Speedrunner freuen wird.


    Der Mann hinter der Maschine

    Momentan läuft fast alle wie geschmiert. Dolphin gewint nicht nur langsam an Geschwindigkeit, sondern auch an Kompatibilität. Es sind zwar viele große Sachen von bekannten Entwicklern eingebaut worden, aber es gibt da jemanden, der sich auch mit den kleinen Sachen einen Namen macht. Er hat in der letzten Zeit immer den Titel für die meisten Commits auf Github für Dolphin bekommen, denn bei über 100 im Monatist das kein Wunder! Natürlich ist damit "Lioncash" gemeint!

    Jedes Open-Source Projekt bräuchte einen eigenen kleinen Lioncash. Denn seine gewealtige Anzahl an Commits betreffen den kompletten Emulator, einmal verbessert er die GPU-Emulation oder den Sound oder räumt mal den Code auf, was das Arbeiten für alle anderen um einiges erleichtert. Inzwischen ist der der auf Platz 5 der aktivsten Coder der Dolphin-Geschichte, und das, obwohl er erst seit Frühjahr 2013 am Emulator arbeitet! (Bedenkt, Dolphin gibt es schon mehr als 10 Jahre!)

    Ohne ihn, wäre alles viel schwerer. Das Areiten am Code wäre ohne ihn einfach grausam. Und zwar so grausam, dass die Entwickler den Emulator irgendwann im Stich gelassen hätten. Wenn er mal nicht an Dolphin Arbeitet, moderiert er die Commits von anderen Nutzern auf Github, damit auch diese alle dem Standart entsprechen, um im Dolphin-Code aufgenommen zu werden.

    Deswegen, danke an Lioncash, und mal hoffen dass auch er es mit einer besonderen Änderung in den Update-Report schafft!


    ...dafür, dass ihr Dolphin von Version 4.0-2356 bis 4.0-2824 begleitet habt!

    Diese News ist © by christian8246q und darf ohne Erlaubnis weder kopiert noch Zitiert werden. Lediglich eine Verlinkung ist erlaubt.


    Quellen

Kommentare 6