| 398 | } |
| 399 | |
| 400 | func (ppu *PPU) incrementY() { |
| 401 | // increment vert(v) |
| 402 | // if fine Y < 7 |
| 403 | if ppu.v&0x7000 != 0x7000 { |
| 404 | // increment fine Y |
| 405 | ppu.v += 0x1000 |
| 406 | } else { |
| 407 | // fine Y = 0 |
| 408 | ppu.v &= 0x8FFF |
| 409 | // let y = coarse Y |
| 410 | y := (ppu.v & 0x03E0) >> 5 |
| 411 | if y == 29 { |
| 412 | // coarse Y = 0 |
| 413 | y = 0 |
| 414 | // switch vertical nametable |
| 415 | ppu.v ^= 0x0800 |
| 416 | } else if y == 31 { |
| 417 | // coarse Y = 0, nametable not switched |
| 418 | y = 0 |
| 419 | } else { |
| 420 | // increment coarse Y |
| 421 | y++ |
| 422 | } |
| 423 | // put coarse Y back into v |
| 424 | ppu.v = (ppu.v & 0xFC1F) | (y << 5) |
| 425 | } |
| 426 | } |
| 427 | |
| 428 | func (ppu *PPU) copyX() { |
| 429 | // hori(v) = hori(t) |