Results 1 to 6 of 6
  1. #1
    Elite Sage
    BBK..'s Avatar
    Join Date
    Oct 2008
    Location
    Bristol!!
    Age
    25
    Posts
    10,518
    Rep Power
    93
    Points
    52,981 (15,799 Banked)
    Achievements IT'S OVER 9000!

    How GameCube/Wii emulator Dolphin got a turbocharge



    Something remarkable is happening with Dolphin. The GameCube and Wii emulator has been around for more than a decade now, which is a long time for an emulator to be in active development. It was born as a rough, limited GameCube emulator before growing into a bustling open source project in 2008. Over the past few years, Dolphin has become one of the easiest-to-use emulators ever made, and it’s also one of the only emulators to make many games better. You haven’t played Super Mario Galaxy until you’ve played it at 1440p.
    Today, Dolphin is doing something I’ve never seen another emulator project do. This many years into development, most emulator projects have been abandoned, but Dolphin keeps making major, sometimes huge improvements to compatibility and performance. In August, Dolphin’s CPU core emulation saw a 26% boost in performance. In September, another update brought a 16% performance boost to all games, with some specific games seeing boosts of over 100%.


    Those are almost unbelievable improvements, and most of them are due to one contributor. She goes by the handle Fiora Aeterna online, and she’s only been contributing to Dolphin for two months.
    “Getting involved in Dolphin was a bit nerve-wracking at first; I'd never really contributed to an open source project before,” Fiora wrote in an email when I reached out to talk about the emulator’s recent improvements. “It was an internal conflict for me for many years; on the one hand, there was so much cool open source stuff I wanted to work on, but on the other hand it could be really intimidating (with the 50:1 gender ratio certainly not helping). The inspiration to try out Dolphin actually came from the realization they already had a female team member (Rachel Bryk)—I figured if she found it okay, maybe I should try too? My hope ended up being justified: Dolphin's team was really unusually helpful and friendly, and never seemed like the sort to mock me for having seemingly dumb questions.”


    Fiora is a programmer by day, and contributes to Dolphin on-and-off in her spare time. Fittingly, she owes her career to another emulator called NO$GBA she discovered as a 10-year-old. She wanted to play Pokemon, but her parents wouldn’t buy her a Game Boy. So she found a way to play it on her computer. And, in the process, grew curious about how emulators work. She started to learn more about programming. Fourteen years later, it’s her day job.


    On Dolphin, Fiora has primarily contributed to the emulator’s CPU core. The GameCube and Wii both run on IBM’s PowerPC architecture, which uses a different instruction set than the x86 processors that virtually all PCs run on. Emulating those consoles means converting PowerPC instructions into x86 instructions. This is why emulation can be so demanding, as Dolphin’s FAQ concisely explains: “when emulating, every basic instruction a game runs needs to be translated to something a PC can execute. Depending on the instruction, this can take from 2x to 100x clock cycles, which explains why you need more than a 486MHz CPU to emulate a GameCube.”
    Fiora’s broke down the process of CPU emulation in more detail.
    “The most basic sort of CPU emulator is an interpreter; it one by one steps through the instructions, parses each one, and calls the appropriate function for that instruction,” she wrote. “Interpreters are also very commonly used for scripting languages (like Python, Ruby, Lua, etc).


    “A just-in-time (JIT) compiler takes blocks of code and transforms them into x86 code (recompiling), then executes that. This is way faster—by orders of magnitude! This shows up in web browsers, for example: at first they use an interpreter to run Javascript, then they recompile the most often-used parts with a basic recompiler, and sometimes if a section of code is used a whole lot, they recompile it with a slower, optimizing compiler that generates more efficient code.
    "Dolphin isn't quite that sophisticated—it has a single recompiler that runs on all blocks of code. But the recompiler can only transform instructions that it knows how to recompile; otherwise, it has to stop and drop back to the interpreter for that one instruction, and this is really slow. It's totally expected the recompiler has to drop back to the interpreter for some instructions, but ideally those instructions should be very few and far between. This happens in other recompilers too; for example, browser makers advise people not to use certain Javascript constructs because they force a fallback to interpreter mode, and slow things down massively.”




    Following all that so far? Dolphin’s August update states that Fiora’s work on the JIT compiler sped it up by a 26%. In one month! She elaborated that these were general recompiler improvements, which means “better ways of optimizing blocks of code (moving instructions around, combining instructions, and so on) and better ways of implementing individual PowerPC instructions with fewer x86 instructions than before.”


    General recompiler improvements make the emulator's baseline performance better, but her other big job, implementing missing instructions, help make individual games run more efficiently. Remember that if the compiler doesn’t recognize an instruction, it has to fall back on the much slower CPU interpreter. Because games consist of millions of CPU instructions, there are many, many opportunities for slowdown. “I've implemented a lot more [missing instructions] in the past two months, putting the x86 recompiler up around 90% of instructions implemented,” Fiora wrote. “The rest are mostly system instructions that are rarely used.”


    Fiora’s work on Dolphin has also helped correct some longstanding issues with specific game performance. Sega’s Super Monkey Ball and F-Zero GX, for example, both used an unusual bit of code that almost no other GameCube games use, and as a result that code wasn’t built into the recompiler. She corrected that. She also built on top of the work of another contributor, magumagu, to bring his fixes for physics and collision emulation to the hardware JIT compiler and interpreter.


    “magumagu discovered that floating-point multiply operations had slightly odd rounding behavior in certain cases,” Fiora wrote. “Fixing the recompiler to match this behavior cost a small amount of speed, but the effect was tremendous: it fixed ghosts in Mario Kart, replays in Brawl and F-Zero, physics in Zelda, and a whole lot of other things.” As a result, it’s now possible to save replays of games like Mario Kart Wii on a console, copy the file to a PC, and play it back 100% accurately. In HD.
    This video explains those bugs and shows how the games perform properly when they're fixed.




    Another contributor, comex, added two separate optimizations to Dolphin’s code that increased performance in almost all games by 8%. Each. Between his work and Fiora’s, a number of games have seen huge performance jumps in Dolphin in just the past month:

    • Sonic Colors: 39% faster
    • Star Wars Rogue Squadron II: Rogue Leader: 103% faster
    • F-Zero GX: 110% faster
    • The Last Story: 38% faster
    • Xenoblade Chronicles: 40% faster

    Those are incredible jumps, and in the case of an extremely demanding game like The Last Story, could make the difference between a steady framerate and a hitchfest. The performance gains are relative, of course; Rogue Leader, for example, is still problematic because of an issue with Memory Mapping Unit (MMU) code. Its 103% boost is largely due to a new way of dealing with MMU code that Fiora helped program.




    “Most games on the Wii and Gamecube use the default memory management software, which is easily emulated, but a few do their own custom stuff, which requires implementing (potentially) the full features of this aspect of the hardware,” Fiora explains. “This is painfully slow; up until recently, most MMU games had trouble running at 20fps on a fast CPU!
    “Rogue Leader and Rebel Strike in particular have long been emblematic of Dolphin's failures: they're by Factor 5, a developer legendary for taking hardware to its limits and beyond. In the N64 days they rewrote the firmware on the GPU to push 5 times more polygons than it was supposed to; in the Gamecube era they made Star Wars games that used basically every single feature in the book that Dolphin finds difficult to emulate. Making them playable won't just involve lots of continuing CPU optimizations, but also implementing graphics features that no modern card supports a direct equivalent of, like ZFreeze (if it's not implemented, the skybox covers nearly everything in the game and you can't see more than a few feet in front of you!).”
    Dolphin still has a long way to go before it flawlessly supports the entire GameCube and Wii libraries—I was disappointed to hear that Metroid Prime’s stuttering issues haven’t been solved with Fiora’s improvements. (Good news, though: other contributors are hacking away at that problem.) But at this point, more performance boosts are hitting Dolphin in a month than most emulators see in a year or two of development.
    If you've always seen amazing screenshots from Dolphin and wanted to try it out, now's the time to do it.

    Source
    Very interesting read. I remember showing my friend Windwaker running on Dolphin in 1080p a few years ago and he couldn't believe it. Time to try it again in 1440p now

  2. #2
    PSU Technical Advisor
    Varsh's Avatar
    Join Date
    Jan 2006
    Location
    W-s-M
    PSN ID
    UK-Varsh
    Age
    33
    Posts
    5,768
    Rep Power
    89
    Points
    24,017 (0 Banked)
    Items User name style
    F-Zero GX finally running properly! I think that's a game I'm going to have to boot up later tonight that's for sure, one of my all time favourite racing games.

  3. #3
    Elite Sage
    BBK..'s Avatar
    Join Date
    Oct 2008
    Location
    Bristol!!
    Age
    25
    Posts
    10,518
    Rep Power
    93
    Points
    52,981 (15,799 Banked)
    Achievements IT'S OVER 9000!
    It's amazing how much support this has got. It's odd that it's only ever Nintendo platforms that have good emulators running. Used to love PJ64

  4. #4
    Finally You Are Free
    Nerevar's Avatar
    Join Date
    Aug 2005
    Location
    Equestria
    Age
    22
    Posts
    16,024
    Rep Power
    137
    Points
    86,218 (0 Banked)
    Achievements IT'S OVER 9000!
    The Dolphin Emulator is something amazing. If only all emulators got this kind of love and work.

  5. #5
    Elite Sage
    BBK..'s Avatar
    Join Date
    Oct 2008
    Location
    Bristol!!
    Age
    25
    Posts
    10,518
    Rep Power
    93
    Points
    52,981 (15,799 Banked)
    Achievements IT'S OVER 9000!
    I agree. A PS2 and original Xbox emulator would've been amazing if it had the same support as dolphin.

  6. #6
    Supreme Veteran
    keefy's Avatar
    Join Date
    Nov 2007
    Location
    The Sock Gap
    Posts
    18,198
    Rep Power
    129
    Points
    66,528 (0 Banked)
    Items Gran Turismo 5Michelle MarshDoomid SoftwareCommodore 64Metal Gear Solid
    Achievements IT'S OVER 9000!
    Might borrow some games off a friend and use this thing if its that good.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
vBCredits II Deluxe v2.1.0 (Pro) - vBulletin Mods & Addons Copyright © 2010-2014 DragonByte Technologies Ltd.