I was just thinking about the logistics of making a NES RPG. In NES terms, 8k is a ton of space. I suppose that's easy to say until you start filling it up, but you really ought to be able to accomplish a lot with it.
And then I got to thinking about games that supported it, and how the majority really couldn't have needed most of it for saving. I'm not much of a source diver to determine the exact nature of these things, but I know some people have and I wondered if someone could shed a little light on the typical use of SRAM.
For example, look at Kirby's Adventure - it has save data, but doesn't save your score, health, current ability, or even number of lives. It saves which levels you've completed (and whether you found all the level's secrets) but doesn't save whether or not you've already played a minigame. If we're generous and assume it saves a byte of data for every level, and there are about 40 levels and 3 save slots, that comes out to a whopping 120 bytes. Out of 8k.
Or look at a typical RPG of modest size. Let's say 8 bytes for a party member's name, 16 bytes for his attributes (strength, current HP, experience points). 8 more bytes of hidden stats and miscellaneous flags (poisoned etc.) and 16 bytes for his inventory (8 items plus flags for states like "equipped"). 48 bytes per character x 8 party members = 384 bytes. Then 32 bytes to support 256 chests and another 32 for 256 game flags ("talked to king," "killed the boss"). Finally add 128 bytes for things I didn't take into account like the party's room/x/y location and the status of minigames. Even playing fast and loose and being really generous, that's still only 576 bytes. You could almost squeeze that into regular RAM along with the rest of the game. Most RPGs probably used a lot less, considering they didn't often save information like the party's x/y position. To my knowledge Final Fantasy was one of very few games that let you save anywhere on the world map, even though it should be an easy thing to do.
So how do games use that 8k? Do they keep a backup or two of save data in case of corruption? Do they primarily just use it for more working RAM, decompressing large amounts of data and tables there? Are my estimates just way off?
Did any game really use all/most of it for saving vital information? I can imagine Dragon Quest 4 might have, that was an extremely complex game...
And do you have any ideas for how you would personally use SRAM to be sure you take good advantage of it? You could save a complex 32x32 map with 2 bytes of data per tile in just 2k, and that's before compression. Saving custom levels should be trivial, especially for games like Excitebike that use big meta-chunks. You could also back up the entire state of the game several times over.
I dunno, just kind of intrigued by the amount of SRAM in general.
And then I got to thinking about games that supported it, and how the majority really couldn't have needed most of it for saving. I'm not much of a source diver to determine the exact nature of these things, but I know some people have and I wondered if someone could shed a little light on the typical use of SRAM.
For example, look at Kirby's Adventure - it has save data, but doesn't save your score, health, current ability, or even number of lives. It saves which levels you've completed (and whether you found all the level's secrets) but doesn't save whether or not you've already played a minigame. If we're generous and assume it saves a byte of data for every level, and there are about 40 levels and 3 save slots, that comes out to a whopping 120 bytes. Out of 8k.
Or look at a typical RPG of modest size. Let's say 8 bytes for a party member's name, 16 bytes for his attributes (strength, current HP, experience points). 8 more bytes of hidden stats and miscellaneous flags (poisoned etc.) and 16 bytes for his inventory (8 items plus flags for states like "equipped"). 48 bytes per character x 8 party members = 384 bytes. Then 32 bytes to support 256 chests and another 32 for 256 game flags ("talked to king," "killed the boss"). Finally add 128 bytes for things I didn't take into account like the party's room/x/y location and the status of minigames. Even playing fast and loose and being really generous, that's still only 576 bytes. You could almost squeeze that into regular RAM along with the rest of the game. Most RPGs probably used a lot less, considering they didn't often save information like the party's x/y position. To my knowledge Final Fantasy was one of very few games that let you save anywhere on the world map, even though it should be an easy thing to do.
So how do games use that 8k? Do they keep a backup or two of save data in case of corruption? Do they primarily just use it for more working RAM, decompressing large amounts of data and tables there? Are my estimates just way off?
Did any game really use all/most of it for saving vital information? I can imagine Dragon Quest 4 might have, that was an extremely complex game...
And do you have any ideas for how you would personally use SRAM to be sure you take good advantage of it? You could save a complex 32x32 map with 2 bytes of data per tile in just 2k, and that's before compression. Saving custom levels should be trivial, especially for games like Excitebike that use big meta-chunks. You could also back up the entire state of the game several times over.
I dunno, just kind of intrigued by the amount of SRAM in general.