How Does Paperboy's Scrolling Work

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
How Does Paperboy's Scrolling Work
by on (#217659)
I thought when the Paperboy port was made, the NES didn't have diagonal scrolling bankswitching boards. There doesn't seem to be any garbage area either. So how did they do it?
Re: How Does Paperboy's Scrolling Work
by on (#217660)
Even though I know NOTHING about the NES hardware (other than it has 2KB ram, a 6502, and it's cool.), my theory is that the road is part of the background and everything you see is just sprites, even the stripes, this is just a theory though, it is most likely INCORRECT.
Re: How Does Paperboy's Scrolling Work
by on (#217661)
Open it up in FCEUX and use the nametable viewer from the debug menu (or Mesen > PPU Debug) and you'll have a pretty good visual rundown of what's going on.

It's got horizontal mirroring, so its got extra vertical space for buffering and the "bad" seams are on the horizontal axis (left and right).

Two reasons you might not notice the seams on the left and right:

1. The left 8 pixels are hidden. (Hardware feature.) That's enough to hide any 8x8 tile seam. The only errors that will show will be attributes.
2. The 4 background palettes all have 3 common colours, so 3/4 colours in a wrong attribute error will still show correctly.
Re: How Does Paperboy's Scrolling Work
by on (#217663)
Certain high-end mappers (Namco 129/163, Nintendo MMC5, and MMC3 configured as TLSROM) support diagonal mirroring, and it can be added to any cartridge board with a single XOR gate: A10 out = PA10 xor PA11.

But that's not what Paperboy uses. Paperboy is CNROM with horizontal mirroring, and Paperboy 2 is UOROM with horizontal mirroring. This means there is a seam on the left or right side, but you're just not noticing it, possibly because it's mostly masked by the window function that hides the left 8 pixels.

Usually not even the window function can hide attribute errors in games that use horizontal scrolling with horizontal mirroring, such as Super Mario Bros. 3 and Kirby's Adventure. But this video of Paperboy and video of Paperboy 2 show that each horizontal row has only four colors: black, gray, green, and the color of a particular house. This means there is only one attribute for a whole 256x16-pixel row, causing attribute wraparound to leave no visible artifacts.
Re: How Does Paperboy's Scrolling Work
by on (#217685)
Talk about a poorly colored NES game! Palette usage in this game is atrocious!

popeye3417 wrote:
I thought when the Paperboy port was made, the NES didn't have diagonal scrolling bankswitching boards. There doesn't seem to be any garbage area either. So how did they do it?

Like I said a few times before, a stock NES (i.e. NROM) can do clean 8-way scrolling if the programmer is careful enough. There are a number of ways in which scrolling artifacts can be hidden, although there's usually something that has to be sacrificed to make it possible.

Like tepples said, Paperboy is merely using one of these techniques, which is to use a single palette across the entire axis where the artifacts would be, and the price for that is the game only gets a few colors to draw a lot of different things, and the overall quality of the graphics ends up taking a significant hit.