Games plays slowly or displays gray/black top screen

Hello everyone. I am trying to play Kirby Triple Deluxe, Planet Robobot and Sonic Generations, but none of them are working properly.

Triple Deluxe is the only one that I can actually play, but it slows down often.

Planet Robobot runs noticeably below full speed at the title screen and main menu, after starting a new game the opening movie that is supposed to show on the top screen just displays gray, as does the gameplay, making it unplayable. The bottom screen displays properly.

Sonic Generations just displays a black screen with only the time and ring count showing, making it unplayable. The bottom screen displays properly.

I tried disabling the hardware shader and accurate multiplication (both these options enabled where causing extreme slow down and the graphics to be all mumbo jumbo), v-sync, hardware render and shader jit, and linear filter but none of that helps.

I know my computer is old, but it can play GC and Wii games at full speed with no performance issues. I would think it could also play 3DS games at their default 400x240 resolution without issues.

Core2Duo E8500 3.16 GHz
Raedon HD 5850 1GB
6 GB Ram
Windows 7 HP 64bits
Citra nightly build 1757

In order for us to provide better support, we need to see the log generated by citra. This guide will walk you through how you can obtain the log file: How to Upload the Log File

Comparing what games you can run between different emulators isn’t really relevant in the context of emulation. Different emulators require different things from the hardware after all. The main reason that you’re running into issues with performance is:

  1. Your CPU’s Single thread rating is around 1320, recommended for Citra is around 1800.
  2. You’re using an AMD GPU on Windows and Citra only has an OpenGL backend, unlike Dolphin which also has a Vulkan backend.

AMD’s OpenGL drivers on Windows are hot garbage. This results in a big bottleneck unfortunately. You’d be better of using Linux and the open source Mesa drivers there. Most users going this route have reported more than 3x the performance they get on Windows with the same system. Since, you know, Mesa’s devs actually give a crap.

Actually, after some more fiddling, I noticed that the speed for both Kirby games run around 100% if hardware shaders and accurate multiplication are enabled, but then the graphics look like in the screenshot I put here.
citragp1

If I disable both those settings, the graphics are normal, but the speed does not go above 70% and often dips much lower when taking actions.

So it seems I need those two setting on, but somehow without the graphics getting messed up (and I already tried deleting the opengl folder in the shaders folder).

I know AMD has poor opengl support, but I have played PC games and other emulators with opengl and they ran fine. And I am playing in the native x1 resolution, it is not like that should be difficult to work properly.

Also, the emulation only uses around 30%-60% of the CPU, so it is not like my computer is being stressed.

Dolphin also has a DirectX backend, which is what I use. Why does Citra not have DirectX as an option?

Most likely an issue with the GPU driver. Not really odd considering the age of your hardware. Not to mention that AMD’s OpenGL implementation has always been horrible. Even modern AMD drivers still struggle with Hardware Shaders in a lot of games.

Deleting that opengl folder is only relevant for the Disk Shader Cache, nothing else.

Again, comparing different emulators and games is pointless. Every emulator, and every game being run in an emulator, tends to require different things from the graphics API, in this case OpenGL. If one driver has something very specific broken about their driver that is almost never used in most use-cases, it’ll never get fixed. Then when an emulator, which uses the graphics API way differently from normal programs requires that very specific broken thing, it’ll break things. There isn’t much we can do about this when the driver is literally doing things wrong other than introduce hardware specific hacks, which is bad practice in development. As for the resolution, the driver is at fault, not the hardware itself. It’s not that the hardware is incapable of running things properly, it’s the driver making the hardware produce a bad result. Again, if you’d use Linux with Mesa drivers, you wouldn’t have this issue.

Citra only uses 1 core for running games. This is a technical limitation because the 3DS also only uses 1 core, so all 3DS games have been developed with that in mind. Also keep in mind that we’re not just running the 3DS games, we’re having to translate instructions meant for the 3DS’ hardware into something that your PC can understand. That’s where most of the CPU’s resources is being used. This obviously isn’t a 100% efficient process by any means, so even when Citra only uses 1 of your CPU cores, it usually won’t be fully utilized regardless (keep in mind, I’m pretty sure your GPU’s OpenGL driver is bottlenecking the hell out of your CPU’s performance in this case, so all of this probably doesn’t even fully apply to you).

Couple reasons. Most of all is because Citra is a cross-platform emulator. Developing a new back-end is a huge task, spanning years of active development to complete. To do all that for a backend that can only be used on Windows when we have MacOS, Android and Linux to consider would be a waste.
A Vulkan back-end would be more preferable, but we simply don’t have the devs capable and able to implement that at this time. So Citra is OpenGL only for the foreseeable future.

TLDR: Your hardware is too old to run Citra on Windows without running into bugs like that. If you want to use Citra on that hardware, use Linux. That’s the long and short of it.

Ok, thanks for explaining how this stuff works for me and your assistance.

Would replacing my AMD card with a Nvidia card allow Citra to play the games, or is my hardware just overall too old even if I got a comparable (performance wise) Nvidia card?
(I was thinking of putting in a GT 1030, I think it is on par with the 5850 and would be fine to stick in my old PC. I was meaning to replace my card anyway since I do not like AMD that much. I would much rather get a whole new computer with more modern hardware but that is out of the picture for the time being).

I tried using Linix once, but I found it too confusing. But thanks for the idea of that. It is interesting that it would run better.

You’d still be running into performance issues in heavier games due to your CPUs single thread rating being below minimum spec, though it would most definitely improve most games to be at least playable.