Schrijver
| Why can't the MSX display more than 4 sprites in a row?
|
LeandroCorreia msx addict Berichten: 449 | Geplaatst: 23 November 2004, 13:32   |
Yes, the MSX has hardware built-in sprites, but why can't it display more than 4 sprites in a row?
This problem also appears in other systems with sprites, such as Capcom CPS1 arcade games... Why does this limitation exists?  |
|
AuroraMSX
 msx master Berichten: 1227 | Geplaatst: 23 November 2004, 13:50   |
My guess would be that it's a matter of calculation power: the VDP just isn't fast enough to process more sprite data within the time it has to calculate one video line (or frame)
|
|
PalmPal msx friend Berichten: 1 | Geplaatst: 23 November 2004, 14:28   |
|
|
LeandroCorreia msx addict Berichten: 449 | Geplaatst: 23 November 2004, 15:13   |
So the VDP tries to display the fifth sprite. It's just not fast enough to display it in time?
|
|
Grauw msx professional Berichten: 1002 | Geplaatst: 23 November 2004, 16:25   |
Leandro: no, it knows it is not fast enough to display a 5th sprite, so it will not attempt to and instead set a bit in the status register that it reached its max.
|
|
LeandroCorreia msx addict Berichten: 449 | Geplaatst: 23 November 2004, 16:50   |
And how the sprites mechanism works? The VDP verifies line by line if there's a sprite in that row and then draws it?
|
|
flyguille msx master Berichten: 1182 | Geplaatst: 23 November 2004, 17:53   |
that way, the VDP has a line buffer, idd TWO, so it draws all the line before to send. So, when it fills one line buffer, the other line is sending.
|
|
LeandroCorreia msx addict Berichten: 449 | Geplaatst: 23 November 2004, 18:28   |
And in games like Golvellius, Gulkave or Final Zone, for example... I don't know Assembly, but I am sure that the program keeps swapping sprites priority numbers on the fly, and when there are more then 4 sprites in a row, they flicker (flickering is better than vanishing). Grauw said that the VDP sets a status bit to remind that it already reached its maximum number of sprites. Can the programmer check this bit status, allowing him to swap priority sprite numbers only when there are more than 4 sprites in a row?
|
|
flyguille msx master Berichten: 1182 | Geplaatst: 23 November 2004, 18:30   |
yeah, it can, it is in the status register, and not only that, also gives the first sprited that didn't fit.
|
|
LeandroCorreia msx addict Berichten: 449 | Geplaatst: 23 November 2004, 18:42   |
Interesting, Flyguille.
Many years ago, I pressed some cheat keys in Wonderboy, and the game started without collision detection. Very useful to avoid enemies, but also nasty because you had no way to recharge your energy with items. Anyway, when I stepped over an item, I noticed that the game kept swapping sprites priority numbers. Probably the programmers were not aware of the VDP "reached 4 sprites" bit.
P.S.: If I remember it right, you must press H+U+D+S+O+N at the opening screen. |
|
Sonic_aka_T
 msx guru Berichten: 2261 | Geplaatst: 23 November 2004, 20:18   |
Well, the 'reached 4 sprites' bit is pretty common. I would guess that any programmer, especially back then, would've know about it. If you read up on sprites, it's probably one of the first things you'll learn. With MSX2 this got increased to 8 sprites, but that unfortunately is still to little for sprite modes to be truly useful... *Sigh* If only they had been full-color sprites... *sigh*
|
|
manuel msx guru Berichten: 3368 | Geplaatst: 23 November 2004, 20:43   |
Not useful? Play Aleste 2 and check again!
|
|
IC msx professional Berichten: 538 | Geplaatst: 23 November 2004, 21:12   |
I think sonic is only satisfied when he has 65535 colors at his disposal  |
|
Grauw msx professional Berichten: 1002 | Geplaatst: 23 November 2004, 22:13   |
Sprites are extremely useful!
|
|
wolf_
 msx legend Berichten: 4629 | Geplaatst: 23 November 2004, 22:49   |
Sprites on msx require good design .. Space Manbow is an excellent example of this. It's all a matter of designing paths that avoid getting situations with more than 4 or 8 sprites on a row.
|
|
|
|
|