aboutsummaryrefslogtreecommitdiff
path: root/nes/bus.go
diff options
context:
space:
mode:
authorcrecher <crecher@crecher.net>2026-10-13 01:13:13 +0200
committercrecher <crecher@crecher.net>2026-10-13 01:13:13 +0200
commit99cae5a5a37f41f878a84857361eda47910303ba (patch)
tree31c8665ca991f95e09e93bb2e6ec91d81d2427ff /nes/bus.go
parent96ff6d8eda2ba434682909f4ff4ce350d78b2273 (diff)
downloadgones-99cae5a5a37f41f878a84857361eda47910303ba.tar.gz
gones-99cae5a5a37f41f878a84857361eda47910303ba.zip
sprites!!!!!!
Diffstat (limited to 'nes/bus.go')
-rw-r--r--nes/bus.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/nes/bus.go b/nes/bus.go
index af4f242..4f6c720 100644
--- a/nes/bus.go
+++ b/nes/bus.go
@@ -24,6 +24,10 @@ func (n *Console) Read(addr uint16) uint8 {
return n.RAM[addr&0x7FF]
case addr < 0x4000: // PPU registers, mirrored every 8 bytes
return n.PPU.ReadRegister(addr)
+ case addr == 0x4016: // controller 1
+ return n.controllers[0].read()
+ case addr == 0x4017: // controller 2
+ return n.controllers[1].read()
case addr >= 0x4020: // cartridge
return n.Cart.Mapper.CPURead(addr)
default:
@@ -37,6 +41,11 @@ func (n *Console) Write(addr uint16, v uint8) {
n.RAM[addr&0x7FF] = v
case addr < 0x4000:
n.PPU.WriteRegister(addr, v)
+ case addr == 0x4014: // oam dma
+ n.oamDMA(v)
+ case addr == 0x4016: // strobe is shared by both controllers
+ n.controllers[0].setStrobe(v&1 != 0)
+ n.controllers[1].setStrobe(v&1 != 0)
case addr >= 0x4020:
n.Cart.Mapper.CPUWrite(addr, v)
}