I just tought of something. Battery saves are not reliable at all, on pretty much all non-MMC5 games I have I am frequently loosing all saves because they are corrupted somehow, even tough the batteries are still charged, and even if I always press the reset button when turning the console off.
So I tough it would be good if someone would come up with a device that would plug in controller port #2 or on the bottom expansion port, and that have a serial EEPROM in it and that the games could safely save data in it. It could be usefull for future homebrew games and/or hacked versions of commercial games.
It should be technically possible if I'm not wrong, as Serial EEPROMs ofen require 2 signals, SCL (serial clock) and SDA (serial data), and there is 2 bits unused when a standard controller is plug in port 1. If more signals are needed then the bottom expansion port is needed.
Bregalad wrote:
Battery saves are not reliable at all
What the hell are you talking about??? I don't know for Europe games, but I do have Zelda and Kirby and they save flawlessly games even if I never changed the batteries, regardless of what I do with the power button. (and you know that Zelda is a very very old game, and I don't ever play that game anymore and the game is still correct)
I remember reading that someone had a problem where their games would get erased when holding the reset button then pressing power, and they wouldn't get erased when they didn't hold the reset button. It could be a problem with your console, maybe? My SNES pretty much doesn't allow games to be saved. My Chrono Trigger end-of-the-game save was erased, I started playing Super Metroid and that was erased only because it was in my SNES. So just as my SNES erases games, your NES could be erasing games too, perhaps.
I think I've had saves get erased when the contacts get dirty. The checksum fails, and the game thinks it needs to spew zeroes over the entire save area.
Serial clock wouldn't need much software support to generate. The controller interface already generates a clock signal on one of the wires, although you would want to turn off sound channel 5 while loading or saving because sample fetches are known to glitch the clock signal.
Definitely that's something I've wanted to make also, and messing around with the NES controller port was my first hardware project (besides rewiring carts). So I've had a lot of thoughts about it.
Yes, those unused signals on the controller port look good, but the big problem is getting them hooked up to anything (without modding every system). There's no cables or connectors that are built to use them all at once. Same for the exp port..
It's my opinion, and I would probably feel differently if I kept my NES and PC in different rooms, but I found a ton of uses for hooking it to a MAX202 chip to it and connecting it to my PC's RS232. You can save files, load files, in theory it could use the PC's disk as a retardedly slow hard disk. And network access..! A lot of stuff like that would've been automated in the Squeedo PC host program, which I never really worked on. Instead, I used a terminal for x-modem and keyboard input to the NES. The Squeedo cart had a UART though, and that's what I'd recommend for a new controller port interface. A microcontroller with a UART would give the best speed and also be better able to deal with stray clocks and strobes from the NES. I suppose one could fit an EEPROM into the same design easily, or use the internal memory of the microcontroller.
What I would do if I needed to save and didn't want to mess with a battery, is put the PRG on FlashROM and leave a bank free for save memory. It might have to be 64kB, but out of a 512kB ROM that's not too bad I think.
Well no battery saves are not reliable. I remember loosing my saves on :
- Final Fantasy II (NES)
- Final Fantasy III (NES)
- Zelda (NES)
- Chrono Trigger (SNES)
- Castlevania : Circle of the Moon (GBA)
A friend of mine also had that problem on Mega Man Battle Network (GBA).
And all those games uses battery saves. I did never have any problem with Playstaion games which uses serial EEPROM based memory cards, but I've heard of a few people who did, maybe they didn't use licenced memory cards ? Also I don't remember having any problems with Golden Sun on the GBA which uses EEPROM saves.
I'm pretty sure it's not a console over another that erase saves but it's just the battery backup technique which is not reliable, or Nintendo somehow does not make it reliable enough. Some people are more lucky than others too...
Probably the cart does make bad contact with the NES which makes it more likely that the CPU goes messy and accidentally writes to WRAM when the voltage is in correct range and that the mapper doesn't block acess to it. But it's pretty much impossible to get NES games to make good contact with the console on every try. Whathever I've tried never ended up better than before.
Yes having the PRG ROM being an EEPROM or Flahsrom itself and have a mapper that allow writes to it whithin a certain ranges under certain conditions would be good. However it sounds hard to hack a game so that it have enough free spce in it's PRG ROM to handle about 8k of saves. Inserting some small code that uploads or download data from $4016/$4017 to SRAM sounds easier.
Yes it should be hard to make something that mechanically plugs in the conroller port or the bottom expansion port, but there is unlicenced controllers arround so it's not like it have never been made before. If some hardware guru (bunnyboy ?) passes here it would be great to design such a device.
I don't know if the clock for the conrollers would work with I2C protocol. Or it would conflict with the conroller in port 1 or something. Having the remaining 2 lines for SCL and SDA sounds good enough.