Progress Report december 2025

I had high hopes for this release, especially after getting commercial games to boot in the last build.

Progress is still being made, but slower than I had hoped. A lot of that comes down to my own expectations, underestimating how long things would take and thinking this should be straightforward.

Controller Configuration System

The main user-facing feature in version 0.4 is a comprehensive controller configuration system. Users can now configure and use physical controllers, or customize keyboard controls for gameplay.

Features include:

  • Support for multiple controller types: Pro Controller, Dual Joycons, Left/Right Joycon, and GameCube Controller
  • Visual controller representations that light up when buttons are pressed, providing real-time feedback
  • Full button mapping for all inputs, including analog sticks, face buttons, triggers, and the D-pad
  • Deadzone adjustment (Modifier Range) for analog stick sensitivity
  • Support for up to 8 players

The system is mostly complete, though there are still some rough edges to smooth out. Things like profile management and mouse support are not there yet.

That said, it is functional and provides a solid foundation for actual gameplay once compatibility improves.

Game Browser Infrastructure

I wanted to work on the game browser, and I did spend time building the infrastructure for it, but the only visible part of that work so far is that users can now add game directories in the configuration settings.

However, the actual game list display is not implemented yet. So while the foundations are in place, there is essentially nothing visible to show for it yet.

The Debugging Time Sink

A substantial amount of time was spent trying to get Team Sonic Racing to boot. The reason it fails is not obvious, especially since it works perfectly fine in my reference copy of yuzu.

There are no errors, no unimplemented function calls triggering breakpoints, nothing in the logs. It just fails silently.

I have been comparing code, aligning implementations, and trying to narrow down the difference. In general, I designed things so that when something still needs to be implemented, it hits an `UNIMPLEMENTED` macro that shows up clearly in the logs. That is not happening here. So either I have introduced a bug that causes something to fail further down the line, or there is something about the architecture that is causing a fundamental issue. I will not know which it is until I find it.

I will keep comparing source, cleaning things up, and trying to work out what I am doing differently. It might take a week, or it might take another six months, but I will work it out. This will stay as a side effort while I continue to improve the rest of the emulator.

It will slow me down, but working through this in the background is necessary to understand what is causing the issue.

What’s Next

I am hoping next year will be better and that I can get the emulator into a good state for regular use. In the short term, my next goals are:

  • Complete the game browser – Actually display the game list that the backend is already building
  • Improve game compatibility – Try to find and fix the issue with Team Sonic Racing
  • Performance optimization – Fast memory, shader caching, and general performance measurement
  • Quality of life – The general feel of using the emulator: fullscreen, pause, end emulation, etc.

Download Links: