aboutsummaryrefslogtreecommitdiff
path: root/cart/mapper.go
diff options
context:
space:
mode:
authorcrecher <crecher@crecher.net>2026-10-12 04:07:09 +0200
committercrecher <crecher@crecher.net>2026-10-12 04:07:09 +0200
commit8b0292cccf768efdd5295fe0b662488cbc671079 (patch)
treef2896047a2328d8aea9a7f7815a6cf8d9c0636ea /cart/mapper.go
parent7775f9ad5407f2be4b03c300d1db4c745fda2f69 (diff)
downloadgones-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.go30
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)
+ }
+}