Extracción de ficheros para "Baten Kaitos Origins"

Lugar donde se intentarán resolver problemas específicos
Responder
Avatar de Usuario
gadesx
Administrador
Administrador
Mensajes: 1984
Registrado: 24 Ene 2011, 16:43
Ubicación: El puche
Contactar:

Mensaje por gadesx » 20 Mar 2011, 14:45

CUE escribió:Por lo que a mí respecta, este juego deja de tener relación conmigo hasta que no aclares los líos en los que me metes. No es la primera vez que haces que algunos de tus amigos me ataquen sin motivo, y, hasta que no lo aclares, poco más haré contigo, por no decir nada.
No te he metido en nada, solo he comentado en CC lo que le pasó
en el blog del Tio Victor (haciendo un quote de lo que el posteo así que nadie te menciona, no se porque siempre te dan porculo cuando pasa algun problema con alguien creen que tú eres el responsable)

A ver gente que me leeis y alguno sereis el que le da el coñazo a CUE,
¿se le nombra a él como el responsable de que no salga el blog del tio victor en google? por esa regla de la suposición yo podria ser el papa juan pablo segundo, o michael jackson reencarnao, hay quien le gusta malmeter vamos.

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

Mensaje por CUE » 20 Mar 2011, 17:39

No, gadesx. Ya sabes que no voy a mandarte a tomar por el c*l* porque sé que no lo haces con malicia, pero lo que no puedes es ir y mezclar churras con merinas. Si quieres dar una noticia en tu otra web, primero entérate de las cosas, pero no mezcles cosas que no tienen nada que ver, que luego salen los de siempre, y esto hace meses que dejó de ser simple casualidad, para intentar asociar los problemas de otros conmigo, queriendo, directa o indirectamente, relacionarme con todo lo malo que pasa. Ahora explico un poco mejor ese "supuesto" robo de traducción del Fragile en la noticia de portada, pero ya sabes que no hace mucho, y precisamente también con el Baten Kaitos, ya hubo problemas, y tampoco es casualidad que fuese en la misma web ni que fuese gente del mismo grupo, la Caverna de Ali Babá y los 40 Ladrones. Entonces ya te dije que era tu web y que tú eres el responsable de ella, y que a la próxima empezaba a cortar el grifo. Aunque me duela, eso es lo que voy a hacer con este juego, olvidándome de él y de los programas que he hecho para él, pues no voy a dejar que continuamente se me esté atacando por cualquier motivo. Tú eres el responsable de tu web y tú serás quien pague las consecuencias, pues no voy a estar ayudándote para que permitas, por acción u omisión, que tus "amiguitos" sigan con la misma historia.

Por si alguien tiene aún alguna duda, no tengo ningún problema con gadesx, seguiremos haciendo cosas juntos, pero este proyecto, en lo que a mí respecta, ha muerto.

Avatar de Usuario
gadesx
Administrador
Administrador
Mensajes: 1984
Registrado: 24 Ene 2011, 16:43
Ubicación: El puche
Contactar:

Mensaje por gadesx » 02 Jun 2011, 09:01

Hace tiempo pero queria fisgonear los archivillos,
¿alguien sabe cual es el archivo que en teoria hay que actualizar
con el tamaño de las frases? No se si será el mismo del FD pero por examinarlo
con el windhex por probar...

Avatar de Usuario
gadesx
Administrador
Administrador
Mensajes: 1984
Registrado: 24 Ene 2011, 16:43
Ubicación: El puche
Contactar:

Mensaje por gadesx » 03 Jun 2011, 15:57

el_capo escribió:Lalalalala, ¡venga, un poco de felicidad y menos lloros!
XDDD
es que verás, el otro dia con 39 de fiebre se me ocurrió probar
traducir diferentes textos de diferentes partes del juego sin cambiar
el ancho de los mensajes a ver si me salian codigos raros o no,
bueno hoy he probado y

[img]http://s1.postimage.org/5e8s2cr0p/GK4_E01_1.png[/img]

tira, tira, lo único que hay que adaptarse al texto, lo bueno es que no
tiene un texto muy limitado como en algunos juegos y así es traducible,
pero claro, me gustaría saber si es posible meter textos mas largos, que
fichero examinar. No sé como irán, si viene en el archivo
nº mensaje - caracter de salto de linea/fin de mensaje, ni idea pero si pudiese hacerme una idea e ir probando,
si cada mensaje tuviese un numero de id seguido del limite de caracteres pero como seguro que va a ser que tenga que ir mirando frase, contar caracteres y actualizar el archivo, eso es mortal para hacerlo a mano XD

Avatar de Usuario
gadesx
Administrador
Administrador
Mensajes: 1984
Registrado: 24 Ene 2011, 16:43
Ubicación: El puche
Contactar:

Mensaje por gadesx » 03 Jun 2011, 18:28

a veces si, es que el ingles es bastante americano y a veces reiteran mucho para
decir algo mas corto XD

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

Mensaje por CUE » 14 Sep 2011, 08:38

Como Sky me dice que ya ha sacado la tontería de los punteros libero el Código fuente.

En el programa hay unas líneas con comentarios donde debe ir la actualización. Tal y como está ahora, y si, como es de esperar, es igual que en el Fragile Dreams, pues todo lo demás es idéntico, tan sólo hay que poner el nombre del fichero, el offset, el tamaño de la estructura y la posición del puntero dentro de la estructura. Es decir, poniendo esos 4 valores ya debería actualizar bien. Ya dirá Sky qué valor tienen:

Código: Seleccionar todo

//-----------------------------------------------------------------------------
// actualización de punteros:
// - NAME: nombre del fichero que lleva los punteros a las secciones
// - OFFS: posición de inicio de la estructura de los punteros
// - SIZE: longitud de la estructura de los punteros
// - INCR: posición del puntero en la estructura de los punteros
//-----------------------------------------------------------------------------
// cabecera en el Fragile Dreams (valores en little endian):
// - 4 bytes con el número de textos de la sección
// - 4 bytes con la longitud de la sección + X (X = 8 + 0x2000)
// por cada puntero en el Fragile Dreams (8 bytes de estructura): (OFFS = 8)
// - 4 bytes con el identificador
// - 4 bytes con el offset (SIZE = 8, INCR = 4)
//-----------------------------------------------------------------------------
// ficheros de Fragile Dreams (fichero de textos y fichero de punteros):
// - FILE_60001060 + FILE_60001068
// - FILE_60001061 + FILE_60001069
// - FILE_60001062 + FILE_6000106A
// - FILE_60001063 + FILE_6000106B
// - FILE_60001064 + FILE_6000106C
// - FILE_60001065 + FILE_6000106D
// - FILE_60001066 + FILE_6000106E
//-----------------------------------------------------------------------------
//  FILE *fp2;
//
//  tmp = Swap4((unsigned char *)&position);
//
//  if ((fp2 = fopen(NAME, "r+b")) == NULL) { printf("Open error\n"); exit(1); }
//  if (fseek(fp2, OFFS + SIZE * section + INCR, SEEK_SET)) { printf("Seek error\n"); exit(1); }
//  if (fwrite(&tmp, 1, 4, fp2) != 4) { printf("Write error\n"); exit(1); }
//  if (fclose(fp2) == EOF) { printf("Close error\n"); exit(1); }
//-----------------------------------------------------------------------------
Las últimas 6 líneas son las que activándolas hacen la actualización. No era tan difícil, y ha tenido que venir Sky a hacerlo cuando cualquiera que se hubiese molestado lo podría haber sacado. Es decir, dificultad=0, como podrá corroborar Sky.

Avatar de Usuario
SkyBladeCloud
Mensajes: 41
Registrado: 26 Ene 2011, 13:14
Ubicación: Sky´s Romhacking Nest

Mensaje por SkyBladeCloud » 14 Sep 2011, 15:47

Si, y de hecho como a peña les gustan las cosas fáciles:

[img]http://img830.imageshack.us/img830/4148/unledoey.png[/img]

[img]http://img193.imageshack.us/img193/7407/asdqjn.png[/img]

[img]http://img560.imageshack.us/img560/6696/63382003.png[/img]

Aún tengo que pulir un poco el editor, y ponerle un par de pijerías; pero tal y como está podría traducirse el juego a tope!....

A ver si aparece gadesx... Lol ahora que no me haga el avión jajaja xD
No era tan difícil, y ha tenido que venir Sky a hacerlo cuando cualquiera que se hubiese molestado lo podría haber sacado. Es decir, dificultad=0, como podrá corroborar Sky.
Si es que nos dejan todo el trabajo (-_-") :/ xD

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

Mensaje por CUE » 14 Sep 2011, 15:51

Luego, cuando terminé el partido donde España va a dar una paliza a Eslovenia, comento unas cosillas por si pueden servirte de ayuda.

Avatar de Usuario
gadesx
Administrador
Administrador
Mensajes: 1984
Registrado: 24 Ene 2011, 16:43
Ubicación: El puche
Contactar:

Mensaje por gadesx » 14 Sep 2011, 16:14

Dios tio eso se ve tremendo! Es lo que necesitaba para volver a las traducciones! XD

Avatar de Usuario
josekenshin
Mensajes: 299
Registrado: 28 Ene 2011, 21:03
Contactar:

Mensaje por josekenshin » 14 Sep 2011, 17:58

Ufff!

¡Con eso gadesx no tienes excusa XD!

¡Ojalá tuviera una herramienta así para el Lunar o el ATL2!

Saludos! :D

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

Mensaje por CUE » 14 Sep 2011, 19:31

86-64, así que ahora a esperar a Lituania en semifinales, que los Macedonios no me gustan.

Unas cosas antes de empezar a criticar, que para eso me pagan. Bueno, no me pagan, pero me divierto igual.

Lo que puse antes era un copy&paste de unas cosas del Fragile, así que ahora hay que ponerlas en condiciones. Lo que pongo como OFFS en realidad debería apuntar al principio del fichero, siendo 0x08 el offset donde empiezan los punteros, después de los 8 bytes de la cabecera. Donde indico "textos de la sección" quiero decir "secciones del fichero", que lo que copié hacía referencia a las líneas textos, no a los punteros de las secciones. Así que ahora quedaría así:

Código: Seleccionar todo

//-----------------------------------------------------------------------------
// cabecera en el Fragile Dreams (valores en little endian):
// - 4 bytes con el número de secciones de texto
// - 4 bytes con la longitud del fichero de secciones + X (X = 8 + 0x2000)
// por cada puntero en el Fragile Dreams (8 bytes de estructura): (OFFS + 8)
// - 4 bytes con el identificador
// - 4 bytes con el offset (SIZE = 8, INCR = 4)
//-----------------------------------------------------------------------------
(obviamente, habrá que quitar los '//')

'position' hace referencia a las líneas de diálogo, que es de donde lo cogí. En realidad debe ponerse el offset del fichero binario. Además hay que indicar que el inicio de los punteros está en 'OFFS + 8':

Código: Seleccionar todo

//-----------------------------------------------------------------------------
//  FILE *fp2;
//
//  tmp = ftell(fp);
//  tmp = Swap4((unsigned char *)&tmp);
//
//  if ((fp2 = fopen(NAME, "r+b")) == NULL) { printf("Open error\n"); exit(1); }
//  if (fseek(fp2, OFFS + 8 + SIZE * section + INCR, SEEK_SET)) { printf("Seek error\n"); exit(1); }
//  if (fwrite(&tmp, 1, 4, fp2) != 4) { printf("Write error\n"); exit(1); }
//  if (fclose(fp2) == EOF) { printf("Close error\n"); exit(1); }
//-----------------------------------------------------------------------------
Fallos normales, pues nunca probé el código.

También falta una parte, la actualización de la longitud del fichero de secciones + X. El juego carga el fichero de punteros y el fichero de secciones. Los punteros siempre tienen espacio para 1024 (1024 * 8 = 0x2000 en hexadecimal), a los que hay que añadir los 8 bytes de la cabecera. De ahí que indique eso de "X = 8 + 0x2000)". Esto se puede poner en la función 'Extract' justo después del:

Código: Seleccionar todo

  ExtractSection(0, 0);
y quedaría así:

Código: Seleccionar todo

  ExtractSection(0, 0);

//-----------------------------------------------------------------------------
//  FILE *fp2;
//
//  tmp = ftell(fp) + 0x2008;
//
//  if ((fp2 = fopen(NAME, "r+b")) == NULL) { printf("Open error\n"); exit(1); }
//  if (fseek(fp2, OFFS + 4)) { printf("Seek error\n"); exit(1); }
//  if (fwrite(&tmp, 1, 4, fp2) != 4) { printf("Write error\n"); exit(1); }
//  if (fclose(fp2) == EOF) { printf("Close error\n"); exit(1); }
//-----------------------------------------------------------------------------
Podría hacerse más sencillo, pero paso de andar toqueteando nada.

Con todo eso el proceso queda casi exactamente que como se hace con el Fragile Dreams. Las dos únicas diferencias son:
- el offset inicial (OFFS) del fichero varía, pues para el Fragile siempre es 0 ya que va en ficheros individuales
- en el Fragile cada sección lleva 8 bytes más para indicar su tamaño y el lenguaje que se va a usar
Todo lo demás es 100% idéntico y se podría usar el código puesto o el programa usado con el Fragile ya modificado para tener en cuenta esas dos diferencias. No merece la pena el último caso pues en el Baten sólo hay que trabajar con un fichero de textos, no como con el Fragile, que eran una docena, y cambiar algo para manejar un sólo fichero es tontería.

Creo que todo lo demás ya lo hemos hablado por el mesene, y sólo quedaba lo de la longitud.

Ahora la parte menos grata: las críticas, espero que constructivas. Cometes el mismo fallo que cometemos todos cuando hacemos un programa, y es que lo hacemos con nuestra mentalidad, sin tener nada más en cuenta. ¿Qué quiero decir con esto? Pues que muchas veces no pensamos en lo que tienen que hacer los traductores, que ése es un trabajo que no va con nosotros. Por ejemplo, una vez traducido parte del juego, nos damos cuenta que hay que cambiar una palabra porque la hemos puesto mal, por ejemplo, hemos puesto "Espada Grande" y nos damos cuenta ahora que hay que poner "Espada Larga". Tal y como lo estás haciendo hay que ir una por una mirando todas las líneas para poder cambiarlo, lo que es un auténtico coñazo. Es mucho más sencillo sacar todo en un fichero de texto plano, y con un simple "Reemplazar" que llevan todos los editores se puede hacer en menos de 1 segundo. Eso cuando se empieza a traducir, que cuando llega la fase de revisión tenemos que ir buscando línea por línea hasta encontrar la que queremos modificar. Puede arreglarse poniendo una función de búsqueda, pero eso lo hacen los editores de texto y no hay razón para programas algo que ya se puede hacer. Y otra cosa que acelera mucho la traducción es ver varios textos a simple vista, que hace que no nos perdamos y podamos seguir la historia, con la ventaja, además, que con unas simples teclas podemos movernos arriba y abajo para ver más texto. Esto se nota mucho en casos como éste, con miles de líneas de texto.

Conclusión: queda más bonito hacer las cosas a nuestra manera, que los traductores son todos unos lentorros que no sirven 'pa ná' (espero que no me lea ninguno), pero se les puede quitar semanas de trabajo dándoles unos simples ficheros de texto plano. Tü verás si merece la pena que se lo hagas como lo tienes, que yo me sé de un gadesx que rara es la vez que no hace un "Reemplazar" sobre todo el contenido de un fichero.
josekenshin escribió:Ufff!

¡Con eso gadesx no tienes excusa XD!

¡Ojalá tuviera una herramienta así para el Lunar o el ATL2!

Saludos! :D
Te [s]jodes[/s] fastidias. Haberlas pedido en su momento, que siempre esperáis a que los demás nos movamos, así que ajo y agua. Y además pones el tabaco y las cervezas. :twisted:

Avatar de Usuario
SkyBladeCloud
Mensajes: 41
Registrado: 26 Ene 2011, 13:14
Ubicación: Sky´s Romhacking Nest

Mensaje por SkyBladeCloud » 14 Sep 2011, 20:30

Si, ya lo había pensado y creo que hasta se lo llegué a comentar a gadesx, lo que no me gusta de exportar a texto plano es que en este caso concreto,
el texto de la historia no usa cambios de línea (sino que el juego los coloca según le parezca conveniente), mientras que muchas misceláneas si que los tienen,
lo cual resultaría en una parte de texto algo disonante con respecto a otra.

De todos modos no hay fallo, se pone un borón de exportar/importar TXT y vía, de hecho la aplicación original es lo que hacía (solo que en la GUI lo que hago es
mostrarlo en un TextBox de forma ordenada, en lugar de escribirlo en un fichero todo junto).

Veremos que dice gadesx, ahora debe andar probando la aplicación (o traduciendo el juego, no estoy muy seguro xDDD).

~Sky

Avatar de Usuario
gadesx
Administrador
Administrador
Mensajes: 1984
Registrado: 24 Ene 2011, 16:43
Ubicación: El puche
Contactar:

Mensaje por gadesx » 14 Sep 2011, 22:01

Mientras lo que ya he traducido sirva por mi perfecto xD

Sí, creo que un exportar/importar TXT sería mas facil que recrear en el
mismo programa todas las funciones de un wordpad, además me vendria de perlas para mandarle textos a revisores.

Avatar de Usuario
SkyBladeCloud
Mensajes: 41
Registrado: 26 Ene 2011, 13:14
Ubicación: Sky´s Romhacking Nest

Mensaje por SkyBladeCloud » 15 Sep 2011, 00:23

Pues ya está; Gadesx, te dejo en link en el chat, no vaya a ser que te roben el proyecto, y luego me echen la culpa jajaja :P

Recuerda, prueba y eso... que yo estas cosas no las suelo testear a consciencia.

Avatar de Usuario
josekenshin
Mensajes: 299
Registrado: 28 Ene 2011, 21:03
Contactar:

Mensaje por josekenshin » 15 Sep 2011, 00:48

CUE escribió: Te [s]jodes[/s] fastidias. Haberlas pedido en su momento, que siempre esperáis a que los demás nos movamos, así que ajo y agua. Y además pones el tabaco y las cervezas. :twisted:
Jaja con lo que me habéis ayudado los dos no puedo pedir más coño!!!

Como estoy ya me apaño, las comodidades van bien, pero a mano sale todo también jeje :D

Responder