RetroArch - Native CRT Support

First of all: Thank you so much for this @Alphanu! Being able to play Neo Geo games, amongst others, the way they should be with CRTSwitchRes, coupled with the new Low Latency-mode, has just turned Retroarch into retro-gold for me! Perfect quality output? Check! Lower input-lag than real hardware? Check! :smiley:

Some questions then. FYI I am running a fresh install of Retroarch with CRTSwitchRes at 2560p-resolutions and mode-lines:

  • Is it possible to force 480i-games into 240p instead? (I have only come across this with PSX games, a.k.a. Tekken 3 and the PSX logo intro). I get really bad performance when running interlaced, probably because of too slow GPU? (Radeon 4850). CPU should manage though (8700K). Any ideas?

  • As for now I can’t get Mupen64 core running, it instantly crashes Retroarch. Parallell core works, but seems a bit slow. Has anyone got Mupen64 running? Or tips on how to set up Parallell properly?

  • I understand the reason for expanding GB, GBC and GBA’s vertical resolutions to fill the screen but in most games I am not a fan of the vertical scrolling artifacts this introduces. Is there a way to launch them in a native 144p, or 160p instead? I would love to be able to switch between native and expanded on the fly :slight_smile:

  • Maybe noob question, but how can I find out the current active resolution after having launched a game? It would be good for troubleshooting.

If you want to force 240p for 480i content, then you don’t really need to have res-switching, just set your machine to 2560x240@60 Hz modeline and be done.

If you have a very fast CPU, you can use the angrylion gfx plugin and cxd4 RSP plugin with ParaLLEl-N64 and get very accurate, authentic output.

Most GPUs won’t put out <200p, AFAIK. However, you can use the super game boy border shader to center it and fill up the dead space. I’m not sure how this interacts with res-switching but it’s what I’ve always done on my arcade monitor.

Since the whole point of CRTSwitchRes is to “allows the emulators to output the correct video resolutions and refresh rates as the original consoles and arcade hardware did”, isn’t the current method of handheld resolutions (not being integer scaled and thus looking “wrong” and introducing artifacts) kind off breaking the whole idea of this original intent? The Raspberry Pie Retropie cores can output 144p and 160p and looks nice, so I was just thinking that a Windows PC could do the same. But then I am not tech-savvy and like you say, maybe it is not possible? I would love having a choice if at all this is in fact possible.

EDIT: Just found this “240 x 160 @ 59.730000 GBA” in the documentation wiki so I guess it should work if I run native res.

I will try your PSX and N64 suggestions, thanks :slight_smile:

Hi @DatMonkey for cores like GBA you will want to turn integer scaling on. This should fix the horizontal artifact-ing. In most cases I am not doubling the resolution as this will not work for NTSC as your limited to 240p. Instead I draw the original image at its normal size within a 200p window. Only games that run below 120p are doubled, this is fine but the issue is that the horizontal scale does not work 100% without integer scale. So turn it on and just save a core override as it needs to be off for different cores.

On windows you can run the Arcade OSD software that comes with CRTemudriver. This will tell you the current resolution. ALT tab out of RA make sure you have created a shortcut on the desktop for Aracde OSD and just run it. On Linux switch to the desktop and load terminal and just run xrandr.

The reason to have integer scale off is because aspect ratios use floats so for resolution 258x224 the aspect ratio is 1.157857 or 11.428571 if using super resolution 2560x224. If you have integer scale on it will round this down to 1 or 11 respectively. I’m not sure if this is the intended behavior for RA but it is how it works. Giving you the incorrect aspect.

As @hunterk says in most cases you cannot get lower than 200p this is a Windows limitation, but also hardware limitations. Also I see you are using a 4850, this will also be an issue for you especially in interlaced. The best Radeon cards to use are 5xxx or above, Calamity mention’s this over at Arcade controls.

With that said Linux is another ball-game I am switching as low a 160p ATM and would assume lower is possible.

@hunterk @Abwezi @astos The current Linux version should work with current 31khz games at least MME4CRT_GA will. So if there are cores that run 31khz games someone could start some testing and let me know how it goes.

@Sir_Kevith I see you have mentioned bsnes with this issue. I have been doing a lot of testing with bsnes as I am going to submit an issue. It does not always report the correct resolution when loading a game, so the CRT code receives the wrong information. I am not yet sure what the cause is for it is, but I can defiantly say its an issue with bsnes. Thus far it happens with all the variants too.

2 Likes

@hunterk Once I am done with my EMA I will be porting the xrandr code used in Linux over to the XrandR.h library. Could you mention that to the devs, Just in case someone else was think or has started work on it.

Sure thing. I don’t think anyone has started yet, but I’ll bring it up just in case.

1 Like

Yes the whole point is to get games which originally ran on CRTs to run in retroarch as originally intended. Handhelds ran on LCDs with much lower resolutions so there will always be a trade off.

I’m pretty sure any official adapter for handheld games to run on a CRT added borders to get round this which is basically what we are doing here.

Thanks @Alphanu! Turning integer scaling on solved it completely :smiley:

What Radeon card is good enough to run 480i? Any card from the 5xxx? And what would be the benefit of getting say a 79xx card or similar - the ability to apply more shaders? Something else?

On another note, I got N64 running through Parallell working much better. I had to disable V-sync and Hard GPU-sync and now the stutters are gone. Thought I’d share this if someone else experiences similar issues. However, I cannot get the VI overlay filter working. All I get is a black screen. I can still hear the sound of the game though. This is probably not the right place to ask, but if anyone has gotten Parallell Angrylion+VI Filter working with CRTSwitchRes I would really like to know how. For now I use the Advanced AA-shader and think it looks pretty authentic, but I would prefer the VI filter obviously.

Is there a way to have the RetroArch menu displayed in 240p instead of the current interlaced one? My screen just flickers like crazy.

No, there is not. However, this is only set for menu only. The menu will scale with the current game loaded so if you are running snes and press F1 the menu will be in 240p.

Its been designed to give the maximum possible size for CRT in menu only so you can see more when choosing cores games and settings.

If we’re expecting them to use RGUI for the menu instead of XMB anyway, it should look the same at 480/240

1 Like

OK, cool. Well it would be a simple toggle like CRT switch to engage 240p menu! I can add this when I get back to working on this, in a few weeks.

1 Like

OK, as @hunterk has enlightened me into the fact rgui should scale and show everything similar to 480i in 240p. I have made this quick change to my fork. As there are many other changes not ready to merge with RA you’ll need to download and compile my source.

@DatMonkey

1 Like

Thank you, looking forward to it! Almost everything I play is progressive so keeping everything looking the same will be nice :slight_smile:

1 Like

What’s a normal ETA until a change like this appears in a regular Retroarch nightly? Github is a bit over my abilities.

I’ve created a pull request for this and an aspect ratio fix for Linux. Once merged I will let you know.

It has been merged. So it will be in tonight’s nightly.

1 Like

Hi,

I get this error on ubuntu 18.04 and both are installed. sh: 1: xrandr: not found sh: 1: xdotool: not found

Any suggestion is wellcomed.

with Ubuntu you’ll need to install xdotool using “sudo apt-get install xdotool” I’m not sure why you are seening xrandr not found, I am sure ubuntu 18 uses xrandr!? I’ll look into that one and get back to you.

Are you sure it does not say xrandr output not found? or similar

Thanks Alphanu, I have xdotool and xrandr installed and retroarch says sh: 1: xrandr: not found sh: 1: xdotool: not found

That’s a strange one. I assume when your in terminal and run xrandr it works ok?

Have you tried running RA in super user mode?