Introduction: Homemade GameCube Mod-Chip
This do-it-yourself GameCube mod-chip is a great modification for your
Nintendo GameCube. The mod-chip allows your GameCube to read burned backups of games, so your original games can be preserved by protecting them from scratches. This instructable provides a detailed tutorial on the building, flashing (programming), and installation of the XenoGC 2.0 mod-chip clone as well as advice on adjusting the laser potentiometer to read burned backups of games.
An Atmel Atmega8L-8PU AVR is used to communicate with the GameCube's disk drive's debug port using SPI to bypass the drive’s security by entering a debug mode. The firmware for this mod-chip entitled “XenoGC 2.0” was released as open source for the public domain in 2011.
For more information regarding the details of the XenoGC 2.0 source code and original mod-chip, visit:
Disclaimer: This project includes disassembly of your GameCube and its disc drive. Improper adjustment of the laser potentiometer can lead to a decrease in the life of the laser. Piracy is illegal; do NOT illegally download copyrighted games.
The video above showcases a successful test of the mod-chip.
Last updated February, 2016.
Step 1: Parts
There are optional LEDs used on this
mod-chip to indicate whether the chip is communicating with the disc drive's service serial port correctly. Green means it is operating correctly; red means there is an error. They can be removed from the circuit, along with the resistors in series with them when the chip is installed into the GameCube, or they can be left in and located discretely on the back of the GameCube.
Shown in the images are schematics of the mod-chip with the required parts included. There are two versions: one with an ISP header (the connectors used for flashing the firmware onto the mod-chip) and one without (the “economy” version). The ISP header version will be built on a breadboard for flashing then replaced with the economy version before being installed into the GameCube.
The required parts are:
- 1 GameCube with cables and controller
- 1 Burned backup of a GameCube game
- 1 Atmel Atmega8L-8PU
- 1 0.1μF ceramic capacitor
- 2 1KΩ resistors
- 2 330Ω resistors
- 1 100Ω resistor
- 1 red LED
- 1 green LED
- 1 Breadboard (for flashing and testing the mod-chip)
- 1 AVR ISP programmer or an Arduino and USB cable to use in place of a programmer
- 1 computer for flashing the mod-chip
- 22 AWG wire for use with the breadboard
- 30 AWG wire (wire wrap) for making connections on the GameCube
- 1 set of wire strippers
- 1 soldering iron with solder
- 1 multi-meter capable of reading impedance
- Some electrical tape and double sided tape
- 1 small philips screwdriver
- 1 “Gamebit” screwdriver
If a Gamebit screwdriver is not available, a plastic Bic pen and a lighter or pocket torch can be used to make one as explained in step 5.
Required software:
- Arduino Software (only required if using an Arduino as an ISP programmer)
Step 2: Preparing the Atmega8 for Flashing
Construct the circuit shown on the breadboard using 22 AWG wire for connections. However, do not connect the wires and resistors going to the GameCube (that means that R4 and R5 are not used). Connect the AVR ISP programmer to the ISP header in the circuit (J1). If you don't have an AVR ISP programmer, use an Arduino with a USB cable and follow the connection table below. Example code is included in the Arduino IDE that will allow the Arduino to act as a serial AVR ISP programmer.
Be sure to supply the breadboard with power and ground from the AVR ISP programmer or Arduino.
This is the connection table from the ArduinoISP example:
// pin name: not-mega: mega(1280 and 2560) // slave reset: 10: 53 // MOSI: 11: 51 // MISO: 12: 50 // SCK: 13: 52 // // Put an LED (with resistor) on the following pins: // 9: Heartbeat - shows the programmer is running // 8: Error - Lights up if something goes wrong (use red if that makes sense) // 7: Programming - In communication with the slave
For information regarding using an Arduino as an ISP programmer, visit
https://www.arduino.cc/en/Tutorial/ArduinoISP
or
Step 3: Flashing the Atmega8
In order to flash (program) the Atmega8 for the mod-chip, WinAVR must be installed (avrdude for Linux).
Extract the included file entitled ‘XenoGC-Source.zip’ and extract it’s content to a directory that is easy to navigate to in a command prompt. For example, use the root of your hard drive: ‘C:\’.
Be sure that the ISP programmer or Arduino is properly wired to the Atmega8 via the breadboard. Attach the programmer or Arduino to the computer’s USB port.
From a console (in Windows: press windows + R on the keyboard, type ‘cmd’, and
press enter), type the following command (depending on the programmer being used):
For Arduino as programmer:
avrdude -p m8 -b 19200 –B 4 -c avrisp -P COM1
Replace COM1 with the COM port your Arduino is associated with if necessary.
For an AVR ISP programmer, enter the necessary programmer type immediately after the ‘-c’ argument of the command. The ‘-b 19200’ and ‘-P COM1’ is not necessary for AVR ISP programmers other than serial based ones such as the Arduino. For example, using a USBasp ISP programmer, the command would be:
avrdude –p m8 –B 4 –c usbasp
Refer to the avrdude website for instructions on using your specific party ISP AVR programmer. https://web.archive.org/web/20160129180324/http://...
If the connection was successful, avrdude should echo the device signature of the Atmega8. The chip is now ready for flashing.
From the same console, change directory to the location of XenoAT.1.05.hex (included in zip file). Next, type the following command into the console:
For Arduino as programmer:
avrdude -p m8 -b 19200 -c avrisp -P COM1 -v -U flash:w:XenoAT.1.05.hex:i
For USBasp ISP programmer:
avrdude –p m8 –B 4 –c usbasp -v -U flash:w:XenoAT.1.05.hex:i
Avrdude will confirm that the chip was flashed successfully. Next, set the fuse bits with the following command:
For Arduino:
avrdude -p m8 -b 19200 -c avrisp -P COM1 -v -U lfuse:w:0xC4:m -U hfuse:w:0xD9:m
For USBasp ISP programmer:
avrdude –p m8 –B 4 –c usbasp -v -U lfuse:w:0xC4:m -U
This command configures the microcontroller (Atmega8) to internally oscillate at 8Mhz, rather than the default 1Mhz.
The mod-chip now is ready for construction.
For more information regarding AVR microcontroller programming, refer to Ladyada’s avrdude page:
Attachments
Step 4: Building the Chip
There are a multiple methods that may be implemented to construct the mod-chip; a PCB can be made and the components soldered to it, components can be soldered to a perf-board, or components can be connected via the point-to-point soldering method. The point-to-point soldering method is explained in this instructable.
The green and red LEDs and corresponding resistors are optional. They are used to show that the chip is operational. When the disc drive begins to read a disc, the red LED will be illuminated. If the chip communicates with the drive correctly, the red LED will go out and the green one will light up. If the LEDs are to be installed, a place to mount them on the GameCube is required. Taping the LEDs in the rear vent as shown in the video at the intro and final steps is suggested.
For this GameCube, the status LEDs and corresponding resistors are not used.
To solder the components using the point-to-point method, first wrap the leads of the 1KΩ resistor around pin one and the VCC pin of the Atmega8. Solder the leads, then cut off the excess leads of the resistor. Next, use a piece of wire or the trimmings of the resistor leads to solder a jumper between the AGND and GND pins using the same method used on the resistor. Then wrap, solder, and trim the excess leads of the 0.1μF capacitor to the GND and VCC pins of the Atmega8 as shown in the image. Lastly, strip and solder 4 to 5 inch long 30 AWG wire to pins 15, 17, 18, and 19 as well as the VCC and GND pins of the Atmega8 as shown in the image. Strip the other ends of the wires back about 1/8 of an inch.
Step 5: Opening the GameCube
To disassemble the GameCube, turn the GameCube upside down to reveal four screws: one in each corner. Notice that they are "game bit" screws. If a game bit screwdriver is available, remove the four screws and skip ahead to the next step.
If a game bit screw driver is not available, use a Bic pen by pulling it apart, removing the ink tip from the plastic tip, and replacing the plastic tip. Then melt the plastic tip with the lighter. Do not burn the plastic or let it ignite. Once the plastic tip is soft looking, firmly insert it into the screw hole against the screw head. Let it cool before removing it. After letting the plastic cool completely, the tip will be solid again. It should have the impression of the screw head and will be able to remove the screws. If it becomes stripped while screwing/unscrewing, re-melt the plastic by repeating this step.
Step 6: Opening the GameCube Cont.
Once the four screws beneath are removed, flip the GameCube over and remove the top by carefully lifting it straight up. Unsnap the back panel where the AV out and power jack are by prying the clips shown in the image. Unsnap the front faceplate using the same technique and carefully disconnect its ribbon cable. Using the Philips screwdriver, remove the screws holding the metal tabs on top of the memory card slots. Unplug, unscrew, and remove the fan/power-button assembly and remove the screws beneath it. Remove the rest of the screws shown in the following pictures.
After all the necessary screws have been removed, the top half of the GameCube can be lifted straight up to disconnect it from the bottom half. There will be a little resistance due to the disc drive connector.
Turn the top half upside-down and take out the six screws holding the cover down.
We now have access to the disc drive's debug port.
Step 7: Connecting the Mod-Chip
To connect the mod-chip to the GameCube, use the soldering iron to tin the six pads on the disc drive’s debug port with a small amount of solder. Carefully solder the wires from the constructed mod-chip according to the schematic. Ensure that no connections have been bridged by checking for continuity between adjacent pads by using the multi-meter in continuity mode. Next, use the electrical tape to hold the mod-chip’s wires in place to prevent the wires from being disconnected from the debug port’s pads. The mod-chip is now connected to the GameCube.
Step 8: Adjusting the Laser Potentiometer
Temporarily reattach the disc drive without screwing anything together. Allow the mod-chip to hang from the GameCube without its pins shorting against the GameCube’s chassis. Also, reattach the fan and power switch assembly and front panel. Connect the GameCube’s power supply, AV cable, and a controller. Insert a burned backup of a game. While holding down the "lid open" switches on the rear-right corner of the GameCube, power on the console and watch as the drive attempts to read the disc. If the drive fails to read the disc, it is because the laser is adjusted to use minimal power while still able to read GameCube discs. Due to variations in the burned discs from the licensed Nintendo game discs, the laser struggles to properly read the disc. The laser can be adjusted via the laser potentiometer or "pot".
WARNING: Over adjustment can occur in driving the laser with too much power. This can lead to a lower lifespan of the laser. If you are unsure about adjusting laser pots or have not adjusted laser pots before, it is recommended that research on GameCube laser pot adjustments is done before attempting this.
Power off and disassemble the GameCube until the laser potentiometer is exposed. The laser pot is located to the left of the disc drive’s debug port. Using the multi-meter in impedance mode, measure the set value of the laser pot by touching one lead against the top pin and the other to the bottom left pin as shown in the image. Typical values for the laser pot are around 200 Ohms, but it varies for each GameCube. Use a small screwdriver to lower the resistance by 10 Ohm increments, reassembling the GameCube just enough to test out the drive each time. Very small increments in pot adjustment will lead to vary large changes in resistance, so it helps to have a steady hand.
After the GameCube accepts the disc, test it out again by powering the GameCube on and off. Once the GameCube is consistently accepting the disc, the laser potentiometer will not require any further adjustment.
Step 9: Mounting the Chip
Wrap the mod-chip’s wires in tape every 1 ½ inches to keep them tidy. Then bend the wires into the shape shown in the image. Reattach and screw together the bottom panel of the disc drive assembly. Then cover the pins of the chip that make contact with the ribbon cable with electrical tape to avoid wearing through the insulation. Mount the chip to the panel with double sided tape. The mod-chip is now mounted to the GameCube.
Step 10: Customization and Reassembly
An optional modification to do before the GameCube is assembled is to replace the original orange power indicator for one of a different color. The owner of this GameCube wanted a blue LED. The larger LED required more current than the original one, so the 330 Ohm resistor was replaced with a 100 Ohm resistor.
Reverse the dis-assembly process to assemble the GameCube.
Never worry about scratching your priceless collection of GameCube games ever again!

Participated in the
Arduino Contest
26 Comments
Question 3 years ago
Can i use an Atmega 328? Do i need to change the code? How difficult woult it be to do it?
Question 4 years ago on Step 10
Just out of curiosity, would you take requests?
6 years ago
I assume I could do this on an Arduino Nano with an ATMega328, rather than building a chip from scratch? These things cost me less than $5 usd and I've been looking for a reason to use them.
6 years ago
excellent dude.Brilliant.
6 years ago
WHY did you connect the point AREF, pin 21 on the chip in the breadboard? it was not part of schematics
Reply 6 years ago
The aref pin should stay disconnected since we're not using any analog pins. It defintely should not be grounded. It looks as if I grounded it. DO NOT ground this pin.
6 years ago
Not to be picky, because I love to build and make things, but in this case, why go to all the trouble (unless you have a programmer, etc.. already) when you can just buy brand new here http://www.r43ds.org/products/Xeno-Gamecube-Mod-Chip.html for less than $20 and just worry about installation.
7 years ago
any idea on how to program the atmega8L tqfp?
Reply 7 years ago
You would program the atmega8L tqfp the exact same way that the atmega8L-8pu is programmed. The only difference is the pinout which can be determined in the data sheet on the first page or so.
8 years ago on Introduction
Hi! First off awesome instructable, awesome notes, awesome work, and I hope your success in electrical engineering continues. I am good with all the software to things, for example testing with the ISP AVR programmer, but I just wanted to clarify that in this instructable we aren't using the mod chip sold online, but we are making a clone of it with (ANY) atmega8 chip? And also I assume if one were to get illegal copies of games, and mod them on one's computer the gamecube with this chip would still run it?? Because at this point it should run any ISO modded or not.
Reply 8 years ago on Introduction
Thank you for the compliments! Yes, we are making a clone of the mod chip. And if you were to obtain an ISO of a game and modified it I'm certain it would play. It might need to be patched to play, but I'm not certain. If you would like more information in modifying GameCube games, sign up for a account on gc-forever. They've got lots of knowledgeable members.
8 years ago on Introduction
I thank you for the new edits and your swift response. I'm learning the avrdude commands and what they correspond to.
I would like to inquire about the circuit and the connections in the picture (the one showing the Arduino connected to the breadboard). All the connections are as per the schematic, I had no trouble replicating those or the connections to the arduino, but one connection caught my eye.
I'm also using an atmega 8L, so my question is the following: should I also connect the atmega 8L's Pin 21 with Pin 22 and ground them?? Note that I couldn't find this link in the schematic and that's why I'm asking. (In the schematic only Pin 22 is grounded).
Reply 8 years ago on Introduction
Pin 21 is the analog to digital converter reference (ADC) voltage. It should NOT be grounded, and I'm not sure why I connected it as such.
Pin 22 is another ground. You can connect both grounds as I did or just use one.
Step 6 has a picture of a complete pinout of the Atmega8.
Reply 8 years ago on Introduction
Good to know.
I typed the first command line (with the -B 4 addition) but I'm getting this error msg:
avrdude: stk500_getsync(): not in sync: resp=0x00
Reply 8 years ago
I'm assuming you already programmed your arduino as an isp programmer via the arduino IDE. Double check your connections. A common error is swapping the miso and mosi pins. I hope we can get this working for you! If you would like, you can email me at roycetaft@gmail.com
This should make communicating faster.
8 years ago on Introduction
I'm currently collecting the parts needed for this mod after reading through your tutorial. Everything is well explained, but like every other person who's not familiar with programming or microcontrollers/processors, I do need to ask you for some clarification.
In Step 3) Flashing the Atmega8
Q1) From the 7th line, what exactly is the reason for Replace COM1 with the COM port your Arduino is associated with if necessary??
Q2) What is actually echo the device signature? And how do I make sure that this step is complete?
Q3) When writing the commands
avrdude -p m8 -b 19200 -c avrisp -P COM1 -v -U flash:w:XenoAT.1.05.hex:i
and
avrdude -p m8 -b 19200 -c avrisp -P COM1 -v -U lfuse:w:0xC4:m -U hfuse:w:0xD9:m
these are actually typed into the MS-DOS command prompt right? (That black window) I.E. not in the WinAVR software???
Reply 8 years ago on Introduction
I updated the step three with a section about using the "-B 4" option to slow down how fast the programmer talks to the chip just in case the programmer says that the Atmega8 isn't responding. If you have any issues, I suggest giving that a shot.
Cheers
Reply 8 years ago on Introduction
I apologize for not being perfectly clear with my
instructions.
The "avrdude -p m8..." command IS run in the command prompt. It runs the avrdude software inside the command prompt. The "-p m8" part of the command is specifying the chip we are trying to program (m8 standing for ATmega8).
The device signature is a manufacturer specific ID given to different microcontrollers so the programmer (arduino in this case) can verify that the chip it's trying to program is the same one you specified in the "-p m8" part. I mentioned that it would show the device signature if it ran successfully because that proves that all connections were made successfully. If it said device signature showed 0x000000, it means that the programmer (arduino) couldn't communicate with the microcontroller and connections need to be checked.
The "-P COM1" section of the command defines the serial port used. The arduino uses a USB-to-serial converter, so the arduino, although it's connected through USB, has it's own COM port associated with it. To find out
which COM port your arduino is on, you can open up the device manager in the
control panel and expand "Ports (COM & LPT)". The COM port
the arduino uses is the same COM port you select in the tools drop-down-menu in
the arduino IDE.
I hope this answers your questions. Here is a link that explains in better detail what I couldn't: http://www.ladyada.net/learn/avr/avrdude.html
You can compare my commands with what's shown in the link.
Let me know how it goes.
Cheers!
8 years ago on Introduction
I got the arduino starter kit can i use the chip in the starter kit (see picture) is it possible?
Oh and also i cant seem to find the chip reffered to in this instructable but i really want to try it :D
thx already =D
Reply 8 years ago on Introduction
I'm not sure what chip that is due to not being able to make out what the part number is. It looks as if it may be a shift register (they're common in starter kits). The only chip this will work with is an Atmega 8. A quick Google search should help you find what you're looking for!
Cheers