Not sure how many other people this appeals to, but I modified some MiSTer cores to support horizontal output resolutions up to 4096px without pixel repetition. This doesn't mean 3840x2160 is possible, of course--there's just not enough bandwidth available. What you can do is use a lower vertical resolution like 720px and enable the "stretch to fit" setting on your display. Essentially you're giving up vertical resolution and sharpness in exchange for full use of your display's horizontal resolution. I'd ordinarily want to avoid the blurry vertical scaling from the display, but I've been using a simple scanline filter that just blanks out every third line at 3x (attached), and the end result is a nice basic soft scanline effect.
Stuff this is useful for:
- Integer scaling--you can achieve a 10:9 pixel aspect ratio for NTSC 256px modes, which is less than 3% away from the canonical 8:7 and doesn't require any cropping of a 240p image. Other console PARs like 12:7, 32:35, 6:7, 4:5, 4:7, and 16:35 also have close integer scales at 9x vertical.
- Non-integer scaling--I've strongly preferred integer scaling up until now, but with so much horizontal resolution, I can't see any scrolling shimmer with nearest neighbor, let alone the horizontal blur filters I've come to favor. I might just stick with the core default aspect ratio + V-Integer scaling from now on.
- Shadow mask and other CRT effects--these aren't my thing but I think they might look better with the extra resolution?
Notes if you want to try this out:
- Obviously your display has to be able to accept 3840x720--I'd expect PC monitors to be better than TVs for this, but my Sony XBR-49X900E handles it fine, at least. I'm using this modeline:
Code: Select all
video_mode=3840,48,32,80,720,3,10,8,177750,+hsync,-vsync
- I had to disable some features to save FPGA resources and meet timing requirements. Y/C output, the scandoubler (including HQ2X), and bilinear downscaling are disabled, as well as some logic in ASCAL for bilinear and bicubic scaling that isn't actually used by any cores to my knowledge. Not all of these actually needed to be disabled for every core, but I kept things the same across cores for simplicity.
- Core aspect ratios have been adjusted to compensate for the display stretching, so the non-stretched output will be 3x wider than the upstream core. TurboGrafx is a little bit wider than 3x so that the Narrow HV-Integer scaling setting will look decent with all video modes. If you want it to be the same as the upstream core you can use a custom aspect ratio (4:1, assuming overscan is cropped).
- If you happen to have a Sony TV with "Graphics" picture mode, turn it on! I first took note of this mode for its 1080p->4K nearest-neighbor scaling, but scaling from other resolutions is also cleaner than Game mode (which still seems to be doing some enhancement). Input lag is the same as game mode, at least on my TV.