libretro / scummvm

ScummVM main repository
https://www.scummvm.org
GNU General Public License v3.0
4 stars 6 forks source link

Legend of Kyrandia - stuttering intro, sound problem #38

Closed KamiLordus closed 1 year ago

KamiLordus commented 1 year ago

I tested the cd and floppy versions and both have the same problem. Stuttering in the intro sound. I tried different core options but nothing helps. I will add that the same problem is if I play on a monitor with a screen refresh rate of 60hz, and 120hz.

spleen1981 commented 1 year ago

can you provide RA log with DEBUG level set?

KamiLordus commented 1 year ago

retroarch.log

While Legend of Kyrandia is running.

spleen1981 commented 1 year ago

what's the value set for Vertical Refresh Rate, Estimated Refresh Rate and Set Display-Reported Refresh Rate in Settings > Video > Output?

Can you try also to disable frameskip from core options?

KamiLordus commented 1 year ago

Vertical Refresh Rate 60.000 Hz Estimated Refresh Rate 119.993 Set Display-Reported Refresh Rate 119.930

edit. Yes, and a mix of different settings. Unfortunately, no difference.

spleen1981 commented 1 year ago

Vertical Refresh Rate 60.000 Hz Estimated Refresh Rate 119.993 Set Display-Reported Refresh Rate 119.930

ok, you should click on Estimated Refresh Rate or set manually Vertical Refresh Rate to 120 I guess.

KamiLordus commented 1 year ago

ok, you should click on Estimated Refresh Rate or set manually Vertical Refresh Rate to 120 I guess.

This setting makes it much worse. Audio stuttering in the intro is even more frequent. Previously, when the sound stuttered, the fps was between 110-115 Now from 95-110

edit. @spleen1981 distable consecutive screen updates shouldn't work for this problem? If I remember correctly, some time ago someone reported this problem.

spleen1981 commented 1 year ago

Can't replicate this with 60 Hz monitor... maybe a video would help.

Can you check also what happens if you enable Timing > Disable consecutive screen updates?

spleen1981 commented 1 year ago

@spleen1981 distable consecutive screen updates shouldn't work for this problem? If I remember correctly, some time ago someone reported this problem.

with this setting on titles fade-in/fade-out effects will be gone for this game, and there will be no sound during those missing effects.

KamiLordus commented 1 year ago

That's something different. Thanks for the explanation.

edit. Timing > Disable consecutive screen updates enabling this option doesn't change anything either

KamiLordus commented 1 year ago

I also checked the Amiga version via scummvm. And it's the same with the intro.

spleen1981 commented 1 year ago

can you try another video/audio driver combination, like vulkan+dsound?

KamiLordus commented 1 year ago

Vulkan yes, i try desound when return to home.

KamiLordus commented 1 year ago

I tested a lot of different retroarch settings. Video drive like vulcan, gl core, gl, audio driver wasapi, dsound various video synchronization options. Nothing works on this problem, even setting the monitor to g-sync mode causes this intro to keep stuttering. I also checked on another computer and it's the same problem. Only standalone scummvm (2.7) does not have this problem.

spleen1981 commented 1 year ago

Same issue with https://github.com/libretro/scummvm/commit/c6cb7c3c8d7216ffe2cf1bfd7def73fc22208335?

KamiLordus commented 1 year ago

Unfortunately I am not able to test c6cb7c3, I get this error: Bez tytułu

It seems that the current kyra.dat enginee is not compatible with this version.

spleen1981 commented 1 year ago

https://drive.google.com/file/d/1Z0Yqu-YRB3qWA0pFojAWb7Anr5JUrFAW/view?usp=drive_link

KamiLordus commented 1 year ago

This file (kyra.dat) is empty 0 b.

spleen1981 commented 1 year ago

replaced

KamiLordus commented 1 year ago

With the default scummvm core settings, it's pretty much the same. However, setting the options: frame skip to Treshold Fremship threshold % 60 fixed frame no skipping It makes the intro work very well. Fps can drop slightly from 60 to 58 for a moment, but it is practically inaudible. The music is even better when the MT32 emulation is turned on, and also no stutter.

I would like to add that I already checked this solution with acd638cb a few days ago. Unfortunately framskip treshold doesn't work at all in this case at 120 fps.

KamiLordus commented 1 year ago

I noticed one thing. Games with a gob engine at 120 fps, for example, work quite similarly. Gobliins CD Goblins 2CD Goblins 3 CDs Wodruff There is stuttering at start up and between start screens. Interestingly, floppy versions of the same games work fine. Allow timing inaccuraties fixes Gobliins 1 and 2. Goblins 3 and Wudryff run way too fast with this option.

None of these problems as described above are present in c6cb7c3, this also fixes the described problem with Legend of Kyrandia and Longest Journey (you don't need to check the allow timing inaccuraties option). Games at 60 fps perform much better than at 120 (without any additional side effects), on 120 hz monitor. @spleen81 can we go back to c6cb7c3? Because in my opinion this is the best solution, without the need (except Legend of Kyradia intro :) ) to look for the right settings in a given game.

spleen1981 commented 1 year ago

Latest fixes after c6cb7c3c8d7216ffe2cf1bfd7def73fc22208335 are not dedicated to the 120Hz issues, but general improvements valid for 60Hz as well. I'm still looking into it because there are a couple of things to be improved, when I'm done I will ask you to test again maybe. I'm using this issue for this just because 120Hz it's a more "challenging" test environment...

Apart from the improvements above, for the specific issue of 120Hz monitors and higher, if eventually the result at full frame rate will be worst than 60Hz, the idea is to add an option to select a fixed refresh rate or automatic from retroarch measurement. So eventually in your case you will just select 60Hz and you're done, but the quality should be better than c6cb7c3c8d7216ffe2cf1bfd7def73fc22208335 anyways.

KamiLordus commented 1 year ago

Great idea from adding the option to toggle screen refresh rate.

spleen1981 commented 1 year ago

hi @KamiLordus can you test the staging_master branch?

KamiLordus commented 1 year ago

@spleen1981 thank you very much for the new update. I tested many games with 60hz enabled: The Legend of Kyrandia problem described earlier disappeared after turning on 60hz (intro sound stuttering). The same problem with Goblins 3 CD and Woodruff thanks to 60hz has been fixed (stuttering at the beginning of the game). Longest Journey also launches without a problem. Blade Runner and Nightlong at 60hz require additionally enable the allow timing inaccuracies option, because without this option the cursor is very slow - but it's not a problem. Goblins 3 CD and Woodruff require additional cursor settings - but that's no problem either. I only noticed a tiny typo in the description of the "Sample rate" option - erset instead of reset (core settings).

edit: Ok i found one problem (60 hz option) DreamWeb (floppy, Cd) cursor is very slow - allow timing inacuraties fix cursor but makes the game run too fast.

spleen1981 commented 1 year ago

How it is working with cap framerate disabled @120Hz?

KamiLordus commented 1 year ago

120hz works very well. I no longer see a problem with stuttering games (Goblins 3, for example). The mouse cursor also works fine. Only Legend of Kyradia - Book One (CD) has a sound problem at 120hz. But now with the new option you can set this game to 60hz so it's not a problem.

spleen1981 commented 1 year ago

Same problems with DreamWeb, Blade Runner and Nightlong at 120hz?

KamiLordus commented 1 year ago

No, all three work very well at 120hz and don't require any additional core settings. In my opinion, 120 hz currently performs better than 60. I've tested about 100 games and haven't noticed any issues (except Legend of Kyradia).

spleen1981 commented 1 year ago

Ok then, 120Hz in your config is actually frame rate cap disabled, which is the default setting. I think problem e.g. with Dreamweb with cap @ 60Hz may be due to your specific setting (frontend at 120hz and game at 60hz? there may be something in the logs) as I cannot replicate with no cap at 60hz. Regarding LoK intro, 120Hz may just be too quick for how the engine is written vs how libretro works, hard to say without direct testing. I'll merge those fixes to master anyways, results look good to me.

KamiLordus commented 1 year ago

Ok then, 120Hz in your config is actually frame rate cap disabled, which is the default setting. I think problem e.g. with Dreamweb with cap @ 60Hz may be due to your specific setting (frontend at 120hz and game at 60hz?

Yes, everything is correct. Retroarch allows you to save settings for each game separately, so that's no problem. Just set 60 hz for LoK, 120 for the rest. Thanks again for the update.