Okay, I haven't looked at SRAM much in hardware, but is the battery soldered to the board? Because I just had a crazy idea about putting the SRAM in rom bases, and being able to switch it with another SRAM chip! Is this possible, do you think? I am remaking a game that will probably take up all of SRAM, and only allow one save, but if you had "Memory Cards" (aka, different SRAM chips), it wouldn't be a problem. Is this possible?
You could use a larger SRAM and rewire some of the CHR bank selection lines to the SRAM's upper address bits, similar to how Dragon Warrior 4 manages a 512K ROM using MMC1.
Or you could modify the board to use an ATA or SPI interface so that you can connect a CompactFlash or Secure Digital memory card.
I think FlashROM would be ideal for that. Just copy between SRAM and PRG-ROM when you save/load. Uses less parts for cheaper carts. It'd be a little trouble without a custom mapper though. Squeedo could do it, it wouldn't need the PIC or PC interface and all that stuff.
SOROM; ETROM and EWROM boards are able to banksitch SRAM. Those board are used in Koei strategy games, that suck, errr I mean that use a lot of SRAM. Since they suck, you can go ahead and destroy them to put your game instead.
You even *may* mix the abilities of SOROM and SUROM together in order to got 512kb PRGROM *AND* 16kb of total SRAM with the MMC1 (I'm not sure, but Final Fantasy 1&2 (on the same card) does this).
Since there is 5 CHR lines, you may also for example got two bit of SRAM selection lines, and two bits of PRG selection lines to have 1024kb (with 4 chunks of 256 kb of banks) and one single 32kb SRAM chip (16kb need two chips), the advantage of having one single chip is that you have it battery backed, and that you can do it from a plain Zelda card, no need from rare "Bandit Kings of ancient China" card. With two chips, only 8kb is battery backed.
However, that would need create a new board and your game will only run in emulators that could support this (so, in other words, only in emulators of people that knows you and your projects).
If you want to keep in the "official" boardtypes, do one of the following :
- Reconsider limiting you to 8kb (I'd recommand this one actually)
- Use SOROM (but this limits you to 256kb of PRG)
- Buy a very expensive FF1&2 japaneese card, open it and so you'll be able to officially reconize it board, allowing you to 512kb PRG and 16kb SRAM on the same cart)
- Use the MMC5
Okay, I assume you're talking about FF7.
That would do a such SRAM chart for each saved game and the current game :
Possesed items : 256 bytes
Possesed Blue Magic : 24 bits -> 3 bytes
Possesed materia : 256 bytes
Equipped items : 3 slots and 8 characters -> 24 bytes
Equipped materia : 16 slots and 8 characters -> 128 bytes
Status : (13 ?) different stats and 8 characters -> 104 bytes
Party's characters -> 8 bits (one per character) -> 1 byte
Pary order : 3 slots, and 8 characters make 3 bit per characters -> 9 bits -> 2 bytes
Limite gauge fulness : 1 byte per character -> 8 bytes
Limit activated : 7 limits, 8 characters -> 8 bytes
Limit level activated : 4 levels -> 2 bit per character and 8 characters -> 16 bits -> 2 bytes
Configuration : Should be hold in a single byte
Gil : Up to 999'999 gils mean 3 bytes
Time : Seconds, Minutes, Hours, made 3 bytes
Location : One byte is enough when using save points. I think more are needed on the world map. Let's say 4 bytes.
Quest bits -> About treasure chest, game events, optionnal and non-optionnal bosses, chocobo breeding, etc... each thing should have its bit to set if the player had it or not. So, for a game like FF7 it needs, I think, about 512 bytes (2048 quest bits)
This makes an overall 1315 bytes, 523 in hex. So, let's admit it fills $600 bytes. This allow you up to three save games, and the current game data, and 4 times $600 does $1800, 3 quarters of your SRAM chips. This leaves $800 for other use, such as game engine. I think it is do-able with 8kb.
Well, you also forget that there are many materia, AND I have to define if they are linked with another materia. So that causes a little more complications with that type of stuff. And possessed items would be different. It'd be more like 512 bytes, because I have to know how many are in stock. So 1 byte for each item, and 1 byte for how many are in stock. Things like this make me take up more SRAM. And the quest bits, if there's 2048 quest bits, then that's alot of comparing, and that'd take up alot of PRG space. But I'll see about this.
Celius wrote:
And the quest bits, if there's 2048 quest bits, then that's alot of comparing, and that'd take up alot of PRG space. But I'll see about this.
You can do a SINGLE routine to acctivte a quest bit, and a SINGLE routine to read it to have your programm load different data/event.
That makes two pieces of code.
About the link of materias... this doesn't need to be saved. The link is on the armor or weapon, so by knowing wich matera is in wich slots and how the slots of the armor's or weapon's are organized, you can know how materias are linked.
In battle, you'll want to not check all this everytime you do calculation, so you'll check it once and store it in RAM. But this doesn't need to be saved.
About items, it all depend of how you do this.
If you always put them in the same order, it will do 256 bytes, for the amount of each respective item (0-99). But if you want the player to arrange them as he want, as in the original game, it is 256 bytes for the order, and 256 bytes for the amount.
You are correct about that. Isn't it funny how obvious some things are about how they programmed? Like, exactly 256 enemies, that's really funny. And I think there were about the same amount of weapons/armor/items too. You also forget (Though it is not a big deal,) That you will be able to name the characters, and you'll have their names stored in RAM, too. That'll be about 70 bytes, 7 bytes per name. There's Tifa, Cloud, Yuffie, RedXIII, Sephiroth(Will be Sefroth for menu screen), Barrette, Aeris, Vincent, CaitSith(Will be CatSith for menu), and Cid. But it will be in the "QuickStats" array which contains what will be shown when the menu opens (Name, Level, HP/MP). I still have to show the Limit/EXP levels I suppose. But for now I just have those shown.
Celius wrote:
That'll be about 70 bytes, 7 bytes per name. There's Tifa, Cloud, Yuffie, RedXIII, Sephiroth(Will be Sefroth for menu screen), Barrette, Aeris, Vincent, CaitSith(Will be CatSith for menu), and Cid.
Or you could use a few ligature tiles: Y u f fi e, C a it S it h, S e p h ir o t h
That's true, I forgot. You're adding a "e" to Barett ? Barette, it really sound like a girl.
You're limiting to 7 letters ? If so, you'll have to limit everywhere, not only in the menu. Alternatives like CatSith isn't too noticable. But Sephrot is.
Sephi, or Sefiroth maybe ?
Else, do as tepples does, but I'm afraid it won't look very good. It works fine for il, li, ll, but not for other letters.
I could do multiple-letter tiles, but I also don't think it'd look too good. But Sephiroth will be reffered to as Sephiroth through the game, but in menu/battle, his name will be Sefroth. Remember like FF4, where they had Leviatan, and his name as a summon was Levia? Yeah, it'll be like that, but in menu/battle, Sephiroth will be Sefroth. You won't be able to name Sephiroth, so it won't matter. I'm very excited to see how this will all turn out, I hope it rocks, and doesn't fall apart along the way of developement.
EDIT: Oh, I forgot, Bregalad. I for some reason always make a typo when typing "Barrett", I always type "Barrette". I don't know why, it's just a typo though, not how I'm actually going to name him.
There are a lot of name confusion along the series, such as Lydia/Rydia, Butz/Bartz, Lenna/Reina, X-Death/Exdeath, Tina/Terra, Cefka/Kefka, Clad/Cloud, Aerith/Aeris, Xell/Zell, Djidane/Zidane, etc...
I don't think one more will relly be care. So have CaitSith definitely nammed CatSith per default wouldn't suck - because it is unnoticeable, and because most players will change his name (personally, I named him Lulu, before that there was Lulu in FFX, wich is kinda amusing).
Since you only have Sephiroth in your party once for a real short time, I think it is okay to have him called Sefroth once. Sephi would do the work as well, as Levia does for Leviathan.
When the player names RedXIII "Nanaki", are you going to make it unlock something?
Yes, I forget what it unlocks, though. Doesn't he have extra materia or something like that when you do that? But some of the cheats won't be available. Like I forget what you do, but it involves the X-Item materia and the elixir, and you can make 99 elixirs. There will be none of that, I don't have time to make code that will allow people to make infinite elixirs.
This isn't a code, but a glitch in the game. The programmers most probably didn't want that to happen, but it happens.
When you use the command "Item-W", it allows you to use 2 items. You have to pick up the first, then the second. If you're selecting the same item both times, it's amount won't decrease the second time. Then, if you cancel, it's amount will still increase. Repeat this to get 99 Elixirs, 99 Mega-elixirs, 99 shelters, etc...
It's a bit like in FF2 when you select "attack", choose a target and cancel, and repeaat this many times, your weapon's level will go surprisingly up, because for some reason the game think you actually attacked all these times.
tepples wrote:
When the player names RedXIII "Nanaki", are you going to make it unlock something?
strange never heard of this one.. I've played through the game like 10+ times and thought I knew most stuff.. but this I've never heard of. what does it do?
Nanaki is Red13's "real" name. Through, I didn't know it to unlock anything if you already name him "Nanaki" when you have the chance to.
Celius wrote:
Okay, I haven't looked at SRAM much in hardware, but is the battery soldered to the board? Because I just had a crazy idea about putting the SRAM in rom bases, and being able to switch it with another SRAM chip! Is this possible, do you think? I am remaking a game that will probably take up all of SRAM, and only allow one save, but if you had "Memory Cards" (aka, different SRAM chips), it wouldn't be a problem. Is this possible?
make something like this:
http://nintendoallstars.w.interia.pl/romlab/msram.htm
maybe be usefully for you.