Each variable at a time really isn't hard. Besides, Read/WriteVars() although useful, would screw up all the game resources stored in memory, and have access to some unnecessary data or data you wish to protect.
Here, read this: http://www.verge-rpg.com/docs/view.php?libid=1§ion=25
Additionally, here's an example of how you could do your save functionality.
void SaveGame(string filename)
{
int i;
int f = FileOpen(filename, FILE_WRITE);
if (!f)
{
Exit("SaveGame :: Could not save game to file '" + filename + "'! What.");
}
for (i = 0; i < CHARACTER_TOTAL; i++)
{
// FileWriteString saves strings!
FileWriteString(f, character[i].name);
// FileWriteQuad saves ints as binary!
FileWriteQuad(f, character[i].hp);
// FileWriteWord saves smaller integers as binary!
// (word/short) (must be 0 - 65536, anything else will not be stored right)
FileWriteWord(f, character[i].mp);
// FileWriteByte saves tiny integers as binary!
// (byte) (0 - 256, anything else will not be stored right)
FileWriteByte (f, character[i].attack);
FileWriteByte (f, character[i].defense);
FileWriteByte (f, character[i].magic);
FileWriteByte (f, character[i].agility);
}
// Don't forget to close your file! I almost did.
FileClose(f);
}
And... you have to remember, most engines/languages require you to actually write each variable entry to disk anyway. Sure, it was in verge2, but things have changed since then, I'm guessing particularly how resource memory is handled. I think I used to use it, sure. But, I also distinctly remember tossing ReadVars()/WriteVars() away, because adding any changes to the variables in your verge2 VC files would destroy the save format for the game, and as a result there was no backwards compatibility whatsoever possible.
EDIT: Whoops. I meant to use FileWriteByte for attack and defense and such :D