With the recent thread about the never to be released, new Star Castle homebrew, I first tried to understand from the available videos and screen shots, how it is done.
The rings and gun are drawn using the 48 pixel routine, using large, precalculated ROM blocks. I described that a bit more detailed that in the very thread. All other objects are probably drawn with the ball (though I am not 100% sure here).
The result looks pretty impressive, but there is one pretty obvious difference from the arcade original:
The rings are spaced much wider, making the inner ring very small and the outer ring a bit large.
So I though about a way to make the spacing narrower and the overall size a bit smaller to give the player more room to maneuver and came up with the setup displayed in the attached picture.
You can see that there are 7 kernels, with all but the center kernel being rather simple to draw. For the center kernel, for GRP1a and GRP0c, the data of the precalculated inner and middle ring segments has to be merged. Usually this would require too much CPU time, so I cheated and only merged GRP1a inside the kernel. GRP0c is merged outside and pushed to the stack (14 bytes).
I also did a coarse calculation of the bytes required for the precalculated ring data. About 2800 bytes, which should leave enough room for the kernel and the gun data.
Note: The attached demo doesn't have this data, since I was too lazy to calculate it and to write the setup routine. Instead I just display the full rings, to give you the idea. Press fire to see the kernel areas.
The biggest current problem is the current RAM usage just for displaying the rings. 74 bytes! Ouch!
I suppose Scott had similar problems, so maybe the remaining space is good enough.
So lots of problem still to solve. Anyway, I thought I share my results with you.
EDIT#1: Added 3 more kernel layout graphics, one for 40 pixel with 5 pixel spacing and two for 40 pixel with 4 pixel spacing, drawn with 5 and 6 sprites.
EDIT#2: One more graphic, displaying the kernel overlapping pointers for 42 pixel rings. Plus binary and source code.
12 Comments
Recommended Comments