Does it require the PRG-RAM size to be correct?
Sorry, I don't really understand the question. I set 8K RAM-banks to 1 and it still doesn't save.
(does it save games for other games? I know that wasn't in the original iNES specification, and a value of 0 is supposed to be treated the same as 1 for compatibility)
Yes, it works with wario's woods, which is also mmc3, but its header isn't exactly the same. CHR 8K Count, 8K RAM-banks and Mirroring are different.
Looking at the nesdev wiki on the mmc3 mapper page, there's this:
PRG RAM protect ($A001-$BFFF, odd)
7 bit 0
||++------ Nothing on the MMC3, see MMC6
|+-------- Write protection (0: allow writes; 1: deny writes)
+--------- PRG RAM chip enable (0: disable; 1: enable)
Disabling PRG RAM through bit 7 causes reads from the PRG RAM region to return open bus.
Though these bits are functional on the MMC3, their main purpose is to write-protect save RAM during power-off. Many emulators choose not to implement them as part of iNES Mapper 4 to avoid an incompatibility with the MMC6.
See iNES Mapper 004 and MMC6 below.
I'll see if this is the case.
edit: yeah, I don't understand which byte holds these bits. I'm throughly confused. I'm starting to think this is handled by the ines header so it was already eddited by NESHEAD.