MissingModes is a module that allows to display unsupported screen resolutions (like used in old Archimedes games) in the center of a larger existing mode. This should provide an alternative (without scaling) for machines where AnyMode cannot be used.

Version 1.01, 2023-06-16 (download). 32-bit

Just double-click on the module to activate it.

How it works:

  • on initialisation the modules ask the system for the list of available mode resolutions and for each one calls service &50 Mode_Extension to get its MDF definition (vidclist).
  • it register to service &50 Mode_Extension to provide mode definitions as follows:
    • if width < height, double the required width.
    • look for the smallest available mode that can contain the required resolution and use its definition as a base.
    • if no base was found, let other callbacks deal with this call.
    • replace the base width by required width and compensate the difference by adding one half of it to the left border and the rest to the right one.
    • do the same for the height.
    • if width was double, divide all horizontal timings and pixel rate by 2.
    • return the adapted vlidclist.

Basically, thus two tricks are used:

  • using a higher resolution and transfering unused pixels to the borders.
  • for resolutions which would be displayed on an LCD as an inverted letter box (see demo !RevInvite or game demo !LO_Demo), look for a double width mode and divide all timings and pixel rate by 2. RISC OS will see it as the expected resolution and by dividing the pixel rate by 2 should see the same timing.

Limitations and TO DO list:

  • All this assumes an analog D-Sub transmission of the signals. I dunno how it would fare on DVI/HDMI, especially the width doubling trick.
  • For the second trick, dividing /2 all timings could violate some rules like border must be a multiple of x pixels but I dunno what the rules are.
  • My Pi4 (OS 5.28) strips the borders so its very nice with the 'disable_mode_change' option active as the screen is scaled to full size, but without that option I think some monitors may not be able to handle such low resolutions.
  • TO DO: check for Video memory usage and bandwidth limitations.
  • TO DO: reask mode definitions lists if another MDF is loaded, but you can you double-click again on the module afterwards.
  • TO DO: find a way (interlacing?) to double height of letter box modes.
Page updated the 2023-06-16.