diff options
| author | crecher <crecher@crecher.net> | 2026-10-12 15:44:15 +0200 |
|---|---|---|
| committer | crecher <crecher@crecher.net> | 2026-10-12 15:44:15 +0200 |
| commit | 780b1e886f6676efedc732b67328f5fbdbe87dc4 (patch) | |
| tree | ed9c99db91cbee374e31cea24f6ad34848dc47af /nes/bus.go | |
| parent | 6c49575d1cacd5126b73506cc30430643310396b (diff) | |
| download | gones-780b1e886f6676efedc732b67328f5fbdbe87dc4.tar.gz gones-780b1e886f6676efedc732b67328f5fbdbe87dc4.zip | |
waiter waiter more comments please
Diffstat (limited to 'nes/bus.go')
| -rw-r--r-- | nes/bus.go | 21 |
1 files changed, 19 insertions, 2 deletions
@@ -1,10 +1,27 @@ package nes +// CPU memory map is: +// Address range | Size | Device +// -------------------------------------------------- +// $0000-$07FF | $0800 | 2 KB internal RAM +// $0800-$0FFF | $0800 | Mirror of $0000-$07FF +// $1000-$17FF | $0800 | Mirror of $0000-$07FF +// $1800-1FFF | $0800 | Mirror of $0000-$07FF +// $2000-2007 | $0008 | PPU registers +// $2008-$3FFF | $1FF8 | Mirrors of $2000-$2007 (repeats every 8 bytes) +// $4000-4017 | $0018 | APU and I/O registers +// $4018-$401F | $0008 | APU and I/O functionality thats normally disabled (CPU test mode) +// $4020-$FFFF | $BFE0 | Unmapped, available for cartridge +// - $6000-$7FFF | $2000 | Usually cartridge RAM (if present) +// - $8000-$FFFF | $8000 | Usually cartridge ROM (if present) + +// wow i put way too much effort into making that table + func (n *Console) Read(addr uint16) uint8 { switch { - case addr < 0x2000: + case addr < 0x2000: // internal RAM and mirrors return n.RAM[addr&0x7FF] - case addr >= 0x4020: + case addr >= 0x4020: // cartridge return n.Cart.Mapper.CPURead(addr) default: return 0 |