Jump to content
IGNORED

768 sprites


sometimes99er
 Share

Recommended Posts

I almost think so. :)

Below is an XB demo that shows 28 sprites on 7 horizontal lines. Background characters still available (not used in the demo).

I haven't got real hardware, so I'm not going to attempt 768 sprites in Assembly. I guess you can have any background modes except those with sprite problems ? I think it requires some tight 5th sprite detection and sprite list swapping, but only on every 8th scanline ? Will the sprite priority crack ? Will there be any CPU power left ? Will some sprites have to be sacrificed ? Can it better high resolution pictures ? Will it take a massive 24 sprite lists ? And what about motion ?

Any ideas and attempts are appreciated in this thread. :)


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

Interesting idea. It should be simple enough to set up 24 sprite attribute lists in VDP RAM and swapping between them using 5th sprite detection. If you only put 3 sprites on the first scanline in a group of 8 lines you have a 5th sprite left for the last line. While the visible part of the screen is drawn you won't have much time left to move the sprites (this code will be swap, wait, swap, wait ...), but there might be enough time during vertical refresh.

 

This should also work in Classic99/MAME/JS99er.net, so why not try it?

  • Like 1
Link to comment
Share on other sites

Excellent. Thanks.

 

I'm thinking there's already a 5th sprite occurrence on the last 7 of the 8 scanlines (with the demo and 32 sprites in mind). Do emulators support giving away the no. of the 5th sprite ? I guess it would be the same sprite no. one would try and catch. And the VDP write address could be set previously (before the 5th sprite catch).

 

Depending on the internal hardware buffering, the trick may be to change to a sprite attribute list, that has some similar attributes as the line already being pre-scanned ? Well, the last 4 sprites displayed are those with higher priority. They will overshadow what comes on the next line, except if I can be fast enough, - or wait long enough (catch one line above and wait for the right moment) ...

 

:)

Edited by sometimes99er
Link to comment
Share on other sites

Just messing around I made a change using RXB:

100 call screen(2)::call char(33,"8")::for i=27 to 0 step -1
110 call sprite(#i+1,33,16,100-(i and 252)/4,100,0,rnd*50-25)
120 next i
130 IF RND<.01 THEN CALL RMOTION(ALL) :: GOTO 130 ELSE 130

Has a look to it.

  • Like 1
Link to comment
Share on other sites

We have the hardware 32 sprites on 8 scanlines. Trick is low priority first. The last scanline is showing sprites with highest priority. It is crucial we change the sprite attribute list at the right time to fool the hardware and restart the process (hardware forced to display low priority sprites after displaying one line of high priority sprites). The last high priority sprites have to go through the prescan, when that has happened and before the next prescan, we have to change the sprite attribute list. With 5th sprites on 7 out of 8 scanlines, we need only react on one of the last ones ?

 

:)

Edited by sometimes99er
Link to comment
Share on other sites

We have the hardware 32 sprites on 8 scanlines. Trick is low priority first. The last scanline is showing sprites with highest priority. It is crucial we change the sprite attribute list at the right time to fool the hardware and restart the process (hardware forced to display low priority sprites after displaying one line of high priority sprites). The last high priority sprites have to go through the prescan, when that has happened and before the next prescan, we have to change the sprite attribute list. With 5th sprites on 7 out of 8 scanlines, we need only react on one of the last ones ?

 

:)

 

You're right, it's more complicated than I thought.

  • Like 2
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...
 Share

  • Recently Browsing   0 members

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