Juego sin fuentes de ancho variable (?)

Lugar donde se intentarán resolver problemas específicos
Responder
Avatar de Usuario
Leeg
Mensajes: 379
Registrado: 20 Mar 2014, 00:25

Juego sin fuentes de ancho variable (?)

Mensaje por Leeg » 12 May 2014, 00:55

¡Hola!

Os planteo una duda que me ha surgido hoy cotilleando algunas ROMS de NDS.
Me ha entrado la curiosidad romhackeril por mirar Xenosaga I&II de NDS. Y he visto que el juego tiene hasta cuatro fuentes.

1.- Fuente que solo contiene los nombres de los personajes están aquí:data\1\font\

[img]http://i.imgur.com/O2cbGnr.png[/img]

2.- Fuente debug del juego (no contiene kanas + kanjis): \data\0\dbgfont

[img]http://i.imgur.com/8d4pMuQ.png[/img]

3.- Fuente que se usa cuando escribes caracteres occidentales (no contiene kanas): \data\0\lcfont6x11.dat

[img]http://i.imgur.com/RBrU6JF.png[/img]

4.- Fuente principal del juego (contiene abecedario occidental [¿no se usa?] y kanas) \data\0\LD937714.DAT

[img]http://i.imgur.com/axcaDKO.png[/img]


Al principio pensaba que en la última fuente, la barra de píxeles pintada encima de cada carácter representaría su ancho (ojalá), pero he probado a editarla y no hay cambios... vista con un editor hexadecimal parece que solo se trata de un número HEX que identifica el carácter con un HEX. Empieza en 8140 y asignando 1 valor más a cada carácter llega hasta EAFC.

El caso es que ninguna de ellas tiene para definir los anchos por ningún lado... y dado que escribiendo la letra "i" en todas ellas siempre tiene el mismo ancho que el resto de caracteres... esto me hace pensar que ninguna de las fuentes es de ancho variable.


¿Puedo estar en lo cierto?

Un saludo

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

Mensaje por CUE » 12 May 2014, 07:49

Los 2 bytes que hay antes de cada carácter son el código SJIS, así se evitan hacer una tabla de conversión, y es la razón por la que verás muchos saltos entre ellos, que no están seguidos como dices.

Lo del ancho variable es fácil de saber: si durante el juego no se ve es que no tiene. Es simple :)

Muchos juegos están así porque en japonés no existe el VFW.

Avatar de Usuario
Leeg
Mensajes: 379
Registrado: 20 Mar 2014, 00:25

Mensaje por Leeg » 12 May 2014, 13:04

Vaya, pues qué mala pata xD

Si se tradujera este juego así quedaría horrible.

Gracias por la respuesta ;)

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

Mensaje por CUE » 12 May 2014, 13:25

Que va, quedaría como muchos, y el mayor problema es ver si hay suficientes caracteres por línea para poner las cosas en condiciones :)

Como el ancho sólo interesa para los diálogos, pues bastaría con buscar dónde se escriben y ver si se puede hacer que lea datos de una tabla antes de mostrar el carácter. Pero eso no funciona si el juego trata a los caracteres como tiles completos, colocándolos tal cual están en las posiciones 0-31 de la ventana. Para poder aplicar el ancho se necesita que se traten como sprites, o algo similar, que permita poner un tile en una posición 0-255 (no recuerdo exactamente si ésas son las medidas de NDS, pero creo que se entiende),

Avatar de Usuario
Leeg
Mensajes: 379
Registrado: 20 Mar 2014, 00:25

Mensaje por Leeg » 12 May 2014, 13:43

Creo que una solución chapucera sería utilizar la tercera fuente, que tiene un ancho normal, y cargarse ahí algunos caracteres que ya están en la cuarta fuente, como los () o []. Aun así las í e ¡ se verían raras, pero es lo más decente que podría quedar. Lo que no queda para nada bien, que ya lo he comprobado xD es añadir caracteres tildados a la cuarta fuente, porque cuando escribes directamente con el abecedario occidental en los textos del juego no sale la cuarta sino la tercera, y si combinas ambas fuentes queda horrible porque tienen anchos distintos.

Por cierto, este juego tampoco tiene punteros en el texto, tiene un hex que determina la longitud antes de cada línea (va por líneas y no por cajas), como el mago de oz, pero más simple. (Los textos están en 'data/0/maptool')

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

Mensaje por CUE » 12 May 2014, 13:54

Yo es que no he visto el juego, así que no puedo decirte cómo quedan las cosas. Si se usan las dos últimas fuentes se puede hacer lo que dices, pero no debe ser tan complicado como lo estás encontrando.

Eso que cuentas de que te escribe con la tercera fuente en vez de usar la cuarta es porque estarás usando mal los códigos. Si cambias el 8140, por ejemplo, por 'á', te deberá salir 'á' cuando uses el código 8140. Me da la impresión que estás intentando poner la 'á' directamente, como si fuera ASCII, y ahí es donde esta´tu error. Por lo que comentas, parece que el juego usa el codepage CP932, con una parte ASCII de 1 byte y la otra SJIS de 2 bytes. Haz la prueba, por si es algo de eso.

Avatar de Usuario
Leeg
Mensajes: 379
Registrado: 20 Mar 2014, 00:25

Mensaje por Leeg » 12 May 2014, 14:45

No no, si precisamente sucede lo que tú dices (me explico de pena xD).

Añadí caracteres tildados para probar y los puse con los valores hex que había reemplazado de caracteres japoneses, por ejemplo: 829F es mi á. La cosa es que cuando escribes un carácter occidental de la tercera fuente (escribiendo directamente la letra en el archivo hexadecimal, es decir, escribiendo una "b", por ejemplo) y después al lado le pones un carácter de la cuarta fuente (como el 829f que te decía, escribiéndolo como hex) sale horrible porque queda algo así:

[img]http://i.imgur.com/3cpxyPX.png[/img]

Ahí tenemos á é a ó

Las que tienen tilde son de la cuarta fuente, escritas como valores hex, claro. La que no tiene tilde, la "a" está escrita directamente (hex 61) y la coge de la tercera fuente.

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

Mensaje por Wastor » 12 May 2014, 15:24

Yo que pasaba por aquí, ¿sabéis que hay un proyecto en inglés?

http://aerie.wingdreams.net/?p=250

Así que la fuente en el juego al menos sí es VWF o se puede adaptar, tanto no puedo aventurar. Es de esos juegos que espero con ansias ya que no me llevo bien con el japonés :lol:

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

Mensaje por CUE » 12 May 2014, 15:25

Ah, ahora entiendo. Lo que queda mal es la mezcla de ambas fuentes. Algo obvio, pues una es de tiles de 8 pixeles y la otra de 16. La verdad es que usar el set de 16 pixeles no es aconsejable porque limita mucho el número de caracteres por línea.

He puesto el juego y me he fijado que en realidad usa 6 de los 8 pixeles de una fuente y 12 de los 16 de la otra (más o menos), creando el texto a mostrar en una de las zonas de background de la VRAM, que es lo mejor que puede hacerse y lo que más te puede interesar. Eso significa que el juego copia ese número de pixeles de los tiles. Ahora sólo es cuestión de mirar dónde lo hace y hacer un sencillo parche para que coja los anchos de una tabla en vez de usar esos valores fijos. He intentando usar el debugger del no$gba pero éste es uno de los juegos que no va, y es que Murphy siempre tiene que hacer de las suyas. Con DeSmuME me lío, así que "tó pa ti".

Eso sí, con el método tradicional puedes usar caracteres de 8x8 no usados (@#...) y poner en ellos las vocales acentuadas. No creo que dé para las mayúsculas, pero menos es nada, y así te evitas parchear el código.

Por lo que parece, el juego pone los nombres en los diálogos con la fuente de 8x8. La primera fuente que has indicado en realidad son textos gráficos, los de los nombres de la cabecera de los bocadillos de los diálogos, así que no se puede considerar como fuente.

Avatar de Usuario
Leeg
Mensajes: 379
Registrado: 20 Mar 2014, 00:25

Mensaje por Leeg » 12 May 2014, 15:50

@Wastor no conocía ese proyecto, he visto varios abandonados pero ese justamente no. Parece que ellos están usando otra fuente, porque la "i" les sale sin el espacio de 8x8 (además estoy viendo que los caracteres no están dibujados igual).

@Cue, efectivamente, la "fuente" con los nombres de los personajes es un gráfico, sí. Respecto a lo otro que me comentas, dado que no tengo los conocimientos necesarios y de momento esto no va a dar para más, creo que voy a tener que dejarlo a un lado. Gracias igualmente :D

De todas formas esto era más que nada por curiosidad, como me pasé en su día los juegos de PS2 quería mirar como estaba el de NDS. Si algún día me da por ponerme en serio haría lo que ya he dicho, supongo, editar la 3era y cargarme ahí cosas que no se usen.

PD: ¿Alguna vez habéis usado mayúsculas acentuadas? Yo jamás, y eso que las añado siempre, pero creo que ya no lo voy a hacer hasta que surja la necesidad imperiosa de ello XD

Avatar de Usuario
Lukas
Traductor compulsivo
Traductor compulsivo
Mensajes: 531
Registrado: 10 Dic 2012, 17:51

Mensaje por Lukas » 12 May 2014, 16:34

Pues a mí siempre me aparecen en los scrips que traduzco, ya sea para Él o Últimamente, suelo usarlas mucho.
O en enemigos o nombres como Águila...
O si hay personajes que les da por hablar todo en mayúsculas.
Total, que cuando no las logro insertar y las busco resulta que las he usado todas :cry:

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

Mensaje por CUE » 12 May 2014, 16:37

Joer, con eso de escribir casi al tiempo se me pasó el mensaje de Wastor.

Pues sí que estoy yo cojonudo, resulta que llevo meses hablando con Kingcom para incorporar mejoras al ARMIPS y nunca me había fijado que le está dando caña a este juego. Si ha puesto una fuente en condiciones, habla con él, que es uno de los mejores romhackers de la scene y eso es garantía de que no ha hecho ninguna chapuza.

Lo de las mayúsculas acentuadas: pues sí las uso. De hecho, en más de una ocasión he tenido que usar la "Ñ", que no tiene otra forma de hacerse, y la "Ü" ("ungüento", en mayúsculas, todavía me acuerdo). El resto siempre he procurado no usarlas a no ser que sea imperativo, como ahora en el Zelda de SNES con los nombres de los objetos. Pero en diálogos siempre busco una alternativa porque las mayúsculas acentuadas, con eso de que hay que recortar pixeles, no suelen quedar muy bien.

Avatar de Usuario
Leeg
Mensajes: 379
Registrado: 20 Mar 2014, 00:25

Mensaje por Leeg » 12 May 2014, 16:41

Vaya, pues parece que a vosotros si os han salido casos, claro que habéis hecho infinidad de cosas más que yo :D

Una pregunta CUE, es que no conozco el mundillo este demasiado... ¿Ese tal Kingcom es throughhim413 el de la traducción al inglés del "Tales of Innocence" en absolute zero translations? Es que he visto que enlazan como proyecto suyo a ese. ¿O son personas distintas? XD No me aclaro.

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

Mensaje por CUE » 12 May 2014, 16:46

Son gente distinta. throughhim413 ha hecho cosas con Gemini y Kingcom para alguno Tales. Sé que Kingcom le propuso traducir uno de los Tales de NDS, y luego creo que colaboraron en el otro que hay.

Avatar de Usuario
Leeg
Mensajes: 379
Registrado: 20 Mar 2014, 00:25

Mensaje por Leeg » 12 May 2014, 16:48

Ah vale, vale. Es que de esa traducción de Tales of Innocence me sorprendió muchísimo una cosa que hicieron: en la intro del juego sale un vídeo y le añadieron subtítulos tipo karaoke desactivables y todo pulsando un botón en la consola. No sabía que se podía manipular hasta tal punto una ROM, me quedé bastante flipado XD (ignorante de mí)

Responder