NewsIl GruppoTraduzioniGuidaUtilitàLinksForum
Guida completa alla traduzione di ROM/ISO in lingua straniera (Parte III - L'hacking delle console con file system)

Autori: Sephiroth 1311, Phoenix
Versione: 0.55
Ultimo aggiornamento: 22/10/2011

Prima di leggere questa guida, è necessario leggere almeno la prima parte. Se non l'avete fatto, barare è vietato, e dunque tornate indietro a leggerla. ;)
Mentre la prima parte della guida ha come obiettivo quello di essere un avvio "generico" al romhacking, questa terza parte si rivolge invece a chi intende lavorare a traduzioni giochi che utilizzano un file system, come quelli per Playstation 1/2, Nintendo DS, ecc.
Non verrà trattato l'aspetto testuale, di cui si è già discusso, mentre si darà spazio alla gestione dei file ed alla modifica della grafica.
Buona lettura!

- Cos'è un file system? -

Una definizione informale di file system potrebbe essere quella di un "meccanismo informatico tramite il quale i files vengono immagazzinati ed organizzati all'interno di un'unità di memoria". Tradotto in termini semplici, il file system è ciò che permette di suddividere, creare e modificare i file sul vostro HD, nonostante siano tutti memorizzate sulla medesima unità disco. Trasponendo il discorso al gamehacking, mentre lavorare sulle ROM senza file system vuole dire andare a modificare un blocco di dati unico, se si lavora, ad esempio, su un gioco per Playstation, che è formato da una moltitudine di file, sarà possibile estrarre, modificare ed inserire ogni singolo file.
I vantaggi, e le differenze, rispetto al lavoro su giochi senza file system, sono molteplici. È possibile lavorare solo su pochi file anziché su "mostri" di 700 e passa MB, è anche possibile organizzare metodicamente il proprio lavoro, di contro potrebbe essere necessario effettuare un lungo lavoro di studio dei files per trovare il testo o la grafica su cui dovremo lavorare, e molti giochi sono suddivisi letteralmente in migliaia di files. Tuttavia, non disperate, perché anche in questo campo ci sono metodi di ricerca... e trucchi del mestiere. ;)

- Lavorare su un file ISO (CD/DVD-ROM) -

Cominceremo parlando di come lavorare su giochi originariamente memorizzati su supporti ottici di sola lettura (Read Only Memory, appunto). Come tutti sanno, non è possibile modificare direttamente i dati presenti su questi supporti, in quanto, una volta incisi, la superficie del disco ottico diviene immodificabile. Come fare a modificare il testo, allora? Semplice: si crea una copia del disco sul proprio disco fisso, denominata ISO, si lavora su di essa e la si masterizza su un nuovo CD vergine!

Creazione di un file ISO

Il procedimento di creazione di un file ISO è stato ampliamente trattato in molte guide da noi scritte in occasione della pubblicazione di patch per giochi Playstation. In questa sede, ci limeteremo a trattare brevemente questo argomento, parlando più che altro del formato del file ISO (anche detto file immagine, in quando riproducente il disco "fisico"). Tutti i maggiori programmi di masterizzazione, tra i quali consigliamo ImgBurn, scaricabile anche dalla sezione Utilità del nostro sito, hanno infatti procedure molto simili per la creazione di un file immagine. L'unica cosa che varia è il formato dello stesso. Sostanzialmente, si dovranno scegliere obbligatoriamente due soli formati: il formato BIN per i giochi della prima Playstation ed il formato ISO per i giochi della Playstation 2 e successivi. Questa distinzione è importantissima soprattutto nel caso dei giochi per PSX, solo il formato BIN permette infatti di conservarne integri i file audio, in quanto memorizzati nel formato XA. Questo formato, che occupa più di 2048 byte per settore (lo standard ISO), è storabile solo con il formato BIN (che occupa 2352 bytes per settore, i byte in eccesso sono utilizzati per inserire dei codici di controllo dell'integrità, detti ECC). Chiudendo questo discorso preliminare, qualora proprio aveste bisogno di una guida passo a passo per il procedimento di creazione del file ISO, vi invitiamo a leggere questa guida, creata quando pubblicammo la traduzione di Final Fantasy Tactics. Essa spiega anche come creare un file ISO da un disco UMD (usato dalla PSP), procedimento piuttosto insolito, dunque ha una doppia utilità.

NOTA: Può sembrare stupido dirlo, ma è in realtà una cosa fondamentale. Controllate bene che il disco da cui vi apprestate a creare un file immagine sia pulito e privo di graffi profondi, altrimenti potreste creare un ISO con dati corrotti. Qualora aveste un disco in condizioni non ottime ma neanche tragiche, per prima cosa create comunque la ISO, potrete poi utilizzare il programma CDMage, di cui parleremo a breve, per controllare l'integrità dei settori (menu "Action", poi "Scan for corruption").

Estrazione e reinserimento di un file nell'ISO

Passiamo ora alla più fondamentale delle operazioni: l'estrazione ed il reinserimento di un singolo file all'interno dell'ISO. Per entrambe le operazioni è consigliabile utilizzare CDMage, che potete trovare nella sezione utilità. Unico contro: potrebbe essere lento nell'apertura di cartelle contenente migliaia di files (casi rari, ma esistono). In quel caso, per l'estrazione potreste preferire ISO Buster, un ottimo programma di gestione delle ISO, che però non permettere la modifica di file. Esso è però assai rapido, e potreste trovarlo comodo per la sola operazione dell'estrazione. Sta a voi scegliere quale dei due vi è più congeniale. Per il reinserimento, comunque, CDMage è d'obbligo.

L'estrazione è un procedimento davvero semplice, e non richiederà sforzi particolari. Aprite il file ISO con il programma che avete scelto (nel caso di ISO Buster, potrete anche associare le estensioni bin ed iso al programma, per un comodo doppioclic); dopo che avrete individuato il file che vi serve, cliccate col destro e trovere immediatamente l'opzione per estrarre.

NOTA: è ovviamente possibile estrarre più file o intere cartelle in un colpo solo, basterà selezionare una cartella ed estrarla clickando col destro e successivamente su Estrai. Tutto qui, niente di più semplice!
A questo punto, fate tutte le modifiche necessarie al file appena estratto e preparatevi al reinserimento.

IMPORTANTE: Questo procedimento non è adoperabile con filmati e file audio Playstation 1 per il motivo spiegato sopra (audio XA). Fermo restando che potete sempre estrarre e convertire un video Playstation con uno dei tanti lettori multimediali (PSMPlay, tanto per fare un esempio), le procedure di estrazione/inserimento andranno eseguite con il programma di Gemini XtrActor .NET, che trovate nella sezione Utilità. In alternativa, è disponibile sul nostro sito il tool reXryptA, sempre di Gemini, che si occupa solo delle operazioni di reinserimento.

Infine, il momento del reinserimento. Se vi aspettate qualcosa di complicato ed emozionante... beh, vi sbagliate! Una volta (inizio anni 2000) quest'operazione era veramente tediosa, ma dall'uscita dell'ultima versione di CDMage essa è divenuta veramente banale e rapida. Basterà aprire il file ISO, cliccare col destro sul file che intendete sostituire e selezionare "Import file". Se il file che state inserendo ha le stesse dimensioni dell'originale, CDMage inserirà direttamente e ricalcolerà gli ECC, se invece provate ad inserire un file più piccolo, il programma si offrirà per voi di "paddarlo" con dei byte 00 (il padding è un riempitivo di byte inutili per raggiungere una dimensione prefissata). Diverso sarà il discorso se il file modificato è invece più grande, ed è un tantinello più lungo; in questo caso, saltate al paragrafo successivo, dove troverete le informazioni che vi servono.

NOTA: Se intendete lavorare su un file immagine della PSP, cercate su internet il programma UMDGen. È una comoda utility che permette non solo di effettuare le operazioni appena descritte, ma ha anche altre funzioni utili quale la ricostruzione da zero del file immagine, l'eliminazione dei dati di "update" del firmware (per rimpicciolire la ISO), applicazione e creazione di patch PPF, compressione e decompressione delle ISO... insomma, tanta roba utile e carina! :)

Alcune nozioni fondamentali per lavorare sulle ISO (espansione della TOC, LBA, ECC)

Una volta rotto il ghiaccio con il mondo delle ISO, è il momento di passare rapidamente in rassegna alcuni importanti termini di comunissimo utilizzo quando si lavora su un file immagine. Verrete a contatto con molti di questi aprendo un qualsiasi file immagine con CDMage o altri editor, dunque è importante conoscere il significato di queste sigle.

  • Size/Dimensione: perché parlare di questo parametro? Molto semplice, perché è molto importante spiegare come vengono memorizzati i dati su un disco. Come accennato precedentemente, ogni settore di un disco contiene 2048 bytes di dati (più eventuali byte di controllo, per un massimo di 2352 bytes per settore). Questo significa che, ad esempio, un file di 20480 bytes occuperebbe esattamente 10 settori (se vi interessa sapere il numero di settori occupato da un file, basterà dividere la dimensione per 2048). Ma cosa accade se un file pesa, invece, 20481 bytes? Quell'unico byte di troppo obbligherà il disco ad utilizzare un intero nuovo settore per un solo byte, lasciando inutilizzati ben 2047 bytes! Iniziate a comprendere cosa vi stiamo suggerendo? ;)

  • TOC: La definizione di TOC è già stata data qualche paragrafo sopra. Mi preme invece spiegare a cosa serva la sua modifica. L'esempio precedente mostra che, nella realtà dei fatti, i settori che contengono il segmento finale di un file sono, statisticamente, non utilizzati del tutto. Come saprà bene chi ha provato a tradurre un testo, quasi mai il testo tradotto risulterà di dimensioni pari o inferiori (salvo l'aggiunta di DTE o formati di compressione, ovviamente), e dunque vi ritroverete a dover inserire un file più grande dell'originale. Come fare, senza dover spostare il file da dove è collocato all'interno del disco? Molto semplice, sfruttando proprio quei byte inutilizzati dell'ultimo settore!, e per farlo vi basterà modificare la TOC, che regola la dimensione massima dei file. Il procedimento in sé è discretamente complesso, ma i più curiosi potranno rivolgersi alla guida alla modifica della TOC scritta da Sephiroth 1311. Chi invece vuole badare direttamente al sodo, si diriga verso la sezione Utilità e scarichi il TOC Changer di Phoenix. Il suo utilizzo è semplicissimo, basterà selezionare il file, la ISO, la vecchia e la nuova dimensione. L'utility ha anche un comodo calcolatore della dimensione massima, e vi avvisa se state tentando di espandere troppo file. IMPORTANTE: il TOC Changer avvisa automaticamente qualora questo accadesse, poiché se esagerate con l'espansione finirete per far strabordare il file sul settore successivo, corrompendo quasi sicuramente il file seguente. In realtà, ogni tanto capita di trovare interi settori inutilizzati tra un file e l'altro, ma è un colpo di fortuna piuttosto raro. Potete controllare se vi sono settori dummy (cioè presenti ma inutili) dopo un file tramite CD Mage, cliccate col destro sul file che dovete espandere, selezionate "Browse file" e navigate sino alla sua fine, a quel punto potrete controllare il contenuto dei settori immediatamente seguenti a quello contenente la fine originale file. Se aveste davvero questo grosso colpo di fortuna, è possibile eludere il controllo sulla dimensione del Toc Changer attivando l'opzione di modifica dell'LBA, curandovi di lasciare il valore di LBA originario.

  • ECC: Ne abbiamo dato un cenno all'inizio della guida, ma vediamo di approfondire un po' il discorso. ECC sta per Error Correction Code, ed il suo compito è quello di verificare se i settori del disco sono integri o sono stati danneggiati, e se così tentare un ripristino. Come si sa, infatti, è molto semplice rovinare l'integrità di un disco, basta un graffio che renda impossibile al lettore la corretta lettura dei dati. Se questo accade, l'ECC del settore corrotto tenterà di rigenerare, per quel poco che può, i dati inattingibili. Se gli ECC falliscono il tentativo di ripristino, avverrà un crash della console. Dunque, è molto importante modificare gli ECC quando si lavora su un file immagine, in modo che i settori da voi modificati non vengano percepiti dal lettore come corrotti. In realtà, questa delicatissima operazione non è quasi mai necessaria, in quanto è automaticamente effettuata da tutti i migliori programmi di editing delle ISO (tra cui anche il TOC Changer). Tuttavia, in alcuni casi potrebbe essere necessario correggere manualmente gli ECC, ad esempio quando si inserisce un filmato STR in un ISO Playstation (per via del famoso audio XA). Dato che non è possibile inserire questi file con CD Mage, bisognerà farlo con altri programmi, che però non rigenerano gli ECC. Dunque, una volta inserito il filmato tradotto, occorrerà utilizzare il tool chiamato ECC Regen, disponibile anch'esso nella nostra sezione Utilità.

  • LBA: Dulcis in fundo, occorre spiegare che cosa s'intenda con LBA (acronimo di Logical Block Addressing). Esso è un po' l'equivalente dell'indirizzo di casa di una persona, in pratica è un valore numerico che informa circa la posizione di un file all'interno del disco. È qualcosa di molto simile ad un puntatore, soltanto che si riferisce al settore in cui un file comincia. Dovrebbe risultarvi ovvio che, modificando questo valore, potete spostare un file da una porzione all'altra di un file ISO. Questo è particolarmente utile se dovete ampliare grandemente il file, e dunque non vi basta una normale modifica alla TOC; se trovate, ad esempio, uno o più file che siete sicuri siano dummy e sono più grandi del file che dovete modificare, potreste deviare tutti i dati in quella zona dell'ISO.

NOTA IMPORTANTE: capita spesso di trovare giochi che, pur possedendo apparentemente una TOC standard, non la sfruttano affatto, utilizzando invece una TOC in formato proprietario nascosta agli occhi dell'utenti. In questo caso, c'è una conseguenza certa ed una potenziale. Quella certa è che non potrete modificare l'LBA senza trovare gli indici effettivi (questo è il caso di Vagrant Story), ma potrete comunque modificare la TOC ed ampliare un file fino alla fine del suo ultimo settore. Questo perché il gioco carica interamente ogni settore, senza controllare alcuna dimensione effettiva. Il secondo caso, il più rognoso, è invece quando il gioco controlla internamente anche la dimensione effettiva (come accade in Legend of Mana). In questa situazione non solo non potrete spostare, ma neanche espandere nessun file, nonostante la presenza di byte dummy nell'ultimo settore, a meno che non troviate gli indici reali. In questo caso, buona fortuna!

Cosa fare se non si trova (quasi) alcun file nell'ISO?

No, non è una domanda retorica fatta per pura ipotesi. È realmente possibile non trovare i file all'interno di un ISO! Questo può succedere se i programmatori hanno preferito occultare tutti (o quasi) i file, cancellando la TOC leggibile da Windows e creandone una alternativa che solo il gioco è in grado di leggere. In ogni caso, anche se così fosse, sappiate che troverete comunque almeno il file Eseguibile e, se state lavorando su PSX, un file chiamato SYSTEM.CNF (che informa la console circa la posizione dell'eseguibile). Cosa fare, in questi casi? Per prima cosa, sappiate che se non sapete programmare o non avete un programmatore come braccio destro, vi converrà alzare la bandiera bianca. In questi, infatti, occorre per prima cosa studiare il gioco, scoprire il formato proprietario della TOC e programmare un tool che si occupi dell'estrazione e del reinserimento dei file. Non ci sono grossi consigli che possiamo darvi, se non questo: partendo dall'eseguibile, rintracciate dove comincia nel file ISO, partendo dall'offset scopritene l'LBA, convertite la cifra ottenuta in esadecimale e cominciate a cercare all'interno dell'ISO questo valore. Se sarete fortunati, potreste scoprire l'indice nascosto. Tenete anche presente che molti giochi nascondono proprio nell'eseguibile la loro lista degli indici (Xenogears, ad esempio), ma altri la piazzano in una manciata di settori isolati nell'ISO, per poi caricarlo in RAM (l'esempio più notevole è probabilmente il sistema di indicizzazione di Chrono Cross, che occupa dei settori esterni all'eseguibile). Inoltre, non solo dovrete programmare qualcosa che aggiorni gli indici, ma anche che inserisca i file all'interno della ISO basandosi su di essi, dato che non avete alcuna TOC di riferimento.
Infine, succede a volte di trovare pochissimi file all'interno del disco, con uno di essi enorme e che occupa buona parte dello spazio. In quel caso, siete di fronte ad un archivio non occultato, ma che rimane pur sempre un archivio. Dovrete andarvi a trovare l'indice (a volte è un file piccolo comodamente estraibile via TOC standard), programmarvi un tool e scompattare il file grosso, se intendete modificarlo. Molto più facile a dirsi che a farsi... in ogni caso, una volta che avrete il necessario per lavorare sull'archivio e sul suo indice, dovrete semplicemente reinserirli come file normali, dopo aver compiuto il vostro lavoro.

- Dritte e consigli -

Questa sezione tratterà di alcuni "trucchetti del mestiere" che potranno rendervi molto più semplice la vita durante la vostra traduzione. Magari nessuna di questa operazione è "convenzionale", ma di certo aiutano molto con il lavoro sporco. ;)

In RAM veritas

Questo scherzoso adattamento del celeberrimo proverbio latino ha molto più di vero di quanto possa apparire di primo acchito. Alcuni di voi, consci del fatto che una modifica alla RAM è solo una modifica temporanea, destinata a sparire non appena l'emulatore sarà chiuso, potrebbero chiedersi il senso di tutto questo; il senso è semplicemente che in RAM è molto più semplice non solo trovare quel che si cerca, ma anche poter effettuare rapidamente tutte le prove tecniche di cui si ha bisogno. Tenete bene presente che gli emulatori, quando effettuano i cosiddetti "save state" (i salvataggi istantanei), non fanno altro che salvare una copia della RAM, aggiungendo un piccolo header. Dunque, benché sia anche possibile estrarre la RAM effettiva, il gioco solitamente non vale la candela, in quanto non potreste poi caricarla. Modificando un save state, invece, operazione equivalente alla modifica della RAM, potrete poi caricare la vostra RAM modificata. :)

La ricerca in RAM è indubbiamente il primo passo dal quale partire per iniziare a lavorare su un gioco Playstation 1/2 (il discorso vale un po' meno per i giochi NDS, visto che gli emulatori attuali non hanno grandi capacità di reggere i save state), per due semplici motivi: il primo che è molto più semplice trovare ciò che si cerca analizzando un file di pochi MB (o poche decine, nel caso della PS2), il secondo è che eventuali dati compressi appaiono decompressi in RAM (salvo casi di compressioni particolari, come quella di Final Fantasy Tactics, che rimane sempre attiva e viene decodificata al volo dal gioco, ma sono casi rari). Riassumendo, il vantaggio è duplice:

  1. si lavora solo sui dati in quel momento utilizzati dal gioco, restringendo enormemente il campo di ricerca.
  2. si bypassano momentaneamente le eventuali compressioni, salvo casi eccezionali.
Vediamo ora come effettuare il dumping della RAM, in realtà assai semplice. Per prima cosa, assicuratevi di avere l'opzione di Windows "Nascondi le estensioni per i tipi di file conosciuti" disattivata (si trova nel menu Opzioni Cartella, Visualizza), se siete pronti, prendete un emulatore Playstation (come caso prendiamo l'ePSXe). Avviate il gioco, e giocatelo fino ad arrivare al momento che vi interessa, quando è visualizzato del testo che volete modificare; a questo punto, subito prima che compaia il dialogo successivo, create un save state e tornate a Windows. Navigate fino alla cartella dell'emulatore, aprite la cartella dei save states, e cercate il file appena creato. Il modo più facile di farlo è ordinare i file secondo l'ultima modifica, ma potete anche comprendere quale sia il file giusto dal nome (esso è formato dal nome dell'eseguibile del gioco più un'estensione da 0 a 4 che denota il numero del save, visto che ePSXe ne ammette fino a 5 per gioco; ovviamente lo 0 indica il primo). Non siete però ancora pronti per modificare la RAM, in quanto tutti i save state vengono compressi dagli emulatori per risparmiare spazio su hard disk; prendete allora questo file ed aggiungete l'estensione .gz (ecco a che serviva quell'opzione di cui prima! ;) ), ed apritelo col software che preferite (Winrar, 7zip, ecc.). Al suo interno trovete il "vero" save state, decomprimetelo e piazzatelo nella medesima cartella. Non v'è bisogno di ricomprimerlo per caricarlo, dacché gli emulatori accettano anche save state decompressi. Per essere sicuri che sia tutto a posto, provate a caricarlo con l'emulatore, se ci riuscite, siete finalmente pronti! Infine, aprite il file appena decompresso con un hexeditor. A questo punto, potete effettuare tutte le operazioni descritte nella guida base e tipiche dei primi momenti di hacking: ricerca della table, modifica dei testi, scansione per la ricerca di grafica (che spiegheremo dopo), ecc.

Una volta che avrete trovato quanto cercavate, potete benissimo effettuare tutte le prove che volete modificando al volo il save state e caricandolo con l'emulatore. Il grandissimo vantaggio di operare in questo modo, ovviamente, dovrebbe esservi ormai chiarissimo: non dovrete resettare il gioco e tornare allo stesso punto per effettuare un test, necessitando così di pochi secondi per ogni prova che dovrete effettuare. Questi test tecnici possono andare dalla semplice modifica al volo dei testi (utile per scoprire la table o eventuali DTE, ad esempio) a operazioni più complesse, quali la modifica di puntatori o addirittura hack del codice del gioco. Ovviamente, una volta che avrete effettuato tutte le prove che vi occorrono, vi toccherà trasferire nei file reali tutte le modifiche effettuate, che altrimenti rimarrebbero confinate al solo save state. Nel caso sappiate già dove si trovano i dati che avete modificato, non c'è altro da dire, basterà anche un copia/incolla. La cosa è invece un tantino diversa se avete appena TROVATO in RAM dati che non sapete dove siano collocati nel file immagine.

Indovina il file!

Mettiamo dunque che abbiate trovato del testo, e vogliate localizzarlo all'interno del file ISO, ma non volete, ovviamente, sobbarcarvi l'onere di andare a perscrutare ogni singolo file all'interno del disco. Per vostra (e nostra!) fortuna c'è un metodo forse un po' laborioso, ma semplicissimo per scoprire in che punto di un file immagine sia localizzata la porzione di dati che v'interessa. NOTA: questo metodo non è utilizzabile se i dati che andate cercando sono compressi, in quanto saranno decompressi in RAM ma comunque occultati nel file immagine. Questo metodo, infatti, è anche una vera e propria prova del nove per scoprire se i testi (o altri dati) di un gioco siano compressi o meno. Per effettuare quest'operazione è necessario un solo programma: HexWorkshop. Vi avvertiamo che, quando dovete svolgere queste operazioni, se disponete di poca RAM (inferiore ai 2GB se lavorate su un ISO PSX) il processo di ricerca sarà alquanto lento. Detto questo, procediamo con l'operazione!

Operazione preliminare è che voi già sappiate a che offset nella RAM si trovino i dati che intendete ricercare all'interno dell'ISO. Detto questo, aprite con HexWorkshop sia il file contenente la RAM (solitamente un save state) che l'intera ISO (sì, avete capito bene... non preoccupatevi, HexWorkshop gestisce benissimo i file enormi). Nel file della RAM, saltate all'offset con i dati che v'interessano, selezionate all'incirca 8-10 hexbytes e utilizzate la funzione copia (CTRL+C o nel menu Edit trovate l'opzione Copy). A questo punto, spostatevi sul file ISO che avete aperto con HexWorkshop e premete CTRL+F. Incollate nel campo "Value" i byte interessanti che avete precedentemente copiato, assicuratevi che in "Type" sia evidenziata l'opzione HexValue e che "Find All instances" sia disattivato. Se tutto è pronto, premete Invio (o cliccate su Ok). Vedrete che il programma inizierà a cercare quei byte all'interno dell'ISO (la velocità dipenderà da quanta RAM disponete sul PC). Se la ricerca risulterà infruttuosa, assicuratevi di non aver compiuto qualche distrazione, altrimenti è probabilissimo che, purtroppo per voi, i dati che vi servono siano compressi. Se invece vedete che il programma smette di cercare e vi evidenzia i byte che avevate scelto, bingo! Segnatevi immediatamente l'offset esadecimale in cui si trovano i byte nell'ISO, ma continuate la ricerca, dato che potrebbero esservi più occorrenze di quei dati. Ricordatevi sempre che più lunga è la sequenza che si cerca, meno possibilità si hanno di trovare erroneamente una sequenza casualmente simile a quella del file che in realtà vi interessa. In ogni caso, se trovate una sola occorrenza, bene così, altrimenti segnatevi gli offset anche degli altri risultati ottenuti.

E adesso, l'ultimo passo. Aprite la calcolatrice di Windows ed assicuratevi che sia impostata su Scientifica (o su Programmatore se usate quella di Windows 7). Inserite nella calcolatrice l'offset che v'interessa e convertitelo in decimale (basta passare dalla modalità Hex a Dec e Windows attuerà da sé la conversione). A questo punto, dovrete effettuare una divisione. Se state lavorando su un file BIN, dovrete dividere per 2352, se lavorate su un file ISO, dovrete dividere per 2048. Il risultato andrà approssimato per difetto.

Esempio: 0x456789 -> dec 4548459 / 2352 = 1933,88.

In questo caso, il risultato che cercate sarà 1933. Questo risultato corrisponde approssimatamente all'LBA del file che contiene i dati che v'interessano. Come spiegato prima, l'LBA è l'equivalente di un puntatore, conoscendolo potrete facilmente risalire a quale sia il file della ISO a contenere i dati che andate cercando. Aprite il file ISO con IsoBuster o CDMage e disponete i file in ordine di LBA (solitamente sono in ordine alfabetico), scorrete i valori fino a trovare il valore in difetto più vicino a 1933 (ad esempio, se avete due file con LBA 1928 e 1934 dovrete scegliere il file con il valore minore, perché ingloba l'indirizzo che serve a voi, mentre 1934 è successivo). Et voilà, il file è servito. ;)

SUGGERIMENTO: Qualora vi trovaste a lavorare con archivi di files, e non con file ISO veri e propri, non potreste in teoria cavarvela con questo metodo. Un trucchetto che, personalmente, abbiamo spesso usato è quello di creare un file ISO contenente tutti i file dell'archivio, e poi cercare comodamente con questo metodo appena spiegato i dati che ci servono. Forse come operazione è un po' cervellotica, ma è sicuramente efficace!

- Archivi e casi particolari di puntatori -

Lavorare su archivi e sottofile

WORK IN PROGRESS.

I puntatori alla RAM

WORK IN PROGRESS.

- La grafica delle console funzionanti a pixel -

Il sistema a pixel

La stragrandissima parte dlle console moderne disegna la sua grafica con il metodo dei pixel, utilizzato anche dai computer. Un'immagine a pixel è composta da un'infinità di punti luminosi, e ciascuno di essi può avere un preciso colore. Mentre il sistema a tile aveva come unità base un'unione di più pixel (es. una tile 8x8 è composta da 16 pixel), nelle immagini a pixel l'unità base è anche l'unità minima. Il concetto è molto semplice, e dovrebbe essere chiaro a tutti, a differenza di quanto accaduto con il sistema a tile.

Questo metodo di immagazzinamento dei dati grafici permette una maggiore qualità e personalizzazione dell'immagine, a scapito però delle dimensioni; è infatti molto più dispendioso, a livello di memoria, gestire immagini a pixel che a tile. Proprio la pochezza della VRAM e la necessità di "riciclare" la grafica impediva alle console a 8 e 16 bit l'utilizzo di grafica a pixel. Tuttavia, bisogna considera che non tutte le console hanno abbandonato il sistema a tile. Ad esempio, il Nintendo DS può utilizzare grafica ibrida, in parte a pixel, in parte a tile, a seconda di cosa venga più conveniente per gli sviluppatori.

- L'hacking della grafica a pixel -

L'editing della grafica a pixel potrebbe dare meno grattacapi rispetto a quella a tile, in quanto un po' tutti, almeno una volta, si sono trovati a lavorare su un'immagine utilizzando il proprio computer. La maggior difficoltà, dunque, non starà tanto nella modifica quanto nella decodifica e ricodifica dei formati grafici utilizzati dalle console più moderne.

Sostanzialmente, è possibile dividere le immagini in due categorie: i file che contengono tutte le informazioni necessarie al rendering dell'immagine e quelli che invece contengono soltanto la grafica, senza informazioni di sorta. Quest'ultimo tipo è detto grafica raw (grezza, in inglese), e il lavoro necessario per la sua modifica è nettamente diverso da quello del primo tipo. Ma cominciamo con i formati grafici più comuni, con uno sguardo soprattutto alle prime due Playstation.

Formati complessi

1) Modifica dei file TIM

WORK IN PROGRESS.

2) Modifica dei file TIM2

WORK IN PROGRESS

Il formato RAW

WORK IN PROGRESS

L'arte del rimappaggio

WORK IN PROGRESS

- Creazione della patch per un ISO o ROM DS -

Per creare le patch da applicare ai giochi con un filesystem si usano solitamente due tipi di formato: il PPF e l'Xdelta. Bisognerà scegliere tra i due a seconda del lavoro tecnico svolto sul gioco. Sostanzialmente, il formato PPF è da prediligere quando non si sia ritoccata pesantemente la struttura del gioco (come quando si riallocando i file per espanderli), mentre l'Xdelta è preferibile quando si siano effettuate modifiche che alterano la struttura interna del file ISO o della ROM. In casi molto particolari potrebbe essere necessario doversi creare un patcher personalizzato, ma va da sé che questo richiede una certa dose di abilità di programmazione. Quando scrivrete il readme ricordatevi, inoltre, di raccomandare all'utente di tenere sempre una copia di backup del file ISO/ROM originale, in caso il processo di patching fallisse.

1) Il formato PPF: specifiche e creazione della patch

Il formato PPF è lo standard per le patch Playstation. Esistono tre tipi di formati PPF, i primi due risalenti alla fine degli anni '90 e l'ultimo ai primi anni 2000. I primi due tipi sono da lungo tempo scomparsi dalla circolazione, e si è definitivamente affermato come standard il PPF3. Dal punto di vista tecnico, una PPF è simile ad una IPS (di cui abbiamo parlato nella guida precedente), con l'unica differenza di essere in grado di lavorare su un file di qualsiasi dimensione. Una PPF viene creata a partire da un confronto binario tra il file non modificato e quello patchato, creando un grande archivio di informazioni sui byte da modificare e dove siano posizionati i dati modificati. L'unico, grosso, neo del formato è quello di non poter gestire spostamenti di dati all'interno del file ISO/ROM. Ad esempio, se voi spostate avanti un file di 4000 byte all'interno dell'ISO, anche non modificando il suo contenuto, il formato PPF inserirebbe nella patch non solo i 4000 byte spostati, ma addirittura la totalità dei dati dell'intero ISO che seguono il file che avete spostato! E sì, questo accadrebbe anche senza modificare null'altro, oltre allo spostamento! Pertanto, il formato PPF è consigliato finché non si effettuino grossi spostamenti di file, in quel caso bisognerà utilizzare il formato Xdelta.
NOTA: Le modifiche alla TOC, se riguardano solo l'espansione di un file, NON causeranno problemi con il formato PPF, dato che ci si limita a sovrascrivere i dati di padding di fine settore. Andate tranquilli, perciò, se avete solo espanso qualche file. Anche lo spostamento di una manciata di file non causerà una patch troppo grande, purché questo spostamento riguardi solo una minoranza dei dati presenti all'interno del gioco.

Creare una patch PPF è un gioco da ragazzi grazie al programma PPF Studio, che potete tranquillamente scaricare dalla pagina Utilità. La semplicità di utilizzo non richiede spiegazioni particolari. Nella parte superiore della schermata selezionate dove creare la patch e con quale nome, inserite una breve descrizione della patch ed eventualmente un file diz (si tratta di un txt dove potete includere informazioni più dettagliate da far apparire quando l'utente intende patchare il gioco). Nel box immediatamente inferiore basterà selezionare il file originale e quello modificato, per poi limitarsi ad avviare il processo. Tutto qui! L'opzione andrà ripetuta per ogni disco di gioco, se vi trovate a lavorare su un titolo che utilizza più di un disco.
NOTA: Come opzioni avanzate trovate la possibilità di attivare un controllo sul checksum del file immagine che l'utente tenterà di patchare e la possibilità di effettuare inserire i dati per l'unpatching (rimozione della patch). La prima opzione ha un senso ben preciso, mentre la seconda è assolutamente inutile, in quanto raddoppierebbe le dimensioni della vostra patch. In ogni caso, vi consigliamo di disattivare il controllo del checksum, perché i file immagine possono differire di qualche byte a seconda di tanti fattori (condizione della superficie del disco da cui si è creato il file immagine, programma utilizzato, modifiche minime tra una edizione del gioco e l'altra, ecc.), quando la patch funzionerebbe comunque senza alcun problema. Conviene dunque disattivarla per non far spaventare l'utente.

Il procedimento di patching è altrettanto semplice. Bisognerà scaricare PPFOmatic (anch'esso nella sezione Utilità, è una vecchia conoscenza per chi utilizza le nostre patch ;) ), comodissimo programma che renderà il patching un gioco da ragazzi. Basta selezionare il file da patchare e la patch... e premere Apply. Davvero semplicissimo ed efficacissimo, l'unica pecca è la lentezza nell'applicare patch molto grandi, ma si tratta di un dettaglio, quello che importa veramente è la facilità di utilizzo e l'affidabilità.

2) Il formato XDelta: specifiche e creazione della patch

Passiamo ora all'altro formato, quello XDelta. Come accennato prima, il grande vantaggio dell'XDelta è quello di essere in grado di rilevare gli spostamenti di dati, oltre che le modifiche, tramite una comparazione non binaria ma sincronica (il programma, non appena rilevata una modifica, controlla se i dati sono stati modificati o solo spostati, mentre il formato PPF non contempla la seconda opazione). Esso è dunque fondamentale quando si lavora su una ROM NDS o si spostano molti (o tutti) file all'interno di un ISO.

Per prima cosa, occorre scaricare il DeltaPatcher di Phoenix dalla solita sezione "Utilità". Il programma si presenta in due versioni: DeltaPatcherLite e DeltaPatcher. Il primo effettua solo le operazioni di patching, mentre il secondo sia di patching che di creazione della patch. Il Lite, in parole povere, è destinato agli utenti finali, ed è dunque il programma da allegare alla vostra patch. La creazione verrà invece affidata al DeltaPatcher completo.

Avviate il DeltaPatcher e scegliete, in basso, "Crea patch XDelta". Selezionate file originale, quello modificato e il nome della patch, e decidete se attivare il checksum (attivatelo per le ROM, non per i file ISO). Potrete poi impostare un livello di compressione più o meno alto, ma la cosa è di scarsa importanza, se avete in mente di creare un archivio compresso contenente patch e documentazione. Premete poi "Crea patch" ed attendete. Nulla di più.

Le operazioni di patching sono altrettanto semplici. Basterà selezionare file da patchare e patch, decidere se abilitare o meno il controllo del checksum e se tenere una copia di backup del file originale (CONSIGLIATO). Basterà poi premere "Applica patch" per dare avvio al tutto. Simple as that!

Creazione dell'archivio contenete la patch

Adesso siete pronti a distribuire la vostra patch! Createvi un bello zip/rar/7z con:

  • Il programma da usare per patchare la ROM (PPFOMatic o Xdelta)
  • Un bel file Leggimi ed eventuali altri documenti (guide al patching, ecc.)
  • La vostra patch (o le patch, se il gioco contempla più dischi)

Nota importante: molti emulatori della Playstation supportano un sistema di patching automatico che patcha temporaneamente l'ISO. A differenza di quanto avviene con le ROM, però, non conviene attivarlo, in quanto basterà una patch appena sopra la decina di MB per rallentare le opzioni di emulazione. Sconsigliate sempre quest'opportunità quando scrivete il file Leggimi, ed assicuratevi che i vostri utenti applichino la patch al loro file immagine.

Ultimo consiglio: prima di pubblicare la patch, applicatela voi stessi al gioco e accertatevi che tutto funzioni come si deve. Quando effettuate il betatesting di una patch, inoltre, assicuratevi di compierlo su quante più piattaforme possibili (o almeno sull'hardware originario). Ad esempio, se intendete tradurre un gioco PSX, testatelo sulla console originale, oppure, in mancanza di questa, su una PSP (che emula molto bene, bug inclusi, la console PSX). L'ideale sarebbe effettuare un testing su almeno tre piattaforme (PSX, PS2, emulatore), ma se ciò non fosse possibile, andate dritti sull'hardware originale. Non fidatevi troppo degli emulatori, specialmente se siete andati a modificare il codice del gioco. Spesso, infatti, gli emulatori ignorano i problemi tecnici che si possono verificare su una console, e potreste ritrovarvi con una patch che funziona bene su emulatore ma ha problemi sulla console effettiva (cosa capitata a noi diverse volte).

- Conclusioni -

Purtroppo, come avrete certamente notato, la guida è tutt'altro che completa, ma non mancheremo di aggiornarla col passare del tempo. In ogni caso, essa dovrebbe essere in grado di fornirvi almeno le basi per un primo editing di giochi che utilizzano un file system. L'approccio che il lavoro su un gioco moderno richiede è diversissimo da quello richiesto per le ROM dei sistemi a 8/16 bit, forse più complesso, ma le possibilità che vi si aprono sono certamente molte di più! Comunque sia, vi preghiamo di tenere sempre un occhio su questa guida e sui suoi futuri aggiornamenti... e se avete domande particolari, non esitate a farle sul nostro forum! ;).