CHANS: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
` |
||
| Line 4: | Line 4: | ||
<pre> | <pre> | ||
typedef struct { | typedef struct { | ||
//START: Main Header | |||
u32 head; // 0x00000000 | |||
u32 version; // 0x00000004 | |||
u32 file_size; // 0x00000008 | |||
u8 unk[0x14]; // 0x0000000C | |||
//END: Main Header | |||
// All offsets are from 0x20 | // All offsets are from 0x20 | ||
u32 unk10; // 0x00000020 | |||
u32 unk20; // 0x00000024 | |||
u32 unk30; // 0x00000028 | |||
u32 unk10; | |||
u32 unk20; | |||
u32 unk30; | |||
// First data section (this is the bytecode) | // First data section (this is the bytecode) | ||
u32 fds_size; | u32 fds_size; // 0x0000002C | ||
u32 fds_offset; | u32 fds_offset; // 0x00000030 | ||
u32 table4_count; | u32 table4_count; | ||
Revision as of 03:25, 26 May 2009
CHANS is the system used by the Wii's system menu to display "dynamic" banners. It seems to be some form of bytecode. This page shall describe said bytecode and the header for CHANS files. You may find a CHANS file in the News Channel as content index 5.
Here is what is known of the structure for the header:
typedef struct {
//START: Main Header
u32 head; // 0x00000000
u32 version; // 0x00000004
u32 file_size; // 0x00000008
u8 unk[0x14]; // 0x0000000C
//END: Main Header
// All offsets are from 0x20
u32 unk10; // 0x00000020
u32 unk20; // 0x00000024
u32 unk30; // 0x00000028
// First data section (this is the bytecode)
u32 fds_size; // 0x0000002C
u32 fds_offset; // 0x00000030
u32 table4_count;
u32 unk5;
u32 unk6;
// Table 1 is made up of 8 byte chunks
u32 table1_count;
u32 table1_offset;
// Table 2 is the method name list
u32 table2_count;
u32 table2_offset;
// Table 3 is a string literal table.
// Each string is in utf-16 and ends with 0x00240020 (.$. )
u32 table3_count;
u32 table3_offset;
// Possibly unused table
u32 unk7;
u32 unk8;
u32 table4_offset;
u32 unk9_offset;
} chans_header;
typedef struct {
u8 length;
u8 padding;
u16 offset;
} table2_entry;
This data is in no way 100% complete, so far it works but table 1 and 2, but in future this could break with further files tested.
TODO: A lot! Keep adding data, people!