Posted Thu Oct 11, 2012 8:57 AM
As Dan said, it's mostly done by updating static tiles in VRAM to "fake" a scrolling effect.
Let's say you want to scroll an 8x8 piece of background in increments of 2 pixels horizontally. You would define that piece of background in a tile, then you would use two other (different) tiles to draw that same piece shifted 2 pixels to the right (or left): One tile will contain 25% of the piece, and the other tile will contain 75% of the same piece. Then you would use two more tiles to do another shift: One tile will contain 50% of the piece, and the other tile will contain the other 50%. Add two more tiles for another shift (One tile will contain 75% of the piece, and the other tile will contain the remaining 25%) and you have all the tiles you need to create your scrolling effect, you just need to display the appropriate tiles at the appropriate time to create the illusion of scrolling. As you can imagine, managing a lot of tiles this way can get pretty complicated, and given that the number of available tiles in VRAM is limited, it's not something you can do easely however you want.
Scrolling is much easier on later hardware like the NES, because the hardware offers the possibility of displaying the entire screen with an offset, so you don't need to predefine series of tiles as explained above.