Dolphin-Emulator: Der Weg zur Pixel-Perfektion

      Dolphin-Emulator: Der Weg zur Pixel-Perfektion

      Eine neue Nachricht kehrt durch das mittlerweile immer größer werdende Dolphin-Universum, aber habt keine Angst: Es sind gute!
      "Warum sind das gute Nachrichten?" Tja, das werdet ihr nun erfahren:
      Die GPU der Nintendo GameCube war zu ihrer Zeit ein komplexes Stück, und zwar eines mit immensen Kräften.
      So stark, dass sie sogar unverändert in der Wii genutzt wird. Durch diese unglaublichen Fähigkeiten wurde sie zu einer der schwierigsten Aufgaben, mit dem das Dolphin-Team konfrontiert wurde.
      Jahre für Jahre hatte Dolphin immer neue Fehler, die ausgebessert werden mussten.
      Aber das wird sich nun ändern. Ein neuer Entwicklungszweig wurde in Leben gerufen: tev_fixes_new (tev=Texture EnVironment, wichtige Komponente der GameCube Pixelverarbeitung)
      Dieser Entwicklungszweig wird nun dafür sorgen, dass die GameCube GPU-Emulation nun endlich auf die nächste Stufe gebracht wird.

      Die Grafikeinheiten der beiden Konsolen (Auch genannt Flipper und Hollywood) haben zwar viel mit ihren modernen "Gegenstücken" gemeinsam, sind aber dafür verschieden genug, um aus der GPU-Emulation einer der Schwierigsten Aufgaben zu machen. Einer der größten unterschiede ist, dass die GPUs der beiden Konsolen "Integer math" nutzen, während bei den heutigen Grafikkarten "Floating point math" der Standard ist.
      Kurzer Rückblick: Als Dolphin damals noch als "Closed Source" Projekt entwickelt wurde, hatte man über den Aufbau der GameCube-Komponenten noch so ziemlich keine Ahnung. Die Entwickler haben damals bei jedem kleinstem Fehler die Ursache erraten müssen und herumprobieren, bis das Problem gelöst war. Aber sie wussten trotzdem schon immer, was die Ursache an allem war: Dolphin versuchte die Berechnungen der Spiele mit "Floating point math" zu lösen, da die GPUs zur Zeit keine "Integer math"-Unterstützung bietet, was natürlich viele Grafikbugs geliefert hat.
      Beispiele

      Midna aus Twilight Princes sah zwar auch so ganz gut aus, aber die echten Farben wären halt besser gewesen:

      Für eine lange Zeit aber, haben irgendwelche Mysteriösen Ursachen dafür gesorgt, dass Midna nicht korrekt gerendert wird. Hier ist Midna korrekt gerendert:


      Manche von euch kennen ja vielleicht den Super Mario Sunshine Bug, wo bei manchen Stellen die Farbe nicht mehr stimmte:

      So müsste es ungefixt aussehen:


      Trotz verwirrendem Code damals in Dolphin, kamen die Berechnungen mit "Floating point math" sehr nah an die Berechnungen mit "Integer math" heran, und da es damals größere Probleme zu Überwinden hatte, ist das thema vorerst in vergessenheit geraten. Es vergingen Jahre, und trotzdem sind die Bugs geblieben, dafür wurden die Bugs immer bekannter mit der Zeit.

      Am Ende gibt es aber zwei Lösungen, mit denen man diese Probleme beheben könnte:

      Lösung 1:
      Die erste Lösung wäre, Koplett jeden Bug mit einem Trick zu umgehen, was aber viel Arbeit für einen einzigen Grafikfehler wäre.
      Man müsste als erstens so viel neuen Code einbauen, was für massive Performanceeinbrüche sorgen würde.
      Außerdem hätte man danach so extrem viel Code im Dolphin-Emulator, dass alles komplett unübersichtlich wäre.

      Lösung 2:
      Die zweite Lösung wäre, Integer-unterstützung im Dolphin-Emulator einzubauen, anstatt irgendwelche Tricks in den Code zu meißeln.
      Komplizierter Code wie:

      Quellcode

      1. zCoord = zCoord * (16777215.0/16777216.0);
      2. zCoord = frac(zCoord);
      3. zCoord = zCoord * (16777216.0/16777215.0);

      könnte man sofort in:

      Quellcode

      1. zCoord = zCoord & 0xFFFFFF;

      verwandeln. Damals wäre so etwas noch fast unmöglich gewesen, aber mit dem heutigen Stand von Hardware, Treibern, APIs und Dolphin selbst ist es nun eine denkbare Option.
      Die Entwickler wollen schon in diesem Sommer früh mit der Entwicklung beginnen. Es gibt aber jetzt schon Testversuche, die erstaunliche Ergebnisse leisteten.
      Beispiel

      Einer der vielen Fehler durch die Berechnung mit "Floating point math":

      ...ist nun sofort durch eine "Integer math"-Unterstützung behoben worden!


      Der Vorteil von Lösung 2 wäre, dass Code UND Spiel nun besser werden, bei Lösung 1 wären zwar nach einer Zeit die Grafikbugs weg, aber der Code wäre dann ungefähr das, was einer Kuh aus dem Hintern kommt. Grafikfehler, die schon seit ewig langer Zeit im Dolphin-Emulator hausen, wären einfach so weg! Da Integer-Berechnungen über die GPU ausgeführt werden, hat man dadurch sogar keine extra CPU-Performanceeinbuße dadurch! Es wird laut den Entwicklern die größte Verbesserung in Dolphin, die je umgesetzt wird, noch höher, als die Entfernung von Direct 3D 9. Durch diese Unterstützung, könnte das Dolphin-Team Grafikfehler beheben, die in diesen zehn Jahren Dolphin-Geschichte (Ja, es gibt Dolphin schon länger als zehn Jahre!) noch nie einem der Entwickler gemeldet wurden. Diese änderung betrifft nämlich so viele Spiele, dass das nicht mal die Entwickler wissen, wie viele es sind. Um das ein wenig besser zu veranschaulichen, haben die Entwickler eine Grafik erstellt, welche durch Integer-unterstützung gefixt wurden:

      Die Kompatibilität hat sich dementsprechend auch schon extrem erhöht, VC-NES-Spiele, welche damals nicht Spielbar waren, da sie keine Grafiken darstellten, funktionieren nun tadellos.
      Beispiele

      Würdet ihr erkennen, was das für ein Spiel ist? Ich nicht:

      Dank diesen Änderungen, kann man "The Legend of Zelda: Collectors Edition nun perfekt spielen!


      Oder noch ein Spiel was niemand erratet:

      Es ist Castlevania 3, welches zwar noch nicht perfekt läuft, aber dafür endlich Spielbar ist.



      Und was bedeutet das jetzt?
      Ab version 4.0-1192 nutzt Dolphin nun Integer zur Grafikberechnung. "Was bedeutet das für mich?" Kommt auf deine GPU an:

      AMD Radeon: Da Radeons gut in "Integer-Mathe" sind, laufen manche Spiele schneller als zuvor!
      Bisher gibt es nur gute Nachrichten für Radeon-Nutzer.

      NVIDIA: Da NVIDIA-Karten etwas schwach in "Integer-Mathe" sind, gibt es laut den Entwicklern eine Geschwindigkeitseinbuße von ungefähr 5%. Das ist aber besser als die Entwickler erwartet hätten.

      Intel: Dolphin funktioniert zwar immer noch mit den Intel-HD Chipsätzen, aber es gibt noch keine genauen Performance-Tests.

      Qualcomm: Qualcomm-Karten werden nun gar nicht mehr unterstützt.

      Mali: Mali-Karten funktionieren auch noch, es gibt aber keine Performance-Tests.

      Durch die Integer-Unterstützung, kann in einem ruck eine massenhafte Anzahl von Bugs behoben werden, und das mit einer einzigen Änderung!
      Der Dolphin-Code ist nun sauberer wie noch nie zuvor, was das Programmieren an Dolphin wiederum vereinfacht.
      Außer ein paar minimalen Performanceeinbußen, gibt es keine anderen Nachteile.
      Aber neue Hardware und neue Treiber werden solche Probleme schon bald ausbügeln.

      Quelle: Blogeintrag der Dolphin-Entwickler (Englisch)

      Diese News ist © by christian8246q und wurde ausschließlich für Wii-Homebrew.com verfasst. Sie darf ohne Genehmigung weder komplett, noch in Auszügen zitiert oder kopiert werden. Lediglich eine Verlinkung ist erlaubt.


      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.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von christian8246q ()

      hueenergott267 schrieb:

      Was nicht alles in den Jahr passiert ist, wo ich es nicht genutzt habe. Es heißt jetzt, dass es weniger Grafikbugs gibt und dazu noch flüssiger läuft?

      Bei AMD-Karten soll es flüssiger laufen und bei NVIDIA-Karten soll es minimal langsamer laufen.
      Es gibt bei beiden aber weniger Grafikbugs ;)
      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.

      --UPDATE--


      Laut dem neuestem Facebook-Post der Entwickler, wurden in Version 4.0-1288 fast alle Performanceprobleme der NVIDIA-Nutzer gelöst, die durch das große "Update" entstanden sind. Tut mir leid dass ich jetzt keinen Quellink anhängen kann, bin grade mobil unterwegs.
      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.