I was thinking about sprite cycling the other day, and came to the conclusion that "traditional" sprite cycling methods will not work well with layered sprites. If only one of the layers of a multi-layer sprite is displayed, it will look worse than if none is displayed.
Also, traditional sprite cycling will invert the order of the layers, wich will look really wrong if you actually overlap pixels, as opposed to leaving such pixels transparent. This will also cause trouble when using high-priority sprites to mask low-priority ones (if the mask gets behind the sprite it has no effect).
The thing is I couldn't, so far, come up with a rule that will respect the order in wich layered sprites should be rendered, as well as force both or no layers to be displayed (never only 1).
Has anyone ever figured something like this out? I guess maybe sprite rendering should be object-based instead of sprite-based. That should result in fully displayed, or fully hidden objects. I don't know if this is better than parts of the object flickering (I mean, you can tell where the enemy is, although he might be missing a leg).
I know that making it all object-based will not solve all problems. Sprites will surelly be placed in OAM in the correct layering order, but the objects may still have only part of it's layers disappearing.
What do you think? I think that checking for sprites on the same scanline in software (so that you know in advance what will be displayed or not, and then not render partially displayed objects) would take too much time (checking each object's position, width and layer count to see if the sprite count goes over 8 at any given scanline). I don't think that the sprite overflow flag would be of much use, as it would only be set after an incorrectly displayed object, and you still wouldn't know wich one(s).
Any ideas?
Also, traditional sprite cycling will invert the order of the layers, wich will look really wrong if you actually overlap pixels, as opposed to leaving such pixels transparent. This will also cause trouble when using high-priority sprites to mask low-priority ones (if the mask gets behind the sprite it has no effect).
The thing is I couldn't, so far, come up with a rule that will respect the order in wich layered sprites should be rendered, as well as force both or no layers to be displayed (never only 1).
Has anyone ever figured something like this out? I guess maybe sprite rendering should be object-based instead of sprite-based. That should result in fully displayed, or fully hidden objects. I don't know if this is better than parts of the object flickering (I mean, you can tell where the enemy is, although he might be missing a leg).
I know that making it all object-based will not solve all problems. Sprites will surelly be placed in OAM in the correct layering order, but the objects may still have only part of it's layers disappearing.
What do you think? I think that checking for sprites on the same scanline in software (so that you know in advance what will be displayed or not, and then not render partially displayed objects) would take too much time (checking each object's position, width and layer count to see if the sprite count goes over 8 at any given scanline). I don't think that the sprite overflow flag would be of much use, as it would only be set after an incorrectly displayed object, and you still wouldn't know wich one(s).
Any ideas?