Extending VDU 19 to set alpha channel?
A notable omission from the capabilities of VDU 19 is the option of setting the alpha (opacity) channel as well as RGB, at present it's only possible to set fully-opaque colours.
Because the command must always be the same length (6 bytes) there's no possibility of adding an extra parameter. However the high-bit of the logical colour is currently unused (this is used to flag the background colour in VDU 17 and VDU 18, which implies a logical colour range of no more than 0-127).
So I'm wondering about this as a possibility:
Because the command must always be the same length (6 bytes) there's no possibility of adding an extra parameter. However the high-bit of the logical colour is currently unused (this is used to flag the background colour in VDU 17 and VDU 18, which implies a logical colour range of no more than 0-127).
So I'm wondering about this as a possibility:
VDU 19, logical+128, alpha, red, green, blueWould this introduce any compatibility issues?
0
Comments
-
There is no support for alpha in Matrix Brandy - while the framebuffer is 32 bits deep, the top unused byte is being used to store the logical colour to enable VDU19 to work in the traditional way.0
-
There is no support for alpha in Matrix Brandy
Jonathan Harston replied as follows at the Discussion Group:I've spent a hour or so with a cup of tea checking documentation and existing VDU driver code, and it looks like it will be fine. All pre-existing correctly written code will be sending l<64 to VDU 19(*), and using bit 7 safely segregates the additional function from existing ranges.
Also, &80+n has a neat similarity to the use of &80+n in other functions.
I've added a provisional addition to the VDU 19 documentation on the BeebWiki.
(*)Other than an implementation I have that uses VDU 19,255 to set the border colour, but I think that will also be fine as you would not be using VDU 19 in a display with more than 64 colours, so the logical colour would be either &00+(0-63) or &80+(0-63), so &C0+(0-63) is still safely out of reach.
I can't say I've ever really understood the 'philosophy' of Matrix Brandy, which seems to be to extend the BBC BASIC language in some respects (e.g. 64-bit integers) but not to extend the capabilities of the display at all.0