![]()
Actually it was just plain wrong and really needs to be even more complicated to work correctly, namely value - 2.0 * round(0.5 * value * (255.0/256.0)) * (256.0/255.0).Ī feature that highlights this annoyance is the Legend of Zelda: Wind Waker's water highlights. #How to backup dolphin imaging codeFirst, did you understand what the code snippet above is supposed to do? If not, then you see the problem: it's absolutely not obvious how all this floating point magic ends up emulating integers properly. The Dolphin code up till now uses loads of complicated and confusing code to make scenarios like this work - yet it fails various places. ![]() This is a huge problem since it can make the difference between an object showing up on the screen or just not showing up at all. On the GC/Wii GPU these values would be equal since they are rounded to the closest integer - whereas with floating point math we would say they are not equal. Imagine we calculate two floating point values, say one is 49.999 and the other one is 50.003. This makes comparison operations between intermediate values very iffy. How do we emulate this with floating points? Believe it or not, it needs to be as complicated as:įrac(value * (255.0/256.0)) * (256.0/255.0)Īnd that's not actually good enough - integers do not have a fractional part, but any values computed as floating points do. if you add one to 255 it would overflow to 0. Take for instance an (unsigned) 8 bit integer: the maximum value that such an integer can hold is 255, i.e. Since Flipper uses integers for its graphical calculations, the Dolphin code needed to use some fancy tricks to emulate integers with floating point math. They made a great testbed for potential changes and fixes over the years because of this. The Zelda games have some of the best examples of problems with Dolphin's GPU pipeline. #How to backup dolphin imaging PcThey knew the reason for these errors - Dolphin was doing floating point math for Flipper's integer calculations - but PC GPUs of the time had no support for integer math. But the GPU's pixel processing was particularly problematic for them, leading to lots of minor defects. Despite being an uphill battle, the Dolphin developers hacked and clawed at issue after issue, making exceptions, hacks, changes, and adjustments trying to force the two systems to come up with the same answers. #How to backup dolphin imaging trialThe only choice for many years was to guess and check until the emulator produced the right results - trial and error. One quirk in particular is the use of integer math within the console GPU pipeline - as opposed to floating point math which is the norm for PC GPUs.įor a quick retrospect: When Dolphin was being developed behind closed source walls in 2003, only a small portion of the GameCube's hardware features were even understood. The two consoles' Graphics Processing Units - called Flipper on the GameCube and Hollywood on the Wii - have a lot in common with their modern PC counterparts, but there are just enough differences to make perfect emulation an absolute nightmare. ![]() History Lesson: The Flipper/Hollywood GPUs ¶ With the merger of the tev_fixes_new branch ( tev = Texture EnVironment, a major component of the GameCube's pixel processing pipeline), Dolphin's emulation of the GameCube GPU is going to the next level. Dolphin has had long standing issues with a bunch of its features, and many graphics glitches have been around for years and years. The GameCube is a remarkable achievement of hardware engineering! With its impressive capabilities, emulating the GameCube's GPU has been one of the most challenging tasks Dolphin has ever faced.Īs well as games work, developing proper emulation of the GC/Wii GPU continues to be an ongoing and difficult process. This is completely unheard of, before or since. For a comparison, just imagine a SNES running with an NES's graphics system. ![]() It is so powerful and so flexible, it was used unmodified within the Wii architecture. The GameCube GPU is a complex, tight-knit piece of hardware with impressive features for its time. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |