Bueno, como spirax ya ha echo el id viewer, tendre que añadir lo de los bloques que ocupa ^^
Es facil en teoria (teniendo el source del los bfgr wadtools), simplemente coger los tamaños de los archivos propios del wad, sumar y dividir entre 128.
edit: como veo que tu aplicacion es en GUI mejor te doy la informacion, pero hare lo otro porque funcionaria bajo linux tambien (y ms2 una vez compilado).
Los wad llevan archivos que en la wii estan compartidos, estos app compartidos no cuentan para el tamaño final del canal, y para saber su tamaño debes leer el TMD. Lo mejor seria leer el tamaño de todos los archivos del TMD y sumarlos, excepto los compartidos, para entonces dividir por 128 como supongo que haces.
Te dejo la informacion sobre como leer los archivos desde el TMD (gracias a las BFGR wadtools)
nota: offsets en hexadecimal
De offset 0x0 a 0x13F: cabecera 00 01 00 01 seguida de 00 hasta el final
De 0x140 a 0x149: issuer (ejemplo: Root-CA00000001-CP00000004 (ascii))
De 0x14A a 0x183: 00s
De 0x184 a 0x18B: sys_version (ejemplo: 00 00 00 01 00 00 00 09)
nota: esto puede que sea el IOS que requiere el canal, en el source del title lister se podria comprobar.
De 0x18C a 0x193: title_id (ejemplo: 00 01 00 01 4a 59 4d 59)
nota: los 4 ultimos bytes son la ID del juego ( 4a 59 4d 59 (JYMY)) y lo demas es la carpeta de la wii donde se instalara, en este caso 000100001, indicando que es un canal para instalar.
De 0x194 a 0x197: title_type (ejemplo: 00 00 00 01)
nota: esto creo que indica el tipo de canal, en este caso 00000001 seria VC SNES
De 0x198 a 0x199: group_id (ejemplo: 30 31)
De 0x19A a 0x19D: codigo de region del wad (ejemplo 00 00 00 02)
nota: no estoy seguro de cuantos caracteres componen este codigo, pero delante siempre parece haber 00 00 00.
Codigos de region:
00 00 00 00: NTSC JAP
00 00 00 01: NTSC USA
00 00 00 02: PAL
00 00 00 03: REGION FREE (el canal se ejecuta en cualquier consola, lo cual no implica que funcione)
0x19E a 0x1AD: region code (ejemplo: 80 0D 80 80 80 80 80 80 80 80 80 80 80 80 80 80)
0x1AE a 0x1DB: ni idea :S
0x1DC a 0x1DD: title_version (ejemplo 00 001)
0x1DE a 0x1DF: num_contents (ejemplo 00 07 -> 7 archivos app)
0x1E0 a 0x1E1: boot_index (ejemplo 00 06 -> se ejecuta el 00000006.app, para homebrew es el 02.app (archivo dol)
0x1E2 a 0x1E3: 00 00 (padding)
0x1E4: aqui empieza lo bueno, la informacion de cada archivo. Cada archivo son 36 caracteres, multiplicas por el numero de contenidos y tienes el total de caracteres para las veces que has de leer. Cada info de archivo se estructura asi:
offset tamaño
0x00 4 Content ID (ejemplo 00 00 00 00 )
0x04 2 Index (ejemplo 00 00)
0x06 2 Type (ejemplo 00 01 )
0x08 8 Size (en hexadecimal )
0x10 20 SHA1 hash (ejemplo )
(Esto lo he copiado de wiibrew por vagancia)
Content ID e Index coinciden, siendo el CID el nombre del .app y el Index su posicion, algo redundante.
Lo interesante para los bloques: Type y Size.
Type puede ser que yo sepa 00 01 o 80 01, siendo el primero un archivo propio y el segundo un fichero compartido.
Como ya habras deducido, coges todos los tamaños excepto los que tengan ID 80 01, los sumas y divides por 128, dando el numero correcto de bloques.
Aqui tienes algo mas informacion acerca del TMD:
http://wiibrew.org/index.php?title=Tmd_file_structuresalu2