In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Difference between revisions of "News Channel"

From WiiBrew
Jump to navigation Jump to search
m (Title ID and fixed description typo)
m (Updated information.)
Line 10: Line 10:
 
}}
 
}}
  
The '''News Channel''' download data packages from Nintendo servers via plain HTTP connection.  Since the official servers for this were discontinued on June 28, 2013, [[RiiConnect24]] is in the works.
+
The '''News Channel''' download data packages from Nintendo servers via plain HTTP connection.  The official servers for the News Channel were discontinued on June 28, 2013, however [[RiiConnect24]] has since restored it's functionality.
  
 
Some examples:
 
Some examples:

Revision as of 02:19, 22 February 2021

News Channel
Newschannel.png
Version0.7 (7)
Title IDHAGA, HAGx
TypeGeneral channel
PeripheralsWiimote1.svg Internet

The News Channel download data packages from Nintendo servers via plain HTTP connection. The official servers for the News Channel were discontinued on June 28, 2013, however RiiConnect24 has since restored it's functionality.

Some examples:

http://news.wapp.wii.com/1/076/news.bin.08

Nowadays, it seems the news file has moved:

http://news.wapp.wii.com/v2/1/076/news.bin.00

...

http://news.wapp.wii.com/v2/1/076/news.bin.23

http://news.wapp.wii.com/ displays a Red Hat Enterprise Linux Test Page. File structure:

$0000 - $003F: padding (00)
$0040 - $013F: rsa encrypted sha-1 signature of rest of the file
$0140 - $0143: header
$0144 - .....: compressed data

The compression is very simple:

  1. Read one byte
  2. For each bit of the byte, msb-to-lsb,
    • if 0, copy one byte to the output
    • if 1, read 16 bits msb first in v, copy n bytes at offset m from the end of the output, n=3+(v>>12), m=v & fff

Quick and very dirty C code:

  i = 0x144;
  j = 0;
  while(i < size) {
    int k;
    int v = data[i++];
    for(k=0; k<8; k++)
      if(!(v & (1 << (7-k)))) {
        result_data[j++] = data[i++];
      } else {
        int vv = (data[i] << 8) | data[i+1];
        int nb = 3+(vv >> 12);
        int off = (vv & 0xfff);
        int l;
        i+=2;
        for(l=0; l<nb; l++) {
          result_data[j] = result_data[j-off-1];
          j++;
        }
      }
  }