Question about Parallel-RDP's native resolution

I’ve been playing with Mupen64Plus Next on my Steam Deck, with both RDP and RSP plugins set to Parallell-RDP, performance is surprisingly good! But I have a question regarding the resolution: it seems that Parallell at 1x resolution displays games at 640x480, but I thought games were rendered at 320x240 on the original hardware? Due to the fact that the game renders at 640x480, I cannot use Integer scaling since the Steam Deck screen resolution is 1280x800, it displays the game at 1x so 640x480 and the game window is very small. If I disable Integer scaling, I get uneven scanlines so that’s not an option.

I would like to be able to render the game at 320x240 (0.5x resolution?) and use integer scaling so that it would be displayed at 960x720 which would be perfect for the Steam Deck’s screen.

Well, I switched to another shader and the scanlines look fine even with Integer scaling on, so I guess that’s a good workaround.

The issue with N64 is that, while most games do internally render at around 320x240 (not all, though - some like Goldeneye render at oddball lower resolutions IIRC), in practice the N64’s Video Interface, or VI, always scales it horizontally to 640 pixels using bilinear interpolation, so the end result, as in what actually makes it onto the TV, is actually something like 640x240. This was totally fine on CRT TVs, since they just care about lines and will display in the intended 4:3 aspect ratio with non-square pixels, but obviously trying to output this 1:1 on fixed-pixel displays would result in a very wide image, so vertical scaling is needed to preserve the aspect ratio, hence 640x480.

Now, it is possible to disable this horizontal bilinear filter of the VI through ParaLLEl-RDP’s options, but it appears it is still set to scale the output to 640x480 no matter what, probably in order to account for the filter. After all, if you were to output at 320x240 and had the filter enabled, it would be like scaling an image up then downscaling it back down, which would result in image degradation. So it’s probably just easier to always output at 640x480.

Anyway, another alternative would be to use GLideN64, which can render at 320x240 just fine. It’s not as accurate, but it does fine for most games, and CRT shaders look nice with it. You can even render at a higher resolution and downsample to improve the image.

2 Likes

Thanks for the detailled answer!

1 Like

vertical scaling is needed to preserve the aspect ratio, hence 640x480.

If this were true then it would be difficult to understand how SwitchRes correctly switches to a 240p resolution on my CRT.