This file contains a list of URLs that WiiConnect24 downloads data from, and can be found in /shared2/wc24
File header looks something like this
struct WC24File
{
char magic_word[4], // 'WcDl'
int unknown_value_1,
int unknown_value_2,
int unknown_value_3,
short unknown_value_4,
short wc24_header_file_offset,
short wc24_record_count,
short unknown_value_5
}
wc24_header_file_offset is big endian, and needs to be shifted left 4 bits to get the true address. The space between file header and wc24 record headers is padded with 0x00 bytes
At offset 00000080 there is the first of a batch of header records. The structure of these is something like
struct WC24Header
{
char game_title[4],
u32 memory_address_1,
u32 memory_address_2,
u8 record_pointer,
u8 padding[3]
}
My first record has the following data
{ 'HAEA', 0x0135F25A, 0x0135F209, 0x80, { 0x00, 0x00, 0x00 } }
If you shift the record_pointer 4 bits to the right, you get 0x00000800, which is a point inside the file which contains a more detailed record
Interestingly, in my list of headers, I get two HAEA records, then a blank record, then two HAFP records, followed by another two HAEA records, then another blank, then RMCP, HABA, then two final RMCP records
struct WC24Record
{
short record_index,
short unknown_value_1,
int unknown_value_2,
char game_title[4],
int unknown_value_3,
int unknown_value_4,
int unknown_value_5,
int unknown_value_6,
int unknown_value_7,
int unknown_value_8,
int unknown_value_9,
int unknown_value_10,
int unknown_value_11,
int unknown_value_12,
char unknown_value_13[128],
char wc24_main_url[236],
char wc24_sub_url_files[96],
}
record_index starts with the value of 0x0000, and counts up each record
unknown_value_1 = 0xFF00 if the record is empty (big endian)
unknown_value_2 always seems to be 0
unknown_value_4 seems to be a some sort of application id, sometimes the same as game_title, but on the HAEA entries, they are 0x00000002 (big endian)
unknown_value_5 could actually be a part of unknown_value_4. When my game title is HAFP, unknown_value_4 and unknown_value_5 combine to create a text string of 'HAFP01', followed by two 0x00's to fill the space. Might just be coincidental though.
unknown_value_7 looks like a relative memory address (big endian), could be wrong, but they do stay consistant between records with the same game ID
unknown_value_8 to unknown_value_11 are always 0x00000000
unknown_value_12 looks like another memory address
unknown_value_13 looks like string space, but is always blank in all of my records
wc24_main_url seems an odd length, so there maybe another smaller string tucked in at the end
wc24_sub_url_files is a bit confusing, it might be an array of filesnames to use with the wc24_main_url. However, judging from the data, it might actually be for a single filename, just keeps getting overwritten with different values
I know there's a lot of unknowns here, but there might be some useful information. I'll update as I find out...
Edited 1 time(s). Last edit at 09/25/2008 11:36PM by whodares.