Repository navigation
Play Riivolution packs through RiftWii - #65
KakarottoCake wants to merge 1 commit into
Conversation
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.
|
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. |
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..? |
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 |
|
I would love to see this implemented, as my disk drive is broken. |
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
sd:/riivolution/whose<id game="...">matches the game.GameBooter::BootGamecallsRiftWii::BootGameright after the game's settings are resolved (after the language fallback, before the IOS setup). It loadsapps/riftwii/boot.doland starts it with arguments throughAddBootArgument/BootHomebrewFromMem, the same way Nintendont's argsboot works.Settings passed on
video_mode(Region Patch counts as System Default)deflickervideo_widthlanguageserver,wfc_domain(NoSSL only is passed as off)cios(a custom 248 to 252, else auto)gct(the game's.gctfrom the cheat codes path, when it is on the SD card)return_toThe 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, thensd:/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
portlibswith 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.lognames 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.