bsnes HD beta core – Pushing the limits of the SNES! Widescreen and Ultrawide support!

DerKoun shares with us a special new core called bsnes HD beta. This is a cutting edge version of bsnes that is jam packed with enhancement features! Note that many of these enhancement features, such as the widescreen features, might require specific tweaking and finetuning in order for specific games to display right, and some games might just not display right at all with these enabled, so experiment at your own risk.

With this emulator core, emulator developers are moving far beyond the limitations of original hardware and FPGA clones, putting the extra horsepower of modern PCs and cellphones to judicious use.

This core is already available on our buildbot for Windows, Linux and Android, and should be coming to Switch (libnx) soon as well! Note that all these enhancement features operate on the CPU, so the faster your CPU is, the better the results will be.

Changelog (beta 10)

  • Based on latest bsnes (114, 2020-01-09)
  • Experimental libretro core
  • Changed Show Overscan setting, replacing Soft Crop. Changed widescreen values accordingly
  • Corrected widescreen object wrap-around point to 352
  • Changed storage paths from “bsnes” to “bsnes-hd beta”
  • Automated Linux build is now CPU neutral
  • Various minor bsnes-hd specific modifications to GUI
  • Fixed setting Ignore Window Fallback X-Coordinate via settings dialog

Core Options

Let’s explain some of the core options this core provides:

HD Mode 7 Scale

Perform Mode 7 transformations (incl. HDMA) at up to x times the horizontal and vertical resolution.

TIP: HD Mode 7 can be set to 1x scaling aka original resolution, with any combination of perspective correction, widescreen and supersampling.

HD Mode 7 Perspective Correction

Optionally, for games with pseudo 3D perspectives, some limitations of the integer math used by the SNES can be avoided by more aggressive averaging.

This setting also allows you to set the width for the perspective correction.

Auto – Auto detection for perspective correction. Quite primitive implementation, but worked out surprisingly well. Covers “Super Castlevania IV” (tube), “Terranigma” (underworld) and “Final Fantasy III” (credits), but not the “Mohawk & Headphone Jack” title screen (levels are fine).

[On / Auto] Narrow – Fixes black flicker in “Tales of Phantasia” Mode 7

[On / Auto] Wide – Use “wide” when there is no issue.

HD Mode 7 Supersampling

Super sampling can be combined with higher scale factors as a sort of anti-aliasing. Please remember that the CPU load is the product of the two factors.

HD Widescreen

Mode 7 – Disables widescreen for non-Mode 7 scenes (default now), fixing menus and widescreen-incompatible 2D levels with no setting switching during gameplay. The widescreen areas in that case can either be black or adopt the background color.
All – Enables widescreen for both Mode 7 and non-Mode 7 scenes.
None – Disables widescreen for all modes.

HD Mode 7 HD -> SD Mosaic

1x scale : Mosaic mode for HD Mode 7, using 1x scale, providing a good compromise between SD Mode 7 and no Mosaic at all, and also allowing widescreen, e.g. for the “Terranigma” underworld.

Ignore: – This setting disables mosaic effects for mode 7 scan lines. See top part of screen in the Terranigma safe state. When not checked (i.e. mosaic enabled) lines that have mosaic enabled do not use the HD mode (as the intentional pixelation that is mosaic would negate it anyway), but others still do.

WideScreen Background 1 to 4

To avoid HUDs repeating and other unwanted effects, this setting allows you to disable widescreen for the separate background layers and even just the top or bottom of a layer.

The default for all 4 is “auto horz and vert”, which is a simple auto detection based on the sizes and positions of the backgrounds. This works e.g. for the HUD in “F-Zero” or “Super Mario Kart”. You can also force each one “on” or “off”.

Some games require more complex settings, e.g. “HyperZone”: BG2: “>80”
You can also “disable” any of the 4 background layers entirely.

WideScreen Sprites

Unsafe – This allow sprites to enter widescreen areas further if the game keeps updating them. This will however cause significant artifacts in many games. If ROM-hackers want to discuss optimizing games for this, feel free to contact DerKoun.

Disable entirely – option to sprites, e.g. for screenshots for wallpapers (also see “Ignore Window”)

WideScreen Aspect Ratio

Ability to set the widescreen aspect ratio to a variety of different ratios (16:10, 2:1, 21:9, 16:9, 4:3)

WideScreen Ignore Window

Setting to ignore outside window, allowing for widescreen in Terranigma and Final Fantasy III/VI. Please test any other games that had no widescreen for no obvious reason in the previous beta. This fixes Mode 7 widescreen specifically in the mentioned games and results may vary in other ones for Mode 7, other backgrounds and objects.

Some settings allow for more widescreen e.g. in “Final Fantasy III” (no good results) and ability to disable some shadows or similar effects (for use with layer disable feature below, e.g. for “F-Zero”).

WideScreen Marker

Line – optional markers for the widescreen areas, in the form of lines at configurable translucency. Also sprites can now be clipped at the edges of the widescreen areas.
Darkening – optional markers for the widescreen areas, in the form of darkening at configurable translucency. Also sprites can now be clipped at the edges of the widescreen areas.

HD Background Color Radius

Smooth (true color, high resolution) gradients for color math from fixed color, e.g. for pseudo perspectives. This combines the new true color support and high resolution smoothing of HDMA effects to turn approximations of gradients into real ones. This is noticeable in many games with Mode 7 perspectives, often in the top/distant part, which often fades to black or another color. Enabled by default, on medium setting “4”. (see image: left side before vs. right one with this improvement)

HD Windowing (Experimental)

Smooth (high resolution) Window effects, like shadows or spells. This is considered a preview, as the top and bottom edges of such effects still look SD and therefore stand out. It is disabled (“0”) by default. You can set “1” or higher values to give it a try.

Widescreen patches

No matter the amount of options available, some games will likely require manual patches for the best possible widescreen experience. Fortunately, already talented modders are hard at work at tackling some of the games out there that could really benefit from widescreen resolutions.

If you want to discuss widescreen ROM-hacking please join #widescreen-hacks at the bsnes-hd Discord.

What’s Next

DerKoun says:

Primarily I’m looking into optimizations.

There also some fixes and improvements I want to include, like better HD Window effects.

I’ll also work with the libretro team to improve the libretro core.

SIDENOTE: RetroArch 1.8.4 will be coming out soon. Unlike 1.8.3, it will resemble somewhat more of a maintenance release.