$2005: PPUSCROLL
(value byte)
| 302 | |
| 303 | // $2005: PPUSCROLL |
| 304 | func (ppu *PPU) writeScroll(value byte) { |
| 305 | if ppu.w == 0 { |
| 306 | // t: ........ ...HGFED = d: HGFED... |
| 307 | // x: CBA = d: .....CBA |
| 308 | // w: = 1 |
| 309 | ppu.t = (ppu.t & 0xFFE0) | (uint16(value) >> 3) |
| 310 | ppu.x = value & 0x07 |
| 311 | ppu.w = 1 |
| 312 | } else { |
| 313 | // t: .CBA..HG FED..... = d: HGFEDCBA |
| 314 | // w: = 0 |
| 315 | ppu.t = (ppu.t & 0x8FFF) | ((uint16(value) & 0x07) << 12) |
| 316 | ppu.t = (ppu.t & 0xFC1F) | ((uint16(value) & 0xF8) << 2) |
| 317 | ppu.w = 0 |
| 318 | } |
| 319 | } |
| 320 | |
| 321 | // $2006: PPUADDR |
| 322 | func (ppu *PPU) writeAddress(value byte) { |