libretro / libretro-super

Super repo for other libretro projects. Fetches, builds and installs.
MIT License
409 stars 284 forks source link

Revert "Update swanstation_libretro.info" #1825

Closed miguedevel closed 4 months ago

miguedevel commented 4 months ago

As I commented on libretro/libretro-super#1823 rewind works perfectly fine on the Swanstation core.

DarthMew commented 4 months ago

I think your definition of "perfectly fine" is way too optimistic here. Anyway, you can bypass the restriction by enabling the "Bypass Core Info Save States Features" option inside RetroArch's Core submenu, but I'm not dealing with a feature that I know (currently) doesn't work correctly with SwanStation's JIT, so please close this PR.

miguedevel commented 4 months ago

OK so what you're saying it doesn't work when using recompiler mode but it works fine on interpreter mode? I even switched to recompiler mode now and seems to work fine. Is this bug only on specific platforms? Can you explain why I'm being too optimistic with saying that it works fine?

DarthMew commented 4 months ago

On systems that are easily capable of handling rewind with heavy cores like Beetle PSX and even Beetle Saturn , it rewinds SwanStation with such reduced performance that it causes noticable audio crackling and slow rewind speed (<40fps with JIT enabled vs a smooth 60fps with the interpreter, both with Rewind Frames set to 1).

As I've said before, people can bypass the restriction easily enough, but unless someone can assist in making sure rewind works allround with one of the key features of SwanStation (its JIT), I find it better to have it disabled as a precaution.

hizzlekizzle commented 4 months ago

Yeah, it's easy enough to bypass the info/savestate lockouts, so we tend to err on the side of giving a good out-of-the-box experience. Otherwise, we get an endless stream of support requests because "rewind slow on swanstation. how fix?" etc.

miguedevel commented 4 months ago

These are my thoughts on this:

  1. Out of the box, Rewind is disabled and the Rewind option clearly describes how it has a performance impact.
  2. Just as easy as it is to bypass savestate lock with an option manually by the user, so is disabling rewind.
  3. The support requests will change from "rewind is slow" to "hey rewind used to work why did it stopped working" (like me!)
  4. If the slow rewind with JIT/recompiler is an emulator core bug, why is there no open issue on the repo for it (with reproducible steps) to give it more visibility so that maybe someone can tackle it.
hizzlekizzle commented 4 months ago

You make some reasonable arguments, for sure :)

From the support perspective, sure, we have a brief period of recalibration as people who used rewind with the core in the past are surprised about losing it, but once that transition period ends, we're done. OTOH, if we leave it in a state that's suboptimal on an ongoing basis, those support questions never end.

Savestate shenanigans are generally poor-performing when it comes to dynarecs. I believe upstream disables the dynarecs whenever they do runahead, so we would probably need some mechanism for doing the same thing for rewind.

fpscan commented 4 months ago

Alright, at this point it's good to close this PR.