1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Dolphin Dolphin 5.0

Darx Aug 29, 2016

Discuss Dolphin 5.0 in the Emulators area at games4arcade.com.


  1. Darx

    Darx Rhodium Magician Staff Member Administrator Steam
    Thread Starter

    Threads:
    1,945
    Messages:
    2,939
    Likes Received:
    1
    Liked:
    1
    Trophy Points:
    180
    Gender:
    Male
    Location:
    Argentina
    Adress:
    Argentina
    Country:
    Location on Map:
    Home Page:
    Ratings:
    +1
    Rupee:
    ₹7,094.80
    logo.fefed4054d1c.png

    Dolphin is an emulator for two recent Nintendo video game consoles: the GameCube and the Wii. It allows PC gamers to enjoy games for these two consoles in full HD (1080p) with several enhancements: compatibility with all PC controllers, turbo speed, networked multiplayer, and even more!
    You must be registered for see links
    You must be registered for see links
     
  2. JMC47

    JMC47 Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    You must be registered for see links

    Dolphin started solely as a GameCube emulator, focused only on the one console. But, when the Wii was released and it was discovered to have hardware almost identical to its older sibling, Dolphin naturally evolved into a GameCube and Wii emulator. All of our readers are probably familiar with this. However, many people don't know that there is yet another console based on the GameCube, one which Dolphin has emulated - the You must be registered for see links. An arcade system board developed in a joint partnership between the three powerhouses Namco, Sega, and Nintendo, the Triforce used the GameCube hardware as the heart of many arcade games. You must be registered for see links and You must be registered for see links, You must be registered for see links, along with many other titles headline the Triforce's release library.

    This month, Dolphin developers have removed Triforce emulation as one of Dolphin's notable features by removing the ability to use the AM-Baseboard, which was the key to activating Dolphin's Triforce features. After months of discussion, it was determined that while Dolphin should be able to emulate Triforce titles, there simply isn't anyone around to maintain and update the Triforce code. It was implemented in a different time and more or less bruteforces the Triforce games into working in Dolphin without much care into how it fits in and interfaces with the rest of the emulator. You must be registered for see links that is capable of booting many Triforce games for those interested in playing them.

    Developers decided to disable the current triforce emulation with the intent of spurring interest of having efforts toward emulating it revived. Working from a crippled base isn't going to help anyone. The other reason for disabling it is that it has little to no relevance for users: no one is even sure if it could boot any of the triforce games in the condition that it was left in for master.

    While Triforce emulation has been disabled, there have been a lot of changes improving the emulation of GameCube and Wii games this month. It's that time again, for the month's notable changes!



    Notable ChangesYou must be registered for see links




    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    You must be registered for see links comes up as one of the slowest games in Dolphin fairly often. Most slow games either pushed the console incredibly hard, or use some feature that is very difficult to emulate. With Silent Hill, nothing it does is actually all that demanding. While it's a good looking game with high quality shadows and models for the Wii, nothing it does justified just how slow it ran in Dolphin.

    While there were quite a few theories as to why it was so slow, it turns out that this game was simply hitting a strange bottleneck in the GPU thread. Occasional Dolphin savior hk.konpie discovered that the game was creating tons of Pixel Engine Tokens (PETokens), which can be queried by the CPU thread at any time. Dolphin was querying them one at a time, resulting in the game hitting the bottleneck. He surmised that if this were optimized that Silent Hill: Shattered Memories would run a little faster.

    You must be registered for see links not only optimized it, but he also cleaned up the ancient PEToken code resulting in a massive speedup for the game. Instead of sending PETokens one at a time, they're batched together to prevent the severe CPU to GPU stalling that greatly affected this game.



    [​IMG]
    That's certainly more than "a little faster"!



    There is zero behavior change based upon these optimizations, so no one has to worry about other games that rely on PETokens breaking.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Everyone hates depth bugs, especially You must be registered for see links, who has made it his goal to eradicate them all while You must be registered for see links whenever he can! This time, he's taken the proverbial hammer to the remaining depth issues.

    Previously, Dolphin relied on the API (OpenGL, D3D, etc.) for depth range handling and depth clipping, but there was a fatal flaw in doing this. The GameCube/Wii allowed developers to choose depth ranges much larger than the depth buffer allows, while OpenGL/D3D do not. This was a trick used to forcibly render certain objects even further away at the expense of precision.

    Dolphin tried to use series of clamps to try to mimic this GameCube/Wii behavior and got fairly close. The overabundance of zfighting and depth issues have been culled down to about a dozen games by the time 5.0 released. But when it failed, especially in D3D, it was quite a mess.



    You must be registered for see links
    What calamity has befallen us! A giant chasm has opened, and our heroes are missing!
    You must be registered for see links
    It's the Attack of the 50 Foot Spider-Man!




    OpenGL's failures were a little less dramatic, usually resulting in missing shadows and other flat objects sometimes flickering into and out of existence. Armada tried a few more things to get the clamps working but it seemed as though there was no happy balance to be had.

    degasus had his own idea to handle this and suggested moving the depth range emulation back into the vertex shader. Dolphin used to do this before, but developers weren't able to wrangle it to work properly. This time some new ideas were applied, Dolphin no longer relies on depth clipping and instead uses its own defined clipping planes. The trade off to this is that turning off depth clamping requires GL_ARB_depth_clamp, but, any GPU that supports Dolphin has the capability to support it. Even OSX's OpenGL drivers support it!



    [​IMG]
    The new Vertex Depth Range shader equation.



    You must be registered for see links
    Someone must have called on Shenron.
    You must be registered for see links
    Oh, Spider-Man was just in the foreground. He must have been pretending to hold the towers up.




    Now things still aren't perfect due to rounding errors. We have a few more minor issues remaining, but, with complete control over the clipping planes, it's only a matter of time until a solution is found that fixes all games. Currently, You must be registered for see links's Visor has zfighthing, but fixing that makes the UI for Sonic games disappear. A fix is already in the works that will hopefully not break anything else.



    You must be registered for see links and You must be registered for see links - Further Depth Fixes by You must be registered for see linksYou must be registered for see links


    You didn't think it'd be that easy, did you? There's always at least one case that mucks up even the best of plans.

    The way Dolphin achieves the depth precision it needs is to use reversed depth. It brings the far plane to near for higher precision while it's needed, while computing the near plane in far where the prevision is usually not necessary. For Dolphin to emulate the GameCube's depth in current graphics APIs without zfighting, this is a necessity.

    The problem is that certain games, such as You must be registered for see links and You must be registered for see links, had the same idea. They used reversed depth to achieve greater depth precision on console! This means that Dolphin was reversing reverse depth, losing precision and causing issues.

    On OpenGL, Dolphin can handle this situation by simply not reversing depth in these cases, but D3D11/12 do not support that. With a Vulkan backend in development, it's worth it to note that while the API allows it, most available drivers currently do not. Hopefully that will change and allow for Vulkan to match OpenGL in depth accuracy in the future.



    You must be registered for see links
    The zfighting is minor enough that we had to really zoom in.
    You must be registered for see links
    How it should always look.




    This isn't the end of the world, though. Unlike the previous case of everything being broken there will instead just be some minor zfighting on D3D11, 12 and eventually Vulkan. Thankfully, this should be limited to titles using their own form of reversed depth.



    You must be registered for see links and You must be registered for see links - Debugger Improvements by You must be registered for see linksYou must be registered for see links


    Sometimes debugging needs a little bit of attention too. After all, Dolphin's debugger sees a lot of use for modifying games and making cheatcodes. So when You must be registered for see links ran into various bugs and user interface issues with the debugger, they made it their mission to fix things up. The most noteworthy of the fixes is that modifying memory addresses will now clear the instruction cache, meaning that modified memory addresses will immediately take effect instead of requiring a manual invalidation.

    These changes do not effect Action Replay/Gekko Codes; only memory address manipulation through the debugger.



    You must be registered for see links by You must be registered for see links and You must be registered for see linksYou must be registered for see links


    Credit for debugging this goes to Extrems. Not only did he write not64, the wii port of Mupen64 that ran into this issue, but, he also helped debug which instruction was failing and then helped figure out why. Dolphin's Load String Word Indexed (lswx) was getting a bit too antsy and clobbering the last register. This is a rare enough instruction that no one has found any games that have been helped by this fix quite yet. Considering the bug is in Dolphin's interpreter, and the JIT/JITIL don't have their own implementation of the instruction, a game that didn't work with any settings may be fixed now!

    phire's revision of the way the instruction is emulated fixes the bug and gets Not64 to boot!



    You must be registered for see links



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Hang on tight everyone, this is one of those weird issues where we have to wonder just WHAT the game developers were thinking.

    Link's house in Twilight Princess holds a mirror that serves no other purpose other than for developers to show off and say "Hey, look at this fancy mirror I made on the GameCube!" Fancy things usually spell trouble for Dolphin, and this was no exception. The reflection would only show if Link's hand behind the mirror. If you're anything like us, you'd probably assume that some kind of depth test was inverted causing this strange issue.

    And just like us, you'd be wrong.




    So, what exactly was causing the mirror to malfunction in Dolphin? Well, firstly, consider that the Software Renderer was already working for some reason, which squarely put the focus on the hardware backends. You must be registered for see links put his debugging skills to the test and delves into the draw calls to figure out what's going on.



    You must be registered for see links
    Is this conclusive proof that Link is a vampire? No, that's stupid, he's not sparkling. Nevermind.
    You must be registered for see links
    The reflection is actually there. Unfortunately most players don't play in wireframe mode to notice this.




    The game is using a technique that was common on the GameCube: the "reflection" isn't a reflection at all, but a duplicate of Link's model in an empty room, viewed through the frame of the mirror. This technique is used in many other games and is emulated fine, so why is this mirror failing in Dolphin?

    In the case of Twilight Princess, it draws a small rectangle in the depth buffer over the "mirror world" to confine the reflection to the mirror frame's dimensions. This is very normal for this kind of effect. However, the game's developers accidentally turned on alpha testing for that rectangle, specifically alpha testing with values from one pixel of a texture. For the rectangle to pass the alpha test, it needs to read back values from the pixel that are not transparent.

    In Dolphin, the game never set a texture to read from, so it was reading from whatever was used as a texture last - which unfortunately was a transparent pixel from the glow texture on Link's lantern. So the entire rectangle was discarded and everything in the mirror was cut away. Thus, Link's reflection would vanish whenever you pulled out the lantern required to see the mirror. The only exception to this was when the lantern goes behind the mirror. Then, it isn't drawn and another texture is used that doesn't have any transparency, explaining the flickering.

    So Armada started looking into why a texture was not set. It turns out the game did load a texture to use, but it loaded it from address 0x0.

    This is something that would crash a normal computer program, so Dolphin just assumed that 0x0 was invalid. After all, there was never going to be a texture at address 0x0 anyway, because the GameID is stored there. But degasus pointed out that on the GameCube, 0x0 was considered valid memory. And it turns out, the GameID doesn't have any transparent pixels. As insane as it sounds, reading back the GameID as a texture for the mirror's alpha test actually works!



    You must be registered for see links



    With that, the bug was fixed! But, it felt like an empty victory for everyone involved. Even though Dolphin now displayed the mirror correctly, how could it be confirmed that this was indeed the correct behavior? delroth suggested modifying the GameID of an ISO and then load it onto a Wii to see if the alpha test failed there. The only issue with this is that using a corrupt GameID caused other complications and difficulties.

    Once everything was sorted out, everyone waited with heavy anticipation. Is it possible to make the mirror alpha test fail on console?



    You must be registered for see links



    Yes, yes it is.

    This hardware verification proves that Dolphin is handling the case correctly. Thank you, Nintendo, for one of the weirdest game behaviors we've seen in a very long time.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Dolphin makes a lot of assumptions that games will act sane and not rely on undefined behavior. Repeatedly, the games betray Dolphin and do insane things. After what happened with Twilight Princess, we shouldn't be surprised that more software is relying on the strangeness of the GameCube and Wii. This one though, traces not to a game but to a DevkitPPC demo; one of the simplest possible homebrew cases was failing in Dolphin: Lesson08.



    You must be registered for see links
    Dolphin's rendering of Lesson08
    You must be registered for see links
    Console rendering of Lesson08




    Ornox decided to research this a bit further, by which he created hundreds of hardware tests to try to narrow down exactly what was going on. In almost every single case, Dolphin was absolutely fine, until he stumbled upon certain values that would cause the textures to glitch out on Dolphin. A bit more research revealed that Texture Coordinate Q was the source of all of these problems.

    So, for context, STQ are texture coordinates. Q is the perspective divide factor, similar to W in XYZW. Since the Wii is right-handed, Q>=0 and W>=0 are undefined cases (the point is behind the camera, or is on the camera plane itself). However, "undefined" in this case means "whatever the hardware does in this undefined edge case" and Dolphin has to handle that accordingly regardless of how insane it is.

    Let's just say there's been a lot of thought into how to handle this case; and there are a lot of nuances to it, but now it works to the best of anyone's knowledge. In the most basic case such as the one presenting this visual glitch, when Q = 0 the coordinates are divided by two. It isn't that simple though; as there can be stacked matrices, missing coordinates, and all kinds of scary things to complicate stuff. Some of it is pretty trippy!



    You must be registered for see links
    This is a super corrupted version of Lesson08 to stress test Dolphin's handling of the Q = 0 case.
    You must be registered for see links
    And this is the Wii verification of it.




    For the longest time, everyone was convinced that this wouldn't actually affect any commercial games. Searching far and wide, a few obscure Wiiware games actually did run into this case!



    You must be registered for see links
    The lesson08 bug has made everything shrunken and offset.
    You must be registered for see links
    But now you can torture yourself with this boring WiiWare game as much as you please!




    You must be registered for see links
    Even the characters are disinterested!
    You must be registered for see links
    See? They are all bored out of their minds.




    But, it was a foolish endeavor to look so far and wide for games when just booting up a single Factor 5 game has more test cases than anything else. And verily it came to pass: Star Wars: Rogue Squadron 3 manages to hit the Q = 0 case on a layer of clouds on Battlefield Hoth.



    You must be registered for see links

    Can you spot the difference? Click for full size.




    There appear to be a few other games that are affected as well, proving once again that Dolphin should never, ever trust the software it is running to be sane.



    Last Month's Contributors...You must be registered for see links


    Special thanks to You must be registered for see links that incremented Dolphin from You must be registered for see links through to You must be registered for see links!

    You must be registered for see links
     
  3. JMC47

    JMC47 Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    Every single GameCube game can at least boot in Dolphin 5.0. Except one. You must be registered for see links and its complex way of using the PowerPC Memory Management Unit rendered it unplayable in Dolphin up to this day. But finally as of Dolphin You must be registered for see links, this challenge has come and gone: Dolphin can finally boot every single GameCube game in the official library.



    Star Wars: The Clone Wars Running in Dolphin



    So what makes Star Wars: The Clone Wars so special? To truly understand what's going on, you need to have some knowledge on how the PowerPC's processor handles memory management and how Dolphin emulates it.




    Memory Management Unit EmulationYou must be registered for see links

    You must be registered for see links
    The MMU is a part of the GameCube's CPU. You must be registered for see links

    The Memory Management Unit, or MMU, is responsible for quickly giving games access to data and code. Rather than directly accessing available RAM, games interface with virtual memory which is then translated to physical memory by the MMU. This can be done in two ways, with Block Address Translations (BATs) for huge portions of memory or the page tables for small fine-grained mappings.

    The games are given access to virtual memory instead of real memory for several reasons. First of all, it gives the CPU an opportunity to cache accesses, greatly speeding up the efficiency of accessing often used values. Secondly, the GameCube only has 24MB (and some specialized areas) of RAM across a 4GB address space, meaning most memory addresses have no RAM backing them! If a game were to access a real memory address with no backing memory, it'd get garbage or even crash! By using virtual memory, the MMU can throw an exception giving the game a way to handle the situation or provide valuable feedback to developers on what went wrong.

    Dolphin is able to emulate the MMU with several degrees of accuracy based on theories of how the game is going to behave.



    Theory 1: The Software Only Writes to Valid MemoryYou must be registered for see links


    As long as the games only write to valid memory, Dolphin doesn't have much work to do. Most games use the GameCube/Wii's default BAT mappings, and as long as they don't try to access memory outside of that, all that has to be done is making sure accesses end up in the right place.



    [​IMG]



    The default mappings have one Block Address Translation (BAT) that translates to all of physical memory. Because BATs are faster than page tables, most games simply stick to this.

    Dolphin's way of handling this is to hardcode that Block Address Translation (BAT) from virtual memory and translate the address to physical memory. In layman's terms, the game is asking for one memory address, but the console (and thus Dolphin) gives it another from real memory.

    There are also a few other major pieces mapped out that we'll be keeping out of the scope of this article. The big one is Memory-Mapped Input/Output (MMIO), which is how the CPU interacts with different devices, such as the disc drive, memory cards, etc. The other thing to note is the special boot sector, but since games can't access it there isn't much more to say about it for now.

    MMU Off is as barebones as MMU emulation can get while still booting games. It just gives the game some memory to work with and assumes the game will play nice. And amazingly enough, most GameCube games and nearly all Wii games actually do.

    Most of the GameCube games that failed with this should have required full MMU emulation, but devious emulator developers managed to outsmart them with no performance issues with the "MMU Speedhack."



    Theory 2: The Software is Predictable About Invalid Memory UsageYou must be registered for see links


    MMU Speedhack can be best described as "MMU Off+", as it still doesn't do any serious MMU emulation. It maps more RAM than the GameCube has to trick games into thinking things are working without caring about what the games are actually trying to do.



    [​IMG]



    Because the games are using these addresses as extra RAM, simply mapping them as valid memory works! But, you're probably wondering why these games are accessing invalid memory in the first place, right?

    This is because Nintendo provided a library that allowed games to take advantage of the GameCube's 16MB of auxiliary RAM as extra RAM. Because this auxiliary RAM is linked to the DSP, it's more commonly used and referred to as audio ram, but it can technically be used for just about anything. Because the CPU can't directly map the auxiliary RAM to the address space due to a missing hardware feature, the game has to read or write to an invalid memory address to invoke an exception handler. This exception handler would then use Direct Memory Access (DMA) to move data from the auxiliary RAM into a game designated cache in physical memory. It then sets a page table to say that this previously invalid memory address now points to this cache location, allowing the game to continue without crashing!

    Somehow, Dolphin's hack works for almost all games that use auxillary RAM for extra memory like this. As ugly a hack as it is, it's painfully efficient and effective.



    Theory 3: Invalid Memory Access is not PredictableYou must be registered for see links


    While the MMU Speedhack is great for performance, it only really works when a game is following typical memory usage behaviors that have been seen so many times they have been integrated into Dolphin. These hardcoded assumptions allow Dolphin to assume where games are going to read and prevent the need for making sure memory access is actually valid. MMU Speedhack games are so standardized that very simple rules encompass them, but, those rules have limitations.

    Several games used their own custom exception handlers and use memory addresses in non-standard ways, breaking the MMU Speedhack. In these cases, Dolphin now has to check and make sure that a memory address is valid before feeding instructions or data to the emulated CPU, which is much slower than simply assuming things are valid.

    Before You must be registered for see links and other's efforts to optimize the JIT and MMU emulation, Enable MMU was a death sentence to the playability of a game.



    You must be registered for see links
    You must be registered for see links
    You must be registered for see links
    You must be registered for see links
    You must be registered for see links
    You must be registered for see links
    You must be registered for see links
    You must be registered for see links
    You must be registered for see links
    You must be registered for see links



    21 titles are known to require more than the MMU Speedhack.​




    Handling memory checks (memchecks) is slower because it harms the performance optimization "fastmem". Fastmem maps the GameCube/Wii address space to host memory and then marks all of the emulated invalid memory as allocated for the host PC. This allows Dolphin to use the host CPU's exception handler to do the dirty work when catching exceptions. When it does catch an exception, Dolphin has to fallback from fastmem to slowmem in order to handle the address, which can be a huge performance dilemma.



    [​IMG]



    Memchecks are the core of what Enable MMU does, and it's the key reason why MMU Enabled titles have been so slow in Dolphin. There are cases that require falling back to the interpreter, it doesn't work with fastmem, and they're even slower than normal memory accesses on console!

    Despite often failing, it's always worth it to try for fastmem on pretty much any access; a fastmem loadstore takes as little as 2 instructions, where as the same access in slowmem can take up to 1000 instructions! Because we don't know if a pointer is in valid memory or not, we just always try fastmem due to the huge performance difference it gives whenever it hits.

    As said earlier, slowmem actually got a bit faster which made it more viable to use. That's mostly because of moving memchecks into You must be registered for see links. By optimizing how memchecks were handled and keeping everything ready, MMU games saw huge performance increases. Rogue Squadron 3 saw the biggest effect, going from a meager 4 FPS to nearly 45 FPS from that alone!

    Typically, the Far Code Cache along with other JIT optimizations averaged a nearly 100% performance boost in all of the games requiring Enable MMU, even throwing out Rogue Squadron 3 as an outlier. This is why today people on powerful computers can at least stand a chance at the MMU enabled titles.



    Theory 3.5 - Factor 5 is EvilYou must be registered for see links


    Of course, most people don't know how slow Star Wars Rogue Squadron 3 was before the Far Code Cache was implemented because it didn't boot. At least, the NTSC version didn't. The PAL version You must be registered for see links which is where the performance numbers from before the Far Code Cache were grabbed from.



    You must be registered for see links
    Even if you could get in-game without anything breaking, things could go bad with one vital piece of data stored across pages.



    Rebel Strike is the second to last NTSC game to boot for one reason - it had a nasty little MMU trick that evaded emulation for over a decade. Rogue Squadron 3 could actually store its data across pages! During a longer read or write, Rebel Strike could trigger an exception, literally switching from a valid address to an invalid address in the process! Dolphin would previously incorrectly set the exception to the start of the read, when it really needed to set it to where the exception actually occurred.

    While it would have been poetic for the final GameCube title to boot in Dolphin to be a Factor 5 game, there remained but one more. And things wouldn't be a small bug this time around.



    Theory 4 - The Game Defines its Own Valid MemoryYou must be registered for see links

    You must be registered for see links

    Now we finally get to the case of Star Wars: The Clone Wars. After all of Dolphin's work to handle BATs and page tables as efficiently as possible, this game decides to throw Dolphin's biggest assumption right out the window: Static BATs.



    What was Dolphin Doing?You must be registered for see links


    Dolphin was completely ill-equipped to handle a situation where true BAT emulation was required. No matter what settings you used, things would quickly end up going sour thanks to hardcoded assumptions.

    MMU Speedhack/MMU Off - Things go very poorly in this combination. Because Dolphin isn't really emulating the MMU, it just goes ahead and decides to give the processor whatever garbage is mapped to 0x00000000. The game promptly crashes because that was a very foolish thing to do.

    MMU Enabled - Assuming you're using a version from before this article, things get slightly further with MMU Enabled. Dolphin does emulate the exception and loads the error handler, but Dolphin simply isn't capable of handling what it does next. Clone Wars takes advantage of the BATs being disabled during exception handling to get finer control over memory management. And then proceeds to say that the default BATs and page tables aren't good enough and tries to create its own. Dolphin hardcodes the BATs. They aren't changeable. So, when the error handler returns control to the game... it promptly crashes. But at least Dolphin itself is still running so you can close the game and play something else!

    You're probably wondering "Couldn't you make specific hardcoded BATs for this game?" The answer is a resounding no. The game actually changes the BATs multiple times during missions and multiplayer, meaning that proper BAT emulation is required.



    What Dolphin Needs to doYou must be registered for see links


    Proper BAT emulation means that Dolphin needs to be able to enable and disable BATs based on what the game is actually doing instead of assuming what the game wants. The problem with this is that the foundation of Dolphin's efficient MMU emulation hinges on the fact that it knows where valid virtual memory is going to be, and breaking that assumption broke Dolphin to the core.

    Star Wars: The Clone Wars is the only known game to take advantage of the GameCube's four mappable instruction BATs and data BATs to set up its own memory maps. In order to emulate this game, Dolphin's MMU emulation would have to be completely rewritten. Everything gets complicated; fastmem, memchecks, and everything in between.

    Unlike the custom exception handlers of the other MMU Enabled titles, The Clone Wars exception handler actually restructures memory. It unmaps the default BAT and sets up its own multiple times throughout play. While all of the previous graphics showing the BATs have built up more and more complexity as emulation became more complete, The Clone Wars throws it all away!



    [​IMG]



    Dolphin can make no assumptions this time around. The core rewrite to Dolphin's BAT emulation finally allows it to handle this worst case scenario. Dynamic BATs is true BAT emulation that actually allows it to take what the games are asking for and map things out correctly. A huge part of the hardcoded assumptions within Dolphin's MMU emulation are now gone thanks to this gargantuan rewrite.



    Flipping the Page TableYou must be registered for see links


    Developers on Dolphin have known what was necessary to boot Star Wars: The Clone Wars for years. In ancient times (the 3.0 era) there existed a branch that could even boot The Clone Wars when using the interpreter. That was unreasonably slow and affected the performance of non-MMU titles in an era when performance was a much greater concern.

    Even the current implementation (Dynamic BATs) had been sitting as a You must be registered for see links for over a year, and has booted The Clone Wars for much of that time. It's been waiting so long that it had to be rebased by another developer!

    The reason that this feature took so long to implement was that it had to be implemented without completely destroying performance of everything else. And in that respect, magumagu's implementation succeeds with flying colors.



    [​IMG]



    As you can see, a very high priority has been put on keeping Dolphin fast despite this huge rewrite to the MMU. Non-MMU and MMU Speedhack titles should see performance vary by less than 1%. This is a stark difference from earlier plans that saw non-MMU enabled titles drop by over 30% even with MMU emulation disabled!

    One of the engineering feats of Dynamic BATs is that it still works alongside fastmem despite the obvious complications of the valid memory being able to move around! On the negative side, MMU titles are a bit slower right now. While 8% - 15% is significant, it's not something that can't be gotten back with optimizations down the road. We felt that some performance loss was worth getting this tremendous boost in accuracy.



    Side Effects of a HardCode RewriteYou must be registered for see links


    More accurate MMU emulation means that a lot of strange behaviors in games will now be emulated quite a bit better. While only one game actually requires Dynamic BATs to run, other games will enjoy the benefits of faster access to memchecks.

    Users love when games crash, right? There are plenty of Wii games that actually crash on console when you do various unintended actions. Sometimes, doing those actions will even crash Dolphin! Easier access to memchecks means that Dolphin can accurately emulate well known crash glitches in games without Dolphin itself crashing! From issues pertaining to You must be registered for see links to You must be registered for see links, crashes can now be emulated just like they would on console without a performance penalty!



    Twilight Princess Sign Bug



    Then again, most users don't want their game to crash. On that side of things, You must be registered for see links (and You must be registered for see links) no longer crash when loading various minigames. This could be due to slight changes in cache handling, or more likely bugs in the hardcoded BATs/Page Tables. Considering it was a crash that no one had any idea to solve, it simply disappearing with a rewrite is a welcome surprise.

    Cleanups to CPU emulation in general also have two more games working without much of an explanation. You must be registered for see links, developed by the people behind Mario Golf, would crash when trying to load a course. You must be registered for see links would simply not boot and spit out some debug information on the screen. While neither game was affected by Dynamic BATs main implementation, cleanups during the merge process inexplicably fixed both games. Based on the what is known about the issues, it's likely related to more instruction and data cache issues.

    Another welcome surprise is that a bunch of romhacks should run better in Dolphin. Wiimm's Mario Kart Wii More Fun romhacks will load their track selection screen properly! To a degree, at least.

    This is very, very lucky to be working at all. Because the hack doesn't clear the icache and instead relies on the PowerPC processor to handle icache eviction and flushing, it was thought to be impossible to emulate on Dolphin without huge performance penalties. But now Dolphin clears the icache on BAT changes. Unfortunately, users will need to return to the main menu between races. If you want this fixed... don't bother reporting it here. While Dolphin will eventually emulate instruction and data cache emulation, both combined will raise requirements for CPU emulation by 14x! For hardcore users and those seeking accuracy, this needs to be emulated, but for everyone else you really don't want a game you like to require accurate cache emulation.

    If the romhackers want their games to run in Dolphin in the meantime, we unfortunately must ask them to not rely on the icache/dcache behavior of the PowerPC. In the case of Project M, before their final release they did fix their icache/dcache reliances so it should run properly in Dolphin. But, hey, if you don't want people on Dolphin running your romhacks, you know how to defeat it - for now.



    In ClosingYou must be registered for see links


    With this rewrite, Dolphin has taken another big leap in accuracy under the hood. While most users shouldn't see a difference, a few random crashes here and there should be sorted out. It's bittersweet in a way, while it is a momentous occasion to get the last GameCube game booting, it also denotes that there aren't many huge mysteries remaining. While some games still crash, and there are a lot of issues to still tackle, there are no completely broken games that make zero sense remaining.

    Dolphin's MMU emulation should be able to handle any retail game at this point. The only people that could possibly break it would be Factor 5, and it's not like they made any Wii games...



    Star Wars: Rogue Leaders on Wii



    It turns out there indeed is another Rogue Squadron game in existence for Wii. Developed by Factor 5, it's sure to push the console harder than any of the games before it. The problem is that since it was never released, we can't throw it at Dolphin. Yet, since it does exist, whoever does have it could throw it at Dolphin. Maybe even get whatever crash it inevitably triggers. Or if it does boot, maybe one screenshot? Please?

    Ah well. We at least have the You must be registered for see links developed by core members of Factor 5 in their new company. And as you probably have guessed, it does not boot in Dolphin.

    You must be registered for see links
     
  4. MaJoR

    MaJoR Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    There was apparently some big deal this month about You must be registered for see links. But, the increasingly more amusing part of this new found accuracy is emulating game crashes. When using MMU Enabled + Single Core, it should be impossible for a game to crash Dolphin, but, much more likely to emulate a game crashing in situations where it would on console. As such, booting all games is old news, Dolphin is now onto emulating crashes in all games. One infamous one that didn't work in Dolphin is known as the You must be registered for see links "Force 20" game glitch.


    Gotcha Force "Force 20" Crash

    Though not specially highlighted this month, our applause has to go to aldelero5 for continuing to work on and renovate Dolphin's debugger. With Dolphin's increasingly accurate MMU emulation, it's actually become even more useful to poke at and prod games. They are making it so much easier to research and prod bugs like this to delve even deeper into the game logic!

    While that was merged near the beginning of the month, we had another major change merged at the end of the month. Two hours before the progress report was originally scheduled. Dolphin now has another experimental backend, this time using the Vulkan API. Much like D3D12, it should be considered experimental, with a few features still missing from the backend, and many drivers having their own issues with Vulkan.

    With that out of the way, let's get onto this month's notable changes!



    Notable ChangesYou must be registered for see links




    You must be registered for see links by You must be registered for see linksYou must be registered for see links

    You must be registered for see links
    Click here for the full article.

    If you couldn't tell by the introduction, this is still a pretty big deal. Dolphin is capable of booting every single GameCube game now, and the only two games that don't get in-game are You must be registered for see links and the You must be registered for see links. Both require emulating new hardware addons for Dolphin to boot them, and the Game Boy Player is an entirely different system! Fortunately there is already a great emulator out there which You must be registered for see links.

    Because we already had an absolutely huge article on it, there isn't much else to say. In summary, better Memory Management Unit emulation gets You must be registered for see links to boot while fixing a gaggle of other bugs.

    Instead, let's focus on the impact and reports we've gotten from users, as well as some trends we've noticed over the past four weeks since it's been merged.

    • Reports of Broken Games: You must be registered for see links was reported as broken by this change. We investigated and found that this game is a bit of a special case. It only runs in Dolphin's JIT! The seemingly more accurate Interpreter, Cached interpreter and less accurate JITIL all immediately crash on boot! We tested the game before and after Dynamic BATs. There is no regression.
    • Performance Issues: Some users have reported anywhere from a 16% to 33% slowdown on certain configurations, but when it comes to reproducing these slowdowns, no one on the staff can actually see a major slowdown in non-MMU titles. If you're seeing slowdowns since Dynamic BATs in non-MMU titles, try to hang in there; there's still more optimization that can be done on CPU emulation and any slow down should be possible to counteract. It's just identifying what (if anything,) is slower right now.
    • JITIL Issues: We broke JITIL again. There is no reason to be concerned, this is par for the course. We break JITIL all the time. Anyway, enable MMU + JITIL will cause Dolphin to lockup on game boot. We recommend you do not do this. Unless you really need to see that we're not joking. The question is whether we do the work to fix JITIL or simply remove it. With JIT issues becoming less and less common, JITIL is becoming less and less useful to keep around. Also Cached Interpreter replaces some of its usefulness as a comparison to the JIT that isn't super slow.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    While Dolphin still doesn't support USB Microphones, there are actually a couple of games that check for the USB Microphone without actually requiring it, such as the newer Just Dance titles. Since Dolphin didn't even have basic USB emulation, when the game checked for a USB microphone, it would just crash before it even finished booting. So in order to get the non-Microphone portions of the game to work, some very basic functionality of USB Microphone detection needed to be added.

    Dolphin now properly fails the game's USB check, allowing the game to boot.

    This fix allows the You must be registered for see links, You must be registered for see links, You must be registered for see links, and likely the You must be registered for see links to boot. At this point we wouldn't surprised to see a Just Dance 2018 announced.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    A while ago on the Progress Report, we alluded to the fact that Dolphin's Auxilliary RAM Direct Access Memory (ARAM-DMA) You must be registered for see links when You must be registered for see links or You must be registered for see links are being played. At the time, we said we were ~99% sure that the GameCube's DMA timings wouldn't become instant when playing Resident Evil 2 or 3, and now we are 100% sure.

    The last known full GameCube "game" that wasn't reaching gameplay in Dolphin after Dynamic BATs was You must be registered for see links. When doing more research into why Army Men was broken, phire realized it was hitting the ARAM-DMA hack that was designed to fix Resident Evil 2 and 3.

    See, the ARAM-DMA hack wasn't just activating in Resident Evil 2 and 3. Instead, Dolphin looked for cases where L1/L2 cache invalidation was happening during a Direct Memory Access transfer. When this happened, Dolphin went into instant ARAM-DMA mode to try and curb any issues caused not emulating the L1/L2 CPU cache.

    In the cases of Resident Evil 2 and 3, they use their own custom streaming audio setup. Developers currently disagree with what is actually going wrong at the current state; but, L1/L2 cache emulation is likely needed for things to work properly.




    The music never correctly loads in areas with two "music" tracks.​



    Instead of leaving a big ARAM-DMA hack just for Resident Evil 2 and 3, we decided to break the music in the games and remove the hack altogether. The games are still fully playable, but areas with multiple music tracks will have issues with the music cutting in and out as they constantly fight to play each area. Often, ambience and other reoccuring sound effects are used as a second "music" track, so don't be surprised if the music is missing in a lot of areas.

    This change fixes Army Men: Sarge's War and likely other games inadvertently activating the ARAM-DMA hack.

    Before anyone asks, yes, Dolphin could have activated the hack only for Resident Evil 2 and 3. The reason that was not done was because we really want to fix this properly. So many times in the past, a developer has left a hack in Dolphin that has come back to cause issues when accuracy is increased. Sarge's War is just one of those casualties, but there have actually been dozens of titles broken by assumptions made by old hacks; some of which extended the feature freeze before 5.0 by quite some time as regressions from finally removing them were sorted out.

    We will fix Resident Evil 2 and 3 eventually, and this time it won't be with a hack.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    This one fixes one of our favorite bugs in all of Dolphin. There's a bug in You must be registered for see links, where the player pulls out the map, but, for some reason, the map is actually upside down. Among developers, we've joked quite a bit about the character being an idiot and simply holding the map upside down!

    Yet, we knew there was a real issue, and a lot of attempts to fix it have already failed. Finally, You must be registered for see links pulled off the seemingly impossible when looking at ornox's You must be registered for see links featured in last month's Progress Report. He realized there were other cases where texture coordinates weren't being divided by q.



    You must be registered for see links
    Fishing Resort Map Bug 2009 - 2016

    The laughter you gave us will never be forgotten.



    Also this fixes Find Mii's dark stages, but, that's not nearly as amusing.



    You must be registered for see links
    Now that's one way to make the game harder.
    You must be registered for see links
    Ahh that's better. Note: this was discovered by You must be registered for see links, hence the missing faces. Fifologs don't record EFB Copies generated before the fifolog.




    Note: An earlier version of this entry referenced a different change. The writer responsible has been flogged.



    You must be registered for see links, You must be registered for see links, and You must be registered for see links - Android UI Improvements by You must be registered for see linksYou must be registered for see links


    Well, it's been a while. Dolphin Android hasn't been seeing many unique updates since outside of a few components, it's internally the same thing as the PC versions. But SeannyM has stepped up to the plate and has committed a ton of fixes for Android! These are all well needed fixes, so let's ignore the specific commits and just go through the fixes one at a time.



    Scale buttons based on screen dimensionYou must be registered for see links


    Dolphin now scales the on-screen buttons based on your screen dimensions. This helps smaller phones and of course, portrait mode!



    You must be registered for see links
    As if the GameCube controller's A button wasn't big enough already...
    You must be registered for see links
    Now that's much more sensible.




    Improved Button ScalingYou must be registered for see links


    This little change scales all of the buttons relative to each other based on real world measurements. There are some differences from world sizes here and there for usability, but it makes the on-screen controls much more familiar.



    You must be registered for see links
    For a before shot, just compare this to the scale buttons images above.



    C-Stick and Dpad SupportYou must be registered for see links


    Dolphin now has on-screen controls for the GameCube Dpad and C-stick! You can finally spam downsmash as Peach in Melee and then taunt after yet another kill!



    Android: fix save and load state menus on non-TV devicesYou must be registered for see links


    This fix that restores a very important bit of functionality that is especially important for mobile users - the ability to save and load savestates on demand. Previously, the save and load state menus would try to load the Android TV UI fragments, regardless of the device it was currently running on. On non-Android TV devices, such as phones, this resulted in a crash because the layout doesn't exist on that device. With this addressed, manually saving and loading savestates works properly once again!



    Toggleable buttons UIYou must be registered for see links


    Next up, there is now a configuration menu that allows you to toggle on-screen buttons as you please. This very simple change makes it simpler to use what you need for a game; for much cleaner, easier to use on-screen controls.



    You must be registered for see links
    The toggle menu lets you select which controls you want on-screen.
    You must be registered for see links
    If you are playing a game that uses next to no buttons, you can just use what it needs!




    Wait wait, those weren't GameCube controls in the toggle menu!



    Wiimote on-screen buttonsYou must be registered for see links


    That's right, Dolphin on Android now has Wiimote touch controls! For the first time you can control a Wii game with nothing but your screen. It's still limited though, as only the Wiimote and Nunchuk are available, and there are no motion controls or pointer, but this is a big step toward Android compatibility for on-screen users.



    You must be registered for see links
    Oh yea, time for some Xenoblade on the road! ...at 4fps...



    With all of these changes, on-screen controls for Android have taken a huge leap forward! However, there are still considerable issues left. The buttons do not indicate when they are pressed, joysticks do not slide about in their range, the classic controller pro has not been implemented, and motion controls will be a nightmare.

    But thanks to SeannyM, we're slowly moving toward a complete touch control interface.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    OpenGL cannot emulate You must be registered for see links's shadows without this hack. For quite a while Dolphin has been attempting to move on from the two pass method it uses when dual-source blending is not supported, and things were getting close with most graphics cards now supporting it as a basic feature.

    Destination alpha is emulated by writing two colors from the fragment shader. The first contains the alpha value that is written to the framebuffer, and the second contains the value passed into the blending equation to determine the final color of the pixel. Unfortunately logical operations cannot be combined with blending, and cannot be applied on a per-channel basis, meaning that the two-pass fallback was needed to write the constant alpha value to the framebuffer.

    The only known case where this causes an issue is Kirby's Return to Dream Land. This is far from a perfect solution, due to it not being accurate in all cases, but it does make Kirby's shadow only appear on the ground as expected.

    Why did we finally cave and add the hack? Vulkan, D3D12 and Metal, the three new APIs, all lack the functionality Dolphin needs. So, instead of waiting any longer, You must be registered for see links implemented the hack and degasus approved it. After realizing help was not on the way, it was either leave it broken forever or implement a hackfix.



    You must be registered for see links
    Oh no, Kirby is being eaten by a black ink blob! It's Vietnam all over again!
    You must be registered for see links
    Thankfully Kirby will suffer no more war flashbacks with this fix.




    For those of you on D3D11/12... this fix isn't coming your way. Now, you probably are thinking, "Hey, Kirby's Return to Dreamland's shadows already works on D3D," and you'd be correct. It does work. The output of the broken implementation there lines up with what appears on console. On the other hand, lack of LogicOp support altogether does cause other issues. The most well known example is F-Zero GX in Story Mission 2.



    You must be registered for see links
    The shadows of these boulders don't appear on D3D.
    You must be registered for see links
    But they appear perfectly fine in OpenGL.




    With D3D12, there is the possibility of supporting F-Zero GX's boulder shadows in the future. On the other hand, D3D11 completely lacks any functionality toward it.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links

    [​IMG]

    Stenzek implemented a backend that uses some weird graphics API a few people seem to like. There's actually a lot to say, but this got merged the night of the progress report (literally two hours before October 1st.) So in honor of the devs who have absolutely no regard for the blog staff, prepare for the ultimate technique for blog article writing: winging it.



    Vulkan for AMD UsersYou must be registered for see links


    The biggest news for us with Vulkan is that they will finally bring AMD graphics cards up to speed on a non-D3D backend. Linux users with AMD graphics have had it pretty rough in Dolphin, seeing much, much worse performance compared to similar hardware from other vendors. Vulkan finally levels the playing field, giving absolutely huge boosts to AMD users. AMD users on Linux can finally celebrate reasonable performance! Once Vulkan is feature complete, there won't be much purpose for AMD graphics users to ever go back to OpenGL in Dolphin.



    [​IMG]



    With an AMD APU, Vulkan shows that it can stand toe to toe with D3D11/12 in performance. This means our Linux AMD GPU users... well, before this point there was no point in trying Dolphin on that configuration. Now those users can get comparable performance to D3D11/12 on Windows without having to install Windows. Unfortunately for our Mac OS users, to our best knowledge they do not plan to support Vulkan.



    Vulkan for NVIDIA UsersYou must be registered for see links


    NVIDIA users have the opposite problem. The OpenGL drivers are so fast that it's fairly difficult to find games that perform all that differently inVulkan than OpenGL. You must be registered for see links is one of those exceptions. Much like D3D12, Vulkan greatly outperforms D3D11 and OpenGL when taking away the Twilight Princess speedhack provided by the emulator.



    [​IMG]



    NVIDIA users really have no reason to use Vulkan outside of the few rare cases where its efficiency really shines. Once it's feature complete and has some optimizations, this can change very fast.

    Note: NVIDIA's drivers are broken on Vulkan for Dualsource Blend. Dolphin uses this quite a bit, so, if you're planning on using the Vulkan backend on your NVIDIA cards, you'll need 368.81 or older on Windows or 367.44 or older on Linux. We'll plan on sending in some test cases so the drivers can be fixed. Again, OpenGL performs fairly similar for these users, so it shouldn't be considered too urgent.



    Vulkan on AndroidYou must be registered for see links


    Mobile users have been itching for Vulkan to give sweet sweet performance gains! Yeah, not happening yet. Mali crashes immediately on start, and it doesn't give any reason why. Adreno at least renders something, but it's completely wrong even on many test programs and Dolphin isn't close to playable. We haven't tested all the other mobile drivers yet, but so far it appears You must be registered for see links.

    On Android, Vulkan driver support just isn't ready yet.



    Vulkan on Intel using MesaYou must be registered for see links


    For right now, Vulkan is slower than OpenGL on Intel Mesa due to several hardware features being left unimplemented. This should change in the near future as it's brought closer to completion.



    General Information about Vulkan SupportYou must be registered for see links


    Vulkan support is finally here! So, what does it mean? Well, both Vulkan and D3D12's greatest strengths simply don't apply to most emulators. That means that we aren't going to see world changing performance boosts simply by implementing the API. Instead, we'll be looking at various optimizations that use Vulkan's unique abilities to help emulate games with quirks that are particularly demanding. Where Vulkan does shine, it really is great. Being able to play Twilight Princess without a specialized speedhack is a result of the newer APIs simply being more efficient, and there will likely be more cases where we can gain added accuracy without a cost to speed.

    But, that will come with time.

    On that note, while the Vulkan backend is very stable, it's not quite complete. The most notable missing feature is External FrameBuffer (XFB) support, which is because we're currently in the process of rewriting support. It felt a bit wasteful to greatly complicate the Vulkan backend for something that was going to get renovated soon anyway. Also, Vulkan lacking XFB support just means we can bug the developer behind it (phire) to work harder because our AMD Linux users are suffering greatly while he does things that aren't HybridXFB. The other missing feature is actually missing from Vulkan altogether: exclusive fullscreen. We're hopeful that extensions in the near future will rectify that, but, it's something to keep in mind for now.

    Unlike D3D12, we don't consider Vulkan to be quite as "experimental." It shouldn't randomly crash, it doesn't have any egregious hacks in the backend, and we have stenzek here to maintain it. There may still be occassional bugs, and, do remember titles that require XFB will not work for now. Other than that, have fun with it and see how it stacks up with our other backends. It should be a solid alternative to D3D12 for AMD users, and definitely has the potential to go further than OpenGL longterm!

    If you find any issues with the Vulkan Backend, please report them, we currently have a developer actively working on it so it's likely there will be a quick turn-around on issues!



    Last Month's Contributors...You must be registered for see links


    Special thanks to You must be registered for see links that incremented Dolphin from You must be registered for see links through to You must be registered for see links!

    You must be registered for see links
     
  5. MaJoR

    MaJoR Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    These days, most emulators use pre-configured mappings to allow any controller that uses xinput to be immediately mapped to whatever the original console used. But that is only possible because of the standardized button layout that has proliferated throughout consoles. Mapping older controllers, such as the SNES controller, to a modern controller is pretty much trivial. Even a PS2 controller can be mapped to an Xbox 360 controller without losing much.

    For Dolphin, things get a bit more complicated. While the GameCube Controller has a few trouble spots, such as the analog/digital combo R and L buttons, it can mostly map to a modern controller without issues. The situation goes from okay to very dicey when we move to the Wii and its titular Wii Remote. This unique controller is extremely difficult to generically map to standard game controllers. Usually, users will save emulated Wii Remote profiles per game, only mapping what is needed simply because mapping a single configuration for all games is impossible.

    For years, Dolphin has used "Real Wiimote" support to get around these mapping problems. Instead of worrying about mapping highly complex motions to a button or an axis, you can use the original controller and just do the motion, exactly as you would on the original console!



    [​IMG]



    Unfortunately, even when using Real Wiimotes Dolphin could sometimes leave something to be desired. Broken Wii Remote speaker audio, lag during rumble/audio, difficulty detecting accessories like the MotionPlus, and inaccurate syncing with the MotionPlus made games less enjoyable. On MacOS, simply scanning for Wii Remotes can crash the emulator!

    This all traces back to the eccentricities of the Wii, and the awful things Bluetooth stacks and operating systems do to Wii Remotes. Dolphin simply has no choice but to hack around these issues, and operating systems are not very fond of it. In the case of Windows 7, most modern Wii Remotes can't even be connected.

    With something as complicated as the Wii Remote, less emulation is better. Even with GameCube Controllers, You must be registered for see links, Dolphin can essentially bypass a lot of controller emulation. This is the best way to get authentic GameCube controls without compromise in Dolphin. Now the same ideas are being applied to Wii Remotes! Excellent Wii Remote support is now possible by not emulating a Wii Bluetooth adapter!



    The Magic of Not Emulating StuffYou must be registered for see links


    Much like Native GameCube Controllers, Dolphin can achieve this through LibUSB. In the case of "Native" GameCube Controller Adapters, they all have to work exactly the same because of their compatibility with the Wii U. Things aren't quite as easy for Dolphin and Wii Remotes; for the most part users are going to be using standard Bluetooth adapters. That's not to say that you can't use a Wii Bluetooth adapter; with some basic soldering skills you can create abominations to the world that work on your PC!



    You must be registered for see links
    Soldering skill level: Good Enough



    By installing a LibUSB driver on an existing Bluetooth adapter, users can allow Dolphin to bypass the host Bluetooth stack and directly interface with the device. This means that bugs and issues brought on by both missing features from the host Bluetooth stack and bugs in Dolphin's Bluetooth adapter emulation are avoided!

    This level of control lets Dolphin to make Bluetooth adapters behave just like a Wii's Bluetooth system, allowing Wii Remotes to be synced to Dolphin directly, and closing the emulator will turn off all connected Wii Remotes. Limitations on connecting Wii Remotes have been removed; Third Party Wii Remotes, -TR Wii Remotes and standard Wii Remotes will connect and sync to your computer regardless of Bluetooth stack limitations! Windows 7 users upset about the Bluetooth stack not supporting Motion+ Included Wii Remotes can bypass the issue altogether with Bluetooth Passthrough!

    In terms of performance, Wii Remote audio can work on all models, Motion+ is detected properly and has much more accurate motion detection. In games like You must be registered for see links and You must be registered for see links, there was a noticeable difference between Emulated Bluetooth and Bluetooth Passthrough.



    You must be registered for see links
    With Bluetooth Passthrough Skyward Sword controls exactly as it did on the Wii



    And that's just the tip of the iceberg; this essentially allows for perfect Wii Remote behaviors in Dolphin. The other big benefit is that it narrows down what bugs are a part of Dolphin's standard Real Wii Remote path as well, making it clear where bugs lie. This doesn't mean all of this is possible on the old path: we still rely on the host Bluetooth stack, but perhaps something could be done about issues like detecting motion+.

    Unlike the Native GameCube Controller support, Bluetooth Passthrough does not require an actual Wii Bluetooth adapter. While real Wii hardware can be used and provides the best experience possible, any compatible Bluetooth adapter can be used for this feature.



    What you needYou must be registered for see links


    As of You must be registered for see links you can directly give control of a Bluetooth adapter to Dolphin by installing the same LibUSB driver to it used for the Wii U Adapter and other HID USB devices. You'll need a compatible Bluetooth adapter. The wiki page details some additional information about how to set this up on each operating system and testing results of various adapters: You must be registered for see links



    What are the limitations?You must be registered for see links


    There are two big limitations to note right away. One is that savestates do not work with this feature. With Emulated Bluetooth, Dolphin is emulating the Wii's Bluetooth adapter, allowing it to save the current state of the emulated Bluetooth adapter so it can be retrieved when loading a state. With Bluetooth Passthrough your Bluetooth adapter is acting as the Wii's Bluetooth adapter, and there is no way to store the adapter's state when it's working at this low level; the adapter would be utterly confused by it. The second is that because this skips Dolphin's Bluetooth adapter emulation, Emulated Wii Remotes and Real Wii Remotes on Emulated Bluetooth cannot be mixed with Bluetooth Passthrough Wii Remotes. And if you're thinking of making a savestate in one mode and switching to the other, unfortunately, it won't work. Savestates are not compatible between Bluetooth modes.

    Another thing to keep in mind is that because you have to overwrite the Bluetooth adapter's driver, it is not useable for other devices while being used for Dolphin. While the process is completely reversible, just keep this in mind before going through the steps!

    [​IMG]

    Note that your experience will vary greatly depending on how your Bluetooth adapter reacts to the feature. During testing, ~12 Bluetooth adapters were tested between several users, and three of them failed altogether, two more had serious issues, and others had limitations in terms of connectivity and audio. The best experience anyone got was by soldering a replacement Wii Bluetooth adapter to a USB cable and using that. With the actual Wii Bluetooth adapter, audio worked properly even across four Wii Remotes in a motion+ title and there was no lag while initially syncing Wii Remotes.

    Users are highly recommended to use a USB 3.0 Port or better for the Bluetooth adapter. USB 2.0 ports, for some reason or another, do not perform as well when it comes to multiple Wii Remotes or Wii Remote audio even when using the same Bluetooth adapter. It is also recommended that you do not simply go out and buy the most expensive adapter and expect it to work perfectly. As of current testing; there isn't much rhyme or reason to which adapters work well or poorly. The only guarantee is that the Wii Bluetooth Adapter will provide the absolute best experience.

    Note: As of 10.9, MacOS does not allow us to take control of a Bluetooth Adapter, and thus this feature will not work on MacOS. It may be possible to make a codeless kext to allow taking over Bluetooth adapters, but it would need to be customized for each adapter, which would make it very complex. Advanced users should be able to make it work on an adapter by adapter basis.

    Note 2: Note that the DolphinBar does not expose its Bluetooth adapter to the system, and cannot be used for Bluetooth Passthrough.



    In ConclusionYou must be registered for see links


    This is an exciting feature for everyone who wants perfect Wii Remote control in their favorite games. It cannot be said how much The Legend of Zelda: Skyward Sword improves with passthrough. Despite Emulated Bluetooth's Real Wii Remote support working fine in it for years, it was immediately noticeable when switching to Passthrough mode. We expect avid gamers and casual fans alike to enjoy this feature and hopefully with time some of the benefits will trickle back to the emulated Bluetooth path as well.

    For now, Bluetooth passthrough just makes Wii Remotes work.

    You must be registered for see links
     
  6. MaJoR

    MaJoR Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    This month, we have a few very important things to go over before we get to our notable changes, so let's dig right into that.



    NVIDIA Vulkan Support UpdateYou must be registered for see links


    Users may remember that we recommended using older versions of the NVIDIA drivers when using Vulkan. Well, this is no longer required as once NVIDIA was aware of the bug, they fixed it in a few minutes and the fix was rolled out in driver version 375.63. Users can now use the latest version of NVIDIA's drivers without worrying about Vulkan issues in games that use Dolphin's dual source blend.



    Idle Skipping Option RemovalYou must be registered for see links

    [​IMG]

    A few users got confused when they noticed "Disable Idle Skipping" was removed. Idle skipping is something you always want on at this stage of Dolphin's development. There are no known downsides, and it makes the emulator run faster by skipping instruction loops that do nothing.

    Yet, some users will forever claim that turning off idle skipping raises performance, which is simply not true. What's actually happening in those cases is an exploit of another behavior. When a game hits idle skipping, Dolphin uses that opportunity to synchronize the CPU and GPU threads, greatly increasing the stability of the dualcore setting. Without it, many games will straight up crash in dualcore, such as You must be registered for see links. Other games will run completely desynced; with those titles running at framerates they was never intended to run. When those games then try to communicate with the GPU, bad things happen because the CPU is expecting it to be running speed while the GPU is running at another.

    For experienced users who do want to disable that syncing, the "SyncOnIdleSkip" option can be found in Dolphin's INI file and set per game in game INIs. We highly recommend you do not do this unless you're an advanced user aware of the implications of disabling it.



    DolphinBar Bluetooth Adapter Passthrough UpdateYou must be registered for see links


    It seems that Mayflash has expressed interest in implementing You must be registered for see links support for the DolphinBar in the future! Considering the large number of users with DolphinBars, we hope support can be added so more people can try Bluetooth Passthrough!



    With those big announcements out of the way, let's get to this month's Notable Changes!



    Notable ChangesYou must be registered for see links




    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Logging in Dolphin is important; it helps immensely with tracking down bugs in the emulator and monitoring what games are doing in various situations. For many, many years, the two strictest log types, Info and Debug have been relegated to debug builds. With aldelaro's retooling of logging, a lot of the most useful debug logs have been moved to info. As an added bonus, Info logs are now available in release builds without bringing the drop in performance once associated with the Debug and Info logs.

    While this may not seem all that exciting to users, it'll make things a lot easier for those looking into strange behaviors with more logging available in the most common builds of Dolphin.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Before this build, shutting down Dolphin was akin to unplugging the Wii. This is a hold over from the GameCube; where turning off the console simply cut power to the console. The Wii actually does quite a few things when you hit the power button before it actually turns off. While 99% of the time none of this matters, there is actually a case where this proves to be a fatal flaw.

    NES and SNES Virtual Console games that save. Those games only flush the save data to NAND when you turn off the console, reset the game, or return to the system menu! That means if you save in You must be registered for see links and then turn off Dolphin... say goodbye to your savedata!



    You must be registered for see links
    The product of 5 hours of gaming...



    As of 5.0-775, Dolphin now attempts to shut down games properly. This means that Dolphin will go through the necessary steps to gracefully shutting down Wii software. This fixes issues in games that flush savedata on shutdown and makes it so games will properly fade out when closing the game window.

    Do note: if for some reason gracefully shutting down does fail, attempting to stop/close the game twice will unplug the software, mimicking the old behavior. There are currently some games that don't work with graceful shutdown due to various deficiencies in Dolphin's IOS emulation.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Two years ago, flacs You must be registered for see links to completely remove the old Wii Remote support and use a unified HIDAPI backend for handling Wii Remotes. Not only would this have nicely simplified Dolphin's code, but it would have brought support for the You must be registered for see links to Linux. Unfortunately, the Windows implementation of hid_write() was incompatible with Wii Remotes ending that dream.

    You must be registered for see links picked this up nearly two years after the original backend was written. Instead of trying to replace all other Real Wii Remote implementations, he decided to instead add another one. While it added additional code complexity, the HIDAPI backend did increase compatibility of Wii Remotes on Linux when not using passthrough mode. This gives DolphinBar support to Linux and FreeBSD (the first time FreeBSD has had the ability to connect real Wii Remotes!) and replaces the old macOS implementation of HIDAPI.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links

    [​IMG]

    This small feature is one of the most persistently requested features of all time! With the typical Emulated Wii Remote setup with the pointer mapped to a joystick, it works exactly as a joystick should: the center is center, press it all the way to the right for the pointer to go all the way to the right, and then release and the pointer immediately returns to the center. This is fine of course, but this is very very different from how the pointer works with a Wii Remote and sensor bar, making fine control very difficult.

    This change addresses that, by adding an option to make joystick pointer movements relative: by moving the joystick, you are moving the pointer, but when you release the joystick, the pointer stays in place. You can increase or decrease its sensitivity as well, by right clicking each of the pointer IR directions and adjusting the input range. All in all, this is a HUGE step forward for controlling a pointer with a joystick!



    You must be registered for see links by You must be registered for see linksYou must be registered for see links

    You must be registered for see links

    This is one of those changes that we expected to do something but really came out of nowhere with just how big of a difference it made. Essentially it's exposed the limitations of Dolphin's emulated Wii Bluetooth emulation as fairly limited and buggy while at the same time proving that many Bluetooth adapters are capable of handling Wii Remotes when not hampered by Bluetooth stack limitations.

    Bluetooth Passthrough mode is taking a hammer to all of our Wii Remote issues and saying, "We're not going to emulate a Bluetooth adapter," and instead just hand the game one directly. If you have a good enough Bluetooth adapter, it's very possible to get identical Wii Remote performance as console. In our feature article on it, there was an example showing a real Wii Bluetooth adapter hooked up to a PC and used in Dolphin!

    There's no need to panic if you don't have a compatible adapter or don't want to use this feature. Emulated Bluetooth (the former Real Wii Remote emulation method,) is not going anywhere and should be easier to improve now that there is a another method with better results. For a full review on what Bluetooth Passthrough is and its limitations, check out our You must be registered for see links



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    While we have a dedicated menu for netplay, it can be a bit clunky and unneeded if you just want to host a game. In order to streamline things, you can now simply right click a game in the gamelist and host a netplay session from there.



    You must be registered for see links



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    With HiDPI screens becoming more and more common, Dolphin has had to adapt its ancient wxWidgets UI for a changing landscape. While the team does have plans to move on from it eventually, this is the main UI for now and it needs maintenance. In terms of HiDPI, You must be registered for see links stepped up big with a mammoth change adding HiDPI support that works on Windows, Linux and Mac. If you have a HiDPI screen, this should fix various issues with text boxes being too small, numbers not showing up, misaligned menus in the control menu and much, much, much more!



    You must be registered for see links
    That doesn't look quite right...
    You must be registered for see links
    Much better.




    As an added bonus, EmptyChaos also fixed a few UI segfaults and memory leaks spotted along the way.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Most of the changes in this are very minor, so we're going to rapidfire through them.

    • Vsync is now disabled when the framelimiter is disabled. Fixes issues with using hotkeys to disable the framelimiter.
    • Various Texture Cache issues resolved
    • Add support for Destination Alpha + LogicOP case for Kirby's Return to Dreamland.
    • Fix various memory leaks

    Though not directly related to these changes, 5.0-985 also fixed a bug in Vulkan with Paletted EFB Copies. This fixes overbloom issues in You must be registered for see links and You must be registered for see links along with other titles.



    You must be registered for see links
    Aghh! It burns! It burns us!
    You must be registered for see links
    They do not see what lies ahead, when Sun has faded and Moon is dead.




    With these additions the Vulkan backend is maturing nicely. Once it has XFB support, we'll have to start considering whether to remove the experimental tag on it!



    You must be registered for see links, You must be registered for see links, You must be registered for see links, You must be registered for see links, and more - Android UI Improvements: the Sequel by You must be registered for see linksYou must be registered for see links


    Working on Android Dolphin has gotten a lot easier recently; you can now build Android APKs from Windows. This makes it easier for developers to make changes; and hopefully will result in a much smoother time developing new features for Android. For now, though, two mainstays of Dolphin Android UI, Sigmabeta and SeannyM return to fix up quite a few UI problems that've cropped up!

    Some of the highlights include changing to the light theme by default, which makes it a bit easier to see text, buttons and other UI elements. Don't worry if you preferred the dark theme; it's still there and you can switch to it at will. For Wii games, the Classic Controller is now available for use with on-screen buttons, allowing games like You must be registered for see links and You must be registered for see links to use their best control schemes! While performance may not be there yet, at least the controls are waiting!



    You must be registered for see links



    The Android (and Shield Android TV) UI uses screenshots from the game within its UI so you can differentiate games more easily. Unfortunately, that somehow got broken and no one noticed. One of the issues with developing for Android at this point is that there isn't as big of a user pool for Dolphin yet; it requires insane hardware, the Android version isn't as complete in spots, and little bugs like this tend to slip through. It's fixed now, but don't be surprised if little Android specific problems sneak in here and there.

    Last but not least, Dolphin no longer crashes when going above the root folder! This means you can finally load games off of SD card properly. Hopefully, continued development on the Android version of Dolphin and the ever increasing performance of phones will make the portable GameCube and Wii dream realized sooner than later!



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Despite the innocuous name, this is actually a huge change that can potentially affect the pixel accuracy of every game.



    The IssueYou must be registered for see links


    The issue was discovered in You must be registered for see links for GameCube. For some reason, in the hardware backends the game would render incredibly dark most of the time. After years of the bug existing, testers finally narrowed it down to only being dark when character models are being rendered. That led Armada to investigating further, eventually finding out it wasn't the characters themselves causing the darkening, but their shadows.



    You must be registered for see links
    You can just see Johnny (a character in the show) on the bottom of the screen. Him being there causes the darkening.
    You must be registered for see links
    Looking far enough above so he gets culled causes the colors to return to normal.




    The technique this game uses to render shadows is known as You must be registered for see links, which was used a lot of games at the time. The trick behind this technique is to render an extra set of "shadow volumes" for each of the shaded character models and track exactly where these volumes intersect with the ground and other objects. This information is used to generate a "stencil" which serves as a sort of cut-out mask that can later be used to darken the spots that are covered by the shadows.

    Normally the stencil is stored in a Stencil Buffer, but the GameCube doesn't have one, so the developers needed to find another way to store the stencil. They ended up with a creative solution: store the stencil in the alpha channel of the rendered frame which is normally used to store transparency information. This explains why the entire screen is dark: something went wrong with storing the stencil in the alpha channel, causing the cut-out mask to cover the entire screen. Thus the game thinks everything is in the shadow and darkens every pixel on the screen.



    You must be registered for see links
    A shot of the "stencil buffer" from MisEdventures.



    So what went wrong with storing the stencil in the alpha channel? Well, it turns out that on the GameCube you don't get the extra alpha channel for free. The alpha channel is part of the framebuffer (EFB) together with the red, green and blue color channels (RGB) and the GameCube only has 24-bit per pixel in the framebuffer. So to use the full 24-bit color range of your monitor it has to use everything for the RGB color channels. When you want to enable the alpha channel it has to make room for that by only assigning 6 bits to each color channel, which leaves another 6 bits free for the alpha channel. Dolphin on the other hand actually has 32-bit per pixel in the framebuffer, so it can use 24-bit colors and still have 8-bit left for the alpha channel.

    But using 8-bit precision when the game only expects 6-bit will result in rounding errors at some point and it turns out that assumption finally broke something with this game. Despite being somewhat maligned, Dolphin's software renderer came into incredible use with this issue because it rendered everything correctly. Since the software backend was written to be as accurate as possible it was already using 6-bit for each channel in the framebuffer. Being able to compare the broken implementation to a working one proved that we finally found the problem.



    Crafting a SolutionYou must be registered for see links


    The solution was very straightforward, just use 6-bits of precision for each channel as the game expects. However considering that people have come to enjoy Dolphin for its ability to enhance the games, losing color precision would make things look worse in some cases. The increase in banding on skyboxes was immediately noticeable in early testing. Some dithering was added to reduce the banding, which the GameCube also supports, but it still wasn't as smooth as 24-bit color.



    You must be registered for see links
    Reduced color accuracy has pretty obvious banding.
    You must be registered for see links
    24-bit color presents the sky in all its glorious- ...um, brown.




    Armada added a great compromise though: only throw away the 2 bits when writing the alpha channel to the framebuffer. This way we can have an accurate alpha channel while displaying full 24-bit colors!



    You must be registered for see links
    No no, "everything is brown and sickly" isn't the bug, it's supposed to look like that. It's too dark.
    You must be registered for see links
    Now we can get the best of both worlds. Proper lighting and a smattering of buttered toast!




    Most of the transparency effects are also still done with 8-bit alpha, because only the alpha stored in the framebuffer needs 6-bit accuracy. So only effects using the alpha value in the framebuffer will suffer from reduced alpha channel accuracy.



    Aftermath and ObservationsYou must be registered for see links


    During the testing and after the merge of this change, two other games were discovered to rely on 6-bit alpha channel accuracy - You must be registered for see links, and the You must be registered for see links. This fixes the blue fog in Fatal Frame IV and incorrect bars on the screen in Phoenix Wright.



    You must be registered for see links
    This is what a scanline shader looks like, right? No?
    You must be registered for see links
    The blending finally works properly, with the lines only showing on the correct elements.




    Fun fact: while looking into Phoenix Wright, it was discovered that the Wiiware releases are emulating the DS releases to at least some degree. If you look into the graphics pipeline, you can see how the frame is constructed from an extra tall framebuffer.



    You must be registered for see links
    Oh now what does that look like?



    The more notable thing is that certain games were readily aware of the GameCube's limited color palette and had textures designed around it. Namely, we discovered some textures in You must be registered for see links that can look better in spots with the reduced color accuracy.



    You must be registered for see links
    The walls look splotchy in Dolphin when displaying in RGB8.
    You must be registered for see links
    Being designed for RGBA6 and dithering, Wind Waker's textures often look better and less splotchy with Force 24-bit Color disabled.




    As such, if users want to use the color accuracy of the GameCube and Wii, you can now go into the Graphics Settings/Enhancements menu and disable "Force 24-bit Color". As noted, the alpha accuracy has been fixed in both modes, so this is not needed for fixing the aforementioned games that had issues previously. This is only for user preference.



    Last Month's Contributors...You must be registered for see links


    Special thanks to You must be registered for see links that incremented Dolphin from You must be registered for see links through to You must be registered for see links!

    You must be registered for see links
     
  7. MaJoR

    MaJoR Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    The biggest news of the month regarding Wii emulation has nothing to do with Dolphin. The vehicle for many of our hardware tests and much, much more, The Homebrew Channel, has gone open source. In its heyday, it was stuffed to the brim with anti-reverse engineering code to prevent nefarious entities from selling the free program. Unfortunately, some of those tricks were also designed to prevent Dolphin from running it. This isn't due to a dislike of Dolphin; in recent years, we've even been tipped off to what we'd need to do to get past the anti-Dolphin checks.


    On the 22nd of November, Marcan of Hackmii.com released the Homebrew Channel as an You must be registered for see links, removed the anti-emulation hooks, and fixed a few bugs in Dolphin so that it could run properly! Nearly a decade after its inception, the homebrew channel is finally emulated! Admittedly, it has very little use for Dolphin, but, it is extremely cool to have. Some packed Wii homebrew elfs (such as Not64, openTTD) will only run in Dolphin from the homebrew channel currently. This is due to Dolphin being unable to detect them as Wii homebrew.



    Homebrew Channel Showcase



    On the topic of actual features being added to Dolphin, we've been working on some pretty fun features that just aren't quite here yet. But, still, here's a teaser of what's almost here!



    You must be registered for see links
    Much like in Wind Waker, this tester was on his second quest and thus unlocked the Legendary Pajamas.



    But, we all know people don't care about games working, they care about games crashing! Which is why we have even more You must be registered for see links shenanigans. This time, PPLToast sends us footage of Dolphin running the game in debug mode and tests out some known crashes.



    Twilight Princess Debug Mode Test



    One more thing of importance: If you are running Linux and have a Sandy Bridge, Ivy Bridge, Haswell, or Broadwell CPU, you may be having some weird performance issues with Dolphin. There's a bug in glibc absolutely decimating JIT performance. You must be registered for see links, but, it may be a while until it's distributed around. This loss of performance is most noticed during FMVs, where even the intro to You must be registered for see links will drop to less than 30 FPS on an Ivy Bridge CPU, but could potentially affect other games in strange ways. Users on Windows and macOS are not affected by this issue and do not need to worry.

    With that out of the way, let's finally get to this month's notable changes!



    Notable ChangesYou must be registered for see links




    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    While it was originally planned to wait for Hybrid XFB to wire up Vulkan to the eXternal FrameBuffer, it turns out that feature is taking quite a bit longer than anticipated. Thus, in his latest block of cleanups, You must be registered for see links decided to plug Vulkan into the existing XFB code. It was a relatively simple task, and more or less makes Vulkan feature complete. This means that Vulkan can properly run games that require Virtual or Real XFB, such as You must be registered for see links.

    In terms of overall quality, the Vulkan backend is shaping up nicely. Unlike D3D12, which is still plagued by a lot of instabilities, Vulkan seems to run well on any of the cards that support it. That said, it's not going to revolutionize Dolphin; its merely a bit faster than the standard D3D11 and OpenGL backends outside of a few rare cases, like The Legend of Zelda: Twilight Princess. While OpenGL remains the most accurate backend, Vulkan brings most of the performance of D3D12 without the instabilities in its current form.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    In order to make the highest quality video dumps from within Dolphin, users will want to use the built-in framedump features. Regardless of actual performance, users can record full-speed videos at any resolution to get jawdropping footage from their favorite games!

    But, one of the problems with capturing footage with Dolphin's framedump feature is that it was very slow. Even at lower resolutions, you'd fall into single digit framerates during busy scenes while trying to record. In order to mitigate this, You must be registered for see links has revamped framedumping to be a lot faster. On a testing machine (Core i5-3570K,) up to 2x Internal Resolution can be recorded without performance penalties! At 3x IR (1080p) the internal framedumping can still run at around half speed. Considering it would drop to single digit framerates at even 2x IR before, this is a huge quality of life upgrade.

    Hopefully more users will be able to record high quality footage of their favorite titles without having their patience tested with terrible performance.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    macOS tends to get the short end of the stick in development. It has less users, thus less error reports, and fewer developers than Windows and Linux, meaning that when an error report is made it takes longer to fix. A very boring cleanup change, You must be registered for see links, turned out to be quite a difference maker for macOS users!



    You must be registered for see links
    Whoops.



    Admittedly this was not the end of the world, as the toolbar is technically a series of shortcuts to the options in the primary UI: the traditional file menu. Thankfully, this one was actually caught and fixed comparatively fast compared to most Mac centric bugs.



    You must be registered for see links
    All better!



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    In You must be registered for see links, the new Android 5.0 UI became the only Android phone UI with the removal of the original Android UI You must be registered for see links unenthusiastically slapped together a couple years before. Considering how Android devices are barely fast enough to run games now, imagine being a developer several years ago working on the Android builds. Playability and useability wouldn't be your first concerns.

    But, there are people who use Dolphin's Android builds, and some very high end devices can handle Dolphin in some situations. Now it's a continuing challenge to make sure everything is put together so that it can provide as high of a quality experience as possible considering the differences and limitations. While performance is going to be a concern for the foreseeable future, users shouldn't be forced to bounce around builds just to configure their gamepads!



    You must be registered for see links
    When "just use the old version" changes from "use last week's" to "use last year's", something has gone wrong.



    Here we are, a year and a half later, and SeannyM has taken up the task of restoring this important feature! SeannyM put in a great deal of work restoring the button configuration UI, bringing it up to modern Android spec and giving it a good cleaning. Now Android users can configure their gamepads without using old versions and other silly workarounds.



    You must be registered for see links
    Functionality!



    Note that Android TV just has a different game list, and uses the phone UI for the settings and configuration. As such, this fixes button configuration on Android TV as well.

    In the future we hope to keep closer tabs on the Android GUI in the future. After all, it doesn't matter how good the emulator is if no one can use it.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    We all hate shader generation stutters, so when something goes badly in regard to our current defenses against shader generation stutter, steps have to be taken to fix it.

    With Vulkan, especially on the AMD graphics drivers, Dolphin's shader cache was not working as expected. Even when the shaders were already cached, the games would still stutter on those same shaders. This is because nothing was being written to the pipeline cache! The shader cache was actually having no effect on it at all!

    A longstanding idea to expand the shader cache has been to store the UIDs instead. Think of these as the the instructions we get from the game to generate the shaders. Instead of generating the resulting shaders, we cache the instructions and then generate the shaders based upon them. This allows a lot more freedom with shaders; we don't have to rely on drivers supporting a shader cache even to avoid stuttering! If macOS actually had Vulkan support, it'd be the first time that macOS users would actually be able to use a shadercache! But, alas...

    On the brightside, Shader UID caching has a lot a bonuses. UIDs are a lot more flexible in terms of usage. They aren't tied to a single graphics card or their drivers, meaning cached UIDs can be used on any computer. While Dolphin will currently invalidate UIDs on new builds, this is not necessary and with the proper infrastructure they will only be invalidated on actual shader generation changes. This would mean shaders could be build for hundreds, if not thousands of builds!

    The downside? The shaders have to be generated from the UID on gameboot; which can take several seconds. This means you will be waiting a bit longer for your games to boot. This can be reduced with multi-threading; but, again this feature is very new and a lot of the bells and whistles haven't been finished yet.

    If people end up liking this a lot more than our current way of storing generated shaders, it can very easily be hooked up to OpenGL and D3D11/12 as well! In fact, if all backends used this method of shader generation, playing a game on one backend would generate UIDs that would work on every other backend. So, if you were playing a game on D3D, you could switch to OpenGL and still have your cached shaders!

    Is this something everyone wants? Or do you prefer not having a startup cost to shader generation?



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Once again we return to the topic of screenshots and framedumping. This is something we've wanted for a long time, as taking high quality screenshots can be a pain in the butt!

    Dolphin has a lot of dumb design decisions within it. This is a fact we cannot deny, and by far one of the most annoying ones for every single Progress Report was that the size of the window was what determined the resolution of video dumps and screenshots. Due to the desktop window manager in Windows, this meant that on a single 1080p monitor, you were limited to dumping images at 1920x1080; it would refuse to let the window get any bigger. Of course you could trick it if you had multiple monitors by exploiting the fact that Windows wants all monitors to fit within a virtual rectangle, and you could use the space outside of your physical monitors in this virtual space. But it was quite the hassle, and only viable if you had an absurd number of displays.



    You must be registered for see links
    Now where did that mouse cursor go...



    This rewrite eschews that ancient behavior for something a lot more logical. Screenshot and video dump resolutions are now based on the internal resolution that you are running the game at. This actually allows for some fairly jawdropping screenshots without any fideling with the desktop resolution!



    [​IMG]
    WARNING, the fullsize image is 23164x18480 (35x native) and can easily overload browers. If you dare, click You must be registered for see links to view it in full size.



    [​IMG]
    WARNING, the fullsize image is 29929x16368 (31x native) and can easily overload browers. If you dare, click You must be registered for see links to view it in full size.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Dolphin's WXWidgets GUI has come a long way. While it's been rather maligned by users and developers alike, it remains the most complete UI for Dolphin. One area where it really felt subpar was input configuration, though. This became especially apparent when adding the new hotkey system that could put hotkeys onto controllers alongside the keyboard/mouse, instead of it replacing the old system it was added alongside it. What followed was regressions, complaints, confusion and much more while the new system was picked apart. The resulting hotkey configuration screen... well...



    You must be registered for see links
    Oh my...



    You must be registered for see links took on the task of managing of all of this bloat and organizing it all cleanly. This rewrite attempts to make every window regarding input easier to use by grouping particular hotkeys and inputs into smaller, more logical groups.



    You must be registered for see links
    MUCH better.



    Last Month's Contributors...You must be registered for see links


    Special thanks to You must be registered for see links that incremented Dolphin from You must be registered for see links through to You must be registered for see links!

    You must be registered for see links
     
  8. JMC47

    JMC47 Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    We have celebrated the 15th anniversary of the GameCube and the 10th anniversary of the Wii in the last few months. As the Wii's successor, and the brand lineage, has been discontinued in the run-up to the release of the Switch, it is a time for reflection. But, this doesn't mean an end for the GameCube and Wii; if anything, it's a new beginning.

    This is when emulation and preservation becomes even more important. How many titles in previous generations would have been lost or forgotten if not for emulation? How many of your favorite games were first experienced in an emulator? With Nintendo's NES Classic and Virtual Console lines, it's very likely that the next generation of gamers are going to be more aware of emulation than ever. Favorite games and experiences are not only going to be passed from friend to friend, but across generations. And we here are going to do our best to make sure that not only are those popular games awaiting, but the entire library of highs and lows, knowns and unknowns.

    On the note of software that most people probably haven't experienced, we decided to take a look at one of Nintendo's more interesting pack-in titles, You must be registered for see links. Featuring emulation software for both the NES and N64 Zelda games (With A Link to the Past omitted only because they were trying to sell the Game Boy Player,) and a demo of You must be registered for see links, it's one of the more sought after GameCube games.



    The Legend of Zelda: Collector's Edition - A Quick Retrospective



    With all of that out of the way, we hope you enjoy this month's notable changes!



    Notable ChangesYou must be registered for see links




    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    This one is fairly important to those who want to use GameCube Microphone emulation alongside Native GameCube Controller Support. It's also important to anyone who likes logical things that make sense. Dolphin doesn't handle exceptions very well; and the GameCube Microphone has one pretty big exception to it. It's a memory card device... with a button on it. Because it has a button on it, so, Dolphin has to let you configure how to hit that button. Clearly the logical place to put the configuration is... the GameCube Controller Configuration Page!!!



    You must be registered for see links



    If that wasn't enough, there is even more insanity to be found. The Microphone could be plugged into Slot A or Slot B, with some games requiring it to be in Slot B. You must be registered for see links and You must be registered for see links are probably the most commonly played of the Microphone games and use Slot B. A common complaint from users is the Microphone doesn't work... because they were configuring the microphone button on Player 1's configuration page. If you wanted to use the Microphone in Slot B, you'd have to configure Controller 2's microphone button. Even if that controller isn't plugged in.

    While this may seem bad already, it still gets even worse than that. These menus are disabled when using Native GameCube Controller support, meaning you'd have to switch to a standard controller, configure the button, and then switch back to Native GameCube Controller. And that's assuming you already knew where the microphone configuration button was hiding.

    After years of deliberation, the team finally determined that there is in fact a better way to do this. The button is now configurable where you select the Microphone.



    You must be registered for see links
    A memory card slot accessory control placed where the memory cards go? Crazy!



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Sometimes, typos are the hardest bugs to find. You have this (theoretically) correct implementation that seems to do everything right, yet, the results are slightly off. So slightly off, that in most games the difference is extremely small. No one has reported that the fake-HDR glow is slightly too bright in You must be registered for see links. And why would they? The difference is so tiny that it's impossible to tell.



    You must be registered for see links
    Can you tell which is before and which is after?
    You must be registered for see links
    Without looking at the URLs, you cheater.




    Thankfully, we do have FifoCi for catching small differences, which is incredibly useful when trying to make things more and more accurate.



    You must be registered for see links
    The difference is hard to discern with the human eye, but FifoCi sees all.



    For someone to even look into a bug, sometimes the trick is figuring out something is wrong. Would be blog-writers actually reported a noticeable manifestation of this issue five years ago as one of their earlier contributions to the project. Fortune Street had a white mask in the middle of the screen that is fairly difficult to see. At the right moments, it could jump out though.



    You must be registered for see links
    The accursed white box, bane of testers for years.



    The reason why the bug is so much more noticeable than any of the other related issues is simple: there are ~20 invisible (or at least, should have been invisible,) objects stacked up in the middle of the screen! By having ~20 off-by-one errors stacked up on top of one another, a nearly invisible bug became visible! But why are they visible?

    At this point, FifoCI could tell us that the software renderer did not have this bug (though, in the original issue report it was noted to suffer from it.) This made things a lot easier, because now all we had to do was compare both implementations and see where the difference occurred. On the hardware backends, it turned out the alpha value was exactly one higher than on software renderer.

    Upon further investigation, the problem was located within the alpha combiner. A bias was being added in the hardware backends that was absent from the software renderer. While there is a field that controls whether this value is added or not, on the software renderer the behavior was different between color and alpha channels while the hardware backends used the same logic for both cases. This meant the bias was being added when it shouldn't be in this case, and not being added when it should be in others. When accounting for this behavior, this long time problem is finally fixed.



    You must be registered for see links
    And finally the puzzle is solved. The white box is no more.



    While Fortune Street is one of the only noticeable issues to the naked eye, there are a lot of games that will look very slightly different. The best chance for seeing something noticeable will be in titles relying on heavy use of glow and or bloom effects.


    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    We rely on users for accurate information regarding bugs. We don't always have access to the games or the time to play through to where a bug occurs. In the case of You must be registered for see links, a user reported strange texturing defects on the sides of certain vehicles. They all looked low resolution, and they showed screenshots from PCSX2 as a comparison to how the textures were supposed to look.



    You must be registered for see links
    Look at how much better PCSX2's version of the truck looks here!
    You must be registered for see links
    This very much looks like an emulator bug in Dolphin.




    The screenshots do show that the textures look way off in Dolphin, but to be sure, we asked the user to get screenshots from console. While we can't speculate on why, the user obfuscated the fact they were using PCSX2 for screenshots by switching it to 4:3 mode and lowering the internal resolution. At the time that was enough to fool us, and was only discovered a few weeks ago that they were indeed screenshots from PCSX2 due to its own issues with the game in the revision they were using.

    And thus, this bug as become one of the more notable "unsolved GPU bugs" among Dolphin developers, and many man hours have been spent investigating it. Even a trusted tester made a mistake when testing it on console by getting screenshots of a different truck that had proper texturing. He eventually atoned for the mistake by retesting things and figuring out that the truck indeed was broken on console! And, thanks to sharp eyes, realized that there was something else that required attention.



    You must be registered for see links
    The textures look terrible on the vehicle on emulator...
    You must be registered for see links
    The textures also look terrible on console. But they are different, which means Dolphin was doing something wrong!




    So what is going on now? Burnout 2 is using a common texture format referred to as "CMPR". It is a block texture compression format which is very similar to the DXT1/BC1 formats used on PC GPUs. In this format, groups of 4x4 texels share a 4-entry lookup table, and each texel uses a 2-bit index into this table. Each texture block contains two colors, in RGB565 format. The first two colors in the lookup table are the static colors without any modification. The third and fourth change value depending on whether the first color is numerically greater than the second:



    if (color1 > color2)
    color3 = color1 + (color2 - color1) / 3, opaque
    color4 = color2 - (color1 - color2) / 3, opaque
    else
    color3 = average(color1, color2), opaque
    color4 = color2, transparent (this is different to the PC, where it is transparent black)



    The texels that were exhibiting the issue used color4, so the problem was likely within this calculation. Changing color4 to use average(color1, color2) as well, but setting the alpha channel to zero (making it transparent) makes the texture look a lot nicer.

    While it doesn't make the broken textures look much better in Burnout 2, they do match console. And fixing this accuracy issue did bring us some surprising benefits as well! A lot of textures that used alpha cutout textures look a lot better around their edges.



    You must be registered for see links
    Oh wow, could that be chlorophytum comosum?
    You must be registered for see links
    Nope, just an alpha glitch.




    While You must be registered for see links shows us an edge case where certain textures look slightly off, nearly every texture in You must be registered for see links and You must be registered for see links is changed to a degree. You don't even have to look any further than the main menu for issues.



    You must be registered for see links
    The Rogue Squadron text really looks nasty.
    You must be registered for see links
    Fixed. There are still some compression artifacts which can't be helped, but it looks much better.




    Choosing a ship, flying around in-game and even the main menu all had defects thanks to this bug. Despite this, there weren't any bug reports about the game's texturing being wrong. It just goes to show you how many little things are still wrong out there.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    A few months ago, testers began experimenting with EFB Copies to Ram Only mode in an effort to weed out bugs in the EFB Copies to Texture path. Historically, Dolphin has had two modes for storing Emulated Frame Buffer (EFB) copies - to Texture Only (GPU memory) and to Texture and Ram (GPU memory and system memory). The later is what we commonly refer to as "EFB Copies to RAM."

    EFB Copies to Ram Only should provide none of the benefits of the hybrid path while adding some extra downsides, so it is not accessible to users. Testers though were interested in using this mode to see if there were any bugs in the EFB Copies to Texture path. Poking around with the feature, testers noticed a few longstanding issues were fixed in that mode. Some minor overbloom issues in You must be registered for see links aside, the biggest difference was in Metroid Prime 3. The colors were completely different in every codepath, even Software!



    You must be registered for see links
    EFB to Texture/Hybrid, what all players saw. It looks weirdly warm and splotchy.

    You must be registered for see links
    Software. It is very close here, but a bit too green.

    You must be registered for see links
    EFB Copies to Ram Only, a mode only available by modifying the source code.




    Every path was wrong except EFB Copies to Ram Only! After closely examining console screen captures, it was determined that software renderer wasn't blue enough while the EFB Copy to Texture/Hybrid path was losing precision. Because we had a path that matched console, although normally locked away, it was fairly simple to narrow down the culprit. The shader system uses floating point math, and each codepath had a different implementation!

    But wait, our long time readers say, didn't Dolphin move from You must be registered for see links to match the GameCube and Wii, becoming much more accurate in the process? While that is true, the big conflict of the time was that added accuracy would be a huge performance cost. Thus, a number of low-risk demanding paths were left in floating point to preserve as much performance as possible.

    By figuring out where all of the code-paths differed, and checking with console, Stenzek was able to determine that the EFB to Ram Only codepath was indeed visually correct, and changed all of the other codepaths to that implementation. Thanks to Stenzek's efforts, the bug is fixed on all codepaths!



    You must be registered for see links
    EFB to Texture/Hybrid. As cool as a spaceship should be!

    You must be registered for see links
    Software. No more green machine.

    You must be registered for see links
    Console. Slight differences via capture make it harder to compare than you might think.




    This also fixes discoloration issues in other games. In case you've forgotten, any change to anything in Dolphin is likely to affect Rogue Squadron 2/3, and this is yet again no exception. Certain textures, reflections and shadows were returning slightly incorrect colors due to this bug. Though it's really hard to tell, nothing gets past FifoCi!



    You must be registered for see links



    It should be noted that this is likely a temporary fix. While this is working in every case we've thrown at it, it is impossible to make a floating point value exactly match an integer value. Eventually, all of the remaining floating point math will need to be changed to integers.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    As shown at the beginning of the progress report, Nintendo TGC files are a special disc format stored on GameCube Demo Discs. Dolphin already could run the demo discs, which would launch a loader that could go through and launch the discs, but, now you can extract those TGC files and load them right into Dolphin no problem.

    For the most part, this just allows you to bypass the demo disc loader, but in some cases limitations on the demos are imposed by the loader itself!! So, in the case of Wind Waker's demo on The Legend of Zelda: Collector's Edition has the twenty minute time limit imposed by the loader! You can explore the full potential of the demo to your heart's content without cheat codes.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Metroid Prime is one of those titles that seems to keep popping up here with depth issues. For years, the scan-visor was rendering slightly wrong due to clipping issues that Armada finally squashed a few months ago. Then, Armada brought forth depth range handling in the vertex shader to correctly handle depth calculation in scenarios with oversized depth ranges. Doing that fixed depth clipping issues in some games, but, in You must be registered for see links it actually caused some regressions, namely in the mini-map!



    You must be registered for see links
    No one likes Z-fighting.​



    The bad thing about handling the depth range in the vertex shader is that while Dolphin gains the ability to handle large depth ranges, we then lose precision with small depth ranges. So, Armada has moved yet again to try and fix this issue by only handling the depth range in the vertex shader when the game is using an oversized depth range. This restores Metroid Prime's minimap without breaking anything else. Hopefully. So finally, Metroid Prime (and every other game,) should be working properly again on all backends and hardware.



    Last Month's Contributors...You must be registered for see links


    Special thanks to You must be registered for see links that incremented Dolphin from You must be registered for see links through to You must be registered for see links!

    You must be registered for see links
     
  9. MayImilae

    MayImilae Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    Sometimes, it's easy to forget how much work there is left to do on a refined emulator. While the rush of getting a new game to boot or discovering a crazy feature hidden within an obscure gem never gets old, those moments do tend to get further and further apart as accuracy increases. As if to defy fate itself, excitement reigned over the month of January as a plethora of ancient bugs were fixed and many unbootable titles finally saw their day of reckoning come to be!

    Among the new recruits are the final Virtual Console game, a massive Wii MMO that installs itself to USB, two games where we're almost certain the developers purposefully put code in to defeat Dolphin, and two channels developed by the remnants of Factor 5.



    You must be registered for see links
    You must be registered for see links
    You must be registered for see links

    You must be registered for see links
    You must be registered for see links
    You must be registered for see links




    This is a massive Progress Report, so buckle up and enjoy this month's Notable Changes.



    Notable ChangesYou must be registered for see links




    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    This is a painfully simple change that didn't cause as many issues as one would imagine. By incorrectly putting the origin for point textures at the top left instead of the bottom left, point textures were drawing upside down. The only reason this isn't more noticeable in games is because most point textures don't need any particular orientation to look okay. The fires in You must be registered for see links are an example of this; they've been rendering upside down all along, but even after comparing before and after screenshots, it's basically impossible to see a difference without fifoci!



    You must be registered for see links
    The fire effects are all drawn upside down, but they still look fine.
    You must be registered for see links
    Even knowing what's changed, it's hard to spot the difference!




    But, that wasn't a known bug. The game that used this for a non-trivial texture is actually You must be registered for see links. This game uses point textures for UI elements that look quite silly when flipped upside down.



    You must be registered for see links
    Sure, it's not correct, but it does have entertainment value at the very least.
    You must be registered for see links
    Unfortunately the fixed version is a lot less funny.




    As of this revision, all reported graphical issues in Mario Golf: Toadstool Tour are fixed! For a title that suffered from zfreeze issues, spiky vertices, line-width problems and more way back in Dolphin 4.0, it's come a long, long way.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    This addition is the result of a huge reverse engineering effort! Despite that, it isn't going to have much of an effect on the average user. So what does all of this work actually accomplish? It's the first step of many on Dolphin's path to being able to run You must be registered for see links and allows for its installation process to complete.

    [​IMG]

    You read that right, installation - Dragon Quest X is a still active MMO that actually saw release on the Wii. Unlike any other title released for Wii, it uses an included USB dongle to install itself off of two discs. Everything about Dragon Quest X is unique for the Wii; it even has its own IOS version; IOS59, which adds the WFS module. Up until last month, close to nothing was known about WFS and the service associated with it!

    You must be registered for see links once again put his reverse engineering skills to the test to document and understand the largest IOS module for the Wii. After buying the game brand new in a store while visiting Japan, instead of playing it, he wanted to unearth the secrets hidden inside.

    On the theme of being unique, Dragon Quest X appears to be the only true two disc Wii title. While other products did ship with two discs, each disc was its own separate game with its own GameID. Dragon Quest X instead uses two discs for installation, the extracted files taking up around 5 GB + patches. There's actually no reason why it couldn't have fit on a Dual-layer disc. Our only guess as to why it'd be a double disc game is that maybe it was cheaper, and since it is installing itself, there's no need to disc-swap after the initial installation, more or less erasing the biggest annoyance with multi-disc console games. But if two discs just wasn't enough, it also has three expansion packs on top of that, each sold as a separate game!

    But to install all of that to USB, it has its own file system known as WFS; which we can only assume means "Wii File System". In order to get Dragon Quest X to install, delroth had to implement enough of the file system so that it could write files to the USB successfully. Considering this is the largest single module and even contains encryption, this was no easy feat.

    The result of countless hours of work is that you can now go through the installation process of Dragon Quest X to a virtual USB drive in Dolphin! The installation takes roughtly 30 minutes on Wii and ~16 minutes in Dolphin with the default settings. If you're impatient though, you can disable the framelimiter and enable fast disc transfers to get the job done in about three to four minutes on a fast PC. Note, this does not require a real USB stick; it emulates a USB stick within Dolphin's Wii NAND.



    You must be registered for see links
    All of that work, and this is about as far as you'll get... for now.



    Remember: this is an initial implementation. Though the files are installed, the game can't actually read them yet! Installation doesn't finalize properly and the channel instantly crashes due to missing functionality. Why merge it if it's not done? Because it's such a huge change, there was a big potential for merge conflicts if it was left unmerged. It's not going to harm any of the other titles, so, merging it now just means that it's easier to workon in the future. Considering that Dragon Quest X for Wii is still active online and has a single player portion, it's definitely something we'd break a few rules to get done!



    Bonus Features!You must be registered for see links


    Because Dragon Quest X required some more IOS features to be implemented, some other games have gotten additional functionality. While the You must be registered for see links is no longer functional due to Nintendo pulling the plug on it, you can belatedly install it from Mario Kart Wii assuming you have a complete NAND. Other titles, such as Wii Fit, can install channels that are still functional and they will work as expected.

    Installing Wii System Updates + Channels in Dolphin



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Ever have Dolphin just randomly crash on you or do something weird without knowing why? Do you have the "reset" or "power" hotkey set to any of your commonly used keys?

    A tester accidentally left the reset hotkey on a key he hit quite often, and, it turns out Dolphin really didn't like if you tried to resetting before a game was booted. Without having a game to reset, Dolphin would suffer some memory corruption, and the game would usually crash on boot, though memory corruption can result in nearly anything.

    You must be registered for see links's genius solution to this is to actually check if a game is running before sending reset and power commands. Such a brilliant check was definitely not something we should have thought about a long time ago to protect from something like this.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    This is a simple change the adds functionality for specifying a Wii system language per-game. While this may not seem like a big deal, there are a lot of games that behave differently under various languages. You must be registered for see links's NTSC-J version has a half-complete english translation that shows up when launched while the system language is set to English. You must be registered for see links goes the other way and will refuse to boot at all if your system language is set to English.

    Instead of having to modify your global system language for these cases and more, you can now just set them per-game and not have to worry about it.

    For instructions, see the You must be registered for see links.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    For the past month, booto has quietly embarked on a journey to remove hardcoded IOS-HLE values from Dolphin. Why? Many of Dolphin's values are from pre-2010 and even then are incorrect anyway! The Wii's Internal Operating System (IOS) has updated itself dozens of times since Dolphin's Wii emulation debuted, and while they've changed, Dolphin's IOS-HLE has not. These tiny differences didn't make much of a difference in most games, but, at least three downloadable titles absolutely used the memory map to its absolute fullest.

    The focus was actually on You must be registered for see links. While it may not sound very interesting to get a Virtual Console game running in Dolphin, it was the only one known not to boot. Each region had its own way of failing: NTSC didn't boot at all, NTSC-J crashed on save-file creation, and PAL crashed on selecting a language. In the cases of the PAL and NTSC-J versions, if you imported a save from console you could at least get in-game, though it would crash whenever you saved.

    For additional help in figuring out what Majora's Mask was doing, leoetlino extracted the symbol map from Twilight Princess to use with Majora's Mask. These symbol maps, when included with a game, make reverse engineering much easier. With a full symbol map, you can actually see what developers called a function in memory, making it much easier to understand what they're trying to do.

    While not the most useful of the finds from the symbols, leoetlino was able to draw more log messages from games thanks to finding another logging function included in the symbols. He threw those symbols at Majora's Mask and...



    You must be registered for see links
    Nintendo: a family friendly company.



    This vulgar message is actually directly related to the issue, but, wasn't enough to solve anything. As such, they used their ultimate weapon: hardware testing. With his USB Gecko, JMC4789 was able to watch the Wii's memory while the game was running and gain valuable insight into what the game was doing differently. Leoetlino and booto instructed him on where to put memory breakpoints and that lead to the perhaps obvious conclusion that Dolphin's behavior was diverging as it setup the region in memory to store the savefile.

    Many of Dolphin's IOS-HLE values are based off of IOS9; which is the earliest IOS used in commercial titles. Over time, new IOSes were created which added new features, including big ones like USB 2.0 and WFS. Majora's Mask used IOS33; which was right after some of the memory regions were very slightly modified. On a bit of a hunch, they used a homebrew game launcher to force Majora's Mask to boot on IOS9 and managed to make the game hang the same way on console.

    From there, they knew for certain that Majora's Mask could work on Dolphin if IOS-HLE were more accurate. A hack to modify Dolphin's hardcoded values to that of a newer IOS would have been more than enough to fix it, but booto decided he wanted to end this once and for all.

    Over the course of one week, booto traversed through each and every IOS he could get his hands on to extract useful values and find differences. The change that Dolphin was failing on in this case was visible in plain sight; the MEM1_ARENA_END was set too small, and Majora's Mask just so happens to use the very end of MEM1 for its savefile. When the game realized there wasn't enough there, it tried to copy the savefile to 0x0, which, in simple terms, is very, very bad and causes bad things to happen.

    With this change, games will now use the real values from whatever IOS they'd load on console within Dolphin. This fixes Majora's Mask, regardless of its region and brings compatibility to both the You must be registered for see links and You must be registered for see links! Unfortunately, Dolphin's lack of support for some WiiConnect24 features prevents them from actually connecting to their online services. These changes are also hooked into ES_Launch, so these games can be booted from the You must be registered for see links as well if you so desire.



    You must be registered for see links
    With the GameCube version being buggy even on console, this is the best way to play Majora's Mask in Dolphin!



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    When it was first merged, one of the biggest sacrifices of using Bluetooth Passthrough was losing savestates. While it's not possible to make savestates work in every situation (we can't exactly savestate external hardware,) You must be registered for see links returned to work on Bluetooth Passthrough and get savestates working in as many situations as possible.

    As such, you can now use savestates in Bluetooth Passthrough under the following scenarios:



    You must be registered for see links



    This means that if you're playing a game like You must be registered for see links, it's easy enough to savestate before a boss battle and reload it to your heart's content, so long as you never disconnect the Wii Remote or close the game. If you do happen to close the game and still want to use the savestate, you can! Just disconnect any Wii Remotes before loading a bluetooth passthrough savestate and they're guaranteed to work.

    Note: Savestates created in emulated Bluetooth mode are still not compatible with Bluetooth passthrough mode because the emulated Bluetooth adapter data is part of those savestates.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    This feature is huge for people playing certain games. It allows Dolphin to detect idle loops it previously could not in certain games, including You must be registered for see links and You must be registered for see links.



    You must be registered for see links



    This huge performance boost is actually just the beginning for these titles; we're still emulating the instructions, meaning that when we actually idle-skip them directly, there will be a second big performance boost.

    The reason that branch following is such a huge help for these games is because their idle-loops can be combined into one JIT block. Combining instructions is one of the main advantages a JIT has over an interpreter, and in many scenes the idle loop can be well over half of the CPU time! The effect can be especially noticeable in games that are slow in light areas such as menus; because the idle-loop will be in much more use during those scenes. On that note, other games that could be affected by this that we don't mention are likely those that are slow in areas that you'd think would be fairly easy to emulate.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    This is a simple change that should be nice to people who like to use "Auto-Adjust Window Size" in the graphics settings. This setting allows you to set the Window Size to exactly the internal resolution you're using. It's a nice way to get precise window sizes, especially handy when doing recordings and other work.



    You must be registered for see links
    4:3 with black bars.
    You must be registered for see links
    16:9 with black bars.




    As you can see, while Dolphin would get the resolution of the game correct, it would not respect the aspect ratio of the game itself while setting the window size, resulting in a lot of black space around the edge of the window. You must be registered for see links returns to fix a friend's pet-peeve with the feature so that now the window size now takes into account the game's resolution.



    You must be registered for see links
    4:3 with correct window size.
    You must be registered for see links
    16:9 with correct window size




    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    The Disney Trio of Destruction are three titles that are special. While a lot of games have strange behaviors, difficult to emulate quirks, and other potential pitfalls, these three games are the only ones where we're almost certain they were purposefully targeting Dolphin with odd behaviors.

    While the original plan was to merge this change next month alongside a big article talking about the history of the games, their multiple levels of security, and why we believe they were targeting Dolphin rather than hacked Wiis with their anti-piracy, etc. Instead, it got merged by someone with an itchy trigger finger not even a few days ago. We'll have to get into the history of the Disney Trio of Destruction once all of that is prepared, but for now, let's talk about this change.



    You must be registered for see links
    With their sinister covers, we should have known these games were trouble.



    Firstly, this hack only affects two of the Disney Trio of Destruction: Disney's Cars 2 and Disney Infinity. The third, Toy Story 3, was older and had protection that was solved years ago by You must be registered for see links. The remaining two titles were thought to be impossible. We had placed our hopes in Dynamic BATs to finally fix Cars 2 and Disney Infinity, but it didn't. When that wasn't enough, interest waned and the games were left behind once again.

    You must be registered for see links did not give up on the games. Throughout the years, these games have been reverse-engineered to hell and back. We knew of this protection already, but, fixing didn't matter because we'd then just run into another layer of their security. But, because Dolphin has gotten so much more accurate, this hack is actually enough to get us in-game. So, what is this final layer of protection?

    While we'd love to take a whole article talking about how this is nefarious and specifically targets Dolphin's way of emulating the Wii CPU, Parlane merged it early so you don't get that quite yet. In basic terms, Disney Infinity and Cars 2 do a very specific amount of writes to lower MEM1, where a lot of really important data is stored. But, it writes just enough that the CPU doesn't flush it to MEM1; it remains in the CPU L1/L2 caches. It then tells the CPU, nevermind and invalidates the CPU cache. Thus, even on a hacked Wii this would do exactly nothing; it's specifically targeting a weakness in emulators.

    Emulating the CPU cache in Dolphin would likely slow-down Dolphin by a factor of ten or more. While we prefer not using hacks to "fix" games, we found it to be permissable in this case due to how specialized of an issue it is. Even if the L1/L2 caches are implemented in the future (which is definitely a possibility,) it will likely be something only used for testing, and thus this hack would remain so that people could actually play these two games. It's a compromise, one that no one is entirely happy with, but the game behavior necessitated it in this case.



    Cars 2 in Dolphin (4K)



    While we didn't know it at the time, it's worth noting that both Disney Infinity and Cars 2 require the You must be registered for see links change. Without it, the hack does not work, making these the second and third games to require the feature.

    We'll have more information on the Disney Trio of Destruction in an upcoming Feature article.

    Last Month's Contributors...You must be registered for see links


    Special thanks to You must be registered for see links that incremented Dolphin from You must be registered for see links through to You must be registered for see links!

    You must be registered for see links
     
  10. JMC47

    JMC47 Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    As most of you know, Dolphin was born a GameCube emulator. A lot of its core design and concepts are based around assumptions made that it would only be a GameCube emulator. And, as a GameCube Emulator, Dolphin performs admirably, with the ability to boot every single title and a large portion of the library having no major issues.

    But, Dolphin isn't just a GameCube Emulator. One of the more incredible things about its history is that it was modified into a Wii emulator around the time it went open source in 2008. While the core of the Wii is a supercharged GameCube, and things like CPU and GPU emulation were fairly easy to modify into working with only some minor details changing, there are a lot of quirks around it that have been problematic. Not only are there emulation challenges associated with the Wii that Dolphin side-stepped with some dirty hacks, it also struggled to add-on all of the new features of the Wii. For many years, The Wii Remote, GameCube controllers configuration, and GameCube controller settings were completely split apart because Dolphin's UI was not designed with more than one primary input method in mind!



    You must be registered for see links
    UI Design 101: More menus = better.
    You must be registered for see links
    Putting all of the options in one place looks better and is easier to use.




    In terms of actual emulation, the problems mostly come from the Wii's Starlet ARM coprocessor and everything it brings to the table. To give you an idea of how important Starlet and IOS (Internal Operating System) are on Dolphin, it controls features such as disc access, savegames, networking, USB, ES_Launch (aka, booting games,) and other features necessary for the Wii to function.

    Last month, we saw a lot of IOS-HLE improvements, resulting in a big uptick in compatibility. But with these accuracy improvements have come some hiccups and regressions as well. When we fixed You must be registered for see links by using proper, reversed engineered values for some important IOS related things, it brought out some regressions too.


    Our old IOS-HLE code was more based on guesses than on what the Wii actually did, resulting in a lot of random hard-coded values. When there are hacks on hacks, you can make most things work and this is fine. But, remove any one hack from the chain of hacks, and everything falls apart, which is why the Disc Channel was broken most of the month. On an ES_Launch from the Disc Channel, Dolphin was overwriting critical constants in low mem1. On a real Wii, only certain constants were written on IOS reload; not all of them. Hence, becoming more accurate, we accidentally went too far and were overwriting values when we shouldn't be writing anything at all in those spots!

    This is all part of becoming a better Wii emulator. There is going to be some pain, regressions, and breaks in the upcoming months as IOS-HLE is improved, but, the end result will be a higher compatibility emulator with less issues in many problematic titles. We ask users for patience, bug reports, and understanding going forward as we strive to make Wii emulation better from both accuracy and useability standpoints.

    As a little taste into some of the fun IOS problems we've run into, here's a game that actually uses IOS quirks as anti-piracy.



    Defeating Anti-Piracy with The Smurfs: Dance Party



    After that long intro, we hope you can all understand why we're doing what we're doing and hopefully justify some of the recent troubles. With that, let's get into our list of notable changes for February!



    Notable ChangesYou must be registered for see links




    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    When making an emulator, we are often faced with "what is best for the user" questions, and they are never really easy to answer... This oft-requested feature was one of those debates. When You must be registered for see links, GameINI controls were deliberately not included, out of fear that users would turn on the feature for a game and leave it on forever! Many games malfunction when set at too high of a CPU clock or too low, so, it was merely to try and protect users from themselves.

    Newcomer Kurausukun wanted this feature and did all the work making the decision easier. That, and that times have changed a bit since the original feature was merged. A ton of emulators have Emulated CPU clock override features now, and more users are aware of the dangers involved with using this feature. So, those of you wishing to set an emulated CPU Clock per-game can finally do so! This should make life easier for users needing extra performance in super strenuous titles or wanting to set a higher CPU clock for framerate benefits or even a 60 FPS hack.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    This is the big one: over 100 games made use of USB devices Dolphin didn't support prior to this change. Over 60 of them used a USB device that we didn't support as their primary control method. This USB Passthrough Support update opens up the ability to passthrough devices that use the oh0 (USB1.1) and VEN (USB2.0) interfaces, including the Logitech Microphone, Wii Speak, and Nintendo Camera!

    One particular blogger made a mistake of putting out a bounty for this feature many, many years ago:



    Whomever implements Wii Microphone support gets to select a song for me to sing. The video will be posted to the blog.
    JMC47​



    Unfortunately, it appears the day has finally come to pay up on this bounty.



    JMC47 fails at singing.



    But don't fall into the trap of thinking this change just added support for various devices; this was a massive undertaking that cleaned up quite a bit of IOS-HLE as well. It's really hard to state how massive this effort was over the past few months, so let's us look at the basics.

    At the very fundamental level, this change adds passthrough support for the Wii Speak, Logitech Microphone and Nintendo Camera. It also adds a built-in whitelist to prevent games/Dolphin from grabbing control of devices you don't want them to touch. Games like You must be registered for see links would see certain USB devices, try to see if it was an instrument and then promptly crash itself. The Whitelist only applies to what devices games can see. You don't need to use the whitelist for Bluetooth nor GameCube Adapter passthrough since Dolphin itself is interfacing with those devices.

    Because this is passthrough support and not support for emulated devices, you need the original device (or another device compatible with the original game on Wii) for the game to be able to use the device. If the Microphone did not work for the game on Wii, it won't work for the game on Dolphin. This change does make it much easier to add emulated devices in the future, so, don't be too surprised is emulated USB devices start showing up in the progress report over the next year or two!



    Other Important Changes Within This CommitYou must be registered for see links


    To use these USB devices on Windows, we use the UsbDk driver. This is a newer, more updated backend for LibUSB, but, unfortunately it can be a bit buggy at times too. When installed, it completely replaces the zadig guide on the wiki. UsbDk is preferrable when it works, but, because a multitude of users complained of issues (including potential blue-screens on Windows 7!) we've made it optional. If you're using the old WinUSB/LibUSBk drivers from Zadig, you will not be able to use these devices. This is not a fault of Dolphin, but, rather lack of isochronous transfer support in those drivers. When the You must be registered for see links is installed it will just work; there are no additional steps beyond that aside from the whitelist in Dolphin.

    If you're on Linux/Mac, your situation has not changed at all. Linux is also the only operating system to be able to use the Nintendo Camera; as a bug on Windows prevents us from interfacing with it properly.

    In terms of actual emulation, the amount of research on USB and how it evolved throughout Dolphin lead to a lot of other changes to Dolphin's IOS emulation. Games like You must be registered for see links, which rely on certain behaviors of certain IOSes, were not emulated in Dolphin before this effort was undertaken. So, while this may just seem like a change to add support for USB Devices, it has provided dozens of great changes toward more accurately emulating the Wii's IOS.

    Then again... maybe that anti-piracy wasn't meant to keep us out, but to keep Gargamel in...



    What lies beyond The Smurfs: Dance Party Anti-Piracy



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    This actual fix is very boring. It's the common "Emudev in 2008 hardcoded something to a value they shouldn't have," issue we've seen several times by now while working on IOS-HLE. The more interesting part is how this was solved, and that You must be registered for see links developers likely hardcoded the same value Dolphin did when making their game. Unfortunately for us, the games are never wrong.

    Simple fix: set file descriptor value to something that makes sense. The challenge, though, was finding out where Dolphin was going wrong with this near-impossible to debug issue.



    Debugging an issue with no leadsYou must be registered for see links


    Last month, you may remember us You must be registered for see links about how we fixed Majora's Mask in Dolphin along with a few other Wiiware titles by debugging on the Wii and finding differences in the boot process. With You must be registered for see links doing a similar thing to Zelda, we tried the same approach figuring the answer would make itself apparent like last time. Unfortunately, issues with either Gecko.net, or the nature of the problem made it impossible to trace in a similar manner. Booto also joined in to help, but, even with his expertise, no one was able to extract much useful from the game on hardware.

    Instead of giving up Leoetlino did something that many people have said is completely unreasonable: he implemented a hacky IOS-LLE based off of Marcan's old branch that could run Bootmii. This insane branch hooked Dolphin up to an ARM interpreter (skyeye) modified to act as the Starlet Coprocessor.

    This did not really work well, Skyeye as Starlet has a ton of issues that make it more or less unusable as Starlet on its own. But, with a few nifty hacks here and there, leoetlino was able to get it working enough to actually boot Yummy Yummy Cooking Jam!



    You must be registered for see links
    Behold, the final Wiiware game to launch in Dolphin in glorious standard definition graphics since it's all 2D.



    His IOS-LLE branch was very limited in what it could do, but, it was enough to confirm that this game's crash is 100% within IOS-HLE. At this point, all he had to do was compare IOS-LLE and IOS-HLE and see where they returned diffrerent results. This led him to the File Descriptor initial value, which was 0x0 on IOS-LLE, and 0x60000000 on IOS-HLE. Changing that allowed Yummy Yummy Cooking Jam to finally boot normally in Dolphin. According to our database, with this fix, every single (tested) Wiiware title can now at least boot in Dolphin!

    Quick Note: IOS-LLE in its current incarnation will never be merged to master. It's for testing purposes only. It's too hacky to be useful to users, and too hard to configure to be useful for most testers.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Another bug unearthed by the IOS-LLE branch was in You must be registered for see links. This little known game was broken way back in time, not in 5.0, not in 4.0, not in 3.5, but in the early 3.0 era of dev builds! Whenever You must be registered for see links (in this case, PokePark You must be registered for see links and You must be registered for see links,) breaks other titles, those are particularly tricky to fix, as fixing the regression is likely to break the other titles.

    Thankfully, with IOS-LLE already running the game correctly, all leoetlino had to do was figure out where IOS-HLE was going wrong.

    The game creates a save file. It will then read 2560 bytes from it, then immediately writes 16384 bytes to it. With IOS, the first read does not change the seek position at all, so the save data is written at offset 0, not 2560. With Dolphin, the read erroneously set the seek position to 2560, which caused the data to be written at the wrong location. Because it loaded a savefile with no weapons on the next level, the game was effectively softlocked, and totally uncompleteable.



    You must be registered for see links
    This cutscene seems to be missing something...
    You must be registered for see links
    Right, the shroom was missing his warhammer! ...made of a stick, spring, and bubblegum. This game is an odd one.




    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Wii Netplay in Dolphin is one of those features that have bounced around quite a bit. While it has great potential, Dolphin's netplay core was designed for GameCube Netplay and it really shows with just how difficult it is to use Wii games on netplay. But now, users get a little bit a boost in useability with this latest change: you can now use saves and save in Wii Netplay!

    One of the most stringest requirements of Wii Netplay in the early 4.0 era was that you needed identical NANDs for Wii Netplay to sometimes work. We decided that wasn't realistic and changed Dolphin to use a blank NAND in 5.0-xxxx. This meant that users wouldn't have to do anything; Dolphin would use an identical NAND no matter what!

    This change takes it a step further. While we're still using the Blank NAND, Dolphin will check for a savefile for the GameID you're loading on netplay on boot. If it sees one in your NAND, it will copy it to the Blank NAND! That way, even if your NANDs are completely different, as long as both users have the same savefile, they can play together without issues. When the netplay session ends, Dolphin will then save the game back to your Wii NAND. This allows for longform games like Tales of Symphonia: Dawn of the New World and Dokapon Kingdom to be played on Dolphin!

    Note that Dolphin currently does not handle any save transferring for Wii games; users are required to make sure each player has the savefile they want within their NAND (aka, whatever NAND Dolphin is using when you start netplay, if you have multiple Wii NANDs.)



    Wii Netplay with Saves



    We know a large sect of our users are more interested in You must be registered for see links, and use cheats instead of a savefile. For those users, the default behavior has not changed. These new features are all optional, and can be turned on or off within the host's netplay window before the game is booted.



    WarningYou must be registered for see links


    Games that require Wii Remotes are still incredibly difficult to set up. In the intro, we mentioned parts of Dolphin designed for GameCube, and Netplay was one of them. As such, the entire ability to use Wii Remotes on netplay is a hack with a bunch of duct-tape and glue holding it together. It's incredibly difficult to setup, even for senior developers on the project. If you absolutely must use Wii Remote Netplay, you may want to use a separate portable in install of Dolphin. Unlike GameCube Controllers, Player 1 configures Wii Remote 1 for themselves, Player 2 configures Wii Remote 2 for themselves. You must have the same number of Wii Remotes set to active. You must set values such as Battery to be the same on all Wii Remotes across all PCs. If the Wii Remotes disconnect at any point, you can crash the emulator.

    As shown in the video above, it is possible to get emulated Wii Remotes working on netplay. And once you've figured out every single quirk, it does work flawlessly, so it's more or less a matter of making setup easier.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Though the Wii is more or less an overclocked GameCube, it has a lot of differences that need to be accounted for before it can safely run GameCube games. MIOS is a special IOS that contains a modified You must be registered for see links; it more or less disables all of the Wii's new features, changes the CPU/GPU clocks back to where they would be on a GameCube and then launches the GameCube game. It also patches certain games, like The Wind Waker, to not crash on Wii.

    Now, before you say this is useless, it's actually not! Unlike the GameCube IPL, which is a pain in the butt to get, you can download MIOS from Nintendo legally currently using NUSDownloader or grab it off of almost any Wii disc! Why is MIOS required? MIOS support in Dolphin is actually an HLE/LLE Hybrid! While the Starlet part of MIOS is HLE'd, we LLE the PowerPC parts, such as running the GameCube IPL and the patches it applies to various GameCube games that don't run on Wii properly.



    Simple MIOS Demonstration



    You can retrieve MIOS legally from almost any Wii disc with an update partition or download it directly from NUS via NUSDownloader. If you put the MIOS WAD into the gamelist, you can then right click it and install it to your NAND. From that point on, you'll be able to load GameCube title from the system menu on that NAND.

    For (closer to) full functionality in the System Menu, we recommend you rip your full NAND off of your Wii and You must be registered for see links



    Patched GameCube Titles and Other QuirksYou must be registered for see links


    Dolphin supports the patched GameCube titles, which include Wind Waker, Smuggler's Run: Warzones, Tony Hawk's Pro Skater 3, Zelda: Collector's Edition, Pokemon Colosseum, Phantasy Star Online Episode I & II and likely others. These games do not behave any differently than when booted normally, though, Dolphin does successfully apply the patches.

    Dolphin also cannot currently load the default settings from the games when they are booted like this, so be sure to have Dolphin configured correctly before using this feature.



    You must be registered for see links by You must be registered for see links and You must be registered for see linksYou must be registered for see links

    [​IMG]

    This would normally be a headlining change of a progress report. This, and another addition in You must be registered for see links have brought unprecedented DVD timing accuracy to Dolphin. It's the most accurate model to a disc-drive we've seen in any emulator to date and times almost everything you could imagine to a high degree of accuracy.

    A big part of this change is DVD chunking; it's what fixed the last problematic games, including You must be registered for see links, You must be registered for see links, and the You must be registered for see links. Before, if a game read a large part of the disc, Dolphin would estimate how long the action would take on console before saying it was complete and then copy everything all at once. This wasn't good enough for these titles, and they crashed no matter how close the load-time was to console. Chunking changes it so that we now execute and copy the reads in 32KB "chunks" just like on console, which fixes the issues in those titles.

    Another big part of this change is that great care has been put into making the timings more accurate for everything. While this doesn't fix anything in particular, you should notice the load times matching up much closer to console. In some cases, it's faster! In You must be registered for see links, the initial load time drops by over a minute in Dolphin from ~120 seconds before to just over 44 seconds now, which matches up perfectly to a Wii console.

    As with any big change like this, there is a potential for regressions. Unfortunately, it seems Tool Assisted Speedruns are broken with this change because of determinism issues with savestates. This is especially problematic for us, as one of the ways we get our timing changes tested is by having the You must be registered for see links speedrunners find all the differences in Dolphin's timings.



    Last Month's Contributors...You must be registered for see links


    Special thanks to You must be registered for see links that incremented Dolphin from You must be registered for see links through to You must be registered for see links!

    You must be registered for see links
     
  11. JMC47

    JMC47 Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    As of version You must be registered for see links, Dolphin can do the unthinkable: you can now access the Wii Shop Channel from within the emulator.



    System Menu Improvements Featuring Wii Shop Channel Support!



    Dolphin can now download the free demos Nintendo made available on the system, as well as purchase Wiiware and Virtual Console games from the service. Because this feature is so new, it may take some time for the guides to get updated. You must be registered for see links will get you most of the way, but, you may also want confirm that you have the following:

    • Valid Console ID and keys.bin from that console.
    • Console country must be valid for that System Menu region.
    • You must be registered for see links - Old tool Cert tool was flawed, please go through the process again if you've done this in the past.
    • All IOSes and Updates. The System Menu's Online Updater can be used so long as the System Menu and its IOS are installed.
    • SSL Verification Enabled - This isn't necessary but you'll want it on if you're buying games. As of You must be registered for see links or newer, this is on by default. In older builds this can be enabled manually in dolphin.ini by using the option "SSLVerifyCert = True".

    With all of the above, you can make full use of the Wii Shop Channel within an emulator!



    Going all in on ShoppingYou must be registered for see links


    Getting to the point where we could go shopping on Dolphin was a long and tumultuous one. We couldn't even connect to the update servers a few weeks ago, and had little idea why. Leoetlino made it his mission to get the Wii Shop Channel working. In just the past couple of weeks, there have been several IOS-HLE changes expressly made for the Shop Channel and other System Menu functionality integral to this working.

    • You must be registered for see links - Dolphin will install channels to the right directory.
    • You must be registered for see links - Dolphin now emulates how an IOS can look for TMDs.
    • You must be registered for see links - Dolphin will no longer install corrupted contents.
    • You must be registered for see links - Support Personalized Ticket Decryption. Allows decrypting titles downloaded from NUS with per console private key.
    • You must be registered for see links - Fix reading Certificate Files on Windows - special thanks to You must be registered for see links for this commit!
    • You must be registered for see links - Support Functionality for titles to see what is installed to the NAND.

    These are just some of the recent changes dedicated toward the Shop Channel and Online Updates. You must be registered for see links recently implemented title installation for You must be registered for see links, and You must be registered for see links helped with making ES_Launch more accurate with multiple IOSes when working on Majora's Mask and other issues. Without older commits and documentation from You must be registered for see links, You must be registered for see links, You must be registered for see links, and other contributors, we would have never gotten to this point.

    Missing even a single one of these will cause a catastrophic failure with the shop channel with little clue as to what went wrong. This added accuracy does come at a cost. Games now require their proper IOSes when booted from the system menu. We did maintain an old hack when booting from the gamelist, so, users who do not use the system menu should not need to install IOSes to maintain current functionality.

    Despite all of the fixes, this is not quite perfect yet: updates can sometimes hang, certain channels aren't playing nice, and deleting channels doesn't go quite right yet. In the meantime, we hope that everyone enjoys this new feature as we march toward flawless System Menu emulation!

    You must be registered for see links
     
  12. MayImilae

    MayImilae Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    In case you missed it, we had a special April Fools announcement on our You must be registered for see links 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 You must be registered for see links 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!



    Notable ChangesYou must be registered for see links




    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    A lot of people thought this was a joke when we announced it despite purposefully showing it weeks before April Fools. Through simple force of will from You must be registered for see links and accurate emulation of the Wii's IOS, Dolphin can now connect to and use the Wii Shop Channel as if it were a real Wii.



    System Menu Improvements Featuring Wii Shop Channel Support!



    While we were primarily excited about being about being able to legitimately buy games directly in Dolphin, many users had the concern that this would cause issues for Nintendo. This is not true; The Wii Shop Channel requires a proper console ID and keys from a Wii; meaning that users without a Wii can't access the Wii Shop. And, when you do access the Wii Shop, Dolphin is acting as your Wii. Any games you purchased on that console will be available for download on your Wii, and if you make a purchase in Dolphin, it'll be available on your Wii. Dolphin will not aid you in accessing content you have not purchased.

    To our surprise, it seems at least several users have been using this feature not only to retrieve games they bought years ago, but, also to buy games off the Wii Shop directly in the emulator. For this reason, Dolphin now has SSL verification enabled by default in recent development builds capable of connecting to the Wii Shop.

    These changes also add additional functionality to other parts of the System Menu. Save exporting to SD card, Title Exporting to SD card, Title Installation, and other essential System Menu features will now work correctly from within emulation.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Developers have made some unpopular decisions in the past regarding performance and compatibility in the name of progress. Whether it's You must be registered for see links You must be registered for see links, replacing You must be registered for see links, or even removing software bounding box, we have a penchant for taking away things in the name of progress and clean code.

    The removal of software bounding box had some damaging repercussions however; Apple never ended up supporting OpenGL 4.3 and Shader Storage Buffer Object (SSBO) and thus any game that uses bounding box doesn't work on any Mac! This was not our intention at all, but, reimplementing the software backend would have meant losing the huge performance gains of the You must be registered for see links, or making the code much more complex.



    You must be registered for see links
    Without bounding box, the game suffers from severe graphical glitches and crashes.
    You must be registered for see links
    These complex effects are difficult to emulate efficiently.




    You must be registered for see links is a macOS user that decided enough was enough and took matters into his own hands. If software bounding box wasn't coming back, he was going to find a way to emulate it with an older version of OpenGL. This ended up not being much of a challenge!

    He used OpenGL's stencil buffer to get the pixel data and sent that to the CPU where it can easily calculate the Min/Max of the pixel data to do bounding box effects. BUT, any time you have CPU <-> GPU communication (such as, EFB Copies to RAM, Real XFB...) it slows things down tremendously. As such, this is considerably slower than hardware bounding box, and you're going to need a very powerful computer to maintain full speed at all times with this path. The only users likely to have a powerful computer without SSBO support, are our macOS users. Users on older graphics cards without SSBO support can use this too, but just expect some slowdowns during complex bounding box effects.

    For an idea of what performance you'll get, we took a few performance snapshots of difference devices using the fallback path during a bounding box effect in Dolphin.



    You must be registered for see links



    Note: This method of emulating bounding box should be considered just as accurate as the standard path. It does not contain any of the hacks needed for the old software bounding box implementation, and emulates all uses of bounding box correctly.

    The reason why is that it uses the output from the GPU with the stencil buffer. Bounding box is really just the min/max of all rendered pixels. The old software bounding box path used video software to transform all vertices and calculate the min/max of all vertices. The second software bounding box method was closer, using the video software backend to rasterize the primitive, but still failed with alpha-test, ztest, and other cases.

    If you're wondering why the Vertex Loader JIT necessitated the removal of software bounding box, it's because we no longer had the ability to send vertices to video software for bounding box.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Most games on the GameCube/Wii have a viewport that is a bit odd to emulate. They have a positive width alongside a negative height (E.G. 640x-480.) Because normal computers cannot handle negative viewport dimensions, we have to interpret it as a positive viewport. You must be registered for see links is then a special case within this odd case. Of the thousands of games tested on Dolphin, it is the only game to use a positive viewport (E.G. 640x480.) Because the viewport was already positive, Dolphin decided not to invert it and displayed the game as is... resulting in some very minor issues.



    Outdated: Jimmie Johnson's Anything With an Engine Flipped



    With this game as proof, we determined that if a game has a positive height, it inverts the whole viewport. Because we cannot handle negative viewports within standard graphics APIs, Dolphin now handles the inversion in the vertex shader. This new way of handling the GameCube/Wii's viewport dimensions covers all edgecases, making sure that there won't be any games inverting themselves from now on. Hopefully.



    Jimmie Johnson's Anything with an Engine Working in Dolphin 5.0-3021



    With all of these fixes in place, now everyone can finally enjoy this... You must be registered for see links You must be registered for see links but enjoyable title. You're welcome!



    You must be registered for see links by You must be registered for see linksYou must be registered for see links

    [​IMG]

    When it comes to libusb on Windows, we're out of our area of expertise. On Linux, everything with USB Passthrough works perfectly, but on Windows we've run into a ton of issues that we don't know how to debug. The purpose of this change is to revert some additions that were a part of the USB Passthrough pull request. This will restore Bluetooth Passthrough functionality to where it was before, but, on Windows only there is still a risk of crashing when using USB Passthrough for Microphones and Wii Speak.

    On Windows, libusb can sometimes cause Dolphin to crash simply by enumerating devices. Whenever libusb_unref_device is called, there is a tiny chance it will internally try to You must be registered for see links for no apparent reason, which promptly crashes Dolphin.

    usbdk, which is the only libusb backend with partial support for isochronous transfers, also has its own issues. It doesn't work well with Bluetooth passthrough, because it doesn't redirect and hide the Bluetooth adapter from Windows properly, so users end up having to use both usbdk and Zadig. Isochronous transfers still don't fully work; large packets are completely broken so games like You must be registered for see links do not work. Device enumeration can randomly fail, even after making sure only a single libusb context was used across Dolphin. And we have actually had to revert the context change to avoid bigger problems with Bluetooth Passthrough.

    Those issues, mixed with other issues such as completely broken isochronous transfers in the WinUSB backend, have left us scratching our head. We have no idea why libusb on Windows is giving us so many headaches compared to Linux, which works flawlessly with no risk of crashing and supports more devices.

    If there are any libusb masters out there that could give us a hand in figuring out what our problems are, it'd be much appreciated. As it is, we can again say Bluetooth Passthrough is safe to use, but, we recommend using Linux for USB Passthrough with USB Microphone titles until these issues are resolved. We are not removing the functionality from the Windows version because even this semi-broken functionality seems better than no functionality at all.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Weak CPUs are the bane of emulation, so any time you can take something strenuous off of the CPU, it's a win. While this change is beneficial to everyone, those on weaker CPUs are going to notice the biggest difference.

    Unlike some other performance increases, the bulk of this change is actually going to affect stuttering on object/level load. While most of that stuttering can be attributed to shader generation, there is a very real amount that is texture decoding, especially in some troublesome games that like to decode textures at inopportune times. A lot of games will do this when loading new segments to levels or dynamically loading new areas, such as You must be registered for see links.

    The other main use case for this is decoding videos. One reason why the main menu to You must be registered for see links is so difficult to run is because it is playing multiple video files at the same time, hitting the CPU emulation harder, while decoding the videos which adds to that difficulty. With GPU Texture Decoders, we can offload some of that stress to the GPU, greatly increasing performance, especially on weaker CPUs!



    You must be registered for see links



    GPU Texture Decoding can be enabled in the Graphics Settings -> Hacks Tab under "GPU Texture Decoding." It should not cause any graphical glitches, but, performance may vary depending on your hardware.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Higher Internal Resolutions is a hack that break things. When users report bugs, such as "You must be registered for see links breaks at higher resolutions," it's one of those things that are low priority usually. Blog writer JMC47 has gone on the record in public saying that Shattered Memories would never be fixed at higher IRs.

    You must be registered for see links said to hell with that and dedicated a few months into figuring out a way to try and make Silent Hill: Shattered Memories work at higher resolutions. Within a few days, Silent Hill was working properly... albeit with a nasty hack. As exciting as that is, it's a slippery slope to start merging per-game hacks to fix higher resolutions; suddenly you have pages of hacks that users have to try and mix and match to get a game looking right, and it's just generally sloppy.

    Over time, the hack was refined and moved to a place that made more sense and broke less games while fixing more. While we don't usually allow hacks for graphical issues, we decided to make an exception here.

    What You must be registered for see links is adjusting for is a pixel centering issue; something that we don't believe can work at higher resolutions regardless of accuracy. A hack to throw out the rounding is no worse than what Dolphin is currently doing at higher Internal Resolutions, and, it seems to help quite a few games in very positive ways. By keeping both methods, we don't stand to lose compatibility one way or another, and, the results are pretty staggering.



    You must be registered for see links
    Many games suffer from annoying lines like this at higher resolutions.
    You must be registered for see links
    With this hack, many of them are simply gone!




    You must be registered for see links
    Oh noooo! Someone got light and color into Shadow the Hedgehog! How shall he brood?
    You must be registered for see links
    Ahhhh, properly gloomy.




    You must be registered for see links
    The light leaks out in spectacularly wrong ways at higher IRs in Silent Hill.
    You must be registered for see links
    The new offset makes things work just as well as they do at 1x IR.




    In the Graphics Settings -> Hacks screen, you can try "Vertex Offset" at higher internal resolutions to see if it bypasses problems in your favorite games.



    Last Month's Contributors...You must be registered for see links


    Special thanks to You must be registered for see links that incremented Dolphin from You must be registered for see links through to You must be registered for see links!

    You must be registered for see links
     
  13. MayImilae

    MayImilae Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    One of the more difficult parts of being an emulator is balancing accuracy, performance and presentation. When Dolphin replaced the hacky, broken asynchronous audio with the synchronous New AX-HLE and New Zelda-HLE implementations, audio accuracy greatly increased! It came as quite the shock when users started complaining about this change and demanding asynchronous audio's return. Some of the criticisms were valid; there were bugs in early synchronous audio causing increased latency that weren't present in asynchronous audio.

    All of these growing pains were eventually fixed, but, one complaint stood out - slowdown affected audio for the first time for a majority of users. This was seen as an unfixable issue. After all, it doesn't make sense for audio to run full speed if nothing else is! The issues were closed and the concern was filed away until users got used to the change.

    Long-term, we did learn something from this dilemma. While synchronous audio was undoubtedly better for the project and solved the major emulation issues with audio, it caused a whole bunch of presentation issues we neglected to fix... until now.

    This month, we have a lot to offer. Custom texture support gets supercharged, the JIT sees some important maintainability changes, and a smattering of audio changes include a huge presentation change to audio that will help users hear games pleasantly even under slowdown.



    Notable ChangesYou must be registered for see links




    Position Independent Code support for the x86-64 JIT by You must be registered for see linksYou must be registered for see links


    This is a big change that opens up a lot of uses for Dolphin that may not be very obvious. In fact, if everything is working correctly, there should be no noticeable change in Dolphin from the many changes to make Dolphin's JIT Position independent compliant. So what is PIC?

    [​IMG]

    The JIT supporting PIC means that no matter where the code is compared to the rest of the executable, it will be able to access it. Because the x86 JIT was designed in the 32-bit era, Dolphin used the access methods available at the time. Code was guaranteed to be within 2GB (the maximum amount of ram a 32-bit program can use), and thus the JIT relied on methods within those limitations, even when making the jump to 64-bit!

    This is because some operating systems, such as Android and Hardened Linux, randomize the ram layout as a security feature meaning that code can end up more than 2GB away! The AArch64 JIT was designed with this situation in mind and as such can handle the code being anywhere! However, x86_64 Android devices were stuck with cached interpreter at best because the x86_64 JIT didn't have PIC support.

    What You must be registered for see links did was go through the JIT and find the individual instructions that used addressing methods incompatible with PIC, and then revise them in a manner that'd allow them to work. The hardest part about doing this isn't the task itself; it's completing the task without losing performance. Thankfully, by doing the process instruction by instruction, we were able to keep close tabs on performance and make sure there were no large performance decreases.

    As mentioned above, x86-64 Android should now be able to run Dolphin's JIT. Considering that the x86-64 JIT is still much more mature than the AArch64 JIT, it is likely x86-64 Android devices will have higher compatibility and less bugs for the near future.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Now we go from a gigantic change that should affect nothing in practice to a small change that'll make a huge difference for two very particular games. You must be registered for see links has had quite the month!

    This fixes HLE audio in You must be registered for see links and You must be registered for see links.




    Headphone users beware!

    Someone finally took the potato chips away from the microphone.




    ...I guess we should actually explain how this fixes it. Some background: Dolphin's HLE audio has been completely rewritten since Dolphin 3.0; it's one of those miraculous transformations that we really tend to forget about. HLE Audio has been so good for years now, that the remaining problems stick out like a sore thumb. Rogue Leader and Rebel Strike are among the last games that sound very wrong with HLE audio set, forcing users to take a stark performance hit by using LLE audio. While this may not have been a big deal when most titles required LLE audio for proper sound, it now sticks out like a sore thumb when they stand alone.

    This is actually one of those situations where we've known what was wrong, but had no one to actually implement the fix. Enter Citra audio guru You must be registered for see links to implement the features outlined by You must be registered for see links in order to finally fix HLE audio for these two titles. Considering these were Factor 5 games, you can bet some shenanigans were involved.



    Factor 5 loves undocumented featuresYou must be registered for see links

    [​IMG]

    Factor 5 is the defacto badass of GameCube developers. Time and time again, they've take advantage of features within the GameCube that few or even no other games seem to know exist. In this particular case, they took advantage of another seemingly undocumented feature dubbed "Loop Counter." The loop counter is actually fairly simple, every time looping audio loops, it increments by one. The only reason it's anything special is that it's entirely undocumented. Because it's undocumented, no one uses it... except Factor 5.

    In terms of why the games fail so badly when it's not incrementing... we're not completely sure. Our best guess is that it was using it for timings or to keep track of things, and since Dolphin wasn't incrementing it at all before, the game was getting confused and loading garbage.



    Why did this take so long to get fixed???You must be registered for see links


    Everything sounds so simple, right? But, there's a second part of this issue that isn't mentioned. Star Wars Rogue Squadron II: Rogue Leader uses an earlier version of the microcode without a Low Pass Filter! In fact, where "Loop Counter" was stored in Rogue Squadron 2's microcode, "Low Pass Filter" was stored in Rogue Squadron 3's!

    Thus, the big delay wasn't on supporting loop counter, it was on supporting multiple revisions of the AX-Microcode. Without the ability to support and run different versions of AX, the only way to support this is nasty hardcoded hacks. Before this point, Dolphin had no reason to differentiate between the AX microcodes, and thus there was no infrastructure in place to do it.

    That's not to say Rogue Squadron 2 was the only game to use the earlier microcode. Other early GameCube titles, such as You must be registered for see links, do use it. It's just that none of the version differences matter in that case.



    You must be registered for see links
    Move along.



    Don't get too excited...You must be registered for see links


    As great of a performance boost this is for Rogue Squadron 2 and 3, we still don't find them especially playable for a variety of reasons.

    The main culprit to this is Dolphin's GPU Timings. Namely, we've been slowly getting more accurate with various timings and that means games that previously worked with outright broken timings may begin to struggle a bit. In Dolphin 5.0, Rogue Squadron 2 and 3 were mostly stable in single core, albeit pretty slow. But, since Dolphin 5.0, we've enforced SyncGPU in single core to improve GPU timings and push us closer to console accurate timings. Two of the games that have been hurt the most by this were the two Factor 5 titles, along with You must be registered for see links and Super Monkey Ball also seeing some major issues crop up.

    One of our goals with enabling SyncGPU permanently was to bring out issues like these so we could improve timings and finally make these games perfectly stable. Until that happens, please be patient going forward. If we're ever going to have these games running properly, it's only going to be accomplished by rewriting the bad parts of Dolphin.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    The MerryMage show continues with a fix for a macOS bug. We broke the ability to type while the game is running on macOS. Whoops.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Something we've learned here at the blog over the years is that users absolutely love enhancements. While higher resolution support is by far the most used enhancement, widescreen hacks have become increasingly common. We've even begun documenting them on the wiki to help users find widescreen hacks for their favorite games!

    Today, we're seeing some improvements to Dolphin's widescreen detection to help with the detection of Widescreen cheats. This adjusts the heuristic to avoid erroneous swaps, allowing for more complete widescreen hacks for You must be registered for see links and other titles that use similar codes. This allows the menus to remain in widescreen mode without enforcing "Force 16:9".



    You must be registered for see links
    If the user left the aspect ratio on Auto, this widescreen code resulted in the menu being vertically stretched to 4:3.
    You must be registered for see links
    Now with the improved heuristic, users no longer need to worry about changing their aspect ratio just to play different games.




    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    This is a feature people have been requesting since synchronous audio was first standardized. Synchronous audio meant that when Dolphin isn't running full-speed, audio would have gaps, resulting in an audible stutter. While the OpenAL backend has had time-stretching for years, there's a pretty big difference between just having time-stretching and having good time-stretching is pretty huge.

    After having implemented audio in Citra and dealing with the challenges of time-stretched audio there, You must be registered for see links was the perfect person to come in and use that knowledge to improve Dolphin's handling of audio under-slowdown.




    50fps without audio stretching warbles and pops horribly.


    50fps with audio stretching is still slow, but much more pleasing to the ear.


    Fullspeed for reference.




    Sacrificing Latency for QualityYou must be registered for see links


    Time-stretching audio is a post-processing effect for audio that stretches out already playing audio when the game isn't running full speed. This fills in would be gaps and makes audio sound clearer during slowdown! With the new slider in the audio configuration page, you can tweak this setting. Higher latencies will result in smoother audio during more and more extreme slowdown. Unlike asynchronous audio, which caused severe audio glitches, game crashes, and other issues, time-stretching is a post-processing effect that doesn't affect actual emulation whatsoever, and will not cause any issues for users that choose to use it.

    Users who prefer the lowest possible latency can still leave this feature disabled.



    As of You must be registered for see links it is also available on android.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    The images used to represent games in Dolphin's game list are called "banners", they are images in every game that Nintendo mandated all games use to identify themselves. You can see these banners for yourself when loading the You must be registered for see links (bios) on your GameCube. Since they were mandated, they will always be there, so banners are a reliable way to represent a game.

    On Android, Dolphin only used screenshots of the latest game save to represent games in its game list. While that's a nice feature, what happens if you don't have a save to make a screenshot? You must be registered for see links addressed this by using banners to fill the blanks until screenshots were created. Unfortunately something was wrong: the colors were all wrong!



    You must be registered for see links
    Oh my god Mario and Luigi are suffocating!
    You must be registered for see links
    Whew, good thing we know CPR.




    Android was expecting the PNGs to be You must be registered for see links, which means that the alpha channel is pre-applied to the red, blue and green channels ahead of time, instead of blending it on the fly. Dolphin was just feeding it the normal RGBA data, which confused the poor Android into displaying the wrong colors. Now with this fix, the banners are premultiplied as Android expects, and Android is rendering happily.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Over the past month, MerryMage has been pretty busy! This change implements CR Cache for the AArch64 JIT and gives a small performance boost. A game like You must be registered for see links, which was hovering around 90 - 95% speed just a month ago, can now hit full speed in many scenes and areas on the NVIDIA Shield TV. Using the POV-Ray benchmark tool, we can show how much this affects a standardized test.



    You must be registered for see links
    This may not seem like much, but every little bit helps on Android!



    How does this work? The PowerPC has 8 condition registers, but ARM and x86 only have 1. You cannot use other registers as condition registers, so Dolphin emulates this feature by storing any results of the condition registers into memory for retrieval later. While this certainly works, a feature that should be free and instant now eats up CPU cycles with load/store instructions, reducing performance. This change caches the results of the condition registers into the ARM CPU's general purpose registers, allowing immediate retrieval with fewer instructions.

    So far this optimization has only been implemented in the AArch64 JIT, and is not yet in the x86-64 JIT.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Several amazing Custom Texture packs are available for Dolphin right now, including for popular games like The Legend of Zelda: The Wind Waker, Star Wars: Rogue Squadron 2 and You must be registered for see links. These texture packs look fantastic and can give added detail to textures that don't look quite so up to snuff for today's gamers.

    On the other hand, Dolphin's custom texture support had some caveats that made it difficult to use. To get the best performance, you had to use the prefetch custom textures option or else suffer from the GPU having to decompress textures on the fly. Unfortunately, pre-fetching and decompressing the textures in ram would take tremendous amounts of RAM! You must be registered for see links wouldn't fit into 24GBs of RAM! So users who wanted to use the texture pack without stuttering were left with downscaling textures or getting rid of textures they didn't absolutely need in order to fit it into their RAM.

    Something that we knew could be done to alleviate this is Compressed Custom Texture Support, as forks of Dolphin have already proven it possible. By supporting compressed formats directly, we no longer have to decompress the textures in RAM before being sent to the GPU. This decreases the amount of ram used by nearly 85%!



    You must be registered for see links



    And even if you still don't have enough ram to use the pre-fetch custom textures option, computers with high enough bandwidth should be able to use custom textures without pre-fetching without any noticeable slowdown thanks to skipping the decompression step.


    Last Month's Contributors...You must be registered for see links


    Special thanks to You must be registered for see links that incremented Dolphin from You must be registered for see links through to You must be registered for see links!

    You must be registered for see links
     
  14. MayImilae

    MayImilae Guest

    Ratings:
    +0
    Rupee:
    ₹0.00
    [​IMG]



    A project cannot survive for nearly fourteen years without making some difficult decisions. Sometimes you're right, sometimes you're wrong, but, to be successful you have to learn from each and every one. One of the most difficult decisions made for Dolphin was the You must be registered for see links despite it being the fastest backend at the time. The promise was that we would take a step back then, and make huge gains in accuracy thanks to being able to use integers throughout VideoCommon.

    [​IMG]

    There was a lot of growing pains, a lot of driver issues, and a lot of unhappy users, but it set the tone for what would become the direction of Dolphin heading up to the version 5.0 release. One of Dolphin 5.0's headline features was a You must be registered for see links, but as of You must be registered for see links, we have decided to remove it. What we learned from the D3D9 backend helped us make that decision. Like D3D9, D3D12 had some core flaws we let slide under promises that it would continue to be maintained and fixed up. When that didn't happen, it was decided we did not want another deprecated backend hanging around, blocking features and enhancements that require work within each backend.

    Let's not make any mistakes, the D3D12 backend was a tremendous gain for Dolphin, and what we were able to learn helped us know what to do when designing the Vulkan backend. Unlike the D3D12 backend, the Vulkan backend is actively maintained and does not have the design flaws that made D3D12 harder to work with. Removing D3D12 support also makes it easier for people to tinker with and compile Dolphin on Windows, along with the added bonus of reduced compile times.

    Going forward, we're going to continue to optimize the existing graphics backends. In our testing, the Vulkan backend was as fast as, or nearly as fast as the D3D12 backend in every benchmark. While different drivers and graphics cards will not all perform identically, we're confident that moving forward the Vulkan backend will be able to handle the burden of users seeking the benefits of the newer graphics APIs.

    ...and that's probably not the biggest removal this month. Dolphin's longstanding JITIL (Just in Time Intermediate Layer) Recompiler was finally decommissioned and removed. It's one of those great ideas that just didn't pan out. It never could match the performance of compatibility of the JIT and it was unmaintained in recent years. To even consider JITIL a part of the future, it would have needed to be rewritten to support both Full MMU support and PIE compliance.

    We know that some of you reading this are going to be upset or disappointed by these decisions. Hopefully you stick with us and the future gains we make by handling these potential problems now more than pays for the temporary inconvenience. With that out of the way, we have a lot of great additions to the emulator in this month's Dolphin Regress Progress Report!



    Notable ChangesYou must be registered for see links




    You must be registered for see links by You must be registered for see linksYou must be registered for see links

    [​IMG]

    Sometimes an egregious bug sneaks in that is so bad, it's actually hard to see. In the case of ps_res (Paired Single Reciprocal) the instruction got implemented entirely wrong in the AArch64 JIT, and no one noticed. This made it so any game that used this instruction was pretty much broken, including the Resident Evil series.

    Forum user Servlet did the hard work of narrowing down the broken instruction, and once they did, the AArch64 developers did a collective facepalm and hurried through a hotfix.

    Let's be clear - the approximation for this instruction is not bit accurate to what the GameCube/Wii would do but is a lot better than the broken estimation. The incorrect implementation was calculating ps_res as 1/sqrt(x) instead of 1/x. Now we do 1/x, but, without really worrying about the various edgecases where the PPC version of the instruction will return slightly different results.



    flacs: uh...
    flacs: FRSQRTE?
    HdkR: lol
    flacs: reciprocal square root?
    HdkR: yea
    HdkR: +estimate
    flacs: ps_res is just reciprocal...
    HdkR: yep
    HdkR: Gekko is silly
    flacs: heh: {26, &JitArm64::FallBackToInterpreter}, // ps_rsqrte
    HdkR: :3
    flacs: wow, ps_res has been wrong since january 2015
    flacs: i.e. always​


    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    This change fixes several issues with GBA <-> GCN that were present only when using HLE audio.

    • Only one GBA could connect at a time
    • Most audio would not play or intermittently disappear

    This change improves HLE to the point where behavior is the same as DSP-LLE in GBA <-> GCN games. The most notable Zelda microcode game that suffered from issues on this issue was Four Swords Adventures. Since the New-Zelda-HLE rewrite, connecting multiple (emulated) Game Boy Advances and audio issues persisted when using the feature on HLE audio. This is no more!



    You must be registered for see links
    DSP-HLE makes this setup far less demanding. Now you just need to assemble your friends! That's easy, right?



    These bugs should still have persisted on AX-HLE, as this change only fixed Zelda microcode games, but when doing some testing on You must be registered for see links, that no longer appears to be true.

    Despite our best attempts to bisect, we have no idea who or what change actually fixed those games. It really is big news because this means that all of the GBA <-> GCN titles should work on DSP-HLE now without users being required to get official DSP dumps off of their GameCube or Wii to use DSP-LLE. The only titles unconfirmed to work are those that require an actual game in the GBA, such as You must be registered for see links and friends. Considering those can be problematic even on DSP-LLE, we're not too hopeful that they'll work.



    You must be registered for see links
    We have no idea why HLE is working for GBA connectivity in this game, but we'll take it!


    Long-term, the current GBA <-> GCN implementation will need some more serious work, but these fixes make it so that You must be registered for see links should be perfectly playable with up to four players on a single computer.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links

    [​IMG]

    If you're playing Dolphin on your phone, not only do you have to deal with constant performance limitations, you probably are also using Dolphin's touchscreen controls. While touchscreen controls are not the best a replacement for a controller, that doesn't mean they can't be improved. Veteran Dolphin Android contributor You must be registered for see links returns to add some basic touchscreen improvements. You can now slide your fingers off of buttons to let go of them and onto them to press them, buttons now give feedback and visually show when they're pressed, and joysticks will now follow your thumb! Among these are some smaller improvements, so if you're constantly using Dolphin Android's touchscreen controls, this may be the most important change of the month! Enjoy!



    You must be registered for see links
    Now it is much easier to tell what you are pressing.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    Have you ever been playing a game for a while and started wondering, "Oh no! I forgot what game I was playing!" and you have a gamelist with thousands of games and are afraid that you'll never find that game to play again? We've all been there, and have we got the feature for you!

    If you ever forget what game you're playing, you can now just look at the title bar!!! Dolphin can now tell you what game you're playing and its GameID to make easier to find the next time you want to boot it!

    With our infomercial finished, this change actually shines the most when you're using the Wii Menu. Bouncing around channels, Dolphin can now keep track of what titles have booted and will let you know in the title bar. In order to make sure accurate titles are provided, Dolphin now includes a titles database from GameTDB by default. Users who weren't using a Title database before will now see more accurate title names in the gamelist. This also makes finding screenshots and texture dumps easier to find as the GameID is readily in the titlebar.



    You must be registered for see links
    Now you'll never forget which WiiWare title you are playing.



    You must be registered for see links by You must be registered for see links and You must be registered for see linksYou must be registered for see links


    This is a bit of a tricky change that took a lot of thinking on how to fix. Let's go into the initial problem, and then we'll dig into why this fixes it.

    Fixing Star Wars: The Clone Wars, was an arduous process that took several years to do efficiently. When the pull request for Dynamic BATs was first opened, Star Wars: The Clone Wars worked fine on HLE audio + JIT, which allowed for some pretty nice performance. But, between the initial opening of the Pull Request and its eventual merge, a huge set of core timing fixes were merged to Dolphin. These timing fixes made it so Dolphin could no longer boot The Clone Wars in HLE audio.

    One of the things that the Core Timing fixes in Dolphin fixed was that interrupts were being sent way late (20,000 cycles late in some cases!) This was causing a ton of games to malfunction in Dolphin. Because HLE audio did not emulate any Command List timings, it was able to boot a bunch of games that would hang on LLE audio. After the fixes, both LLE and HLE audio could boot pretty much anything!



    You must be registered for see links
    The game would freeze on the initial loading with the last log being about MaxStreak: 0.



    ...Until You must be registered for see links turned up. We didn't actually know this was an audio timing issue until ligfx, You must be registered for see links and others did some research on this. Delaying the response by 814 cycles or more would fix The Clone Wars, but putting an arbitrary delay like that was too hacky and the idea was shelved for a while until a second discovery was made.

    At minimum, it took 2500 cycles for the DSP to process an empty command list, and thus the delay would never be less than 2500 cycles. By setting the minimum to 2500 cycles, we were able to fix Star Wars: The Clone Wars, and several other stragglers that refused to boot with a combination of the JIT and HLE audio.



    You must be registered for see links



    This makes Star Wars: The Clone Wars full-speed on high-end hardware, and especially makes running the multiplayer mode much, much more plausible on current machines. This also fixes various HLE only audio hangs in other titles.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    This is a feature we at the blog have wanted for a long time, but developers disagreed. After all, all you had to do was uncheck GameCube BIOS, load a GameCube game and hold A to get to the BIOS, right? Still, sometimes we just want to play around in the IPL without all of those steps.

    Thanks to You must be registered for see links we finally can. In a cozy place next to loading the Wii System Menu, you can now find load GameCube BIOS!



    You must be registered for see links



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    While we were busy removing graphics and CPU backends, on the audio side of things we have a new cross platform Cubeb audio backend. The main goal of this new backend is for it to replace the other backends. Unlike with video backends, none of the actual emulation happens in the audio backend, so all there won't be any surprise emulation issues. The main deal about Cubeb is that it's multi-platform and can provide the lowest latency on all of our supported operating systems. After doing some testing on Windows, we found this to be true!



    You must be registered for see links



    Note - Latency was tested on what a general users settings would be rather than being optimized for latency. By setting Dolphin's AudioVariance setting lower, you could sacrifice performance to get dramatically lower latency than recorded here.



    You must be registered for see links by You must be registered for see linksYou must be registered for see links


    If you have a lot of games (let's say... around over a thousand,) in the gamelist, it can take quite a while to load. On average, without a gamelist cache and a huge gamelist, Dolphin can take over three minutes to generate the gamelist. Why? Because it has to make sure the games are valid GameCube or Wii titles, load the GameID, banners, and other decorations among other things. One of the frustrating things about having a huge gamelist is that after it was done doing all this, WXWidgets would freeze at 100% loaded for another 20 to 30 seconds. This change fixes that lengthy delay after the progress bar is filled up, shortening the initial gamelist load dramatically on gigantic gamelists.

    On a cached gamelist of over 1000 titles, it still cuts off five to ten seconds, which could be even more sizable since that's over a quarter of the time it takes to load the entire gamelist. If you only have a couple of games, you probably won't notice the difference, but, the seconds do add up!



    You must be registered for see links
    Just look at how small that scroll bar is!


    Qt-ie PatootieYou must be registered for see links

    [​IMG]

    For as long as Dolphin has existed, it has used You must be registered for see links for its GUI. In 2003, WX was the best multiplatform GUI solution at the time, but it isn't as cute these days. In order to support new features, more and more has been bolted on top of WXWidgets aging base, leading to a toolkit that is filled with old concepts, antiquated coding requirements, and strange old assumptions. For example, here we are in 2017, and WxWidget's current latest release still supports Windows 95. Just think of the knots they must go through to support 20 years of operating systems!

    But there is another GUI toolkit, of similar age and widespread compatibility - You must be registered for see links. Where WX has stood still, Qt has had no issue ripping out the floorboards when necessary, creating a much leaner, easier to use API. For example, the recent Qt pull request enabling HiDPI switched it on, had a few lines to tell how Qt we handled the files, and that was it. But in WX, sizes and scaling have to be set for every single element individually. The WX HiDPI pull request was truly monstrous in scale!



    You must be registered for see links: +93 -37
    You must be registered for see links: +4,419 -3,167



    When even minor GUI changes take an immense amount of effort, most developers avoid touching the GUI as much as they can, usually resulting in them at most adding a button necessary for their work then running for the hills. The only reason our UI isn't a disaster is due to the determination of a few stubborn individuals who were so sick of Dolphin's UI problems that they were willing to throw themselves into the WX trashfire. But even with their amazing work, there are so many things that we'd like to do that are just impractical or impossible under WX. Not to mention that WxWidgets likes to randomly freeze. If you've had your game running fine but Dolphin's UI was frozen, WX was to blame.

    [​IMG]

    With all of these problems in WX, why didn't Dolphin switch to Qt years ago? It's certainly not for lack of trying! In the previous two attempts, the coders have tried to handle the transition while making Qt-er design changes at the same time. While Qt is an objectively better GUI backend at this point, design is a subjective beast, and opinions clashed. Faced with a considerable UI transition while dealing with copious You must be registered for see links, the people behind the move burned out, and WXWidgets survived again and again.

    Now we're trying a new way of handling the move, one that isn't going to be as dramatic. This time around, we are just going to replicate the WxWidgets UI in Qt, and leaving Qt design changes for later. This clear end-goal has rejuvenated the Qt move and we're now charging ahead at an unprecedented pace. We're hopeful that a few Progress Reports from now, we'll be announcing the completed Qt UI! Once we are at full Qt-ness, UI work will be phenomenally easier, and we'll finally have a chance to tackle the UI and it's quirks with new determination.

    Stay tuned!



    Oh by the way - Qt is pronouced as You must be registered for see links. If you read the above as que-tee, you need to go back and read it all again.


    Last Month's Contributors...You must be registered for see links


    Special thanks to You must be registered for see links that incremented Dolphin from You must be registered for see links through to You must be registered for see links!

    You must be registered for see links
     

Share This Page

Users found this page by searching for:

  1. aahow we can fix dolpin emulator 3.5 sound fix Spiderman Edge of time game