RetroArch - Native CRT Support

Here’s a couple extra videos of me testing

The only idea I still have that I think would be a good addition would be a way for you to define the horizontal super resolution you wish to use. This is handy because with CRT Emudriver you have full control over a resolutions overscan so you can set up systems like Genisis & SNES that don’t need a lot of overscan on something like 3840x240 and something like N64 on 2560x240 and adjust the porch values to include lots of overscan, I personally used this trick a lot to optimize different systems to my CRT.

Also @Alphanu I tried Seiken Densetsu 3 but as I’m using Super Resolutions there wasn’t any changing happening other than the refresh rate, after turning off onscreen notifications it’s nearly impossible to tell there was any switching happening at all. Definitely the desired results but if you’d like I can also test this game with Native res and it might be a little more informative?

I second this as well, but more so because depending on hardware your available resolutions will differ. For example, my monitor can’t go as wide as 3840, so I use 1920.

@Monroe88 - I tried using the “Config” method you were referring to here but it doesn’t quite resolve what I was getting at. I can set it to “Config” and the ratio to “4.0” - and it does match 1920x480 quite well, but saving those settings (for 480i content) and then switching the resolution to 1920x240 the ratio still has to be switched to 8.0 for all 240p content.

It works great with the integer shader, which is how my setup is running currently, but what I’m worried about is aspect ratios after a resolution switch like we’re doing here.

Do you have interger scaling on? I set my config aspect ratio to “16.0” and interger scaling on and it works properly now between 240p and 480i although it takes a moment to switch

The delay in switching was because of the external program I was using as a wrapper to change windows resolutions. This will no longer be that case, as I have now changed this method. I have rewritten the code and now all resolution switching is done from within RA. Its much soother and qucker.

4 Likes

Wow this is exciting news! Looking forward to it!

Ok so here is a video of the new switching method. It’s a much smoother transition. In some cases you can only just notice it.

I have my degree assignment due next week so there may not be many updates. However, I will work on it when I can.

@Rion @Monroe88 @hunterk @SkyHighGam3r @anon24419061

2 Likes

This is awesome! Good luck on your assignment!

That’s beautiful. I couldn’t even tell where the switches were transitioning.

Amazing work, absolutely amazing. Thank you very much. Looking forward for the next release.

Finally sat down to test everything with just the CRT hooked up - doesn’t seem like it wants to work with Custom Resolution Utility. At least, not if I’m setting everything up correctly. It’s entirely possible I’m not using CRU properly too, as I only recently found it.

If anyone else has it, it might be worth seeing if you get the same result - which is to say: Nothing happens. It’s a no go on my system - I’ll have to look into CRTEmuDriver to play with this.

1 Like

OK guys I’m attaching the latest version here. Included in the zip is both a native and surer version. Also @Retrorepair has done some testing and found that the incorporation of refresh switching has messed with the resolution switching.

So included are 2 versions if the normal version does not work correctly, this is due to the hz switch. So use the version labeled no_hz instead. This means that if you want to switch from pal to ntsc resolution you’ll have to manually switch from 50hz to 60hz. However, if you are just interested in ntsc this should not be a issue.

I thought as I am busy doing other things ATM I would release this version so you guys can do some extensive testing. Please let me know how you get on with it.

@hunterk Could you see if someone would like to add the options into the menu and send me over the source? Or if someone can guide me through it. I also think this will be the best method of implementation.

@Abwezi @Foxhole @SkyHighGam3r

1 Like

I added a bit to the bounty so it’s $115 now. I don’t currently have a 15KHz CRT setup so I can’t really test it though.

4 Likes

Thanks for the support. If you want play these consoles they way they were designed, get one :grin: it truly is the best experience. :sunglasses:

1 Like

I added $20 to the bounty. I should be able to test tonight when I get my vga to component transcoder. I’ll have to set up crt emudriver and what not. But it doesn’t look too difficult.

2 Likes

Sorry it took me a little while to get around to testing the new build you uploaded. It handles the switch from PS1 bios to game perfectly it seems but other than that I’m finding it’s not actually switching resolutions when it should, for me at least anyways. I’m using the Super Resolution build and have attemped to use both the hz and no hz builds but still it wasn’t functioning correctly for me. N64 games ran interlaced the entire time. Tekken 3 did correctly run interlaced but I noticed a lot of screen tearing even with Vsync on I’m not sure if it’s related at all or not. Lastly I re-tested Sonic 2 and no res switch happened despite the double field option having fixed my issue previosly.

One last thing I notice is even though the fullscreen function of retroarch itself can change the resolution of any monitor it’s pointed to in the config file, this build will only change the resolution of the current main display in windows

1 Like

Ok. That’s very interesting. I’ve have had some really positive feed back as well.

Can you send me a list of the modelines you have installed?

Just to clarify, the older version using CSR.exe worked really well for you?

Certainly! http://www.mediafire.com/file/73knjd9thtdq5sm/Switch%20Res%20files%20for%20testing.zip Here’s a link, it has my modeline.txt from CRT Emudriver as well as a copy of ra_res_hz after only running Donkey Kong 64 to show it only identified it for me as 480 the entire time despite previously switching to progressive after the logo screens

1 Like

I had some time to try the new builds and have some input for you. First i tried the hz switching build, with this build there was no resolution change whatsoever (Both super and native), though the tv acted as if there was, meaning there was a hiccup on the tv itself. Also there was a lot of tearing, acting like vsync isn’t turned on, again both in super and native. The no_hz build works better but not perfect, with the Super build the resolution will change but not from progressive to interlaced, like with sonic 2. On the ra_res_hz file the interlaced res will be detected as 240 instead of 480, tried it also with micro machines v3 on the ps1 and same issue. Tearing still happens, unfortunately. Seems like there’s a vsync issue with all the builds. Native build seems to change resolution correctly in all my tests, though there is still tearing with this release also.

2 Likes

I also wanna mention some few other things that may help. First, i had no issue with tearing with the Native csr build but did have tearing with the Super csr build. Second, i noticed that there was one thing in common with all the builds that have tearing problems, in the ra_res_hz it always rounded the refresh rate to 60, and on the one build that works without tearing the refresh rate is listed as zeroes. Not sure if this means anything, just thought it might help letting you know.

2 Likes

@Abwezi Thanks for that. I believe I have found a bug that is casing issues with switch and hz. I am currently working on this.

**When it comes to super resolutions, I still have not incorporated auto switching for aspect and scale or nearest resolution detection. So ATM the more resolutions the better. this the reason for out-putting ra-res. These are on the to-do list though. **

I’ve not done much super resolution work. Looking at @Abwezi 's mode lines there are only 4 of each resolution 2560 & 3840. Is this the standard installed resolutions? It will be a good starting point for nearest neighbor resolutions.

Donkey Kong 64 is an odd one. You have to enable angryloin and a couple other setting and set the resolution to 320x240 for switching to work correctly. This is because the the other CPU drivers do not send any change in resolution. Ask @Retrorepair about these setting.

Currently I am switching device 0, I can cycle through device to change them but this would mean that your LCD may change to 640x480. This happened to me but it switched to 320x240! I didn’t even know LCD monitors could run at this low res. Once I incorporate the menu option you will be able to choose the device. Either though its own option or RAs option.

looking at your mode-line list. I would say that it is lacking quite a few resolutions. I would some more resolutions. below is my current modelines and it is growing.

> “256x240_60 15.66KHz 60.00Hz” 4.89 256 264 288 312 240 242 245 261 -hsync -vsync

> “256x288_50 15.65KHz 50.00Hz” 4.88 256 264 288 312 288 292 295 313 -hsync -vsync

> “256x480_60 15.69KHz 60.00Hz” 4.90 256 264 288 312 480 483 489 523 interlace -hsync -vsync

> “256x576_50 15.68KHz 50.00Hz” 4.89 256 264 288 312 576 583 589 627 interlace -hsync -vsync

> “320x224_60 15.64KHz 59.92Hz” 6.26 320 336 368 400 224 234 237 261 -hsync -vsync

> “320x240_60 15.66KHz 60.00Hz” 6.26 320 336 368 400 240 242 245 261 -hsync -vsync

> “320x288_50 15.66KHz 49.70Hz” 6.26 320 336 368 400 288 293 296 315 -hsync -vsync

> “320x480_60 15.69KHz 60.00Hz” 6.28 320 336 368 400 480 483 489 523 interlace -hsync - vsync

> “320x576_50 15.68KHz 50.00Hz” 6.27 320 336 368 400 576 583 589 627 interlace -hsync -vsync

> “352x240_60 15.66KHz 60.00Hz” 6.77 352 368 400 432 240 242 245 261 -hsync -vsync

> “352x288_50 15.65KHz 50.00Hz” 6.76 352 368 400 432 288 292 295 313 -hsync -vsync

> “352x480_60 15.69KHz 60.00Hz” 6.78 352 368 400 432 480 483 489 523 interlace -hsync -vsync

> “352x576_50 15.68KHz 50.00Hz” 6.77 352 368 400 432 576 583 589 627 interlace -hsync -vsync

> “368x240_60 15.66KHz 60.00Hz” 7.02 368 384 416 448 240 242 245 261 -hsync -vsync

> “368x288_50 15.65KHz 50.00Hz” 7.01 368 384 416 448 288 292 295 313 -hsync -vsync

> “368x480_60 15.69KHz 60.00Hz” 7.03 368 384 416 448 480 483 489 523 interlace -hsync -vsync

> “368x576_50 15.68KHz 50.00Hz” 7.02 368 384 416 448 576 583 589 627 interlace -hsync -vsync

> “512x240_60 15.66KHz 60.00Hz” 9.77 512 528 576 624 240 242 245 261 -hsync -vsync

> “512x288_50 15.65KHz 50.00Hz” 9.77 512 528 576 624 288 292 295 313 -hsync -vsync

> “512x480_60 15.69KHz 60.00Hz” 9.79 512 528 576 624 480 483 489 523 interlace -hsync -vsync

> “512x576_50 15.68KHz 50.00Hz” 9.78 512 528 576 624 576 583 589 627 interlace -hsync -vsync

> “640x240_60 15.66KHz 60.00Hz” 12.15 640 664 720 776 240 242 245 261 -hsync -vsync

> “640x288_50 15.65KHz 50.00Hz” 12.14 640 664 720 776 288 292 295 313 -hsync -vsync

> “640x480_60 15.69KHz 60.00Hz” 12.18 640 664 720 776 480 483 489 523 interlace -hsync - vsync

> “640x576_50 15.68KHz 50.00Hz” 12.16 640 664 720 776 576 583 589 627 interlace -hsync -vsync

> “704x240_60 15.66KHz 60.00Hz” 13.40 704 728 792 856 240 242 245 261 -hsync -vsync

> “704x288_50 15.65KHz 50.00Hz” 13.40 704 728 792 856 288 292 295 313 -hsync -vsync

> “704x480_60 15.69KHz 60.00Hz” 13.43 704 728 792 856 480 483 489 523 interlace -hsync -vsync

> “704x576_50 15.68KHz 50.00Hz” 13.42 704 728 792 856 576 583 589 627 interlace -hsync -vsync

> “2560x224_60 15.66KHz 60.00Hz” 48.23 2560 2632 2856 3080 224 234 237 261 -hsync -vsync

> “2560x239_60 15.66KHz 60.00Hz” 48.23 2560 2632 2856 3080 239 241 244 261 -hsync -vsync

> “2560x240_50 15.65KHz 50.00Hz” 48.20 2560 2632 2856 3080 240 268 271 313 -hsync -vsync

> “2560x240_60 15.66KHz 60.00Hz” 48.23 2560 2632 2856 3080 240 242 245 261 -hsync -vsync

> “2560x248_58 15.73KHz 58.49Hz” 48.46 2560 2632 2856 3080 248 250 253 269 -hsync -vsync

> “2560x256_57 15.73KHz 56.80Hz” 48.46 2560 2632 2856 3080 256 258 261 277 -hsync -vsync

> “2560x264_55 15.73KHz 55.21Hz” 48.46 2560 2632 2856 3080 264 266 269 285 -hsync -vsync

> “2560x272_54 15.73KHz 53.70Hz” 48.46 2560 2632 2856 3080 272 274 277 293 -hsync -vsync

> “2560x280_52 15.73KHz 52.27Hz” 48.46 2560 2632 2856 3080 280 282 285 301 -hsync -vsync

> “2560x288_50 15.65KHz 50.00Hz” 48.20 2560 2632 2856 3080 288 292 295 313 -hsync -vsync

> “2560x288_51 15.73KHz 50.92Hz” 48.46 2560 2632 2856 3080 288 290 293 309 -hsync -vsync

> “2560x448_60 15.69KHz 60.00Hz” 48.33 2560 2632 2856 3080 448 467 473 523 interlace -hsync -vsync

> “2560x464_60 15.69KHz 60.00Hz” 48.33 2560 2632 2856 3080 464 475 481 523 interlace -hsync -vsync

> “2560x480_60 15.69KHz 60.00Hz” 48.33 2560 2632 2856 3080 480 483 489 523 interlace -hsync -vsync

> “2560x496_58 15.76KHz 58.49Hz” 48.80 2560 2632 2864 3096 496 499 505 539 interlace -hsync -vsync

> “2560x512_57 15.76KHz 56.80Hz” 48.80 2560 2632 2864 3096 512 515 521 555 interlace -hsync -vsync

> “2560x544_54 15.76KHz 53.70Hz” 48.80 2560 2632 2864 3096 544 547 553 587 interlace -hsync -vsync

> “2560x560_52 15.76KHz 52.27Hz” 48.79 2560 2632 2864 3096 560 563 569 603 interlace -hsync -vsync

> “2560x576_50 15.68KHz 50.00Hz” 48.28 2560 2632 2856 3080 576 583 589 627 interlace -hsync -vsync

Once native is fully working, which I’m hoping will be soon. I will start work on correcting super resolutions.

@hunterk There is a version of SwitchRes standalone for Linux, Its been ported by one of the guys who has done work with Calamity. This could be used as a front-loader to load RA temporally. Once I have got this windows version to a stable state, I’ll crack on with Linux.

@Foxhole I believe the bug that I have found is the main issue with the resolutions not switching correctly and causing tearing on the native resolution side.

@Bahn_Yuki Thanks for helping out. If you have issues with the latest version, please download one of the alpha version above. This used a external exe for switching and worked quite well. Please let me know how you have got on.

1 Like