Buscando a Huffman desesperadamente

Lugar donde se intentarán resolver problemas específicos
Responder
Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5519
Registrado: 24 Ene 2011, 16:52

Buscando a Huffman desesperadamente

Mensaje por CUE » 06 Oct 2011, 10:57

He cogido un viejo proyecto que tenía por aquí, el NiCo (Nintendo Compressor), que, básicamente, es un programilla para hacer las compresiones que usan las consolas GBA/NDS en sus BIOS, con el propósito de hacer las compresiones más rápidas (hasta 80 veces en algunas LZSS), ampliarlo un poco con algunas compresiones más que se usan en la NDS, y todo ello para hacer público el código fuente y que se pueda aprovechar, estudiar, copiar, etc.

Compresiones normales, soportadas por la BIOS
- RLE
- LZ (con opciones para WRAM y VRAM)
- Huffman (para 4 y 8 bits, aunque soporta también 1 y 2 bits, pues el código es el mismo)

* la LZ es una LZSS normal pero se suele llamar equivocadamente LZ77
* las 3 quedan exactamente como en los ficheros originales (se comprueba descomprimiendo y volviendo a comprimir los ficheros

Compresiones añadidas
- LZE, usada en los dos últimos Luminous Arc de NDS
- RLZ, usada en Ace Attorney y en el último Golden Sun de NDS

* la LZE son en realidad dos codificaciones LZSS, comprimiendo datos con una u otra dependiendo de los bytes tratados
* la RLZ se suele llamar equivocadamente LZ11 y LZ40 (son la misma compresión, pero una guarda los datos en big endian y la otra en little end¡an), y no es más que una ampliacion de la llamada compresión YAZ0 usada en algunas consolas de Nintendo (una mezcla de RLE y LZSS)

¿Dónde está el problema? Pues que a la hora de hacer pruebas me encuentro con la desagradable sorpresa que no hay ni un sólo programa que use la codificación Huffman para esas consolas, cosa bastante extraña porque la GBA tiene sus añitos. Todos los que hay lo hacen mal, para decirlo claramente (Crystal Tile, DSDecmp, GBACrusher, y todos los que se basan en ellos). En algunos casos avisan de que la compresión "falla" a veces (forma bonita de decir que no saben cual es el problema), o no comprimen ciertos ficheros, o no guardan bien los datos, o no alinean los datos correctamente, etc. La verdad es que a mí me ha pasado también. De los 119 ficheros comprimidos que he hallado (en los dos primeros juegos del Profesor Layton, que usan las tres compresiones soportadas por la BIOS), me he encontrado con problemas en 12 de ellos (los 107 restantes no dan problema). Sé cual es el problema y por qué se produce, pero necesito más ficheros comprimidos para hacer pruebas, y resulta imposible si no hay ningún programa que lo pueda hacer. Así que a ver si alguien conoce alguno que funcione, que venga en alguno de los kits de desarrollo o algo.

Cómo saber si un programa comprime bien: creando un fichero de 256 caracteres, desde el 0x00 hasta el 0xFF. Si no lo puede codificar ya podemos asegurar que el programa no sirve. Si lo codifica, basta con decodificarlo y si el resultado obtenido no tiene los caracteres originales es que tampoco sirve. Ésas son las dos opciones de los programas citados.

Avatar de Usuario
Wastor
Mensajes: 95
Registrado: 16 Jul 2011, 23:13

Mensaje por Wastor » 14 Abr 2012, 00:18

http://code.google.com/p/huffman-compressor/

Seguramente no sirva de mucho o no sea lo que buscas. Un saludo.

PD: Resube el desempacador (por favor) del Deltora Quest que entre que megaupload chapó, formateé el disco duro, no consigo compilar el código que dejaste porque soy un cenutrio y que colecciono todo programa que veo por internet del mundillo aunque no tenga ni zorra idea, lo cual hace que ahora lo eche en falta.

Un saludo.

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5519
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 14 Abr 2012, 10:36

¡Anda, yo creía que te había tragado algún "buraco" negro!

Lo del huffman ya lo solucioné hace tiempo, consiguiendo, por fin, que se pueda comprimir bien para GBA y DS. Más de uno se molestó porque demostré que sus herramientas lo hacían mal, pero ya sabes que lo mío es hacer que la gente se cabree.

http://www.mediafire.com/?q6kv8y3a1v9185p
Se ponía el programa con el "filedata.bin" y te sacaba todo lo que tiene. Va el fuente incluido, para que alguien haga la historia de volverlo a "de meter", que es una tontería.

Avatar de Usuario
Wastor
Mensajes: 95
Registrado: 16 Jul 2011, 23:13

Mensaje por Wastor » 14 Abr 2012, 11:26

CUE escribió:¡Anda, yo creía que te había tragado algún "buraco" negro!

Lo del huffman ya lo solucioné hace tiempo, consiguiendo, por fin, que se pueda comprimir bien para GBA y DS. Más de uno se molestó porque demostré que sus herramientas lo hacían mal, pero ya sabes que lo mío es hacer que la gente se cabree.

http://www.mediafire.com/?q6kv8y3a1v9185p
Se ponía el programa con el "filedata.bin" y te sacaba todo lo que tiene. Va el fuente incluido, para que alguien haga la historia de volverlo a "de meter", que es una tontería.
Casi casi, literalmente no he tenido tiempo de hacer nada por el mundillo, he tenido que aplazar todo hasta julio que quedaré en vacaciones o en paro prolongado, vete a saber.

Gracias por la resubida, le daré una oportunidad en algún momento para tener textos en japonés y luego recordar que no sé y que nadie me ayudará a traducirlo y me eche a llorar.

Responder