XenoGC Clone

From GC-Forever Wiki
Jump to navigation Jump to search
Atmega8L
28-pin DIP
Atmel AVR ATmega8L in 28-pin DIP
32-pin TQFP
Atmel AVR ATmega8L in 32-pin TQFP
Specification
MANUFACTURER Atmel
PROCESSOR 8-bit RISC single chip microcontroller
FAMILY ATmega series
FLASH MEMORY 8Kbytes ISP
EEPROM 512Bytes
SRAM 1Kbyte
POWER 2.7v - 5.5v
SPEED 8MHz
v · d · e


Overview

The XenoGC is a Drivechip for the Nintendo Gamecube which utilizes an Atmega8L microcontroller to interface with the debug communications port 'CN302.'

A homebrew version (clone) of the XenoGC can be built with the same Atmega8L microcontroller and a few additional components.

Features

The XenoGC Clone allows all the same features as the original XenoGC

   * Direct boot of DVD+-RW media
   * Compatible with all regions & all versions
   * Region free loading
   * Super easy wireless install
   * No need to remove mainboard
   * PAL/NTSC region force
   * Installation control LEDs
   * Switchable read setting adjustment / error retry
   * Switchable audiofix
   * Extremely low cost (to build) 

Additional Features

   * DVD Disc upgradeable               ( Requires Bootable Disc for Xeno DOL Flashing Utility )
   * Network upgradeable                ( Requires BBA Adapter and Xeno DOL Flashing Utility )
   * SDcard upgradable                  ( Requires SD Gecko and Xeno DOL Flashing Utility )
   * Serial/Parallel ISP upgradable     ( Requires AVRdude or similar software and XenoGC Clone - ISP board version )
   * Load ISO from Network              ( Requires Third Party App )
   * Backup Game via Network            ( Requires Third Party App )
   * Supports multi-game discs          ( Game Compilations on One Disc )  
   * Supports Action Replay cheat codes ( Requires Action Replay Disc )

Settings

The XenoGC Clone allows the same settings as the original XenoGC

Button Description
[L button] Disable audiofix Disable Native Audiofix to support modified backup images created for a BIOS which did not support Streaming Audio data.
[R button] Disable DREfix Disable Native Disc Read Adjustment and Read Retries. Uses default read settings to scan a disc for read errors.
[X/Y button] Force NTSC/PAL Force Region display mode regardless of the game region.
[START button] Miscellaneous Function Version 1.01.V2 - Display Software Version, GC Revision, Drive Version, Special Message.
Version 1.03a.V1 - Display Software Version, GC Revision, Drive Version, Special Message
Version 1.04 - Multi-Game Shell Version 0.98b (PAL) (Not Multi-Disc Games)
Version 1.05 - Multi-Game Shell Version 1.05 (PAL) (Not Multi-Disc Games)
Status LEDs Red LED is active during Drive Reset and delivery of Drive Code.
Green LED is activated after successful Drive Code execution.
NOTE: XenoGC 2.0 and Counterfeits might have Orange LED instead of Green.
NOTE: Check installation if no LED activity or constant Red LED.


Building the Board

Multiple considerations must be taken into account prior to building a XenoGC Clone.

These considerations for choosing a board design include:

   * Intended usage of the product ( standard user or developer/advanced tester )
   * Limitation differences between the two boards regarding Firmware Update Methods 
   * Target microcontroller type
   * User's own abilities or willingness to learn 


Board Design

A standard (typical) user can choose to build the basic XenoGC Clone board design which offers the same abilities as the original XenoGC. A developer or advanced tester may choose to build the basic Clone as well, but may benefit from the XenoGC Clone - ISP design which offers the additional ability to program the board via ISP serial/parallel programmer.


Programming Requirements

Since the XenoGC Clone is limited to the original design, the only method of updating firmware is to utilize a prepared Xeno DOL Flashing Utility which contains a firmware update. Like the XenoGC, the Clone will require a switch which sets the microcontroller into program mode by making contact between RESET and GND. Firmware Corruption Recovery Methods are limited to this board design and require the user to perform one of the following:

   * Desolder the board and manually reprogram the microcontroller via Serial/Parallel ISP.
   * Utilize an Alternate DOL loading method to reprogram the chip via Xeno DOL Flasher Utility
 

To work around the limitation of recovery which most likely occurs during developing, a developer or advanced tester should choose to build the XenoGC Clone - ISP. This board design offers the flexibility to program the microcontroller utilizing the Xeno DOL Flashing Utility or ISP updates ( design compensates so ISP communicates without data conflict from port CN302 ). Like the XenoGC, the Clone - ISP will require a switch between RESET and GND only when updating via Xeno DOL Flashing Utility. For ISP updates, program mode is achieved when the ISP to connected to the microcontroller.

It should be noted that a blank Atmel chip cannot be programmed fully by the DOL Flashing Utility, however, as the .DOL will not program the 'fuses' of the Atmel chip. This means that the initial programming must be done via a PC-style programmer.

Atmega8 vs Atmega8L vs Atmega8A

Both the Atmega8 and Atmega8L can be used to create a fully functional XenoGC clone. The two versions of this microcontroller have a difference in power requirements and operational speed which do not interfere in the performance during code execution. Due to END OF LIFE of the Atmega8 and Atmega8L, Atmel created the Atmega8A as a direct drop in replacement. The Atmega8A (Farnell link) has also been observed to work with the provided firmware images.


Power Requirements

Power requirements should be considered prior to the purchase, creation, and installation of a XenoGC clone. The Atmega8L can be powered directly with 3.3v from the serial debug port CN302, as per original XenoGC design. However, the Atmega8 requires a higher 4.5v - 5.5v voltage input which will have to be provided from elsewhere on the motherboard.


Atmega8L Manufacturer Flaw

Per Atmel datasheet, the original design of the XenoGC includes two 0.1uF capacitors: 1. between VCC and GND 2. between AVCC and GND

Testing of the Atmega8L DIP 28P3 package style microcontroller, there exists ~5 ohms difference between AVC and AVCC with continuity found between the pins. Whereas, the Atmega8 indicates a difference of ~550K ohms between AVC and AVCC with no continuity. Based on this data, the XenoGC Clone and XenoGC Clone - ISP board designs are presented for the use of an Atmega8L using only a single 0.1uF capacitor. If an Atmage8 is the target microcontroller, a second 0.1uF capacitor may be required (which is not displayed in the Clone schematics).


Operational Speed

At 3.3v, the ATmega8L and the ATmega8A can run at 8 MHz, while at 5.0v, the ATmega8 and the ATmega8A can run at 16 MHz. However, this is not a concern since the XenoGC was based on the ATmega8L running at 8 MHz. Furthermore, no increase in performance has been noted during testing of the ATmega8L and the ATmega8 at their maximum speeds.

Microcontroller Specifications

ATMEGA8L Speed (MHz) Power Supply (V) Code Package
0 - 8 2.7 - 5.5 Atmega8L-8AU TQFP 32A
Atmega8L-8AUR
Atmega8L-8PU PDIP 28P3
Atmega8L-8MU MLF (VQFN) 32M1-A
Atmega8L-8MUR
ATMEGA8
0 - 16 4.5 - 5.5 Atmega8-16AU TQFP 32A
Atmega8-16AUR
Atmega8-16PU PDIP 28P3
Atmega8-16MU MLF (VQFN) 32M1-A
Atmega8-16MUR
ATMEGA8A
0 - 16 2.7 - 5.5 Atmega8A-AU TQFP 32A
Atmega8A-AUR
Atmega8A-ANR
Atmega8A-PU PDIP 28P3
Atmega8A-PN
Atmega8A-MU MLF (VQFN) 32M1-A
Atmega8A-MUR
Atmega8A-MNR

XenoGC Clone

Basic Clone of the original XenoGC. This design will function in all aspects to the original XenoGC. Firmware updates are limited to Xeno DOL Flasher Utility with a standard on/off switch between RESET and GND to set the microcontroller into program mode.


Parts List

QTY COMPONENT
1 Atmega8L-8PU
1 0.1uF Capacitor
1 1K ohm Resistor
2 220 ohm Resistor
1 Red LED
1 Green LED


Diagrams

Clone Pictorial Diagram Atmega8Block.png
Clone Circuit Diagram Atmega8Schematic.png

Programming and Updating

Firmware updates can only be accomplished using a prepared Xeno DOL Flasher Utility with on-screen instructions. This method of firmware updating can be considered safe, however if a corrupted write occurs (ie, power loss) there exists only a few limited options for chip recovery which include one of the following methods:

   * Desolder the board and manually reprogram the microcontroller via Serial/Parallel ISP.
   * Utilize an Alternate DOL loading method to reprogram the chip via Xeno DOL Flasher Utility.



XenoGC Clone - ISP

Same as the basic Clone with added ability to update firmware using both Xeno DOL Flasher Utility or Serial/Parallel ISP. This design will function in all aspects to the original XenoGC. A standard on/off switch between RESET and GND is required to set the microcontroller into program mode only when using Xeno DOL Flasher Utility.


Parts List

QTY COMPONENT
1 Atmega8L-8PU
1 0.1uF Capacitor
2 1K ohm Resistor
1 100 ohm Resistor
2 220 ohm Resistor
1 Red LED
1 Green LED

Diagrams

Clone ISP Pictorial Diagram Atmega8Block ISP.png
Clone ISP Circuit Diagram Atmega8Schematic ISP.png
XenoGC Clone with ISP headers (wired) XenoClone.JPG
XenoGC Clone with ISP headers (wireless) XenoClone-rev2.JPG

Programming and Updating

Firmware updates can only be accomplished using a prepared Xeno DOL Flasher Utility with on-screen instructions or thru the use of a Serial/Parallel ISP and AVRdude (or similar software). This design offers the most flexible method for developers or advanced testers to quickly load and verify results of code changes while also offering the ability to recover the microcontroller due to unexpected code results.


Building a Low Cost Programmer

A low cost programmer is essential for everyone; standard users, advanced testers or developers. The most essential function of a programmer is to allow communication with the microcontroller's bootloader to write new code, set fuses, or recover from a corrupted flash. A programmer is easy to build, very low cost, and recommended for any and all who wish to build their own XenoGC Clone. Every programmer has a name (or Device type) which is required for the programming software to set the proper communication protocol.


Serial Programmer

    Device Type: ponyser

Parts List

QTY COMPONENT
1 DB9 Serial Connector
2 4.7K ohm Resistor
1 10K ohm Resistor
1 15K ohm Resistor
2 5.1V Zener Diode
1 BC547 NPN Transistor

Circuit Diagrams

Serial Programmer Pictorial Diagram SerialBlock.png
Serial Programmer Serial programmer.JPG



Parallel Programmer

    Device Type: sp12


Parts List

QTY COMPONENT
1 DB25 Parallel Connector
7 220 ohm Resistor
1 47 uF Capacitor


Circuit Diagrams

Parallel Programmer Pictorial Diagram ParallelBlock.png



USB Programmer

    Device Type: usbtiny

Note: required Avrdude 5.5 or greater.

Works with linux, mac, windows. Admin permissions may be required for linux/mac

Attiny2313-20mhz version only, 10mhz incompatible. Also, IC must be preprogrammed with USBtiny flash software. External 3.3v / 5v power recommended, USB may not provide adequate power.


Parts List

QTY COMPONENT
1 Attiny2313 -20p
1 12mhz crystal
2 27pF capacitors
1 0.1uF capacitors
5 1.5K ohm resistors
2 27 ohm resistors
2 LEDs
2 3.3v / 3.6v zener diode
1 usb connector female


Circuit Diagrams

USB Programmer Pictorial Diagram Usbtiny.png
USBtiny Programmer with optional onboard power supply USBtiny.JPG

Programming Software

The most convenient form of software updating is the Xeno DOL Flashing Utility.

However, utilizing a Serial/Parallel ISP is beneficial with software, such as AVRDUDE, which allows writing, reading, and erasing of the Flash, as well as, reading and setting fuses via command line function. AVRDUDE offers support for Serial, Parallel, and USB programmers.

Quick Programming Reference

FUNCTION COMMAND
WRITE /usr/bin/avrdude -p m8 -c ponyser -P /dev/ttyS0 -v -U flash:w:XenoAT.1.05.hex:i
SET FUSES /usr/bin/avrdude -p m8 -c ponyser -P /dev/ttyS0 -v -U lfuse:w:0x84:m -U hfuse:w:0xD9:m
READ FUSES /usr/bin/avrdude -p m8 -c ponyser -P /dev/ttyS0 -U hfuse:r:-:r -U lfuse:r:-:r

Technical Note Regarding Fuse Settings

According to the ATMega8/8L's datasheet (Table 10. Pg 30,) enabling the "Brown Out Detection" (BOD) bit is recommended when using the internal 8Mhz oscillator at minimum startup time. The recommended lfuse setting is 0x84 (BOD enabled.) (Source)


Source Code

In February 2011, the source code was made publicly available at GC-Forever

  • Within the source code package are compiled .HEX files which can be used to program XenoGC/Atmega8 microcontroller with an ISP programmer. Additionally, xenoflasher.dol files are also included as a standalone method to natively program the XenoGC/Atmega8 using the existing Gamecube interface.


Included HEX & DOLS

File Type Location Name Status Start Button Action md5sum
HEX Root Directory XenoAT.1.05.hex Works PAL ONLY Shell 1381b07513bb22fd701245ad2457c23e
/Drivecode/Source/1.03a/ XenoAT.hex Non-functional -- 727d860899916f067c1a496e739a29a7
/XenoAT/Bin/ XenoGC 1.01.V1.hex Non-functional -- 08318c75b45eccc9eb3ad78fa0a25cf9
XenoGC 1.01.V2.hex Works NTSC/PAL Credits a6ba8066467ef568c2f8f36c0ec97b89
XenoAT.1.03.v1.hex Non-functional -- f6ddb4faf6d0247ee460a351b15a8499
XenoAT.1.03a.v1.hex Works NTSC/PAL Credits e572a5994c118680d406d254072cf19a
XenoAT.1.03a.v2.hex Non-functional -- f6ddb4faf6d0247ee460a351b15a8499
XenoGC 1.04.hex Works PAL ONLY Shell ea65af9e421a890fb980d564f3f88e9d
XenoAT.hex Works PAL ONLY Shell 1381b07513bb22fd701245ad2457c23e
XenoFlash DOL Root Directory xenoflash.1.05.dol Works 3abe3ea0d60333d998b8e9730881dd76
/XenoFlash/Bin/ xenoFlash.1.01.dol Works 656ee973233cbd19afdece8f7053315a
xenoFlash.1.04b.dol Works 92d0ae36375eb6beee6e5ac495eb3a25
xenoflash.dol Works 3abe3ea0d60333d998b8e9730881dd76

GoogleCode Project

Developers, please feel free to contribute @ GoogleCode Project


Compiler Requirements

WINDOWS

1. Download and install verified working compiler - WinAVR 20050214

2. Edit Makefile as necessary to include your WinAVR Path

3. Open CMD prompt and change directory to YourLocation/XenoGC-Source/XenoAT

4. Type make


LINUX

gcc 3.4 is recommended to compile the following source packages for both AVR and MN10200.

Note: Using newer versions of gcc may cause compile failures!!

    avr-libc-1.2.3
    binutils 2.15-3
    gcc-2.95.3
    gcc-3.4.3

The required sources have been pre-packaged as XenoTools available at the googlecode xenogcfork page. Compile instructions can be found HERE


MAC

to be continued...maybe (anyone got a MAC??)



XenoGC Clone
Developers Open Source
CPU Atmel Atmega8L
Modchip Type Drivechip
Features Gamecube BIOS
Installation 0 wires (optional 6 wires)