software sprites in msx1
For those who don't know about msx computers, the first generation runs a tms9918a display processor from Texas Instruments. Which was a quite capable video accelerator for the time, using 16Kbytes of dedicated video ram.
It provides hardware tiles of 8x8 pixels with 1 byte of color per line (4 bits foreground, 4 bits background), which gives quite nice graphics if you manage to arrange the colors properly. Some japanese game designers in the 80's found the way the get the most of that limitation.
You can also have single color hardware sprites of 8x8 or 16x16 pixels, max of 4 aligned horizontally and 32 at the same time on the screen.
The combination of both things is very good to have simple hardware accelerated games. See for instance Nemesis 2 and Goonies from Konami.
It is also true that these kind of graphic limit the kind of games you can have; mainly because the sprites are basically the only thing you can move on the screen. As tiles are placed using a name table mapped to a grid of 8x8 on the screen, you can only move them in steps of 8x8 pixels.
This is noticeable in games having scroll, and is sometimes annoying, that is why very few msx1 games use scrolling (it either has to be very fast or very slow). Also it makes impossible having software sprites based on tiles that move smoothly.
The only solution to have smooth scroll or software sprites is to renounce to the use of the color table, and just use the pattern definitions as a monochrome frame buffer in the same way is done in other computers like the zx spectrum. The only problem is that when doing so, you not only stop using the hardware accelerated graphics provided by the video processor, but also incur in the performance penalty of having to move memory blocks from main ram to the vram, so everything slows down considerably. It is still possible, though, to build games in this way, and very good ones; like Batman or Head over Heels, which were just ports from spectrum:
As all this is a bit upsetting, I have been thinking on how to solve the problem to some extent using some smart programming, that is; implementing software sprites based on multicolor tiles.
More in the next post.




Sorry to bathe in.
ReplyDeleteDid you follow on this?
Take care
Ferran