AnyMode v0.06b       www.pi-star.co.uk/riscos/anymode       (c) S.Harrison 2014
-------------------------------------------------------------------------------

This module is for the RaspberryPi and RPCEmu only. It simply allows any
screen mode X and Y resolution to be used automatically. Try entering any X
and Y dimension in the Display Manager sub menu, or press f12 and type
*WimpMode Xxxxx Yyyyy C16m (where xxxx and yyyy are numerical values), and
providing the new mode passes a couple of checks (width in bytes is divisible
by 32 and height is divisible by 2), then the mode will work!

It works because the RPi graphics processor (or RPCEmu emulator) fits and
scales (if necessary) all graphics output to suit the attached monitor - so
monitor-specific mode definition files are completely redundant. AnyMode will
not load or run on any other RISC OS hardware - only the RPi, or under
emulation on RPCEmu.

To enable AnyMode on Boot-up of your RPi or RPCEmu, and avoid the need to
load a mode definition file, place the AnyMode module in your
$.!Boot.Choices.Boot.PreDesk directory.

Enjoy.

Although AnyMode allows all modes, the default modes which AnyMode lists in the
Display Manager menu are as follows:

640 x 480
800 x 600
1024 x 768
1360 x 768
1280 x 1024
1920 x 1080

History
-------

v0.06b 12/3/14 added support for RPCEmu! Can now select any X and Y size
screen mode under RPCEmu with no need for a mode definition file.

v0.05b 30/1/14 added support for the new mode info block format 1, which
enables 16bpp (64K colour) screen modes on RISC OS 5.21+. Also fixed the mode
width check to ensure mode width in bytes is divisible by 32.

v0.04b 20/1/14 fixed all problems so far - all old-style numbered modes now
work correctly, including MODE 7!!! and typing "MODE MODE" in BASIC now works

v0.03b 19/1/14 first release

Notes
-----

AnyMode 0.06 supports 16M, 64K and 256 colour modes, however the RaspberryPi
scales some 256 and 64k colour modes differently to the same resolution in
16M colours (eg. X800 Y800), so you may need to hit f12 and type *WimpMode
32, to recover if the screen is scaled too small.

Also, Y resolutions divisible by 2 are allowed and work correctly on the RISC
OS Desktop, but in order for hardware scrolling (ie. pressing f12) to work
correctly, the Y resolution must be divisible by 8.

Programmers: This module uses the undocumented (in the paper PRMs) service
call &94 (ModeFile Changed). This service should be called whenever a new
mode file or a new mode-providing module is loaded, to allow DisplayManager
to update it's menu entries.


Future *Commands (**not implemented yet**)
----------------

*ResetModes [4:3|widescreen|default] (no parameter lists the current setting)
- resets the provided mode list for the Display Manager, see list below

*AddMode "1024 x 786", "800 x 600", ...
- adds the specified mode(s) to the Display Manager menu

*RemoveMode "1280 x 1024", "640 x 480", ...
- removes the specified mode(s) from the Display Manager menu


Preset modes are:

Default

640 x 480
800 x 600
1024 x 768
1360 x 768
1280 x 1024
1920 x 1080

4:3

640 x 480
800 x 600
1024 x 768
1280 x 1024
1600 x 1200

Widescreen

640 x 480
1280 x 720
1360 x 768
1600 x 900
1920 x 1080
