Benvenuto Visitatore(Log In|Registrati)

> Aiuto per il main di Kyrandia, [La discussione su IAGTG dalla quale tutto e' partito...]
ragnarok
messaggio1 Dec 2005, 10:22
Messaggio #1





Gruppo: Gamer
Messaggi: 10
Iscritto il: 1 December 05
Utente Nr.: 2.634
BGE Daggerfall, Morrowind
SO WinXP




Ciao,

sto convertendo in italiano Kyrandia 1 cdtalkie grazie al tool di DK.
Alcuni testi pero' sono all'interno del main.exe.

Non c'e' problema coi testi di uguale dimensione, ma se devo inserire una stringa piu' lunga?
Ho guardato il tut su Kyrandia 3 ma, in questo caso, non riesco a trovare una soluzione.

Qualcuno mi puo' spiegare o dare una mano?

Grazie
Ciao
 
 
Start new topic
Risposte
Syxtem
messaggio16 Dec 2005, 09:13
Messaggio #2



Gruppo icone

Gruppo: UST Member
Messaggi: 497
Iscritto il: 17 February 03
Utente Nr.: 2.153
SO Win95




Il tempo a mia disposizione non è tanto, quindi ho potuto fare velocemente soltanto qualche osservazione.
Ci sono vari tipi di "frasi" memorizzate.
Io ne ho analizzate un paio... non so se le restanti siano analoghe o meno. Come ho detto non ho avuto il tempo materiale per controllare.
Ad ogni modo questo è quel poco che ho ricavato:

Tipo di frase 1 - Offset 0x0002EF5C:

CODICE
0002EF5C 6465 766F 206D 6574 7465 7265 2076 6961 2071 7565 7374 6F2E 2E00 466F 7273 6520 6465 766F devo mettere via questo...Forse devo

0002EF80 2061 7474 656E 6465 7265 2063 6865 206C 2741 6D75 6C65 746F 2072 6961 6371 7569 7374 6920  attendere che l'Amuleto riacquisti

0002EFA4 6920 7375 6F69 2070 6F74 6572 692E 0045 2720 756E 2067 696F 6965 6C6C 6F20 6D61 2070 6572 i suoi poteri..E' un gioiello ma per

0002EFC8 6368 6527 2065 2720 6E65 726F 3F00 4568 692C 2070 756F 2720 746F 726E 6172 6520 7574 696C che' e' nero?.Ehi, puo' tornare util

0002EFEC 6520 7365 206D 6920 7365 6E74 6973 7369 206D 616C 652E 004F 7261 206E 6F6E 206D 6920 7365 e se mi sentissi male..Ora non mi se

0002F010 6E74 6F20 7072 6F70 7269 6F20 616C 6C61 2073 7561 2061 6C74 657A 7A61 2E00 466F 7273 6520 nto proprio alla sua altezza..Forse


Per capire bene come funzionano i riferimenti qua, forse può aiutare l'osservazione del codice assembly.
CODICE
ovr128:074D 68 E0 01                             push    offset aForsePrimaDevo; "Forse prima devo mettere via questo.."

ovr128:077B 68 06 02                             push    offset aForseDevoAtten; "Forse devo attendere che l'Amuleto riac"...


Come si può notare, le frasi vengono "caricate" attraverso un push, che le piglia dalla memoria.
Ora osserviamo i byte dell'istruzione. 0x68 è l'opcode del PUSH e quindi non ci interessa.
Gli altri 2 byte indicano l'indirizzo della frase (e ovviamente vanno scambiati a causa della codifica Little-Endian dell'Intel).
Quindi abbiamo 0x01E0 e 0x0206.
Ovviamente questo non significa che va a cercare tutto questo nelle posizioni 0x01E0 e 0x0206. Come sai (e se non lo sai te lo dico io), spesso gli eseguibili dos vengono suddivisi in "pagine" che puoi pensare come tanti file separati. Questo significa che la frase sarà alla posizione 0x01E0 di una determinata pagina. Scovarla non è particolarmente difficile, visto che sappiamo già dove cercare la frase. E con poco sforzo riusciamo a scoprire che la pagina che ci interessa inizia a 0x2ED70
Infatti 0x2ED70+0x01E0 ci porta all'inizio della prima frase, mentre 0x2ED70+0x0206 ci porta all'inizio della seconda.
Quindi dovresti aver capito che per modificare correttamente questi puntatori, sono da modificare opportunamente gli indirizzi nei push.
Al massimo ti posso anche allegare un txt col listato assembly, così li puoi individuare forse più agevolmente...


Tipo di frase 2 (dizionario) - Offset 0x0003444C:

CODICE
0003444C 7468 7973 7400 4171 7561 6D61 7269 6E65 0044 6961 6D6F 6E64 0045 6D65 7261 6C64 0050 6561 thyst.Aquamarine.Diamond.Emerald.Pea

00034470 726C 0052 7562 7900 5065 7269 646F 7400 5361 7070 6869 7265 004F 7061 6C00 546F 7061 7A00 rl.Ruby.Peridot.Sapphire.Opal.Topaz.

00034494 4F6E 7978 0053 756E 7374 6F6E 6500 4D6F 6F6E 7374 6F6E 6500 5261 696E 626F 7773 746F 6E65 Onyx.Sunstone.Moonstone.Rainbowstone



000344B8 004C 6F64 6573 746F 6E65 0052 6F73 6500 5475 6C69 7000 4F72 6368 6964 0053 696C 7665 7220 .Lodestone.Rose.Tulip.Orchid.Silver

000344DC 526F 7365 0053 696C 7665 7220 5374 6174 7565 7474 6500 5369 6C76 6572 2043 6F69 6E00 476F Rose.Silver Statuette.Silver Coin.Go

00034500 6C64 2043 6F69 6E00 476F 6C64 2052 696E 6700 526F 7961 6C20 4368 616C 6963 6500 5069 6E65 ld Coin.Gold Ring.Royal Chalice.Pine

00034524 636F 6E65 0041 636F 726E 0057 616C 6E75 7400 4576 6572 676C 6F77 696E 6720 4669 7265 6265 cone.Acorn.Walnut.Everglowing Firebe

00034548 7272 6965 7300 4669 7265 6265 7272 6965 7300 4669 7265 6265 7272 6965 7300 4669 7265 6265 rries.Fireberries.Fireberries.Firebe

0003456C 7272 6965 7300 4669 7265 6265 7272 6965 7300 4669 7265 6265 7272 6965 7300 4669 7368 0046 rries.Fireberries.Fireberries.Fish.F


Qui la faccenda è un po' diversa e possiamo procedere per un'altra strada.
Dopo uno studio dei riferimenti che IDA realizza è facile notare che tutte queste parole sono "indicizzate" in questa posizione del file: 0x2DC80
CODICE
0002DC80 D256 172B D956 172B E256 172B ED56 172B F556 172B FD56 172B 0357 172B 0857 172B 1057 172B .V.+.V.+.V.+.V.+.V.+.V.+.W.+.W.+.W.+

0002DCA4 1957 172B 1E57 172B 2457 172B 2957 172B 3257 172B 3C57 172B 4957 172B 5357 172B 5857 172B .W.+.W.+$W.+)W.+2W.+<W.+IW.+SW.+XW.+

0002DCC8 5E57 172B 6557 172B 7157 172B 8257 172B 8E57 172B 9857 172B A257 172B B057 172B B957 172B ^W.+eW.+qW.+.W.+.W.+.W.+.W.+.W.+.W.+

0002DCEC BF57 172B C657 172B DE57 172B EA57 172B F657 172B 0258 172B 0E58 172B 1A58 172B 1F58 172B .W.+.W.+.W.+.W.+.W.+.X.+.X.+.X.+.X.+

0002DD10 2958 172B 3458 172B 3958 172B 3F58 172B 4A58 172B 5658 172B 5F58 172B 6458 172B 6B58 172B )X.+4X.+9X.+?X.+JX.+VX.+_X.+dX.+kX.+

0002DD34 6F58 172B 7458 172B 7C58 172B 8058 172B 8558 172B 8E58 172B 9A58 172B A758 172B B058 172B oX.+tX.+|X.+.X.+.X.+.X.+.X.+.X.+.X.+

0002DD58 B758 172B C158 172B C758 172B D158 172B DA58 172B E358 172B F058 172B FB58 172B 0659 172B .X.+.X.+.X.+.X.+.X.+.X.+.X.+.X.+.Y.+

0002DD7C 1259 172B 1E59 172B 2C59 172B 3A59 172B 4759 172B 5559 172B 6359 172B 7659 172B 8259 172B .Y.+.Y.+,Y.+:Y.+GY.+UY.+cY.+vY.+.Y.+

0002DDA0 8E59 172B 9959 172B A459 172B B259 172B C059 172B CE59 172B DC59 172B E859 172B F459 172B .Y.+.Y.+.Y.+.Y.+.Y.+.Y.+.Y.+.Y.+.Y.+

0002DDC4 FB59 172B 025A 172B 095A 172B 105A 172B 175A 172B 1E5A 172B 255A 172B 2C5A 172B 335A 172B .Y.+.Z.+.Z.+.Z.+.Z.+.Z.+%Z.+,Z.+3Z.+

0002DDE8 3A5A 172B 4A5A 172B 5A5A 172B 6A5A 172B 7A5A 172B 8A5A 172B 985A 172B A95A 172B BA5A 172B :Z.+JZ.+ZZ.+jZ.+zZ.+.Z.+.Z.+.Z.+.Z.+

0002DE0C CA5A 172B DF5A 172B EE5A 172B FF5A 172B 0A5B 172B 165B 172B 245B 172B 2D5B 172B           .Z.+.Z.+.Z.+.Z.+.[.+.[.+$[.+-[.+    

Questa è la parte "incriminata".
Si tratta di byte che vanno di 4 in 4, ma I valori da osservare per i nostri scopi sono solamente i primi due (per facilitarci il lavoro), che come al solito vanno scambiati per poter leggere l'indirizzo correttamente (es. D256 -> 56D2).
Procedendo per confronto, possiamo notare che abbiamo 56D2, 56D9, 56E2 etc...
56D9-56D2 = 7
56E2-56D9 = 9 ...
Se osserviamo le frasi del dizionario, notiamo che Garnet. è lungo 7 byte, Amethyst. è lungo 9... (mi raccomando, il byte 0x00 alla fine di ogni parola è necessario per non produrre bug)
Quindi se uno vuole trasformare Garnet. in GarnetA. non dovrà fare altro che tradurre inserendo un byte con l'editor esadecimale (togliendone uno alla fine dell'elenco, in modo da non condizionare tutto il resto del file) e quindi andare in questa sezione degli indici e trasformare TUTTI gli indici DOPO quello della parola tradotta a seconda delle lettere aggiunte.
In questo caso la lista degli indici diventerà ...
56D2, 56DA, 56E3 ...
Ricordati ovviamente che quando li devi riscrivere, le coppie di byte vanno di nuovo invertite.

Spero che si sia capito abbastanza. Mi rendo conto che se uno ha poca dimestichezza con queste cose, non riesca a vedere con chiarezza tutto ciò.
Ad ogni modo è un forum, quindi se non hai capito... chiedi ;)


PS. Mi sono accorto ora che parte di quanto ho descritto è analogo a ciò di cui ha parlato DK. Tanto per completare il suo discorso, se non ricordo male, la seconda coppia di byte indica la pagina (o banco, come lo chiami te) dell'eseguibile da dover puntare. Tutto questo discorso delle pagine viene fatto siccome come sappiamo il dos non è capace di gestire indirizzi a 32 bit, e 16 bit ad un certo punto cominciano ad essere un po' pochini. Quindi, tramite questo processo di virtualizzazione tramite le pagine, il sistema riesce a puntare ad indirizzi che vanno oltre alla sua reale capacità .
 

Inserisci in questo messaggio
- ragnarok   Aiuto per il main di Kyrandia   1 Dec 2005, 10:22
- - DK2   Modificare l'exe per allungare le frasi è abb...   2 Dec 2005, 19:55
- - Alpobemp   Facemmo (no, facesti, ok) qualcosa del genere per ...   2 Dec 2005, 20:48
- - ragnarok   Ok, DK, do un'occhiata e poi ti faccio sapere...   2 Dec 2005, 23:25
- - DK2   CITAZIONE Facemmo (no, facesti, ok) qualcosa del g...   6 Dec 2005, 12:38
- - Micartu   Ciao Ragnarok volevo sapere come procede con quest...   8 Dec 2005, 18:01
- - ragnarok   Per quanto riguarda il main.exe, sono fermo. Per q...   8 Dec 2005, 21:19
- - ragnarok   Per chi volesse testare la traduzione di Kyrandia ...   13 Dec 2005, 07:36
- - Micartu   Ciao sto tentando di procurarmi il gioco in versio...   13 Dec 2005, 13:06
- - ragnarok   Ciao, si, e' la conversione dalla versione f...   13 Dec 2005, 19:14
- - Syxtem   Beh... e non si potrebbe avere anche un link a que...   15 Dec 2005, 14:08
- - ragnarok   Eccola: http://haohsichun.altervista.org/immagini...   15 Dec 2005, 21:01
- - Syxtem   Il tempo a mia disposizione non è tanto, quindi ho...   16 Dec 2005, 09:13
- - ragnarok   Syxtem, hai fatto un lavoro eccezionale! A mio avv...   16 Dec 2005, 20:27
- - Syxtem   Mi fa piacere... e buona fortuna ;) Ah... per aiu...   17 Dec 2005, 08:45
- - hendroz   CITAZIONE Scritto inizialmente da Syxtem Quindi ti...   17 Dec 2005, 09:37
- - Theruler   Ciao Ragaz, E' da tempo immemore che attendo ...   20 Jan 2006, 15:09
- - Micartu   Ciao a tutti, io sposo la tua tesi alla grande e n...   23 Jan 2006, 03:38
- - Theruler   Evidentemente alla Westwood non hanno mai voluto v...   23 Jan 2006, 13:06
- - Micartu   Io fossi in te più che altro mi organizzerei così:...   24 Jan 2006, 02:36
- - DK2   In effetti ho notato anche io che le traduzioni de...   25 Jan 2006, 15:26
- - Theruler   Ottima news! Anzi, Ottimo Tool! ci ho pastrocchia...   26 Jan 2006, 17:50
- - DK2   Lo so che mancano le istruzioni, l'ho creato ...   27 Jan 2006, 22:04
- - Theruler   Benone! Adesso la situazione è più chiara. Lo stru...   28 Jan 2006, 14:53
- - Syxtem   Mi sa che con quel discorso del main.exe l'ab...   29 Jan 2006, 17:10
- - Micartu   Mi sono spaventato io che non c'entravo nulla...   29 Jan 2006, 20:21
- - ragnarok   CITAZIONE Scritto inizialmente da Syxtem Mi sa che...   30 Jan 2006, 00:47
- - Theruler   Grazie Ragna (POSSO?;-)), me li faro' bastare...   1 Feb 2006, 17:22
- - DK2   CITAZIONE molto giochi di parole sugli ingredienti...   2 Feb 2006, 12:21
- - Theruler   ovviamente da cani, senza che il senso umoristico ...   5 Feb 2006, 12:46
- - Theruler   Rettifico la precedente percentuale... in base ad ...   7 Feb 2006, 00:22
- - Theruler   Buona notte a tutti (vista l'ora), credo di a...   8 Feb 2006, 02:32
- - Theruler   un piccolo suggerimento per giocare Kyrandia Cd di...   8 Feb 2006, 02:45
- - Micartu   Non so se c'entra o no ma la prima volta che ...   8 Feb 2006, 21:29
- - Theruler   purtroppo ho provato... ma Kyrandia 1 salva ogni s...   9 Feb 2006, 01:41
- - Syxtem   Sì può fare... come prima cosa prova a fare 2 salv...   9 Feb 2006, 12:08
- - Theruler   ho fatto... (intanto complimenti per l'idea!)...   10 Feb 2006, 17:38
- - Syxtem   Se trovo il tempo ci posso anche guardare, ma non ...   10 Feb 2006, 20:24
- - Theruler   ok... giuro di essermi impegnato non poco... ma an...   11 Feb 2006, 22:28
- - hendroz   Ciao Theruler, Di solito queste impostazioni che h...   12 Feb 2006, 13:26
- - Theruler   Ti faccio i complimenti per l'occhio, davvero...   13 Feb 2006, 11:43
- - DK2   Sì, il tool funziona perfettamente (beh, almeno qu...   13 Feb 2006, 14:55
- - DK2   Dimenticavo, la versione CVS (o subversion ora) di...   13 Feb 2006, 15:00
- - Theruler   Ciao DK, ben ritrovato! Salve ragaz, Per il tuo t...   13 Feb 2006, 17:10
- - DK2   CITAZIONE Se vuoi inserire la pre-patch sulla sche...   13 Feb 2006, 22:24
- - Theruler   partiamo con ordine: Patch semi-definitiva a cui ...   14 Feb 2006, 10:49
- - DK2   CITAZIONE Patch semi-definitiva a cui manca solo l...   14 Feb 2006, 22:55
- - Theruler   va bene... a breve (se riesco ad avere quel benede...   15 Feb 2006, 12:30
- - DK2   CITAZIONE va bene... a breve (se riesco ad avere q...   15 Feb 2006, 15:05
- - Theruler   Ok, ora ho capito cosa hanno fatto i nostri colleg...   15 Feb 2006, 16:28
- - Tsam   Riprendo da qua una domanda che ho posto in just a...   22 Feb 2006, 19:36
- - DK   Ma le versioni CD non dovrebbero essere tutte ugua...   23 Feb 2006, 07:43
- - Theruler   sisi... confermo. di versioni ne e' uscita sol...   23 Feb 2006, 10:48
- - Tsam   Perfetto! allora cerco di recuperare quella co...   23 Feb 2006, 12:54
- - Jegriva   Scusatemi se casco dal pero, non ho capito se stat...   27 Jul 2006, 15:45
|- - Beren Erchamion   CITAZIONE (Jegriva @ 27 Jul 2006, 16:45) ...   28 Jul 2006, 08:19
- - Zonekiller   Ciao a tutti. Intanto complimenti e grazie per ciò...   5 Feb 2007, 01:29
- - TheRuler   In realta' sono gia' tradotte... la versio...   5 Feb 2007, 10:20
- - Zonekiller   Ti ringrazio per aver risposto. Purtroppo ho dimen...   5 Feb 2007, 10:57
- - TheRuler   Ok, adesso mi torna. Non e' per nulla difficil...   5 Feb 2007, 12:22
- - Zonekiller   Ho impostato italiano. Il gioco funge bene ma alcu...   5 Feb 2007, 17:10
|- - The Ancient One   CITAZIONE (Zonekiller @ 5 Feb 2007, 17:10...   5 Feb 2007, 17:25
- - Zonekiller   Hai ragione ma non avevo visto che potevo accedere...   5 Feb 2007, 17:32


Reply to this topicStart new topic
1 utenti stanno leggendo questa discussione (1 visitatori e 0 utenti anonimi)
0 utenti:

 

Modalità di visualizzazione: Passa a: Normale · Passa a: Lineare · Outline


Versione Lo-Fi Oggi è il: 25th February 2020 - 13:19