Sennari Desk
2002
Colin Fahey

1. Introduction

2002.04
The following images show my desk at Sennari Interactive, LLC.  I recently started working part-time as a programmer at Sennari to make improvements to the code responsible for rendering in their Nintendo GameCube game engine. 
apr2002_sennari01deskside.jpg
My desk (side view)
They squeezed a desk in to a corner of one of the offices.  I had the option of having a desk in other locations, but this was the best compromise between avoiding distraction and being relatively near the core of the programming team.  I have already received several comments like: "We've got to get you a better desk," and, "Are you sure you like it there?"  Perhaps I will move to a new spot, but there is something about this cozy corner that seems right. 

I share the office with four other programmers, soon to be five, all on the same project.  There are other programmers working on this project, but they are in other offices in the office suite. 
Here you can see all of the major pieces of hardware required to do Nintendo GameCube development.
apr2002_sennari02deskangle.jpg
My desk (angle view)
(1) Personal computer (any generic PC);
(2) GameCube development hardware (PC chassis with GameCube inside);
(3) Computer monitor (any generic PC monitor);
(4) Television monitor (any generic television/NTSC monitor);
Here is the basic idea. 

A person installs the GameCube version of the Metrowerks CodeWarrior development environment and compiler on to the PC. 

A person also installs the GameCube SDK on the PC so that all of the necessary header files, source files, libraries, and documentation are available. 

A person writes code using CodeWarrior, and then presses the "debug" or "run" key, and then the code is compiled and transferred to a hard drive inside the GameCube development hardware. 

Then the GameCube hardware reads code and data from the internal SCSI hard drive as if it were the DVD-ROM drive in the actual retail version of the GameCube. 

A person can connect controllers ("joypads") to the GameCube development hardware through sockets on the front panel. 

A person can connect the NTSC video output to any analog television monitor. 

Once the game is running on the GameCube hardware, it is like playing a regular GameCube system. 
A person can do a lot with this system.  While code is running on the GameCube development hardware, the PC can be used to monitor the executing code.  The PC can suspend the game at any point, and can modify the values of variables and the contents of memory via remote access to the GameCube hardware.  Basically, the CodeWarrior environment can be used to remotely debug the code executing on the GameCube hardware. 
The Nintendo GameCube has a CPU based on the IBM PowerPC (PPC) but with added circuitry on the microchip to serve the special needs of the GameCube.  There are several other specialized processors (graphics, audio, etc) within the GameCube.  Like the X-Box (which has an Intel Pentium III (P3) running at 733 MHz), the GameCube (with IBM PowerPC (PPC) running at 486 MHz) has a popular CPU whose specifications are readily available on the Internet -- such that a person can study how to write assembly language for the CPU.  That is now only for the extreme programmers, but it wasn't too unusual to see this kind of hacking for GameBoy (reduced Z80), PlayStation (MIPS R3000), PlayStation 2 (modified R4000), etc. 
apr2002_sennari03dualmonitor.jpg
PC monitor and GameCube output monitor
apr2002_sennari04ppgmonitor.jpg
GameCube controller ("joypad") and output monitor
apr2002_sennari05gcpad.jpg
GameCube controller ("joypad")
colinfahey.com
contact information