Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature]: Port to PC and/or Cemu graphics pack #13

Open
1 task done
ashquarky opened this issue Dec 16, 2024 · 1 comment
Open
1 task done

[Feature]: Port to PC and/or Cemu graphics pack #13

ashquarky opened this issue Dec 16, 2024 · 1 comment
Labels
awaiting-approval Topic has not been approved or denied feature A feature request

Comments

@ashquarky
Copy link
Member

Checked Existing

  • I have checked the repository for duplicate issues.

What feature do you want to see added?

While wrapped in a GUI and homebrew application, the core of Martini is a generic RPX decompression and patching engine. The RPXes it generates function in environments where homebrew is not usable directly.

This engine could be ported to a PC CLI application, or the patches themselves to a Cemu graphics pack.

Why do you want to have this feature?

I have been told that Martini-patched RPXes actually function under Cemu for accessing Juxtaposition. This could be invaluable for local testing and development of Juxtaposition and other web-applet-based Pretendo Network services (Account Settings etc.) and could radically simplify development.

Imagine a shell script in pretendo-docker that spins up the entire network, sets up a dummy account and the Cemu files for it, self-signs a test domain and patches the applets to load it, then starts the emulator and loads Juxtaposition in hot-reload mode, all in one shot.

(That infrastructure could also be useful for NEX development, though Martini wouldn't be used in that case.)

Any other details to share? (OPTIONAL)

See also similar changes for Inkay: PretendoNetwork/Inkay#57

@ashquarky ashquarky added awaiting-approval Topic has not been approved or denied feature A feature request labels Dec 16, 2024
@jonbarrow
Copy link
Member

jonbarrow commented Dec 16, 2024

It should be noted that in past conversations Exzap has been receptive to adding hacky work arounds in cases like the Miiverse applet to get it to function without hard-patches to the RPX like what Martini does. These conversations were limited to the Miiverse applet, but it may be worth talking to Exzap more if the main goal is just "get Miiverse running in Cemu"

Screenshot 2024-12-15 at 10 33 39 PM

Also yes I can confirm that patched RPXes do function in Cemu as expected. I dumped my entire NAND and last year and gave it to Cemu as the MLC path and, after giving Cemu some system RPLs (since it didn't emulate them at the time, this may have changed) I was able to load and use Juxtaposition:

Screenshot_from_2023-07-23_23-27-03
Screenshot_from_2023-07-23_23-32-11
Screenshot_from_2023-07-23_23-33-03

Some of the graphics are wonky but iirc this has been fixed in later revisions. Also the ParamPack Cemu was sending was broken, I had to run a local Juxtaposition server which disabled the ParamPack checks (I did try to fix this on my own, and got kinda far, but ultimately never finished it). This may have also been fixed in later updates, idk

To be transparent I'm unsure if Martini-patched NANDs will work out of the box. I have never used Martini, my Wii U this was dumped from is the one where I made manual hex edits in HxD to the RPX and RPL (which, the patched RPL is likely also required here, I did not do a ton of testing outside of these screenshots). However, the patches Martini makes should be basically the same as the hex edits I made

That being said, I still think bringing Exzap into this would also be worthwhile to see if we can scoot around needing patched RPXes/RPLs at all and just hack this into Cemu? (though this idea does sound like a fine option too, assuming we can't work out anything cleaner)

Using Cemu as a development tool for Juxtaposition with hot reloading sounds amazing, also. I wonder if it would honestly be worth using a forked, stripped down, Cemu for this specific purpose? That make more sense for that specific use case tbh, rather than trying to hack this into stock Cemu. Though it would require much more work on our part

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
awaiting-approval Topic has not been approved or denied feature A feature request
Projects
None yet
Development

No branches or pull requests

2 participants