Skip to content

Play Riivolution packs through RiftWii - #65

Open
KakarottoCake wants to merge 1 commit into
wiidev:enhancedfrom
KakarottoCake:riftwii-riivolution
Open

KakarottoCake wants to merge 1 commit into
wiidev:enhancedfrom
KakarottoCake:riftwii-riivolution

Conversation

@KakarottoCake

@KakarottoCake KakarottoCake commented Sep 28, 2026 •

Copy link
Copy Markdown

This lets GX play Riivolution packs by handing the game to RiftWii, a Riivolution-compatible loader. It replaces my old Friivolution draft (#63): no config struct and no extra settings, just one per-game option and one small file.

How it works

  • Game Load settings get a "Riivolution (RiftWii)" row for Wii games. Clicking it cycles OFF, then each pack in sd:/riivolution/ whose <id game="..."> matches the game.
  • When a pack is picked, GameBooter::BootGame calls RiftWii::BootGame right after the game's settings are resolved (after the language fallback, before the IOS setup). It loads apps/riftwii/boot.dol and starts it with arguments through AddBootArgument / BootHomebrewFromMem, the same way Nintendont's argsboot works.
  • RiftWii then finds the game, turns on that pack (its options are the ones the user saved in RiftWii or Riivolution, else the pack's defaults), applies the settings below and boots. No RiftWii menu.

Settings passed on

GX RiftWii argument
Video Mode video_mode (Region Patch counts as System Default)
Deflicker Filter deflicker
Video Width video_width
Game Language language
Private Server, Custom Address server, wfc_domain (NoSSL only is passed as off)
Game IOS cios (a custom 248 to 252, else auto)
Ocarina gct (the game's .gct from the cheat codes path, when it is on the SD card)
Return To return_to

The rest (Dol Video Patch, EmuNAND, Alternate DOL, hooktype and so on) isn't passed; RiftWii does its own patching. The argument format is in RiftWii's docs/HEADLESS.md. An unknown argument or value makes RiftWii stop and name it, so a mismatch shows up right away.

Files

  • source/usbloader/RiftWii.{hpp,cpp}: new. Finds RiftWii (homebrewapps_path, then sd:/apps/riftwii), lists the game's packs and builds the arguments.
  • CGameSettings.{h,cpp}: one string, RiivolutionPack (saved as a file name, empty is off).
  • GameLoadSM.cpp: the row.
  • GameBooter.cpp: the hand-off.

Testing

The RiftWii side (the arguments, finding the game, the pack and the settings) was run in Dolphin. On this side the changed files compile cleanly; I haven't run this build on a console yet. My local full build stops on the socket headers in portlibs with the current libogc, which is unrelated to this change, so CI is the real build check.

It needs RiftWii 2.3.0 Beta or later, which has the argument support. 2610-255 Beta or later is best: a loader that hands a game over right after letting go of the USB drive could launch before the drive was listed again, and RiftWii said the game was not found (seen with a WiiFlow plugin). RiftWii now waits up to 10 seconds for the drive, and its boot.log names the IOS and what USB answered. RiftWii's tests now also check every value this hand-off sends, so a change on that side can't quietly break GX launches.

Adds a per-game "Riivolution (RiftWii)" option to the Game Load
settings. It cycles through the packs in sd:/riivolution made for the
game. When one is picked, the game is handed to RiftWii with the settings
chosen here, the same way Nintendont is started with arguments.
@fryelum

fryelum commented Oct 6, 2026

Copy link
Copy Markdown

Just curious, does this code also use Claude/Codex like RiftWii?

@DraconicNEO

Copy link
Copy Markdown

Just curious, does this code also use Claude/Codex like RiftWii?

Definitely would be good to know this as well. It's generally good practice to disclose how and what AI is used for if at all.

@KakarottoCake

KakarottoCake commented Oct 6, 2026 •

Copy link
Copy Markdown
Author

Just curious, does this code also use Claude/Codex like RiftWii?

Some yes. I have people helping me when I write the code though, so I'm not going in blind here.

@fryelum

fryelum commented Oct 6, 2026

Copy link
Copy Markdown

Just curious, does this code also use Claude/Codex like RiftWii?

Some yes. I have people helping me when I write the code though, so I'm not going in blind here.

Quite unfortunate to hear its usage is here at all, but, is it just removed from the commit message or..?

@KakarottoCake

KakarottoCake commented Oct 6, 2026 •

Copy link
Copy Markdown
Author

Quite unfortunate to hear its usage is here at all, but, is it just removed from the commit message or..?

Commits are just kept clean to describe what changed in git. Not really here to debate tooling, but if you spot an actual issue or regression on console, let me know.

@fryelum

fryelum commented Oct 6, 2026

Copy link
Copy Markdown

Commits are just kept clean to describe what changed in git. Not really here to debate tooling, but if you spot an actual issue or regression on console, let me know.

I won't test personally, but the reason I was asking in the first place is because I stay clear from anything using GenAI. But, good to know what's being used here, I'll just keep using my discs

@MidnightThunder

Copy link
Copy Markdown

I would love to see this implemented, as my disk drive is broken.

@KakarottoCake
KakarottoCake marked this pull request as ready for review October 9, 2026 03:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants