Dolphin (emulator)

Dolphin is a free and open-source video game console emulator for GameCube and Wii that runs on Windows, Linux, macOS, Android, Xbox One, Xbox Series X and Series S.

It had its inaugural release in 2003 as freeware for Windows. Dolphin was the first GameCube emulator that could successfully run commercial games. After troubled development in the first years, Dolphin became free and open-source software and subsequently gained support for Wii emulation. Soon after, the emulator was ported to Linux and macOS. As mobile hardware got more powerful over the years, running Dolphin on Android became a viable option.

Dolphin has been well received in the IT and video gaming media for its high compatibility, steady development progress, the number of available features, and the ability to play games with graphical improvements over the original platforms.

Origins (2003–2006)
Dolphin was first released in September 2003 by Henrik Rydgård (ector) and F|RES as an experimental GameCube emulator that could boot up and run commercial games. Audio was not yet emulated, and the overall performance quality was very poor. Many games crashed on start-up or barely ran at all; average speed was from 2 to 20 frames per second (FPS). Its name refers to the development code name for the GameCube.

Dolphin was officially discontinued temporarily in December 2004, with the developers releasing version 1.01 as the final version of the emulator. The developers later revived the project in October 2005.

Open source, Wii emulation, and 2.0 release (2008–2010)
Dolphin became an open-source project on 13 July 2008 when the developers released the source code publicly on a SVN repository on Google Code under the GPL-2.0-only license. At this point, the emulator had basic Wii emulation implemented, limited Linux compatibility and a new GUI using wxWidgets. The preview builds and unofficial SVN builds were released with their revision number (e.g., RXXXX) rather than version numbers (e.g., 1.03). As with previous builds, differences between consecutive builds are typically minor.

By February 2009, the software was able to successfully boot and run the official Wii System Menu v1.0. Shortly after, almost all versions of the Wii system software became bootable.

By April 2009, most commercial games, GameCube and Wii alike, could be fully played, albeit with minor problems and errors, with a large number of games running with few or no defects. Adjustments to the emulator had allowed users to play select games at full speed for the first time, audio was dramatically improved, and the graphical capabilities were made more consistent aside from minor problems.

By late October 2009, several new features were incorporated into the emulator, such as automatic frame-skipping, which increased the performance of the emulator, as well as increased stability of the emulator overall. Also improved was the Netplay feature of the emulator, which allowed players to play multiplayer GameCube and Wii games online with friends, as long as the game did not require a Wii Remote. The emulator's GUI was also reworked to make it more user-friendly, and the Direct3D plug-in received further work.

On 12 April 2010 Dolphin 2.0 was released.

3.0 and 3.5 releases (2010–2012)
By the end of November 2010, the developers had fixed most of the sound issues such as crackling, added compatibility with more games, and increased the overall emulation speed and accuracy.

In June 2011, version 3.0 was released. Strange user interface behavior, crashes, graphical glitches and other various issues were fixed. The release notes state that the majority of games "run perfectly or with minor bugs.” The release featured redesigned configuration windows, an improved LLE sound engine, new translations, added support for the Wii Remote speaker, EFB format change emulation, graphics debugger and audio dumping among several other new features. The 3.0 release removed the plug-in interface in order to “allow for a much better integration with the other parts of Dolphin.” The developers also added a Direct3D 11 video back-end and an XAudio2 audio back-end.

On 25 December 2012, version 3.5 of Dolphin was released, featuring support for emulating the GameCube Broadband Adapter and Microphone accessories. It introduced a FreeBSD port, free replacement for the DSP firmware, and the WBFS file format.

Port to Android and 4.0 release (2013)
On 6 April 2013, the Dolphin development team released the first builds for Google's Android mobile operating system. As of September 2013, only a handful of devices contained the hardware to support OpenGL ES 3.0, with Google officially supporting the standard in software since July 2014 with the introduction of Android 4.3 Jelly Bean. Games ran at an average of one frame per second. The developer has cited the Samsung Galaxy S4 as one of the first phones capable of playing games at higher speeds, but even it would have considerable performance limitations.

On 22 September 2013, version 4.0 of Dolphin was released, featuring back-end improvements to OpenGL rendering and OpenAL audio, broader controller support, networking enhancements, and performance tweaks for macOS and Linux builds. Months later, versions 4.0.1 and 4.0.2 were released, fixing minor bugs.

Drop of legacy technologies, accuracy improvements, and 5.0 release (2013–2016)
On 12 October 2013 (4.0-155), Direct3D 9 support was removed from the project, leaving Direct3D 11 and OpenGL as the two remaining video back-ends. The Dolphin Team explained this, stating that the plug-in was "inherently flawed" and that trying to evade its several flaws "wasted time and slowed development."

On 19 May 2014, the Dolphin Team announced that 32-bit support for Windows and Linux would be dropped. The Dolphin Team stated that it was becoming increasingly difficult to maintain the 32-bit builds, and that the 32-bit releases simply offered an inferior experience compared to their 64-bit counterparts. Furthermore, the vast majority of their users were already using 64-bit CPUs, and most users of 32-bit builds were 64-bit compatible yet were using 32-bit by mistake. The combination of these factors made 32-bit support unnecessary. 32-bit Android builds suffered from similar issues, but ARMv7 support remained for another year until the AArch64 JIT was ready and devices were available.

Throughout 2014, several features were implemented into Dolphin, including disc loading emulation, native support for GameCube controllers, perfect audio emulation, and bug fixes for problems which had been present since the emulator's earliest days. Memory management unit (MMU) improvements allowed many games to boot and work properly for the first time. Improvements towards the emulator also allowed for it to run well on Android using the Nvidia Tegra processor, albeit with minor difficulties.

In coordination with the developers of the VBA-M Game Boy Advance emulator, support for linking GameCube and Game Boy Advance games was implemented into Dolphin in March 2015.

On 25 May 2015 – the Dolphin Development team announced that they had successfully re-licensed the code base from "GPL-2.0-only" to "GPL-2.0-or-later" in order to improve license compatibility with other Free and open-source projects and be able to share and exchange code with them.

In August 2015, the Dolphin developers announced further improvements with audio and throughout December 2015 the Dolphin project fixed audio issues on TR Wii Remotes. Two months later, in February 2016, a Direct3D 12 back-end was mainlined after months of development.

On 24 June 2016, version 5.0 of Dolphin was released, making various fixes and additions to the emulator.

Post-5.0 developments (2016-2022)
Development of a Vulkan-based graphics renderer began in June 2016. After a month, the developer announced that it is "now feature-complete" and that it's "time for clean-ups/bug-fixing/performance work.“ Development of the renderer was still done in a dedicated branch for the next few months until the code was finally merged in October 2016.

In September 2016, Dolphin's developers announced the emulator was now able to boot all official GameCube titles. The last title to be supported for boot-up, Star Wars: The Clone Wars, had been particularly difficult to emulate due to the game's use of the memory management unit. Triforce emulation was removed due to lack of maintenance.

In March 2017, support was added for the Wii Shop Channel.

Two experimental features, both of which never reached maturity, were removed in May 2017: The Direct3D 12 renderer – which found a suitable replacement in the Vulkan back-end – and the alternative CPU emulator JIT IL.

Continuing this year's earlier work on graphics performance-related matters, Dolphin developers implemented a solution for the long-standing problem known as shader compilation stuttering. The stuttering is caused by the emulator waiting for the graphics driver to compile shaders required for new environments or objects. The solution that the Ubershaders – in development since 2015 – present to the problem was to emulate the Wii's and GameCube's rendering pipeline by way of an interpreter running on the host system's graphics processor itself until a specialized shader has been compiled and can be used for future frames, at a lower cost to performance.

18 August 2017 marks the culmination of work started in late 2016 when the cross-platform MMORPG Dragon Quest X was added to the list of playable games just two months before support for the online functionality of the Wii version was dropped. The addition relied on a number of features that had been previously added to the emulator simply for the sake of accuracy, such as support for the Wii Shop Channel. Support for Wii File System, an encrypted file system that was originally designed for the Wii U, was also added after a rigorous amount of reverse engineering.

In the first half of 2018 Dolphin's developers deprecated the wxWidgets GUI toolkit and replaced it with one based on Qt because the original GUI toolkit's limitations stood in the way of implementing new features. Among the other newly introduced features were Asynchronous Shader Compilation similar to Ishiiruka, an auto-update feature, and integration with Discord.

In the summer of 2018 Dolphin's Vulkan renderer was brought to macOS via MoltenVK and the Android version was brought back to Google Play with monthly updates. In April 2019, Dolphin added 3 new features; unification of common video backends, a NetPlay Server browser, and Wii MotionPlus emulation. The Direct3D 12 renderer was also brought back.

During the time-frame between November 2019 and January 2020, support for Windows 10 on ARM was added. According to the developers, “[i]t turned out to be quite easy” because support for AArch64 hardware has already been present as part of the Android port.

In the May and June Progress Report for 2020 the Dolphin team unveiled a new compression format, based upon the WIA format and using zstd, called RVZ. The article claims that RVZ, compared to the NKit format, properly emulates load times. Additionally, the article claims that RVZ approaches or excels the file sizes of "scrubbed" WIA and GCZ disk images while remaining lossless.

In the December 2020 and January 2021 Progress Report, the Dolphin team reported that support had been added for emulating Nintendo DS Connectivity with various Wii titles. The article stated that this development would not lead to Dolphin and DS interoperability, either with physical hardware or with another emulator. This new emulation fixed a crash present in Driver: San Francisco and other games that attempt to initiate DS communications.

In May 2021, Dolphin added support for macOS on ARM64, which had been a heavily requested feature following the announcement of the Mac transition to Apple Silicon. In July 2021, the Dolphin team announced the integration of the mGBA emulator into Dolphin, allowing a Game Boy Advance emulator to run within Dolphin simultaneously to simulate GameCube-GBA connectivity. In addition to supporting transfer of data to and from emulated GBA titles, up to four Game Boy Advance instances can be simultaneously active in Dolphin at once, making multiplayer in games that require the GBA such as The Legend of Zelda: Four Swords Adventures and Final Fantasy Crystal Chronicles viable within Dolphin locally and via netplay.

In June 2022, the Dolphin developers announced that subsequent versions would not run on Windows 7, Windows 8 and Windows 8.1, citing that less than 2% of users and none of the developers still used these operating systems, making developing and testing on them difficult, and that the newest versions of the emulator's dependencies such as Qt no longer supported them. In July 2022, Dolphin developers released a graphics mod infrastructure, allowing users to make graphical changes while a game's images are being rendered. In September 2022, the macOS version added a native Metal graphics backend, which featured improved performance over the Vulkan backend running via MoltenVK.

Cancelled Steam release and objections from Nintendo (2023)
In March 2023, the Dolphin developers announced that they would be releasing a version of the emulator on the Steam platform, in "early access", by Q2 2023. On the Steam page there were no depictions of officially licensed Wii or GameCube games, no specific mention of Nintendo by the Dolphin developers and a statement that "this app does not come with games". The Dolphin developers touted that the Steam version would have better integration into Steam UI which followed the Dolphin developers receiving a Steam Deck ahead of its release. In May 2023, they announced that the Steam release would be indefinitely postponed due to a cease and desist citing the DMCA from Nintendo sent to Valve. Project treasurer Pierre Bourdon, who was named in the email, stated that the presence of an AES-128 key used to encrypt Wii game discs in the emulator's source code may have allowed Nintendo to take down the Steam release. A spokesperson for Nintendo stated to Kotaku that Dolphin "illegally circumvents Nintendo's protection measures" and that "illegal emulators or illegal copies of games harms development and ultimately stifles innovation". YouTuber and video game developer Dimitris Giannakis stated on his Modern Vintage Gamer channel that he found evidence, in 2020, of a user named "Littlemac123" warning about the presence of the keys in the RetroArch Core source code.

On July 20, 2023, the Dolphin developers announced that the planned Steam release for the emulator has been cancelled due to legal objections from Nintendo. They clarified in a blog post that Nintendo did not issue a DMCA notice but was actually contacted by Valve who sought Nintendo's approval prior to allowing Dolphin to be released on Steam. They also announced that they would not remove the decryption key following legal consultation over its use, arguing that the presence of the AES key used by the Wii to decrypt retail games falls under the reverse engineering exemption in 17 U.S.C. § 1201(f), which allows for interoperability, and has mentioned how the key in question has become common knowledge since its discovery.

Rolling release cycle (2024-ongoing)
On July 2, 2024, the developers announced that Dolphin was moving to a rolling release cycle going forward. This means there will be no version 6.0, but instead more frequent smaller updates. The first release using this new cadence is Dolphin 2407. Later that month, Dolphin added support for RetroAchievements on GameCube games.

Features
Features of Dolphin include the ability to start games regardless of region, record tool-assisted speedruns,  and the use of cheat codes with Action Replay and Gecko. Functions of the original GameCube controllers and Wii Remotes can be mapped to PC controllers. The emulator allows for the use of real GameCube controllers through the use of a USB adapter and Wii Remotes through Bluetooth connection. Controller expansions are also supported, including the Wii MotionPlus adapter, Nunchuk, Classic Controller, Guitar, Drums, and Turntable.

Two kinds of network play are supported by Dolphin: Emulated local multiplayer and Nintendo Wi-Fi Connection. The first only works among Dolphin users. It applies to games that by default have no online option. The second kind is for online gameplay for WFC supported Wii games with other Dolphin users as well as real Wii users.

Game progress can be saved on virtual GameCube Memory Cards, emulated Wii flash memory, and save states. Dolphin features a Memory Card Manager which allows transfer of save files to and from virtual GameCube memory cards.

In conjunction with an integrated Game Boy Advance emulator, Dolphin supports linking GameCube and Game Boy Advance titles.

Independent of Wii controllers
Dolphin does not require Wii Remotes or "Nunchuks" for all games. For example, New Super Mario Bros. Wii requires Wii Remote, or Wii Remote + Nunchuk for the Wii hardware console, but any controller can be used to play the game from Dolphin.

Graphical improvements
Like many other console emulators on PC, Dolphin supports arbitrary resolutions, whereas the GameCube and Wii only support up to 480p.

Dolphin can load customized texture maps. These can also be of higher resolution than the original textures. The emulator also has the ability to export a game's textures in order for graphic artists to modify them.

Dolphin can output stereoscopic 3D graphics on any platform Dolphin runs. Special hardware such as Nvidia 3D Vision is also supported. The ability to play games in stereoscopic 3D is a feature the original consoles never had, although Nintendo did originally plan to release a stereoscopic 3D add-on screen for the GameCube.

Additional features to further enhance the graphics quality are also available. Dolphin supports spatial anti-aliasing, anisotropic filtering, post-processing pixel shaders, and a widescreen hack for forcing widescreen output on games that do not support it natively. Games can also achieve higher-than-intended frames per second.

Reception
The Dolphin emulator has been well received by the gaming community, with the program's ability to run games at a higher resolution than the GameCube and Wii's native 480p resolution receiving particular praise from the gaming community. PC Gamer editor Wes Fenlon called it "one of the only emulators to make many games better" and praised it for continually "making major, sometimes huge improvements to compatibility and performance". Wololo.net praised the system's high compatibility.

Dolphin has been used by some people as a tool to mitigate certain shortcomings for gamers; in 2012, business owner and father Mike Hoye, who had been playing The Legend of Zelda: The Wind Waker with his daughter and realized that the game referred to the main character as a male individual regardless of the inputted name, changed all of the game's cutscene dialogue text to refer to a girl instead of a boy by editing it through a hex editor, testing out the game's ISO using Dolphin. The emulator's Netplay feature has been described by ArsTechnica to be serving as an alternative to the discontinued Nintendo Wi-Fi Connection.

, Dolphin has approximately $50,000$ daily active users, according to Dolphin's opt-in analytics.

Dolphin Triforce
A version of Dolphin made to emulate the Triforce arcade system titled Dolphin Triforce was in development by the Dolphin team, but was eventually disabled after development priorities shifted and the feature became unmaintained. Downloads of Dolphin Triforce are still available from the website and the source code is available from GitHub in a dedicated repository.

Dolphin VR
Dolphin VR is a third-party project aimed to extend Dolphin with the ability to play games “in virtual reality with accurate life-size scale, full FOV [field of view], a 3D HUD, independent aiming, and the ability to look around.” HTC Vive and Oculus Rift are supported.

PC Gamer tested a few games with Dolphin VR. Metroid Prime and F-Zero GX received especially high praise with one editor feeling “childlike wonder when playing Metroid Prime in VR” and another stating that “F-Zero [is] the thing that sold me on Dolphin VR”.

The latest release is 5.0 and the source code is hosted on GitHub.

License incompatibility
The Free Software Foundation maintains the position that GPL software cannot be combined with Oculus SDK's license.

DolphiniOS
DolphiniOS is a third-party fork of Dolphin for Apple iOS. It is not available on the App Store, instead being distributed through a Cydia repository for jailbroken devices, an AltStore repository, or an IPA package for sideloading.

DolphiniOS used to be monetized by having beta releases be available earlier to Patreons; their Patreon program has been paused and they claim that they are now permanently discontinuing this practice. Along with this they also announced that the project would be going on hiatus due to the lead developer going on break.

The first pre-release version went public on 9 December 2019 with the 1.0 release following a week later. Version 2.0 has been released only a month later on 9 January 2020. The 2.0 version supports physical controllers, among other new features. Version 3.0 was released on the 20 June 2020. Notable new features include the ability to display your games in a grid, the ability to update the Wii System Menu like on the desktop version of Dolphin, the ability to install WAD files to the Wii NAND and the ability to change disc while the emulator is running. Versions 3.1.1 and 3.2.0 beta 1 have been released since the hiatus announcement. Rumble and motion control support was added for DualShock 4s and DolphiniOS now functions properly for users of the Odyssey jailbreak.

A writer from Wololo.net wrote regarding the performance of DolphiniOS: “On my iPad Pro 10.5-inch (A10X), Mario Kart Wii works pretty well and playing through the first two tracks of the Mushroom Cup provided excellent results!"

The source code is hosted on GitHub.

Ishiiruka
In reaction to the removal of Direct3D 9 support, Dolphin developer Tino created an unofficial fork called Ishiiruka on 18 October 2013. The name is Japanese for Dall's porpoise. Although the focus is Windows with Direct3D 9 and 11 support, Linux versions also exist.

The fork attempts to remedy performance problems present in Dolphin such as microstuttering due to shader compilation, however, it relies on asynchronous shader compilation to achieve this, which is not a full solution and in some cases results in pop in. Ishiiruka serves as base for the canonical client of the Super Smash Bros. Melee netplay communities Faster Melee and SmashLadder.

John Linneman of Eurogamer talks in the October 2016 Metroid Prime episode of their Digital Foundry Retro video series about Ishiiruka. He compares playing Metroid Prime via Ishiiruka to playing it on original hardware, Wii and GameCube, and upstream Dolphin. Linneman argues that “the benefits [of emulation] kind of outweigh any of the smaller issues that you might encounter”. He continues to point out features of Ishiiruka that “allow you to push the visuals beyond what you can achieve using standard Dolphin. For instance, you can add lots of cool additional enhancements like depth of field, ambient occlusion, various types of color correction and a whole lot more […]. It's also worth noting that this version of Dolphin helps avoid the shader compilation stutters that plagued the official release of the emulator and it leads to a much more fluid experience.”

As with Dolphin, development is hosted on GitHub.

PrimeHack
PrimeHack is a version of Dolphin created by shiiion that has been modified to play Metroid Prime: Trilogy on PC with keyboard and mouse controls. Two variants exist of PrimeHack – one is based on Ishiiruka, the other one on Dolphin proper. The latter is as of October 2019 the focus of development after it laid dormant between February and October 2019.

The source code is hosted on GitHub.