loading

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:

  • The GC-Forever forums’ original posting of the open source code: Here or Here

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:

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

https://web.archive.org/web/20160220102301/https:/...

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:

https://web.archive.org/web/20151223010554/http://...

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!

<p>excellent dude.Brilliant.</p>
<p>WHY did you connect the point AREF, pin 21 on the chip in the breadboard? it was not part of schematics</p>
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.
<p>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.</p>
<p>Hey could I use any atmega chip ex: atmega 328</p>
<p>I would like to know this too, as I have a couple atmega328p's lying around.</p>
Please refer to the reply I just left above :)
<p>hey i had some problems seeing the pinout from the arduino programmer to the chip do you by any chance have the exact pinout from arduino to the chip (i am programming arduino to target icsp btw)</p>
Here's the pinout I found online:<br>Arduino Pin 13 to SCK of your atmega8<br>Arduino Pin 12 to MISO of your atmega8<br>Arduino Pin 11 to MOSI of your atmega8<br>Arduino Pin 10 to RESET of your atmega8<br>Arduino 5+ to Vcc of your atmega8<br>Arduino Gnd to Gnd of your atmega8<br>The pinout for the atmega8 is available to figure out which pins are SCK, MOSI, MISO, VCC, GND, and RESET.<br>I hope this helps!
This firmware was written for the Atmega8 and will only work with an atmega8. I haven't looked into the source code for the firmware very much but if every register, timer, and other peripherals utilized in the source code are also available on another type of atmel chip (atmega328) then you can adapt the source code to work with said other atmel chip. Download atmel studio for free to modify and compile source code. Happy modding!
<p>which version of the atmega8 chip were you using, was it the 3.3v or the 5v? also you should consider make a instruction video aswell, but your doing a awesome job and you really saved my butt</p>
I used the five volt version. Making an instructional video sounds like a fine idea! However, I'm far too busy to take on such a task at this time. Thanks for the feedback!
Ok then, i think i will make a video tutorial for this project, just wondering if its ok to use your guide in my video (ill link you in the video).
By all means, please do!
<p>any idea on how to program the atmega8L tqfp?</p>
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.
<p>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.</p>
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.
<p>I thank you for the new edits and your swift response. I'm learning the avrdude commands and what they correspond to.</p><p>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.</p><p>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).</p>
<p>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.<br>Pin 22 is another ground. You can connect both grounds as I did or just use one.<br>Step 6 has a picture of a complete pinout of the Atmega8.</p>
Good to know.<br><br>I typed the first command line (with the -B 4 addition) but I'm getting this error msg:<br><br>avrdude: stk500_getsync(): not in sync: resp=0x00
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<br>This should make communicating faster.
<p>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.</p><p>In Step 3) Flashing the Atmega8</p><p>Q1) From the 7th line, what exactly is the reason for <strong>Replace COM1 with the COM port your Arduino is associated with if necessary??</strong></p><p>Q2) What is actually echo the device signature? And how do I make sure that this step is complete?</p><p>Q3) When writing the commands</p><p><em><strong> </strong>avrdude -p m8 -b 19200 -c avrisp -P COM1 -v -U flash:w:XenoAT.1.05.hex:i</em></p><p>and</p><p><em>avrdude -p m8 -b 19200 -c avrisp -P COM1 -v -U lfuse:w:0xC4:m -U hfuse:w:0xD9:m</em></p><p>these are actually typed into the MS-DOS command prompt right? (That black window) I.E. not in the WinAVR software???</p>
<p>I updated the step three with a section about using the &quot;-B 4&quot; 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.</p><p>Cheers</p>
<p>I apologize for not being perfectly clear with my <br>instructions.</p><p>The &quot;avrdude -p m8...&quot; command IS run in the command prompt. It runs the avrdude software inside the command prompt. The &quot;-p m8&quot; part of the command is specifying the chip we are trying to program (m8 standing for ATmega8).<br> <br>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 &quot;-p m8&quot; 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. </p><p>The &quot;-P COM1&quot; 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 <br>which COM port your arduino is on, you can open up the device manager in the <br>control panel and expand &quot;Ports (COM &amp; LPT)&quot;. The COM port <br>the arduino uses is the same COM port you select in the tools drop-down-menu in <br>the arduino IDE.</p><p>I hope this answers your questions. Here is a link that explains in better detail what I couldn't: <a href="http://www.ladyada.net/learn/avr/avrdude.html" rel="nofollow"> http://www.ladyada.net/learn/avr/avrdude.html </a> <br>You can compare my commands with what's shown in the link.<br>Let me know how it goes.</p><p>Cheers!</p>
<p>I got the arduino starter kit can i use the chip in the starter kit (see picture) is it possible?</p><p>Oh and also i cant seem to find the chip reffered to in this instructable but i really want to try it :D</p><p>thx already =D</p>
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!<br><br>Cheers
<p>Hello, you need to have to adjust the laser?</p><p>It can op&eacute;rate without touching the laser?</p><p>Thanks for your effort and greeting.</p>
I've performed this procedure numerous times, and I've had to adjust the laser everytime. The GameCube won't read the disc unless the laser is adjusted properly. <br>Cheers!
<p>OK, thanks for the information.</p><p>Me afraid touching the laser and leave the useless GameCube.</p><p>Anyway if someone who has made this assembly and has not touched thes laser and has operated them can tell it me?</p><p>Thank you for a quick responde, a greeting.</p>
<p>Excellent guide!</p><p>I recommend using the LEDs for your first try because it will help you troubleshoot issues which can be quite common when installing these.</p>
<p>Nice!</p>
<p>Fantastic ible, look forward to giving it a go. </p>

About This Instructable

54,289views

59favorites

License:

Bio: I'm an Electrical Engineer working out of Northern California with a never ending interest in repairing and creating.
More by roycetaft:Homemade GameCube Mod-Chip Arduino MIDI Foot Pedal Keyboard Arduino MIDI Rockband Drumset 
Add instructable to: