Extracción e Inserción en textos y gráficos Devil Suvivor 2

Lugar donde se intentarán resolver problemas específicos
Responder
Efniak
Mensajes: 1
Registrado: 27 Jun 2012, 15:15

Extracción e Inserción en textos y gráficos Devil Suvivor 2

Mensaje por Efniak » 27 Jun 2012, 15:43

Bueno , para empezar es un juego de DS tengo que comentar que este juego es de la misma compañía que el "Radiant Historia" del que ya se ha hablado en este foro y según he mirado en los archivos del juego es bastante similar al "Radiant Historia".

He estado mirando el post de este en el que Skye deja una herramienta para desempaquetar y volver a empaquetar el Data.bin.
He probado pero no funciona bien , o al menos eso me pasa a mi quería preguntar si soy yo que lo uso mal el programa echo por Skye o realmente no sirve?

Por último tengo pensado traducirlo todo aunque primero me gustaría poder insertar textos en el juego antes de buscar colaboradores.

Un saludo y gracias por adelantado.

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

Mensaje por CUE » 27 Jun 2012, 16:19

Con lo que usé en el RH puedo sacar la esctructura de carpetas del NDX, así que parece que los ficheros tienen idéntica estructura.

El programa de Skye puede que use valores absolutos que sólo valgan para RH, y nadie mejor que ella para decírtelo.

Skye
Mensajes: 95
Registrado: 03 Ago 2011, 20:09

Mensaje por Skye » 27 Jun 2012, 16:33

Ahora mismo no puedo probar nada, pero me parece recordar que el juego tenía el mismo tipo de archivos pero con nombre distinto: Target.bin, Target.idx, y Target.ndx si mal no recuerdo.

En efecto mi programa usa un archivo específico para el Radiant: el ndx.txt. Este archivito contiene la ruta de todos los archivos del juego, sacados del Data.ndx, usando el programa de CUE que crea la estructura de carpetas. Sólo habría que crear el mismo archivo pero para el juego este, ya que con algo de suerte el modo de encontrar los offsets a través del idx será igual. Bueno, y también habría que renombrar los "Target" a "Data".

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

Mensaje por CUE » 27 Jun 2012, 17:00

Además hay que ver si los textos están ahí o no. A simple vista, a no ser que estén comprimidos/codificados, no se ven, y hay muchos gráficos sin comprimir, por lo que dudo que los textos lo estén, aunque sólo es una suposición mía. En los overlays, una vez descomprimidos, hay montones de textos, en SJIS. Lo que no sé es si son únicamente los típicos de objetos/descripciones o si están todos.

Un ejemplo de lo que hay:
[img]http://img708.imageshack.us/img708/900/46667164.png[/img]

Sí hay textos en el BIN, también en SJIS.

Avatar de Usuario
pleonex
Mensajes: 68
Registrado: 22 Ago 2011, 00:06
Ubicación: Espania
Contactar:

Mensaje por pleonex » 27 Jun 2012, 18:46

En el BIN sí hay textos, y sí, están en SJIS.

Hace poco hice "una herramienta" para facilitar el extraer e insertar archivos de los overlays (cualquier archivo en general). Es una tontería, le pones el offset y el tamaño de la frase y te la extrae a un XML que luego se puede insertar. Lo bueno, es que por lo menos en el Ninokuni los textos de los overlays tienen como una especie de patrón y aparecen en bloques, todos juntos y ordenados por longitud por lo que con esta herramienta te saca todas las frases de un bloque (pero le tienes que poner donde comienza el bloque). En resumen, que si quieres mientras se soluciona como descomprimir el Target puedes empezar por los overlays.

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

Mensaje por CUE » 28 Jun 2012, 11:41

La cosa de bajar: http://www.mediafire.com/?s0ndsdkzcuo5awp

Eso extrae la lista de ficheros tal y como la usa Skye (y si no es así, la culpa es de ella, eso está claro). Se junta ndx.exe con Target.ndx y se ejecuta ndx > ndx.txt. Pero como no tenía nada mejor que hacer, he hecho un bat, runme.bat (queda más bonito así que ejecutame.bat, que parece que estamos pidiendo a alguien que nos suicide), que lo hace solito. Y como me aburría he puesto el ndx.txt también. Y como no tenía ganas de nada, he metido el Target.ndx. Como aún seguía sin ganas, he puesto el código fuente. Vamos, que si pongo el ndx.txt todo lo demás hubiese sobrado, pero eso sería hacer las cosas por el método fácil, que no tiene gracia.

Skye
Mensajes: 95
Registrado: 03 Ago 2011, 20:09

Mensaje por Skye » 28 Jun 2012, 13:48

Pues no, no va a funcionar xD

Con esto ya sí: http://www.mediafire.com/?r4pwbbh85l1artj

Ahora también pide el nombre del bin y del idx, con lo que no hay que renombrar nada.

Avatar de Usuario
pleonex
Mensajes: 68
Registrado: 22 Ago 2011, 00:06
Ubicación: Espania
Contactar:

Mensaje por pleonex » 28 Jun 2012, 15:06

En efecto, puedo confirmar que las nuevas herramientas de Skye funcionan ^^ (es gracioso porque se crea también una carpeta llamada Radiant que está vacía, pero así nadie olvida para que juego se hicieron)

Sugieron utilizar tinke ejecutándolo desde la consola de la siguiente forma: "tinke -fld" para poder abrir la carpeta "data" extraída y por ir viendo todos los archivos de forma más cómoda (sobre todo para las imágenes)

El texto se encuentra en data/tbl/ y son archivos sencillos, donde al principio hay una serie de punteros que indican el inicio del texto. El final del texto no está indicada por punteros si no cuando hay un byte 0x00. El texto está en SJIS y los <br> indican un salto de línea (como en HTML).

También veo diferencias en los archivos de texto:
* bible.bin -> Los punteros son de 4 bytes
* fusion.bin -> Los punteros son de 2 bytes

Los archivos .cmp significa que están comprimidos con compresiones de la BIOS estándard. A veces son imágenes en raw y otras son archivos FBIN que son contenedores de archivos 3D

También hay texto en la carpeta event aunque ese no tiene una estructura tan sencilla como los anteriores...

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

Mensaje por CUE » 28 Jun 2012, 15:48

Y digo yo, ¿por qué no está incorporado en los programas esos de la culebrilla la extracción de los nombres de los ficheros? Es una cosa muy simplona, y así no tiene por qué existir esa tabla con todos los nombres.

Skye
Mensajes: 95
Registrado: 03 Ago 2011, 20:09

Mensaje por Skye » 28 Jun 2012, 16:59

Pues eso es pura vagancia por mi parte: ya estaba el txt hecho, y no esperaba que se usara para otro juego tan pronto.

Cuánto aprecio a "la culebrilla" hay por aquí eh... ^^

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

Mensaje por CUE » 28 Jun 2012, 18:54

Y luego me llaman vago a mí...

Pásame los dos csv, uno por cada juego, con los punteros. Así hago pruebecillas y lo meto todo junto

Yo no es que odie a la culebrilla, es que me REVIENTA, con mayúsculas y en itálica para que destaque, tener que poner las cosas identadas al espacio justo para que no se líe el intérprete. La programación nunca ha dependido de la estética, siempre ha sido así. Se nota que quien hizo el Python no estaba acostumbrado a programar, que muchas veces hay que cortar trozos de un programa para ponérselos a otros, y tener que estar mirando si cada línea comienza por un determinado número de espacios es una enorme pérdida de tiempo.

Skye
Mensajes: 95
Registrado: 03 Ago 2011, 20:09

Mensaje por Skye » 28 Jun 2012, 19:11

Qué va, nada supera a cuando decides poner un if o lo que sea al principio de un bloque largo de código y hay que ir indentando cada línea a mano... y si encima hay más bloques indentados de por medio y te lías con la indentación... xD

Aquí tengo el csv del radiant, que del Devil Survivor no tengo ni la ROM, y no la tendré hasta el sábado, porque estoy de viaje con un límite de descarga de 100 megas y la rom pesa unos 104.

http://www.mediafire.com/?6h9xsh2ual2c3f9

El formato es: ruta del archivo,offset en el bin,longitud (si lo dice el idx), offset del puntero en el idx,largo/corto (1 si el puntero es corto, 0 si no)

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

Mensaje por CUE » 28 Jun 2012, 19:19

No, si no necesito los dos, con uno me vale, pero pedir es barato. Es que he intentado poner la culebrilla, y mi ordenata es como yo, que pasa mucho del tema (lo que demuestra lo listo y guapo que es):

Código: Seleccionar todo

E&#58;\testingculos>rhpointers.py
Radiant Historia Pointer Table Generator - Copyright &#40;C&#41; 2012 Skye
Enter output .csv filename&#58; ooo
Traceback &#40;most recent call last&#41;&#58;
  File "E&#58;\testingculos\rhpointers.py", line 115, in <module>
    csvname = str&#40;input&#40;'Enter output .csv filename&#58; '&#41;&#41;+'.csv'
  File "<string>", line 1, in <module>
NameError&#58; name 'ooo' is not defined
Obviamente, y como es de esperar, he ejecutado una cosa que trae el Phyton y que me ha encantado: EL DESINSTALADOR.

Avatar de Usuario
pleonex
Mensajes: 68
Registrado: 22 Ago 2011, 00:06
Ubicación: Espania
Contactar:

Mensaje por pleonex » 28 Jun 2012, 19:23

Te paso yo el del Devil Survivor 2: http://www.mediafire.com/?50896ynm5q4yl93

** Añado **
CUE: A mi me pasaba eso antes hasta que me di cuenta que lo tenía que ejecutar con Python 3 y no la v2.

** Sigo añadiendo **

He probado con el Devil Survivor 1 que tiene lo mismo (además también se llaman Target) y falla al sacar los punteros. Nadie está trabajando en ese juego pero yo lo dejo caer, aquí tenéis los archivos de ese juego:
ndx.txt
Target.idx

Error:

Código: Seleccionar todo

C&#58;\Users\pleonex\Downloads\p>C&#58;\python32\python.exe rhpointers.py
Radiant Historia Pointer Table Generator - Copyright &#40;C&#41; 2012 Skye
Enter output .csv filename&#58; ptr
Enter .idx filename &#40;example&#58; Data.idx&#41; &#58; Target.idx
Traceback &#40;most recent call last&#41;&#58;
  File "rhpointers.py", line 128, in <module>
    bin_pointer = main&#40;line&#41;
  File "rhpointers.py", line 107, in main
    pointer_offset = get_pointer_offset&#40;idx_offset&#41;
  File "rhpointers.py", line 52, in get_pointer_offset
    pointer = int&#40;pointer&#91;-8&#58;&#93;.lstrip&#40;'0x'&#41;, 16&#41;
ValueError&#58; invalid literal for int&#40;&#41; with base 16&#58; ''

Skye
Mensajes: 95
Registrado: 03 Ago 2011, 20:09

Mensaje por Skye » 28 Jun 2012, 20:41

Pues debe haber algo mal en el cálculo de offsets, porque los valores que sí saca están claramente mal. Igual en vez de hacer un AND con 0x7FF lo hace con otro valor, o han cambiado alguna otra cosa. Cuando vuelva a casa me pondré a trazar el assembly a ver qué pasa.
He visto que el DS1 salió en 2009, y tanto el Radiant como el DS2 salieron en 2011. Entonces tendría sentido que el Radiant y el DS2 tengan el mismo sistema.

Claro que igual sólo soy yo que lo he hecho todo mal.

Responder