video_aspect_ratio for "super resolution" vertical arcade games

I have a 15 kHz CRT which has a maximum vertical resolution of 240p or 480i at 60Hz refresh rate (limitations of the 15kHz horizontal sync rate).

I’m using a set of “super resolution” modes of 1920x224p, 1920x240p, 1920x480i, etc, with the CRT. I’m using the Linux KMS video context driver in Retroarch, and I set the config like:

video_fullscreen_x = 1920
video_fullscreen_y = 240
video_aspect_ratio = 8
aspect_ratio_index = "19"

and this makes the 4:3 aspect ratio, horizontal, games display more or less properly on the horizontal orientation CRT. The video_aspect_ratio is calculated by just dividing video_fullscreen_x by video_fullscreen_y and this works OK.

Now I’m looking at the case of vertical arcade games, which had vertically oriented CRTs in the original cabinet, running at resolutions like 240x320, 224x384, etc. I want to display these using the 1920x480i mode as it’s the only mode that will fit 320 and 384 pixels vertically. But if I use the same config for these, the picture is displayed too wide on the CRT. I guess there’s a different formula for calculating video_aspect_ratio for vertical arcade games when displaying them using a “super resolution” mode, but what is the formula?

I’ve never had any luck with interlaced resolutions and would recommend physically rotating your display.

I know that’s not the answer you’re looking for, so maybe someone else can provide a more direct answer.

The interlaced modes work fine for me - here is a screenshot of Batsugun running in 1920x480 interlaced:

The issue is, Batsugun is a vertical oriented game, and it should really be displayed in a 3:4 aspect ratio, because it was originally made to run on a vertical, 3:4 CRT. The way it is right now, everything is too wide / stretched horizontally, filling the whole 4:3 CRT. The picture ought be much “thinner” with vertical black letterboxes on the left and right to get the right AR. What I’m trying to find out is, what is the formula for setting video_aspect_ratio to get this correct?

Physically rotating the CRT would be very awkward as it’s screwed into the cabinet, etc., and most of the other games played on this are not vertical so I want to keep the CRT in its current orientation.

aspect ratio should be something like 1/4, then, right? like 0.25?

0.25 makes the picture too narrow, but I think I’ve figured out the formula.

A 3:4 vertical game scaled down to fit on a 4:3 monitor is scaled down to 0.75 size. 0.75 of the width component of 3:4 (3) is: 0.75 * 3 = 2.25 And 2.25 is 0.5625 of the width component of 4:3 (4).

So if I multiply the width 1920 by 0.5625 and then divide by 480 I get 2.25, which seems to produce the right aspect ratio when used in

video_aspect_ratio = "2.25"

At least I think this is correct; I can’t easily get a ruler and measure the dimensions on the CRT… But it seems close enough.


Do you have any “Crop overscan” option turned on? maybe that is why you get different aspect ratio.