diff options
| author | crecher <crecher@crecher.net> | 2026-10-12 04:07:09 +0200 |
|---|---|---|
| committer | crecher <crecher@crecher.net> | 2026-10-12 04:07:09 +0200 |
| commit | 8b0292cccf768efdd5295fe0b662488cbc671079 (patch) | |
| tree | f2896047a2328d8aea9a7f7815a6cf8d9c0636ea /cart/mapper.go | |
| parent | 7775f9ad5407f2be4b03c300d1db4c745fda2f69 (diff) | |
| download | gones-8b0292cccf768efdd5295fe0b662488cbc671079.tar.gz gones-8b0292cccf768efdd5295fe0b662488cbc671079.zip | |
added cart package, more tests, tests are now at ./tests and added .gitignore
Diffstat (limited to 'cart/mapper.go')
| -rw-r--r-- | cart/mapper.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/cart/mapper.go b/cart/mapper.go new file mode 100644 index 0000000..7ddd8a9 --- /dev/null +++ b/cart/mapper.go @@ -0,0 +1,30 @@ +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) + } +} |