Re: [stella] JtzBall Alpha

Subject: Re: [stella] JtzBall Alpha
From: Thomas Jentzsch <tjentzsch@xxxxxx>
Date: Mon, 18 Mar 2002 09:47:48 +0100
Erik wrote:
> The idea of doing Qix has come up from time to time, I think both here and 
> in AtariAge.  

Yup, that's why I started thinking about it again.

> About the only I way I could think to do it is with a 
> "Suicide Mission"-style screen, which would give a lot of resolution, plus 
> by using the Supercharger you'd get a lot of RAM for screen data.  You'd 
> definitely miss out not having multiple colors, though.

IMO Suicide Mission has way to much flicker and I would like to make a cart out of the game (if I ever finish this).

> That may help, as might Manuel's suggesting of using missles.  I'm not sure 
> about the ball since it would inherit the color of the playfield.  

The ball would perhaps work on an inversed playfield (*filled* areas get PF-color). But that would only look good for very small atoms, else the different colors would be a bit disturbing

> However,  smaller balls may help to alleviate some of the flicker.  

Yes, now the size is 4x7, perhaps I could go down to 3x5. Making them smaller would also make them harder to recognize for the player, especially while flickering.

Another problem are the new lines, which are colored in JezzBall while they are created and therefore would require a lot of none PF-graphics. I think I can get away, when I only color the "heads" (using missiles) and draw the tail with PF-graphics.

> (I am presuming you'll implement the "intelligent flicker" method.)

That's already in there! :-) 

Here is how it works:
After Y-sorting the atoms, I remove those from the display list where two or more are on the same row. 

The sorting algorithm is a simple bubble-sort which stops when all elements are sorted. This happens quite early, because the elements are only moved one row each frame and are quite good presorted. The algorithm also keeps the order of rows which have the same Y-value. That is very important for intelligent flicker. 

The routine, which removes the duplicates (same Y-value), puts them at the end of the array and reduces the displayed row number. By removing those duplicates with the *lowest* indexes, I'm getting automatically the intelligent flicker I need. :-)

Example: I have three atoms on row 5, which are moving in the same Y-direction

Before sorting, the array looks like this: 5a, ..., 5b, 5c (5a was displayed in precvvious frame on row 4)

Frame 1:
After sorting:  5a, 5b, 5c
After removing: 5c, ... 5a, 5b    (5c is displayed)

Frame 2:
After sorting:  6c, 6a, 6b
After removing: 6b, ... 6c, 6a     (6b is displayed)

Frame 3
After sorting:  7b, 7c, 7a
After removing: 7a, ... 7b, 7c    (7a is displayed and whe are where we started)

I still have to check the algorithm for elements which are moving in *opposite* Y-directions. That could be bit more complicated.

> Given that you're not moving every atom in every frame (or so it seems), 
> could you just check for collisions for the atoms that moved in that frame?

I'm moving every atom every frame and I'm having even and odd frames. Only on even frames the atoms can hit the PF-borders (I could try to move some calculations into the odd frame), but atoms can collide on both frame types. Now I have to find some clever algorithm to improve my calculation speed. :-)

> Perhaps you can technically get up to 28 atoms, but will the game be 
> playable with that many atoms in so small a space?  With less vertical 
> room, the atoms will be bouncing very frequently.

I think about 20 will be the limit (due to calculation time and flicker, not RAM) for the upper levels. To find out how the freaks can handle 50 (not 49!) atoms go here:

I'll have to implement JtzBall very carefully (allow stovepipes etc.) to make all those tricks possible there too.

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

Keine verlorenen Lotto-Quittungen, keine vergessenen Gewinne mehr! 
Beim WEB.DE Lottoservice:

Archives (includes files) at
Unsub & more at

Current Thread