OK the GBS-C is a dead end for the MiSTer, but using custom video modes is by far the most optimal solution anyway. I found a few really satisfactory options. Of course, all of these normalize the refresh rate so fast horizontally scrolling scenes will have cyclic stuttering. This is the one drawback that will be unavoidable in these monitors (side note: ironically, while the A BVMs can sync to these, the D BVMs apparently can't sync to most). When not needing a custom aspect ratio, you'll want to set aspect ratio to "full screen" in all cases.
Code: Select all
1. video_mode=720,16,63,59,224,11,21,6,13500
This gives you a nice SDTV-like 720x224, but for cores like Neo Geo or anything with 320x224 resolution you'll want either a custom aspect ratio (custom_aspect_ratio_1=640:224) in your ini file to use and avoid shimmering during horizontal scrolling, or to use a scaler filter to minimize it (I got really nice sharp results with interpolation (sharp), or laczos2_15).
For arcade cores like CPS the only option is to use scaler filters, or
Code: Select all
2. video_mode=768,72,72,144,224,11,21,6,16632
This one is perfect for CPS and other 384x224 resolutions, needing no custom aspect ratio or scaler filters. An equivalent 640x224 mode could be used with the same advantages for Neo Geo, etc.
Code: Select all
3. video_mode=1920,152,247,280,224,11,21,6,40860
In a way this one is ideal as 1920 is perfectly divisible by both 384 and 320, however this is based on HDMI output for a Raspberry Pi and both h and v sync are positive polarity, so for the BVM you'll need to invert the sync either on your DAC if it supports it or on a sync combiner like the Extron RGB interfaces. This also means that when using the regular direct video mode that uses negative sync polarity you'll have to switch back, so this inconvenience sadly keeps this from being the perfect solution.
edit: actually this was only problematic with my HDMI-DAC setup, via IO board analogue it's perfectly fine.
Code: Select all
4. video_mode=1440,38,124,114,240,4,3,15,27027
This is based on the CEA mode 8 standard, and uses negative polarity so it doesn't have any of the drawbacks of the above option. But you'll want custom aspect ratios like these for 320 and 384 horizontal resolutions:
Code: Select all
custom_aspect_ratio_1=1280:224
custom_aspect_ratio_2=1152:224
Since you have more horizontal pixels to work with, while not needing to switch sync polarity, this may be the overall best option to accommodate a larger range of resolutions.
edit: actually the custom aspect ratios above may not be needed, setting the core's AR to full screen seems to avoid scrolling shimmering while filling more of the screen like with direct video.
I was able to figure all of this out using info from the following sites:
https://www.improwis.com/tables/video.webt
https://github.com/Xilinx/embeddedsw/bl ... gs_table.c
https://android.googlesource.com/kernel ... ee7f2%5E!/
https://misterfpga.org/viewtopic.php?f= ... 9&start=50
Lots of great info there and probably can help others figure out different and even better options for other monitors. What I would really appreciate now is if someone could help figure out a 1920x224 or 1920x240 mode that uses negative sync polarity, as that would be the best of all worlds. If anyone knows how to do this, please let us know here!