Jump to content
IGNORED

About a C64 sprites animation...


José Pereira

Recommended Posts

Hi.

First I want to say that although it would be better that I posted this in the Programming forum my decision is because here there maybe more people seeing it and can answer.

This circles animation is trivial for C64 with their 8 multicolour hardware sprites and some multiplexing but what can we get on A8?

Each wave/snake is made of 6 circles and it seems that there are 3 waves/snakes on screen.

It doesn't need that each circle has exactly the same 11/12 pixels wide that is the C64 hardware sprites width.

It could be, for example, each circle reduced to 10 that would be 1 multicolour A8 sprites=2PMGs and then at the same line could be another one for other wave/snake but I seem to figure that it is also the 3rd one sometimes at same line are more. To the left side that are the smaller size ones.

If this I could even resize circles to have each a maximum width of 8pixels so I could have 3 per scanline (left to right): wave1 small ones [M0+M1/M2+M3] / wave2 [P0+P1] / wave3 [P2+P3] (these last two the larger 'zooming' snake/wave).

But how to when sometimes a circle, front to back, overlapping the next? Have each have snake wave same 2PMGs and when moving changing its xPos? But again how when it gets to the bottom it extends its horizontal width for turning back and going up?

This could be easier done as software sprites but then I couldn't have the text behind.

I just want to build something similar effect for a future game title/credits screen I have in mind.

Any ideas and help?

Thanks.

:thumbsup:

Edited by José Pereira
Link to comment
Share on other sites

It's a little bit like the "Infinite Bobs" technique but it wouldn't work in this case since the segments are different and they are finite length snakes.

 

The problem with doing this on Atari in softsprites is the limitations of how much can be rendered. Doing standard types with background save/restore you'd be looking at an upper limit of about 8-10 of the bigger ones which in the case of this title screen doesn't even cover half of what's going on.

 

What might be needed is some optimization such as snapping the objects to character boundaries as much as possible.

On looking closer - it seems these things don't cross over much, so they could probably be drawn without doing save/restore so long as the Z-ordering was done and at that would just mean render the small ones first. But that still mightn't be enough.

 

Of course, all this thought is assuming we keep 50 FPS and don't use PMGs.

 

The next course of thought IMO is - could this thing be achieved only using 128 characters. If so and everything was done to character boundaries then it'd be easy although it probably wouldn't look very smooth.

Link to comment
Share on other sites

Rybags but isn't soft sprites, I want to know if similar of that using A8's PMGs for those circles/bubbles and what possible solutions like the one I posted, possible or not.

I still need to have PFs for similar credits text other colours behind the bubbles so these have to be PMGs similar to what they are on C64 that is hardware sprites.

Edited by José Pereira
Link to comment
Share on other sites

Using PMGs would likely run into limitations. Multicolour mode and 2 of each per large ball to give 10 pixels and 3 colours which falls short of C64 sprite only by 2 pixels.

 

But then look at the animation, when the trail is near the top or bottom you have multiple balls on the same horizontal line. Doing this animation to a similar quality of the original will require use of playfield. It's probably the case that PMs would be better used for static stuff.

Link to comment
Share on other sites

Problem is that text doesn't fit in 40pixels.

It doesn't have to be that sort of wave movement but other similar using PMGs in multicolour mode.

With this then let's say that I would have 3waves and that on each the 6bubbles (each has 8pixels width) doesn't overlap and just zoom/un-zoom:

-> wave1: [P0+P1];

-> wave2: [P2+P3];

Then wave3, the leftest ones are the smaller bubbles and they must be a maximum of 4pixels wide:

-> wave3: [M0+M1/M2+M3];

It would be PMGs going down and up changing xPos accordingly. But this way what kind of sinusoidal and oval/circle wave's movement could we get?

Edited by José Pereira
Link to comment
Share on other sites

Strange - the Armalyte I just downloaded has just 2 bands of balls, not 4 like that GIF.

 

That brings the requirements down a bit. But thinking some more...

The disadvantage of using PMGs is that DLIs, or more likely screen kernal would use a lot of CPU time which takes away from rendering softsprites. Though a combination of PMGs for the big balls and normal graphics for the small ones might work OK.

 

A worthwhile experiment might be to just try and do the whole thing with predefined characters, probably with more spacing between the balls.

The big balls could be defined to character pixel offsets [0,0] [2,0] [0,4] [2,4] which is 4 + 6 + 6 + 9 = 25 characters required for the big balls.

The small balls, maybe could be done with just 4 characters to cater for the same offsets, if finer movement required for them then more work needed.

 

I suppose the thing is though, if background text and stuff is needed then you'd want to leave probably 40 or so characters free for that.

  • Like 1
Link to comment
Share on other sites

Rybags but isn't soft sprites, I want to know if similar of that using A8's PMGs for those circles/bubbles and what possible solutions like the one I posted, possible or not.

How could it be possible that way? The Sprites on the C64 change their face similar to the Playlist Adress. Set the face, set the x position, set the y position and proirity , and have some interrupts to get that multiple times on the screen. It's like some pokes ...

 

On the A8 I'd try to use the PM shapes and to set them with all registers directly. You have 4 Players for the "Ball shapes" and 4 missiles for the "small ball shapes" . It would be enough to have that overlapped animation.

To get more free cpu cycles, graphicsmode has to be used, and where possible, 32 Bytes width.

Priority switch midline would be needed...

Edited by emkay
Link to comment
Share on other sites

Best would be to do it as animation. Both parts are made of repeating patterns and those two are even mirrored left-right so it makes it simpler.

There shouldn't be more than 16 steps needed to get a nice look and amount of bytes needed to be put on screen is doable as simple lda-ora-sta (ora because of text).

If oring colors doesn't produce bearable results than masking can be added too.

 

btw. All these years I never noticed "wrong" sprite priorities at bottom part :)

Take a look at bottom right 'snake'. Snake is going downwards and larger sprites should be above smaller ones :)

 

post-14652-0-47909600-1476820219_thumb.png

  • Like 2
Link to comment
Share on other sites

Humm... That could work and gave me an idea, no flicker and isn't even necessary to use any PMGs:

Bitmap mode GR.15;

And in alternate scanlines, like:

-> Bubbles 3colours in even scanlines (one colour in 3luminances, I suggest 0_dark gray/gray/white, 1/F_dark brown/brown/light brown and E_dark/pale/yellow to be completely different from the text);

-> Text 3colours in odd scanlines (the other A8 palette's colours the same way as 1colour in 3luminances, title and names lines colours DLIs for changing them across screen);

This way the bubbles animation as software sprites and only done in their scanlines, the even ones.

 

It could not look soo bad but I would still like to see something similar but ddone with PMGs...

:thumbsup:

Edited by José Pereira
  • Like 1
Link to comment
Share on other sites

It's a little bit like the "Infinite Bobs" technique but it wouldn't work in this case since the segments are different and they are finite length snakes.

 

The problem with doing this on Atari in softsprites is the limitations of how much can be rendered. Doing standard types with background save/restore you'd be looking at an upper limit of about 8-10 of the bigger ones which in the case of this title screen doesn't even cover half of what's going on.

 

What might be needed is some optimization such as snapping the objects to character boundaries as much as possible.

On looking closer - it seems these things don't cross over much, so they could probably be drawn without doing save/restore so long as the Z-ordering was done and at that would just mean render the small ones first. But that still mightn't be enough.

 

Of course, all this thought is assuming we keep 50 FPS and don't use PMGs.

 

The next course of thought IMO is - could this thing be achieved only using 128 characters. If so and everything was done to character boundaries then it'd be easy although it probably wouldn't look very smooth.

Unlimited bobs with finite length are actually doable - see MaPa's intro:

  • Like 2
Link to comment
Share on other sites

Unlimited bobs with finite length are actually doable - see MaPa's intro:

Thanks.

But that 'kind of' I know.

That is using all as PFs. That is green BAK and more 3colours where yellow is on background and in the bubbles and it also seems that this part of the screen is reduced to narrow mode 32Bytes wide.

Edited by José Pereira
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...