Autor Tema: Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)  (Leído 1196 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pakolmo

  • Moderator
  • HAL9000
  • *****
  • Mensajes: 2439
  • Registrado: 16 Ene, 2015
  • es España
  • Sexo: Masculino
    • Ver Perfil
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

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

Muchas gracias!

Desconectado Ghylard

  • Ábaco
  • Mensajes: 1
  • Registrado: 09 Sep, 2015
  • fr France
    • Ver Perfil
    • Email
Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
« Respuesta #1 en: Septiembre 03, 2019, 08:03:36 am »
El sitio de Oldgamesitalia había comenzado a realizar trabajos de extracción en el Heart of China. Tal vez el trabajo que hicieron pueda serle útil.:)

Desconectado pakolmo

  • Moderator
  • HAL9000
  • *****
  • Mensajes: 2439
  • Registrado: 16 Ene, 2015
  • es España
  • Sexo: Masculino
    • Ver Perfil
Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
« Respuesta #2 en: Septiembre 03, 2019, 08:14:30 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.

Desconectado SkaZZ

  • Joshua
  • ****
  • Mensajes: 1964
  • Registrado: 21 Nov, 2004
  • es España
  • Sexo: Masculino
  • ZzZzzZz... Dark Souls... ZzZzzZz...
    • Ver Perfil
Si estás leyendo esto, ¡¡¡pide un logro!!!
« Respuesta #3 en: Septiembre 03, 2019, 10:14:57 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)



      //////       Hora de abandonware llegó, coge a tus
     (o   O)       amigos y vámonos. Con Kendo el friki y
       (_)         SkaZz el chiflado, lo pasaremos guay.
--oooO-----Oooo--  ¡Hora de abandonware!

Desconectado pakolmo

  • Moderator
  • HAL9000
  • *****
  • Mensajes: 2439
  • Registrado: 16 Ene, 2015
  • es España
  • Sexo: Masculino
    • Ver Perfil
Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
« Respuesta #4 en: Septiembre 03, 2019, 11:19:02 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í.

Desconectado SkaZZ

  • Joshua
  • ****
  • Mensajes: 1964
  • Registrado: 21 Nov, 2004
  • es España
  • Sexo: Masculino
  • ZzZzzZz... Dark Souls... ZzZzzZz...
    • Ver Perfil
Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
« Respuesta #5 en: Septiembre 03, 2019, 12:32:28 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í.



      //////       Hora de abandonware llegó, coge a tus
     (o   O)       amigos y vámonos. Con Kendo el friki y
       (_)         SkaZz el chiflado, lo pasaremos guay.
--oooO-----Oooo--  ¡Hora de abandonware!

Desconectado pakolmo

  • Moderator
  • HAL9000
  • *****
  • Mensajes: 2439
  • Registrado: 16 Ene, 2015
  • es España
  • Sexo: Masculino
    • Ver Perfil
Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
« Respuesta #6 en: Septiembre 04, 2019, 08:37:52 am »
Nunca sé si 8 bocabits forman un bocabyte u 8 bocabytes forman un bocabit... da igual, me compraré fritos!

Desconectado WeirdZod

  • Commodore 64
  • **
  • Mensajes: 343
  • Registrado: 20 Feb, 2009
  • es España
    • Ver Perfil
Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
« Respuesta #7 en: Octubre 31, 2019, 14:33:32 pm »
¡Mejor fistros!




Desconectado SkaZZ

  • Joshua
  • ****
  • Mensajes: 1964
  • Registrado: 21 Nov, 2004
  • es España
  • Sexo: Masculino
  • ZzZzzZz... Dark Souls... ZzZzzZz...
    • Ver Perfil
Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
« Respuesta #8 en: Enero 22, 2020, 12:52:41 pm »
Creo que este hijoputa lo ha conseguido:



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;
« Última modificación: Enero 22, 2020, 12:57:04 pm por SkaZZ »



      //////       Hora de abandonware llegó, coge a tus
     (o   O)       amigos y vámonos. Con Kendo el friki y
       (_)         SkaZz el chiflado, lo pasaremos guay.
--oooO-----Oooo--  ¡Hora de abandonware!

Desconectado pakolmo

  • Moderator
  • HAL9000
  • *****
  • Mensajes: 2439
  • Registrado: 16 Ene, 2015
  • es España
  • Sexo: Masculino
    • Ver Perfil
Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
« Respuesta #9 en: Enero 23, 2020, 04:21:19 am »
¿llegó a funcionar?

Desconectado SkaZZ

  • Joshua
  • ****
  • Mensajes: 1964
  • Registrado: 21 Nov, 2004
  • es España
  • Sexo: Masculino
  • ZzZzzZz... Dark Souls... ZzZzzZz...
    • Ver Perfil
Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
« Respuesta #10 en: Enero 23, 2020, 08:19:30 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.



      //////       Hora de abandonware llegó, coge a tus
     (o   O)       amigos y vámonos. Con Kendo el friki y
       (_)         SkaZz el chiflado, lo pasaremos guay.
--oooO-----Oooo--  ¡Hora de abandonware!

Desconectado SkaZZ

  • Joshua
  • ****
  • Mensajes: 1964
  • Registrado: 21 Nov, 2004
  • es España
  • Sexo: Masculino
  • ZzZzzZz... Dark Souls... ZzZzzZz...
    • Ver Perfil
Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
« Respuesta #11 en: Enero 23, 2020, 20:24:07 pm »
Buenas noticias, funciona con los SDS:



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.
« Última modificación: Enero 23, 2020, 20:27:15 pm por SkaZZ »



      //////       Hora de abandonware llegó, coge a tus
     (o   O)       amigos y vámonos. Con Kendo el friki y
       (_)         SkaZz el chiflado, lo pasaremos guay.
--oooO-----Oooo--  ¡Hora de abandonware!

Desconectado SkaZZ

  • Joshua
  • ****
  • Mensajes: 1964
  • Registrado: 21 Nov, 2004
  • es España
  • Sexo: Masculino
  • ZzZzzZz... Dark Souls... ZzZzzZz...
    • Ver Perfil
Re:Modificar Archivos DDS y SDS Dynamix (Willy Beamish & Rise of the Dragon)
« Respuesta #12 en: Enero 26, 2020, 01:51:27 am »
Mientras veo como hacerle un hack al SDS, empecé el Font Editor y va bastante bien:




      //////       Hora de abandonware llegó, coge a tus
     (o   O)       amigos y vámonos. Con Kendo el friki y
       (_)         SkaZz el chiflado, lo pasaremos guay.
--oooO-----Oooo--  ¡Hora de abandonware!