Hey, I've been trying to implement a PPU now that I have a (as far as I can tell) functioning CPU core.
I've read endless amounts of documentation on both the PPU and the CPU, but with the PPU in particular there doesn't seem to be much documentation on where the memory map actually maps to.
I assume that $0000-$0FFF and $1000-$1FFF are controlled by the mapper and typically map to the cart's VROM, but I'm not entirely sure if this is true.
Also is the remaining mapped memory (e.g. Name Table, Palette, etc..) map to the VRAM, the CPU's RAM or both?
If somebody could enlighten me on this I would appreciate it.
Thanks!
I've read endless amounts of documentation on both the PPU and the CPU, but with the PPU in particular there doesn't seem to be much documentation on where the memory map actually maps to.
Code:
3a Memory Map
-------------
+---------------+---------------+---------------+-----------------------+
| Address | End | Size | Description |
+---------------+---------------+---------------+-----------------------+
| $0000 | $0FFF | $1000 | Tile Set #0 |
| $1000 | $1FFF | $1000 | Tile Set #1 |
+---------------+---------------+---------------+-----------------------+
| $2000 | $23FF | $0400 | Name Table #0 |
| $2400 | $27FF | $0400 | Name Table #1 |
| $2800 | $2BFF | $0400 | Name Table #2 |
| $2C00 | $2FFF | $0400 | Name Table #3 |
+---------------+---------------+---------------+-----------------------+
| $3000 | $3EFF | $3EFF | Name Table Mirror *1 |
| $3F00 | $3FFF | $0020 | Palette *2 |
| $4000 | $FFFF | $C000 | Mirrors of Above *3 |
+---------------+---------------+---------------+-----------------------+
-------------
+---------------+---------------+---------------+-----------------------+
| Address | End | Size | Description |
+---------------+---------------+---------------+-----------------------+
| $0000 | $0FFF | $1000 | Tile Set #0 |
| $1000 | $1FFF | $1000 | Tile Set #1 |
+---------------+---------------+---------------+-----------------------+
| $2000 | $23FF | $0400 | Name Table #0 |
| $2400 | $27FF | $0400 | Name Table #1 |
| $2800 | $2BFF | $0400 | Name Table #2 |
| $2C00 | $2FFF | $0400 | Name Table #3 |
+---------------+---------------+---------------+-----------------------+
| $3000 | $3EFF | $3EFF | Name Table Mirror *1 |
| $3F00 | $3FFF | $0020 | Palette *2 |
| $4000 | $FFFF | $C000 | Mirrors of Above *3 |
+---------------+---------------+---------------+-----------------------+
I assume that $0000-$0FFF and $1000-$1FFF are controlled by the mapper and typically map to the cart's VROM, but I'm not entirely sure if this is true.
Also is the remaining mapped memory (e.g. Name Table, Palette, etc..) map to the VRAM, the CPU's RAM or both?
If somebody could enlighten me on this I would appreciate it.
Thanks!