skmp / reicast-emulator

Reicast was a multiplatform Sega Dreamcast emulator
https://reicast.emudev.org
Other
1.1k stars 345 forks source link

Reicast performance deteriorates on Android 8 and 9. #1604

Open zhuwz1 opened 5 years ago

zhuwz1 commented 5 years ago

Hi. My phone is ONEPLUS 3T, with Qualcomm Snapdragon 821 and 6G RAM. I believe it is powerful enough to run DC games in full speed. In Android 7, Reicast performance is really good. The Play Store bulid has some graphical glitches on some 3D games such as Cannon Spike. But the games runs in full speed without frame skip. When I use some debug builds such as debug-f454c79, everything is fine. But after I flashed my phone with Android 8 and 9, I cannot get a good performance no matter how many builds I have tried. Either I can see obvious frame skip, or the sound is often discontinuous. Strangely the RetroArch with Reicast core has almost perfect performance on Android 8 and 9 when running DC games. I also have a Redmi Note 7 with Qualcomm Snapdragon 660 and 6G RAM. And both Reicast and RetroArch are running smoothly on MIUI Android 9. Hope the performance issue can be fixed in next stable bulid. Thank you very much.

kage2051 commented 5 years ago

Have you tried lowering the rendered resolution? It's under the 'Scaling' setting, 100% means 1080p assuming that's your phone's native resolution. A scale of 67% on your settings will make the games run at 720p.

zhuwz1 commented 5 years ago

I just tried and it makes no difference. I also tried deleting the emu.cfg and Reset EMU, and they are still useless. In Android 7, I can get good performance in default settings. In Android 8 and 9 I can also get good performance from RetroArch Reicast core with default settings. I remember in some builds I can set Resolution Mode to CRT (640*480). But unfortunately in my ONEPLUT 3T these builds cannot load any game after Android 7 (in Android 6 they work fine). When loading game, they jump to DC start menu directly. I cannot load game from this Start Menu either.

kage2051 commented 5 years ago

Not even with the latest beta? I don't like RA personally, it has more input lag and tends to force close randomly.

zhuwz1 commented 5 years ago

Hi, I just tried the latest debug-a6b773a build on Android 8. The performance is better, but still not as good as RetroArch.

  1. In DC logo booting screen I can hear a little buzzing sound.
  2. During the game play, sometimes the video and sound becomes choppy. Lower the Scaling percentage does not help. In RA the video and sound are very fluent, even if I change Internal Resolution to 1440*1080.
  3. When I resume game from emulator menu, the game speed become very fast for a while.
  4. In some 2D fighting games, such as KOF98 and KOF99, sometimes I can see small grid on character sprite. And even if I have turned off Widescreen, the screen still extends on the right side. RA does not have these issues.

I also prefer stand-alone emulator. I really hope these issues can get fixed in future. In Android 7, Reicast really have excellent performance. Also will you consider adding NAOMI/ATOMISWAVE support in future? Right now RA is the only choice if I want to play them on Android.

skmp commented 5 years ago

It's likely the performance issues are due to our audio and speed limit implementations and not related to the hardware. You can turn off the speed limit (Audio -> Limit FPS) to test that,

RA has loads of hackery to get things working, while we prefer to fix bugs the right way instead of hacking our way around them. RA also has a much more mature audio streamer and such :).

I'll add the speed limiter refactor to my todo list in #1664 - thought none of my devices is affected.