-
Notifications
You must be signed in to change notification settings - Fork 79
Description
Would it be possible to add a core option to allow for hiding an arbitrary number of lines/pixels from each of the four edges of the output image? I am aware of the current option to show or hide borders, but the feature I am requesting would be different, separate, and complementary to that option. Please allow me to elaborate below.
Problem
Currently, this core allows one to choose merely to completely show or completely hide the outside borders of the output image. In other words, the option as it currently functions is all or nothing. This is especially limiting with regard to Master System in particular, with its uncommon 256 x 192 output resolution, which is 32 fewer horizontal lines than Genesis or SNES. For Master System, the end result of this is that, when Core Options > Video > Borders is set to "Top/Bottom"—thereby showing an additional 48 horizontal lines of typically coloured in background layer; 24 lines each at the top and bottom—the output image is relatively too tall and narrow, taller and narrower than a ~4:3 output image should be. On a real 4:3 CRT, some portion—but not all—of this background layer would have been hidden by overscan. Alternatively, when setting Borders to "OFF"—thereby fully removing the borders—the output image is instead too wide, far wider than a ~4:3 output image should be.
Background Info
Additionally, completely hiding the outside borders, particularly the top and bottom borders, results in an unnatural and less than authentic output image. On real Master System hardware outputting to a real CRT display, some portion—but, again, not all—of the top and bottom borders would naturally be visible in the output image. And these borders were typically coloured in with the same colour as the background layer of the game, as they were not necessarily meant to not be seen. Specifically, on real hardware and with a real CRT, somewhere between 12-16 lines of border would likely be visible at each of the top and bottom of the output image, with only 8-12 lines (top and bottom each) hidden due to overscan. As we can see, this results in a rather large discrepancy between what the core's current options allow one to show or hide, and what a more typical experience would have been on real hardware with a typical CRT display. Here is an example of how this looks.
Proposal
It is for these reasons that, in order to achieve a better balance, it would be extremely helpful to be able to additionally choose to hide/crop an arbitrary number of lines/pixels from at least the top and bottom edges of the screen, if not all four edges, similar to what some other cores allow, such as the Mesen and Mesen-S cores. Those cores allow one to choose to crop/hide a range of 4-16px from each of the four edges of the output image. In Mesen in particular, each of the four edges can be set separately, which I believe is ideal. Alternatively, as another example, the Beetle PCE core allows one to set arbitrarily the initial and last horizontal scanlines. Options such as those allow one to better customize the output display to more accurately simulate the experience of playing on real hardware with a CRT display, and I think it would be great to add similar options to this core, too.
End Goal
In the end, if this were implemented, this would allow one to enable this core's current option to show Borders for "Top/Bottom", in tandem with a second option to crop/hide an arbitrary number of lines/pixels (8px for example) from the top and bottom edges of the output image. Thus, this combination would allow the coloured background layer borders to be partially visible as they naturally would have been on real hardware, while keeping them proportional in size to the bounds of a typical ~4:3 display environment.
Summary
The current option to show or hide borders is good to have, but this would be further improved and enhanced by adding additional options to hide/crop an arbitrary number of lines/pixels from each of the four edges of the output image, such as a range of 4-16px, similar to other cores such as Mesen and Mesen-S. This greater level of customization would allow for more accurate simulation of the characteristics of real hardware, particularly Master System, and of real CRT displays.
Thank you for your time and all the work you do.
Edited to add more details and clarifications, including End Goal section.