Benvenuto Visitatore(Log In|Registrati)
23 Jan 2009, 13:15
Messaggio
#1
|
|
|
Gruppo: Gamer Messaggi: 24 Iscritto il: 23 January 09 Utente Nr.: 15.901 BGE Might and Magic VI,VII,VIII, Morrowind SO WinXP |
Ho deciso di cominciare la dura vita del traduttore perchè alcuni giochi meritano di essere goduti a pieno in italiano e perchè spesso non sono facilmente reperibili in tale lingua.
Per cominciare ho letto parte della guida di Marco, alias CavaliereOmbra, per farmi un'idea su ciò che mi aspettava. Decidendo di continuare, siccome avevo sul pc la versione inglese di Might and magic 8 ho provato ad iniziare da questo gioco. Mi sono quindi imbattuto nella prima difficoltà tecnica: non riesco a trovare i file di testo. Ho provato con dragon unpacker a vedere se c'erano archivi compressi ma non ho trovato niente di importante; allora sono passato all'editor esadecimale e codificando tramite ascii. Qualche parola in inglese mi veniva fuori ma per il resto non ho trovato nè dialoghi nè nomi di armi,quest o altro che potessi poi tradurre. Chiedo quindi illuminazioni su cosa posso fare. E' possibile che un file abbia 2 codici (ascii ed un altro) ? |
|
|
|
![]() |
11 Mar 2009, 19:40
Messaggio
#2
|
|
Gruppo: UST Member Messaggi: 497 Iscritto il: 17 February 03 Utente Nr.: 2.153 SO Win95 |
Ti dirò... mi ha intrigato un po' questo caso e mi sono messo a dare un'occhiata pure io.
Innanzitutto ti dico che sono d'accordo sul fatto che il decompressore non effettui il dump di tutti i dati, ma non credo riguardi i vocaboli che dici te. Mi riferisco soprattutto ai flag dei segmenti, che nel dump non vengono riportati. Cmq mi son messo a guardare qualcosa. Ora come ora sto valutando se è più conveniente scrivere il compressore direttamente in c o in java, come invece preferirei (purtroppo in java non esistono i tipi numerici unsigned ^^' ). CITAZIONE ho visto delle cose tipo <%s%sn't think%s [...]> . Probabilmente questa frase va bene così, non mancano cose che il decompressore non ha estratto. In C esistono diverse funzioni che sfruttano queste cose. La più classica ad esempio è la printf (per stampare a video) che fa uso di questi marcatori per inserire il contenuto di variabili nel testo da mostrare. Mentre in Pascal (e quindi forse anche in Delphi, anche se mi sembrava che lì le cose le avessero potenziate un po'), se non ricordo male, si aveva una struttura del tipo: CODICE writeln('Stringa1 =',var1,' e Stringa2 =',var2) in C la cosa diventa: CODICE printf("Stringa1 = %s e Stringa2 = %s",var1,var2) Poi a seconda del tipo di dato, si deve usare un certo tipo di "marcatore", per indicare al compilare come deve rappresentare il contenuto della variabile (ad esempio come numero o come carattere). Magari puoi dare un'occhiata qui: http://www.cplusplus.com/reference/clibrar...dio/printf.html Guardi gli esempi e capisci subito. Per questo dico che secondo me ci vanno. Molto probabilmente quella stringa viene data in pasto all'eseguibile così com'è e tramite funzioni di questo tipo poi si decide che valore sostituire a quei marcatori. Probabilmente si tratta di testo non costante che può variare nel gioco (io non ne ho idea visto che non l'ho mai giocato... anzi, non ho la più pallida idea di che gioco sia. Ho capito solamente che è un'avventura testuale), nel caso in cui il giocatore possa ad esempio scrivere il nome del proprio personaggio... oppure nelle frasi che si riferiscono a certi oggetti che il personaggio tiene nell'inventario e devono tenere conto se il giocatore ne possiede più di uno per coniugare la frase al singolare o plurale.... etc etc... I casi possono essere tanti. Cmq ci tengo a sottolineare che a mio avviso è un po' improponibile tradurre un'avventura testuale inglese in questo modo proprio perchè, come qualcuno ha già fatto notare, il parser ragionerà in inglese su frasi in italiano e perciò secondo me ne verrà una schifezza. Già temo per tutte le coniugazioni dei verbi fatte ad cazzum e gli articoli completamente sballati. Forse converrebbe di più rifare il gioco, con un linguaggio come Inform o simili (che ha già le librerie per avere un parser in italiano). Strada che hanno adottato molti per tradurre vecchi giochi col progetto "From Hell". Magari chiedete a RGrassi per queste cose, che lui ne capisce più di me. Ad ogni modo come funziona il decompressore più o meno l'ho capito. Non ho avuto molto tempo invece per farmi un'idea precisa di come sono organizzate le informazioni correttamente dentro il file. Da notare che non si tratta di una codifica Huffman "classica" in quanto il compressore si crea, inoltre, anche un dizionario con alcuni vocaboli che, in virtù di questo, possono essere letti in chiaro a partire dell'offset 0x412E del file SHANSTR.DAT In questo caso invece di risalire tramite i bit alla singola lettera, si arriva direttamente a tutta la parola. Ora non so in base a cosa siano state scelte queste parole per entrare nel dizionario. Probabilmente in base alla loro frequenza. In questo caso si avrebbe probabilmente un tot di parole scelte per essere inserite nel dizionario. Per questo farebbe comodo un confronto con un altro file, in modo da determinare se questo numero è fisso o variabile (ad esempio potrebbe essere "metti nel dizionario tutte le parole con frequenza >= X). L'unica cosa che finora sembra chiara è che, per calcolare la frequenza di queste parole, vengano considerate come parole le stringhe separate da spazi (pare solo da spazi a vedere il file... non ci sono parole nel dizionario che terminano con simboli diversi da spazi o lettere). Cioè, nel caso ci siano 2 frasi così: CODICE I am tall I am young le frequenze calcolate dovrebbero essere: CODICE "I "=2 "am "=2 "tall"=1 "young"=1 e non ad esempio "I am "=2 Inoltre beh... dettagli tecnici... i nodi sono identificati da due byte (short) [b1][b2]: Nodo interno: bit più significativo = 1 Nodo foglia: bit più significativo = 0 (quindi vengono ribaltati tutti i bit, facendo quello xor con 0xFFFF) Se è una foglia inoltre si controlla se si tratta di un carattere "normale" o se si punta ad una parola del dizionario. In questo caso si guarda il singolo byte (quello meno significativo dei 2) e la regola è: Carattere: bit più significativo = 0 Parola del dizionario: bit più significativo = 1 Questo è lecito in quanto la codifica adottata è l'ASCII a 7bit. Nel caso si abbia a che fare con una parola del dizionario, questo byte non rappresenta un carattere, ma bensì un indice (che viene perciò normalizzato, riportando a 0 il bit più significativo) che viene utilizzato per navigare tra il vettore di parole del dizionario. PS: Ah... ho notato adesso che le parole contenute nel dizionario sono per l'appunto 128 (0-127)... questo fa intuire che la strada giusta sia l'ipotesi per la quale vengano scelte le 128 parole più frequenti -------------------- ![]() ![]() |
|
|
|
11 Mar 2009, 23:01
Messaggio
#3
|
|
|
Gruppo: IAGTG Member Messaggi: 2.658 Iscritto il: 1 June 05 Da: Roma Utente Nr.: 1.733 SO Altro OGI Supporter ![]() Spolveratore (2) |
CITAZIONE ho visto delle cose tipo <%s%sn't think%s [...]> . Probabilmente questa frase va bene così, non mancano cose che il decompressore non ha estratto. In C esistono diverse funzioni che sfruttano queste cose. La più classica ad esempio è la printf (per stampare a video) che fa uso di questi marcatori per inserire il contenuto di variabili nel testo da mostrare. Guarda, questo è pacifico, tant'è vero che io stesso parlavo già di "variabili", nel senso che cose di questo genere sono comunissime nei parser delle avventure testuali (nell'AGI e anche nello SCI della Sierra) ; la mia paura e le mie perplessità erano esattamente quelle che esprimi tu, ma potrebbero esserci delle scappatoie possibili, provando a "piegare" le traduzioni verso espressioni più generalistiche, magari omettendo l'uso delle variabili nelle frasi tradotte, ove fosse possibile. Il problema è vedere se ciò non possa mandare in abend il motore del gioco, ma a questo punto ritorniamo da capo a dodici, nel senso che per fare questo esperiemento dobbiamo essere in grado di potere reinserire le frasi tradotte nei file di gioco e per far ciò ci serve un compressore compatibile. Comunque per una settimana circa non potrò frequentare, dunque ... buon lavoro! Ciao, Alberto Messaggio modificato da Alpobemp il 11 Mar 2009, 23:04 -------------------- --
alpobemp at libero punto it |
|
|
|
katoble Traduzione giochi Legend 23 Jan 2009, 13:15
Micartu Ciao, allora....vedo che hai già fatto delle buone... 23 Jan 2009, 19:44
katoble So che i might and magic sono anche in italiano ma... 23 Jan 2009, 21:25
Micartu Certamente chiedi pure.
Cmq, se frughi nella sezi... 23 Jan 2009, 22:04
Tsam Nel mio piccolo se posso suggerirti ti consiglio d... 26 Jan 2009, 10:56
katoble Dopo aver guardato un migliaio di giochi vecchi (a... 5 Feb 2009, 15:01
Micartu I vecchi giochi hanno davvero tanti ma davvero tan... 5 Feb 2009, 15:17
Ragfox Gran bel gioco, complimenti.
Quand'è che ci bu... 5 Feb 2009, 15:57
katoble Su un sito con le varie estensioni dei file ho tro... 5 Feb 2009, 21:19
Micartu Ora faccio qualche ricerca pure io nel frattempo m... 5 Feb 2009, 21:44
katoble Ecco il link della pagina . Ho trovato anche un de... 6 Feb 2009, 09:33
Micartu Immagino tu abbia scaricato quantum.zip, dovresti ... 6 Feb 2009, 14:01
katoble Su dosbox non mi vengono riconosciuti i comandi -x... 6 Feb 2009, 14:39
Micartu Non devi usarlo sotto dosbox, devi usarlo sotto pr... 6 Feb 2009, 14:47
Alpobemp CITAZIONE (Micartu @ 6 Feb 2009, 14:47) R... 6 Feb 2009, 16:17
Alpobemp CITAZIONE (Alpobemp @ 6 Feb 2009, 16:17) ... 7 Feb 2009, 14:26
Alpobemp CITAZIONE (Alpobemp @ 6 Feb 2009, 16:17) ... 4 Jan 2013, 11:59
Micartu Strana come cosa....nei vari siti viene riportato ... 7 Feb 2009, 15:49
Alpobemp CITAZIONE (Micartu @ 7 Feb 2009, 15:49) S... 7 Feb 2009, 16:31
DK Mi sembra una variante LZ, altro non so 8 Feb 2009, 18:32
Alpobemp CITAZIONE (DK @ 8 Feb 2009, 18:32) Mi sem... 9 Feb 2009, 12:41
Micartu Hai fatto bene, magari un aiuto te lo da'.
Che... 9 Feb 2009, 13:18
Ragfox CITAZIONE (Micartu @ 9 Feb 2009, 13:18) H... 9 Feb 2009, 13:36
Micartu Sì in effetti non mi è mai capitato di trovarne un... 9 Feb 2009, 14:28
Ragfox CITAZIONE (Micartu @ 9 Feb 2009, 14:28) S... 9 Feb 2009, 15:02
Alpobemp CITAZIONE (Ragfox @ 9 Feb 2009, 15:02) CI... 9 Feb 2009, 15:49
Ragfox CITAZIONE (Alpobemp @ 9 Feb 2009, 15:49) ... 9 Feb 2009, 17:03
Alpobemp CITAZIONE (Ragfox @ 9 Feb 2009, 17:03) CI... 9 Feb 2009, 19:04
Micartu Speriamo bene!
Alpo se ne hai la possibilità ... 9 Feb 2009, 19:16
Ragfox CITAZIONE (Micartu @ 9 Feb 2009, 19:16) ... 9 Feb 2009, 19:32
Micartu Sì nell'exe c'è il testo di tutti i ... 9 Feb 2009, 19:37
Ragfox CITAZIONE (Micartu @ 9 Feb 2009, 19:37) I... 9 Feb 2009, 19:48
katoble Riguardo ai file .q io ho ipotizzato che conteness... 9 Feb 2009, 19:54
Micartu Sì infatti sto vedendo che la struttura è la stess... 9 Feb 2009, 22:31
Micartu Niente non mi riesce di trovare una versione tedes... 9 Feb 2009, 23:28
Alpobemp Brutte notizie.
Innanzitutto, si ricordava anche ... 10 Feb 2009, 18:06
katoble Anche io non ho file DLG comunque escludendo gli ... 10 Feb 2009, 18:35
Alpobemp CITAZIONE (katoble @ 10 Feb 2009, 18:35) ... 10 Feb 2009, 18:49
Micartu Per me è tutto nei dat e sui .q c'è cmq da lav... 10 Feb 2009, 19:48
Ragfox CITAZIONE (Micartu @ 10 Feb 2009, 19:48) ... 10 Feb 2009, 20:07
Alpobemp CITAZIONE (Micartu @ 10 Feb 2009, 19:48) ... 10 Feb 2009, 23:30
Micartu Perché no mi pare un'ottima idea, proviamo a s... 10 Feb 2009, 20:15
Micartu Scusa Alpo ma il tipo con cui hai parlato è Steve ... 11 Feb 2009, 07:43
Alpobemp CITAZIONE (Micartu @ 11 Feb 2009, 07:43) ... 11 Feb 2009, 10:13
katoble Ok, mi metto subito al lavoro per vedere di cavarc... 11 Feb 2009, 14:03
Micartu Grande Alpo! Direi che sono un sacco di inform... 11 Feb 2009, 15:19
Tsam Direi che questa indagine mi esalta come non mai e... 11 Feb 2009, 17:01
katoble Dopo vari tentativi non sono riuscito a scompattar... 11 Feb 2009, 21:06
Alpobemp CITAZIONE (katoble @ 11 Feb 2009, 21:06) ... 12 Feb 2009, 16:36
Micartu No, è che, se non sbaglio, la Huffman è una delle ... 11 Feb 2009, 23:31
Tsam Ve la butto lì. So che probabilmente mi prenderò d... 12 Feb 2009, 17:07
Alpobemp CITAZIONE (Tsam @ 12 Feb 2009, 17:07) Ve ... 12 Feb 2009, 18:31
katoble Ho una bella notizia (forse) ed una brutta notizia... 13 Feb 2009, 09:15
DK Non so che programma hai usato di preciso, ma un h... 13 Feb 2009, 12:54
Alpobemp CITAZIONE (DK @ 13 Feb 2009, 12:54) Non s... 24 Feb 2009, 16:27
The Ancient One CITAZIONE (Alpobemp @ 24 Feb 2009, 16:27)... 24 Feb 2009, 17:05
Alpobemp CITAZIONE (The Ancient One @ 24 Feb 2009, 17... 24 Feb 2009, 17:39
Micartu Direi di lasciare l' "onore" ad Alpo... 13 Feb 2009, 13:11
Alpobemp CITAZIONE (Micartu @ 13 Feb 2009, 13:11) ... 13 Feb 2009, 19:58
katoble CITAZIONE (DK @ 13 Feb 2009, 12:54) Non s... 13 Feb 2009, 13:40
Micartu Credo che il programma invece di dare errore abbia... 13 Feb 2009, 14:48
katoble Questo è il documento estratto: Shannara
Il proble... 13 Feb 2009, 16:00
Micartu Io sono registrato ma ho all'attivo 3 post, qu... 14 Feb 2009, 10:59
katoble Ci sono novità? Se è improbabile trovare una soluz... 22 Feb 2009, 18:57
Alpobemp CITAZIONE (katoble @ 22 Feb 2009, 18:57) ... 23 Feb 2009, 14:50
The Ancient One WOWOWOWOWOW!
Alpo, sei un mito!!... 24 Feb 2009, 17:03
The Ancient One Hai fatto bene a spiegare.
A questo punto come p... 24 Feb 2009, 18:30
Alpobemp CITAZIONE (The Ancient One @ 24 Feb 2009, 18... 25 Feb 2009, 10:12
The Ancient One Grazie delle risposte, Alpo!
CITAZIONE Eh, lo... 25 Feb 2009, 11:18
Micartu beh che dire....ottime notizie! Purtroppo dobb... 25 Feb 2009, 19:05
The Ancient One Mi sono permesso di cambiare il titolo della discu... 26 Feb 2009, 01:08
Alpobemp CITAZIONE (Gufino @ 3 Mar 2009, 19:00) Sh... 5 Mar 2009, 17:22
Syxtem Beh... io ormai sono in periodo di esami, perciò p... 11 Mar 2009, 23:50
The Ancient One Grandi, ragazzi!
Ci capisco sempre meno, ma v... 12 Mar 2009, 10:09
DK E la possibilità che i giochi Legend vengano suppo... 14 Mar 2009, 10:32
Syxtem Oggi sono andato un po' avanti con il lavoro s... 22 Mar 2009, 12:46
The Ancient One CITAZIONE (Syxtem @ 22 Mar 2009, 12:46) C... 23 Mar 2009, 12:57
Syxtem Che poi, ora che ci penso bene, non è nemmeno dett... 23 Mar 2009, 15:31
The Ancient One CITAZIONE (Syxtem @ 23 Mar 2009, 15:31) O... 23 Mar 2009, 15:47
Syxtem CITAZIONE C'è speranza di poter tradurre quest... 23 Mar 2009, 17:37
The Ancient One Alpo... Non fare scherzi.
Non si scherza con i gio... 4 Jan 2013, 12:17
Micartu Spellcasting, Eric... parla! XD 4 Jan 2013, 12:20
The Ancient One CITAZIONE (Micartu @ 4 Jan 2013, 12:20) S... 4 Jan 2013, 12:23
Alpobemp Non ci siamo: riquoto meglio ed aggiungo altre vec... 4 Jan 2013, 13:31![]() ![]() |
| Versione Lo-Fi | Oggi è il: 3rd November 2026 - 11:28 |