flycast icon indicating copy to clipboard operation
flycast copied to clipboard

Widescreen Hack option doesn't scale to requested aspect ratio on Libretro core

Open SeongGino opened this issue 2 months ago • 2 comments

Platform / OS / Hardware: Retroarch (1.21.0 x86_64 Flatpak) on SteamOS, vulkan backend

Flycast version: bf2bd7e

Hardware: Steam Deck

Description of the Issue

When using the Emulation Hacks->Widescreen Hack setting on the Libretro core version of RetroArch, the widescreen hack seems to default to and only adapts the screen size and FOV adjustment for a 16:9 screenspace, even when the aspect ratio is specifically assigned from the frontend (within RetroArch Settings->Video->Scaling->Aspect Ratio).

I believe this might be because the Libretro core does not seem to share the "Super Widescreen" setting from the Standalone emulator, which adjusts the extent of the widescreen expansion depending on the device's/emu's current AR.

Screenshots

Using Dynamite Cop! just as an example, this affects any games with widescreen hack enabled. Note the size of the pillarboxing on the sides of the screenshots - the first two have the same sized pillarboxing, indicating the image is being vertically stretched from 16:9, whereas the latter (in Flycast Standalone) has smaller pillarboxes and correct scaling.

With default "Core provided" AR and Widescreen Hack enabled - 16:9 letterboxed+pillarboxed in 16:10 space: Image

With RetroArch forced to 16:10 and Widescreen Hack enabled - 16:9 pillarboxed with vertical stretching: Image

Flycast Standalone (Flatpak), with Widescreen Hack and Super Widescreen options enabled: Image

SeongGino avatar Nov 01 '25 04:11 SeongGino

Contrary to a standalone app, a libretro core doesn't know the aspect ratio or resolution of the screen/window it is being displayed on. So there is no way to implement the "Super Widescreen" option, which needs to know the current display aspect ratio and uses the same for rendering.

flyinghead avatar Nov 01 '25 08:11 flyinghead

Understandable, and appreciate the clarification. <3

I'm guessing here then that the Super Widescreen option, as it exists, would require the libretro API(?) to provide/expose more information about the current display?

In absence of that, maybe providing some 'presets' for the native Widescreen Hack setting (as in, instead of the simple toggle, it would default to OFF and have settings for 16:9, 16:10, 21:9, etc) to provide something akin to the Super Widescreen option would be a decent compromise from a user's perspective, but I suppose that might be a bit of a hack to make something work in libretro that otherwise works in the native Flycast platform?

SeongGino avatar Nov 07 '25 04:11 SeongGino