Closed Ryunam closed 2 years ago
Very nice, thank you. I really appreciate the attention to detail, like for "overscan" (which I should have made a "crop" option form the beginning). I think this will be merged with only minor tweaks.
Hi @DerKoun, do you have an estimate of when this could be likely implemented in the core? No pressure intended of course, just wondering if this requires any change or fix on my end. Thanks in advance!
Sorry @Ryunam, I already had merged your code locally and tweaked it. Then I got into another phase where I wasn't motivated to work on this (or any) project at all, this time brought on mostly by grieve for Near. I'm working on pulling myself out of that low and get more active on the project again. You're work will definitively be in the next version, with some tweaks from me. I want to apologize for the delay and lack of communication after you put in all the work for this great improvement.
No problem at all, I can completely understand and empathize with how Near’s loss has impacted anyone’s motivation for working on a project like this.
Definitely take your time. I will be looking forward to the next release and, whether you require any input on my end with regards to this implementation or just want to chat, let me know!
This PR updates the core options in the libretro implementation of bsnes-hd to version 1.3, allowing for descriptions of each option in the sublabels as well as translation support. See here for further reference: https://github.com/libretro/libretro-common/tree/master/samples/core_options
It is essentially a backport of what I had implemented for the up-to-date bsnes-libretro repo, as seen in https://github.com/libretro/bsnes-libretro/pull/4, coupled with a few changes and descriptions that were created from scratch for the widescreen-related settings and the other options that are specific to the bsnes-hd project.
Here is a recap of the main changes:
Just like in the bsnes-libretro core, I refactored
libretro.cpp
inspired by the logic seen in the snes9x libretro core, mainly consisting of some edits to theflush_variables()
function which was now renamed toupdate_variables()
. This along with a few other changes implemented here were done to make the code more consistent with snes9x and bsnes.For "native" bsnes options the sublabel text was written based on the upstream descriptions, except for a few cases where the descriptions were either absent in the original code or needed to be adjusted for the libretro version.
For the options that are specific to bsnes-hd, the sublabel descriptions were written based on information contained in the project readme, except for a few cases where a few adjustements were deemed necessary: https://github.com/DerKoun/bsnes-hd/blob/master/README.md
Similarly to bsnes-libretro core, for certain options the "ON" and "OFF" values were previously hard-coded, so I kept this naming as-is for these values and just converted "ON" and "OFF" respectively into "enabled" and "disabled" inside
libretro_core_options.h
. This was done in order to preserve full backwards compatibility with the existing user configs and overrides, otherwise they would break;The name of the overscan option was slightly edited. Originally the name was "Show Overscan", but for the libretro core I made it look exactly as it is in snes9x and bsnes-libretro, showing up now as "Crop Overscan" with two possible values to make its behavior as clear as possible: the two values are either '12 pixels' (default) or '8 pixels'. That being said, the function has remained exactly the same internally, so backwards compatibility with the existing user configurations has remained intact.
A slight reordering of the core options was performed both in
libretro.cpp
andlibretro_core_options.h
to mimic the order seen in upstream bsnes and bsnes-libretro, as well as achieve clearer consistency for the new settings. For example, now all the HD and Widescreen options are grouped close together at the bottom of the list, while the Color Adjustment settings (Luminance, Saturation and Gamma) are provided up top.This was tested on Windows 10 x64 and everything seems to be working well. Here's a sample picture of how the core options look now: