47 lines
2.1 KiB
Kotlin
47 lines
2.1 KiB
Kotlin
package android.emu6502.nes
|
|
|
|
class PPU(
|
|
// @formatter:off
|
|
|
|
val cycle: Int = 0, // 0-340
|
|
val scanLine: Int = 0, // 0-261, 0-239=visible, 240=post, 241-260=vblank, 261=pre
|
|
val frame: Int = 0, // frame counter
|
|
|
|
// PPU registers
|
|
val v: Int = 0, // current vram address (15 bit)
|
|
val t: Int = 0, // temporary vram address (15 bit)
|
|
val x: Byte = 0, // fine x scroll (3 bit)
|
|
val w: Byte = 0, // write toggle (1 bit)
|
|
val f: Byte = 0, // even/odd frame flag (1 bit)
|
|
val register: Byte = 0,
|
|
|
|
// $2000 PPUCTRL
|
|
val flagNameTable: Boolean = false, // 0: $2000; 1: $2400; 2: $2800; 3: $2C00
|
|
val flagIncrement: Boolean = false, // 0: add 1; 1: add 32
|
|
val flagSpriteTable: Boolean = false, // 0: $0000; 1: $1000; ignored in 8x16 mode
|
|
val flagBackgroundTable: Boolean = false, // 0: $0000; 1: $1000
|
|
val flagSpriteSize: Boolean = false, // 0: 8x8; 1: 8x16
|
|
val flagMasterSlave: Boolean = false, // 0: read EXT; 1: write EXT
|
|
|
|
// $2001 PPUMASK
|
|
val flagGrayscale: Boolean = false, // 0: color; 1: grayscale
|
|
val flagShowLeftBackground: Boolean = false, // 0: hide; 1: show
|
|
val flagShowLeftSprites: Boolean = false, // 0: hide; 1: show
|
|
val flagShowBackground: Boolean = false, // 0: hide; 1: show
|
|
val flagShowSprites: Boolean = false, // 0: hide; 1: show
|
|
val flagRedTint: Boolean = false, // 0: normal; 1: emphasized
|
|
val flagGreenTint: Boolean = false, // 0: normal; 1: emphasized
|
|
val flagBlueTint: Boolean = false, // 0: normal; 1: emphasized
|
|
|
|
// $2002 PPUSTATUS
|
|
val flagSpriteZeroHit: Boolean = false,
|
|
val flagSpriteOverflow: Boolean = false,
|
|
|
|
// $2003 OAMADDR
|
|
val oamAddress: Byte = 0,
|
|
|
|
// $2007 PPUDATA
|
|
val bufferedData: Byte = 0 // for buffered reads
|
|
|
|
// @formatter:on
|
|
) |