u/ioncodes

Gecko, a new GameCube and Wii emulator, is now public!
▲ 977 r/EmuDev+2 crossposts

Gecko, a new GameCube and Wii emulator, is now public!

I'm here to present "Gecko" a new, cross-platform and modern GameCube and Wii emulator written in Rust! It's been a work-in-progress project for a while now and I'm extremely happy to finally share it publicly :)

In case you don't care about my ramblings, here's a link to the GitHub repository!

Here's also a 15min video of me playing Final Fantasy Crystal Chronicals: The Crystal Bearers on my Wii emulator!

Many games already work extremely well, but it's very far from being on Dolphin's level! GameCube games tend to work better than Wii games currently, but I know of at least one game that is perfectly playable even on the Wii. More to this a bit later!

Here are some highlighted features:

  • GameCube & Wii support
  • Cranelift based JIT recompiler (PPC, DSP, vertex parser)
  • WGPU based renderer supporting all major platforms
  • Modular audio backend
  • ISO, RVZ, ZIP support
  • Frame pacing
  • and much more!

Gecko aims to offer a playable and accurate experience for the average user. However, Gecko is also tailored to reverse engineers and homebrew developers. It's packed with tons of goodies that aren't mentioned in the above list! To name a few more (if you're not interested skip ahead!):

  • Lua scripting
  • An advanced yet beautiful debugger
  • Rich logging system
  • Symbol parsing from ELFs and IDA Pro databases
  • RenderDoc captures with tons of debug markers
  • Multitool to decode/encode IPLs, extract DVD filesystems, disassemble PPC/DSP code
  • Recording audio to .wav files
  • Built-in diagnostics for JIT and GX (GPU)

The emulator runs on all major platforms, it has been tested on: Windows, Linux, macOS and the browser (incl. the debugger). Here's also an old YouTube video of it (poorly) running on an iPad: https://www.youtube.com/watch?v=ACW36TXlUhM, because why not?

I also automated screenshot gathering over a selection of games, these are hosted here (mainly used to catch regressions/improvements, but also useful to gauge compatibility):

I'd be more than happy to see people try it out, share their experience and perhaps even contribute!!

To finish up the post I'd like to also share the "Why?". Why does this emulator even exist? I've always been very interested in low level stuff and figured I could do something to make 12yo me proud: Create an emulator that can play my childhood favorite game (Final Fantasy Crystal Chronicles: The Crystal Bearers on the Wii). I ended up going on a multi-year journey learning about emulator development, with the goal to improve my skills and ultimately do Wii.

I mentioned earlier that a game is already perfectly playable on the Wii... That is my childhood game, so to me, this project is already a huge success despite it not being anywhere as mature as Dolphin! :)

u/ioncodes — 5 days ago
▲ 62 r/EmuDev

Hey guys, I'm here to tell you about a small story I'm very happy and proud to share!

I started my emudev journey on December 8th, 2023. Back then, I tried emulating the GameGear. What prompted me to do it though?

I had a specific goal in mind! I wanted to eventually emulate a specific game on a specific console, a game that I played for years as a child: Final Fantasy Crystal Chronicles: The Crystal Bearers on the Wii. It was an odd game, and if I recall correctly, it wasn't a very well received game either; but as a child, I absolutely loved it and I still play it to this day.

I've been doing all sorts of low-level work for a long time, even things that were mildly emudev-adjacent but I never *actually* ventured into it properly. So I thought, I'll try to make young-me happy and proud and give this a shot. It's been a hell of a ride, I spent almost every day learning about new architectures, how GPUs/PPUs work, how to efficiently abstract them, etc. since I made my first commit back in 2023.

I also made tons of mistakes, and I knew that would happen, so I split up my end goal into smaller milestones: Emulate every console I cherished one way or another as a means to learn from my mistakes, build on the previous and finally make it to the finish line. As part of my adventure I emulated: GameGear -> GameBoy -> GameBoy Color -> GameBoy Advance (which was actually extremely well received here) -> PlayStation 1 -> GameCube -> and finally the Wii!

It was an extremely enjoyable time and believe me when I tell you, none of the emulators are even close to perfect so there's still tons to do! When I started I told myself I'll move on to a new hobby once I manage to get into the menu of the Final Fantasy game, but honestly, I might have actually found a new hobby that I want to stick with for a while so I will definitely be trying to push the limits :)

I will be open sourcing the emulator soon, just taking care of a few things for a proper first public release!

u/ioncodes — 19 days ago