NewsIl GruppoTraduzioniGuidaUtilitàLinks
L'HexWorkshop e le table

- Introduzione -

Vi sarete chiesti: "È mai possibile utilizzare l'HexWorkshop per caricare le tabelle e procedere alle modifiche del testo?"
Ebbene sì, è possibile (anche se con dei limiti che vi spiegherò più avanti).
Innanzitutto comincio con il dire che questa guida nasce mettendo in ordine i molti appunti sparsi da eoni :D sul mio HD.
L'illuminazione su questo metodo venne quando uscì il thingy, che insieme all'eseguibile aveva anche una tabella ASCII. La tabella ASCII dell'HexWorkshop è caricata di default ed io immaginai che da qualche parte questa tabella doveva pur trovarsi.
Trovare la tabella fu facile, ma non lo fu altrettando capire come caricare i dati di un'altra tabella. Poi iniziai ad usare il thingy e non mi impegnai più di tanto sulla questione. Poi un giorno, parlandone con ombra, venni a capo dell'arcano. Ripresi questo metodo con Xenogears (vero saffo?). Mi fu molto utile per effettuare le correzioni di semplici errori di battitura. È la sua utilità con Vagrant Story è stata ancora maggiore.
Non c'è alcun dubbio, l'HexWorkshop è un signor editor.
Ma bando alle ciance e veniamo all'argomento di questa guida. Il file che ci interessa è contenuto nella directory di installazione del programma, e precisamente nella cartella CharMaps.

- Struttura del file ASCII.map -

Ecco la struttura del file ASCII.map.

00000000 4857 434D 0100 0000 0000 0000 4153 4349 4900 2837 2062 6974 2900 0000 0000 0000 HWCM........ASCII.(7 bit).......
00000020 0000 0000 0000 0000 0000 0000 3720 6269 7420 4153 4349 4900 0000 0000 0000 0000 ............7 bit ASCII.........
00000040 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ................................
00000060 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ................................
00000080 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ................................
000000A0 0000 0000 0000 0000 0000 0000 4272 6561 6B50 6F69 6E74 2053 6F66 7477 6172 652C ............BreakPoint Software,
000000C0 2049 6E63 2E00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000  Inc............................
000000E0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ................................
00000100 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E ................................
00000120 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E ................................
00000140 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 002A 002B 002C 002D 002E 002F . .!.".#.$.%.&.'.(.).*.+.,.-.../
00000160 0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 003A 003B 003C 003D 003E 003F .0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?
00000180 0040 0041 0042 0043 0044 0045 0046 0047 0048 0049 004A 004B 004C 004D 004E 004F .@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O
000001A0 0050 0051 0052 0053 0054 0055 0056 0057 0058 0059 005A 005B 005C 005D 005E 005F .P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._
000001C0 0060 0061 0062 0063 0064 0065 0066 0067 0068 0069 006A 006B 006C 006D 006E 006F .`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o
000001E0 0070 0071 0072 0073 0074 0075 0076 0077 0078 0079 007A 007B 007C 007D 007E 802E .p.q.r.s.t.u.v.w.x.y.z.{.|.}.~..
00000200 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E ................................
00000220 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E ................................
00000240 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E ................................
00000260 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E ................................
00000280 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E ................................
000002A0 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E ................................
000002C0 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E ................................
000002E0 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E 802E ................................
Il file può dividersi in due blocchi. Il primo va dall'inizio del file fino all'offset 0xFF, mentre il secondo va da 0x100 fino alla fine del file. Il secondo blocco è quello che ci interessa perché è in esso che è contenuta la nostra tabella.
Iniziamo dicendo che non possono essere usate tabelle "complesse" (per intenderci, quelle che contengono "DTE" e "dizionari"). Quindi possono essere usate solo tabelle in cui il carattere è dato da un solo byte (... 85=f; 86=g; 87=h; 88=i; ...).
Sulla prima parte del file non mi sono soffermato molto. Ho scoperto che all'offset 0x0C è possibile inserire il nome del "Filtro caratteri" con il quale identificare il file (qui è ASCII). All'offest 0x2C è invece presente una descrizione del tipo di tabella (7 bit ASCII: a noi non interessa). All'offset 0xAC troviamo invece le informazioni sull'autore (BreakPoint Software, Inc.). Per farvi capire, ecco la prima parte della table di Vagrant Story per l'HW.
00000000 4857 434D 0100 0000 0000 0000 5442 4C20 5641 4752 414E 5420 5300 0000 0000 0000 HWCM........TBL VAGRANT S.......
00000020 0000 0000 0000 0000 0000 0000 3720 6269 7420 4153 4349 4900 0000 0000 0000 0000 ............7 bit ASCII.........
00000040 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ................................
00000060 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ................................
00000080 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ................................
000000A0 0000 0000 0000 0000 0000 0000 5361 646E 6573 6369 7479 2074 7261 6475 7A69 6F6E ............Sadnescity traduzion
000000C0 6900 0003 2E00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 i...............................
000000E0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ................................

- Inserire la table nel file ASCII.map -

Passiamo alla seconda parte del file che è quella che davvero ci interessa.
Da come potete vedere sopra i dati della tabella sono dati da una coppia di byte, cioè: {00}{byte}. Facendo un po' di prove, ho scoperto che per ottenere l'offset in cui inserire il nostro valore della table bisogna eseguire un certo calcolo. Per capirci, se volessimo inserire il valore 85=f il calcolo sarebbe {85}*2 + 0x101. Bisogna moltiplicare per due perché come detto su si tratta di una "coppia di byte" e si somma 0x101 perché 0x100 è l'header (ricordate, la tabella inizia a 0x100) e 1 perché il dato è il secondo byte della coppia (grazie a ombra che tempo fa mi spiegò l'arcano :P ). Quindi, secondo il nostro esempio, l'offset dove inserire 85=f è 0x20B.
Una volta inserita la nostra tabella ed inserito un identificativo per poterla riconoscere (TBL VAGRANT) possiamo caricarla con HexWorkshop.
Andiamo nel menu Options > Preferences e scegliamo Display. In basso a destra è visibile un menu a tendina "Character Filter".
In questo menu ora è possibile scegliere la nostra tbl. Infatti nella lista è apparso un nuovo elemento che ha come nome quello che gli abbiamo dato (TBL VAGRANT). Ed ecco trasformato il nostro caro HexWorkshop in un editor un tantino più "user friendly".
È obbligatorio impostare per i valori non utilizzati nella table {80}{2E}, come si vede nel file originale. Questa combinazione di byte viene interpretata da HexWorkshop come "byte sconosciuto", pur apparendo come un punto.
Ricordate anche che il byte che precede il valore è molto importante: {00}{XX} significa infatti che potrete "scrivere" quel valore con la vostra tastiera, mentre {80}{XX} farà in modo che quel carattere possa essere solo visualizzato e non scritto (come, appunto, accade con {80}{2E}).
In tal modo questi valori non possono essere utilizzati in modalità editor di testo e non vi daranno problemi se volete modificare il file con l'HexWorkshop. Vi assicuro che con tabelle semplici la flessibilità dell'HW come editor non è seconda quasi a nessuno.
Infine, per i pochi valorosi che hanno letto sin qui, vi possiamo dire che da oggi (18 dicembre 2007) è presente sul nostro sito, nella sezione utilità, un tool, creato da Phoenix, che fa tutti questi passaggi automaticamente. :P

mickey & Sephiroth 1311
Ottobre 2006