Der Dolphin Update-Report für November 2014

  • Wii-Homebrew

    Der Dolphin Update-Report für November 2014



    Wenn man an einem Emulator arbeitet, gibt es Features, die nie fertig werden. Im letzten Monat hat "crudelios" mit der sogenannten "Bounding Box Implementation" einen großteil der Fehler in "Super Paper Mario" behoben. Ein paar Monate davor hat aber auch "magumagu" etwas interessantes beigetragen, in dem er die DVD-Ladezeiten in Dolphin verbessert hat. "RachelBryk" arbeitet wie fast immer mal wieder an den TAS-Features für die Hardcore-Gamer, was sie auch am besten kann. Aber das größte Projekt, an dem momentan immer noch aktiv gearbeitet wird, ist die portierung von Dolphin auf ARM-Geräten von "SonicAdvance1".

    Alle diese "Features", welche oben genannt wurden, wurden zwar meistens von den eher bekannteren Entwicklern geschaffen, aber seit letzter Zeit gibt es immer mehr Newcomer in dieser Szene, welche ihre eigenen Ideen zeigen. Denn nur, weil ein bestimmtes Feature noch nicht in Dolphin vorhanden ist, heißt dass nicht, dass es dieses Feature auch nie geben wird!


    Die wichtigsten Updates im November 2014:


    An die Leute, wo endlich einen Speedboost auf ARM-Geräten erwarten, da habt ihr es! Kurz nachdem der sogenannte FPR-Cache (Floating Point Register Cache) wieder aktivert wurde, folgte ein schöner Speedboost.

    Kurz danach hat er direkt begonnen, das Fastmem-Feature komplett zu überarbeiten. ARM besitzt nämlich zwar ein Fastmem-Unterstützung, aber die wollte halt nicht so toll laufen, wie sie eigentlich sollte. Dementsprechend hat "Sonicadvance1" den ganzen Teil von Grund auf komplett neu geschrieben und hat mit dem vorherigen Patch und einigen anderen folgenden Patches die Geschwindigkeit bis zu 20% verbessert! Inzwischen lassen sich dadurch auch manche Gamecube-Spiele auf bestimmten Geräten sehr gut spielen, wie die folgenden Videos zeigen:

    Note: This video will be loaded from YouTube, which causes some data, including but not limited to your IP, User Agent and Referrer, to be sent to YouTube servers. For more information see the Privacy Policy. By pressing the "play" button you automatically enable embedding YouTube videos for the future.


    Hinweis: Dieses Video wird von YouTube geladen. Dabei werden einige Daten, unter anderem Ihre IP, Ihr User Agent und der Referrer an YouTube-Server gesendet. Für weitere Details lesen Sie bitte die Datenschutzerklärung. Wenn Sie den Play-Button anklicken, erlauben Sie damit automatisch das Einbinden von YouTube-Videos für die Zukunft.



    Sonicadvance1 ist natürlich nicht der einzige, welche seine Spiele auf seinem NVIDIA K1 Jetson spielt! Auch andere Nutzer laden ständig Videos hoch, darunter auch einige, die zeigen, dass sogar auch manche Wii-Spiele zwar noch nicht wirklich schnell laufen, aber schon teilweise gut spielbar sind:

    Note: This video will be loaded from YouTube, which causes some data, including but not limited to your IP, User Agent and Referrer, to be sent to YouTube servers. For more information see the Privacy Policy. By pressing the "play" button you automatically enable embedding YouTube videos for the future.


    Hinweis: Dieses Video wird von YouTube geladen. Dabei werden einige Daten, unter anderem Ihre IP, Ihr User Agent und der Referrer an YouTube-Server gesendet. Für weitere Details lesen Sie bitte die Datenschutzerklärung. Wenn Sie den Play-Button anklicken, erlauben Sie damit automatisch das Einbinden von YouTube-Videos für die Zukunft.



    Note: This video will be loaded from YouTube, which causes some data, including but not limited to your IP, User Agent and Referrer, to be sent to YouTube servers. For more information see the Privacy Policy. By pressing the "play" button you automatically enable embedding YouTube videos for the future.


    Hinweis: Dieses Video wird von YouTube geladen. Dabei werden einige Daten, unter anderem Ihre IP, Ihr User Agent und der Referrer an YouTube-Server gesendet. Für weitere Details lesen Sie bitte die Datenschutzerklärung. Wenn Sie den Play-Button anklicken, erlauben Sie damit automatisch das Einbinden von YouTube-Videos für die Zukunft.



    Viele Leute hatten außerdem die Hoffnung, dass sie mit dem neuem "Nexus 9" (Basiert auf dem NVIDIA K1 Denver) nun das erste marktfähige Android-Gerät bekommen, welches ein paar Spiele zumindest mit voller Geschwindigkeit packen könnte. Sonicadvance1 hat sich extra für solche Tests ein Exemplar geholt, und festgestellt, dass die Spiele teilweise langsamer laufen, als auf dem NVIDIA Shiel Tablet und seinem NVIDIA K1 Jetson. Aber keine Angst, Sonicadvance1 wird noch dafür sorgen, dass Dolphin in Zukunft auch auf normalen ARM-Geräten voll funktionsfähig sein wird!


    Du wolltest schon immer der beste sein? Dolphin unterstützt genau dafür viele verschiedene TAS-Features (TAS = Tool Assisted Superplay) wie Input-Recording und Savestates, um den Spielern in jeder Situation zu helfen. Die meisten nutzen diese Features z.B. indem sie nochmal vor einem harten Boss speichern, oder sie nehmen auch ihren Input auf, damit sie immer ihre tollsten Aufnahmen aus Spielen wie "Super Smash Bros. Melee" behalten können, ohne irgendwelche riesigen Videos auf der Festplatte zu lagern.

    Aber für Speedrunner und die sogenannten "Glitch-Hunter" reicht das bei weitem nicht aus. Ein weiteres Feature ist auch "TAS-Input", ein spezielles Menü, wo man komplett alle Input-Daten eines Controllers ansehen und verändern kann. Damit kann man z.B. je nach Spiel die auch nur bestmögliche Methode herausfinden, wie man einen bestimmten Stunt oder ähnliches macht. Nun wurde auch endlich ein Nunchuck-Support hinzugefügt, was einem nun das Tor für viele weitere Spiele öffnet.




    Die Leute, die sich sehr oft die neuesten Updates von Dolphin holen, haben schon sicherlich eines dieser Fenster gesehen:



    Dieser Fehler kann natürlich von jedem ignoriert werden, aber dieses fiese kleine Fenster kann auch Grafikfehler, Lags oder auch Abstürze verursachen! Nach einem langen Weg wurde aber endlich auch dieser Fehler behoben...

    Um das besser zu erklären: Die Wii und Gamecube haben beide einen Single-Core Prozessor, welcher durchgehend Synchron zur GPU steht, während er am arbeiten ist. Unter "normalen Arbeitsbedingungen", füttert die CPU die GPU mit verschiedenen Commands, was natürlich auch funktioniert. Auf einem PC muss Dolphin aber dafür sorgen, dass das auch unter anderen Arbeitsbedingungen funktioniert, immerhin hat ja nicht jeder PC die gleiche CPU und die gleiche GPU. Um verschiedene Fehler zu verhinden, sorgt der sogenannte FIFO-Code (FIFO= First in, first out) dass CPU und GPU bis zu einem gewissen Grad synchron laufen. Um das vielleicht besser zu erklären: Stellt euch eine Rennstrecke vor, welche einfach nur ein Kreis ist. Es gibt zwei Teilnehmer, einmal die CPU und einmal die GPU. Es gibt aber eine Bedingung: Die CPU muss immer vor der GPU bleiben, und es muss bis zu einem gewissen Grad einen Abstand gehalten werden. Wenn dieser Abstand überschritten wird oder die GPU die CPU überholt, wird das Rennen mit einem Fehler abgebrochen.

    Fifooverflow-normal

    Die CPU ist ein kleines Stück vor der GPU, alles funktioniert so wie es sein sollte.

    Fifooverflow-cputhreadistoofast

    Aber wenn die CPU die GPU überrundet, passieren schlimme dinge.

    Fifooverflow-negativefifo

    Und wenn die GPU die CPU überholt, gleicht das einer totalen Katastrophe!




    Solche Fehler sollten eigentlich nur passieren, wenn jemand ohne Ahnung am FIFO-Code rumexperimentiert, aber es wurde seit sehr langer Zeit nicht mehr daran gearbeitet und deswegen wusste man vorerst auch nicht, von wo das Problem überhaupt stammt.

    Skidau hat sich daraufhin an die Arbeit gemacht und herausgefunden, dass das Problem eigentlich gar nicht so schwer zu lösen ist, wie vorerst angenommen. Der Fehler? Die GPU hat zu selten mit der CPU kommuniziert! Nach dem dieser Fehler behoben wurde, wurden sogar auch andere FIFO-Bugs in verschiedenen Spielen, wie "The Last Story" behoben.

    Fehler behoben: 7835


    Im letzten Monat, hat "crudelios" nach langer Zeit eine Softwareseitige Unterstützung für "Bounding Box"-Effekte hinzugefügt, was extrem viele Grafikfehler und teilweise auch Abstürze in "Super Paper Mario" behoben hat. In diesem Monat hat er aber zumindest in OpenGL eine Hardwareseite Bounding Box Emulation ermöglicht, was die Performance in Super Paper Mario ungemein erhöht, da diese Effekte erstens nicht mehr komplett von der Software ausgerechnet werden, und auch nicht von der CPU, sondern gleich von der GPU, was dann nochmal ein riesen Stück schneller ist.



    Wie man sich das schon denken kann, läuft das alles viel besser, wenn man eine aktuelle Grafikkarte von NVIDIA besitzt. AMD-Karten sind dagegen unter D3D schneller, wo dieses Feature aber noch nicht verügbar ist. Aber es ist nur eine Frage der Zeit, bis das alles auch für D3D verfügbar ist. Genau wie beim XFB-Patch letzen Monat, ist das die perfekte Gelegenheit, sich als Newcomer in der Dolphin-Szene einen Namen zu verschaffen.


    4.0-4222 - CAV-Emulation hinzugefügtvon JosJuice

    Die DVD-Laufwerke in der Wii und Gamecube lassen ihre DVDs immer in der selben Geschwindigkeit rotieren, egal von wo die jeweilige Konsole gerade ihre Daten ließt. Dieses Prinzip wird auch "CAV" (Constant Angular Velocity= Konstante Winkelgeschwindigkeit) genannt. Das hat den Nebeneffekt, dass Daten weiter außen von der DVD schneller gelesen werden können, als weiter innen. Normalerweise ist das auch kein Problem, zumindest wenn man die jeweiligen Spiele auf "normale" weise spielt. Für die Speedrunner aber, kann es komplett allen Spielspaß zerstören.

    Beispiel: Metroid Prime ist bei den Speedrunnern ein beliebtes Spiel, da es sehr viele Tricks gibt, die man machen kann. Viele davon laufen zwar auch auf Dolphin, aber nicht alle! Denn es hat sich herausgestellt, dass Dolphin im großen und ganzen die Daten von diesem Spiel zu schnell lädt.

    Links: So sollte es sein. Rechts: "Speed up Disc Transfer Rate" in den Optionen aktiviert, das Spiel läuft ein wenig zu schnell.



    Der Grund: Dolphin ließt standartmäßg die Daten von einem Spiel mit 3000KB/s, was unter der höchstmöglichen Geschwindigkeit des Wii-Laufwerks liegt. Wenn man diese Rate herunter setzen würde, könnte vielleicht (wenn überhaupt) Metroid Prime normal laufen, aber andere Spiele würden langsamer laufen. Es gab also nur eine Möglichkeit: CAV in Dolphin inplementieren.

    Der Newcomer "JosJuice" hatte spontan beschlossen, sich um dieses Problem zu kümmern. Nach einer Woche harter Arbeit war aer auch endlich dieses Problem behoben. Dolphin berechnet anhand der Lage der Daten im Spiel die Geschwindigkeit, mit der die Daten gelesen werden müssen.

    Es gibt viele Spiele, mit denen man das gut testen konnte, aber kein einziges Spiel, oder eher keine einzige Homebrew hat das so deutlich gezeigt wie "Cleanrip". Das Programm läuft zwar nicht perfekt, aber gut genug um eine ISO zu rippen, welche in Dolphin geladen ist.

    CleanRip

    Je weiter innen an der DVD die Daten gelesen werden, desto langsamer werden sie gelesen.

    Cleanrip

    Je weiter man nach außen kommt, desto schneller wird der Kopiervorgang!




    Vielleicht erinnert sich der ein oder andere noch an dieses Zitat aus dem Smalltalk-Bereich:

    christian8246q schrieb:

    Wow. Ich lese mir grade so ein paar Notes von Dolphin-Updates durch, und anscheinend kann man nun durch eine Optimierung an der DVD-Emulation anscheinend tatsächlich CleanRip starten, eine geladene ISO dumpen, und dann das gedumpte Spiel starten. Das ist wie wenn ich ein Spiel dumpe, es auf DVD brenne, in die Wii einlege, nochmal dumpe und das gedumpte Spiel starte...

    Natürlich wurde das von verschiedenen Leuten aus eigener Neugier getestet, und siehe da:

    CleanRip

    Diese MD5 stimmt komplett mit der Amerikanischen Version 1.02 von "Super Smash Bros. Melee" überein, der Dump ist also komplett fehlerfrei.

    meleestarscreen.jpg

    Der gedumpte Dump lässt sich in Dolphin starten. Dolphin ist meta.




    Fehler behoben: 7257und 7423


    Der sogenannte "Vertext-Loader" ist eine der wichtigsten Grafikfunktionen im Dolphin-Emulator. Ohne diese Funktion, würde die GPU im jeweiligen PC viele Grafikaufgaben nicht lösen können. Alle diese Aufgaben müssen erst so umgewandelt werden, damit eine normale GPU das auch verstehen kann.

    Das Umwandeln dieser Aufgaben kann man über SSE stark optimieren (In diesem Fall über SSE3), was sogar auch schon teilweise so gemacht wird. Das war aber nicht genug für "Fiora", sie hat das Umwandeln dieser Aufgaben nun erweitert, und einen schönen Speedboost erreicht:


    Das alles funktioniert selbstverständlich nur auf einem Prozessor, der SSE3 unterstützt. Bei den Intel-Prozessoren wäre das mindestens ein Core2Duo, bei den AMD-Prozessoren muss es mindestens ein Prozessor der Bobcat-Serie sein.


    Im August, hast Fiora durch einen Bugfix die Genauigkeit beim runden von Gleitkommazahlen extrem verbessert. Durch dieses Update konnte man endlich in Spielen wie "Mario Kart Wii" und "F-Zero GX", wo man Replays speichern konnte, gespeicherte Replays in Dolphin nutzen.

    Nachteil: Dolphin ist ein bischen langsamer geworden. Aber man dachte, dass man auch das sicherlich irgendwie lösen kann. Alles begann mit einer simplen aber auch guten Idee, dass man bestimmte Sachen in diesem Bereich, welche völlig unnötig sind, einfach überspringen könnte. Das Ergebnis ist zwar schwer zu erklären, aber um es einfach zu sagen: Es gab einen guten Speedboost, der einen großteil aller Spiele in Dolphin betrifft!

    Und Fiora ist immer noch nicht am Ende. Sie arbeitet noch weiter, denn laut ihr steckt noch viel Potenzial in diesem Gebiet. Sie hat auch schon die nächsten Ideen, mit denen man alles verbessern könnte!


    DolphinQt - Ein neues Benutzerinterface wird geschaffen

    Seit dem Dolphin Open-Source ist, nutzt Dolphin "wxWidgets" als Benutzerinterface. Anfangs fand man das auch toll, aber mit der Zeit wurde es immer schwerer, damit zu arbeiten. Langsam begannen die Entwickler, Pläne zu schmieden, mit was man das veraltete wxWidgets erstezen könnte. Einer dieser Pläne war es, komplett auf "Qt" umzusteigen. Im September wurde dann Offiziell eine Basis in Dolphin eingebaut, die zu diesem Zeitpunkt aber nur "Hello World!" ausgeben konnte.

    Man kann nun auch Spiele nach einzelnen Konsolen filtern.

    Und auch völlig neue Ansichten, wie diese Rasteransicht sind nun möglich!




    Die einzige Möglichkeit, um DolphinQt zu nutzen, ist Dolphin mit dem Qt-Submodul selber zu kompilieren, da die Qt-Oberfläche noch extrem weit davon entfernt ist, WxWidgets komplett zu ersetzen.


    Geheimtipp: Immer auf der aktuellsten Version bleiben!


    Bedenkt: Diese ganzen Bugfixes und Optimierungen, welche hier alle gezeigt wurden, gibt es bisher nur in der jeweils neuesten Entwicklerversion! Auf der aktuellsten Version zu bleiben, ist aber leider nicht immer einfach, da täglich, teilweise stündlich und in extremen Fällen sogar minütlich Updates erscheinen. Davor musste man jedes einzelne mal auf die Dolphin-Homepage gehen und auf der Download-Seite immer die aktuellste Version herunterladen und manuell entpacken. Aber auch das hat nun ein Ende: Unser Forennutzer Ciapa hat es als (wahrscheinlich) erste Person auf der Welt geschafft, einen funktioniernden Auto-Updater zu schreiben. Es ist ein sehr kleines Programm, welches man installiert. Beim starten, prüft er schnell nach einem Update, lädt es ggf. runter und entpackt es auch automatisch. Das ständige besuchen der Dolphin-Seite gehört nun der Geschichte an, wenn man nicht unbedingt die einzelnen Beschreibungen der Updates lesen will.

    Zum Download: Dolphin Auto Updater


    Danke an...

    ... alle wo Dolphin im November unterstützt haben!Frohe Weihnachten euch allen!
    Vegetarier sind viel grausamer als gedacht. Ein Schwein kann wenigstens wegrennen, aber ein Salat?!? :D :P

    Kein Support per PN! Wir sind in einem Forum, und ein Forum lebt aus Fragen und Antworten.
    Was auch wichtig ist: Immer auf die Rechtschreibung achten!


    Note: This video will be loaded from YouTube, which causes some data, including but not limited to your IP, User Agent and Referrer, to be sent to YouTube servers. For more information see the Privacy Policy. By pressing the "play" button you automatically enable embedding YouTube videos for the future.


    Hinweis: Dieses Video wird von YouTube geladen. Dabei werden einige Daten, unter anderem Ihre IP, Ihr User Agent und der Referrer an YouTube-Server gesendet. Für weitere Details lesen Sie bitte die Datenschutzerklärung. Wenn Sie den Play-Button anklicken, erlauben Sie damit automatisch das Einbinden von YouTube-Videos für die Zukunft.




    Wer mir und sich selbst 500mb gratis-Speicher schenken will, kann sich ja unter diesem >Link<unter Dropbox registrieren ;)

    Wii Konsole mit Firmware 4.1
    Mit Internet
    Zwei Gamecube-Controller
    2 Wii Fernbedienungen, von denen eine kaputt ist (ich frag mich immer noch wie das möglich ist...)
    Gemoddet nach den Regeln des ALTEN UHGs, aufgefrischt mit dem IOS-Update im neuen UHG.

    Ich möchten nur anmerken, dass wxWidgets keinesfalls veraltet ist. wxWidgets läuft auf unzähligen Plattformen, mit verschiedenen GUI-Toolkits. Das heißt wxWidgets ist nur eine Art Framewerk, dass mit vielen anderen Komponenten zusammen arbeitet. Daher ist es natürlich nicht so geschmeidig wie die direkte Verwendung von GTK+ oder Qt. wxWidgets erlaubt es, dass mit dem selbem Programmcode die Oberfläche unter Linux mittels GTK+ realisiert wird, unter MacOS mit Cocoa oder wie das Zeug heißt und bei Windows mit dessen Toolkit.

    Nun geht man dazu über, anstelle eines abstrahierendes Meta-Toolkits ein vollwertiges Toolkit zu verwenden. Was enfach daran liegt, dass Qt (nun endlich) auf allen drei Betriebssystemen einwandfrei läuft. Zudem ist Qt kein einfaches Toolkit, sondern auch ein Framework. Es wäre durchaus vorstellbar, dass Qt auch in anderen Bereichen von Dolphin Verwendung findet. Beispielsweise Phonon für Audio-Code, der auf allen Plattformen gleich ist oder Solid für Hardware-Erkennung.

    GTK+ beispielsweise macht unter Windows Probleme, und die Toolkits von Microsoft und Apple laufen nur dort. wxWidgets it daher seit jeher eine gute Möglichkeit für plattformübergreifende UIs. TCL/TK ist ein wenig dürftig und bis auf Qt haben praktisch alle anderen Toolkits mit mindestens einem der drei Haupt-Betriebssysteme Schwierigkeiten.


    MarioKart Wii: 1807-8091-0335
    Wii U: Chris (Mii Name) / setialpha (ID)
    3DS: 3754 6370 1034 (Chris)