Introduction: How to Build a N64 TASBot

(NOTE TO READERS 2024): This was a tutorial I made in the summer before fifth grade(you can see me in the Google Drive link where I take the plastic end off the jumper wire), and I have been aware for a long time, now six years, that the code for the Arduino will only work on Super Mario 64 and a few other select games, and bug out on all the others. Back then I had no technical ability to fix it, but just recently I found out that it could be easily fixed by commenting out a few lines in the Arduino program. You can read my GitHub issue from 2018 here. I've also added a few more updates along the article to help future readers on details, including the aforementioned fix.

I might make an up to date YouTube video detailing this process sometime.

Happy building :D


Step 1: Requirements

If you want to build a TASBot, you’re probably going to want the parts. So here they are:
1x Arduino Nano, on breadboard, with wire to your computer.
Arduino Program installed on computer(free)
Internet Browser
1x MicroSD Card Module
1x MicroSD Card
1x MicroSD Card Reader
10x Female - Male Jumper Wires (they come in big packs for around 2 dollars, so they’re not that expensive)
1x Nintendo 64
1x Nintendo 64 Game
That’s all, so let’s start building!

Step 2: Computer

On the computer, go to https://github.com/rcombs/n64-tasbot and download it by hitting "Clone or download", then clicking "Download ZIP". After it is done downloading, extract it, and open the files until you get to the directory with the folder "sd-n64". See the file named, "crc_table.h"? Drag that into the folder named, "sd-n64"(fig. 1).

Then, open the Arduino program. Go back to the folder and open the sd-n64 folder. Inside you should find crc_table.h and sd-n64.ino. Drag sd-n64.ino into the Arduino program. Next, go to https://raw.githubusercontent.com/rcombs/n64-tasb... and copy everything inside by hitting Ctrl+A and Ctrl+C(command+A and command+C for Mac users). This will copy everything inside that webpage. If you haven't already, plug the end of the cord that came with the Arduino Nano into the side that fits, and the other side into the Arduino, and also, inside the Arduino program, click "Tools" at the top, and select my settings(shown in fig. 2 )

Go back to the Arduino program and delete all the code. Next, hit Ctrl+V (command+V on Mac). The code that you copied earlier will appear there. We have to change two things. They are both at the top. Change #define SD_SS_PIN 4 to #define SD_SS_PIN 10, and change #include "../crc_table.h" to #include "crc_table.h"(shown in fig. 3).

Next, you are going to need a TAS. Plug your MicroSD Card in, and find a TAS. All you need to do to do this is to simply search your N64 Game name, followed by TAS. Find a video relating to this, and they will most likely have it on tasvideos.org. Click the tasvideos.org/(there will be some numbers and letters here) link, and find the link that says "Mupen64 movie(.m64)"(shown in fig. 4). If it is a BizHawk Movie(.bk2), it will not work, so find another TAS.

(UPDATE 2024: I have found a way to convert .bk2 files to .m64s, which was a little difficult because .bk2s use different input timing than .m64s. If you find a TAS you want to convert just let me know in the comments and I can probably get a m64 back to you. I'm very probably not going to try to modify the program to play back bk2s anytime soon.)

Open it, and find the file that has the letters ".m64" at the end. Make sure your MicroSD card is formatted right(if not sure, follow the steps here but not the last step: https://www.instructables.com/id/Format-USB-Flash...

this is for windows, so Mac users, there is hopefully a tutorial online somewhere).Name the .m64 file to "1key"(shown in fig. 5). it should now look like "1key.m64". Now, put the MicroSD in the module. Don’t close anything, and let’s move on to the next step. We are done here for now.


(UPDATE 2024: If you want to play m64 files on other games besides Super Mario 64, do the following:

Find these lines in the sd-n64.ino file and comment them out:

Serial.println(F("Controller identified"));
[...]
Serial.println(F("Got a read, what?"));
[...]
Serial.println(F("Got a write, what?"));

becomes

//Serial.println(F("Controller identified"));
[...]
//Serial.println(F("Got a read, what?"));
[...]
//Serial.println(F("Got a write, what?"));

If you want to know why this actually works, see my GitHub issue where I resolve it; I don't really want to put a technical explanation here. Another solution is changing the baud rate in the Serial Monitor to a higher value, but then the program spams your Serial Monitor with one or more of these lines and it doesn't look very pretty.

Step 3: Wiring

So, now to wiring. Also, if this works with the reader that has the pin labeled “3.3”, let me know. So, here’s a table showing what wire goes where. If your module isn't labeled, refer to fig. 1.

CS — D10

SCK — D13

MOSI — D11

MISO — D12

VCC — 5V

GND — GND (the one next to 5V)

Your setup should now look like fig. 2.

Now put a wire in the GND pin and the D8 pin.

Now, take two wires and follow what is shown in the link below.

(UPDATE 2024:I've found you don't need to go under the wire with a knife, you just pull the little tab up with your fingers and you'll be able to pull off the plastic end with the same result.)

https://drive.google.com/file/d/1HyUmqy91pWxEzgskY...

Repeat for both wires. Now, put the pointy(male) ends of the recently modified wires into the wires that attach to the D8 and GND pin. Refer to fig. 3 to find out where to plug the modified ends into the N64. Remember, it might take a bit of strength to push them in, but after that, it has a WAY more stable connection to the N64!

Your model should now look like fig. 4.

We are done wiring! Let's go back to the Arduino program!

Step 4: Finalizing

This is the last step. In the Arduino program, hit upload(the arrow button at the top). While uploading, hit "Tools" at the top, and select "Serial Monitor". If you get an error while uploading, there is probably a fix on the internet. When you are done uploading, the serial monitor will display:

Starting up
SD initialization done.
Opening file '1key.m64'...
M64 Version: 3
File opened succesfully
Initialization done.

If this is the case, turn on your Nintendo 64, which should be connected to your TV. When you switch your N64 on, somewhere during bootup, the Serial Monitor will have an extra line added to it:

Controller identified

When this happens, you know for sure that you built the TASBot right! Thanks for using this instructable today, and if something doesn't work, send me a screenshot of the serial monitor and your Nintendo screen! Have a great day!