Game/console development
Is there a need to have a whole lot of RAM if there's effectively an unlimited amount of ROM space and DMA? I mean, all RAM would be used for is game state and perhaps graphics data (if I wasn't going to have it directly read from ROM), so...
Perhaps a better question would be, how much RAM is good for a 6502-based system? The NES had 2k, for example.
I guess I won't know until I try to develop a game for it, huh.
Game/console development
@Saxxon I guess the real question is how you want to lay out your address space. While 2KB was sufficient for many NES games it's kind of cramped for a lot of genres and I think 16KB would be pretty roomy while providing a lot of space for other things. Something like this:
$0000-$3fff : 16KB RAM
$4000-$7fff : 16KB I/O and other things
$8000-$ffff : 32KB ROM, some sort of bank switching
Game/console development
@Saxxon The more ROM is visible at once, the better you can simplify the code because you can put related code/data together and simply JSR or read what you want more often. RAM on the other hand doesn't help so much if you have enough to fit all the state you need, and 16KB is very generous for an 8-bit game console (Most seemed to have 8KB at most?). For something that's not a computer and won't be holding large BASIC programs or documents, this seems ideal.
Game/console development
@NovaSquirrel Maybe a map like this:
CPU (16bit bus)
0000-3FFF - 16k system RAM
4000-5FFF - I/O, audio, video
6000-7FFF - external (save ram, ROM bank control, etc)
8000-FFFF - low 32k ROM
VPU/APU (24bit bus)
000000-003FFF - 16k system RAM
004000-FFFFFF - mapped to ROM space
Kinda seems like the A/V severely outmatches the CPU, almost seems more appropriate to have a 16-bit CPU at this point. But I like the simplicity of the 6502~
Game/console development
@Saxxon Now the 6502 side is basically the NES except with more RAM. :p
Things to consider:
1. Putting the external space next to the ROM is a good idea because you can map ROM in there for a contiguous 40KB if you want.
2. If it's fine to have cartridge-side registers (ROM bank, etc.) write-only, they can overlap ROM without eating up any address space and be very easy to decode hardware-wise.
3. 8KB is plenty for save data for most genres and could be banked for more.
Game/console development
@NovaSquirrel Hmm, I might rethink the map I've put together then. :) In fact, the map you provided will probably be the direction I go!