Why do some games use ROM and some use RAM for graphical storage? I have some ideas.
With mapperless games it is evident why. As the PPU can addres 8KB of graphics and the CPU 32KB of code, why waste a large portion of the 32KB space reserved for code? After all, if the tiles do not come from the character rom, then they must come from program rom.
Adding mappers changes makes the decision more complex. I think cost is the main factor. An 8KB RAM module costs less and is far more easier to procure than a custom ROM chip. Each character ROM chip is unique to a game and is manufactured that way in the factory. If a game is only to be 128KB then there may be no cost-justifying purpose for using character rom. Moreover, bankswitching character rom with a simple 161 mapper leaves less space for program rom banks. Such mappers only switch in 8KB banks, which can be inflexible. More complex methods of bankswitching character rom is generally not found outside Nintendo's MMC chips, and the Big N's technology didn't come cheap.
I have heard that accessing RAM is faster than accessing ROM, but on the NES are the savings worth it? With ROM, all the programmer has to do is send the index numbers of the tiles he wishes to use in his background straight to the NES's PPU and thence to V-RAM (I know this is a gross simplification of how name tables work.) But if he has character RAM he must send the tile data to the CPU, then to the PPU which will send it to the RAM sitting right beside the program ROM, in addition to all of the above.
With mapperless games it is evident why. As the PPU can addres 8KB of graphics and the CPU 32KB of code, why waste a large portion of the 32KB space reserved for code? After all, if the tiles do not come from the character rom, then they must come from program rom.
Adding mappers changes makes the decision more complex. I think cost is the main factor. An 8KB RAM module costs less and is far more easier to procure than a custom ROM chip. Each character ROM chip is unique to a game and is manufactured that way in the factory. If a game is only to be 128KB then there may be no cost-justifying purpose for using character rom. Moreover, bankswitching character rom with a simple 161 mapper leaves less space for program rom banks. Such mappers only switch in 8KB banks, which can be inflexible. More complex methods of bankswitching character rom is generally not found outside Nintendo's MMC chips, and the Big N's technology didn't come cheap.
I have heard that accessing RAM is faster than accessing ROM, but on the NES are the savings worth it? With ROM, all the programmer has to do is send the index numbers of the tiles he wishes to use in his background straight to the NES's PPU and thence to V-RAM (I know this is a gross simplification of how name tables work.) But if he has character RAM he must send the tile data to the CPU, then to the PPU which will send it to the RAM sitting right beside the program ROM, in addition to all of the above.