First off what is a GCI file? It's a file output by EMS' Gamecube USB Memory Adaptor. And is basically a GameCube save file in a format that your PC can store it. This document deals with the standard header data that with in all GCI files. Once this is understood editing of save files should be possible. This information is really only useful to programers looking to make some software to interface with GCI files. I make no guaranty that all this data is 100% correct as it is still being updated and added too. If you have any info or questions you can email me here:xavier@surugi.com |
Known Data:
Data: |
Game ID |
Address: |
0x00000 |
Length: |
3 |
Type: |
ASCII |
Range: |
|
Description: |
This is the 3 character code that references the file to a specific game. This ID is unique to the game. |
Data: |
Region flag |
Address: |
0x00003 |
Length: |
1 |
Type: |
ASCII |
Range: |
J, E, P |
Description: |
This stores what region the file is from. Either Japan(J)/US(E)/Europe(P). |
Data: |
Company ID |
Address: |
0x00004 |
Length: |
2 |
Type: |
ASCII |
Range: |
|
Description: |
This is Company ID is unique to each Gamecube publisher. |
Data: |
Graphics Format |
Address: |
0x00007 |
Length: |
1 |
Type: |
Binary |
Range: |
01,02,05,06,(FB=no graphic) |
Description: |
Determines the format of the graphic. |
Data: |
File ID |
Address: |
0x00008 |
Length: |
32 |
Type: |
ASCII |
Range: |
|
Description: |
This seems to be a filename associated with the file. This is never shown to the user. |
Data: |
Date last modified |
Address: |
0x00028 |
Length: |
4 |
Type: |
Binary |
Range: |
0 to 4294967295 |
Description: |
This stores the date/time of the last save. The date is stored as seconds past "12/31/1999 11:59:59 PM". So just added the this date to the seconds stored and you'll get the actual date. |
Data: |
Graphic Offset |
Address: |
0x0002C |
Length: |
4 |
Type: |
Binary |
Range: |
|
Description: |
This is the offset of where the Banner and Icon are stored. |
Data: |
Number of blocked used |
Address: |
0x00038 |
Length: |
2 |
Type: |
Binary |
Range: |
|
Description: |
This is how many blocks this file takes up. A block is Nintendo's word for a 8 Kbyte sector. A standard Memory Card 59 as 59 blocks available for saves. |
Data: |
Info Offset |
Address: |
0x0003C |
Length: |
4 |
Type: |
Binary |
Range: |
|
Description: |
This is the offset of the Game name and File info are stored |
Data: |
Game name |
Address: |
Address from Info Offset |
Length: |
32 |
Type: |
ASCII |
Range: |
|
Description: |
The name of the game that this file is associated with. |
Data: |
File info |
Address: |
Starts after Game name |
Length: |
32 |
Type: |
ASCII |
Range: |
|
Description: |
Info specific to this file. |
Data: |
Game Banner Graphic |
Address: |
Address stored in Graphic Offset |
Length: |
If CI8 then Graphic [3072] + Palete [512] = Total [3584] |
Type: |
Binary |
Range: |
|
Description: |
Banner for the game. It’s 96x32 pixels. But the actually format is dependent on the graphic type, more info on that is below. Not every save is required to have a banner, its icon will be displayed in its place. |
Data: |
File Icon |
Address: |
|
Length: |
|
Type: |
Binary |
Range: |
|
Description: |
CI8 and RGB5A3 |
||||||||||||||||||||||||||||||
As far as I know these are Nintendo created formats used only by the Gamecube system. CI8 –The data is stored in 8x4 pixel tiles. That means starting from the upper left of the image you would read 8 bytes, move one pixel down and read the next 8 for 4 lines before moving to the next tile.(see table below) The color of each tile is determined by the palette in the last 512 bytes of the graphic.
RGB5A3 – This data uses no palette and is stored in 4x4 pixel tiles. Each pixel is 2 bytes long and use the standard GC Palette Format. GC Palette Format – Both graphic formats use this method to store RGB data. It’s stored in 2 bytes of data the format is as follows:
|
Timothy Wilson, whom I have been working with on this, has his excellent documentation located here: GameCube GCI & GCP Memory Card Save File Format Specifications
This gave me atleast an idea of what I needed to do with the graphics. GCBanner.txt |
GCBanner v0.3 - loser 2003 this program converts between banner files found on gamecube discs to tga files. the tga file required as input is a 24bit 96x32 pixel image. that is, 8 bits for RGB, 96 pixels wide and 32 pixels high. the same kind of tga file is output when converting from a banner file a banner file can be found in the root directory of a gamecube disc and is called opening.bnr. there are 2 types of banner files. a version 1 banner file contains info for just 1 country (eg jap/usa release) whereas a version 2 banner file contains information for multiple countries (eg pal release with english, german, french, spanish, italian, dutch). this tool always outputs a version 1 banner file, but can accept both version 1 and version 2 banner files as input. loser |
Treatise On The Architecture Of .GCI Format Gamecube Saves This document is written in the hopes of mapping the internal structure of gamecube save files. There is no information presently available on this subject, and I hope to find a way to extract the Logo and Icon data from these files. NOTE: All values ending with "h" are hexadecimal values. Address-Length -Description ---------------------------- 0000h-28h -The first several bytes seem to be some sort of unique game code. 0028h-80h -Contains game name and last save date? 0084h-C00h -Logo GFX data. Logo is 92 by 32 pixels. 0C84h-200h -these 512 bytes are the Logo Palette. 0E84h-400h -This is where the Icon data resides. The length of this section is 400h per frame of animation. Icon is 32 by 32 pixels. 1284h-200h -Palette data for the Icon. 1484h-EoF -Save data for the game untill the end of the file. A perfect example of the above structure is the Metroid Prime GCI, as it contains only one frame for it's Icon, and thus exactly matches the values given for the Icon palette and Save Data addresses. The GFX data itself seems to be stored in a standard 8bpp format, with non-standard tiles. The data is a series of 8 by 4 pixel tiles, rather than 8 by 8 tiles. You can see some examples of this at my site www.geocities.com/MetroidPrimeMap). Palette data format is still being determined. Written By: -Jason Haffner (JasonHaffner@Hotmail.com) |