Summon Night - Swordcraft Story

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

Mensaje por CUE » 24 Oct 2012, 13:45

¿No quedamos en que la cabecera eran 16 bytes?

Te lías mucho con los valores. Intenta siempre separarlos en grupos de 2-4 bytes, que suele ser la longitud de cada valor, separando cada byte con un guión:
- SSTT0200400001000008B000000
- SS-TT 02-00 40-00 01-00 00-08 B0-00 00...
- SS-TT-02-00 40-00-01-00 00-08-B0-00 00...

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

Mensaje por Wastor » 24 Oct 2012, 16:41

CUE escribió:¿No quedamos en que la cabecera eran 16 bytes?

Te lías mucho con los valores. Intenta siempre separarlos en grupos de 2-4 bytes, que suele ser la longitud de cada valor, separando cada byte con un guión:
- SSTT0200400001000008B000000
- SS-TT 02-00 40-00 01-00 00-08 B0-00 00...
- SS-TT-02-00 40-00-01-00 00-08-B0-00 00...
:lol: , y es 16, pero como uso python me conviene sumarle 15 porque así me cuadra con la posición a leer. Así que... sí, son 16, pero por temas logísticos para moverse por el fichero es uno menos... Soy un poco cazurro para escribir correctamente sobre estos temas :roll:

También tengo que desempacar gráficos que llevan la marca "CG4" según acabo de averiguar con breakpoints. Menudo dolor de muelas es este juego.

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

Mensaje por CUE » 24 Oct 2012, 18:02

Esos ficheros son gráficos. Había tres tipos, al menos en DS: CG4, CG8, CGT.

Si no recuerdo mal, de los pocos que vi los CG4 eran de 4bpp, los CG8 eran de 8bpp, y ambos tenían los tiles uno debajo de otro. Los CGT podían ser de ambos, pero tenía varios tiles horizontales en vez de uno. Pero no estoy seguro del todo porque vi apenas media docena de ellos.

La paleta estaba al final, la típica de los 16 bits, y su puntero estaba por el principio.

También había ficheros ANT, ANP, SC8, pero para entonces ya me aburrí del tema y lo dejé.

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

Mensaje por Wastor » 24 Oct 2012, 23:30

CUE escribió:Esos ficheros son gráficos. Había tres tipos, al menos en DS: CG4, CG8, CGT.

Si no recuerdo mal, de los pocos que vi los CG4 eran de 4bpp, los CG8 eran de 8bpp, y ambos tenían los tiles uno debajo de otro. Los CGT podían ser de ambos, pero tenía varios tiles horizontales en vez de uno. Pero no estoy seguro del todo porque vi apenas media docena de ellos.

La paleta estaba al final, la típica de los 16 bits, y su puntero estaba por el principio.

También había ficheros ANT, ANP, SC8, pero para entonces ya me aburrí del tema y lo dejé.
El juego es un gran latazo, no sé los Summon de NDS pero como aquí hay que sacar, ver si no comes espacio y demás es aburrido como él solo. Con tu info casi mejor que ante la duda miro en el Twin Ages (era ese creo) de NDS y lo busco en este, que me empeño demasiado en hacerlo de manera elegante las búsquedas.

Por cierto, ¿no has pensado (y lo digo egoístamente) hacer una variante de tus programas para descomprimir en un lugar de un archivo? Porque ahora mi rutina lo que hace es buscar estos archivos, los extrae y luego lo compacto con tu LZSS.exe y los reinserto. Llevo como 10 y al ser tu programa más eficiente no me repuntea porque ocupa menos que el original y estando editado, me arrepiento hasta de haberle puesto un condicional para buscar espacio al final de la rom. Yo de compresión no entiendo, pero hay algunos programas que si le das el punto de inicio te lo sacan.

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

Mensaje por CUE » 25 Oct 2012, 09:42

Es que no tengo interés en que descomprima partes de un fichero porque eso va más allá de la filosofía del programa. Sería como decir a un editor de textos que en vez de cargar un TXT cogiese parte de un fichero, y ésa es misión de otros programas, como los editores hexadecimales, pero no del editor en sí. Por eso tengo un programa para cada compresión en vez de uno sólo que lo haga todo.

Además, así trabajas un poco y haces algo útil en vez de estar todo el día con los videojuegos :twisted:

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

Mensaje por Wastor » 06 Nov 2012, 00:40

Bueno, antes de encomendarme a un foro gringo y me manden tres mil recetas para el dolor de muelas cuando estoy resfriado, voy a reflexionar en voz alta. Tengo un problema gordo, o que me quita el sueño, véase como más guste. Este juego apenas tiene nada de gráficos por traducir, pero resulta necesario encontrar cierto fichero del cual tengo parte del código salvo la cabecera extraído desde la VRAM del emulador, que tampoco voy a explicar, y que básicamente sirve para el mapeo del menú in game, y mira que sólo necesito encontrar dos, pero no hay manera.

- Primero opté por la opción ingenua o ya aparecerá, aposté a que era LZSS y fui barriendo la ROM, encontrando tablas y extrayendo a partir de ellas. Pero para mi primer disgusto, no encuentro en estos ficheros.

- Segundo opté por usar CrystalTile, que para el que no lo sepa tiene un buscador LZ y Huffman, que nunca me he encomendado a ellos, pero se me ocurrió que sería buena opción. Por cierto, el programa localiza posibles candidatos, es decir, que muchos no lo son y peta. Pero te permite guardar los Offset y el tamaño en decimal que tiene la zona codificada (así es como CUE dice que es esta compresión, le haré caso dentro de mi incultura :wink:). Total, que si uno hizo un curso básico de programación, puede leer un txt y generar un .py, .bat, .c o lo que sea que saque estos trozos de ficheros y se los pase a un decompresor en comandos como el de CUE.

- Tercero desesperé y pensé... Voy a codificar el fichero que tengo y quizás tenga suerte y en la ROM encuente unos pocos hexadecimales... Pero claro, todo lo que era LZ conservaba los 4 primeros hexadecimales y no los encontraba y Huffman supuestamente ya debería descartarlo, pero... Tampoco. Esta idea lo cierto es que es incompleta, ya que desconozco la cabecera de este trozo de código. Creo que es SC4 pero la cabecera estaría incompleta lo cual no ayuda.

- Cuarto, he usado el logging que posee el emulador de GBA. Marcado la opción SWI hay un programita (este) que dejando correr el emulador te captura los LZSS que pasan la BIOS o algo así, no creo que lo diga bien, pero no quiero leerme la documentación, no creo que sea importante.

- Quinto, he decidido usar el método de breakpoints, que se basa en que yo sé que esto se carga en la VRAM en la posición de memoria 0x06000000. ¿Problema? Pues que esta zona que está reservada a mostrar gráficos y más cositas se refresca continuamente, unos cuantos cientos de veces. Y claro, no aspiro a vivir lo suficiente para que se cargue justo en el momento que pase a escribir el código que busco y poder tirar del hilo.

- Probé RLE también...

Total, si alguien me da una idea se lo agradecería enormemente. Subo el fichero en cuestión, que le falta la cabecera...

Fichero

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

Mensaje por CUE » 06 Nov 2012, 10:55

Así, a ojo, y antes de mandarte tres mil recetas para el dolor de cabeza producido por las esquinas que ya sabes, ¿estás seguro de estar haciéndolo bien?

Si no entiendo mal, lo que tienes es el fichero con los tiles a mostrar, o algo "asín", pero eso no significa que originalmente tenga ese formato. Esas cosas llevan su formato propio, que previamente estará comprimido, y lo que después tienes en memoria, lo que has sacado, para que se entienda, se saca de ahí. Así que debes buscar, al menos eso creo, de dónde salen esos datos, y luego ver de dónde los descomprime. Pero, como me pasa con la DS, ése no es mi fuerte. Lo normal en esos casos es ir depurando el programa para ver dónde hace eso, ver cómo lo hace y así poder deducir de dónde sale el fichero.

También puede ser que no sea nada de eso, pero alhgo tenía que decirte para [s]putearte[/s] que pruebes mientras te quita el sueño.

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

Mensaje por Wastor » 06 Nov 2012, 11:27

La verdad es que puestos a ser garrulo, yo pienso, o me gustaría pensar, que el fichero que contiene este código descomprimido está por ahí y se ha librado de los barridos por algún motivo. Si los gráficos están de esa forma, los PSI y SC4, SC8... ¿van a ser tan originales que estos van a ir de forma distinta, es decir, el clásico LZSS y a volar? Lo que no sé es cómo se iba a librar hasta del logging...

Tampoco es mi fuerte el tema de debuggers, los he usado muy puntualmente. Qué poco le falta para acabar en la nevera al juego, que un año en el cajón le sentó bien.

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

Mensaje por CUE » 06 Nov 2012, 13:18

El problema de que sea LZSS es que no sabes qué información hay. Esos datos deberán llevar algo más en el fichero, una cabecera que indique longitudes, número de tiles, o cosas de ésas. Todo eso es información necesaria para poder comprimir el fichero y poder buscar secuencias idénticas. Basta con que cambien unos bytes para que el fichero comprimido quede diferente, lo que te impedirá buscar esas secuencias. También hay que saber qué método de compresión usa, que no es lo mismo una LZSS para VRAM que una LZSS para WRAM, pero eso se ve comprimiendo cualquier otro fichero de esos que ya has comprimido.

¿Ves lo que pasa por traducir esos juegos? Tienes que hacer cosas para los pokemandriles, que es lo que le va a la peña, y seguro que más gente de ayuda. Pero no, tú el caso es dar la nota y meterte con un Summon Night. :evil:

Responder