libretro / flycast

Flycast is a multiplatform Sega Dreamcast emulator. NOTE: No longer actively developed, use upstream repo for libretro from now on - https://github.com/flyinghead/flycast
http://reicast.com
GNU General Public License v2.0
152 stars 77 forks source link

(Android) Impossible to perfectly synch video in Atomiswave to DC ports #1055

Closed RaduNastase closed 3 years ago

RaduNastase commented 3 years ago

Easy to observe with King of Fighters XI character select screen. The round writing around higlighted character portraits, should animate/scroll perfectly smooth, but it has a constant micro-stutter every half second.

Tried Retroarch 32, both GL and Vulkan and 64 both GL and Vulkan. No setting, audio or video mitigates that, neither inside the Core or Retroarch itself. In Core settings, if Framerate is set to Full Speed, the frame counter shows constant 60 fps, but the micro stutter persists. If Framerate is set to Normal, it shows average 59.3 but it behaves EXACTLY the same, so there's a problem here. Showing 59.3 should result in exacy that king of stuttering, but synching to 60 should be perfectly smooth, not behave the same.

Internally, the game simply doesn't sync to Retroarch's video settings as it should.

With the exact settings, DC games and normal Atomiswave games have smooth scrolling.

SeongGino commented 3 years ago

Android user (OnePlus 7 Pro, Android 10, RetroArch Aarch64), can confirm this is not the case. Framerate options aren't visible in new core builds, at least with the recommended Threaded Video setting on. Regardless, video output is as smooth as the Android system allows, which can be difficult depending on your combination of handset and Android release. Also enabling Synchronous Rendering would be beneficial to maintain perfect VSync.

Please provide information on the device you're using, and confirm that this issue doesn't persist in other Dreamcast games, and RetroArch as a whole - This might be helpful to you.

RaduNastase commented 3 years ago

Oneplus 7, and i can assure you i KNOW what i am talking about.

The issue can be easily observable in the scene i described, and many casual gamers will just ignore it and say it is perfectly smooth, but it is simply NOT the case here. Threaded Video inside the core only adds more micro stuttering, that's in the official documentation, so that's not even a discussion.

And as i said before, it is not Retroarch, or my settings or my lack of knowledge/understanding. Android 100% allows for absolutely perfect scrolling if all is right with the A/V sync implementation.

All other DC games, played in the same core (ex. Project Justice intro photos scrolling, CVS1 character order selection, vertical writing scrolling), or Mame core, or FBN core arcade games, i test and play daily, work with >perfect< sync, perfect scrolling, no micro stutters.

Thanks for the feedback, but the issue is there and is very obvious if carefully observed in moments such as the one described by me.

SeongGino commented 3 years ago

The issue can be easily observable in the scene i described, and many casual gamers will just ignore it and say it is perfectly smooth, but it is simply NOT the case here. ... Thanks for the feedback, but the issue is there and is very obvious if carefully observed in moments such as the one described by me.

All of this insinuating that I've not done exactly what you've suggested before replying, that's pretty presumptuous, no? My working setup, with the settings as described by me enabled, does not exhibit any frame pacing inconsistencies in the several games I've played, including the same exact AW conversion in question. And I should know, because I'm incredibly sensitive to bad frame pacing, particularly with this device in the past. But this problem simply isn't manifesting at all no matter how hard I squint - if not invisible to the naked eye, then certainly not to the degree of every half second.

In recognition of your response, I'm unsure what else I can say or suggest.

RaduNastase commented 3 years ago

Please provide a 10 seconds screen recording (60 fps) video, if its not too much to ask. I will do the same. Not youtube, but original file in wetransfer.

Check it out: https://we.tl/t-1QiPlMmwsL (I chose off screen as i didn't want the built in recorder to any any doubt) You need to watch it carefully to observe it.

Big Edit: Ok, so i managed to find the settings that make it smooth.

First thanks a lot for helping me, you obviously know your stuff. Second, for anyone that has similar issues as me, the settings that affect this micro stutters are: inside Retroarch "disable" Audio Sync (this was my problem), and inside the Core, ser Framerate to "Normal".

For faster emulation, KofXI can use "per-strip" as i found no graphical errors with this option.

Now, can i ask you to test a certain special move, that produces slowdown and slight audio stutter? Maybe with your help i can fix this as well. The Character Tizoc has this special grab move (2 half circle backwards + punch) that has an extra background animation that makes the game stutter for a couple of seconds. Could you try it a few times, with you normal settings, and give feedback please?

Thanks a lot man!