A whole year has passed since the last part of this series, unfortunately I did not spend much time working on decaf-emu over that time but I do have some screenshots I can share.

2018-12-23
I started work on trying to make a clean interface to decaf which can be used for debuggers as part of some refactoring work around the imgui based debugger.

2019-02-04
Be safe out there everyone.

2019-02-08
Disney Epic Mickey 2 going ingame, albeit at an incredibly low FPS.

2019-08-18
Around this time I started working on the Qt based debugger, this would be using the same debug interface to decaf that I worked on earlier whilst refactoring the imgui debugger.

The motivation for writing a debugger in Qt was so that we could move rendering of the debugger out of the game window. This was because we were using two Vulkans graphics queues in order to render, one which was responsible for rendering the imgui overlay and the game screens, and one which was used for running the graphics backend. The graphics backend would draw frames as fast as the game provided it, and the display would be running independently at 60 fps just drawing the most recent frame produced by the backend.

Unfortunately it turns out that AMD graphics drivers only support having one Vulkan graphics queue, this would make it difficult to continue with this model of rendering. So I decided that we should move the display to the graphics backend and consequently we would need a replacement for the imgui debugger, as there is no point in a debugger which is tied to the games frame rate.

2019-08-19
Wow you can select text, amazing!

2019-09-10
More progress on the debugger.

2019-09-13
Finally added a disassembly view - which is the most important part of a debugger!

2019-09-15
Totally did not copy the style from IDA.

2019-09-22
Added some function outlines, this is about as fancy as the disassembler will get I imagine. I am not looking to make the next Ghidra.

2019-09-26
This is the first screenshot of a game displaying entirely from the graphics backend, with only a single graphics queue (so in theory, AMD should work now!).

Should Shovel Knight be the HelloWorld of Wii U emulators?

2019-10-19
Mario Kart 8 is finally running in game again, albeit still ugly as ever. One of the causes of ugliness is the current lack of mipmap support.

2019-10-26
I do actually use the debugger some times, so maybe it was worth the effort. Here I am stepping through some code in the Internet Browser.

2019-11-07
There was an open pull request on decaf for a long time implementing a game list. I eventually got around to tackling it, but unfortunately ended up rewriting most of the code.

This is what a icon list view looks like in Qt by default. I am not sure why anyone would prefer it to behave like this as opposed to neatly ordering. Rest assured the actual icon view looks nicer than this one.

2019-11-09
So it turns out the decaf-emu svg logo we had that someone made for us a long time ago (sorry I forgot who), was not a real vectorised svg but instead a series of PNG files embedded inside a svg file - which is kind of pointless when you think about it really.

So I spent the day learning how to use inkscape (in terms of UX, you get what you pay for) and remade the logo using vectors.

And then I learned that SVG has multiple versions and it turns out one of the features I was using for the white stroke outline was not supported in the Qt SVG renderer. So I had to redo the outline again.

2019-11-09
As you can see, I do not waste my time playing any games and instead spend it all working very hard!

9/11

2019-11-17
When working on a difficult problem sometimes it just helps to take the time to very carefully draw a visual representation to help understand your problem.

In this case I was working on a new implementation of RECT rendering. For background, the Wii U's GPU supports rendering of RECT primitive types - where they only give you 3 vertices and the GPU magically figures out the 4th vertex. This is not a supported primitive mode in Vulkan and must be emulated using geometry shaders.

You can see the initial work I did on it in this commit:
https://github.com/decaf-emu/decaf-emu/commit/baf45d318e51a74f9d43f6e2e94f6bb89d36345a

And then Brett came along and improved it, fixing the problems with attributes:
https://github.com/decaf-emu/decaf-emu/commit/d1dcc0921a5423ca5cf60df7f69e398d824d734b

2019-11-17
After fixing a silly bug with GX2PatchDisplayList we were able to go ingame on Super Mario Maker, albeit with a minor problem in that the blocks do not render.

2019-11-30
I changed the Registers View to match the other widgets, I think it looks nicer.

2019-11-30
I discovered that you can make the blocks appear in Super Mario Maker when you are placing one of these lil spikey guys. They disappear again as soon as you release the mouse button. But without context from this screenhot we can pretend the game works :).

2019-12-02
After fixing an even sillier bug in GX2CopyDisplayList we were able to get "in game" on the Internet Browser. However we do not have networking implemented yet so there is not much browsing you can do.

2019-12-02
Bonus images from testing some games:



LLE of swkbd.rpl works great!

Wind Waker crashes almost immediately after going in game, this is about as far as you can get.

Nintendo Land, TODO: Motion controls.

2019-12-03
That brings us to today, sitting here writing this after yet another year has passed. The first commit to the project was in May 2015, so we are already 4.5 years in and we still cannot play 144hz 4k Zelda!! But I feel like decaf-emu is slowly but surely moving in the right direction and the most important thing is that I still enjoy working on this project, even if at times there are some very tedious problems to tackle.