.IMPORTANT. If you are using W10 you need to go to settingsupdate&securityrecoveryadvanced startuprestart now then TroubleshootAdvanced Options Startup SettingsRestartDisable driver signature enforcement. You will need to do this process every time you shut down or restart so try to load your codes all in one go if possible. Gaming articles, stories, news and information. The 'Final Fantasy' MMO will come to its third generation of PlayStation consoles with 4K and improved performance. Enough teasing, we've made you wait long enough. It's time for the October and November Progress Report! Notable Changes¶ 5.0-12722 - Externals: Update MoltenVK to v1.1 by Stenzek and 5.0-12934 Re-enable GPU Texture Decoding under MoltenVK by Techjar ¶.
The long awaited Dolphin 5.0 release is finally here! After nearly a year of bug-hunting and handling the release process, everything has come together for our biggest release yet! The three previous releases followed a very distinct pattern: sacrifice performance, hacks, and features in exchange for higher accuracy. As such, Dolphin 3.0, 3.5, and 4.0 progressively grew slower. But thanks to the cleanups put forward throughout those releases, Dolphin 5.0 is the fastest Dolphin has ever been!
By removing all of those hacks and outdated features while cleaning up the codebase, Dolphin has reached a new level of efficiency, powered by a revitalized dynamic recompiler. On the GPU side, OpenGL and D3D11 have seen tons of optimizations and accuracy improvements, and have been joined by a brand new D3D12 backend for huge performance gains. If there's a CPU or GPU extension that can make Dolphin faster, we take advantage of it.
At a basic level, Dolphin 5.0 is more accurate and more efficient than previous builds in every way. Individual games will vary, especially due to various hacks being removed along the way. Dolphin 5.0 can be downloaded for Windows and Mac OS X from our official website: dolphin-emu.org.
System Requirements to run Dolphin 5.0 can be found here but here's a quick rundown of what changed:
- 64-bit CPUs and Operating Systems are required.
- Windows XP is no longer supported. Windows Vista is no longer officially supported.
- Direct3D10/OpenGL3 Required. This means AMD Radeon 4xxx, NVIDIA GeForce 8xxx, or Intel HD 2xxx minimum! Anything older than that will most likely not work or will have significant glitches.
Dolphin on Android is not getting a release build. This does not mean it's falling behind or anything. We just did not feel like Dolphin on Android has reached any milestone with these changes. We'd rather it have its own special time in the sun when it comes, instead of tagging it onto what has been an already concerted effort on the desktop release.
Change Log¶
With nearly 10000 commits spanning compatibility, crash fixes, new features and more, Dolphin 5.0 offers a variety of reasons to upgrade from the previous release:
Texture EnVironment Fixes (See Pixel Processing Problems for details)¶
Texture EnVironment Fixes (TEV Fixes) is a fundamental change to how Dolphin handles the graphics pipeline in the GameCube and Wii. Rather than attempting to emulate integer math using floating point math, Dolphin abandons that by taking advantage of the D3D11 and OpenGL 3 (or newer) APIs that allow for the use of integer math unlike older APIs. Back when Dolphin was first introduced, this wasn't even an option outside of a software renderer as those APIs didn't exist yet! Despite integer math being supported since OpenGL 3, many graphics cards and drivers still struggle to handle integer math correctly. This could cause some loss in performance in specific situations, but, the huge increase in accuracy solving thousands of graphical issues across hundreds of games would simply not be possible without the switch.
Various floating point rounding errors would cause tons of issues in games.
zFreeze Support (See the Jan 2015 Progress Report for details)¶
zFreeze is one of those features that we never thought would be implemented. Developers have been aware of the feature for quite some time, but no one could quite get a handle on how to implement it. It took three developers working upon years of research to finally crack the code, and now every known situation of zFreeze works properly in Dolphin! As we proudly stated once zFreeze emulation was defeated yes, you can finally play Rogue Squadron II in Dolphin. Due to how demanding it is and all the crazy hardware tricks it uses, it may not be perfect yet, but zFreeze will not be causing any more headaches.
Flickering and ordering issues dominated zFreeze titles in Dolphin 4.0.
Dolphin 5.0 has no such issues remaining, with complete zFreeze support.
There are roughly about two dozen known GameCube/Wii games that make use of zFreeze in some way and likely many others that use it for similarly benign reasons. While it's mostly used for shadows, Blood Omen 2 and Mario Power Tennis are notably much, much more playable without zfighting and layering issues.
Better and Faster CPU Emulation¶
Much like Dolphin's GPU emulation, Dolphin's CPU emulation has seen many accuracy improvements over the past two and half years. And it's sacrificed compatibility, too. While D3D9 was sacrificed for integers, the x86_32 JIT was sacrificed for a whole slew of improvements. We promised users that dropping the 32-bit JIT would open up many options for improvements, but, even we didn't expect nearly a 100% improvement in performance in the JIT!
Dropping the 32-bit JIT was hugely instrumental in many of these changes; it meant a lot less work to implement new features (no longer have to implement it twice, once for each architecture), along with the lifting of some restraints that heldback various optimization ideas. The result of the added ease is that many instructions that previously had to fall back onto the costly interpreter have now been implemented into the JIT. Any game that uses said instructions will see a performance boost. Even better, by using a super-accurate software interpreter backed up by hardware tests as a guideline, many instructions were made more accurate over the course of the 4.0 era. It was very easy to simply fall through walls not too long ago.
One of our touted features that show just how much more accurate Dolphin has become is that hardware recorded replays in games like Mario Kart: Double Dash!!, F-Zero GX, Mario Kart Wii, and every other game we've tested with replay support now can be correctly replayed between Dolphin and console without issues.
In our previous release, if a title used full MMU emulation, that more or less meant it was not playable due to just how demanding these games were. One of the focuses of CPU emulation was to make these games playable, and many JIT optimizations targetted MMU titles. None more important than the Far-Code Cache, which greatly speeds up MMU games by cleaning up the instruction cache of little used code and keeping more important code cached. On top of that, Dolphin 5.0 can boot and play Rogue Squadron III: Rebel Strike thanks to better MMU emulation!
Rogue Squadron III can stand toe to toe with the best looking games on the GameCube and Wii.
The kicker? All of the JIT optimizations allow Rebel Strike to run more than ten times faster than it would otherwise run. That's a pretty good performance gain, even if that still means it can only be run fullspeed on the best of modern computers.
3D Stereoscopic Output (See A Second Perspective for details)¶
Dolphin has had forays into 3D Stereoscopic output before, but it hasn't worked out very well. Using outdated methods that often relied on a stark loss of image quality (and ran at half the framerate!), 3D Stereoscopic Output was dropped shortly after the 4.0 release. Armed with the knowledge and documentation of modern 3D devices, Armada went through and reimplemented Stereoscopic output from the ground up. This time around, users don't have to choose between crisp colors and fluid framerate or stereoscopic 3D. Dolphin's new and improved stereoscopic 3D support can interface with Top/Bottom and Side-by-Side monitors, and in D3D will still work with NVIDIA 3D Vision.
Full ES_Launch Support¶
Like zFreeze, ES_Launch is another of those long-time features that has caused issues in the various games that use it. Thankfully, by the time 4.0 rolled around, things were mostly sorted out side from a few games. People trying to play Metroid Prime: Trilogy probably noticed that the difficulty and saveslot they wanted to use didn't matter; Dolphin would always load the default difficulty in the first saveslot. This meant you couldn't even get to Metroid Prime 2's multiplayer in Trilogy, since it would just load the single player. House of the Dead 2 & 3 Returns would only load House of the Dead 2, and Super Smash Bros. Brawl couldn't load the masterpieces on the disc. This was all because of ES_Launch support being incomplete; as a work-around to make things not just freeze, Dolphin would load the games with default parameters.
Dolphin 5.0 features full ES_Launch support through better reverse-engineering and understanding of the feature. This new implementation of ES_Launch is known to work in every single situation without causing any regressions and should be the end of ES_Launch problems in Dolphin unless we inadvertently break it again.
Revamped Netplay¶
Thanks to an active netplay community, we try our best to keep things up to date and working. Back in Dolphin 4.0, netplay was quite a thing to setup. Users would have to port-forward, sync all settings manually, and even if they did all that, there would be no warning if they did desync. Thanks to a very active community at smashladder for assisting in high volume testing, we've managed to pack in a ton of new features for netplay in Dolphin 5.0!
- Dualcore Netplay: A new form of Dualcore called 'fake-completion' was added. While it has lower compatability than single-core on netplay, it brings most of the speed of dualcore mode in a deterministic way.
- Blank NAND Netplay: Without Wiimotes and saves on Wii netplay, it's left as a mostly useless feature. By disabling the NAND, users can at least use Wii Netplay with Wii games when they don't need to save or use Wiimotes. Enterprising users on smashladder have taken to playing Project M competitively on netplay, simply because it's lower latency than Nintendo WFC!
- STUN Server: We realized that many users couldn't forward ports in order to play netplay, so, we now have an alternative. Dolphin's STUN server allows many users who either lack the ability to configure their router or the knowledge to forward ports to still host and play netplay sessions! While gaining 100% compatibility across all routers and networks is impossible, this should still work with most setups.
- Settings Sync: Dolphin now syncs many settings that could commonly cause desyncs if they were different. They are only set during the netplay session, and will not permanently change any settings beyond that.
- Desync Detection: If something is wrong and you do manage to desync, Netplay will now warn you that it has detected a possible desync. If users are using cheat-codes or any kind of modification to the game, this could be set off erroneously. But in most situations, the desync checker will detect if you've desynced before you even notice! This usually will show up very early on if something is setup wrong.
Audio Rewrites and Advancements (See The Rise of HLE Audio and The New Era of HLE Audio for an in-depth explanation)¶
Dolphin 4.0 marked a big change for audio in Dolphin: DSP-HLE was no longer a joke of a feature that barely worked. DSP-HLE and DSP-LLE both use the same audio interface, resulting in better audio emulation all around.
Since Dolphin 4.0, audio latency with both DSP-HLE and DSP-LLE has been reduced by over 80ms. That's around 5 frames in a 60 FPS game. Tons of games are playing audio for the first time regardless of settings, and DSP-HLE has been brought a lot closer to DSP-LLE, nearly matching it in compatibility with most titles.
The two biggest winners in the rewrites are Disc TracK (DTK) Audio and the Zelda Microcode titles. DTK audio is streaming audio off the disc, which is used for cutscenes in Starfox Adventures. Consider that DTK audio used to be asynchronous even on DSP-LLE and you'll quickly realize that was a problem. On both DSP-HLE, and DSP-LLE, DTK audio is now synchronized to emulation speed. While there were some initial growing pains with the feature, DTK audio's subsequent rewrite and fixes have been bugtested to work in all known cases properly!
Zelda microcode games were using Dolphin's ancient Zelda-HLE implementation still in 4.0. While it was better than old-AX-HLE audio, once the other rewrites were completed, Zelda-HLE games were left among the most broken on Dolphin! A full rewrite in the style of New-AX-HLE and synchronous emulation brings these games up to speed with near perfect HLE audio output!
After being reimplemented, things sound much nicer.
Override Emulated CPU Clock¶
One of the most versatile features of Dolphin 5.0 is the ability to override the CPU clock of the GameCube/Wii CPU. If you're lagging in a game due to a weak CPU, you can lower the emulated CPU Clock to trade emulator lag (and issues like audio lag), for full-speed with a lower framerate. Have a powerful computer? Raise the clockrate to remove emulated lag. In some games, this can turn a dynamic frame-rate game into a 60 FPS game. This feature is also a cornerstone of various 60 FPS patches available for users on the wiki and forums. This can also be used to get around various hangs in games like True Crime: New York City by adjusting things that would otherwise require (closer to) cycle accurate behavior in the CPU core for a particular scene.
Expanded Native Controller Support (See the Jan 2014 Progress Report, Hardware Review: Mayflash Dolphinbar, and Hey, Listen! Your Wiimote can speak now! for details)¶
Thanks to a reverse-engineering effort on Nintendo's GameCube Controller Adapter for Wii U, Dolphin can directly use it to interface with GameCube controllers! By using a specialized driver, users can just plug in the adapter, plug in controllers and go. Never worry about deadzones or improperly configured buttons ever again! To demonstrate this, F-Zero GX has a handle tool that shows controller accuracy...
X and Y should be zero. This 360 controller is not even close!
On the Wiimote side, DolphinBar support brings ease of use to Wii Remotes. It's a built-in sensorbar/Bluetooth combo and can even be used on Dolphin's Android builds, bypassing limitations imposed by Android. Wii Remote Plus' and emulated Wiimotes also get the added bonus of proper Wiimote audio output without disconnects on Windows 8 and 10. If all of that wasn't enough, if a game for some reason disconnects a Wii Remote (such as an ES_Launch), Dolphin now can reconnect the Wiimote when the user hits a button on the Wiimote, just like on console! This eliminates annoying walks to the computer when playing with friends, especially in titles that repeatedly disconnect multiplayer Wiimotes when returning to the menus. Even more, users on Windows 8 and Windows 10 can connect Wiimotion Plus Wiimotes without any kind of special setup!
Last but not least, the Phantasy Star Online series supported controller that could only be described as awesome: the GameCube Keyboard Controller. This mammoth beast had a full ASCII keyboard integrated onto a gigantic GameCube Controller and is ridiculous as it is cool. Users can now simply configure their keyboard to act as the GameCube Keyboard Controller or with the Raphnet GameCube Adapter, can actually configure the keyboard. Unfortunately, the official Wii U adapters are unable to detect this controller on their official firmware.
Video Output Emulation (See Pixel Aspect Ratio Adjustment and Better Aspect Ratio Detection for details)¶
Dolphin 4.0 and earlier versions were relatively simple when it came to displaying the games. It had hardcoded values for outputting NTSC and PAL video modes and used those rather than emulating what the game was sending to Video Interface. This made things a bit awkward. Games on the GameCube and Wii aren't precisely 4:3 or 16:9, and many developers were well aware of this! One of the things done for Dolphin 5.0 is that it can now correct the aspect ratio to match how it would look on console.
The green circle is a perfect circle for reference.
That's a relatively minor enhancement; there were much worse problems that had to be handled. Because Dolphin's actual timings were mostly hardcoded instead of trying to see what the game is actually doing, we ran into a ton of edgecases where game displayed incorrectly or would not render at all. In the case of Bakugan Battle Brawlers' Special Edition, it had an X region code (which rings up as a PAL region code in Dolphin 4.0,) while being an NTSC game. This caused it to run in PAL50/60 depending on whether the user was using PAL60 video modes. Dolphin now sets up Video Interface timings properly, allowing for better detection of video modes as well as actually polling the controller at the correct moment of the frame. This fixes various issues across many titles.
These fixes caused some regressions on weird video modes that Dolphin previously hacked around. This forced a rewrite that would allow Dolphin to support anything that the Wii can throw at the T.V.! The 'Double Strike' video mode (240p) is used in some virtual console titles, while 960i isn't used by anything except select homebrew, but Dolphin can output both and everything in-between correctly now!
2020 Super Baseball and many VC titles use the double strike video mode.
Last but not least, Dolphin now has heuristics to try and detect what aspect ratio a game is using. This lets Dolphin automatically switch between 4:3 and 16:9 when a GameCube game's resolution changes. Getting into 16:9 in those games is as simple as entering their option menus and swapping. No emulator configuration necessary!
Improved Audio and Video Dumping (See The October 2014 progress report entry for details)¶
It would have been really hard to show off all of the great things added throughout the Dolphin 4.0 era without the improved video dumping functionality. Audio and Video dumps now line up (most of the time,) and can be mixed effortlessly. While there are still some situations that don't work perfectly, and is missing a few features, we can finally dump video and audio from Dolphin without using third party programs!
Line-Width and Point-Size Fixes (See Line-Width/Point-Size Rewrite and Correct Perspective Divide in Line-Width Coordinates for details)¶
In Dolphin 4.0, line-width and point-size were only able to be emulated at minimum width in Dolphin's OpenGL backend. This meant a lot of line-width/point-size effects were either invisible or very hard to see. By implementing a geometry shader to emulate it (much like D3D already did), all backends are now able to properly emulate line-width/point-size effects!
With minimum width (which OpenGL could only do in 4.0) the effects are barely visible!
Fireman's attack finally looks like it has some teeth to it.
This correctness does result in a performance down in some cases on OpenGL, but as it's using the same implementation as D3D11/12, it's simply the price of actually emulating a feature. Dolphin 5.0 has better line-width emulation overall as well; Factor 5 and their Rogue Squadron titles found various bugs in our seemingly perfect implementation. This repairs various lines disappearing at certain angles in those titles in Dolphin 4.0.
Exclusive Fullscreen Support¶
Exclusive Fullscreen mode allows Dolphin more complete control over pushing frames to the monitor. This gives Dolphin much lower latency (up to 2 frames depending on window manager), and more consistent frametimings for games that require it. The best way to compare is to a lagging video where frametimings are inconsistent.
The flicker effect fails because frames are missing their window of opportunity.
With exclusive fullscreen, Dolphin can push every frame to the screen without issues.
Memory Card Folder Support (See the June 2014 Progress Report) for details.¶
The ability to use a folder as memory cards is one of those features that doesn't seem that important, but after using GCI Folders for a while the benefits are hard to leave behind. While it makes sharing saves easier, perhaps the greatest benefit is that your memory card will never fill up no matter how many saves you have!
Vertex Loader JIT (See the Jan 2015 Progress Report) for details.¶
By using a recompiler instead of an interpreter to load vertices, vertex intensive games will run much, much faster than before in vertex limited scenes. Games like Super Mario Galaxy 2, Xenoblade Chronicles, and other vertex heavy games will see bigger gains, but every game will see some drop in CPU usage.
EFB Copy to Texture Enhancements (See Scaled Partial Updates, Further Improvements to Partial Updates, and Paletted EFB Copies Implementation for details)¶
Store EFB Copies to Ram (aka 'EFB to Ram') is a very strenuous setting that sometimes can limit what games run on what computers. A weak computer can't hope to run a game that requires EFB Copies stored to RAM. By expanding what EFB Copies to Texture can do, Dolphin can now run a ton of games faster without visual glitches while having the added ability to raise the resolution of those effects. New Super Mario Bros. Wii uses a new feature called Partial EFB Copy to Texture in Dolphin 5.0. This allows Dolphin to run the game nearly three times as faster while rendering effects such as the EFB Copies such as the coins at any resolution!
No matter your internal resolution, coins were always blurry and blocky
Another feature is Paletted EFB Copy to Texture support. This is used in a lot more games, such as Star Wars Rogue Squadron 2/3 (as if there were a feature they didn't use), The Legend of Zelda: Twilight Princess, and Mario Superstar Baseball. This allows the map in Twilight Princess to be rendered at any resolution, along with up a performance boost up to 400% on scenes that use the Hyrule Field Minimap Speedhack.
More Accurate Disc Timings (See The Angular Disc Speed Writeup for details)¶
While for the most part we've been trying to speed Dolphin up, the one thing we've had to slowdown is disc read timings. Most people don't like loading times, but being able to simulate the disc drive is a very important feature for speedrunning and preservation. Classic titles like Sonic The Hedgehog would be drastically changed without loading times. Have no fear, Dolphin has greatly improved loading times by actually fixing the fact we weren't even trying to simulate load-times on Wii in Dolphin 4.0 due to an oversight.
Better simulation of the disc drive would have long-term benefits. It would allow Dolphin to speedup disc transfer rates without breaking things for instance, as well as fix various instabilities in the emulator. Alas, despite our best efforts some games still cannot use Dolphin's accurate disc speed path.
Download¶
Dolphin 5.0 can be downloaded from our official website.
A Look Back¶
What did we think was going into Dolphin 5.0 when we released Dolphin 4.0?
Adding Macroblocks in the Dolphin JIT
While Dolphin's JIT has gotten quite a bit faster (nearly 2x over Dolphin 4.0!), Macroblocks weren't the reason why. Macroblocks haven't really been explored much yet, and with the GPU thread presenting most of the bottleneck in many games, it's not quite as important as it was in Dolphin 4.0. Despite that, this could be one of the next great optimizations just waiting to be implemented.
Better Detection of Busy Loops
Also known as 'Better Idleskipping'. Idleskipping lets an emulator skip emulating potentially costly CPU instructions used during a busy loop. There are tons of games in Dolphin (Such as the Metroid Prime games) that have busy loops that aren't detected by Dolphin. Considering just how big of an effect this could have, it's unfortunate that this hasn't been worked on too much yet. It's a low-hanging fruit that remains on the tree to this day.
State tracking in the GFX emulation
This is one of the primary reasons why the D3D11 backend has gained performance on OpenGL for some users. The D3D11/12 backends does have a state tracker, even if it isn't implemented for everything yet. This still should be moved to videocommon so that OpenGL and any other backends in the future will get these optimizations.
Second level FIFO
Another huge GPU optimization idea, but this one we didn't fully accomplish. Currently only the new D3D12 backend has a second level fifo. This is one of the reasons that D3D12 is so much faster in select situations that can cripple the other backends. By the next release we hope to have this ported to videocommon for all backends to use.
LibDolphin
libdolphin was a big idea around 4.0's release. Turning Dolphin into a shared library meant that anyone could write their own UI and call into Dolphin cleanly. Unfortunately, Dolphin's JIT stalled several attempts because a shared library requires a position independent executable, which the JIT does not support. The AArch64 JIT, on the other hand, does support PIE and could be used in a shared library. This is something that Dolphin could use to become more portable and useable in a variety of situations the current GUI simply doesn't allow.
Big Picture UI
This is something we never really got to on the PC version of Dolphin. On the Android front, The NVIDIA T.V. UI actually fulfills most of this, but since that relies on a proprietary toolkit, it cannot be ported to other devices. With a new front-end, a controller based interface would be entirely possible, but it probably isn't going to happen with WXWidgets.
Integer shaders
We actually got one prediction absolutely correct. neobrain's Texture EnVironment Fixes got merged alongside the decision to drop D3D9, which could not support integer shaders. This looming change was one of the main reasons that 4.0 needed to be released in the first place, because we didn't want to cut off a significant portion of users right before a release!
The payoff was well worth the cost with hundreds of games seeing large visual improvements. The performance impact was pretty rough at first, but optimizations throughout the emulator since then have smoothed things out quite a bit. For those that are stuck on Dolphin 4.0? We'll be waiting for you with all kinds of new features and enhancements when you do upgrade your PC!
Predictions for the next release?¶
Considering how accurate the 5.0 predictions were, let's give this another try for our next release. This should be considered more of a wishlist than any guarantees.
Ubershaders
Everyone hates shader generation stuttering. There are a implausible number of configurations the GameCube/Wii GPU can do, and Dolphin has to emulate each configuration with a shader. Generating these shaders take quite a while, meaning that Dolphin has to wait for them to get generated. This stuttering is often referred to as shader generation stuttering by everyone. By creating gigantic, but less efficient, shaders that Dolphin can fallback to while the faster shaders generate on the fly, we can eliminate this annoying behavior.
Virtual Reality Support
Proper Stereoscopy Support built an infrastructure into Dolphin that could be added onto for more impressive features. We're hopeful that with some tweaking and added infrastructure that Head-Mounted Displays can be supported to give users a chance to step foot in some of their favorite worlds of yesteryear. The Dolphin Team got past a huge blocker of this when we relicensed to GPLv2+!
Hybrid XFB Copies
Hybrid XFB would change Dolphin's XFB system to use the texture cache and behave like EFB Copies. We would have XFB Copies to Texture and XFB Copies to RAM. The bonus to this is that some games which previously needed RealXFB for displaying videos would only need XFB to Textures, resulting in a performance boost. The other benefit is that games that absolutely require RealXFB will only render low resolution for the parts of the screen that require RealXFB. An example of this is Super Smash Bros. Brawl's single player victory screens. The screenshot it takes of the screen uses RealXFB, but the rest can still be displayed at whatever resolution you're set to under HybridXFB.
Locking EFB/XFB Copies
Citra recently made the news with their feature known as Texture Forwarding. It was considered as a step up over Dolphin's EFB Copies to Texture because it can get higher compatibility with less of a performance loss when the accurate path is required. Unfortunately, Dolphin's JIT doesn't make something like this easy to implement. Locking would be a huge performance up in games that require the intermittent use of EFB or XFB Copies stored to RAM. We would no longer need a lot of the speedhacks that are currently available in the Graphics Settings/Hacks menu.
Scripting Support
This would give people better control over their games. Outside of uses in TASing and messing with memory values, people could outright modify games. One idea we've tossed around if this feature is merged is holding a 'tournament' where people program an AI for Melee via the scripting interface, and the person that wins the tournament gets a prize! Alas, implementing this in a clean way is quite the challenge, especially when Dolphin's codebase is well over ten years old by now.
Accurate Enough Disc Timings for Metroid Prime TASes
This isn't a knock against the people who want to TAS Metroid Prime; the tricks and timings in this game require very accurate load times in order for everything to work. As an emulator, we strive to be as accurate as reasonably possible. It should be possible to simulate disc loading times to a good enough degree that Dolphin could be tuned to match that of the various disc drives that can run GameCube games. Maybe we'll have a slider from Purple GameCube (slowest) all the way to Red Wii (Fastest) someday!
Vulkan Backend
While our OpenGL backend is extremely capable, Vulkan provides a fresh start that could gain us more features in the future along with better support of various drivers. This should be extremely good for AMD and Mobile users, where OpenGL drivers have significant overhead.
Rewritten Netplay
While Netplay in Dolphin 5.0 is a selling point, we still want better. Lower latency on 3/4 player games should be possible, P2P netplay could yield lower latencies, and there's tons of features like IOSync that could negate the need for syncing savefiles in the future. Beyond that, fixing Wiimote Netplay and figuring out how to get the Wii NAND working on netplay are priorities.
Credits¶
Datel Others Driver Download For Windows 8.1
We would like to thank everyone that helped make this release our biggest one yet!
Development team¶
There have been so many contributors between 4.0 and 5.0 that it's very hard to credit everyone. For a full list of contributors, please check here.
Developers with over 50 commits and/or featured in a Progress Report.
- lioncash (Code Maintenance and Quality Expert)
- Sonicadvance1 (Dolphin Android, AArch64 JIT, Graphics Backend Creator and Optimizer)
- degasus (Graphics Backend Development and Optimizations, AArch64 JIT)
- flacs (Vertex Loader JIT, many speed optimizations)
- Armada (3D Stereoscopy Rewrite and Graphics Wizardry)
- Fiora (Too Many JIT Optimizations, MMU Fixes)
- JosJuice (Disc Reading Improvements, Gameini Improvements, General Fixes)
- delroth (CPU Optimizations, FIFOCI, New Zelda HLE)
- booto (VI Improvements, Audio Improvements)
- comex (CPU Optimizations, Netplay)
- phire (Core Timing Improvements, GPU Backend Improvements, Evdev Input Backend)
- magumagu (ES_Launch, Software CPU Interpreter, CPU Emulation Optimizations, Disc Timing Improvements, DTK Audio Improvements)
- skidau (Native GameCube Controler Support, Audio Emulation Fixes)
- sigmabeta (Android UI Development, NVIDIA Shield T.V. interface)
- RachelBryk (TASing Tools and Development, Netplay Improvements)
- Jasper (Input Cleanups)
- neobrain (Texture EnVironment Fixes)
- shuffle2 (VS2015 move, Workarounds for VS Compiler Bugs)
- Stevoisiak (INI updates, UI Improvements and Cleanup)
- rohit-n (Makes sure we don't break non-PCH Builds)
- Parlane (Various Code Cleanups and Fixes)
- mathieui (Netplay Advancements)
- Helios747 (netplay improvements, UI/UX improvements)
- stenzek (D3D11/12 Improvements)
- SIEePIEs5 (OSX BBA Support)
- SeannyM (Android Fixes)
- kayru (D3D11 Optimizations)
- Linktothepast (Game INI Management and Updates)
- MaJoR (Dolphin Theme, UI/UX advising)
- LPFaint99 (GCI Folder Support)
- Anti-Ultimate (OpenGL VSync Fix)
- TotalNerd (Memory Card Timing Improvements)
- KScorp (Depth Matrix Shader Fixes)
- RisingFog (Audio/Video Dumping Rewrite)
- crudelios (Improved Bounding Box Implementation)
- slx7R4GDZM (D3D XFB Scaling)
- konpie (Audio Interface Fixes)
- TinoB (D3D Hardware Bounding Box Support and Scaled Partial EFB Copies)
- NanoByte011 (Lighting Attenuation Fixes and zFreeze Assistance)
- Ziek (Netplay Improvements)
- SizzlingCalamari (DSP-LLE on Thread Fix)
- endrift (OSXpert, FreeBSD fixes)
- illuminatedgeek (About Dialog Tweaks)
- AdmiralCurtiss (PAL Video Mode Improvements)
- mirrorbender (VI Scaling Improvements and Aspect Ratio Adjustments)
- spxtr (Named Pipes Input System on Linux)
- jloehr (Real Wiimote Connectivity Fixes)
- Jhonn (INI Cleanup)
- hdcmeta (D3D12 Backend)
- mmastrac (DVD Interface Fixes)
- EmptyChaos (Frame Advance Fixes, UI Lockup Fixes)
Content Management team¶
- JMC47: Dolphin 5.0 video, Article Writer (Primary)
- Shonumi: Forum Administrator
- Kolano: Wiki Administrator
- Kostamarino: Game Specific Settings (GameINIs) Maintainer
- MaJoR Forum Administrator, Wiki Administrator, Article Writer (Secondary), Article Editor
- Jhonn: Wiki Administrator
- delroth: Dolphin website Administrator/Maintainer
Translation team¶
Translation Manager - JosJuice
- Arabic - mansoor
- Asturian - Ḷḷumex03
- Catalan - Katabi and Puniasterus
- Croatian - Alberto_CRO
- Czech - Zbyněk Schwarz
- Danish - Hatsen, HiKaroline, and PhatcatDK
- Dutch - Garteal, Sintendo, and TijmenW
- Finnish - PPLToast
- French - Pascal
- Galician - anxo_cruel, enfeitizador, and mandruis
- German - AdmiralCurtiss, Atalanttore, greybit, MexicanWithGun, michtrz, Minty123, muesli4, Neui, and Tilka
- Greek - firespin and Kostamarino
- Hungarian - Evin
- Italian - Mewster
- Japanese - DanbSky and Lioncash
- Korean - bexco2010 and Siegfried
- Malay - abuyop
- Norwegian Bokmål - KHRZ
- Polish - michtrz
- Portuguese - 100tpt
- Portuguese (Brazil) - Felipefpl, Jhonn, and Maldonny
- Romanian - ArianServ
- Russian - BFG1992, flashmozzg, Fremis, and PASAf
- Spanish - Jambi, Katabi, Petiso_Carambanal, Puniasterus, and Swyter
- Swedish - DolphinPhoenix and JosJuice
- Simplified Chinese - cejhb, lxf2000, Sentret_C, and Zhenchao Zhang
- Traditional Chinese - victor1justin, xf2000, and Zhenchao Zhang
- Turkish - Mustafa Can
- Welsh - TomosANTIGUATomos
The past two months have been quite busy with a lot of features and fixes spread out between a lot of contributors, new and old. It's only fitting then that we've seen some important fixes for ancient bugs and new ideas bringing in new features. Even if the game you've been playing is already running fine, developers are hard at work coming up with ways to make things even better. Take for instance a new infrastructure that allows Custom Texture Packs to customize what controls show up in games depending on how you've configured your controller in realtime! Also, getting that perfect angle is a bit easier with the new 'virtual notches' system, perfect for difficult platforming challenges in games like Super Mario Sunshine!
Enough teasing, we've made you wait long enough. It's time for the October and November Progress Report!
Notable Changes¶
5.0-12722 - Externals: Update MoltenVK to v1.1 by Stenzek and 5.0-12934 Re-enable GPU Texture Decoding under MoltenVK by Techjar¶
To start off with something relatively simple, this group of pull requests that are of great benefit to our macOS users. Using Dolphin on macOS can be a bit problematic, thanks to the operating system only giving us access to an ancient version of OpenGL and no native support for Vulkan. While we've been taking advantage of a Vulkan to Metal wrapper, MoltenVK, things haven't been perfect. Some settings, including GPU Texture Decoding, weren't working under MoltenVK and had to be disabled. Also, performance wasn't quite as good as native Vulkan on other operating systems.
We have some good news, MoltenVK has been updated to v1.1! On top of various improvements and apparent performance increases, the issues we had with GPU Texture Decoding are now resolved. With this, we've reenabled GPU Texture Decoding on macOS. This is great news for older macs, as GPU Texture Decoding offloads some work from the CPU onto the GPU and can help systems with weak CPU performance.
Note:When using GPU Texture Decoding, Arbitrary Mipmap detection does not function, so certain games that use mipmap effects may malfunction.
5.0-12801 - Dynamic Input Textures by iwubcode¶
Custom Textures have proven to be one of Dolphin's most powerful enhancements. Ever since its introduction in 2009, users have been painstakingly going through some of their favorite games and recreating textures at a higher resolution to stunning effect. These packs allow fans to replay their favorite games like never before, with textures that may rival professional remasters! With hundreds of packs now available, the popularity of this feature is only surpassed by essentials like higher internal resolution. However, there has always been a pretty big limitation with custom texture loading - it has no idea what controller you are using. Many of our bigger packs include custom textures for different types of controllers so the button prompts the game shows will match what is in your hands, however since Dolphin doesn't understand any of this, it's up to the user to manually pick and install the textures for their controller. This leads to an increase in instruction and installation complexity, increasing the difficulty of the pack for creators and users alike.
Enter iwubcode's brainchild: Dynamic Input Textures. By marrying pieces of Dolphin's custom texture support and controller configuration, texture packs can now be aware of what control is mapped to what button and dynamically change what is displayed on screen!
With this feature, when using supported packs users will no longer need to worry about swapping out controller images. When everything is working correctly, users installing texture packs with this feature will only need to copy some files into the Load directory, and that's it! Dolphin is aware of what button you've mapped to what input and can dynamically pull textures from the texture pack in order to match things up so long as it's configured correctly. You can even swap individual buttons and watch them change in real time!
Since this is a feature for texture pack creators, users just need to wait for texture pack creators to update their packs to support it. In fact, you can move on to the next section if you'd like. But if you are a texture pack creator, a power user wanting to add support to an older pack for personal use, or just interested in the process, read on. It's time to talk about this feature in depth.
Creating a Dynamic Input Texture Pack¶
Technically you can create Dynamic Input Textures entirely on your own, but to make the process simpler iwubcode has provided a companion tool to help create these dynamic textures packs. They also made a tutorial that explains how to use it. But here is a quick summary for the sake of demonstrating how it works. First, provide the tool with the original game button textures to get the hash of each button texture into the application. Then map the emulated controller buttons to those button textures so the application knows which button each texture is, for example, mapping the Wii Remote A button texture to 'Wii Remote 1, Buttons/A'. Now import the custom textures for the host controller, and configure the buttons with their Xinput or Dinput buttons. For example, for the texture of the A button on the Xbox One controller, the device is XInput/0/Gamepad and the input is 'Button A' (including ticks). Repeat for any additional host controllers, then export the pack, and we're done! Now, to reiterate, this was only a summary and it absolutely simplified the process. For the full instructions, please use iwubcode's tutorial.
Now, that said, there are a lot of limitations to this feature, especially for the time being. Keep these notes in mind if you intend to use this feature in your pack.
- Texture pack creators must configure the controllers their pack supports and release a new version of the pack. Existing custom texture packs will continue to work exactly as they always have, and for compatibility reasons this is not going to change.
- The accompanying tool is in a bit of a beta state. It, and the tutorial, are improving rapidly, but as of this writing there are some bugs, quirks, and UX problems.
- The devices that the texture pack creator sets up need to match exactly with the one the user is using, otherwise it will not work. For Xinput devices like the Xbox One controller, this is trivial. Everyone supports XInput/0/Gamepad. But for devices like Playstation controllers which have many different ways of mapping, how the texture pack creator decides to map that controller will matter a lot. Please be explicit in explaining what controllers and drivers are supported in your instructions to users.
- There are some built in controller and button names to speed up common mappings. This is limited to Wii Remote, Classic Controller, and Xbox controller for now. More will be added later. Also, joysticks and motion controls are missing from this for now, and have to be entered manually.
- Controller configurations that work by pretending to be another controller will not function correctly with Dynamic Input Textures. This disqualifies all the Playstation controller mapping tools that make the Playstation controller pretend to be an Xbox controller. There's nothing we can do about this.
- Games that use color-key transparency do not cooperate with this feature. This is a known issue and a fix is planned.
- If an emulated controller input has two different textures, such two different styles of the same button, then Dolphin will pick one and always use that one for all instances of that mapping. You can see this in the gif above: the B/Circle button should be in the style of the X/Square button, but instead it is an angled style used for the main menu. The companion tool has no way to handle this at this time, but we hope to address this in the future.
- 'Blank' input textures, such as a texture showing an analog stick with no inputs, are currently not supported. With a little creativity this can be worked around, such as mapping it to an analog stick direction so Dolphin knows which texture to use. This should improve in the future.
- Dynamic Input Textures can support support advanced expressions (such as 'and', 'or', and others) if mapped 1:1 with Dolphin, but there is no way to show it in textures. This may change later.
- Mapping bits of group textures is supported on the emulated controller side, but not on the host controller side. This is a planned feature.
- Exported results for Dolphin cannot be edited by the application. Remember to save your dynamic input projects! And since saves are also JSON files, be sure to keep them separate.
- When reopening saved dynamic input projects, the textures they expect must be in the same spot they were when it was saved. Currently, if they are missing the application will crash. That should not remain an issue for long.
While that was a lot of notes, Dynamic Input Textures has a lot of potential benefits for texture pack creators. It can offer a drag and drop experience for users, allowing pack creators to get away with FAR simpler installation instructions. And that also means support should be easier too! Plus pack creators can get much more creative with input support in their packs without worrying about ballooning complexity for users. It's a really great option for texture pack creators going forward.
5.0-12881 - Remove AsciiArt shader by SpaceXCheeseWheel¶
It is with great sadness and regret that we announce that our beloved asciiart post processing shader has been removed from Dolphin. While we have removed many popular features in the past, such as the D3D9 backend and 32-bit support, this one by far hurt the most.
... Okay, maybe it wasn't our most popular feature, in part because of its ludicrous performance demands that made even 1x native at fullspeed impossible for... forever. And yes, it has been completely broken since the Unification of Videocommon nearly two years ago. And sure, post processing injectors like Reshade can do a similar (though much simpler) effect while being actually performant.
But still, it was a feature we loved. It was quirky, ridiculous, and pretty useless, but it was ours, and we are sad to see it go. Goodbye asciiart!
However! As a final farewell we tried it with 2020 hardware and discovered, with much surprise, that modern hardware has finally caught up to the asciiart shader! Fullspeed at 1x Native was finally possible in almost every game! It only took a 9900k and an overclocked RTX 3090.
Click HERE for a sampling of how demanding 1x Native asciiart at fullspeed is on a 3090!
5.0-12952 - (IOS-HLE) - Abort Pending Operations on Shutdown by Sepalani¶
Many many years ago, Dolphin's slowly improving IOS emulation mixed with Wii online infrastructure shutting down resulted in a very frustrating regression that would stop would be dancers in their tracks. The video game series, Just Dance suddenly started freezing in the main menu in most of their online enabled games. And we're not talking about one game, we're talking about over a dozen that were releasing up until last year!
These games did work in the past, however this isn't actually a Dolphin regression. Instead, the games themselves changed because the servers they were connecting to no longer exist! While this didn't result in any major problems on the Wii, Dolphin's implementation of the network modules assumed that socket operations would always complete before a socket is shut down. Since Dolphin was waiting for a reply from the Ubisoft servers and not aborting the pending operations, the game, too, was waiting for a reply that never came. The only way users could work around it was disconnecting their computer from the internet or gutting their NAND of the certificates needed to access online play.
Sepalani is no newcomer to the Wii's network services and has been steadily improving things for quite a while. This one has been quite the labor, with hardware tests made and tested across Windows, Linux, macOS and Android to make sure the behavior matched what the games expected regardless of operating system. He discovered there was missing or broken functionality on Android and macOS and has brought forth fixes so that they can pass the hardware tests as well.
The end result is better online behaviors all around and no more hanging in the Just Dance games.
5.0-12962 - Logic & UI for 'Virtual Notches' by nick-michael¶
The Nintendo GameCube controller is broadly speaking very close to any typical modern gamepad. Two joysticks, four face buttons on the right, triggers, dpad, etc etc. However, the GameCube controller has many unique features that most gamepads do not have. These differences can make it surprisingly hard to recreate the intended control experience on modern controllers. As developers and a community of users, we've learned to adapt to these quirks. Dolphin has many features designed to recreate these features as best as we can, and even physical differences like the face buttons can be accounted for with a little creativity. However, there was a commonly overlooked unique feature of the GameCube controller that we had no way to recreate; a feature that noticeably impacts the play experience in the majority of the GameCube's catalog. The GameCube Controller has octagonal gates.
A joystick gate is the border that limits the maximum tilt of the joystick. To put it simply, when you tilt the controller all the way and you hit that rim of plastic, you just hit the gate. Most modern controllers use perfectly circular gates, but Nintendo stuck with octagonal gates for a very long time, well after everyone else had moved onto circular gates. Because, quite frankly, octagonal gates are fantastic for 3D platformers. By having 'notches' in the gate that lock the joystick into a specific angle, the player intuitively knows the exact input they are giving the game. This allows for some incredibly precise and high level play, as we've seen in speedrunning. Super Mario 64's crazy speedrun techinques are tremendously easier when using a controller with octagonal gates, as the speedrunner can go to a spot, manipulate the controller a certain way, and consistently land at the same spot, even when passing through multiple universes! However, octagonal gates can be considered annoying for games that don't need such precise movement, as they make continuous rotation less fluid. So when the 3D platforming genre slipped into the background, Nintendo finally moved to circular gates with the Wii U.
Nevertheless, the majority of the GameCube catalog benefits from the octagonal gates that they were designed for. But anyone playing these games with modern controllers will be missing that element of the experience. nick-michael was playing the GameCube version of Super Monkey Ball, and just didn't feel right on a controller without an octagonal gate. So they decided that they were going to fix this discrepancy - through emulation! nick-michael created a 'virtual notch' system that emulates the effect of an octagonal gate on modern circular gate controllers by snapping some of the joystick's range to octagonal directions. It doesn't emulate the feel of an octagonal gate, so the player won't intuitively feel their input the way an octagonal gate allows, but it emulates the results of the gate shape. If you need to do a really precise set of jumps in a platformer, you can be more or less correct and the notch emulation will send the perfect inputs that you would have been gotten by pressing those almost correct directions into a GameCube Controller.
This can be customized as well, allowing for very tiny precise 'notches' or really big ones that dominate the controller directions. And of course, it's all disabled by default, so you can completely ignore it if you prefer.
5.0-13039 - Create Wii Shop log files when installing a WAD by AdmiralCurtiss¶
This isn't technically an emulation bug, but rather an unfortunate confluence of console and game behaviors in an era when the Wii Shop is no longer around to install DLC. Once we knew what was wrong it was easy to fix, but actually getting to that point was the actual difficulty.
The original issue report we were working from was simple: Mega Man 9's DLC worked in Dolphin 5.0 but at some point stopped installing correctly in the latest development builds. We believed it was an issue during the installation process as if you took the NAND you created from Dolphin 5.0 and used it in the latest development builds, the DLC would appear as per normal. A simple bisect would usually solve an issue like this, but various testers had inconsistent results where the DLC would suddenly start working, even on the latest development builds! Worse yet, we didn't know exactly why it would start working, sometimes simply running other games would be enough to jolt the DLC into working.
Eventually, AdmiralCurtiss narrowed down the behavior difference to 5.0-7422. Upon looking into it, there was one notable difference - the creation of the Wii Shop log files. Leoetlino figured we wouldn't need to create those files as the games should create them on their own regardless of if the DLC were downloaded from the Wii Shop or manually installed. However, it turns out we were proven incorrect by Mega Man 9 and likely other titles. The reason why some of us couldn't reproduce the issue is that once you access the Wii Shop Channel, the issue will completely disappear for that NAND permanently.
The reason that some of us couldn't reproduce the issue is that other games, DLC, and channels could create those files along the way and effectively fix the situation. In order to prevent this from happening again, we now ensure that the Wii Shop log files are created when installing a wad file.
5.0-13043 - Add a Skip EFB Access Hotkey by Losuc¶
This has been a requested feature by users with weaker computers for a very long time, but it was a niche use case so we resisted adding it. However, after years of hotkey improvements adding and using hotkeys has been refined so much that we're at the point where we can go 'why not?'. Losuc's addition of a hotkey for EFB Access from CPU can be very useful in games that only need it enabled for specific actions or scenes. Take for example Super Mario Galaxy where EFB Access is used a lot but only required for things like Pull Stars and feeding starbits. By only enabling the feature when necessary, you can make the game run on lower hardware than otherwise possible. The same goes for Wind Waker where EFB Access is only needed for the Pictobox.
5.0-13081 - Fix Super Mario Sunshine debug cubes by stenzek and Pokechu22¶
To be completely honest with our readers, we really wanted to get this one merged before the end of the last progress report when Nintendo's very own emulator in Super Mario 3D All Stars was discovered to share the same bug. After all, we had the fix and knew it would make for some good screenshots. But alas, unfortunate hindrances like code review and testing got in the way of our devious plan. This particular fix has actually been in the pipeline for a long time, but got delayed and unfortunately forgotten.
For anyone who isn't familiar, during development Super Mario Sunshine had dots for traveling platforms indicating their travel, just like Super Mario 64. However, in the final game the dots were removed. Kind of. The dots are technically still present in the released game, however Sunshine makes them completely transparent. Unfortunately for anyone making a GameCube emulator, the way Sunshine accomplished this is a bit out of the ordinary.
This has been such a mysterious issue that there have been multiple working theories over the years. Everything from caching the color drawn from the previous pixel, and even wondering if the debug cubes showed up because Dolphin was reporting itself as a debug console!
So what is actually going on here? Well, this is actually related to the Cel Damage fix from a few years ago. In fact, the pull request that fixed Cel Damage is where this Sunshine fix originally came from! In Sunshine, the game is setting numColorChans (the number of color channels) to 0 for the debug cubes. However, the debug cubes have a full color index with colors that are in use. The question is clear: why is the game setting the cubes color channels to 0? Well, according to hardware testing, if numColorChans is a value lower than what is present in the color index, it will use whatever was left in the register. This is undefined behavior. A hack, to put it more bluntly. It is our best guess that they did this peculiar trick to make the debug cubes disappear late in development without editing anything that would force builds to go through QA again, but we have no way to know for sure.
Dolphin, and likely Nintendo's emulator in Super Mario 3D Allstars, made the logical assumption that if a game set numColorChans to 0, it wasn't using the lighting system for that object. But by skipping that step, we were actually skipping the very process that made the cubes invisible!
While we're not sure how Nintendo fixed the cubes on their end, our fix is quite simple. numColorChans is a register on console, so the game is relying on undefined register behavior. Registers are more or less as low level as you can get in a processor, and properly emulating bizarre register quirks would be huge performance hit. So we've hardware tested this particular case and figured out what values the console gave us, and by slipping in those values when we need it, we were able to recreate the correct behavior in Super Mario Sunshine. Maybe one day we can afford to fully emulate the registers to the degree that quirks like this will just work, but this was the best solution for now. And since it's based on hardware testing it has been very safe in our game tests.
Sadly, Nintendo managed to patch the debug cubes a few days before we did. But that's ok. As their GameCube emulator has a catalog of effectively one game, they didn't have to worry about regression testing the way we have to. It's fine, we're not mad. It wasn't fair so it doesn't count.
As a special note, this is actually our second merged fix for the debug cubes. However, severe regressions from the first attempt prompted its removal and forced the hardware tests that eventually lead to this fix. But, for fun, here's a quick reminder as to how a fix for one game can break another if you're not doing things right with Tony Hawk's Pro Skater 3.
5.0-13163 - Remove description box in graphics tabs and use custom tooltips instead by iwubcode¶
Dolphin has had a bit of a long standing problem with the graphics configuration window. It's too damn tall. As we've added many more advanced graphical settings, the advanced tab has grown immensely. And since every tab needs to be as tall as the tallest tab (by default), everyone gets to deal with a lovely 922 pixels tall window. Admittedly, for anyone with massive resolution modern displays this doesn't even matter. But we have definitely heard the complaints of those with 768p and 720p screens. As such, to make sure everyone can see everything in the graphics configuration, resizing was added to the graphics configuration window. No matter how tiny your screen, you will be able to use and configure Dolphin... just with a bit of extra scrolling.
This is fine. It's fiiine. But it just keeps bugging us. We may have solved the usability problem, but the window is still enormous, and as new features get added in the future, will it stay fine? It isn't that far from requiring scrolling on even 1080p screens. So as we pondered this quandry, our eyes turned to the venerable description box.
The description area has been very important for us as an emulator. Dolphin has a lot of weird graphical emulation quirks and options to work around them, and we desperately need a reliable way to educate users about what these options do and why they may or may not want to use them. So, whenever a user moves their mouse over a graphical feature, a description explaining that feature will appear in the description box. It's simple, and has worked wonders for us for a lot of years now. However, some of those descriptions are (necessarily) long winded. The description area is now a huge 200 pixels of vertical height. This is contributing a lot to our window height problem!
Still though, mousing over something for more information... isn't that usually done by a tooltip? Why are we devoting so many pixels of height for something that typically would be handled with non-permanent means? That's because these descriptions used to be tooltips. And they were awful.
Dolphin 2.0 used the plain old Windows tooltip. Designed for small optional tidbits, it was entirely inadequate for our purpose of educating users about complex emulation features. Also, from a modern UI design perspective, they were just bad.
- They took a full second to appear, limiting accidental discovery.
- Faded in over a half second, then faded out over another half second. That plus the long activation time made for a slow and tedious way to get information.
- White boxes with black text over white boxes with black text made them difficult to notice and read.
- We tend to read top to bottom, and the tooltips placement below the cursor blocks the next item the user might want to read and annoyed them so they ignored and quickly dismissed the tooltip.
- Most items didn't have tooltips applied to them, so even if a user was looking for them they most likely would try, fail, and assume we didn't have any tooltips.
Datel Others Driver Download For Windows 10
On and on. They were terrible, failing to adequately fulfill their purpose, so no one used them. Which just made the tooltip situation worse as developers had no reason to bother adding tooltips that no one would ever read! It was a problem, as Dolphin needed, desperately, to convey emulator-specific options to users and educate them. And so, we moved to an always visible description box model. By being literally an empty space that filled with text when a user hovered over a feature with their mouse, it is very obvious and very clear, allowing it to properly fulfill the role of conveying information to the user. The description area has played no small role in forming the knowledgeable user base that Dolphin has today.
But it still takes a lot of height, contributing greatly to the graphics config height problems. How do we fix this without losing the essential functionality that description box provides? iwubcode posed that question in Dolphin's IRC. MayImilae, our resident UI assistant, has had a long time to consider this issue. She responded with the results of years of UI pondering - the best option is to go back to tooltips, but make them good. She made a mockup demonstrating modern tooltip techniques in Dolphin, and iwubcode took on the challenge of implementing custom tooltips in Dolphin's UI. Qt limitations made it so not everything we wanted could be implemented, but iwubcode made a huge impact!
Let's go over everything that these tooltips do right compared to the ancient tooltips above.
- Appears quickly (300ms) allowing for easy accidental discovery without getting in the way.
- No fade in or fade out, allowing the user instant access to the information then gets out of the way. While this was a functional choice, it just feels better.
- High contrast allows the tooltip to stand out from the original window, making the tooltip easy to notice and the text extremely easy to read.
- The tooltip appears above the target, so it doesn't block the view of the next item the user may want to see when reading top to bottom.
- Points to the option it is referring to, further improving clarity.
- The 'if you are unsure' text is contrasted even stronger with a unique color and bold font, easing at a glance guidance for casual users.
- Consistent across all desktop operating systems. Anyone who has worked with tooltips before knows just how nice that is.
By using these custom tooltips, designed for the purpose, Dolphin is able to effectively convey necessarily information to users while also freeing up the height of the description area! And thanks to the high contrast background, it's even more clear than the description area was as evident when showing them side by side! This is the have our cake and eat it too solution we've been wanting for years. Now, this is still a work in progress, and we hope to make further improvements over time. For example, it has uneven corners and complete lack of HiDPI support. Still, even where it is now it is a very good solution to our troubles. Plus, since these custom tooltips do not require adjusting the size of the window, hopefully we can finally bring descriptions to more places in our UI.
For our resident dark mode lovers, the tooltip is inverted there as well to maintain functionality. If you are annoyed by the white tooltip interrupting your black on black oasis, you can switch to a low contrast mode with an INI option.
Last Month's Contributors...¶
Datel Others Driver Download For Windows 7
Special thanks to all of the contributors that incremented Dolphin from 5.0-12718 through to 5.0-13178!