Después de casi cuatro años de proyecto, la traducción de Boku no Natsuyasumi en español ha concluido.
Este es un proyecto con el que he crecido y, la verdad, las cosas que pueden ocurrir en un periodo de tiempo son muy impredecibles. Por ese motivo, me gustaría recapitular y mostrar las dificultades que se presentaron a la hora de traducir Mis vacaciones de verano.
Recomiendo leer esta entrada en vista de escritorio o en PC.
Índice
- Comienzo
- Texto en vertical
- Fuente de ancho variable
- Conclusión
Comienzo
Regresando al 2021, todavía por los tiempos de la pandemia del COVID-19, decidí adentrarme en este proyecto (juego que desconocía totalmente por aquel entonces) debido a que se veía muy interesante y además muy retador.
El primer obstáculo fue bastante visible, solo hacía falta entrar al juego y ver que las cajas de texto y las letras estaban en una orientación totalmente incompatible con la forma en que escribimos y leemos texto.
Texto en vertical
Tener el texto de manera vertical no era algo factible, por ello el objetivo era modificar la orientación del texto y de la caja de este. Para ello utilicé el depurador gráfico que viene en el emulador PPSSPP.
De primeras, lo importante era poder saber cómo funcionaba la caja de texto y como imprimía la orientación vertical que, por cuestiones intrínsecas del idioma japonés, es de hecho algo bastante común.
Tras un par de horas, pude identificar los valores que asignaban la posición de la caja en la pantalla del juego. En este caso estaba atado a la posición del texto.
Aquí la caja ya estaba tomando forma, sin embargo, la orientación vertical del texto seguía siendo un problema.
¡Al fin! Ya había dado con las instrucciones que definían la orientación.
Mi solución en aquel entonces fue simplemente intercambiar la variable del eje X con el del eje Y.
Visualmente el código sería así:
li v1,0x1D ;# Axis Xli v0,0x1F7 ;# Axis Y
Fuente de ancho variable
El siguiente problema fue la fuente. Si pueden observar las imágenes previas, las letras tienen un ancho fijo entre ellas (16 píxeles originalmente). Esto viene nuevamente de que los caracteres japoneses tienen un tamaño homogéneo en el la mayoría de los casos. Después de revisar alrededor de catorce fuentes distintas en juegos japoneses, solo he encontrado dos casos donde implementaron un ancho variable aunque no se haya usado al no haber salido de Japón.
La solución para esto está en una fuente de ancho variable o VWF por sus siglas en inglés.
El primer intento de insertar texto en español fue este, acá se puede ver bastante claro el ancho fijo que mencionaba anteriormente.
Ya con un texto de muestra más extenso (con referencia a Shin Megami Tensei incluida), coloqué el ancho fijo a unos 8px aproximadamente, para ver qué tal que se leería luego de implementar la VWF.
Sí, falta una n en «Bienvenido».
Ahora, para empezar con la rutina de ancho variable, toca entender un poco cómo funciona. El diagrama se puede explicar de la siguiente forma:
1. La letra (bytes) es leída.
2. Dicha letra, al pertenecer a una colección de más letras (fuente), tiene un ID predefinido.
3. Ahora sumamos el ID a la tabla de anchos. Por ejemplo, si la tabla está ubicada en la posición 0x200 y la letra A tiene el valor 0x10, el resultado sería 0x220 (0x200 + 0x10 = 0x220).
4. Con esta nueva ubicación, podemos cargar el valor que está asignado ahí, este valor es el ancho de la letra actual.
5. El ancho actual se deberá sumar al acumulador de anchos, el cual contiene el valor de los anchos anteriores o cero, si esta es la primera letra.
Después de programar la rutina, es momento de editar la fuente, que, gracias a IlDucci, quedó bastante pulida.
Este fue el resultado final por aquel entonces. El motivo principal por el que se debía editar la fuente, es que esta no contenía todas las letras del alfabeto necesarias para una traducción al español.
Conclusión
Bueno, hasta acá llega esta entrada. Intentaré seguir subiendo otras parecidas y espero que a alguien le haya gustado. 🙇
Créditos a: 堕落王 por corregir la entrada y a Natividad por el garabato de la portada.