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

[libretro] Option to disable VMU 1 (or emulate MU instead) for Sonic Shuffle #723

Closed
GHNeko opened this issue Aug 30, 2022 · 18 comments
Closed
Labels
enhancement New feature or request libretro Specific to Libretro core

Comments

@GHNeko
Copy link

GHNeko commented Aug 30, 2022

Please Note: This form is the minimum required information for submitting bugs.
Removing this form may lead to your issue being closed until it is completed.

Platform / OS / Hardware: RetroArch + Flycast Core / Windows 8.1 & Arch Linux

Github hash:

Hardware: N/A

Description of the Issue

I was sent here by bslenul after being corrected and told that this is a Flycast issue.

"Yes but both the standalone and the core are maintained from the repo I linked, so even if it's an issue that only affects RetroArch it should be posted there." as per bslenul from the libretro/RetroArch github.

Here is the issue as copied from RetroArch

Sonic Shuffle is a party game for the Sega Dreamcast. It's a first party game that makes heavy use of the VMU, but Sega realized that not everyone would have their LCD VMUs and coded behaviors that trigger based on what device is in slot 1 and if there is a device in slot 1.

Generally in VS mode, when you load into the game with a VMU in Slot 1, when the player is selecting cards, their hand is shown on their VMU screen instead of in game. However if a normal memory card is in slot 1 (no screen) or there is no device in slot 1 (VMU in slot 2) the game will instead display the player's hand on the screen.

This is important because while this is a non issue for single player play (as you can emulate the vmu display), for multiplayer purposes, emulating VMU display essentially is showing all players hands to everyone and that's not how you play this primarily multiplayer game lol.

If you do not emulate the VMU display, but the game still sees a VMU instead of an MU in slot 1, it will still hide the cards on screen and then as a result you cannot see what card you have, breaking a lot of the functionality of the game for multiplayer as the game's design is focused around knowing what you have and it is designed to be a game that's played with friends.

So tldr - Because RetroArch only emulates a VMU and not also an MU, and always has a VMU in Slot 1 of Controller A or Controllers A-D; you cannot trigger the contingency for when the game/console sees that there is either an incompatible device or no device in slot 1.

To further supplement this idea, if you play Story Mode (single player only experience), the players cards are always face up regardless of what's in Slot 1 as by design its a single player experience and there is no issue in having your cards visible.

Debugging Steps Tested

  • Fill in any steps already tried here
  • Begin each new line with an asterisk
  • If no steps are required, please skip

Logs Gathered


Please paste the contents of the log / logs here
You may leave this field blank if you have none.

Screenshots

(Replace this line with any issue screenshots)

@GHNeko GHNeko added the bug Something isn't working label Aug 30, 2022
@flyinghead flyinghead removed the bug Something isn't working label Aug 30, 2022
@flyinghead
Copy link
Owner

I don't see how emulating MU (VMU without LCD) is going to solve the issue. Flycast only has one output screen, where both players' hands will be displayed, either by the game or as a VMU screen. In both cases each player sees the other player's hand.

Obviously this limits the interest of this game mode but I don't see any reasonable solution.

@GHNeko
Copy link
Author

GHNeko commented Aug 30, 2022 via email

@bslenul
Copy link
Contributor

bslenul commented Aug 30, 2022

This is how it works:

  • If a VMU is in slot 1 the cards are hidden on-screen:

image

  • If no VMU in slot 1 the cards are shown:

image

If I understand the issue correctly, this is the problem:

In standalone as a workaround you can simply disable slot 1 VMUs and use slot 2 instead, then ask other players to look away when it's your turn to pick a card.

However with the Libretro core the cards will ALWAYS be hidden on-screen for player 1 (or for all players depending on your VMU core options), and if you enable the OSD for the VMUs they'll be shown at all time so you don't want that either.

Being able to emulate MUs or being able to use slot 2 VMUs instead of slot 1 would fix the issue with the core.

@flyinghead
Copy link
Owner

Got it. I had forgotten the libretro side of the equation.

@flyinghead flyinghead added enhancement New feature or request libretro Specific to Libretro core labels Aug 30, 2022
@flyinghead flyinghead changed the title Issue with how memory cards are handled for Sonic Shuffle when using Flycast in RetroArch, causing unintended behaviors in the game that can't be rectified for multiplayer. [libretro] Option to disable VMU 1 (or emulate MU instead) for Sonic Shuffle Aug 30, 2022
@GHNeko
Copy link
Author

GHNeko commented Aug 30, 2022 via email

@bslenul
Copy link
Contributor

bslenul commented Aug 31, 2022

I'm messing with this since yesterday, I made it so that you can configure each slot for each device from the core options (with options being hidden if needed depending on the device type):

flycast_slot_options.mp4

Works fine with Sonic Shuffle, after "unplugging" the A1 VMU the cards now appear on-screen:

sonic_shuffle.mp4

I don't feel comfortable sending a PR tho, I'm not a dev so code-wise it's probably ugly AF :/ But from my tests it works pretty well. Changes are here: bslenul@afee40e

Also I put the options in "Input" category, idk if it'd be better to move them in "System" or maybe create a "Ports Expansions" category...

But maybe Flyinghead has something completely different in mind to handle this anyway :p

edit: Added it's own category + now it handles the VMUs on-screen which I completely forgot before :p

flycast_slot_options2.mp4

@GHNeko
Copy link
Author

GHNeko commented Aug 31, 2022

Yeah this is pretty much the implimentation I was hoping for from a functionality pov. Thank you for the work and hopefully this is acceptable for Flyinghead.

@bslenul
Copy link
Contributor

bslenul commented Sep 12, 2022

Updated (see the edit from my previous reply), if you want to give it a try: https://drive.google.com/drive/folders/1ON-687HWJwD5DYkNfBBh8_adFm6be4sN?usp=sharing

It shouldn't mess with your saves at all, but just to be extra careful you might want to backup your VMUs first.

@GHNeko
Copy link
Author

GHNeko commented Sep 12, 2022 via email

@MichaelTheriot
Copy link

Updated (see the edit from my previous reply), if you want to give it a try: flycast_windows.zip and/or flycast_linux.tar.gz

It shouldn't mess with your saves at all, but just to be extra careful you might want to backup your VMUs first.

This is awesome, thanks! I had the same issue with Sonic Shuffle and this resolves it.

This also completely solved another issue I had with using extra VMUs since it is now trivial to eject, move the files on my machine around, then insert again. Before I was creating save states and restarting each time I had to perform this.

For what it's worth, I instinctively went to the Input menu to search for a feature like this before finding this patch, but I think the Controller Expansion Slots menu is also intuitive now that I see it.

@bslenul
Copy link
Contributor

bslenul commented Sep 16, 2022

Thank you for testing ❤️ I just wish I was more confident about this to make an actual PR 😓

And yeah, I wasn't sure about the category thing, but I thought it felt weird to go in "Input" to un/plug VMUs (although it kinda makes sense on Dreamcast).

@blueminder
Copy link
Contributor

Flycast has a ggpo branch but that is only for 2 players and that likely won't change.

Netplay functionality hasn't been in its own branch for a long time. It's a mainline feature at this point.

I also got 4 player working over GGPO in Flycast Dojo and hope to add the changes upstream after releasing it. I'm just fixing some replay details at this point before that happens.

https://www.youtube.com/watch?v=KdFxpg2x9Ns

@GHNeko
Copy link
Author

GHNeko commented Sep 16, 2022 via email

@blueminder
Copy link
Contributor

As far as this feature goes, there's no real distinction between commercial or homebrew games.

@GHNeko
Copy link
Author

GHNeko commented Sep 22, 2022

Roger that! Thanks for the clarification then. I'm still looking forward to either the patreon release or public release.

@gamefb
Copy link

gamefb commented Apr 30, 2023

Is there any news as to whether or not something like this will get pushed?
Also, how would the patch get added if I already have flycast installed through retroarch/EmuDeck?

@mattpoulin789
Copy link

mattpoulin789 commented Aug 13, 2023

I wish that the retroarch flycast emulator dlc was updated on the steam version of retroarch to include the Controller Expansion Slots menu from the version at https://github.com/flyinghead/flycast/files/9891425/flycast_windows.zip or https://github.com/flyinghead/flycast/files/9547724/flycast_linux.tar.gz so whenever you install the flycast emulator dlc for retroarch on steam it will have the Controller Expansion Slots menu to be able to enable and disable the VMUs in the steam version of the flycast emulator

@flyinghead
Copy link
Owner

PR #1368 from @bslenul now allows to use VMU slot 2 instead of slot 1, solving this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request libretro Specific to Libretro core
Projects
None yet
Development

No branches or pull requests

7 participants