We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS

PPU Registers: Difference between revisions

From SnesLab
Jump to: navigation, search
(Created page with "== Introduction == PPU (also knowing as Picture Processing Unit) is a co-processor of SNES used to send video data to TV. It includes a lot of registers that can be used to d...")
 
No edit summary
Line 6: Line 6:


=== $2100: Screen Display ===
=== $2100: Screen Display ===
It can be read/written at any time: Yes
It can be read/written during H-Blank: Yes
It can be read/written during V-Blank: Yes
It can be read/written during force-blank: Yes
Register is writable for an effect: Yes
Register is readable for a value or effect (i.e. not open bus): Yes
Read/Write style: Byte


==== Format: ====  
==== Format: ====  
Line 16: Line 24:
Note that force blank CAN be disabled mid-scanline. However, this can result in glitched graphics on that scanline, as the internal rendering buffers will not have been updated during force blank. Current theory is that BGs will be glitched for a few tiles (depending on how far in advance the PPU operates), and OBJ will be glitched for the entire scanline.
Note that force blank CAN be disabled mid-scanline. However, this can result in glitched graphics on that scanline, as the internal rendering buffers will not have been updated during force blank. Current theory is that BGs will be glitched for a few tiles (depending on how far in advance the PPU operates), and OBJ will be glitched for the entire scanline.
Also, writing this register on the first line of V-Blank (225 or 240, depending on overscan) when force blank is currently active causes the OAM Address Reset to occur.
Also, writing this register on the first line of V-Blank (225 or 240, depending on overscan) when force blank is currently active causes the OAM Address Reset to occur.
=== $2101: Object Size and Chr Address ===
It can be read/written at any time: No
It can be read/written during H-Blank: ???
It can be read/written during V-Blank: Yes
It can be read/written during force-blank: Yes
Register is writable for an effect: Yes
Register is readable for a value or effect (i.e. not open bus): No
Read/Write style: Byte
==== Format: ====
sssnnbbb
sss  = Object size:
* 000 =  8x8  and 16x16 sprites
* 001 =  8x8  and 32x32 sprites
* 010 =  8x8  and 64x64 sprites
* 011 = 16x16 and 32x32 sprites
* 100 = 16x16 and 64x64 sprites
* 101 = 32x32 and 64x64 sprites
* 110 = 16x32 and 32x64 sprites ('undocumented')
* 111 = 16x32 and 32x32 sprites ('undocumented')
nn  = Name Select
bbb  = Name Base Select (Addr>>14)
* See the section "SPRITES" below for details.

Revision as of 01:55, 20 May 2019

Introduction

PPU (also knowing as Picture Processing Unit) is a co-processor of SNES used to send video data to TV. It includes a lot of registers that can be used to do graphic effects.

Registers $2100~$21FF

$2100: Screen Display

It can be read/written at any time: Yes It can be read/written during H-Blank: Yes It can be read/written during V-Blank: Yes It can be read/written during force-blank: Yes Register is writable for an effect: Yes Register is readable for a value or effect (i.e. not open bus): Yes Read/Write style: Byte

Format:

x---bbbb

x = Force blank on when set. bbbb = Screen brightness, F=max, 0="off".

Note that force blank CAN be disabled mid-scanline. However, this can result in glitched graphics on that scanline, as the internal rendering buffers will not have been updated during force blank. Current theory is that BGs will be glitched for a few tiles (depending on how far in advance the PPU operates), and OBJ will be glitched for the entire scanline. Also, writing this register on the first line of V-Blank (225 or 240, depending on overscan) when force blank is currently active causes the OAM Address Reset to occur.

$2101: Object Size and Chr Address

It can be read/written at any time: No It can be read/written during H-Blank: ??? It can be read/written during V-Blank: Yes It can be read/written during force-blank: Yes Register is writable for an effect: Yes Register is readable for a value or effect (i.e. not open bus): No Read/Write style: Byte

Format:

sssnnbbb

sss = Object size:

  • 000 = 8x8 and 16x16 sprites
  • 001 = 8x8 and 32x32 sprites
  • 010 = 8x8 and 64x64 sprites
  • 011 = 16x16 and 32x32 sprites
  • 100 = 16x16 and 64x64 sprites
  • 101 = 32x32 and 64x64 sprites
  • 110 = 16x32 and 32x64 sprites ('undocumented')
  • 111 = 16x32 and 32x32 sprites ('undocumented')

nn = Name Select

bbb = Name Base Select (Addr>>14)

  • See the section "SPRITES" below for details.