Difference between revisions of "CHANS"

From WiiBrew
Jump to navigation Jump to search
(Updated with latest struct, nearly completely discovered.)
(formattin')
Line 3: Line 3:
 
Here is what is known of the structure for the header:
 
Here is what is known of the structure for the header:
 
<pre>
 
<pre>
typedef struct{
+
typedef struct {
 +
        // All offsets are from 0x20
 +
        u32    head;
 +
        u32    version;
 +
        u32    file_size;
 +
        u8      unk[0x14];
 +
        u32    unk10;
 +
        u32    unk20;
 +
        u32    unk30;
 +
        // First data section size
 +
        u32    fds_size;
 +
        // First data section offset from start of file
 +
        u32    fds_offset;
 +
        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;
  
// all offsets are from 0x20
 
u32 head;
 
u32 version;
 
u32 file_size;
 
u8 unk[0x14];
 
u32 unk10;
 
u32 unk20;
 
u32 unk30;
 
// first data section size
 
u32 fds_size;
 
// first data section offset from start of file
 
u32 fds_offset;
 
u32 table4_count;
 
u32 unk5;
 
u32 unk6;
 
//table 1 is made up of 8 byte chunks
 
u32 table1_count;
 
u32 table1_offset;
 
//table2 is the method name list
 
u32 table2_count;
 
u32 table2_offset;
 
//table3 is a string literal table, each string is in utf-8 and ended with 0x00240020 (.$. )
 
u32 table3_count;
 
u32 table3_offset;
 
//possibly unused table
 
u32 unk7;
 
u32 unk8;
 
 
u32 table4_offset;
 
u32 unk9_offset;
 
 
 
} bacs_header;
 
 
typedef struct {
 
typedef struct {
 
         u8      length;
 
         u8      length;

Revision as of 18:59, 25 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 {
        // All offsets are from 0x20
        u32     head;
        u32     version;
        u32     file_size;
        u8      unk[0x14];
        u32     unk10;
        u32     unk20;
        u32     unk30;
        // First data section size
        u32     fds_size;
        // First data section offset from start of file
        u32     fds_offset;
        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!