How Does Paperboy's Scrolling Work

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

Post Reply
popeye3417
Posts: 1
Joined: Fri Apr 27, 2018 3:56 pm

How Does Paperboy's Scrolling Work

Post by popeye3417 »

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?
User avatar
IRSUP2a03
Posts: 25
Joined: Fri Apr 27, 2018 12:38 pm
Location: Dr. Light's Lab, Unknown

Re: How Does Paperboy's Scrolling Work

Post by IRSUP2a03 »

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.
I'M A DUDE! - Ed
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: How Does Paperboy's Scrolling Work

Post by rainwarrior »

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.
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: How Does Paperboy's Scrolling Work

Post by tepples »

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.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: How Does Paperboy's Scrolling Work

Post by tokumaru »

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.
Post Reply