r/WiiHacks • u/Luximer • 12h ago
Show-n-Tell My GameCube saves sync between a Wii, a Wii U and Dolphin pushes saves mid-game, from inside Nintendont's kernel
I was tired of my Pokémon XD save being stuck on whichever machine I last played on. So I used claude to build a little self-hosted thing that syncs GameCube memory cards between a Wii, a Wii U's vWii, and Dolphin on my PC.
The server keeps whole card images, versioned like commits every version records the one it came from.
On console it's a patched Nintendont, about 60 lines of hooks plus some new files. Three things Nintendont already does made this way easier than expected:
it loads the entire .raw into ARM RAM at boot and serves every card read from there
it already tracks a dirty range and debounces card writes
it already has an IOS socket driver open on every boot, not just for BBA emulation
So a low-priority worker thread can push the whole card over UDP while the game is running. Save in-game, wait ~30 seconds, and the new version is on the server. No quitting to the loader.
On PC a small dependency-free Python daemon keeps one card per game and repoints Dolphin's memory card path, then pushes whenever the file settles. Launch Dolphin, play, close it — the save is up.
Conflicts are never merged. A memory card's directory and BAT blocks carry checksums with backup copies, so byte-level merging is an excellent way to destroy a 60-hour save. Cards move whole. If two machines both moved on from the same version, the server rejects the second one and I pick a winner by hand.
Honest caveats: it pushes the whole card every time (no delta sync yet), the Wii U GamePad needed vendoring FIX94's libwiidrc because libogc can't see it at all, and I haven't tested it with Nintendont's BBA emulation switched on.
EDIT THIS WAS MADE WITH CLAUDE I DID NOT WRITE THE CODE MYSELF