User Tools

Site Tools


base:spritevectors

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
base:spritevectors [2016-12-09 17:03] – [The data exporter] bitbreakerbase:spritevectors [2016-12-09 17:17] – [Adding the Wurstglanz] bitbreaker
Line 1: Line 1:
 ===== Sprite vectors ===== ===== Sprite vectors =====
  
-Basically one can also draw edges by displaying sprites and manipulating there x position per line. If done so from left to right and with rising priority, several edges can be stacked and thus a vector being build. The rightmost edge then needs to be drawn in background color. But faces might not get bigger than 24 pixels and higher than 21 pixels, a bit small. Also other restrictions hit in, like badlines which makes it impossible to manipulate all sprites each rasterline.+Basically one can also draw edges by displaying sprites and manipulating their x-position per line. If done so from left to right and with rising priority, several edges can be stacked and thus a vector being build. The rightmost edge then needs to be drawn in background color. But faces might not get bigger than 24 pixels and higher than 21 pixels, a bit small. Also other restrictions hit in, like badlines which makes it impossible to manipulate all sprites each rasterline.
  
 As a first step, we can expand all sprites in X and Y to achieve more effect area, but this is still not satisfactory. As we inspect the shape of a cube, we notice, that it maximum has 3 edges on the left side and a final edge at the right to separate it from the background. So if we manage to display those 4 edges with 4 sprites, we are already on a good way and only need to change 4 x-positions per rasterline, do we? As a first step, we can expand all sprites in X and Y to achieve more effect area, but this is still not satisfactory. As we inspect the shape of a cube, we notice, that it maximum has 3 edges on the left side and a final edge at the right to separate it from the background. So if we manage to display those 4 edges with 4 sprites, we are already on a good way and only need to change 4 x-positions per rasterline, do we?
 As for the height, we can make use of the sprite stretching trick to make the sprites up to 200 pixels high or even beyond. Happily, this trick also gives us other advantages, as we can switch sprites on/off by omitting a stretch for a single sprite at any given line. Means, our timing over the whole screen will stay the same for each rasterline and thus we can easily use unrolled display code. As for the height, we can make use of the sprite stretching trick to make the sprites up to 200 pixels high or even beyond. Happily, this trick also gives us other advantages, as we can switch sprites on/off by omitting a stretch for a single sprite at any given line. Means, our timing over the whole screen will stay the same for each rasterline and thus we can easily use unrolled display code.
 +
 +{{:base:sprite_base.png?96|}}
 +
 +This is what sprites look like unexpanded. If only first line is stretched, nothing is displayed, if first line is skipped, display of solid lines start until also this line is skipped in the stretcher.
  
 {{:base:spritefiller_step01.png?768|}} {{:base:spritefiller_step01.png?768|}}
Line 95: Line 99:
 to be continued soon... to be continued soon...
  
 +====== Future work / outlook ======
  
 +If the badline-supression is done per frame and not per line (but black background then) the ratio of edge building sprites and gap sprites can be shifted towards more edges, as more x-position writes can happen. Also this technique peaks on frames where a lot of nearly 45° slopes happen, else quite some rastertime is left, but on peaks (SID included) only 3 rasterlines are left at maximum size of 160x160. Also if going one pixel beyond in size, 3 gap sprites are needed for a single face and we run out of sprites anyway :-)
base/spritevectors.txt · Last modified: 2020-07-28 08:42 by bitbreaker