r/rust 1d ago

🛠️ project A huge update on Gecko, my GameCube and Wii emulator!

Post image

I already made 2 posts, so if you're looking for the first post incl. some Q&A go here and if you want to see the last update go here.
TLDR: I made a GameCube and Wii emulator written in Rust, with many developer tools built in (a debugger, GPU FIFO replayer/debugger, and so much more). Last time I posted about a user-friendly launcher/UI written in Rust.

Today I'm sharing my project again, as I finally was able to fix many bugs and also implement a few cool new features. To summarize in short:

  • Huge speed improvements across the board. Many games that technically worked but weren't playable due to performance now work just fine (Example: LEGO Batman)
  • Savestates! You can now save and resume at any point in time
  • Freecam support in the debugger: You can now detach the camera and peak behind the scenes in any game :)

All in all this means that many games such as the LEGO games and also the Super Mario Galaxy games are now fully playable. Here is a video of Super Mario Galaxy!

I appreciate everyone's support and am looking forward to the next update! For the brave and curious I can recommend grabbing today's nightly release (dev branch) as I just pushed new fixes that make games like Xenoblade Chronicles work!

As per usual, the important links:

Feel free to connect with me! I frequently post and talk about technical bugs, challenges I faced and how I fixed them! :)

PS: I've been working on a new multi system emulator based off of my cores, supporting all major platforms and a cool UI concept for both the "average" user and developers! If you want a sneak peak before the official announcement look here. It already supports SNES in the browser (also fully written in Rust)!

Upvotes

6 comments sorted by

u/sturmen 1d ago

This is awesome! Especially with the extra debugging tools. I think that integrating these developer tools with an MCP server will be super valuable to the community.

u/ioncodes 1d ago

I use the MCP only to categorize crashes on scale through a pipeline, helps me figure out what to look at next based on pure numbers across 1000+ games. It's totally possible that the integration has bugs beyond that specific use case, but yes in theory everything is "exposed"

u/Nelieru 1d ago

Can you explain more about this? What does it do and how does it work?

u/ioncodes 1d ago

Every now and then (usually when I update the screenshots) I run a tool that works similar to the screenshotter utility in the repo. It goes through my NAS that has all the game files. Whenever a game crashes, a small model is launched locally with the same parameters and the MCP configured. It is then instructed to identify the crash reason (e.g. a GX issue, CPU problem, etc.) and to run a few basic "diagnostics", e.g. try to summarize what the crashing code does/is supposed to do. Once it's done with the whole library it will summarize the crashes as a CSV. At the end I'll for example see that X games crashed due to a loader or JIT bug

u/Barefoot_Monkey 1d ago

That is huge! Well done.

Off to check out that multi-system emulator...

Looks really nice. What do you use for the debugger UI?

u/ioncodes 1d ago

GPUI! Sadly my code isn't going to be super nice... I started using/learning it before it started taking off, I imagine the docs are much better now. Might have to rewrite a good portion of it, but that's a problem for future-me, looooong after my first release!

I'm planning to go public in the next 1-2 months, as soon as my GBA core starts running some homebrew :) I already made a GBA emulator so it shouldn't take too long