Hasta ahora creo que NADIE había conseguido meterle los textos de español (cogidos de la version de PSX) al MGS de PC de forma correcta. He visto varios posts en distintos foros sobre este tema y todos han acabado abandonando el proyecto porque al poner los textos de español en la version PC, ya no se escuchaban las voces. Bien, después de dedicarle todo el tiempo que estuve por casa el fin de semana pasado a esto y la tarde del Lunes, sin parar investigando esto e intentándo mil pruebas, editando hexadecimalmente a saco, comparando el radio.dat de pc, el de psx ing y el de psx esp, mirando los bytes, tal y cual, he de deciros que...
HE CONSEGUIDO DESCIFRAR EL FORMATO DE TEXTO del archivo de textos de las conversaciones de codec (radio.dat) y al ponerle los textos en español de PSX (y modificando algunos bytes de cabecera) funciona a la perfección, suenan las voces, no se queda bloqueado, la tecla ESC funciona perfectamente, y todo como debería y como lo hace de forma original.
Ahora es cuando explico porqué pego esto aquí. Resulta que en la version PC de MGS se recurre a fuentes del sistema para mostrar algunos textos (conversaciones de codec y menu de opciones del juego), concretamente para las conversaciones de codec se usa la fuente "Arial" (arial.ttf). Bien, si se modifica la llamada que se hace a la funcion CreateFontA del API de Windows, se puede poner el texto subrayado o en cursiva en el juego, por poner un ejemplo. Esto se puede hacer con el software API Monitor (www.rohitab.com), que está muy bien para ver a qué funciones se están llamando, capturarlas y modificarlas incluso para ver los cambios en el juego. Bueno, no me enrollo más, el problema es que no salen las tildes,ñ,Ñ,¿ y ¡ en las conversaciones de CODEC aunque estén así en el RADIO.DAT (q por cierto hay q modificar cada texto de PSX pq no esta como un "á" por ejemplo, sino como 2 o 3 caracteres q corresponderian a una "á" cuando se muestra en pantalla desde la play). En cambio, en el menú del juego (cuando estando jugando se pulsa ESC), si se modifica en el EXE del juego, "Quit to main menu" mismo por "áéíóúñÑ¡¿........" sí salen todos los caracteres. Es decir, si en el radio.dat cambiamos una "a" por una "á" no saldrá (el juego "se come" este caracter y no lo muestra), pero si cambiamos una "a" por una "á" en el EXE, correspondiente al menú del juego si sale. Ejemplo concreto con el primer texto del codec del juego que aparece nada más empezar:
Texto original: "This is Snake." ----> aparece "This is Snake." en pantalla (correcto)
Texto modificado: "áéíó is Snake."---> aparece " is Snake." en pantalla (incorrecto)
Pues eso, ¿alguien sabe como hacer para que se muestren las tildes y demas caracteres "especiales"? Tened en cuenta que no se usa un grafico para cada letra como lo hacen muchos juegos, no es cosa de añadirle el grafico de la Ñ y demas, sino que se usa la fuente "Arial" directamente, llamando a una funcion del API de Windows (TextOutA) que muestra la cadena de texto que se le pase. De hecho, el juego llama a esta función comiendose los caracteres "especiales", ese es el problema, que parece que al leer el texto del radio.dat los filtra. Para resolverme esta duda, esto requiere conocimiento del API de Windows, con el software que os dije se pueden ver cientos de llamadas a funciones relacionadas con fuentes y tal, a parte de la CreateFontA y TextOutA...
Y OTRA COSA QUE OLVIDABA: he descomprimido el EXE del Metal gear PC, esta comprimido (con algun compresor especial para archivos ejecutables). Descomprimido ocupa casi 3 megas y ahora deja ver en claro algunos textos y sobretodo, así puede ser analizado con el API MONITOR por ejemplo, si no se descomprime no.
Editado por jomalin, 06 March 2011 - 11:20 PM.














