We all know flashROM. It's abundantly available, cheap, versatile. GTROM is using it, and it can sort of be considered a well-rounded universal memory, if a little slow. It's great for what it does. It has three caveats as far as i'm concerned.
-Slow rewrites, + the fact that you can't read and write at the same time is a combo makes it somewhat inappropriate as expansion work RAM.
-Data cells overwritten will slowly lose their data retention capacity over use, with a capacity that's comparatively low-end to alternatives listed below.
-Also because of the slow rewrites, it is somewhat slow when you want to compile/assemble and test in quick cycles (for GTROM, now there's a workaround provided by NovaSquirrels' PowerPak support)
Then we have MRAM (magnetoresistive RAM).
This can also sort of be considered a universal memory.
+endless write/read/rewrite endurance
+(sometimes) block-based write protection
+Hi-speed writes, they seem to range 35-45ns
+Interface: are parallel interfaced versions (aswell as less useful serials).
-Data retention typically lasts only 20 years after last power-off. This makes its use for PRG-ROM/CHR-ROM purposes debatable.
-Maybe a bit pricey; see below.
*warning: power supply nominally 3.3V, with a typical tolerance up to 3.6. Needs a voltage converter, might add to cost depending on if it was needed anyway or not.
Price and availability:
I haven't found too many actual commercial producers, and the one i found most info on only had few suitable types in stock at mouser. The most interesting was this:
256kB parallel, at the price of 4,75EUR at a batch of 100. This seemed to be the most reasonable one. TSOP package. SOIC currently not in stock.
There might be more manufacturers of similar memory chips, i wasn't very thorough
There are 1, 4 and 16MB versions. 1MB would clock in at around 9-10EUR in a reasonable batch, and the 4 and 16MB versions are probably both more than any homebrewer would need + a lot too much in price.
Great for Work RAM, Save RAM,
As for external graphics RAM, it is potentially OK, but look at lidnariq:s comment just below for potential problems.
https://eu.mouser.com/new/Everspin-Tech ... rspinmram/
And then there's FeRAM / FRAM (reformatted from this post).
+Speed: Close to conventional RAM speeds; overwrites in a single cycle. Suitable for quick access.
+Durability/data retention: While there's an upper limit (typically 10^12 times per byte ), it goes way many times beyond FlashROM and EEPROM.
+Interface: Comes as parallel, though serial seems to be cheaper in general. The parallel ones typically have a SRAM like interface built in.
+Price range: 1-5 dollars for reasonable sizes in the 64kB-512kB range
+Unpowered data retention: typically estimated to last over 200 years below +35C, 95 years at +55C, or 10 years at a temperature of +85C, which is way better than MROM in this regard
-Because reads wear the memory down just like writes (it's basically the same operation), this memory type is only suitable for storing ROM if any and all tight loops, like spinlocks, are copied from ROM and run from the systems' internal RAM instead. If used on a cartridge, emulators supporting it should be made to warn devs of code that is potentially harmful to this memory type.
*price and availability: seemingly better than MRAM in both regards. A few major companies like fujitsu and texas instruments manufacture FeRAM/FRAM; aswell as some relatively smaller companies.
*warning: just like MRAM, power supply is nominally 3.3V, with a typical tolerance up to 3.6. Needs a voltage converter; might add to cost depending on if it was needed anyway or not.
Great for WorkRAM, Save RAM, external CHR-RAM/ROM.
Potentially OK for PRG-ROM, provided the program copies and runs any and all high-rate code like tight loops and such in the NES' internal 2kB RAM.
(Has better data rentention than MRAM in a powered off state. Has better data retention than FlashROM when rewriting, but worse than MRAM in this regard, and worse than both when reading).
https://www.semiconductorstore.com/cart ... duct=48940
While i started looking into this as a part of the "procedural level generation on the NES" query, it seems to me the largest benefit with both MRAM and FeRAM from a design perspective is that they potentially provide means to make the outlook of simulation, map manipulation, large save files and persistent level generation more available to homebrews. Compared to battery backed standard RAM, i think they should prove somewhat competitive in price, although they'll need a 5v to 3.3v converter.
Some last notes:
-PCB size: FlashROM, EEPROM, FRAM and MRAM all have in common that they need less PCB real estate than battery backed RAM
-FRAM used as PRG-ROM - durability calculations:
Code run 60 times per second is rated by Fujitsu to last ~5 years and 3 months of continous use, so it's safe to say this is sound.
Code spinning at 7 cycles, as calculated by Tepples, would last ~83 days and 8 hours of continous use, which i wouldn't recommend even if i think it's rare of any single cartridge to see so much use. For example, a demo/arcade cartridge is going to be burnt out rather quickly. It's worse still with code spinning faster than that.