cizia64 / CrossMix-OS

Enhanced OS for the TrimUI Smart Pro
GNU General Public License v3.0
191 stars 27 forks source link

GBA audio issues in 1.1.0 #31

Closed corngoblin closed 1 month ago

corngoblin commented 2 months ago

I updated to 1.1.0 this morning and I'm getting some weird audio jittering now in pokemon games using mgba.

cizia64 commented 2 months ago

Interesting. Can you try with audio output set to oss instead also in retroarch ?

cizia64 commented 2 months ago

Hi, if you still have GBA slowdowns, can I ask you an extract of your config files please ? Emus\GBA (full folder) RetroArch\.retroarch\config\mGBA (full folder) RetroArch\retroarch.cfg

cizia64 commented 2 months ago

OK, the GBA stuttering is coming from the disabled threaded video change. So it will be fixed on next release. On the v1.1.0 you can fix this problem easily: go in "System Tools" app , "EMULATORS -> RESET RETROARCH CONFIGURATION" and try again.

luizluan commented 2 months ago

I leave threaded video disabled, especially on GB and GBC core it seems that the framerate goes crazy. I noticed two options that improve this by disabling audio synchronization or video threading but it depends on the core.

cizia64 commented 2 months ago

What do you mean by "the framerate goes crazy" ?

Yes it seems that "threaded video" can have bad impact on some cores. May be on low demanding cores which uses only one CPU core ?

I saw some comments about NES,SNES and GB which are working better with "threaded video" disabled (bad effect mainlyvisible during scrolling), do you confirm ? Can you mention some games which are good to make tests with bad framerate or stuttering ?

At contrary "threaded video" seems necessary on GBA or FBneo.

... it seems that it's going to require a lot of attention to have the right settings on the TSP !

luizluan commented 2 months ago

Sorry for not providing an explanation. I don't know exactly how to explain the problem with the framerate with threaded video. GB games have incorrect FPS and the game doesn't seem to run correctly. I think it's worth leaving it on as default

luizluan commented 2 months ago

It turns out that I didn't know how to disable this option on a specific core since activating it depending on the core causes retroarch to crash. But now I know.

luizluan commented 2 months ago

About games try: Kid Icarus GB Kid Dracula GB Bonks GB

The Bonks game runs slowly on the GB (a lot of stuttering by the console) but with video thread it gets worse.

I didn't have a problem with other GB-only cores, but it's an option that I usually leave disabled in retroarch because of this. It could be a GB-only problem.

luizluan commented 2 months ago

In the other Gb core this doesn't seem to happen only in Gambatte.

luizluan commented 2 months ago

On the R36s I disabled audio sync and it had the same effect as disabling threadvideo.

Only for Gambatte, the other cores, I didn't change them.

cizia64 commented 2 months ago

For now I don't know how to reproduce this framerate problem on GB for example. I will try with bonks, thank you for the advice.

Yes, to customize "threaded video" per folder edit RetroArch\.retroarch\config\Gambatte\GB.cfg and add video_threaded = "false"

Diabling audio sync is the same as activating fast forward, normally you can't play in good condition like this.

luizluan commented 2 months ago

You're right, I used this option together with the video thread disable, with lock fps.

corngoblin commented 2 months ago

Sorry, I'm just now seeing this. I'll try these changes later when I get home.

Edit: I went ahead and tested resetting the retroarch config and that fixed it. mgba no longer stutters.

Thank you! That was driving me crazy.

Kvn0l commented 2 months ago

@luizluan can you test with "audio resampler" set as "CC"? This option is less intensive than default "sync" and may have any impact

cizia64 commented 2 months ago

@Kvn0l interesting, it's not easy to find information about the difference between "cc" and "sinc" audio resamplers. How to know if CC is less demanding ? Do you think that it should be the default option in CrossMix ?

Kvn0l commented 2 months ago

@Kvn0l interesting, it's not easy to find information about the difference between "cc" and "sinc" audio resamplers. How to know if CC is less demanding ? Do you think that it should be the default option in CrossMix ?

@cizia64 To be honest, I also don't really know what this do XD but in my personal testing on some old & very low end android phones, it performed better in certain cpu bound conditions, it does not seems to have any drawback (maybe latency increases?, setting latency very low is one of those situations where it performed a little better in some cases) so prob can be set default but we need to see the results first.

EDIT: Actually, found an old issue on Retroarch, a contributor indeed said the other resampler options are "lighter" than sinc https://github.com/libretro/RetroArch/issues/386#issuecomment-56311177

cizia64 commented 1 month ago

About games try: Kid Icarus GB Kid Dracula GB Bonks GB

I have tested these 3 games with "video threaded" enabled and I don't have any problem 🤔 So may be the RA setting from CrossMix v1.2.0 will improve the situation...

cizia64 commented 1 month ago

This should be fixed now with CrossMix v1.2.1. Can you confirm ?

cizia64 commented 1 month ago

The slowdown was due to ALSA audio output, switching to OSS and no more stuttering...except that OSS is not working with bluetooth, so I've made a trick to automatically switch to ALSA again when a bluetooth device is connected (which means indeed less good performances when a bluetooth device is connected but for now we have no other choice).

https://github.com/cizia64/CrossMix-OS/commit/b1f7ccb5762925f266f4f7a983acf328351e7d1e

So I close this issue ;)