Bienvenidos a Abandonsocios: El Portal de los Juegos Antiguos
0 Usuarios y 7 Visitantes están viendo este tema.
Cita de: SkaZZ en Marzo 04, 2014, 16:17:28 pm ¿Ha preguntado alguien por ese algoritmo en MESSAGES.DAT?Preguntar he preguntado, responder no ha respondido.
¿Ha preguntado alguien por ese algoritmo en MESSAGES.DAT?
Messages.datIn particolare, il file MESSAGES.DAT riporta tutte le frasi relative all’ambiente e agli oggetti ognuna compressa con una variante dell’algoritmo di Fabrice Bellard usato in UNLZEXE, un vecchio compressore per eseguibili degli anni ’80-’90. All’inizio del file è presente l’indicazione del numero di frasi, espressa come word [Notazione: ai fini di questa documentazione, senza entrare in merito alle differenze tra le diverse notazioni per le variabili tra C, Pascal ed altri linguaggi, "byte", "word", "integer", saranno sempre numero esadecimale rispettivamente di un byte, di un word (due byte), di un dword (quattro byte) non segnati se non altrimenti specificato, espressi in little endian, ossia da destra verso sinistra (p.e. "ABCD" è il valore esadecimale CDAB, e "01234567" è il valore 67452301) .], e di seguito una tabella avente tanti record quante sono le frasi.Più esattamente, si avrà il seguente tracciato:Tracciato di Messages.dat:Nfrasi: word; Progressivo(1): integer; Inizio_frase(1): integer; Lungh_frase(1): word; Progressivo(2): integer; Inizio_frase(2): integer; Lungh_frase(2): word; ….. ….. Progressivo(Nfrasi): integer; Inizio_frase(Nfrasi): integer; Lungh_frase(Nfrasi): word.dove: Progressivo(i) è un progressivo che numera l’i-esima frase, Inizio_frase(i) è l’indirizzo assoluto, relativamente al file messages.dat, della i-esima frase, e Lungh_frase è la lunghezza in byte della i-esima frase decompressa.Di seguito alla tabella, vengono elencate sino alla fine del file tutte le frasi in formato compresso.L’inizio di ogni frase è facilmente riconoscibile dal prefisso “FAB”+x0C (cioè la stringa “FAB” seguita da un byte di valore 12 esadecimale). Il programma decomprime tutte queste frasi in chiaro nel file MESSAGES.DAT.TXT. Alcune frasi, rivelano una struttura generalizzata, per potersi adattare a più oggetti, orientata alla grammatica della lingua, ad esempio la seguente:[width28][y5][noun2:custom:The:The:The:::The:The:The] [noun2]§[noun2:custom:is:are:is:is:is:is:is:is] hardly§threatening you enough to warrant using your§special magical defense on [noun2:custom:it:them:it:him:her:it:him:her].§Come si può vedere, le istruzioni destinate al motore del gioco sono tra parentesi: subito all’inizio c’è l’indicazione sulla larghezza in caratteri e la posizione della finestra a video che dovrà accogliere il testo. Questi parametri devono essere lasciati inalterati, pena risultati inaspettati in esecuzione. <noun2> è una variabile passata dall’interfaccia che accoglie un qualsiasi nome di oggetto censito, sembrerebbe di capire che l’interfaccia concorda di conseguenza gli articoli e i pronomi secondo il genere ed il numero. Ho evidenziato alcuni caratteri speciali §: si tratta di punti dove era presente un “low value” (zero esadecimale). L’algoritmo che estrae tali testi sostituisce ad ogni low-value il carattere §, sia per facilitare la manipolazione della stringa, sia per evitare ogni possibile confusione con caratteri blank. E’ bene, in fase di traduzione, non cancellare tali caratteri che, in fase di reinserimento nelle risorse del gioco, verranno ritrasformati in low-value.
El algoritmo de compresión en el que se basan dragonsphere, rex nebular, return of the phantom, es un caso particular de LZ, es decir Lzexe de FABrice Bellard (la cadena "FAB" al inicio de cada frase lo sugiere).En esta discusión de un forum se comenta: http://www.abandonware-forums.org/showthread.php?19369-traduction-rex-nebular&p=338779&viewfull=1#post338779.El código de decompresión de LZexe es público (con google se encuentra fácilmente), pero hay que modificarlo para adaptarse al uso del juego (LZexe comprimía archivos exe ejecutables, no exactamente archivos de datos).El código modificado fue puesto en el forum antes indicado, pero ya no tengo el código, a causa del hurto de mi pc y del backup hace unos años.En cuanto a la compresión, el código no está disponible, a diferencia del de la decompresión. Entonces he usado una "táctica", o sea, no he comprimido el texto modificado, usando los prefijos "FF" antes de cada 16 caracteres de texto (que significan "toma los siguientes 16 caracteres tal como están").
Probaron usando el XTRAC?, descomprime un monton de ejecutables comprimidos:http://www.sendspace.com/file/tdqp8f
No me useis acentos para importar que peta, hay usarlo con las fuentes ya cambiadas.