Yeah, I think you got it.
A classic example of this is a bullet sprite, for example.
Code:
0 0 0 0 0 0 0 0
0 0 0 1 1 0 0 0
0 0 1 1 1 1 0 0
0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0
If you draw this at any given position, you will see it as:
Code:
. . . • . . .
Then, you can shift the pixels for that character. But, this takes CPU time. If you pre-shift it and just change the pointer to it, then it takes almost no CPU. But it costs you RAM.
So the bullet sprite shifted could look like:
Code:
0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 0
0 0 0 0 1 1 1 1
0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0
Which, when drawn in the SAME spot, appears to have moved over 2 pixels to the right.
Of course, there are other trade-offs. Like the pixels behind the bullet. On some games you can see this effect because it looks like the bullet has a black box around it. But it moves so fast it's no problem.
This technique is better used for background graphics. You draw a large area once. Then, swap the font out for the pre-shifted fonts. So it appears the background is moving. But your FOREGROUND chars stay the same in each copy. So they are not pre-shifted. This effect gives the illusion of a parallax scroll. C64 games do this all the time.
Anyway, didn't mean to turn this into a game design discussion. LOL