I feel compelled to open each blog post with “It’s been quite some time since my last blog post”, but maybe that’s just a sign I need to change my expectations. Regardless, today I want to tell you about my latest technological experiences.
About 2 years ago (late 2009), I became interested in what it would take to hack a Nintendo Gamecube in order to play “Backed up” game discs. As a poor college student this was primarily from my motivation to get something for really cheap. 🙂 So, I went on eBay and found a great deal: The console, 3 controllers, 2 controller extenders, Gameboy player, BroadBand Adapter (BBA, Important for other reasons I’ll talk about), and Legend of Zelda skin, all for $50. I also started to do some research about different mod chips and hack methods and so decided to buy a XenoGC for about $12, and last but not least, the special tool to open the Gamecube and some blank mini-DVDs. This brought the total cost to about $80.
At this point, the information and resources were scattered all over the internet on forums and message boards with much assembling left to the end user. I decided that my attack vector would be to use the XenoGC to boot some kind of software onto the Gamecube that would allow me to stream game backup ISOs (disc images) over the broadband adapter. I knew this was possible from reading and then set off to get it done.
While the XenoGC is an elegant little chip that I have grown to love, its lack of apparent features made it very difficult to work with as a beginner. The chip I had was running the oldest version of the firmware which gave no screen output except for a rolling credits screen (in PAL no less) when the Start button was held. That being said, I definitely learned a lot about how the chip works and what capabilities it gave as well as what types of software could be used. One of the other great projects I uncovered in my research project was GC-Linux; a group of developers made a port of Linux for the Gamecube. I think this is where I stopped thinking of Game Consoles as single-purpose machines and started thinking of them as special-purposed computers.
In the end (of the first part of the story), I was able to burn a disc with GCOS (named as The GameCube Operating System, this is a brilliant piece of software built by emu_kidid and based on the GC-Linux code) with the proper program compression, etc. GCOS has a feature to load files across the BBA (.dol, the “dolphin” executable file format named after the codename of the Gamecube processor, and .iso/.gcm, Gamecube disc images) and I was able to use this in conjunction with a software called StarCube Loader to stream game files over the network. As an aside, StarCube works by emulating the DVD drive over the network and communicates with server software running on the network. All of this worked well but had a tendency to glitch on occasion so I found that connecting the Gamecube to the PC via crossover cable reduced my latency times and also made more games playable. This was a decent solution that supported my casual gaming even though it tied up my PC, the biggest downside.
I used my Gamecube this way on and off until I grew tired of connecting an external PC to the console and also started to become concerned about the long-term reliability of my console’s disk drive. The lasers in these things are usually the first thing to go and I had to raise the laser’s power in order to get it to read burned discs. So, mid 2011 I started looking for alternatives to booting from a disc. I knew that this would have been easier to accomplish had I purchased a more advanced mod chip but I wasn’t about to purchase another chip when I only have one console so I started doing some more research about booting from SD cards. This isn’t entirely unreasonable but certainly not common.
At this point, I made an amazing discovery! The scattered Gamecube modding/developer’s “community” I had navigated two years ago was mostly defunct, replaced by a unified website: GC-forever. On top of that, most of the useful components of the software had been combined into one super software: Swiss (named as the Swiss Army Knife of Gamecube homebrew). On top of that, the whole community and swiss were built by emu_kidid, the developer behind GCOS! He has made GC-Forever a hub for GC development and even kindled some new interest by doing a couple of things:
- Creating a repository for all things GC. He’s posted his whole archive of utilities and software he’s developed to make it easy to find what you’re looking for.
- He’s made the source for his old projects available and also made his latest projects open-source. We are definitely seeing the benefits of open-source software development here as the community thrives around development instead of just posting compiled software for people run/complain about.
One other event that has kindled my interest in GC development is that the firmware for the XenoGC (my mod chip) has been recently open sourced! This opens the possibilities of what I can do with my Gamecube even further! Reading through the source code (written in C for the Atmel chip on the XenoGC and C++ for the Gamecube code) has lent some insight into the way that the XenoGC bypasses the Nintendo Disc Certification (my made up term, not official). As an aside, the XenoGC is soldered into the debug port on the DVD Drive’s board which allows it to (somehow) load code into the Gamecube’s memory and then execute it.
Before I move on to the next chapter in the story, I want to offer a sincere Thank You to emu_kidid for his passion in the GC developer’s community and for all of the knowledge and advice he has given away to our community. It truly brings new meaning to the phrase “Building on the shoulders of giants”.
The next chapter begins at work, where I was mentioning my hobby work to some of my co-workers. I was relating how what I do at home helps me understand my work better and vice-versa and one of my co-workers said “Hey, I’m moving and have a couple broken Xboxes; what if I give you one to hack and then you can teach my son what to do with the other one?”. So, naturally I said yes and the next day I came in to work and found an Xbox 360 on my desk! I took it home, plugged it in and booted it to find three blinking red lights on the front (This is commonly referred to as the 3RLOD, 3 Red Lights of Death). If you know anything about Xboxes then you know this is very common among the original Xbox 360 and represents a hardware failure due to some cooling issues on the GPU. Anyway, I performed a temporary fix and started doing some more research on Xbox 360 hacking.
Hopefully in a future post I’ll wrap up my Gamecube Homebrew efforts (which are still on-going) and expound a little more on my Xbox 360 homebrew efforts (which are just getting started), but I want to wrap up this post with some observations on internet communities. In my searching, I found that the Gamecube communities tended to be more pleasant and the XBox 360 communities tended to be more polluted (as far as attitudes go anyway). I believe this is based on 3 separate phenomena:
- Nintendo sells more consoles to casual gamers and families where Microsoft sells more consoles to hardcore gamers. This is reflected in everything from marketing all the way down to the kinds of games available for each platform.
- The Gamecube is a full generation older than the Xbox 360. This means that most of the developers who work with Gamecube are doing so because they are passionate for the platform, less so about making money by exploiting hacks or selling mod chips.
- Sort of a carry-over from #2, there is much more a culture of open-source and sharing among the smaller, passionate group than the Xbox group. I think when communities focus on what a person can bring to the table instead of what people can take, it inspires innovation.
To be honest, the first point is probably much more of a personal bias than the other 2 which are more concrete.
Before I wrap this up, I want to say a word about my current setup and the plans that I have for future development. My existing Gamecube setup is much more stable than the last, I use the XenoGC to boot GCOS from the disk and then use that to load Swiss over the network (I can do this over a regular network instead of a cross-over cable which is slower but doesn’t need to be real-time as a game should). Once I have loaded Swiss I can boot things off the SD Card like backed up games and other homebrew software. One I am particularly interested in is MPlayer CE, which allows you to play back videos and music, basically turning your Gamecube into a Home Theater PC.
My future plan is to remove the disc from the equation totally. There has been some experimentation with the XenoGC lately (did I mention the firmware is now open source?) and from that I hope to be able to have the XenoGC load some code into the Gamecube’s memory that will boot a program directly off the SD Card. This isn’t very far-fetched but will definitely require a lot of tinkering and reading.
Regardless, thanks for reading and please feel free to put any questions or comments down below.
P.S. The creators of the XenoGC have created a new product for the Xbox 360 which I have been looking at using in mine. Check out the xeno360; these guys do high quality work and I would definitely support them again.