At the very least, it's confusing that we have very similar options in both the geometry and sampling menu.
The one in the sampling menu ("Sample mode") specific to the "Normal CPLD" and controls the hardware sampling rate / size:
"Normal (3bpp)",
"Double (6bpp)",
"Half-Odd (3bpp)",
"Half-Even (3bpp)"
The one in the geometry menu ("Pixel sampling") controls how the software pixel copy loops handle each pixel:
PS_NORMAL, // Each sampled pixel is mapped to one pixel in the frame buffer
PS_NORMAL_O, // Odd pixels are replicated, even pixels are ignored
PS_NORMAL_E, // Even pixels are replicated, odd pixels are ignored
PS_HALF_O, // Odd pixels are used, even pixels are ignored
PS_HALF_E, // Even pixels are used, odd pixels are ignored
PS_DOUBLE, // pixels are doubled
Some of the pixel sampling options were useful for the Atom (using the Beeb adapter) with older CPLDs.
A second consideration is it allows a 2x width and 2x height frame buffer to be used, to get the better looking OSD font.
The benefit of rationalising this would be to reduce the size of capture line tables, meaning there is more change they could all be fully implemented.
In the capture line table, we have the following tables (15 in total):
- default (4bpp and 8bpp) x (normal vs normal_odd vs normal_even vs half_odd vs half_even vs double)
- mode 7 (4bpp)
- atom (4bpp and 8bpp)
Each table has 8 entries:
- 3bpp vs 6bpp (pixel samples)
- Off vs Fast vs Inband vs NTSC artifacting (palette control)