Home Artists Posts Import Register
The Offical Matrix Groupchat is online! >>CLICK HERE<<

Content

Hi Patrons,

today we want to share some details about CEMU 1.6.0!

The update will be released in roughly two weeks. Once we have narrowed down the release date, we will post about it. There will be second update post in about a week or so. Or we may split it up into several smaller update posts.


List of changes in 1.6.0 so far:

  • New texture cache (Milestone feature)
  • Various graphical bug fixes
  • Audio improvements
  • Compatibility improvements
  • Bugfixes as usual

That's the rough list of things that will make it into 1.6.0 with 100% guarantee. There is more to come, but we don't want to build up expectations and then have to disappoint our users when things don't turn out as intended.

The biggest change of 1.6.0 is the revamped texture manager & texture cache. This is one of the most complex parts of CEMU and also one of the oldest. As we understand more and more about the Wii U hardware some of the drawbacks of our old texture cache implementation became clear. Over time we managed to work around some of the limitations but it was always obvious to us that the solution is only temporary.

For the past weeks we have rewritten large parts of the texture manager code and it's now at a point where it works better than the previous solution. In the following we'll show some of the most well known bugs fixed by the new texture cache.


Super Mario Maker's mixed tilesets

If you have ever played multiple levels in one session of SMM then you probably have seen this bug where CEMU seems to confuse the tilesets:

This issue is now fixed in 1.6.0 thanks to the new texture cache!

What caused the bug?

First, a little technical background information. The issue stems from a core difference of PC and console architectures. On Wii U, both the CPU and the GPU share the same RAM, while on PC almost all graphic cards have their own dedicated memory (VRAM). For emulation this means that everytime a texture is created in RAM we have to copy it to VRAM. To put it simply, every texture exists twice.

The tricky part is that both the CPU (RAM) and the GPU (VRAM) can modify their respective copy of the texture and every change has to be mirrored to the other copy. Technically it isn't too complicated to perfectly duplicate any changes from RAM to VRAM and vice versa, but the performance penalty would be so large that not even simple 2D games would run at more than 1FPS.

To work around this issue we use a multitude of tricks to only copy textures if we are sure that they are needed. For example, it doesn't really matter if the texture in RAM is out of sync if the CPU never reads it.

So to get back to how this relates to the tileset bug in Super Maro Maker: The game would load a tileset textures via CPU and then use the GPU to dynamically update the moving parts (conveyor belts, coins, question blocks) periodically. This would lead to CEMU missing changes on the CPU side of the texture (namely, when a new tileset is loaded).

With 1.6.0 detection of such scenarios is much better and as a result the texture is correctly synchronized even when CPU and GPU modify their respective texture copies at nearly the same time.


Broken text rendering in some games

Up until 1.6.0, certain games had trouble rendering text. Sometimes letters would be missing or unreadable.

Darksiders 2 was affected the most (click on image to view in large):

What caused the bug?

The games suffering from this issue all use the same approach to render text. Initially they would allocate an empty texture, let's call it a font texture. Everytime a text needs to be rendered all the letters would be taken from the font texture. If a letter in a particual font and size was not present yet in the font texture, it would dynamically be added.

Here is an example of such a font texture from Darksiders 2. In case you are wondering, the blurry red letters are used for the background glow effect of the text.

Previously this would cause issues because CEMU would miss texture updates that changed only a small number of pixels (like adding a single letter).

In 1.6.0 this issue is fixed and even 1-pixel updates are correctly recognized. Here are some screenshots with the issue gone from previously affected games: 

Super Mario Maker
DKC Tropical Freeze
Darksiders 2


More teaser images

Mario Kart 8 lighting fixed. Racer selection (before, after)  and first race (before after)

New games playable! Here is one of them.


In other news: Changes to our Patreon

Early September we will switch to 'Charge upfront'. Essentially this means that new Patrons will have to pay their pledge before they can access the Patron-only content. This feature was recently added by Patreon as it became clear that it's really easy to cheat the system. (Become a Patron, download all the stuff, cancel your subscription before the end of the month.)

From our perspective, tricking the system is not fair towards our legitimate Patrons and us. It's worsened by the fact that each release we have to deal with leaks. It takes away time which we otherwise could invest in developing CEMU.

More details are available on Patreon's FAQ.

Please note that existing Patrons will not be affected by this change.


PS: We hope you enjoyed today's slightly more technical update. Let us know if you want to see more posts of this kind and/or if you have any questions or suggestions.

Disclaimer: As usual it's ok to talk about this post outside of Patreon and it's also ok to share any screenshots linked in this post. But please don't 1:1 quote this post outside of Patreon. Thanks!

Comments

Anonymous

Nice work guys! I really like detailed posts like this one, please keep posting these technical details. When you share these details i feel like I'm more in the development just like dolphin team do with their monthly report.

Anonymous

Just a small question, will the mario kart texts be visible after this update? I really like to know what I'm unlocking after the end of the races, lol

Federico Apelhanz

Great post, very nice read, naive question since I know jack shit about gpu programming, but asuming we currently have gpus with 8gb and more of vram, couldn't we simple allocate the textures there and forget about having textures on ram and vram?

Anonymous

in mario Kart 8 and some other games we get rips and tears and geo going crazy can you fix that as well and in wind waker in the fire temple it's deadly slow about 10-15fps max if you fix that area the rest of the game will fall in line because its the most intense area pushing lots of post processing

Anonymous

this is just too good to be true! lol anyway, will the bug in SMM when saving custom courses be fixed in v1.6.0?

Anonymous

That looks more like a depth issue to me, but I'd also like to know this :)

Anonymous

I guess this idea won't work due to some problems. The first is that the cpu needs to access these textures, if the textures are only stored on vram it makes too slow to the cpu to have access to them. The second one is: if you assume that everyone has 8 GB of ram, you reduce compatibility, since most of the gpu has only 2gb or 4gb of ram or, in the worst case, only 1 GB.

Anonymous

Great job guys , this is great post keep us updated.We want to know everything.

cemu

What bug are you refering to? There are a few different ones actually.

BreakPoint

I do enjoy more technical updates and its a major reason why I joined the patreon. Keep up the good work and keep the write ups coming so long as it doesn't get in the way of dev work!

Anonymous

Can't wait till Smash, Bayonetta 2 and Hyrule warriors works well :D

Anonymous

Mario Party 10 pleaseeeeee T.T

Anonymous

great update, love the more technical posts. excited to hear more compatibility updates

Mored4u

Great update, keep going, also don't forget to support Wiimote (Plus inside) control in future.

Anonymous

I'm happy about the Patreon changes, more power to us patrons :D I can't wait for the light fix in MK8!

Anonymous

Oh... no bloom ? no AA ? too bad. I have a question : you will made 1.6.0 rev so a big update . Is texture cache is a really big improvment? what this will change ? load time? new texture to see? less graphics texture bug? And for the rest good work. I hope update part 2 will be as interesting as this one.

Anonymous

I had to create another account patreon coz the other bugou and could not process the payment always giving more error finally here I am back :)

Anonymous

Will 1.6.0 have improved controller support, or are you at the moment concentrating on getting the speed up together.

Anonymous

i'm really exciting.

Anonymous

Is the new playable game the swapper?

cemu

You seem to have a misconception about how modern graphic cards work. There is no 'bloom' feature build into the hardware. Today, it's all just shaders and textures. You can look at it like this: Graphic vendors decided that instead of adding 1000 features (fog, bloom, blur, AA, shadows, etc.) into the graphic hardware it's better if there is only one general purpose execution unit (alias shader unit). Basically this allows games to upload their own graphics code to achieve any effect they wish. For emulation this means that if something like bloom is broken in a particular game, it's probably a math error in the shader emulation or a texture that is incorrectly setup. So yes, to come back to your question, having a working texture cache is a big deal because it's basically 50% of the GPU hardware :) And yes, any issue can be related to textures, because games can use different methods to achieve an effect. Some might rely on complicated texture mapping for bloom while others may not. That's why it's literally impossible to generally 'fix bloom' for every game. We have to look at it on a case-by-case basis. With AA it is a bit different. There is MSAA built into the hardware but games can, again, use any AA algorithm they want by using their own shaders and just ignore the hardware MSAA. So to sum up the answers to your question: A better texture cache can potentially fix any issue, we don't know until we try. Performance and loading time is not affected by the new texture cache, although we hope to decrease VRAM usage and micro stutters from texture loading in a future update.

cemu

Progress on controller support is currently slow but steady. There will probably be another big controller update (like 1.5.0) later this year which will address many of the reported bugs, requests and suggestions from users.

Anonymous

Cheers. Thanks heaps for the great work.

Anonymous

nice job guys very good work soon it will be as good as the wii u thx a lot for te hard work

Anonymous

You are truly wizards of the modern age! I've used virtually every emulator released in almost two decades, for every system imaginable, and your work (and progress) is simply astounding. Cheers! [We're not worthy of your greatness.] 😊

Anonymous

Amazing post. Highly appreciated. We all hunger information for this beloved software. Give all the info you can. We are not developers but we all share hunger for information and when you Team Cemu give us that... then we are satisfied. I hope amongst the new games, Monster Hunter 3 U is one of them. But if not, I will continue to wait.

Anonymous

If the Emulator can emulate games like Mario Maker and Mario Kart 8 "perfectly", will we get an option like Netplay?

Anonymous

Any option for change resolución to 1080p 1440p or more

Anonymous

Pokemon go, its hype pokemon tournament fin

Anonymous

Good, i hope can keep on faster, and can play good MARIO U and sometimes there is some problem configuring the controls to play

Anonymous

Seems amazing! Can we expect any improvements on audio, stuttering or empty message boxes for smash 4?

cemu

It's too early to tell. Native network functionality is problematic because it can get us into legal trouble while emulator based netplay is possible but is insanely challenging from a technical standpoint.

cemu

Smash 4 is a horror to emulate so don't expect any big improvements.

Anonymous

We can create expectations about the Mario Party 10?

Anonymous

Looks good so far. Will the FMV issue be fixed in 1.6.0?

Anonymous

When will we get hyrule warriors support?

Anonymous

Seeing as Bayonetta 2 seems to runs better on AMD cards than on Nvidia (far less graphical glitches), can you please provide a simple explanation and tell whether or not you believe you'll be able to overcome this issue in the future? Would you generally recommand getting an AMD card for use with Cemu?

Anonymous

Perhaps some MSAA support? XD

Anonymous

NSMBU keeps freezing for me in water-based levels. Cant play the whole world 3. Anyone else having this issue?

cemu

Nope. That's still further out. Although it might be a bit better in some cases depending on how the game handles video.

cemu

Once we figure out why it is crashing. Can't give an ETA on something where we don't know what the solution looks like.

Anonymous

when is the next news update going to be posted?

cemu

Without going into too much technical detail, the issue in Bayonetta is related to shader emulation. There are small differences in how shaders work on AMD/Nvidia/Intel hardware. AMD graphic cards usually have the advantage that they behave more like Wii U's GPU (which is from AMD as well). Usually we solve issues like the one you mentioned by figuring out the differences in the hardware that cause them and then we add special handling for Nvidia/Intel (assuming it works on AMD, sometimes it's also the other way around). In short, the problem can and will be fixed but we don't know how long it will take.

cemu

Maybe in a month or so. There are still too many graphic features missing that need to be implemented before work on MSAA can even start.