OK, here's the situation:
1. I'm coding a game which uses an asymmetrical playfield. I've succeeded in writing a two-line kernel which can cope with the asymmetrical playfield and the two player sprites... just barely.
2. Because of the nature of the game, the asymmetrical playfield is present on every line of the main gameplay area.
3. I need more than two "player" sized sprites.
Now I know what the classic solution to #3 is:
Rotate them on alternating frames, every third frame, etc. This flickers, of course... a lot. This is the Adventure solution. Also the original 2600 PacMan solution. But the game calls for too many objects; the flicker would be unbearable.
I am aware of a workaround to minimize flicker, at least when you don't have too many things *vertically overlapping* at the same time: reuse the sprites within a single frame. As long as you have a scanline in between sprites in which to breathe, you can reset the horizontal location...
Except for the dratted asymmetrical playfield! That requires CONSTANT tending. Every single scanline or you see obvious gaps.
Now I've been staring at Ms. Pac Man and Jr. Pac Man. Both of these do a really good job of minimizing flicker whenever possible. But they use symmetrical playfields, so they don't have to tend the playfield registers on every scanline, and therefore they have an opportunity to move sprites around...
Hey wait a minute, look at those dots Ms. Pac-Man is gobbling! They're not dots, they're stripes -- they're playfield pixels! Which means the playfield is asymmetrical. Which means... what? How the heck is this trick accomplished?
I have a horrible, sneaky suspicion I know the answer:
1. The "dashes" are not on every scanline.
2. The scanlines containing the "dashes" are done with asymmetrical playfield settings.
3. The scanlines NOT containing the dashes are done with plain old symmetrical playfield, and sometimes they stay the same for several scanlines, so...
4. The horizontal repositioning of sprites is happening only on the repeated symmetrical playfield scanlines!
Am I right? And more importantly, does this mean I have to choose between a truly asymmetrical playfield for my jump-scrolling map, and any hope of minimizing flicker?
It looks like I'm going to have to give in and have each "room" of my larger map be symmetrical, with no jump-scrolling halfway between rooms (or even playfield-pixel-at-a-time scrolling, yes I did manage to implement a demo of that) or other effects that would force asymmetrical playfield use on every scanline. If there really isn't another way, I can stand it, but I'd hate to think I wimped out and missed something clever. And I can already see that I'd be forced to use asymmetrical playfield at least when a horizontal hallway is present on the left but not on the right, or vice versa.
Thanks for any insight.













