AbandonSocios: El Portal de los Juegos Antiguos

Abandonsocios => Traducciones y Proyectos => Mensaje iniciado por: pakolmo en Septiembre 03, 2019, 06:38:55 am

Título: Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: pakolmo en Septiembre 03, 2019, 06:38:55 am
Los archivos con extensión DDS contienen los textos del juego The Adventures of Willy Beamish creado por Dynamix.
Los archivos con extensión SDS contienen los textos del juego Rise of the Dragon creado por Dynamix.

Ambos juegos siguen estando en inglés únicamente. Y solo funcionan en DOSBOX.

ScummVM no ejecuta ninguno de los juegos pero tiene creado algo de código:
https://github.com/vcosta/scummvm/tree/master/engines/dgds (https://github.com/vcosta/scummvm/tree/master/engines/dgds)

Otro juego con el mismo formato es Heart of China. Juego que sí está en español.

Me gustaría que SkaZZ y otros maestros de la programación hicieran algo con estos archivos DDS/SDS para poder exportar/importar textos ampliando/reduciendo las frases.

Aquí van ambos ejemplos: https://www.dropbox.com/s/e3a4jo24aawxyu2/Willy%20Beamish.7z?dl=0 (https://www.dropbox.com/s/e3a4jo24aawxyu2/Willy%20Beamish.7z?dl=0)

Muchas gracias!
Título: Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: Ghylard en Septiembre 03, 2019, 08:39:22 am
El sitio de Oldgamesitalia (http://www.oldgamesitalia.net/forum/index.php?s=311b5406df52f4592cce0e5774cd98f8&showtopic=24055&st=0) había comenzado a realizar trabajos de extracción en el Heart of China. Tal vez el trabajo que hicieron pueda serle útil.:)
Título: Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: pakolmo en Septiembre 03, 2019, 08:50:16 am
Gracias. El otro día me lo leí entero. Solo me sirvió el extractor de archivos. Se ve que nunca acabaron el proyecto.

Por cierto, creo que los DDS y SDS no tienen el mismo formato.
Título: Si estás leyendo esto, ¡¡¡pide un logro!!!
Publicado por: SkaZZ en Septiembre 03, 2019, 10:50:43 am
Voy a empezar a cobrarte. El formato es pseudo-sencillo... me explico: el juego tiene (sin contar ejecutables ni pollables) dos tipos de archivo: *.00x (donde x es un número, sería más correcto *.xxx) y *.vga (en Rise of the Dragon, en otros tiene otra extensión pero y debo mirarlo):

*.00x --- Contienen los archivos del juego.
*.vga --- Contiene la FAT de los archivos *.00x (una FAT es una tabla de localización de archivos, File Allocation Table).

El archivo *.vga contiene una salt (¿qué es la sal? Lo que le echas a la ensalada, subnor) que son 4 bytes que mediante un algoritmo y el nombre del archivo (el del archivo contenido en *.00x) da un valor entero (int32) único. Similar a un CRC aunque aquí lo llamamos hash (¡qué coño, fumémonos una L!). Como en principio no se van a tocar los nombres de los archivos, creo que no es necesario meternos en esto (aunque debería desarrollar una función porsiaca, ya veremos). Después de la salt, hay un valor de 2 bytes que indica el número de volúmenes que hay.

Después, por cada volumen, hay que hacer lo siguiente. Primero viene el nombre del volumen, con un tamaño de 12 caracteres (modelo DOS: 8 del nombre, 1 del punto, 3 de la extensión), un separador que es el byte 0x2e y luego dos bytes que indican el número de archivos. Entonces, en cada volumen y por cada archivo, hay 4 bytes que son el hash del archivo y 4 bytes que son el offset del mismo.

Bueno, pues lo que acabas de leer es solo la FAT, y la tengo ya programada.

El archivo *.00x contiene una serie de archivos. Cada archivo tiene una cabecera genérica que es el nombre del archivo con un tamaño de 12 caracteres (recuerda el modelo DOS: 8 del nombre, 1 del punto, 3 de la extensión), un separador que es un byte 0x6e y 4 bytes que indican el tamaño del archivo (sin contar estos bytes de la cabecera). Cada uno de estos archivos yo lo llamo CHUNK (porque KENDO ya estaba registrado no sé por quién) y cada uno de estos chunks es un tipo (imagen, texto, paleta, fuente, etc.). Eso habrá que mirarlo de forma individual.

Código fuente (WIP):
fat.cs
Spoiler (click para mostrar/ocultar)
volume.cs
Spoiler (click para mostrar/ocultar)
chunk.cs
Spoiler (click para mostrar/ocultar)
unpack.cs
Spoiler (click para mostrar/ocultar)
Título: Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: pakolmo en Septiembre 03, 2019, 11:54:48 am
Creo que no me has entendido.

Los archivos los tengo todos exportados y se me han generado un montón de tipos entre ellos los DDS (Willy Beamish) y SDS (Para Rise of the Dragon).

Estos archivos DDS/SDS funcionan como parche si los colocas en la raíz del juego.

Los SDS (Rise of the dragon) tienen una cabecera de 8 bits.
En el bit 7 y 8, marca desde la posición 8 el tamaño del archivo.

2 bits delante del texto también marca la longitud total del texto.

Y ya estaría en este juego.

Luego para Willy Beamish ADEMÁS

12 bits antes de los textos marca la longitud hasta que acaba el texto.


No se si lo he explicado bien, es sencillo, pero yo no tengo ni idea de programar algo así.
Título: Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: SkaZZ en Septiembre 03, 2019, 13:08:14 pm
Sí te he entendido, pero tengo que conocer todos los detalles del formato para continuar. No empezar de 0 siempre da problemas. Respecto a lo que dices, tiene un formato muy similar a los archivos que usaba EA (IFF o así) que ya vi hace tiempo en la traducción de The Incredible Machine; es como por segmentos.

Los SDS tienen una cabecera de 4 bytes indicando el tipo "SDS:", 4 bytes indicando el tamaño y luego según el código de ScummVM el resto es texto con formato en Pascal (creo que con 0x00 al final). Creo que está comprimido con LZW según se indica en el código, pero tengo con eso tardaré.

P.D.: lo estoy mirando con Rise of the Dragon que es el primero de los 90 de Dynamix.
P.D.: creo que has confundido bits con bytes en algunas partes, pero déjame mirarlo a mí.
Título: Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: pakolmo en Septiembre 04, 2019, 09:13:38 am
Nunca sé si 8 bocabits forman un bocabyte u 8 bocabytes forman un bocabit... da igual, me compraré fritos!
Título: Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: WeirdZod en Octubre 31, 2019, 15:09:18 pm
¡Mejor fistros!

(http://4.bp.blogspot.com/-5lAbnkqnH3c/TYy_fnQryHI/AAAAAAAAAEA/kYd-umccP9w/s1600/fistros.jpg)
Título: Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: SkaZZ en Enero 22, 2020, 13:28:27 pm
Creo que este hijoputa lo ha conseguido:

(https://i.imgur.com/5Z218Tv.png?1)

Estoy en el curro y no lo puedo probar; esta tarde os comentaré... pero bueno, no tiene mala pinta.
La barra de dirección de archivo está tapada a propósito: cosas del curro.

Se me olvidaba; gracias a vcosta del proyecto ScummVM, sin su ayuda: myMind = false;
Título: Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: pakolmo en Enero 23, 2020, 04:57:05 am
¿llegó a funcionar?
Título: Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: SkaZZ en Enero 23, 2020, 08:55:16 am
Al final no pude probarlo porque tuve unos asuntos personales, pero el LZW Decoder funciona correctamente (probado en otros archivos). En caso de que no cargará una resource descomprimida, habría que fabricar un LZW Encoder pero ya pediría ayuda en ese caso. Hoy sin falta lo miro.
Título: Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: SkaZZ en Enero 23, 2020, 20:59:53 pm
Buenas noticias, funciona con los SDS:

(https://i.imgur.com/EdVVYu8.png)

Perdón por la tardanza, pero estoy subnormal. Iba a hacer una utilidad para todo, pero luego dije "esto no es el Unreal Engine, y eran los 90... ¿múltiples herramientas?". Así que tengo el extractor, haré el editor de textos SDS y un editor de fuentes (hay dos tipos: fixed y variables) que parecen sencillas.
Título: Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: SkaZZ en Enero 26, 2020, 02:27:13 am
Mientras veo como hacerle un hack al SDS, empecé el Font Editor y va bastante bien:

(https://i.imgur.com/Oyup0Xw.png)
Título: Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
Publicado por: nagual en Febrero 18, 2022, 21:41:16 pm
me hacen chirivitas viendo esos exadecimales parece guaay

„¡Al ataquerrrr!

que no se digaaa q Trabaja menos que el sastre de Tarzán.

:lol: