I’ve been working on this story for a while now. Both as a blog post and as a stream/YouTube video. Everything started a few months ago when I discovered my N64 Controller Pak from the late 90s had stopped working. What was the Controller Pak? It was a memory card for saving or transferring save files for Nintendo 64 games. The Controller Pak wasn’t required for all games. Some, such as Super Mario 64 using memory in the game cartridge for saves. Other games, like Turok, had no cartridge memory and entirely relied on the Controller Pak. And then others, like Perfect Dark, could use both cartridge memory or a Controller Pak.
Anyway, my Controller Pak was not working, and I knew it was time to attempt a repair. I wasn’t worried about the failure. The Controller Pak used a 3.3V coin-cell battery to keep the contents of the SRAM stored. At 20+ years old, a dead battery was a common problem for these Paks. I assumed all I needed to do was solder a new battery into the Controller Pak, and everything would be working again. A quick order to eBay, and a few days later, I had a 10x of CR2032 batteries with solder tabs. I also purchased three more official Controller Paks just in case I had issues.
The results of replacing the battery on my original Controller Pak went as well as you would expect with an article with this title. Despite installing a new battery, double-checking for shorts, and verifying the voltage at the SRAM memory chip, the Controller Pak still would not work. I tested formatting the card with the memory card manager from Top Gear Rally and Perfect Dark, but neither could resurrect the Pak. One of the three Controller Paks I had ordered also failed to work. With two dead Controller Paks and basic knowledge of electronics, it was time to get drastic.
In early 2021 I saw a post on RetroRGB.com about Gunner Turnquist from https://gmanzmods.com selling new PCBs for the Nintendo 64 Controller Pak but using FRAM instead of SRAM. The FRAM was a logical upgrade because the chosen chips were designed to work in SRAM-designed circuits with minimal redesigns and didn’t require a battery to maintain data. That made me wonder if a mod existed to replace the SRAM memory on an original Controller Pak with a FRAM chip. The answer turned out to be “yes.”
The first helpful search result I found was a blog post at https://blog.elephantfle.pw. The writer detailed their experience removing the battery and replacing the SRAM memory with an FM18W08 FRAM module. Another result I found was Vincent’s at https://www.dbqbp.com detailing a similar experience. I even found an old post at the Ben Heck forums where someone did the mod with a FRAM chip that didn’t even match the dimensions of the original chip. Overall the process looked straightforward (except for the method from the forum). A 2nd quick order to eBay, and I had a 5-pack of FRAM memory on the way to my house.
Replacing the SRAM module with the FRAM was a straightforward process. I didn’t own a hot air station, but I was still able to get the module removed by using a solder braid to remove as much solder as possible and then carefully heat each pin and lift them from the pads. The last thing to check was power, and that’s where I fell down a deep, deep rabbit hole.
At the end of the blog post at elephantfle.pw the writer mentions that the Controller Pak can be unstable with the FRAM mod, and based on information at the https://blog.qwertymodo.com blog, the solution is to connect pin 28 of the memory module to the positive pad where the battery used to connect. Controller Pak instability does exist, but I don’t believe this is the solution. Why? It comes down to how the Controller Pak is wired. The right side of the PCB has a little 8-pin IC with “74LV2416” printed on the top and a symbol that looks like a Texas Instruments logo. What does this IC do? That is a mystery because there doesn’t appear to be a datasheet publicly available. However, there are clues, and I can make some inferences as to the purpose. First, the pins of the IC are connected to the following:
|1||VDD from battery|
|2||VDD to memory IC (pin 28)|
|4||/CE to memory IC (pin 20)|
|5||/CE from PCB edge connector|
|8||VDD from PCB edge connector|
Using a multimeter shows that when there is no power coming from the controller port, the SRAM’s VDD input (pin 28) and /CE (pin 20) receive 3.3V from the battery. The datasheet of the SRAM says holding /CE high puts the chip in standby mode meaning no read/write operations are allowed. So it appears the 74LV2416 IC is handling the power delivery between the backup battery and controller to the SRAM memory and holding /CE high when the PAK isn’t being used. That matches the information in a PDF I found by Cypress Semiconductor Corp. titled “Design Recommendation for Battery-Backed SRAMs Using Cypress MoBL® SRAMs.” The block diagram seen in figure 4 of the document matches the wiring of the Controller Pak.
So why do I feel the statement “connect pin 28 of the FRAM to the positive batter pad” is incorrect? Because that connects the VDD output of the 74LV2416 IC back to the VDD battery input. If 3.3V needs to be connected to the battery input of the 74LV2416 IC for it to work correctly, why get it from the IC’s output? Wouldn’t it be better to get 3.3V from the VDD input of the controller? Yes, yes, it would. Looking back at the blog post at qwertymodo.com helps explain what has happened. In the comments, the writer, Ben, responds to a reader who asks what is required for swapping a memory module. Ben says they need to connect the positive battery terminal to 3.3V, and it can be tapped from several locations. Here is where I think he misspeaks about pin 28. Ben does clarify that it has been a while since he worked on their PCB project, and I can’t fault him for misremembering something from 5 years earlier.
What do I think is the correct solution? I have two. Like Ben said, the first solution (and the easiest) is getting 3.3V from somewhere on the PCB and connecting it to the positive battery pad. The closest place is the VDD input pad (pin 8) of the 74LV2416 IC. The second solution is to remove the 74LV2416 IC altogether and connect VDD and /CE directly to the FRAM memory module. Since the IC isn’t required for controlling power for the FRAM, why should it be kept in the circuit? There are a lot of questions I have around the 74LV2416 IC. How is it designed to work when no power is supplied to the battery input? Are their delays on power on? What happens to the /CE line during power on? With so many unknowns about the 74LV2416 IC, I feel the best course of action is to remove it.
With the IC is removed, there are two options for bridging the necessary connections. Option 1 is to connect pad 8 to pad 2 (VDD input to VDD output) and pad 4 to pad 5 (/CE input to /CE output) where the 74LV2416 IC used to be. Option 2 is to connect pad 8 directly to pin 28 and pad 5 to pin 20. One additional component is required to get /CE to work: a pull-up resistor to VDD. Without this resistor, the Controller Pak will not work correctly (see figure 3 of the FRAM datasheet). There is a via next to the memory chip that connects to the /CE line. An easy solution is to connect a resistor between that via and VDD.
Despite all the work around getting power to the FRAM memory module, that may not be the only source of instability. According to the datasheets for many of the FRAM modules I’ve looked at, most have a section detailing considerations that must be taken when being used in an SRAM circuit. The datasheets specifically say, “First, bytewide F-RAM memories latch each address on the falling edge of chip enable… Users who are modifying existing designs to use F-RAM should examine the memory controller for timing compatibility of address and control pins. Each memory access must be qualified with a low transition of /CE.” The picture below helps visualize the issue. All of this leads me to believe that we’re fortunate the FRAM memory works with the N64. It’s not designed to be a 100% code-free drop-in replacement for SRAM, yet it does appear to work. Is this going to cause damage to the console or controller? I doubt it. The most likely problem is save file corruption due to the FRAM not latching to the address correctly. The only way to know for sure is to connect everything up to an oscilloscope and monitor what is happening to the /CE and address lines.
There you have it. All of the information I’ve collected and tested regarding the FRAM mod for Nintendo 64 Controller Paks. I hope someone finds all of this data valuable and doesn’t go down the same rabbit hole I fell into. Overall, I’m happy with the results. This has been one of the times I’ve dove into a project and managed to create meaningful results and share.