RasterMan, the Raster Manager Module for Acorn Archimedes, by Steve Harrison.

Download RasterMan v0.16b, technical demo and API/SWI documentation here:

RasterMan v0.16b is (c) S. Harrison 2013-2015.

Note: At time of writing (June 2018) RasterMan will only work correctly on real Archimedes hardware - there are currently no Archimedes emulators that I am aware of, on any platform, which provide scanline-accurate update of VIDC/MEMC settings, required to display the RasterMan effects correctly. If you need to use an emulator, Arculator (currently v0.99) will run the technical demo, but there is raster bar jitter present, and the third effect (the sine-wave wobble) will not display. If you don't have real Archimedes hardware, you can see how the technical demo should display by watching the video link below.

Videos:

Brief technical information:

The RasterMan module provides Amiga 'Copper'-like graphics control to the Archimedes, allowing modification of multiple video (VIDC) and memory controller (MEMC) parameters at preset point(s) during each scanline. By default RasterMan provides an accurate Hsync (horizontal-retrace) interrupt at the end of each scanline, this allows a fully redefined palette, output of data from a different frame buffer/memory addresses and/or change in screen parameters (horizontal position, bpp, etc) for every line of the screen!

There have been many previous attempts to generate 'Raster bars' using HSync-like interrupts on the Archimedes, but most of these suffered from 'jitter' by wobbling up/down a few lines each frame due to competing interrupts (especially sound). The result was not visually pleasing and ruled out any possibility of implementing effects like switching memory addresses or redefining screen parameters on each line. The one exception to this that I'm aware of is the !MEMc demo by BlackIce, which appears to use an accurately timed HSync interrupt to switch the output memory addresses on each scanline, alongside playing music.

What makes RasterMan different from all previous efforts, is that RasterMan achieves complete stability of its timed interrupts by taking over all the interrupt processing and prioritisation for the whole computer, but keeps foreground control with RISC OS, allowing other modules to run, including BASIC. RasterMan avoids 'jitter' by taking over all sound and keyboard I/O, using it's own custom handler routines, including a custom version of the QTM 4/8 channel ProTracker player which runs during VSync (when no HSync interrupts occur) and it executes it's HSync/graphics interrupt code from Fast-IRQ mode and FIQ code space to avoid latency.

Future:

Since 2015, further development of RasterMan has taken place, but at a fairly slow pace. The latest version will be made available with full source code soon.

SH, June 2018.