More than 32 sprites on a TMS9128!

tmsbug-1_abertura

Really? The TMS9900 : TMS9918A / TMS9928A / TMS9929A Video Display Processors – Data Manual (Nov 1982) tells:

The video display can have up to 32 sprites on the highest priority video planes.

But I’ve accidentally figured out that due a bug on sprite rendering you can have much more than 32 sprites on screen. And I’ve made tests on Sharp HB-8000 v1.2 (TMS9128) and Frael Bruc 100 (TMS9129) and got the same result in both¹.

(¹) By the way, not only MSX computers but ColecoVision, Sord M5, TI-99/4A etc might be affected too!

Showing the bug

How to reproduce it? Type this on a real MSX1 computer…

On a emulated MSX1 you get:

tmsbug-1_glitch_on_emulator

But there is something weird on a real MSX1

tmsbug-1_glitch_on_real_msx

Use arrows to move the light blue box (boxes?) over the screen and see bug’s behaviour, the screen will blink when a sprite collision is detected.

I’ve figured out that the old trick² to resize the Pattern Table by change register #4 affects sprites too. So, all sprites beyond the 7th layer and at the first third of screen will appear on the second (current line+64) and the third (current line+128) thirds as well. And they are real sprites, not “ghosts”, because collision detection still working for each one!

Of course, nothing is perfect, and just remember that Pattern Table has 2048 bytes by now and is replicated on all thirds of screen!

(²) Trick that doesn’t work on T6950.

More than 32 sprites

And how it affects the limit of 32 sprites on screen? Now, try this…

By the way, I’ve resized Attribute Table changing register #3, but it doesn’t affect bug’s behaviour.

On a emulated MSX1 you see only 16 sprites on top of screen…

tmsbug-1_16_sprites_on_emulator

But on a real MSX1

tmsbug-1_48_sprites_on_real_msx

You see 48 simultaneous sprites! 😮

Conclusion

I already know that it doesn’t work on V9938 (tested, SVI-738) and V9958 (tested, FS A1-ST); and shouldn’t work on T6950 (untested). About emulators, it doesn’t work on fMSX (tested, version 4.5), openMSX (tested, version 0.15.0), WebMSX (tested, version 5.4.0) and may not work on FPGA based MSX.

Well, I don’t have how to test all TMS9918 family and its variants (FPGA, Sega, Toshiba, Yamaha etc) to let know in which of them this “feature” is present.

So any help would be appreciated!

2 comentários sobre “More than 32 sprites on a TMS9128!

  1. Pingback: Mais de 32 sprites em um TMS9128 | Retrocomputaria

Os comentários estão desativados.