TL;DRPALESTRA es un
TSR que hace un
man in the middle entre el juego y el jugador, para interceptar comandos y mensajes, y traducir comandos
->
y mensajes
->
Todo esto en memoria y transparente para el juego.
jugador <-> TSR <-> juego
es importante destacar que es un man in the middle, es decir, el parser del juego no se toca, para el juego todo sigue estando en
, hay un flujo bidireccional constante, de comandos y mensajes en ingles y castellano, y el TSR traduciendo y dando cambiazos en memoria constantemente.
TSR y
man in the middle, es lo importante, de aqui para abajo es paja.
--
video de ejemplo (
enero 2020)
esos parones (se nota sobre todo en la musica) los causaba nuestro codigo, primitivo como los humanos al nacer, chupaba de la teta de la CPU que no veas
-----------------------------------------
INDICE-----------------------------------------
1. sobre el juego
2. sobre la traduccion
3. nuestra estrategia
4. algunos problemas
5. % progreso
6. TODO/bugs
-----------------------------------------
gracias a cireja por la inspiracion en la estructura del mensaje.
1. sobre el juegoes una vieja (1990) aventura grafica/conversacional para DOS, con una interfaz similar a las primeras aventuras de Sierra, donde los comandos se introducen por teclado, y hay un parser que los interpreta, y movemos al protagonista por la pantalla con los cursores (o el raton).
+ Info
AbandonWiki2. sobre la traduccionbasicamente son dos partes a traducir.
1. comandos que introduce el jugador (parser) y
2. mensajes que muestra el juego, normalmente como respuesta a estos comandos.
y despues tenemos casos especiales como:
-tres animaciones en un formato desconocido, posiblemente ILBM o basado en ILBM.
-botones de menu.
-quizas otras cadenas de los menus (o de otro sitio) que se le escapen al TSR.
3. nuestra estrategia(+) para ir trabajando en la traduccion a gusto, usamos archivos .txt , que luego el TSR usara.
lineas impares en
, lineas pares en
.
(+) para el
parser hemos creado tres diccionarios:
Verbos.txt
Nombres.txt
Preposiciones.txt
los tres van en memoria convencional, y para añadir sinonimos simplemente añadimos nuevas lineas. Ejemplo:
toilet
retrete
toilet
inodoro
toilet
letrina
toilet
water
toilet
vater
(+) para los
mensajes tenemos otros tres txt.
Desc60_umb.txt
Desc61_ems.txt
Subcadena61_ems.txt
umb y ems indica la zona de la memoria donde pondremos las cadenas, y el numero indica el numero de INT. El TSR cuelga una rutina traductora en INT_60 y otra en INT_61. Para que estas rutinas se activen, parcheamos el codigo del juego con llamadas a INT_60 e INT_61.
+ Info:
de dinamitas, mechas y artificieros.
ejemplo de contenido:
Was that sentence missing a verb?
&No le faltar[a un verbo a esa frase?
The * is already open.
%n ya est^ abierto.
gracias a
pakolmo que se ha currado las fuentes modificando los archivos DATAZ.DAT y DATAB.DAT, podemos usar tildes, ñ, ¡, ¿, ü, segun la siguiente tabla
# -> ¡
& -> ¿
^ -> á
] -> é
[ -> í
/ -> ó
{ -> ú
} -> ñ
~ -> ü
podemos usar tambien algunos comodines en los txt.
* cualquier cosa, como el
* del DOS.
%n un nombre
%v un verbo
(+) sobre las animaciones
la rutina que pinta en pantalla esta localizada. El TSR podria infectarla y pintar lo que queramos.
video de ejemplo pintando un bocadillo desde el debugger:
lo ideal seria exportar/importar las animaciones sobre los archivos, pero tenemos una bala en la recamara.
4. algunos problemasel juego no acepta la tecla Ñ
cuando se pulsa una tecla, INT_9 guarda dos bytes en un buffer. Uno es el scancode y otro el ASCII.
el TSR comprueba el scancode, y si es el de la Ñ, cambia el ASCII por el ASCII del caracter ">" (el juego pintara la "ñ" que pakolmo ha dibujado sobre la fuente del juego para ">").
no hay suficiente memoria convencional para todas las cadenas del juego.
&& los programas .COM en DOS tienen un limite teorico de 64 KB.
existe alguna tecnica curiosa, que se aprovecha de como funciona la memoria segmentada del DOS (segmentos de 64 KB que se "solapan" parcialmente), y colocando el programa ~"en medio", podemos direccionar ~128 KB. La documentacion de A86 describe un metodos parecidos. Como PoC esta bien, pero se complica, asi que dejamos el TSR en su segmentito de 64 KB y alojamos los mensajes en memoria EMS y UMB.
umb: memoria alta, espacio que va desde los 640 KB hasta el primer MB de memoria, en los bloques UMB libres que el TSR es capaz de encontrar.
ems: ocupamos 1 segmento de 64 KB de memoria expandida.
cada vez que cambiemos algo de la traduccion, convertir los .txt puede ser una fiesta.
dos cutrescripts en bash: src/scripts/txt.sh y src/scripts/hexpos.sh
5. % progresoparser: 90 %
mensajes: 90 %
animaciones:
0 % 33% en PALESTRA v0.2 (muy pronto sera publica)
botones: 100 %
pruebas: vamos haciendo.
las cadenas estan traducidas todas (o el 99%) en archivos txt
el juego esta crakeado (ya existia crack) y la traduccion usara la v2.0 (la ultima que sepamos).
hemos introducido algunos huevos de pascua, que aparecen si el comando introducido contiene ciertas palabras clave
6. TODO/bugs1. bug: "dejar objeto" + "mirar" -> no se traduce completo.
2. simplificar mensajes de conversaciones: definir solo "Said to %n/Hablando a %n" o similar.
3. eliminar lista de nombres de Desc60_umb.txt
4. tecla Ñ. Añadir sinonimo dream/sueno en Nombres.txt5. parser: implementar deteccion de plurales, y asi poder definir solo singular en diccionarios.
Solucionaria el bug smell bernardo.jpg y similares. <-- no hay deteccion de plurales, pero ese caso concreto esta solucionado.
6. bug: bajar helmut por desague -> lower helmut about drain. <-- hecho solo para este caso concreto.
7. bug: en pantalla de elefantes, "dejar pala" sin tener la pala cuelga el juego. fixed
8.
bug extraño que no entra en ningun punto anterior: ensenar bufanda.png y quizas otros.
9. eliminar rutina CHAPUZA y limpiar el codigo todo lo posible.
10. bug: deteccion y reserva segmento EMS: esta pillando el caso fallback (variable a fuego)11. INT_9: si es intro, no llamar al parser si estamos en los menus. Fixes: nombre_savegame "hola mundo que tal" se quedaba en "tal". <-- hecho en PALESTRA v0.2
12. tfc,
tocar/play/touch guitarra/lagartija13. revisar Nombres.txt, Verbos.txt, preposiciones.txt y parser para que el juego en castellano sea lo mas natural posible.
14. animaciones <-- 33% (intro traducida) en PALESTRA v0.2
15. pruebas
==creditostraductores: pakolmo y danstructor
fuentes de letra: pakolmo
codigo: gatuno
==descargas1. Solo traducción (binarios y código fuente)2. Juego ingles v2.0 original de Archive3. Juego con traducción aplicada (v2.0 original de Archive + traduccion -binarios y codigo fuente-)Para versiones STEAM y GOG (y mirror) visitar
https://pakolmo.netlify.app/LesManley.htmPreinstalado de cireja, preconfigurado con sonido MT32
Les Manley in - Search for the King - DOSBox.7z (3,19 MB) -- Desprotegido y traducción aplicadapor supuesto se incluye el codigo fuente en ensamblador, los diccionarios y un par de scripts auxiliares. Todo un poco quick&dirty aun, pero el juego ya es completable en castellano. Para jugar la opcion mas rapida es bajarse el paquete 3, y en dosbox ejecutar RUNME.BAT y a jugar. + Info en el README.TXT y en
la noticia de la tradu.
yo quiero dedicar la traduccion a mi gato Lino, que nos dejo el mismo dia que se subio la traduccion a internet, el 18 de abril de 2021. Al final encontre al Rey. Buen viaje y pechuga de pavo. Te queremos.
el codigo que gestiona la memoria UMB es de Ciriaco Garcia de Celis.
parte del codigo que gestiona la memoria EMS viene del virus Eat the Ritch, escrito por SX/NuKE. Codigo fuente en ensamblador:
http://zen7.vlan7.org/file-cabinet/EATRICH.ASMde danstructor, gatuno y pakolmo para abandonsocios, que la disfruten.
Viene de
este hilo.
@pakolmoHe hecho un TSR. No estoy seguro de que sea la solucion simple, pero por ahora es lo que se me ha ocurrido.
Bajate este archivo:
http://www.mediafire.com/file/20yohaampzk9a2o/PAKOLMO.COM/fileCopialo a la carpeta del juego, ejecuta PAKOLMO.COM y despues ejecuta el KING.BAT del juego.
Y aceptara el verbo MIRAR a secas.
Me quedarian por hacer dos cosas.
1. Que acepte verbo+nombre, por ejemplo "mirar escritorio" o como traduzcas cada cosa.
2. Añadir el resto de verbos/nombres.
Pues na, si te va bien asi seguimos.