This article is a draft. Avoid widely sharing this link.
In celebration of another year of Dolphin, we're taking a look back at some of our favorite features, fixes, and large scale changes of the year!
Much of what is added to Dolphin can't be boiled down to just accuracy improvements and bug fixes; there are actually a lot of other categories too. One of those categories is new features to the emulator. For a young emulator things like this may be things like savestates and controller support. Dolphin has long gone down that road, but we still manage to see important and creative features implemented every year.
Mayflash's DolphinBar is a combination sensor bar and specialized bluetooth adapter designed to painlessly connect Wiimotes to your computer and Dolphin. This device allowed Wiimotes and their accessories to be used as a mouse or gamepad for general applications, or can directly passthrough the Wiimote to Dolphin for real Wiimote support.
While everything sounded perfect on paper, things didn't go so smoothly at first. The DolphinBar wasn't compatible with Dolphin 4.0 or the latest development builds at the time of its release. With a general interest in getting something like this working, testers and developers bisected the regression down the Balance Board support merge, but were unable to determine the problem.
Rather than leaving it be as it was, Mayflash contacted us about fixing support for the device, and helped us debug what was going on. With their help, delroth found an issue with how Dolphin handled Wiimotes and fixed support for the device for the latest development builds. They also added a few features that we really wanted in the process, including support for the notorious -TR Wiimotes that give so many people trouble. After it was fixed, a thorough review went through what the device does and how well it worked with Dolphin.
GCI Folders are one of those features you don't know you want until it's actually implemented. Memory cards in Dolphin have worked relatively well forever, and the built in Memory Card Manager made interfacing with the memory cards fairly easy. So why go through all the work of implementing a new way of handling memory cards?
Easier to use: Drag and drop GCIs ripped from the Wii, GameCube, or downloaded from the internet right into the folder and have them available for use with no other steps. Same thing can be done when getting your saves ready for transfer into a console memory card.
Breaking the limits: Using a .raw file for storing GCIs meant that we had to reflect the actual limitations of real memory cards, like the 127 file limit and 16MB limit. With GCI-folders, we can pick and choose what files make up our virtual memory card at boot, allowing a folder to have an infinite number of saves without causing issues for the emulator.
Backwards Compatible: If for some reason a user wants to go back to using the .raw file, all of the GCI files can be imported using Dolphin's Memory Card Manager. To make things easier, the first time a user selects the GCI folder, Dolphin will automatically export all saves of the current memory card to the GCI folder.
Exclusive Fullscreen by Armada651
There is no real singular commit for exclusive fullscreen any more. It was added in bits and pieces as it was enabled on different hardware and implemented on each backend. Exclusive fullscreen gives Dolphin the ability to more directly push frames to the monitor, giving some very, very nice benefits for the end user.
- Decreased input latency: By having much more direct control over output, users will get visual feedback faster than before. In fighting games like Super Smash Bros. Melee and racing games like F-Zero GX, the difference is immediately noticeable.
- Less GPU Overhead: Being able to simply display the frame on the monitor is more efficient, and will result in a small performance increase when limited by GPU power.
- Smoother Visuals: Everyone hates when a game is running full speed but it still doesn't look quite so smooth. Exclusive fullscreen allows for Dolphin to bypass the window manager, meaning that frames are much less likely to be dropped when running full speed. Do note that this places full control of vertical sync (vsync) onto Dolphin, allowing for vsync to work better when enabled.
This feature simply makes games look a lot better when using fullscreen. Using a game with frame-sensitive effects like MegaMan X from Mega Man X Collection shows the difference very clearly when the game tries to flicker the sprite to show invincibility frames.
Without Exclusive Fullscreen, Dolphin can easily drop frames even at full speed.
When every frame is rendered, games look more like their natural selves.
The one caveat to this feature is that it doesn't seem to function correctly with multi-gpu systems when both GPUs are active at once. Users who run one Radeon and one NVIDIA will need make sure no monitors are plugged into the other card when trying to obtain exclusive fullscreen. Worse off are the optimus users, who have no work-around whatsoever. For users in those situations, borderless fullscreen can be enabled in the Advanced Settings of the Graphics Settings menu.
Dolphin has had basic support post processing shaders in OpenGL for a long time. Earlier this year, Sonicadvance1 rewrote Dolphin's post processing shader interface. This means we can have more powerful shaders and should be able to implement support for post processing shaders in the D3D backend.
That said, most of the included shaders are very basic and can't be used for much aside from testing. As with any feature that allows user content, there are many custom shaders floating around. One impressive collection has been put together by Asmodean and includes very powerful and popular shaders that can greatly change how games in Dolphin look and feel.
Feel free to check up on the development and give your support here!
- HQ FXAA 3.11
- Bicubic Interpolation Scaling
- Lanzcos Interpolation Scaling
- Bilinear Texture Filtering
- High Quality Blended Bloom
- Scene Tone mapping
- Color Correction
- Gamma Correction Curve
- Filmic Cross Processing
- Local Contrast Enhancement
- Texture Unsharp Mask
- Pixel Vibrance Adjustment
- Px Cel Shading
- Scanline Emulation
- Film Grain
- Subpixel Dithering
Deterministic Dualcore is a feature required for Dualcore Netplay. In this context, being deterministic means that if you give the game the same inputs from the same start, it will do the same things every time.
Netplay and input recordings both require determinism, but input recordings, and thus TASes, don't need to be full speed in order to accomplish their main goals thanks to being able to dump a video file that shows the gameplay full speed regardless of how fast the emulator was running. Requirements like LLE audio and single core mode don't really matter in most cases pertaining to input recordings.
While input recordings only require determinism, netplay requires both determinism and speed. People on netplay usually are trying to play a game with friends that are sometimes across the world. Being able to keep the game full speed and synchronized is paramount, so every bit of performance on netplay matters. Netplay two years ago, with the old requirements for determinism, would have been a struggle on the best computers of today for all but basic titles.
- Before New-AX-HLE and Synchronous-Zelda-HLE, LLE audio was required on netplay. Turning on LLE on thread would cause desyncs as well.
- Single core mode was required; no dualcore except in Kirby Air Ride and Mario Party 4 for some reason.
- No Wiimote Support. We technically do support Wiimotes on netplay now, but syncing the Wii NAND is a task.
By using a method known as fake-completion for GPU <-> CPU communication, the interaction between the two threads can be made deterministic without a huge amount of slowdown. This allows dualcore on netplay while still maintaining most of the performance of having dualcore enabled.
Dualcore Determinism in Master out performs both single core and the old DC-Netplay Branch, while being more compatible than the latter.
As an added bonus, fake-completion can also be enabled outside of netplay, to make certain dualcore sensitive games more stable without having to drop down all the way to single core. Do note that compatibility of this feature is not perfect with all games, and several games will hang on boot when using this feature, most notably F-Zero GX.
Everyone loves playing their favorite GameCube and Wii games at super high resolutions, but Dolphin was artificially restricting users to only 4x IR. neobrain initially did all the work but couldn't find a good way to add it to Dolphin's GUI. Tired of waiting, RachelB circumvented the problem by making it customizable through the INI system in October.
Now everyone can enjoy making their graphics cards and processors suffer the horrors of 4K Dolphin output!
This is one of those neat features that most users won't ever actually use, but many of us will enjoy when more Wii Tool Assisted Superplays are completed. Tool Assisted Superplay (Or Speedrun) input is an interface that allows a user to give the exact inputs they want, and see it on a visual display.
While the first iteration of this feature only supported the Wiimote, an update in November added support for nunchuck as well!
Honorable Mention: Audio/Video Dumping Rewrite by RisingFog
This isn't a new feature; Dolphin has had audio dumping and video dumping for a long time. The problem is that Dolphin's dumping features really didn't work for most realistic uses of the feature. For quite some time, audio dumped at real-time speeds; meaning that if you had slowdown during your video and audio dump, the audio was slowed down and choppy too! Video dumping was even worse; the videos being dumped would only render frames when the game rendered frames, meaning that if the game were to do something like stop rendering for a load; the loadtime would simply disappear!
While these new audio and video dumping features aren't perfect, they are at least usable, which is a huge step forward, and deserve a mention among all the other big features of 2014.