Author
Topic: N64 Save Support (FW v0.23) (Read 15216 times)

Announcing the public release of the N64 Save Support Firmware v0.23. This firmware adds the ability to read and write N64 saves (SRAM, FlashRAM, and EEPROM). In addition, the N64 cart heuristics code was modified and cart size recognition should be improved.

I want to give a HUGE THANKS to the BETA testers. As a group, the testers tested dozens, if not hundreds, of carts during the firmware development. This firmware would not have been possible without their testing and feedback.

A few notes on using the firmware:1) When reading N64 carts, please set the voltage to 3.3V. 2) Remember the [saveReadonly] setting in the Config file. Set it to 0 if you plan to write to the save file.3) Writes to FlashRAM and EEPROM16K save files take longer. DO NOT RESET OR UNPLUG THE RETRODE WHILE THE LED IS ON.4) SRAM (.SRA) and FlashRAM (.FLA) save files need to be saveswapped to be used in Project64 (PJ64) and other emulators. EEPROM (.EEP) save files do not need to be saveswapped.5) Save swap programs are available here: saturnu's ED64-Saveswap: https://github.com/sanni/cartreader/tree/master/extras/saveswap ssokolow's portable (cross-platform) alternative: https://github.com/ssokolow/saveswap6) There is NO SUPPORT for Reproduction N64 carts. Most reproduction carts will have problems either with cart recognition or accessing saves. YMMV.

v0.23 (2017-11-03)- Changes by skaman:-- N64 Saves!-- Added N64 SRAM save support.-- N64 SRAM carts should be identified by Cart ID and display the .SRA file. The .SRA file can be read and written.-- Added proper Dezaemon 3D 768Kbit SRAM support.-- Added identification of the Hoshi no Kirby 64 (J) savetype based on the ROM version. v1.0 & v1.1 are SRAM, 1.2 & v1.3 are EEPROM4K.-- Added N64 FlashRAM save support.-- N64 FlashRAM carts should be identified by Cart ID and display the .FLA file. The .FLA file can be read and written.-- WARNING: FlashRAM writes take time to complete as the chip must first be erased before writing to it. ** WHEN SAVING AN UPDATED .FLA FILE, DO NOT RESET ** **** OR UNPLUG THE RETRODE WHILE THE LED IS ON! ****-- Added N64 EEPROM save support.-- N64 EEPROM carts should be identified by Cart ID and display the .EEP file. The .EEP file can be read and written.-- WARNING: EEPROM16K writes take time to complete. ** WHEN SAVING AN UPDATED .EEP FILE, DO NOT RESET ** **** OR UNPLUG THE RETRODE WHILE THE LED IS ON! ****-- Added reading of the N64 Gameshark. When a working Gameshark is attached, the Gameshark.z64 ROM will be displayed.-- Fixed the N64 heuristics code to recognize 20MB and 40MB games. These were previously overlooked by the code. Fixes Donald Duck Goin' Quackers, Paper Mario, and Ogre Battle 64.-- Fixed the N64 heuristics code for underdumps of Body Harvest and Paper Mario (E). Modified the addresses checked to determine the cart size.-- Modified the Config file to change the save file write protection setting from "[sramReadonly]" to "[saveReadonly]". The change was made since the same setting is applied to all save types including SRAM, FlashRAM, and Controller Pak save files.-- Modified the Config file's default N64 ROM extension to ".z64". This is the correct extension for the native big endian format output by the Retrode.-- WARNING: THERE IS NO SUPPORT FOR REPRODUCTION N64 CARTS. MOST REPRODUCTION CARTS WILL HAVE CART RECOGNITION PROBLEMS AND/OR SAVE PROBLEMS. YMMV.The v0.23 firmware is available here: http://www.mediafire.com/file/7gxgtbl0co7m0b8/Retrode-v0.23.zip

FIRMWARE UPDATE: I've fixed the handling of a couple carts and updated the firmware to v0.23a.Here's the summary of the firmware changes:

v0.23a (2018-01-10)- Changes by skaman:-- N64 Fixes!-- Fixed the ROM size for N64 Command & Conquer. The C&C ROM is padded out with 14MB of 00s at the end which breaks the cart heuristics.-- Added Rockman Dash (J) to the N64 FlashRAM list.

Yes, SEGA SMS/GG BETA firmware should be distributed to the BETA test group later today.

UPDATE: There will be a delay in distributing the SMS/GG BETA. I picked up a GG Codemasters cart (Micro Machines) that doesn't read properly with the Codemasters code that I implemented for GG Ernie Els Golf. More testing to do...

UPDATE: Looks like some Codemasters carts need the CLOCK for the mapper to work properly. GG Ernie Els dumps properly without the CLOCK but others may not. Unfortunately, the GG CLOCK pin is not connected on the production SMS adapter.

Yes, SEGA SMS/GG BETA firmware should be distributed to the BETA test group later today.

UPDATE: There will be a delay in distributing the SMS/GG BETA. I picked up a GG Codemasters cart (Micro Machines) that doesn't read properly with the Codemasters code that I implemented for GG Ernie Els Golf. More testing to do...

UPDATE: Looks like some Codemasters carts need the CLOCK for the mapper to work properly. GG Ernie Els dumps properly without the CLOCK but others may not. Unfortunately, the GG CLOCK pin is not connected on the production SMS adapter.

I was going to do the mod anyway since the CLOCK is needed for the GG EEPROM save carts. I didn't know about it also being needed for some Codemasters carts.

The SMS connector also lacks the CLOCK connection. I'm waiting on a SMS Codemasters cart to check before I add that connection.

I'll document everything if I get it working. I'm going to release the SMS/GG BETA as is since it isn't my code that is the problem. If I can get the CLOCK mod working then I'll release an updated BETA with any code changes.

I was going to do the mod anyway since the CLOCK is needed for the GG EEPROM save carts. I didn't know about it also being needed for some Codemasters carts.

The SMS connector also lacks the CLOCK connection. I'm waiting on a SMS Codemasters cart to check before I add that connection.

I'll document everything if I get it working. I'm going to release the SMS/GG BETA as is since it isn't my code that is the problem. If I can get the CLOCK mod working then I'll release an updated BETA with any code changes.

thanks, i have the official sms plugin with an added game gear connector so if there is a mod i can do to improve it more thats even better.

It might be better to say that mine is a "portable" or "cross-platform" alternative, since there's nothing that should prevent it from working on Windows.

(ie. If it doesn't work on Windows, it's a bug that will be found and squashed when I have time to get back to working on it and set up AppVeyor CI testing.)

In fact, when I have time to get back to work on it, the partially written optional GUI was envisioned specifically to provide an alternative to ED64-Saveswap for people with over-sensitive virus scanners that hate AutoIt scripts.

It might be better to say that mine is a "portable" or "cross-platform" alternative, since there's nothing that should prevent it from working on Windows.

(ie. If it doesn't work on Windows, it's a bug that will be found and squashed when I have time to get back to working on it and set up AppVeyor CI testing.)

In fact, when I have time to get back to work on it, the partially written optional GUI was envisioned specifically to provide an alternative to ED64-Saveswap for people with over-sensitive virus scanners that hate AutoIt scripts.

Thank you SO MUCH for figuring this out! My N64 plugin finally works and I can archive my cart saves to PC!

I do have to report that, after testing all the carts I own, Retrode did not detect a save file on my Majora's Mask cart.

EDIT: You said .EEP files didn't need to be altered in any way to work with emulators; this doesn't appear to be the case. Project64 couldn't read any of them.

Which region/version of Majora's Mask is the cart? Try setting [saveReadonly] to 1 then read the Majora's Mask cart.

Do the .EEP files contain data or all FFs? Are you using the early N64/GBx plugin or the later N64 plugin?

The Majora cart is the original NTSC release with the lenticular label. "Savereadonly" is already set to 1. I'm using Retrode 2 and the plugin built specifically for N64 carts (the one that says "Plug-In 64" on the label). I don't understand the "files" question.

I put the saves in the "Save" folder of Project64; it's where it gets them from. But I get a "Failed to open EEPROM" message when I try to use them.

You mentioned something about setting the voltage to 3.3V; that is something I forgot to do the first time. But when I dumped the saves again on the correct setting, I got the same results. The Majora cart did finally detect a save, though.

Of course it's an .FLA which means I can't test it immediately. That save-altering program you linked to is all Greek to me -- I have little experience with command line programs so I don't know how to use it. I do know that the .EEP files don't work.

I was going to do the mod anyway since the CLOCK is needed for the GG EEPROM save carts. I didn't know about it also being needed for some Codemasters carts.

The SMS connector also lacks the CLOCK connection. I'm waiting on a SMS Codemasters cart to check before I add that connection.

I'll document everything if I get it working. I'm going to release the SMS/GG BETA as is since it isn't my code that is the problem. If I can get the CLOCK mod working then I'll release an updated BETA with any code changes.

I opened up a GG EEPROM cart (World Series Baseball) and it doesn't use the CLOCK pin. The SK pin for the EEPROM is connected to the SEGA 315-5557 chip. The !RESET pin from the cart edge is also connected to the 315-5557 chip. I'll have to connect my logic analyzer to the chips and see what is going on.

I haven't opened up the problem GG Codemasters cart as I've read that they are difficult to open without damaging them. I've seen scans of the PCB and the CLOCK pin is connected. I might build a passthru interface to plug into the GG so that I don't have to open the carts to capture the data.

Thank you SO MUCH for figuring this out! My N64 plugin finally works and I can archive my cart saves to PC!

I do have to report that, after testing all the carts I own, Retrode did not detect a save file on my Majora's Mask cart.

EDIT: You said .EEP files didn't need to be altered in any way to work with emulators; this doesn't appear to be the case. Project64 couldn't read any of them.

Which region/version of Majora's Mask is the cart? Try setting [saveReadonly] to 1 then read the Majora's Mask cart.

Do the .EEP files contain data or all FFs? Are you using the early N64/GBx plugin or the later N64 plugin?

The Majora cart is the original NTSC release with the lenticular label. "Savereadonly" is already set to 1. I'm using Retrode 2 and the plugin built specifically for N64 carts (the one that says "Plug-In 64" on the label). I don't understand the "files" question.

I put the saves in the "Save" folder of Project64; it's where it gets them from. But I get a "Failed to open EEPROM" message when I try to use them.

You mentioned something about setting the voltage to 3.3V; that is something I forgot to do the first time. But when I dumped the saves again on the correct setting, I got the same results. The Majora cart did finally detect a save, though.

Of course it's an .FLA which means I can't test it immediately. That save-altering program you linked to is all Greek to me -- I have little experience with command line programs so I don't know how to use it. I do know that the .EEP files don't work.

I've got a gold, lenticular NTSC Majora's Mask, so I took the liberty of testing it with Retrode firmware v0.23, my Plug-in64 adapter, the 3.3v setting, and the "[saveReadonly] 1" that I just leave on all the time.

I play whatever I can with Mupen64Plus, so I only have Project64 2.2.0.3 installed in Wine right now, but my and my brother's old save files appeared and loaded just fine when I did the following:

1. Copy "ZeldaMajora'sMask.NZSE.fla" from the Retrode to /home/ssokolow/.wine/drive_c/Program Files/Project64 2.2/Save2. Rename the save file to "ZELDA MAJORA'S MASK.fla"3. Unset the read-only attribute that the Retrode puts on it4. Run "saveswap.py ZELDA MAJORA'S MASK.fla" in the terminal

(Mine doesn't have a GUI yet, but ED64-Saveswap does if you want something simpler. As for the name to rename it to, create a new save in your game and see what filename appears in Project64's Save folder.)