Please vote for us in the FreeStuff.gr Top-100 Greek Sites List!



         Tutorials

Tutorial: Η πρώτη σου μετάφραση!

Tutorial #1: Η πρώτη σου μετάφραση!
Επίπεδο: Αρχάριοι
Συγγραφή: Giama
Έκδοση: 1.2
Τελευταία ενημέρωση: 23/12/2002

Καλωσήλθες στον κόσμο του Rom Hacking/Translating!

Για να ξεκινήσεις την πρώτη σου μετάφραση πρέπει πρώτα να εφοδιαστείς με τα κατάλληλα προγράμματα. Σου προτείνω να χρησιμοποιείς:
- ως Relative Searcher το πρόγραμμα SearchR2 (έκδ. 2.10) ή το SearchR X 1.0 (για το SearchR X υπάρχει και ελληνική μετάφραση την οποία θα βρεις στο site μας).
- ως Hex Editor το πρόγραμμα Thingy01 (ή το Thingy32 για Windows, αλλά το Thingy01 θεωρώ ότι είναι πολύ πιο εύκολο για να ξεκινήσει κανείς).
- ως Graphics Editor το πρόγραμμα Tile Layer Pro 1.1 ή ανώτερο.
- ως Table Generator είτε το πρόγραμμα Table Maker 1.4 είτε το Notepad όπου θα βάλεις τις τιμές μόνος σου.
- ως Script Extractor/Inserter (αν χρησιμοποιήσεις), τα προγράμματα Script Inserter και Script Extractor του Jair, ή τo αντίστοιχο πρόγραμμα του CronoVN (σύντομα διαθέσιμο).

Τα παραπάνω προγράμματα θα τα βρεις όλα είτε στο RPGd είτε στο RomHacking.org είτε στο Zophar's Domain. Ψάξε στα sites αυτά για κάποιο link που να γράφει "Translation/Rom hacking Utilities" ή κάτι παρόμοιο.

Για αρχή θεωρώ πως πρέπει οπωσδήποτε να ξεκινήσεις με ένα σχετικά παλιό και μικρό σε μέγεθος παιχνίδι για NES ή το παλιό GameBoy. Ένα platform παιχνίδι που να έχει και κάποια ιστορία/υπόθεση μέσα είναι ό,τι πρέπει (για παράδειγμα όλα τα platforms της Disney για το NES νομίζω είναι εντάξει, π.χ. Ducktales, Chip 'n' Dale Rescue Rangers 1-2, Adventures in the Magic Kingdom κτλ. ή άλλα παρόμοια, όπως το Little Nemo: The Dream Master)

Διάλεξε, λοιπόν, το παιχνίδι που θες, κάνε μπόλικα αντίγραφα της original Rom του παιχνιδιού για να μην έχουμε πρόβλημα και ξεκινάμε!


ΒΗΜΑ 1ο: Δημιουργία Table-file

Η συντριπτική πλειοψηφία των παιχνιδιών δεν χρησιμοποιούν ASCII encoding για τη διαχείριση του κειμένου, οπότε πρέπει εμείς να βρούμε πώς το παιχνίδι έχει επιλέξει να κωδικοποιεί το κείμενό του. Για να το πετύχουμε αυτό, θα χρησιμοποιήσουμε έναν Relative Searcher και μια-δυο φράσεις του κειμένου του παιχνιδιού. Ανοίγουμε τον Relative Searcher (π.χ. SearchR2) και φορτώνουμε μέσα από αυτόν τη rom του παιχνιδιού που μεταφράζουμε. Στο κουτί "Find" συμπληρώνουμε μια φράση που υπάρχει μέσα στο παιχνίδι.

*ΣΥΜΒΟΥΛΗ*
Καλό θα ήταν πριν ξεκινήσεις, να παίξεις λίγο το παιχνίδι και να γράψεις κάποιο μήνυμα που θα βρεις με τον ίδιο τρόπο που εμφανίζεται στην οθόνη (αλλαγή γραμμής στα ίδια σήμεια, η στίξη όπως ακριβώς αναφέρεται στο μήνυμα κλπ.). Χρησιμοποίησε για το Relative Search σου (περισσότερα παρακάτω) μια λέξη/φράση που περιέχεται στο μήνυμα αυτό και στη συνέχεια από τα διαθέσιμα αποτελέσματα διάλεξε αυτό στο οποίο η φράση για την οποία έψαξες βρίσκεται στο μήνυμα που έχεις σημειωμένο. Έτσι, θα είναι εύκολο στη συνέχεια να βρεις τις αντιστοιχίες τόσο για τα σημεία στίξης, όσο και για τις τιμές που καθορίζουν το τέλος γραμμής/μηνύματος.


Η φράση αυτή καλό θα είναι να είναι σχετικά μεγάλη, τουλάχιστον 5-6 γράμματα. π.χ. Αν μεταφράζαμε το Secret of Mana, μια καλή επιλογή θα ήταν η φράση "Mana Sword". Ελέγχουμε τα αποτελέσματα που θα προκύψουν και σημειώνουμε την Ηex Value που προέκυψε για κάθε γράμμα. Τα γράμματα αυτά είναι στη σειρά, και η θέση τους υπολογίζεται με βάση το 16αδικό σύστημα αρίθμησης (0,1,2,3,4,5,6,7,8,9,Α,Β,C,D,E,F). Έτσι, αν π.χ. από τα αποτελέσματα του Relative Search προκύψει πως το γράμμα "T" αντιστοιχεί στη Hex Value "6F", αφαιρώντας και προσθέτοντας στο δεκαεξαδικό σύστημα για κάθε προηγούμενο και επόμενο γράμμα αντίστοιχα, προκύπτει ότι τα υπόλοιπα γράμματα θα έχουν τις παρακάτω τιμές:

5C=A
5D=B
5E=C
5F=D
60=E
61=F
62=G
63=H
64=I
65=J
66=K
67=L
68=M
69=N
6A=O
6B=P
6C=Q
6D=R
6E=S
6F=T
70=U
71=V
72=W
73=X
74=Y
75=Z


Επίσης, διαβάζοντας στα αποτελέσματα λίγο πριν και λίγο μετά από τη φράση που έβαλες, θα μπορέσεις να βρεις ποια Hex Value αντιστοιχεί στο κενό διάστημα (έστω 8Α), ποια Hex Value αντιστοιχεί στο κόμμα (έστω 89), στην τελεία (έστω 8Β) και σε όποιο άλλο σημείο στίξης είναι διαθέσιμο στο παιχνίδι. Έτσι, συμπληρώνεις τα παραπάνω στοιχεία με:

89=,
8Α= (Προσοχή! Πρέπει να αφήσεις ένα κενό διάστημα εδώ!)
8Β=.


Τέλος, χρειαζεσαι και τις τιμές για το "τέλος γραμμής" (αν το παιχνίδι χρησιμοποιεί κάτι τέτοιο) και για το "τέλος μηνύματος". Και τα δύο είναι πολύ εύκολα να βρεθούν:
- Για το τέλος μηνύματος: Aπλά διάβασε τα αποτελέσματα λίγο μετά από τη φράση που έβαλες, μέχρι να συναντήσεις την αρχή του επόμενου μηνύματος. Δες ποια Hex Value βρίσκεται μεταξύ του τελευταίου γράμματος του μηνύματος και του πρώτου γράμματος του επόμενου μηνύματος (το τελευταίο γράμμα του μηνύματος πιθανότατα δεν θα είναι γράμμα, αλλά ένα σημείο στίξης, π.χ. τελεία, ερωτηματικό ή θαυμαστικό και πιθανόν να μη φαίνεται στα αποτελέσματα του relative searcher. Απλά αν βλέπεις δύο Hex Values μεταξύ δύο μηνυμάτων, τότε *λογικά* η πρώτη είναι κάποιο σημείο στίξης και η δεύτερη είναι αυτή που ζητάμε). Αυτή είναι η Hex Value που κωδικοποιεί το "τέλος μηνύματος" (για το παράδειγμα αυτό, ας θεωρήσουμε πως είναι η 00) και στο table σου τη συμβολίζεις έτσι:

/00

- Για το τέλος γραμμής: Κάνει αντίστοιχη λειτουργία με το πλήκτρο "Enter" του υπολογιστή μας. Δεν υπάρχει σε όλα τα παιχνίδια. Τα περισσότερα 8-bit παιχνίδια (π.χ. NES, GameBoy) δεν χρησιμοποιούν κάποια Hex Value για το τέλος γραμμής, απλά συμπληρώνουν με κενά τους υπόλοιπους χαρακτήρες της κάθε γραμμής. Δεν βλάπτει φυσικά να κάνεις ένα γρήγορο ψάξιμο γι'αυτό: Στο μήνυμα στο οποίο βρίσκεσαι, απλά έλεγξε αν χρησιμοποιείται η ίδια Hex Value για τα κενά διαστήματα μεταξύ των γραμμών. Αν υπάρχουν μόνο κενά διαστήματα, τότε το πρόγραμμα δεν χρησιμοποιεί Hex Value για το τέλος γραμμής. Αν είχες ακολουθήσει τη συμβουλή παραπάνω, θα μπορούσες ευκολότερα να κοιτάξεις τα συγκεκριμένα σημεία όπου το μήνυμα αλλάζει γραμμή ώστε να δεις αν εκεί υπάρχει κάτι διαφορετικό. Αν τελικά από το ψάξιμο που θα κάνεις προκύψει πως το πρόγραμμα πράγματι χρησιμοποιεί κάποια Hex Value για την αλλαγή γραμμής (έστω 06), στο table σου τη συμβολίζεις έτσι:

*06

Εννοείται πως αν δεν υπάρχει Hex Value για το τέλος γραμμής, απλά παραλείπεις αυτή τη γραμμή από το table σου.

ΣΥΓΧΑΡΗΤΗΡΙΑ!!! ΜΟΛΙΣ ΕΦΤΙΑΞΕΣ ΤΟ ΠΡΩΤΟ ΣΟΥ TABLE!!!
Το table δεν είναι τίποτα άλλο από ένα text αρχείο που περιέχει τα παραπάνω στοιχεία που είναι γραμμένα με πλάγια γράμματα και μόνον αυτά. Ανοιξε, λοιπόν, το Notepad, γράψε όλα αυτά τα στοιχεία με τη μορφή που φαίνονται παραπάνω και αποθήκευσε το αρχείο με κατάληξη .tbl
Η σειρά δεν έχει καμία σημασία, αλλά καλό είναι να τα βάλεις με σειρά "αυξανόμενης Hex Value" για τη δική σου διευκόλυνση.
Έτσι, το τελικό table του παραδείγματός μας είναι το παρακάτω:

5C=A
5D=B
5E=C
5F=D
60=E
61=F
62=G
63=H
64=I
65=J
66=K
67=L
68=M
69=N
6A=O
6B=P
6C=Q
6D=R
6E=S
6F=T
70=U
71=V
72=W
73=X
74=Y
75=Z
89=,
8Α=
8Β=.
*06
/00


Εναλλακτικά (αν βαριέσαι να πληκτρολογείς), μπορείς να χρησιμοποιήσεις έναν Table Generator (π.χ. Table Maker 1.4) που θα αναλάβει να φτιάξει το table για σένα χρησιμοποιώντας τα στοιχεία που θα του δώσεις (δηλαδή τα στοιχεία που προέκυψαν από το Relative Search).
Τέλος, σε αρκετά sites (π.χ. Zophar's Domain) υπάρχουν έτοιμα tables, για χρήση από όποιον ενδιαφέρεται.

Επιπλέον, δεν αποκλείεται κάποια παιχνίδια να έχουν περισσότερες από μια γραμματοσειρές και να χρησιμοποιούν καθεμιά από αυτές για συγκεκριμένες περιστάσεις (π.χ. διαφορετική γραμματοσειρά για το κείμενο και διαφορετική για τις οθόνες επιλογών). Κάθε γράμμα από αυτές τις γραμματοσειρές κωδικοποιείται με διαφορετικό Hex Value και για την αποφυγή μπερδέματος, καλό είναι να δημιουργήσουμε ξεχωριστό table για κάθε γραμματοσειρά και να χρησιμοποιούμε κάθε table ανάλογα με το τμήμα του κειμένου που μεταφράζουμε. Για την ώρα δεν υπάρχει λόγος να μπλεχτείς με αυτό. Αλλωστε, αυτός είναι κι ένας από τους λόγους για τους οποίους πρότεινα να ξεκινήσεις με παιχνίδι NES ή GameBoy.


ΒΗΜΑ 2ο: Εύρεση και αλλαγή της γραμματοσειράς

Το πρόγραμμα που θα χρησιμοποιήσουμε στη συνέχεια είναι ένας Graphics Editor (Tile Layer Pro). Ανοίγουμε το πρόγραμμα και φορτώνουμε τη rom μέσα από αυτό το πρόγραμμα. Επιλέγουμε το σωστό mode (NES αν ασχολούμαστε με NES rom, GameBoy αν ασχολούμαστε με GameBoy rom, αλλά προσοχή: για Super NES είναι ευκολότερο να δουλεύουμε σε κάποιο από τα GameBoy και SNES (3bp) modes.). Δεν υπάρχει κανένας λόγος να τρομοκρατηθείς από αυτό που θα δεις μόλις ανοίξεις τη rom από τον Graphics Editor! Προχώρα από πάνω προς τα κάτω αργά-αργά ψάχνοντας για μια σειρά από κουτάκια ("tiles") που περιέχουν τα κεφαλαία γράμματα του λατινικού αλφάβητου. Τα γράμματα θα βρίσκονται στη σειρά (ABCDEFGHIJKLMNOPQRSTUVWXYZ και συνήθως μετά θα ακολουθούν τα μικρά, αν υπάρχουν, με την ίδια σειρά). Μπορείς επιλέγοντάς τα να τα επεξεργαστείς απευθείας στον Τile Εditor του προγράμματος, αλλά είναι προτιμότερο να κάνεις Drag'n'Drop κάθε γράμμα στον Tile Arranger του προγράμματος και να τα επιλέξεις από εκεί για επεξεργασία στον Τile Εditor. Στη συνέχεια, πάλι με Drag'n'Drop, μεταφέρεις κάθε μεταφρασμένο πλέον γράμμα στην αντίστοιχη θέση όπου βρισκόταν. Η σειρά με την οποία θα τοποθετηθούν οι ελληνικοί χαρακτήρες δεν έχει καμιά σημασία, αρκεί εσύ ο ίδιος να τη γνωρίζεις και να μπορείς να τη χειριστείς, αφού στο επόμενο βήμα, δηλαδή στη μετάφραση του κειμένου, δεν θα γράφεις με ελληνικούς χαρακτήρες αλλά με λατινικούς, χρησιμοποιώντας την αντιστοιχία (σειρά) με την οποία τα τοποθέτησες πάνω στην αγγλική γραμματοσειρά. Η αντιστοιχία που βολεύει εμένα είναι αυτή του ελληνικού πληκτρολογίου (ABCDEFGHIJKLMNOPQRSTUVWXYZ -> ΑΒΨΔΕΦΓΗΙΞΚΛΜΝΟΠ-ΡΣΤΘΩ-ΧΥΖ, στα γράμματα Q και W μπορείς να βάλεις ό,τι σύμβολα εσύ θέλεις.) Τα χρώματα ίσως είναι λίγο διαφορετικά από αυτά που βλέπεις στο παιχνίδι, αλλά μη σε ανησυχεί αυτό, αφού δεν έχει καμία σημασία. Αν παρόλ'αυτά τα χρώματα είναι τόσο περίεργα που δεν σου επιτρέπουν να δουλέψεις άνετα, μπορείς από τον Pallette Editor του προγράμματος να τα αλλάξεις. Οι όποιες αλλαγές κάνεις στα χρώματα δεν θα επηρεάσουν το παιχνίδι, θα σε βοηθήσουν απλώς να δουλέψεις πιο άνετα.

Επίσης, σε περίπτωση που η γραμματοσειρά δεν φαίνεται καθαρά, και αφού έχεις βεβαιωθεί πως βρίσκεσαι στο σωστό mode (NES, GameBoy κλπ.), μπορείς να χρησιμοποιήσεις τους συνδυασμούς πλήκτρων Ctrl+δεξιά και Ctrl+αριστερά για να βελτιώσεις την εικόνα.
Με τον ίδιο τρόπο μπορείς να αλλάξεις οποιαδήποτε εικόνα (π.χ. Title Screen) ή οποιοδήποτε κείμενο είναι αποθηκευμένο σαν εικόνα μέσα στο παιχνίδι. Χαρακτηριστικό παράδειγμα είναι μηνύματα όπως η extra ζωή ("1UP") σε πολλά παιχνίδια.


ΒΗΜΑ 3ο: Μετάφραση του κειμένου

Το πρόγραμμα που θα χρησιμοποιήσουμε τώρα είναι ένας Hex Editor (συνίσταται ο Thingy01). Ανοίγουμε, λοιπόν, τον Hex Editor και φορτώνουμε μέσα από αυτόν τόσο τη rom του παιχνιδιού όσο και το table που φτιάξαμε παραπάνω. Στη συνέχεια, το μόνο που έχουμε να κάνουμε είναι να προχωρήσουμε στη rom για να βρούμε το κείμενο. Σε όποιο σημείο βρούμε κείμενο το αλλάζουμε προσέχοντας το νέο κείμενο που θα βάλουμε να είναι το πολύ ίσο σε μέγεθος με το πρωτότυπο κείμενο. Αλλάζουμε κάθε μήνυμα ξεχωριστά (τα διάφορα μηνύματα του παιχνιδιού χωρίζονται συνήθως με κάποια συγκεκριμένη Hex Value (στο παράδειγμά μας είναι η 00) και σε καμία περίπτωση δεν πρέπει να την πειράξεις, για την ώρα τουλάχιστον), χωρίς να ξεπερνάμε το μέγεθος του κάθε μηνύματος και δεν αλλάζουμε κανένα χαρακτήρα που δεν είναι κείμενο γιατί θα καταστρέψουμε το παιχνίδι αν αλλάξουμε έστω κι ένα χαρακτήρα λάθος!!! Γι'αυτό φροντίζουμε να σώζουμε συχνά και να έχουμε πολλά αντίγραφα του παιχνιδιού που μεταφράζουμε. Εννοείται ότι καθώς γράφουμε το νέο (ελληνικό) κείμενο δεν γράφουμε στα Ελληνικά, αλλά χρησιμοποιούμε τις αντιστοιχίες Αγγλικών-Ελληνικών όπως τις φτιάξαμε στο table και στην αλλαγή της γραμματοσειράς.


ΣΥΓΧΑΡΗΤΗΡΙΑ!!! ΜΟΛΙΣ ΟΛΟΚΛΗΡΩΣΕΣ ΤΗΝ ΠΡΩΤΗ ΣΟΥ ΜΕΤΑΦΡΑΣΗ!!! Για να τη δοκιμάσεις, άνοιξε τον αντίστοιχο emulator, φόρτωσε το παιχνίδι και καλή διασκέδαση. Αν θα'θελες να μοιραστείς τη δουλειά σου και με άλλους (και να πάρεις τη δόξα φυσικά!) αρκεί να μας ενημερώσεις!


ΠΑΡΑΡΤΗΜΑ: Μια απλή μέθοδος αλλαγής του μεγέθους των μηνυμάτων

Η μέθοδος αυτή δουλεύει σε ελάχιστα μόνο παιχνίδια, αλλά νομίζω πως είναι αρκετά απλή και εύκολη, οπότε καλό θα ήταν να τη γνωρίζουν όλοι αφού μπορεί να σε γλιτώσει από *πολύ* ψάξιμο. Πρώτα φρόντισε ότι έχεις βρει το text block, δηλαδή το σημείο εκείνο της rom στο οποίο βρίσκονται όλα σχεδόν τα μηνύματα του παιχνιδιού στη σειρά, το ένα μετά το άλλο. Στη συνέχεια, ψάξε για δύο μηνύματα στη σειρά που να μπορείς να τα εμφανίσεις εύκολα και γρήγορα στο παιχνίδι (για να ελέγξεις εύκολα και γρήγορα αν δούλεψε ή όχι). Αφού έχεις κάνει ένα αντίγραφο της rom, αντικατάστησε τη Hex Value "τέλος μηνύματος" μεταξύ των δύο μηνυμάτων με ένα κενό διάστημα ή οποιοδήποτε γράμμα/σύμβολο και βάλε μια Hex Value "τέλος μηνύματος" μερικούς χαρακτήρες παρακάτω (π.χ. στο κενό διάστημα που βρίσκεται αμέσως μετά τη δεύτερη λέξη του επόμενου μηνύματος). Για να το δεις καλύτερα, ας συμβολίσουμε εδώ με αστεράκι τη Hex Value "τέλος μηνύματος" και ας πάρουμε δύο τυχαία μηνύματα:

Αρχικά έχουμε:
H GreekRoms είναι φοβερή.*Όλες οι μεταφράσεις της είναι εξαιρετικές!*
Μετά τις αλλαγές θα έχουμε:
H GreekRoms είναι φοβερή. Όλες οι*μεταφράσεις της είναι εξαιρετικές!*


Αποθήκευσε τις αλλαγές που έκανες, άνοιξε το παιχνίδι με τον emulator και παίξε έτσι ώστε να εμφανιστούν τα μηνύματα που άλλαξες. Το πρώτο μήνυμα θα πρέπει τώρα να έχει γίνει "Η GreekRoms είναι φοβερή. Όλες οι", ενώ το δεύτερο θα πρέπει να έχει γίνει "μεταφράσεις της είναι εξαιρετικές!".

  • Αν οι αλλαγές έχουν γίνει όπως παραπάνω, τότε είσαι τυχερός! Μπορείς να αλλάζεις κατά βούληση τα μεγέθη των μηνυμάτων μετακινώντας τις Hex Values "τέλος μηνύματος", αρκεί να μην ξεπεράσεις το συνολικό μέγεθος του text block (δηλαδή το συνολικό μέγεθος όλων των ελληνικών μηνυμάτων δεν μπορεί να ξεπερναέι το συνολικό μέγεθος των αγγλικών μηνυμάτων, αλλά μερικά ελληνικά μηνύματα μπορούν να είναι μεγαλύτερα από τα αντίστοιχα αγγλικά αν φροντίσεις κάποια άλλα ελληνικά μηνύματα να είναι μικρότερα από τα αντίστοιχα αγγλικά. Ελπίζω να μη σε μπέρδεψα πολύ!).
  • Αν δεν εμφανίστηκαν τα μηνύματα με τον τρόπο που ανέφερα παραπάνω, αλλά εμφανίστηκαν ως "Η GreekRoms είναι φοβερή. Όλες οι" και "Όλες οι" τότε δεν έχεις κάνει εσύ κάποιο λάθος, η διαδικασία που ακολούθησες είναι απόλυτα σωστή, απλά το παιχνίδι χρησιμοποιεί άλλο αλγόριθμο διαχείρισης του κειμένου. Επομένως, θα πρέπει να μην μετακινείτε καθόλου τις Hex Values "τέλος μηνύματος" και να φροντίζετε ώστε τα μεγέθη των μηνυμάτων να βρίσκονται μέσα στα προκαθορισμένα όρια.





Please visit our sponsors:

Site Reference Newsletter
Free newsletter on marketing and building a powerful online presence.
Email: