(address uint16, value byte)
| 42 | } |
| 43 | |
| 44 | func (mem *cpuMemory) Write(address uint16, value byte) { |
| 45 | switch { |
| 46 | case address < 0x2000: |
| 47 | mem.console.RAM[address%0x0800] = value |
| 48 | case address < 0x4000: |
| 49 | mem.console.PPU.writeRegister(0x2000+address%8, value) |
| 50 | case address < 0x4014: |
| 51 | mem.console.APU.writeRegister(address, value) |
| 52 | case address == 0x4014: |
| 53 | mem.console.PPU.writeRegister(address, value) |
| 54 | case address == 0x4015: |
| 55 | mem.console.APU.writeRegister(address, value) |
| 56 | case address == 0x4016: |
| 57 | mem.console.Controller1.Write(value) |
| 58 | mem.console.Controller2.Write(value) |
| 59 | case address == 0x4017: |
| 60 | mem.console.APU.writeRegister(address, value) |
| 61 | case address < 0x6000: |
| 62 | // TODO: I/O registers |
| 63 | case address >= 0x6000: |
| 64 | mem.console.Mapper.Write(address, value) |
| 65 | default: |
| 66 | log.Fatalf("unhandled cpu memory write at address: 0x%04X", address) |
| 67 | } |
| 68 | } |
| 69 | |
| 70 | // PPU Memory Map |
| 71 |
nothing calls this directly
no test coverage detected