Hacer un programa para traducir juegos

Hola.

Tenía algo de tiempo libre, y pensé en hacer un programa por mí mismo en C para traducir juegos de NDS de forma sencilla. Ya traduje dos capítulos de un juego (Miles Edgeworth), descomprimiendo los archivos con DSLazy y creando "una tabla". Entonces, con un editor hexadecimal abría los overlays, y después la tabla. Ya era solo fijarme en no pasarme los saltos de línea y no borrar cosas que no debía tocar.

Pues bien, se me había ocurrido hacer un programa que abriera los archivos del juego y pudiera leerlos. Entonces ir sustituyendo y eso, pero sin editor hexadecimal ni nada... ¿Es esto posible? ¿Alguna idea?

Muchas gracias.

Saludos.
Bueno en el 90% de los juegos es indispensable una tabla tambien es indispensable el uso de hexagecimal para poder ajustar los textos..Lo que podrias hacer es crear una suite de aplicaciones (que sean llamadas cuando se necesiten) para la edicion..
O igual que teniendo la tabla nos permita rastrear el texto y lo reajuste (logico haria que determinar los saltos de lineas y finales de texto (algo asi como el poketext) El problema es que como todos los juegos o tienen la misma base resultara complicado crear una aplicacion "universal"..
Por desgracia para algunos juegos existen herramientas especificas que ahorran bastate trabajo (donde te podrias inspirar) el detalle sera elegir una interfase simple y sin tanta complicacion..
D Gumshoe, no te compliques la vida. Lo que estás intentando hacer es coger unos textos y modificarlos por otros, pero, aparte de que el resultado no va a ser tan bueno como se cree por todo el tema de tener que ajustarte al espacio original y demás chuminadas, ya no estamos en la época de cartuchos limitados de espacio donde había que comerse el coco para poder reinsertar las cosas. Y ya entonces cada uno se trataba de forma diferente, así que hazte una idea.

Tampoco es cierto que en el 90% de los juegos de la DS se necesite una tabla o un editor hexadecimal porque es raro el juego de la NDS que no use una codificación estándar (UTF-8, UNICODE, SJIS), sin necesidad de realizar cambios en los caracteres. Lo normal es que sólo tengas que hacer unas ligeras modificaciones en ciertos caracteres para poder añadir los propios del castellano (acentos, eñes y poco más) si es que no se puede modificar la fuente original del juego, que es el mejor método.

Lo que hay que hacer (lo expliqué en otro post) es, una vez extraídos los ficheros, analizarlos. Si vienen empaquetados hay que intentar desempaquetarlos. Si vienen comprimidos hay que intentar descomprimirlos. Al final, si todo se puede hacer, que siempre hay algún juego que es más puñetero que el resto, te quedarán los textos a traducir perfectamente localizados, siendo mucho más sencillo extraer y reemplazar los textos.

No pienses que una utilidad va a permitir hacer todo eso de forma general. Sí podrás encontrar juegos que usan la misma estructura o muy similar (ahora mismo recuerdo el "Final Fantasy: The 4 Heroes of Light" y el "Nostalgia", que usan exactamente las mismas tools, que son incluso válidas para unos pocos juegos más), pero no es lo más normal. Recuerda siempre que cada juego es un mundo, y lo normal es tratar a cada uno de forma diferente.
Muchas gracias a los dos por vuestras respuestas.

Esta aplicación, aparte de para aprender algo más de programación, la quería hacer porque siempre hay mucha gente dispuesta a ayudar en las traducciones, pero casi nadie sabe insertar los textos ni tiene intenciones de aprender...

Pero bueno, seguiré vuestros consejos.

Muchas gracias.
D Gumshoe escribió:... siempre hay mucha gente dispuesta a ayudar en las traducciones, pero casi nadie sabe insertar los textos ni tiene intenciones de aprender...

Si yo te contara...
Pues si las herramientas tuyas, CUE, que valen para el Nostalgia y unos cuantos más de matrix,
hay algunos japoneses de matrix que no se han mirado, y de otros sistemas que no se si puede valer algo, no sé.

Esta lista es de los desarrollados por matrix, marcados en negrita los que van con tus herramientas al menos confirmados

Alundra PlayStation JP, NA, EU
Nectaris: Military Madness PlayStation JP
Tamago de Puzzle PlayStation JP
Torneko: The Last Hope PlayStation JP, NA
Alundra 2 PlayStation JP, NA, EU
Dual Hearts PlayStation 2 JP, NA
Dragon Quest Characters: Torneko no Daibōken 3 PlayStation 2 JP
Toukon Inoki Michi: Puzzle de Daa! PlayStation 2 JP
Dragon Quest V PlayStation 2 JP
Onmyou Taisenki: Byakko Enbu Bandai PlayStation 2 JP
YūYū Hakusho Forever PlayStation 2 JP
Onmyou Taisenki: Hasha no In PlayStation 2 JP
Futari wa Precure Max Heart: Danzen! DS Nintendo DS JP
Final Fantasy III Nintendo DS JP, NA, EU
Cluster Edge PlayStation 2 JP
Crayon Shin-Chan: Saikyou Kazoku Kasukabe King Wii JP, EU
Lost in Blue 2 Nintendo DS JP, NA, EU
One Piece Gear Spirit Nintendo DS JP
Lost in Blue 3 Nintendo DS JP, NA, EU
Final Fantasy IV Nintendo DS JP, NA, EU
Final Fantasy IV: The After Years Mobile phones, WiiWare JP, NA, EU
Maji de Manabu: LEC de Ukaru - DS Hishou Boki 3-Kyuu Nintendo DS JP
Avalon Code Nintendo DS JP, NA, EU
Nostalgia Nintendo DS JP, NA
Tales of VS. PlayStation Portable JP
Final Fantasy: The 4 Heroes of Light Nintendo DS JP, NA, EU
Final Fantasy Dimensions FOMA 903i, au, iOS, Android JP, NA, EU
No creo que las tools para un sistema sirvan para otro, aunque no sería la primera vez. En este caso sí se pueden usar para varios juegos de la misma consola por lo mismo que he dicho antes, y es que al mirar las estructuras de los ficheros se ve que tienen exactamente la misma, pero no suele ser lo habitual y lo normal es que de unos a otros se mejoren las cosas, cosa que aquí no ha hecho Matrix, lo que hace que tengan parte del trabajo ya hecho, que es lo mismo que decir que se abarata el coste de creación de los juegos. Por eso hay tools, como Tinke, que, dependiendo del juego que sea, hacen una cosa u otra.
Lo que quieres D Gumshoe es del todo posible, el problema es que no se puede hacer nada "estandar" para todos los juegos a tan alto nivel como dices. Hay varias tools estandar pero no llegan a ser más que extractores de texto básicos o modificadores de punteros que ojo, hacen muy bien su trabajo.
Por ejemplo romjuice y ATLAS.

Pero hacer un programa para varios juegos que no tienen nada en común (internamente) no se puede hacer...
Ahora bien, si quieres ayudar a alguien que quiera traducir, siempre le puedes hacer el programita completo sólo para ese X proyecto ^^.
@D Gumshoe, ¿has seguido con el asunto? Es que voy a juntar todo lo que tengo para diferentes juegos y hacer un extractor de textos genérico, que me servirá para que la gente los pueda extraer para una posible traducción. De la resinserción paso pues cada juego tiene unas características que lo hacen imposible, como recalcular offsets, checksums, etc. Si te interesa, dímelo, que esta misma semana creo que tendré todo más o menos hecho.
Eldinen escribió:Lo que quieres D Gumshoe es del todo posible, el problema es que no se puede hacer nada "estandar" para todos los juegos a tan alto nivel como dices. Hay varias tools estandar pero no llegan a ser más que extractores de texto básicos o modificadores de punteros que ojo, hacen muy bien su trabajo.
Por ejemplo romjuice y ATLAS.

Pero hacer un programa para varios juegos que no tienen nada en común (internamente) no se puede hacer...
Ahora bien, si quieres ayudar a alguien que quiera traducir, siempre le puedes hacer el programita completo sólo para ese X proyecto ^^.


Precisamente eso era lo que quería hacer, no para cada juego. Es decir, yo al principio de una traeucción proporciono el programa, y ya después ayudo a traducir, siendo fácil la tarea de insertar para cualquier traductor (y ahorrando mucho tiempo).

anonimeitor escribió:@D Gumshoe, ¿has seguido con el asunto? Es que voy a juntar todo lo que tengo para diferentes juegos y hacer un extractor de textos genérico, que me servirá para que la gente los pueda extraer para una posible traducción. De la resinserción paso pues cada juego tiene unas características que lo hacen imposible, como recalcular offsets, checksums, etc. Si te interesa, dímelo, que esta misma semana creo que tendré todo más o menos hecho.


No he mirado mucho el tema en este tiempo, pero sí que estoy dispuesto a seguir en ello.
Lo de que es fácil insertar es bastante discutible. Precisamente es lo que suele provocar que no se traduzcan muchos juegos o lo que diferencia una traducción decente de una traducción basada en un editor hexadecimal, las que no amplían el número de caracteres de los mensajes, lo que no quiere decir que queden mal, por supuesto.

He estado probando con el Etrian Odyssey III, que es lo último que estaba mirando en DS, y parece que todo va bien pues ya tenía los textos extraídos de antes y así puedo comprobar que lo hace bien. Ahora tengo que cambiar algunas cosillas para meter soporte para más codificaciones y cubrir casi todas las posibilidades (ASCII/byte, UTF-8, UNICODE, Shift-JIS, CP932), y así poder trabajar con textos en cualquier idioma (más o menos como lo hago ahora, pero extrayendo de forma general). También quiero mejorar el uso de DTE y MTE, que no lo toco desde hace dos años, desde el Legend of Mana de PSX, aunque hoy día apenas se usa, pero así se podrá utilizar la tool con más juegos y de más consolas.

Cuando tenga todo lo publicaré en el lado oscuro, para que se pueda aprovechar, aunque se admiten ideas. La tool genérica podrá usarse para extraer los textos de la mayoría de los juegos, y el código fuente se podrá usar para programas personalizados, con simples llamadas especificando una serie de parámetros: tabla a usar, tipo de codificación, offset inicial, longitud, ...

No pretendo sustituir a ningún programa de los existentes, pero siempre me encuentro con que les falta algo que necesito, así que lo hago a "mi manera", basándome en los volcados de textos que he estado haciendo hasta ahora.
10 respuestas