Widescreen Hack option doesn't scale to requested aspect ratio on Libretro core
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:
With RetroArch forced to 16:10 and Widescreen Hack enabled - 16:9 pillarboxed with vertical stretching:
Flycast Standalone (Flatpak), with Widescreen Hack and Super Widescreen options enabled:
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.
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?