Re: [stella] Collaboration

Subject: Re: [stella] Collaboration
From: Thomas Jentzsch <tjentzsch@xxxxxx>
Date: Sat, 18 Jan 2003 08:26:51 +0100
Christopher wrote:
> I think you could be looking at a very complex kernal (smile)...

Yes, but only if we try to squeeze of the very last possible cycles.

> One possibility would be to create multiple kernals. The different
> kernals would write to the registers in particular order depending
> upon where objects are positioned on the screen. So kernal 1 would
> write P0, P1, M0, M1. Kernal 2 would write M1, M0, P0, P1. &etc.

That still won't work 100%, because there are no restrictions in
movement. If three or four objects are very close together, which will
happen quite often (e.g. two players chasing the same zombie), you will
have some tearing again.

> Or, can you make your objects generic enough so that that they can be
> drawn by any of the sprites? (ie: Car1 can be either P0, P1, M0 or M1,
> Car2 can be either P0, P1, M0 or M1, Gremlin1 can be either P0, P1, M0
> or M1, Gremlin2 can be either P0, P1, M0 or M1). Then you pre-sort
> which corresponds to which depending upon horizontal positioning so
> the leftmost object gets the first set of registers, &etc. You're
> going take an hit on the overhead, changing constants to variables but

I don't think the cars can be drawn *recognizable* when using the
missiles, even with a lot of graphic redesign.

And the grouping problem described above would still remain.

> I'm just throwing out ideas here without a lot of concern for
> practicality...

That doesn't matter, every new idea improves the chances to find a
better solution.

> Or, you could use VDELPx like it's intended and go to a two scanline
> resolution for movement ...

That might turn out to be the best compromise.

But at the moment I'm still working on the most difficult kernel where
both zombies align to the tombstone rows.

I have to set both HMOV registers in the previous scanline (before
HMOVE), but both writes to ENAMx or NUSIZx have to happen between the
very end of the previous scanline (~74) and cycle ~25.

If I don't want to check Px_Y of one zombie twice, I probably have to
buffer the value (and register!) while the second zombie is handled by
it's normal code. I think I just might have enough cycles for that. 

Have fun!
Thomas Jentzsch         | *** Every bit is sacred ! ***
tjentzsch at web dot de |

Archives (includes files) at
Unsub & more at

Current Thread