package cart import "fmt" type Mirroring uint8 const ( Horizontal Mirroring = iota Vertical FourScreen SingleScreenLower SingleScreenUpper ) type Mapper interface { CPURead(addr uint16) uint8 CPUWrite(addr uint16, v uint8) PPURead(addr uint16) uint8 PPUWrite(addr uint16, v uint8) Mirroring() Mirroring } func newMapper(c *Cartridge) (Mapper, error) { switch c.MapperID { case 0: return newNROM(c), nil default: return nil, fmt.Errorf("cart: unsupported mapper %d", c.MapperID) } }