Venomalia / UniversalDynamicInput

a custom button pack for dolphin that supports over 150 games!
Creative Commons Zero v1.0 Universal
131 stars 15 forks source link

Add Super Mario Sunshine (Stardust version) Textures #196

Closed teconmoon closed 11 months ago

teconmoon commented 11 months ago

This PR adds some textures used by the Switch version of Super Mario Sunshine, codenamed Stardust internally. I've been careful to make sure that the changes made here don't conflict with the original retail release.

The Stardust version of the game is just a GCM rom that can be extracted and played with Dolphin, however the GC emulator used in that Switch release does a lot of dynamic texture injection, so a few things like trigger buttons are missing when playing in Dolphin since that emulator somehow splits shooting while running or standing into separate button actions. The textures for that new button normally get injected over unused symbols in the font table, which in the context of DIT made it easy to just plop the button texture there.

The solution was mapping R-Analog over where the R Trigger would normally go, and R-Digital goes in the texture slot where the game is looking for the injected texture. The final result looks like this:

GMSP01_2023-07-29_09-01-57

Venomalia commented 11 months ago

why do you use the "Triggers/R-Analog" you can make multiple "Triggers/R" spots?

teconmoon commented 11 months ago

why do you use the "Triggers/R-Analog" you can make multiple "Triggers/R" spots?

I chose Triggers/R-Analog to facilitate showing correct buttons in the stardust version of the game in situations where R and R-Analog have to be mapped separately, such as with controllers that have digital triggers instead of analog.

When mapping Super Mario Sunshine using a game controller that has no proper analog R trigger, usually R will be mapped to one button for standing and spraying, and R-Analog will be mapped to another button for running and spraying. When using a controller with a proper analog trigger, it will be mapped to both R and R-Analog like usual.

If I had chosen Triggers/R in the JSON and just had it show up in multiple spots, then in the example screenshot I posted, the text would read, "Press RT or RT to shoot water!" instead of "Press RB or RT to shoot water!". To be clear, this only benefits the stardust version of the game. The retail version of the game would continue to display whatever is mapped to R-Analog (which must be mapped to play the game).