Jump to content
IGNORED

Why did so many 8-bit systems have an 8 sprite per line limit?


LatchKeyKid

Recommended Posts

I've always been curious as to why (with the Atari 2600 being a notable exception!) so many 8-bit systems (NES, SMS, Intellivision) had an 8 sprite per line limit.  Is it actually based on the bits the system used or is that just a coincidence and not causation?  Was it based on some sort of other shared technology/hardware instead?  Or was it just deemed enough for the time and not worth exceeding similar to the two player sprites being enough for the 2600/pong/combat back in the 70s?  Thanks in advance.

Edited by LatchKeyKid
  • Like 1
Link to comment
Share on other sites

I think the bits are indirectly linked.    8-bit systems like the 6502 were limited to accessing 64K of memory space at a time, and only a fraction of this could be used for screen/sprite memory so you have to put practical limits on graphics data and objects due to this.   I'm sure the speed of the systems and video timings played a role too.

 

But it's also not a hard rule.   I believe the 7800 doesn't place a cap on sprites.   Also,  I think the Intellivision is technically a 16-bit system?

  • Like 2
Link to comment
Share on other sites

On 8/31/2023 at 1:07 PM, zzip said:

But it's also not a hard rule.   I believe the 7800 doesn't place a cap on sprites.   Also,  I think the Intellivision is technically a 16-bit system?

I think you're right and I wasn't aware of that fact!  Seems like overkill given the time period and tech that it was packaged with though.

Link to comment
Share on other sites

For the C64, the NES, and the Atari 8-bit, the limitation is due to how much sprite data could be transferred during HBlank.  Typically, the graphics chips in these systems had two line buffers, one being populated while the other was drawn.  The sprite graphics data was written into a line buffer during HBlank, and then the rest of the time (the visible portion) was spent reading and drawing the background graphics data into the buffer.  At the end of the line, the buffers were 'flipped', so that the freshly populated one was drawn and the previously drawn one was cleared for new data. 

 

This is just a general explanation, i.e. the general details may differ in actual implementations.

  • Like 5
Link to comment
Share on other sites

Hardware sprites cost quite a bit of space on the video chip (*). The Atari 8-bit only has 3 if I understand correctly. The C64 and Intellivision have 8, though the C64 can multiplex those while the raster is drawing so you can get the effect of many more sprites. Systems like TI-99/4A, Colecovision, MSX etc share the same chip which has support for 32 sprites, but only 5 on a single line (or maybe that is 4 before it starts to flicker). As technology advanced, more sprites and different methods to use them appeared.

 

(*) Looking at the VIC-II die, it seems between 50-70% of it is assigned for those 8 hardware sprites.

Edited by carlsson
  • Like 1
Link to comment
Share on other sites

On 9/9/2023 at 2:42 PM, carlsson said:

Hardware sprites cost quite a bit of space on the video chip (*). The Atari 8-bit only has 3 if I understand correctly. The C64 and Intellivision have 8, though the C64 can multiplex those while the raster is drawing so you can get the effect of many more sprites. Systems like TI-99/4A, Colecovision, MSX etc share the same chip which has support for 32 sprites, but only 5 on a single line (or maybe that is 4 before it starts to flicker). As technology advanced, more sprites and different methods to use them appeared.

The Atari 8bit has 4 Players and 4 missiles (skinny sprites that can be combined into a 5th player)   these sprites stretch the entire height of the screen, and can be chopped up with DLIs to create the impression of many more independent sprites in different screen region

  • Like 2
Link to comment
Share on other sites

The 7800 can display up to 30 sprites on a single line. Recently, @RevEng made an Eighty-Six Sprite tech demo, which has 86 animated sprites, a detailed background, rmt music playing, and a scroller:

 

https://raz0red.github.io/js7800/?cart=https://forums.atariage.com/applications/core/interface/file/attachment.php?id=1054377&key=dc5b1dc081a9dae418a6682e44407568

 

** if it doesn't play music, hit the reset button - some browsers mute sound until you interact.

  • Like 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...