블로그 시리즈

태그 보관소: Graphics

Even though the Wii's official library is mostly set, both the GameCube and Wii are entering a new golden age as a popular environment for randomizers, full-game mods, incredible cheat codes, and much more. Stalwarts like the Super Smash Bros. Brawl Mod, Project M have been around for years, but now there are many other communities around various games breathing new life into them. You can find codes to help balance games like Mario Party 5, content mods for Kirby Air Ride that add tons of new rides and hundreds of songs, and trackpacks for Mario Kart Wii that add hundreds of custom tracks to the game. Wiimmfi's also provides their own backup Wi-Fi servers for many unmodified games and their Mario Kart mods!

While most of these mods can be enjoyed on a hacked Wii, many users rely on Dolphin in order to play them. Emulating these mods can be quite the challenge, as they often will do things in ways that game developers would not. Assumptions that Dolphin makes can often be broken and certain features that mod developers use can be extremely slow or downright unreasonable to emulate. In the case of Wiimmfi's Mario Kart Fun Packs, the mod creators have put in work over the years to improve their experience in Dolphin and even support emulated users playing alongside console users online... so long as you're willing to dump and use your Wii's NAND. Earlier this month, a slight change to Wiimmfi's online networking broke Dolphin support without affecting real Wii Consoles. Not wanting to leave their emulated users high and dry, they reported the bug to us.

delroth quickly took up the mantle of investigating the bug with assistance from the Wiimmfi team. Within a few hours, the cooperation paid off as the list of probable causes was narrowed down to one annoying feature: The Instruction Cache. Dolphin pretty much has no ability to emulate the GC/Wii CPU data cache and likely never will due to the performance implications, but Dolphin does have some ability to emulate the instruction cache, though it's best to avoid testing the emulator. This is normally not a problem with retail games because it's rather bad form for a game to rely excessively on cache quirks, unless they were intentionally trying to break an emulator. There are occasionally games that inadvertentlyrely on cache behavior, that's something to tackle on another day. Dolphin's emulation of the instruction cache is normally good enough and almost nothing relies on data cache.

Mods are different; developers are usually working on a blackbox and don't have the same level of familiarity with the hardware. Unless they specifically tested codes on both Dolphin and Wii, there's a chance they wouldn't even know something was broken. There have been many issues reported around mods that, while Dolphin is at fault, we really don't have any recourse for the users afflicted. If a mod doesn't care about running on Dolphin and uses dcache or perhaps another annoying feature, there isn't much we can do but shrug it off.

In the case of Wiimmfi's server, through cooperation from both sides, we were able to find the cache coherency issue and fix it serverside! Users who already have the latest version of the mod don't have to do anything except try to connect. If you're looking for a more detailed explanation of what was going wrong (as it's rather interesting,) you can find delroth's full writeup on the issue tracker.

In order to track down behavior like this in the future, delroth also added game quirk reporting to Dolphin's data collection service, so Dolphin will now automatically let us know what games are instruction cache sensitive in the manner that broke this particular mod. With that, we also have a lot of other exciting changes this month, so now it's time to dive into this month's notable changes!

태그

범주

On the Dolphin Forums, one of the more common questions that come up is "How come I can emulate this Wii game just fine but this GameCube game is slow?" While those more knowledgeable about the intricacies of emulation may roll their eyes, it does warrant some explanation. Usually when stepping down from a newer console emulator to an older console emulator, the minimum requirements for emulation drop significantly. While there are some exceptions when dealing with exceptionally obtuse hardware, that concern doesn't hold up here: The GameCube and Wii, ...

태그

범주

Dolphin has been around for over 14 long years at this point. Goals, expectations and standards have shifted quite a bit since the beginning. At one point, just booting a game at all was good enough, regardless of what you would see or hear! Compatibility has gone from a few select titles to almost every game released across two consoles. Considering all of that, it should be no surprise that some solutions that worked in the past slowly came to be a burden going forward. In this case, we're talking about ...

태그

범주

In case you missed it, we had a special April Fools announcement on our Youtube Channel that blog writer JMC47 retired due to his failed bid to sing well in American Idol on Wii. If you want to catch up on the ridiculousness, the video is still up for all to gaze at in utter confusion.

April Fools 2017 - Retirement

With that out of the way, some delays to get everything ready have given us more time to tighten things up and bulk up what has been a relatively quiet month outside of a few mammoth changes. A group of Wii IOS changes were noteworthy enough to get their own article with the Wii Shop Channel finally getting compatibility in Dolphin. That's right, you can buy games from Nintendo within Dolphin, or, download titles you've purchased on your Wii in Dolphin, assuming you're using that Wii's NAND.

Other than that, the long awaited GPU Texture Decoders finally got merged for a broad performance increases and a new Bounding Box fallback path works on any machine that can run Dolphin. So we hope you can enjoy this breakdown of March's (and a little of April's) notable changes!

태그

범주

The GameCube GPU is a complex, tight-knit piece of hardware with impressive features for its time. It is so powerful and so flexible, it was used unmodified within the Wii architecture. For a comparison, just imagine a SNES running with an NES's graphics system. This is completely unheard of, before or since. The GameCube is a remarkable achievement of hardware engineering! With its impressive capabilities, emulating the GameCube's GPU has been one of the most challenging tasks Dolphin has ever faced.

태그

범주

Update: There is an issue with the Nvidia drivers that kept buffer storage from being utilized properly on Windows: they do not report the driver version. Since the Linux version of the driver reports its version correctly, the Dolphin devs assumed that the nvidia drivers would report it and used a version check to make sure ARB_buffer_storage was only utilized on drivers that actually support it. Because of this issue, even the latest drivers that support the function failed the version check and Dolphin didn't use buffer_storage on Windows. And thanks to an unrelated bug discovered later, the lack of buffer_storage wasn't detected in the initial testing. As of 4.0-722 the version check was removed and buffer storage is confirmed to be working correctly.

Unfortunately, that version check was there for a reason. Some driver versions tell Dolphin that they support buffer_storage, but actually don't. Any user caught in that situation will encounter a blackscreen. If you do, update your drivers.

One of the constant struggles in modern emulation is the battle between performance and accuracy. Throughout Dolphin's history, developers have added various tricks to get more performance out of computers - one of them being the Vertex Streaming Hack, formerly known as Hacked Buffer Upload. It drastically improves OpenGL performance on Nvidia GPUs. However, as of 4.0-615, the Vertex Streaming Hack has been removed from Dolphin.

태그

범주

As many people have noticed, revision 4.0-155 removed D3D9 as a video backend, leaving D3D11 and OpenGL as the sole hardware backends in Dolphin. For the longest time, D3D9 was considered Dolphin’s fastest backend and was a favorite of Windows users. But then, why would it be removed?

While it was enjoyed by users, it was a source of endless frustration for the developers. D3D9 is inherently flawed, and working around its problems wasted time and slowed development. With D3D9 removed, the developers can focus their effort on making the emulator better instead of pandering to the ever growing demands of a flawed backend. This is why the D3D9 backend was removed.

Dolphin's D3D9 backend was mostly known for its speed. On AMD and Integrated Graphics cards, it is by far the fastest backend. But Direct3D9 is very old; it was released in 2001 and received its last update in 2004. Its age means that many modern features are simply not available for it, features that Dolphin needs for GameCube and Wii emulation. And that's where its speed came from. The D3D9 backend was as fast as it was because it simply didn't emulate certain effects. All kinds of modern functions are simply not possible in D3D9.