Posted: Tue Aug 16, 2011 1:01 am
Shadow/hilite is really stupidly complicated on the Genesis.
First case: if no sprites are overlapping, scroll layer A can shadow B (or the background G color if B is transparent) if the priority of both is 0.
Second case: if overlapping sprite with sprite pixel NOT color palette 3, index 14 or 15, the sprite will shadow A/B/G if all the priorities are 0, or A will shadow B/G if the sprite priority is 1 and A and B are 0.
Third case: if overlapping sprite whose pixel is palette 3, index 14, the sprite pixel will hilite any layer beneath it as long as the priority bit for A and/or B are set. The sprite pixel acts as transparent since it's used as a flag, not an actual pixel.
Fourth case: if overlapping sprite whose pixel is palette 3, index 15, the sprite pixel will shadow the overlapping pixel unless the priority for A and B are both 1 and the priority for S is 0, in which case it only shadows G. Again, the sprite pixel is transparent since it's used as a flag, not an actual pixel.
First case: if no sprites are overlapping, scroll layer A can shadow B (or the background G color if B is transparent) if the priority of both is 0.
Second case: if overlapping sprite with sprite pixel NOT color palette 3, index 14 or 15, the sprite will shadow A/B/G if all the priorities are 0, or A will shadow B/G if the sprite priority is 1 and A and B are 0.
Third case: if overlapping sprite whose pixel is palette 3, index 14, the sprite pixel will hilite any layer beneath it as long as the priority bit for A and/or B are set. The sprite pixel acts as transparent since it's used as a flag, not an actual pixel.
Fourth case: if overlapping sprite whose pixel is palette 3, index 15, the sprite pixel will shadow the overlapping pixel unless the priority for A and B are both 1 and the priority for S is 0, in which case it only shadows G. Again, the sprite pixel is transparent since it's used as a flag, not an actual pixel.