libretro / beetle-psx-libretro

Standalone port/fork of Mednafen PSX to the Libretro API.
GNU General Public License v2.0
305 stars 130 forks source link

[Suggestion] Resume content automatically for a few frames when ejecting disc? #793

Open bslenul opened 3 years ago

bslenul commented 3 years ago

Description

I think it would be great if we didn't have to manually resume content after ejecting a disc before inserting a new disc, I feel like it's not super intuitive for most users.

Maybe automatically resume the game (in the background) when ejecting disc? Like just for a few frames until the core "registers" that the disc was ejected? I have no idea how these cores handle that, but resuming is not required with PCSX ReARMed and Duck/SwanStation.

Expected behavior

No resuming required:

Actual behavior

Resuming is required (maybe not for every game? not sure):

Steps to reproduce the bug

  1. Start Metal Gear Solid from disc 2.
  2. Select "New game".
  3. Try switching disc without resuming, you'll get stuck at the "Insert disc 1" screen.
i30817 commented 3 years ago

I think this is already the case if you use m3u. Or supposed to be anyway. I know it doesn't help much, but it's something you could try.

RA does have the tendency to 'fix' things and leave them unfixed in other parts of the program because of its many many different ways to do things for all use cases.

bslenul commented 3 years ago

Hey :)

Nope, I should've said it in the description but I've tested with .m3u, .pbp and just the .cue + "Load New Disc" (AKA append disc), in every case the screen is stuck at "Insert Disc 1", until I eject/resume/insert.

It's not a huge problem when you're aware of it but I've seen a lot of users getting stuck when disc switching is required, thinking they did something wrong, it's really not intuitive, especially when it's not needed with other cores. And I just noticed it but even in the docs the resume part isn't mentioned: https://docs.libretro.com/library/beetle_psx/#swapping-disks

edit: It's also not the only core affected, Flycast and the game D2 is a good example, you also have to resume before inserting the new disc, or the game will just wait on the "Insert Disc X" screen. I wouldn't be surprised if there are more cores with this "issue".

ichee commented 3 years ago

Assigning the eject hotkey to a button or key can workaround the issue, instead of opening the menu to eject.

Also, disabling pause while menu is open can also bypass the issue.

bslenul commented 3 years ago

Yes there are workarounds, but hotkeys if you're on controller it's a PITA to manage because you may need these buttons for other cores and RetroArch hates hotkeys and overrides (https://github.com/libretro/RetroArch/issues/6641) :p The "Pause When Menu is Active" OFF works fine indeed, I used it for a while (but for some inexplicable reason having the games running in the background bothered me so I turned it back ON... 😅 ).

But yeah the goal would be to make it as user-friendly as possible (especially for new RA users!), so no hotkeys, no extra options, just eject, switch, insert, enjoy :D

ichee commented 3 years ago

I don't know much about the 'Disk Control' interface, but maybe it would be possible to toggle 'Pause When Menu is Active' whenever eject is selected.

That should effectively fix the issue.