Grauw’s blog

Right now, I’m looking at an MSX demo called ‘XOR’ by Zelly, made for the Gfx9000 video chip (if openMSX had good Gfx9000 support by now, I would have shown a screenshot). It shows two 256x212 16-colour pictures featuring an anime character, alpha blending and smoothly (as-in, 60fps) scrolling in different directions at the same time, and I have NO CLUE how they ever managed to pull such a trick on such an old videochip.

It can’t alpha-blend, and it doesn’t have a 256-colour (8-bit) palette mode which could be used to blend two 16-colour (4-bit) graphics together either (only up to a 64 colour palette mode). So unless the pictures are 8-colour, which I don’t think is the case, it must be doing something with the 15bpp bitmap mode. Given that, I still have no idea how they pulled that off, but it’s a great effect to see and I want to know how Zelly did it :).

The name of the demo suggests it utilizes the XOR logical operator on the copy commands, however I can’t shake the feeling that it also does something with the write mask. Or maybe the name of the demo was chosen to put us off track! In any case, it is a good show of how powerful that v9990 chip is, and we’ve probably seen nothing yet.

Update: ok, the pictures are 8-colour after all :). That explains it. The demo first copies one image, then copies the other over it using the write mask (or with XOR or OR, either is possible), and then mixes the colours of all combinations of the resulting 64 palette colours together. One of the images actually has black borders at the top and the bottom, the reason for that could be that the v9990 perhaps isn’t fast enough to copy two full screens per frame.



zxbasic-compiler by nitrofurano at 2012-09-20 11:45

i’m trying to extend zxbasic-compiler to msx (btw, for sms and gem1000 were successful) – and would be awesome if gfx9000 can be included as well – what do you think?

great! by Aurea at 2015-09-14 21:19

Wow! i need this,great article