(address uint16)
| 18 | } |
| 19 | |
| 20 | func (mem *cpuMemory) Read(address uint16) byte { |
| 21 | switch { |
| 22 | case address < 0x2000: |
| 23 | return mem.console.RAM[address%0x0800] |
| 24 | case address < 0x4000: |
| 25 | return mem.console.PPU.readRegister(0x2000 + address%8) |
| 26 | case address == 0x4014: |
| 27 | return mem.console.PPU.readRegister(address) |
| 28 | case address == 0x4015: |
| 29 | return mem.console.APU.readRegister(address) |
| 30 | case address == 0x4016: |
| 31 | return mem.console.Controller1.Read() |
| 32 | case address == 0x4017: |
| 33 | return mem.console.Controller2.Read() |
| 34 | case address < 0x6000: |
| 35 | // TODO: I/O registers |
| 36 | case address >= 0x6000: |
| 37 | return mem.console.Mapper.Read(address) |
| 38 | default: |
| 39 | log.Fatalf("unhandled cpu memory read at address: 0x%04X", address) |
| 40 | } |
| 41 | return 0 |
| 42 | } |
| 43 | |
| 44 | func (mem *cpuMemory) Write(address uint16, value byte) { |
| 45 | switch { |
nothing calls this directly
no test coverage detected