storia della traduzione

Transcript

storia della traduzione
STORIA DELLA TRADUZIONE
Tutto comincia la buia sera del 7 giugno 2015, quando lo sconsiderato Myloch posta sul forum di
oldgamesitalia.net una candida domandina: “Centurion in italiano, esiste per davvero?”.
Si scatena il putiferio. Anatemi, gente che millanta di essere riuscita a negoziare un'alleanza con Narbonensis, un
utente giura di aver conquistato la Luna, scene di isteria insomma.
Un personaggio con abbondanza di tempo libero, in evidente e pulsante vena nostalgica, recupera una vecchia
copia nei meandri del suo HDD e comincia a spulciare il codice in cerca di testo in chiaro. EUREKA! (non e stata
proprio questa la vera esclamazione) e tutto in chiaro, e da subito la notizia al forum. Peccato non si fosse accorto
che piu della meta del testo fosse criptato, ma questo lo vedremo dopo. La vera passione per questo gioco risale ai
primi anni '90 quando, assieme a suo fratello sul 286 IBM, passava ore di divertimento gareggiando con le
quadrighe, dilaniando grasse bestie e goffi reziari nell'arena, saccheggiando impunemente villaggi coi quali aveva
appena stipulato alleanza e palpeggiando allegramente regine egizie tutto in nome della gloriosa Roma!
Si trattava del bambino TheRuler.
Posso tranquillamente affermare di aver imparato molti termini inglesi grazie ai vecchi giochi per PC. Chi giocava
a Centurion, come a qualsiasi altro gioco del periodo, non doveva sforzarsi troppo per comprendere il significato
di parole, ora di uso comune, ma all'epoca, soprattutto agli occhi di un ragazzino, esotiche, quasi mistiche.
Bastava la passione. Passione per un media che mi accompagna tutt'ora. Il fatto che non conoscessi ancora bene
l'inglese, non rappresentava un impedimento. Ai miei occhi NON si trattava di un gioco in inglese.
Tradurre i termini e le frasi di un gioco che ha fatto storia non e facile. Centurion mi ha pero trasmesso fiducia sin
dal primo approccio. Non avevo paura di tradurlo perche si trattava di un gioco cresciuto con me, che ho amato
attraverso gli sforzi di mio fratello (“quello tosto” in questo genere di giochi, non a caso il suo nickname ovunque
e Caesar), e che mi ha fatto sentire in qualche modo importante agli occhi del mondo.
La voglia di tradurlo e scattata con la domanda di Myloch, ma e diventata desiderio quando ho capito che
l'impresa tecnica non fosse poi così ardua. Si sa, l'idea di veder finito un progetto e uno dei fattori che ci permette
di iniziarlo, e questo “sembrava” un lavoretto da un paio di settimane. Furono cinque mesi.
La prima difficolta l'ho incontrata quando ho scoperto che non si potevano allungare i termini. Potevo editare i
testi ma dovevo stare nella lunghezza della parola originale inglese. Ovviamente era una questione risolvibile, ci
voleva solo un poco di studio. Grazie all'esperienza di molti amici del forum e agli altri lavori precedenti si
trattava di scovare la posizione dei famosi “puntatori”, ma ne parlero in seguito.
I caratteri speciali che corrispondono al codice esadecimale 0x00 erano i punti fissi, delle colonne d'Ercole. Non
si poteva sgarrare, quello che andava fuori veniva tagliato.
Per fortuna solo con i termini discreti e corti questa limitazione era stringente ma con le frasi lunghe nessun
problema. “Legionnaire” e facilmente traducibile stando nei limiti ma lo stesso non si puo dire di “Bet”. Il resto era
composto da frasi lunghe che descrivono le fasi di una battaglia, eventi casuali o le opzioni dei menu.
Tutto il testo di gioco comincia e finisce con il codice Hex 0x00. All'interno delle frasi sono presenti altri due
caratteri speciali fortunatamente spostabili a piacimento: lo “spazio” e rappresentato da 0x20 mentre quello di “a
capo” da 0x0A. Utilissimi per costruire visivamente meglio le nuove frasi italiane.
Memore dei vecchi lavori sugli eseguibili DOS, sapevo che per allargare lo spazio necessario alle parole italiane
era sufficiente trovare quei valori esadecimali che identificano l'indirizzo iniziale all'interno del file di ogni frase,
ovverosia i famosi “puntatori”. Questi strani animali si muovono solitamente in branchi e seguono i loro padroni, i
testi corrispondenti. Il puntatore e l'ultima istruzione del processo grafico che “spinge” a video grafica e testi.
Trovarlo significa essere in grado di mostrare quello che si desidera e come lo si desidera.
In questa immagine e mostrato come si presenta il testo in un editor esadecimale con la mappatura colore
abilitata per maggiore visibilita e comodita. E' inoltre evidenziata in rosso la posizione del testo e quella dei
relativi puntatori. Il programmatore decise per semplicita di assegnare solo la posizione di partenza della frase e
non quella di termine, definendo come fine stringa universale il codice 0x00. Come trovare pero la
corrispondenza esatta tra testo e puntatore? Qui viene la parte dura. Il file e un OVL (overlay) cioe un file
composto da piu pagine che potremmo definire come file a se stanti, necessari in epoca DOS per via della scarsa
disponibilita di RAM dei computer. Questo espediente era necessario per poter caricare e scaricare
dinamicamente dalla memoria solo porzioni e non interi file. Ha scritto un post molto interessante Syxtem qui.
E' stato necessario studiare il file ed individuare un gruppo di puntatori, di solito caratterizzati da caratteri
ricorrenti (“?” ovvero 0x3F nella parte inferiore dell'esempio) e cominciare a calcolare le distanze relative tra i
testi. Ad esempio tra il byte iniziale di “Withdraw” e quello di “Go to war” ci sono 9 Byte, esattamente la
differenza tra 3F53 e 3F4A. Ma Perche mi scrivi 3F4A quando hai cerchiato 4A3F? Serve una “piccola”
precisazione. La codifica utilizzata da Intel e appunto Little-Endian: le informazioni riguardanti un determinato
valore (nel nostro caso cerchiato di rosso una WORD di 16 bit ovvero 2 Byte) vengono immagazzinate partendo
dal Byte meno significativo e finendo con quello piu significativo. Gli amici di Intel hanno trovato un bel modo per
rendere la vita difficile a noi Hex-smanettoni ed ecco risolto il mistero dell'inversione.
E' poi bastato verificare le differenze dei successivi 3 testi (Ultimatum, Offer alliance e Aggressive) per
convincermi di aver effettivamente trovato i puntatori giusti, ma per poterli utilizzare in maniera assoluta e non
relativa era necessario trovare il punto di partenza dal quale sono calcolati, ovverosia l'inizio della nostra
“pagina” (La pagina e in pratica un file nel file). Ho posizionato il cursore sulla W di “Withdraw”, sono andato
indietro di 16202 Byte cioe 3F4A in esadecimale ed eliminato tutti i Byte al di sopra di questo indirizzo. Salvando
il nuovo file ho creato il punto 0. Ogni qual volta posizionavo il cursore sulla prima lettera di un testo il mio editor
esadecimale mi diceva la posizione assoluta, cioe il valore del relativo puntatore in codifica “Big-Endian”.
Invertendo i due valori della word avevo il mio puntatore che dovevo cercare all'interno del file come semplice
stringa esadecimale e sostituirlo col nuovo indirizzo al quale avevo scritto la frase tradotta.
Tutto questo lavoro e stato necessario per poter rimuovere la limitazione delle lunghezze originali dei testi.
Modificando il valore del puntatore sono stato in grado di spostare fisicamente all'interno del file il testo relativo.
Ad esempio per tradurre “Withdraw” in “Resa” sarebbe bastato lo spazio,
ma per ottimizzarlo in vista delle parole successive ho spostato “Resa” di
un Byte a sinistra mangiando uno dei due 0x00, modificando il suo
puntatore da 3F4A a 3F49.
Gli 0x00 erano la mia risorsa piu preziosa e per le traduzioni piu corpose
ne avrei avuto grande bisogno. Fortunatamente nel file erano presenti 3
gruppi da un centinaio di Byte tutti a zero non utilizzati. Gruppi in cui ho
fisicamente spostato parole e frasi che altrimenti non sarebbe stato
possibile tradurre per colpa dell'esiguo spazio originale.
La possibilita di estendere le frasi a piacimento mi fece pero sorgere un dubbio atroce: Tutto il testo di gioco e
incorniciato da box, quindi come fare per assicurarsi che una volta tradotto non sbordasse? Fortunatamente il
programmatore originale Kellyn Beck, gia autore del capolavoro Cinemaware “Defender of the Crown”, non
essendo progettista di stuzzicadenti, creo sapientemente box dinamici capaci di adattarsi alle dimensioni della
riga di testo piu lunga. Cio mi ha risparmiato mooolta fatica.
Ho cominciato a tradurre dall'inizio del file procedendo verso la fine. Una volta terminata la prima passata ho
cominciato il betatest scoprendo con enorme sorpresa che mi ero dimenticato i testi relativi alle negoziazioni,
visualizzati quando si invade una provincia. “Perdincibacco, mi saranno sfuggite”, pensavo…
Il sudore comincio a gelare sul mio collo, non li trovavo. Una porzione di testo considerevole si era volatilizzata.
Dopo aver contattato Giacobbo per un aiuto paranormale ma senza grossi risultati, arrivo l'illuminazione. La
convinzione che tutto il testo si trovasse in un solo file mi aveva portato fuori strada. All'inizio li avevo
scandagliati tutti in cerca di testo ma era presente solo in OVL0.ovl. Doveva dunque trovarsi in un altro file,
probabilmente criptato.
Fortunatamente la ricerca e stata veloce, avendo scovato in MNEGO.dat (M=MCGA version e NEGO=Negotiation)
qualcosa che sembrava testo.
Un rapido scambio di idee con i ragazzi del forum per
scoprire che si trattava di compressione piuttosto che
criptaggio, piu precisamente di codifica LZSS. Ed e stata
una buona notizia.
Serviva dunque un decompressore che mi permettesse di
estrarre i file e poi li ricomprimesse. I mitici guru di
encode.ru in meno di 7 ore tolsero le castagne dal fuoco
snocciolando un sorgente ed un binario che facevano
proprio al caso mio! Il testo era in chiaro. Estraggo, traduco e provo ad incapsulare il testo ma e un buco
nell'acqua. Di solito un gioco che va in crash sentenziando un serafico Memory allocation error non e cosa buona...
Il file MNEGO.dat ha un corrispettivo MNEGO.dir piu piccolo dove sono immagazzinati tutte le informazioni dei
file presenti nel primo, in pratica un indice. Il gioco estrae al volo dal .dat il testo e la grafica di una provincia solo
quando e necessario, per risparmiare RAM. Bisognava quindi modificare anche il .dir per far capire al gioco dove
effettivamente andare a prendere i nuovi file modificati all'interno del .dat.
Syxtem nota che nel .dir ogni nome di file e seguito da un flag che ne indica lo stato, se compresso o meno. Il
problema della ricompressione era risolto, sarebbe bastato settare quel flag per lasciare tutto in chiaro!
DK si accorge di un errore nel sorgente del decompressore, lo ricompila e me lo consegna. FUNZIONA!!!
Per rendere il processo di traduzione piu veloce e a prova di errore era necessario pero un tool che facesse tutto
in automatico. SuperDK si mise d'impegno e tiro fuori “THE TOOL” (Wagner in sottofondo). Un prodigio
dell'ingegneria esadecimale, ovvero diottrie e mesi di lavoro risparmiati.
Il testo modificato, calcolato in base alla differenza raw tra file originale e file italiano, ammonta a 50KB di cui
30KB per le sole negoziazioni. Togliendo circa 400 Byte di puntatori e considerando una media per la lingua
italiana di 5,5 lettere a parola il totale delle parole tradotte per questa traduzione e stato di circa 9400.
Ovviamente lo sforzo profuso non si e limitato al solo testo da tradurre, tutto sommato
esiguo, piuttosto all'ottimizzazione degli spazi, spostando frasi, o interi blocchi come
quello dei credits, e modificando di conseguenza ogni puntatore. Ho inoltre notato che
alcuni termini come “Done” si ripetevano; perfetta occasione per recuperare spazio
cambiando tutti gli indirizzi che puntavano ai vari “Done” disseminati per il file, in un
unico indirizzo che puntava all'unico “Fatto” del file. Una delle sfide piu grandi
consistette nell'adattare le schermate riepilogative di fine battaglie e di fine gioco. Si
tratta di testi che vengono composti al volo a seconda delle tattiche utilizzate durante la
battaglia o dei risultati ottenuti durante l'intera partita nel caso del riepilogo finale.
Altra bella sfida e stata quella dell'adattamento. In originale molti dei nomi delle provincie e dei condottieri erano
in latino mentre il resto ovviamente in inglese (Absolna the rotten, Gaul). Per mantenere l'esperienza di gioco piu
vicina possibile a quella originale si e deciso di procedere uniformando tutti i nomi alla lingua latina, del resto il
punto di vista e quello romano. A questo modo si e potuto mantenere termini storici spiacevoli da perdere come
Hasdrubal, Extravaganza, Bestiarii o Aegyptus, e sostituire “Hold Games” con un piu familiare “Circenses”,
“Melee” con “Pugna”, “Chariot race” con “Cursus Quadrigarum” oppure l'orribile “Red driver” con “Auriga rosso”.
La traduzione era finita, ma vi erano ancora tante piccole correzioni che desideravo fare e per mancanza di tempo
sono dovute slittate, ma dal momento che la patch si trovava in mano al mitico chipko per il betatest, potevo
finalmente dedicarmi al “pastrocchio”; la famosa arte segreta dell'omino che gioca con l'editor esadecimale.
Girovagando per il file in cerca di errori come “Tribute” tradotto in “Tributi” e non “Tributo”, mi sono imbattuto in
molti “blocchi sospetti”. Mi sono quindi messo a modificare alcuni valori e testarli in-game scoprendo qualcosa di
molto interessante: Tutti i dati del gioco sono modificabili. Condizioni di alleanza, numero e composizione delle
truppe, richieste tributarie, qualunque parametro di ogni provincia, tutto.
Non essendo questa una MOD ma una semplice traduzione ho deciso di non includere alcuna modifica, se
escludiamo la rimozione del crack per riportare il gioco originale, opzione che e possibile scegliere in fase di
installazione.
L'unica “sensazione di sbagliato” che ho sempre avuto giocando a Centurion consisteva nella mancanza della
famosa cavalleria germanica. I Germani si presentano come popolo di guerrieri senza utilizzo alcuno di cavalli:
storicamente inaccurato. Sarebbe possibile mantenere equilibrio nel gameplay sostituendo 4 unita di fanteria
(500x4=2000 uomini) con 4 unita di cavalleria (150x4=600 cavalieri).
Volendo modificare per forza qualcosa si potrebbe rivedere anche il costo delle navi, troppo poco sfruttate per via
dell'alto prezzo, a mio modesto parere invece molto importanti in termini di esperienza ludica. Attualmente i
prezzi di triremi/quinqueremi/Galee sono 5/10/20, mantenendo la stessa proporzione si potrebbe pensare a
4/8/16 o 3/6/12, ma bisognerebbe testare questi valori in gioco.
Molti inoltre sui forum si lamentano dei bassi carisma e voce che hanno alcuni comandanti. Anche quello e
modificabile, ma non e mai stato un problema perdere in battaglia un generale schiappa a seguito di una sua
accidentalissima carica frontale solitaria…
Chipko aveva finito il suo betatest. Ha confessato di aver preso il gioco alla leggera, per poi apprezzarlo sempre di
piu e annoverarlo trai giochi nell'olimpo del periodo d'oro DOS. Durante le sue partite ha scoperto man mano
strategie e possibilita invisibili ad un'occhiata superficiale, arrivando a compilare un vero e proprio vademecum
del provetto negoziatore (disponibile tra i download sul sito assieme alla mappa ed al manuale).
Forse non tutti sanno che le alleanze giocano un ruolo chiave all'interno del gioco, alla stregua delle battaglie. E'
possibile portare a termine la partita senza stringere una sola alleanza, ma si perderebbe buona parte del
divertimento e della profondita strategica del titolo. Ogni provincia ha le sue debolezze e le sue richieste; c'e
quella che teme l'invasore numeroso, quella che apprezza il rango elevato, quella che vuole prima veder
schiacciata la sua provincia vicina e anche quelle che non voglio sentir minimamente parlare di alleanza.
Ma ora basta, non e con le sole chiacchiere che si costruiscono imperi.
Per Roma!
TheRuler
Versioni del gioco
“Centurion - Defender of Rome” e stato pubblicato in tre versioni differenti. Originariamente scritto per DOS nel
1990 e stato l'anno successivo portato sulle piattaforme Amiga e SEGA Genesis. La nostra patch e applicabile alla
sola versione DOS sia nella modalita grafica di default VGA che in EGA (avviabile da linea di comando con
“centurio.exe e”).
La versione DOS ha visto due revisioni, la 1.00A datata 5/25/90 e la 1.00B del 5/29/90, la nostra patch aggiorna
il gioco all'ultima. Purtroppo non e presente in rete alcun resoconto sui cambiamenti tra la prima revisione e la
seconda, ne ufficioso ne ufficiale, ma confrontandole con l'editor esadecimale si potrebbero ipotizzare modifiche
riguardanti i dati delle province e bilanciamenti delle battaglie navali.
Per quanto riguarda le musiche, con lo switch “centurio.exe mt” (gia impostato di default) e possibile ascoltare la
colonna sonora originale Roland che differisce leggermente da quella soundblaster/adlib per l'utilizzo di
campionamenti dei tamburi e dei piatti piu naturali. Nella versione DOS non e presente alcun effetto sonoro,
mentre nelle successive per Amiga e SEGA Genesis si possono ascoltare in battaglia i nitriti dei cavalli, i barriti
degli elefanti, la marcia dei legionari e persino il grido di morte del generale ucciso. Anche nelle corse delle
quadrighe e nella lotta tra gladiatori sono presenti gli effetti, ma stranamente non nelle battaglie navali.
Easter Eggs
Nel gioco sono presenti 2 easter eggs, il primo largamente conosciuto in rete mentre il secondo e emerso durante
la traduzione.
1- Quel gran pezzo della Cleopatra, tutta calda e molto scaltra.
Per entrare, in tutti i sensi, nelle grazie di Cleopatra e necessario prima allearsi con l'Egitto. I requisiti per
l'alleanza prevedono l'ingresso nella provincia assieme ad un'armata consolare a piena potenza e il rango di
Proconsole. Dopo di che bastera mostrarsi amichevoli un paio di volte per poi snocciolare l'offerta. Una volta
guadagnati gli appartamenti di Cleopatra sara necessario mantenere una certa signorilita evitando battute come
“Bene bene, per cena Faraona!”, ed il gioco e fatto!
2- In Gallia c'è Asterix!
Girovagando per il file ho scoperto una porzione di testo che non mi era mai capitato di incontrare durante le
nessuna partita. Un chiaro riferimento ad Asterix!
La frase aveva il suo puntatore, quindi avendo l'istruzione per essere mostrata a schermo non si trattava di un
testo inserito nel file e basta, doveva in qualche modo saltare fuori ad un certo punto nel gioco.
Il prode chipko si e prodotto in strategie di battaglia tra le piu disparate: Attaccando con tutte le legioni in un solo
turno e perdendo sempre, saccheggiando, provocando rivolte ma purtroppo mai nulla di fatto...
Il mio approccio strategico invece e stato piu efficace e quanto mai sopraffino: cliccare col mouse a caso su ogni
singolo pixel della Gallia. Inutile dire che ha funzionato. Senza spoilerare troppo, basta fare un giretto nei pressi
di Caen.
CHI HA PARTECIPATO?
Ricordiamo che questa traduzione e stata possibile grazie agli utenti della comunita di OldGamesItalia.net che
hanno lavorato per puro divertimento e con nessun scopo di lucro, ed in particolare:
TheRuler ----------------------------------Micartu -----------------------------------DK -----------------------------------------chipko -------------------------------------Indiana ------------------------------------Alpobemp ---------------------------------Ragfox -------------------------------------Syxtem ------------------------------------Selven -------------------------------------The Ancient One --------------------------
Programmatore, traduttore, installer, betatester
Baldo aiutante, correttore, motivatore, picchiatore.
Tool per la traduzione dei testi delle negoziazioni
Profondo betatest e per aver raccolto preziosi dati sulle alleanze
Scansione manuale italiano, riferimento rapido e mappa dei codici
Supporto tecnico, morale, lombare
Supporto linguistico, correttore, bacchettone, spina nel fianco
Per i suoi post tecnici senza pari
Icone di collegamento desktop e di setup
Best OGI Supporter ever
Se avete pagato per questa traduzione siete stati ingannati.
Se volete comunicare problemi, ottenere assistenza tecnica, ringraziare o fare solo un saluto, potete contattarci
sul forum di Old Games Italia.
Esclusione di responsabilita
Le patch non facilitano in alcun modo la duplicazione di materiale coperto dal diritto d'autore, in perfetta
sintonia col dettato del Digital Millenium Copyright Act del Congresso USA, universalmente riconosciuto come
norma di riferimento in materia.
Esse sono create al fine di poter esser applicate SOLO alla versione originale del gioco. Le modifiche, sebbene
teoricamente riservate alla casa produttrice del gioco (art. 64-bis* della legge 633/41 sul diritto d'autore, come
modificato dal Decreto Legislativo 518/92), sono da sempre tollerate in ambito videoludico.
Le patch comunque sono totalmente gratuite e non vengono in alcun modo vendute, ne da sole, ne gia applicate
sulla versione originale del gioco.
Va pertanto declinata ogni responsabilita per eventuali attivita di lucro che vengano da altri illecitamente
perpetrate utilizzando le patch di traduzione create dal team in questione.
a) La presente patch va utilizzata esclusivamente sul gioco originale legittimamente detenuto per il quale e stata
creata.
b) Questa patch e stata creata senza fini di lucro o di profitto.
c) L'autore declina quindi la responsabilita delle riviste che, senza alcun consenso dell'autore, che deve ritenersi
come gia NON dato, intendessero, in via del tutto autonoma, vendere o comunque distribuire questo programma
nei supporti CD/DVD dei loro periodici;
d) E assolutamente vietato vendere o cedere a terzi a qualsiasi titolo il gioco gia patchato; i trasgressori potranno
essere puniti, ai sensi dell'art. 171bis Legge sul diritto d'autore, con la reclusione da 6 mesi a 3 anni.
e) Si declina la responsabilita derivante dall'uso scorretto di questo programma da parte di terzi.
f) Questo programma non contiene porzioni di codice del programma del gioco; Gli elementi che lo formano non
sono dotati di autonomia funzionale.
g) Per la creazione di tale patch non e stato necessario violare sistemi di protezione informatica, ne dalla sua
applicazione viene messa in atto tale condotta.
f) La patch e un prodotto amatoriale, pertanto l'autore declina la responsabilita di possibili malfunzionamenti.
L'uso di tale patch e a vostro rischio e pericolo.
Tutti i diritti di questo gioco appartengono ai rispettivi proprietari.
Copyright: Electronic Arts, Inc.