nesdev.com
http://forums.nesdev.com/

Understanding the behavior PPU
http://forums.nesdev.com/viewtopic.php?f=3&t=10751
Page 2 of 2

Author:  tepples [ Thu Dec 05, 2013 9:59 pm ]
Post subject:  Re: Understanding the behavior PPU

Here's how the set of available tiles relates to time: The PPU fetches backgrounds in 8x1 pixel slivers. During the fetch process for any sliver, the bank of 256 tiles at $0000 or $1000 can be used. This can be changed over time in one of three ways: by switching between $0000 and $1000 (mid-frame or even mid-scanline), by switching the CHR ROM bank that corresponds to PPU $0000 or $1000 using writes to mapper ports (mid-frame or even mid-scanline), or by overwriting the tile data in CHR RAM (during vertical or forced blanking only).

The way "at any one time" poses a problem is that if you have 4,000 different tiles that you want to put next to each other, you have to either A. organize them into sets of related tiles, which can involve a lot of duplication, or B. write them to CHR RAM. If you're trying to write Chinese characters, for example, you have to either prerender each phrase to CHR ROM (A with duplication) or render each phrase in software to CHR RAM (like the numerous TQROM-alikes). And there's just barely enough PPU address space to cover the whole screen at 1bpp, even with palette trickery and a bankswitch halfway down the screen.

Author:  Quietust [ Fri Dec 06, 2013 8:53 am ]
Post subject:  Re: Understanding the behavior PPU

tepples wrote:
The way "at any one time" poses a problem is that if you have 4,000 different tiles that you want to put next to each other, you have to either A. organize them into sets of related tiles, which can involve a lot of duplication, or B. write them to CHR RAM.

Or C. use a mapper which is capable of switching CHR ROM banks on a per-tile basis (namely, the MMC5), but that's rather costly if you want to make a physical cartridge.

Page 2 of 2 All times are UTC - 7 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/