I've read in the past that it was possible to overcome the 8 sprites per scanline on the Amiga (OCS) using the copper list. However, I can't seem to find any actual references to what may have used this trick (any games or demos).

Is this actually possible? I would imagine that the second reuse of the same sprite would need some space to be reused again. Meaning, it couldn't be put side-by-side.

Also, was this technique used in games? What were the general limitations of such a trick?

Thanks.

up vote 16 down vote accepted

It definitely was possible, as demonstrated by Parasol Stars, which "only uses a single sprite to create the score panel at the top of the screen!"

That article has a more detailed discussion of exactly that title but it sounds to be as simple as racing the beam, adjusting the sprite position continually to push it backwards beyond the location currently reached.

EDIT: the sprite tricks section of that same site gives a whole bunch of other examples with copper lists, including these four that all repeat sprites on the same line:

  • Videokid: Programmer Stuart Cook enhanced the Amiga version by using 6 sprites multiplexed across the screen to create a full screen scrolling background parallax layer;
  • R-Type 2: 8 sprites to create a 64 pixel wide repeating pattern for the backgrounds on most levels. The 8 sprites are repositioned multiple times as the display is rendered to show 18 sprites for a 288 pixel wide screen;
  • Jim Power: 2 sprites are displayed then repositioned horizontally right across the screen to create the colourful static background;
  • Risky Woods: The 16-colour background layer was created by using all 8 hardware sprites and repositioning them across the screen. The same 64 pixel wide graphics are repeated across the entire play area.
  • 1
    +1 for mentioning "racing the beam". One of the coolest quotes from the 70's! – cbmeeks May 3 '17 at 17:31
  • As far as I've got from your answer and links, it is still possible to "reuse" sprite HW to display same sprite further into line being drawn (by changing X position of sprite), but then sprite data register must be loaded "manually" (i.e. with the help of copper) if another sprite pixels should be displayed. – lvd May 4 '17 at 8:44
  • @lvd that's my understanding; relocating the sprite is sufficient to cause it to be drawn again but you'll need to alter the contents if you want something else drawn instead. But contents are transferred to a shift register when drawing starts per amiga-dev.wikidot.com/hardware:sprxdata so it's safe to change the register values any time after drawing has begun — no need to wait until drawing has ended. – Tommy May 4 '17 at 20:13
  • Battle Squadron used the sprite trick to create the scores on the top. It is also possible to use an hardware bug to repeat a sprite horizontally and indefinitely – Valentino Miazzo May 19 '17 at 20:24
  • “racing the beam” matches the colloquial explanation used by that time, but actually, only the display data transfer is relevant, i.e. what happens when the data has left the Amiga, is irrelevant. That’s why these tricks still work, even when using a TFT display which has no beam. – Holger Jun 7 '17 at 12:48

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.