FRAM Mod for N64 Details

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 about Gunner Turnquist from 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 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 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 the writer mentions that the Controller Pak can be unstable with the FRAM mod, and based on information at the 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:

1VDD from battery
2VDD to memory IC (pin 28)
4/CE to memory IC (pin 20)
5/CE from PCB edge connector
8VDD 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 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.

Power soluton 1: bridge VDD to the battery + terminal

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.

Reference Info:

Have Fun,

Boss Rally – Top Gear Rally’s PC Brother

Have you ever had one of those moments when clicking through Wikipedia you learn something that blew your mind? I had one of those moments in 2020. I was clicking through some pages about Top Gear games when I landed on Top Gear Rally and saw the sentence, “In 1999, the game was ported to Microsoft Windows as Boss Rally.” What? I had played Top Gear Rally on my Nintendo 64 since 1997 and never knew a PC version existed. Clicking the link to Boss Rally’s Wikipedia page revealed the original developer of TGR ported the game.  I knew at that moment I had to find a copy.

Obtaining a copy of Boss Rally turned out to be a challenge. There were no copies for sale anywhere I looked online. In contrast, Top Gear Rally had over 200 copies available on eBay. Nonetheless, I created an eBay saved search and went on with my day. About six months later, my search finally got a hit. A seller had a copy for sale and was asking $9.99. I felt that was a fair price for an uncommon PC game with little to no other listings. A few days letter I had the game in my possession.

The challenges of Boss Rally weren’t over yet. The game was developed in the late ’90s when 3D games for PC used graphics APIs like 3dfx’s Glide or Microsoft’s DirectX 7. Glide was never officially supported on Windows 2000/XP+, and Windows Vista or 7 dropped support for early versions of DirectX. With Boss Rally only supporting Glide and DirectX 6, there was no native way to play the game on my PC. That was until I discovered the utility dgVoodoo 2.

dgVoodoo 2 is an excellent piece of software. It’s able to map Glide GPU logic and DirectX pipelines to DX10+ shaders. This means old 3D games from the 90s and 2000s can be played on a modern version of Windows. Plus, installing the software is easy, only copying the required DLL files into the installation directory of a given game. dgVoodoo 2 has become my go-to solution for getting old games running on Windows.

Combining Boss Rally with dgVoodoo2

  • Download the latest version of dgVoodoo from
  • Unzip the dgVoodoo download.
  • Open the MS\x86 folder and copy all the files to the game’s Program Files folder.
  • Navigate back to the top of the dgVoodoo2 folder, right-click on gvVoodooCpl.exe, and choose “Run as Administrator.”
  • Click the Add button and select the game’s install folder under Program Files.
  • On the General tab, choose to run the game as Full Screen or Windowed.
  • Under the DirectX tab, set the following settings:
    • Uncheck “Application controlled fullscreen/windowed state.”
    • Check “Fast video memory access.”
    • Set the desired resolution. This setting will help override the in-game menu from rendering at 640×480. You will also want to go into the game’s options and set the desired resolution.
  • Click the Apply button and close dgVoodoo Control Panel.
  • From the Start menu or Boss Rally install folder, launch the Display Wizard, and select a Direct3d video card. The exact card does not appear to matter.
  • Launch Boss Rally and get racing.

Have fun.

The Better N64 Joystick Repair

Today I’m going to describe the installation and review of replacement N64 joystick parts sold by Kitsch-Bent. As described by their website, these parts are made of polyoxymethylene plastic for durability, and I’m impressed with the quality. They look like OEM parts.

Why do N64 joysticks wear out? The answer is twofold. The bottom of the stick rides in a bowl and grinds the surface of the bowl away over time. That is the white powder you eventually see around the base of the joystick. As the bowl wears away, the joystick sinks lower into its assembly, and this causes the movement to feel sloppy. On top of that, the joystick slides inside slots to push gears around. The slots will eventually lose their shape causing joystick to have too much play.

Disassembly of the N64 controller is very easy. There are several Philips screws around the perimeter of the controller, plus two more screws in the expansion port. Once you are inside the controller, the next step is to move the trigger button from its home on the backside of the joystick assembly. Now, unplug the joystick from the main PCB and unscrew it from the shell. Finally, carefully remove the last screw from the joystick assembly. There is a spring inside the assembly pushing the joystick down into the bowl, and when the screw is released, pieces may go flying.

The inside of the joystick assembly may look complicated, but the mechanics are simple. As the joystick moves around, it pushes the gears, which turn optical encoder wheels. The optical encoders turn the analog movement into digital numbers used by the controller to determine how far the joystick has moved from its home position. This is the same technology used in older computer mice used. The 8-Bit Guy did a video on how mice work if you want to learn more.

Installing the new parts is straightforward. Remove the joystick, spring, and gears. Remove the old bowl. Transfer the optical wheels to the new bowl. Reverse the process to install the parts.

That’s it. Overall, I’m happy with these parts sold by Kitsch-Bent. At $1.15 for the bowl, $0.95 for the gearsets, and $1.05 for the thumbsticks, you can repair several joysticks for the same cost as one aftermarket replacement. Most repairs should only need new gears and maybe bowels. The longevity of the components is still unknown. I don’t play my Nintendo 64 daily as I did in 1996-1999, so I don’t expect the joysticks to wear out.

Have fun.