[PORADNIK] Kurs Romhackingu - ErnBob
: 11 sty 2013, o 19:54
Kurs tłumaczenia romów
Autor: ErnBob
Korekta: RPG & bemberg
Spis treści:
1. Intro
2. Co to jest Rom Hacking?
3. Od czego zacząć?
4. Co może się przydać?
5. Hmm, co to za dziwne liczby w tym HE?
6. Co to jest Tablica?
7. Pierwsze próby zmiany tekstu
8. Lubimy malować, prawda?
9. INSERT i DUMP
10. Wskaźniki, do czego mogą się przydać?
11. IPS
12. To dopiero początek...
13. Outro
Narzędzia:
1. HexEdytor - Hexecute
2. TileEdytor - TilEd 2002
3. Tablice - Tabular
4. Szukacz wartości - SearchR
5. IPS - ipsXP
6. Emulator - VisualBoyAdvance
7. Rom Harvest Moon 2 (U) na GBC - Szukaj
1. Intro
Sam uważam, że nie mam daru do tłumaczenia (w sensie piszę, lub coś mówię, a druga osoba próbuje to zrozumieć:) ) Teraz może się to okazać. Zapraszam do lektury!
2. Co to jest Rom Hacking?
Sama nazwa może kojarzyć się z szeroko pojętnym działem Hackerstwa. Może i coś w tym jest, ale nie do końca. Rom Hacker to osoba, która za pomocą specjalnych programów (Hex Edytorów, Tile Edytorów) zmienia zawartość romu.
3. Od czego zacząć?
Najlepiej od zaopatrzenia się w odpowiednie programy (wszystkie, jakie będą wykorzystane w kursie są na tej stronie w dziale Download). Ja osobiście używam Windowsa 2000 lub XP. Podane tu programy działają na systemach NT.
HexEdytor - bardzo prostym edytorem jest program Hexecute, w sam raz dla początkujących i jeszcze w polskiej wersji językowej. Jak ktoś jeszcze nie wie, 'HE' to program, który po przetworzeniu wartości podanych w tablicy, pokazuje zawartość naszej gry (tylko NT).
TileEdytor - TilEd 2002, będzie w sam raz. Ma dość dużo funkcji, ale i ładną szatę graficzną, dzięki czemu jest przejrzysty i nawet początkujący będzie wiedział gdzie kliknąć. Aha no i 'TE' służy do zmiany grafiki w romie, czyli tym programem zrobimy polskie czcionki w grze, no i o ile będzie taka możliwość i potrzeba to pozwolimy sobie na małe zmiany grafiki (zdarza się, że tekst zapisywany jest jako grafika).
Tablice - wystarczająco dobrym programem jest TaBuLar. Posłuży nam jako menadżer tablic. Jak już wcześniej wspomniałem Tablica to normalny plik tekstowy, który po załadowaniu do hexedytora, mówi mu jaka litera jest przyporządkowana danej wartości Hexowej (1 Bitowi).
Szukacz wartości - My takiego programu nie potrzebujemy. Nasz HexEdytor ma możliwość relatywnego szukania. Jak na początek wystarczy, ale nie zaszkodzi zaopatrzyć się w program SearchR.
IPS - ...a to już po zmianach grafiki i tłumaczeniu. IPS to po prostu patch do gry. Ja gorąco polecam program ipsXP, który całkowicie integruje się z naszym Windowsem. I w przeciwieństwie do nazwy ruszy na każdym systemie operacyjnym.
Nie mam Windowsa NT... Jest teraz tyle HexEdytorów. Hexecute można bez problemu zastąpić Translhextion'em. Jeżeli naprawdę nie umiemy się żadnym z nich posługiwać to zapraszam w imieniu Dream#Teamu na forum http://www.emudreams.pl
Wszystko w dziale Download!! (niestety nie uświadczymy już tam tego typu programów... ale zapraszamy do naszego downloadu, wszystkie pliki są sprawdzone i działają pod XP)
4. Co może się przydać?
Na pewno angielska wersja gry (cały kurs opiera się na Harvest Moon'ie 2 na GBC) i emulator, obsługujący GBC. Bez wątpliwości najlepszy z najlepszych to VBA w wersji 1.4 lub 1.5 jak kto woli. Czasami może przydać się znajomość języka obcego ;P a już naprawdę czasami, chociaż małe pojęcie o systemie szesnastkowym.
5. Hmm, co to za dziwne liczby w tym HE?
Spróbuje wam rozjaśnić w mózgownicach ;)
Otwórzmy naszego HexEdytora. Powiem tylko, że okienko robocze podzielone jest na trzy części. Po lewej są liczby, które pokazują nam naszą pozycję (jeżeli chcemy po zamknięciu HE powrócić do danego miejsca wybieramy Edycja --> Idź do... i wpisujemy nasz odczyt. Ta funkcja jest bardzo przydatna podczas Dumpu i Insertu). środkowa część to nic innego, jak wartości szesnastkowe gry. A po prawej to już, obrobione wartości hex, czyli to coś gdzie będą dialogi, itp. Powiem na jakiej zasadzie to działa. Czyli tak, wszystko zaczyna się w pliku tablicy, np, jeżeli znajduje się tam coś takiego, jak: 4A=a. Właśnie taka wartość 4A jest w środkowej części edytora, to po prawej powinna ukazać się naszym oczom literka a, jeżeli według tej tabeli 4B=b, to w tych miejscach będzie pojawiać się literka b. Podobnie jest z wszystkimi innymi znakami oraz cyframi, każda z nich ma swoją wartość HEX.
6. Co to jest Tablica?
Jak już mówiłem, tablica to po prostu plik tekstowy w formacie *.tbl. Spróbujemy coś takiego zrobić. Po pierwsze do naszego edytora ładujemy gierkę. Na razie domyślną tablicą programu jest ASCII, czyli taki system, którego na co dzień używamy w Windowsach. Wybieramy opcję 'Znajdź' i tutaj najlepiej wpisać wyraz, który występuje w dialogach, zaczyna się z małej litery a, b, c lub d i ma co najmniej 5 liter. Ja wybrałem słowo 'build', które występuje w pierwszych dialogach gry. Zmieniamy 'Rodzaj Szukania' na Relatywne, oraz w 'Opcjach Specjalnych wszystko wymazujemy, no i klikamy na 'Następny'. Jak widać podświetlił nam się jakiś ciąg Hexów, zaczynający się od 25. Prawidłowo 25 powinno równać się 'b', ale należy to sprawdzić. Otwieramy program TaBuLar. Naszym oczom ukazuje się miejsce na nową tablice. W miejsce 25 (w pionie 2 w poziomie 5) wpisujemy literkę 'b'. Znając alfabet, przed 'b' znajduje się literka 'a', więc w miejsce 24 wpisujemy tą literkę. Zostawiając podświetlone miejsce 24 z menu wybieramy Insert --> Lowercase English Alphabet.
Chcąc, nie chcąc to początek tablicy do gry HM2. Ale nie cieszmy się za długo, jeszcze trzeba sprawdzić, czy rzeczywiście 25=b... jak? Zapiszmy naszą tablicę wybierając format Thingy TBL, najlepiej w katalogu z grą. Teraz tam gdzie były te głupie, nic nie znaczące wartości, widać już coś co przypomina tekst, więc wartość była poprawna. Lecz to jeszcze nie wszystko. Brakuje dużych liter. Hmm, teraz to już łatwe zadanie. Początek dialogu: "If we don't" Jest duża litera, ale w HexEdytorze jej nie widać. Sprawdźmy jaką ma wartość zaznaczając kursor przed '.f' (ta kropka to przyszła litera 'I') Jeżeli wszystko poszło zgodnie z planem ta kropka jest przypisana wartości 12. Więc uzupełnijmy to w TaBuLarze. Już widać, że litera 'A' będzie miała wartość 0A, więc zaznaczmy tą wartość i kolejno Insert --> Capital English Alphabet. Litera 'I' pozostała na swoim miejscu? Mamy duże litery? Bardzo dobrze. I jeszcze brakuje znaków interpunkcyjnych i cyferek. Spróbujcie sami się pomęczyć :)
Aha, przyjrzyjmy się dokładnie. W dialogu widać coś takiego: 'we.don..do' jedna z kropek po 'don' to spacja (wartość 48), powinno być miejsce dla literki t (której nie widać) i apostrofa. Dlaczego? Tutaj znaki "'t" odpowiadają jednej wartości hexowej (wartość 52), to taka mała oszczędność miejsca (DTE). Te wiadomości powinny wystarczyć, aby można było zrobić pełną tablicę.
Jeszcze wyjaśnię co to jest 'znacznik łamiący linię'. To po prostu wartość hex, która mówi romowi, kiedy ma pisać w niższej linijce. Niezrozumiałe... hmm, dla osób znających HTML jest to odpowiednik funkcji BR :). W Harvest Moon2 ten Hex ma wartość F1. A w tabeli można przyjąć, że będzie to znak '\'
7. Pierwsze próby zmiany tekstu
"If we don't do something" wypadałoby zamienić na "Jeśli czegoś nie zrobimy". Więc ustawiamy kursor przed literą 'I' i piszemy 'Jesli czegos\nie zrobim' i problem bo nie ma miejsca na literkę 'y' a te trzy kropki to znacznik przenoszący nas do kolejnego okna, którego pod żadnym pozorem nie wolno nam zmieniać (na razie nie wolno używać polskich czcionek). No ale dobra, zapiszmy i sprawdźmy co się stało. Otwieramy emulator... Hmm, pierwsze słowa dialogu już są, ale razi brak polskich czcionek :( Jednak postaramy się umieścić je w grze :)
8. Lubimy malować, prawda?
Nasza przygoda z TileEdytorem zaczyna się :)
Otwieramy TE, i co? Trochę dużo tego wszystkiego. Z lewej od góry: menadżer plików, mini operacje na pliku, nasza aktualna pozycja, tryb pracy edytora, rozmiar okna, w którym przeglądamy zawartość gry, a opcji 'Bitmap Mode' lepiej nie dotykać (w programie jest błąd, powodujący wyłączenie programu). Później bliżej środka jest mini edytor (możemy w nim rysować polskie czcionki i inne znaczki). Te dwa okna niżej to 'przybornik' A po lewej okno, które nam raczej się nie przyda. Więc załadujmy do niego angielski rom... nic nie znaczące kropeczki? Teraz dopiero trzeba znaleźć czcionki, które wykorzystuje rom, nie ma innego sposobu niż żmudne przewijanie. W HM2 czcionki są pod adresem 113568. Całe szczęście, są japońskie haczyki, czyli miejsca na przyszłe polskie czcionki. Jeżeli trafimy na grę gdzie nie ma ani haków, ani wolnego miejsca na czcionki, można je dorysować pod angielskie DTE (zlepki liter) lub pod coś takiego jak 's 't itp. A jeżeli nic z tych rzeczy nie znajdziemy, a chcemy koniecznie mieć polskie czcionki możemy zrezygnować z Liter QXVqxv i z niektórych znaków int. (musimy mieć 9 wolnych miejsc, na same małe czcionki). Ale tym (na razie) nie powinniśmy się martwić, mamy uproszczone zadanie :) Najlepiej przeciągnąć czcionki 'acelnoszz' do edytora, zrobić zbliżenie, włączyć tryb malowania, wybrać odpowiedni kolor i pobawić się w malarza.
Gdy będziemy mieli gotowe polskie czcionki, możemy je umieścić w grze. W TE widać: () kropkę i japoński haczyk. Już po kropce możemy wsadzać ąćęłńóśźż. Duże polskie czcionki nie są tak ważne i nie trzeba ich umieszczać. Za to przydatne są zlepki literowe takie jak sz, cz ch, ów, ie (ale trudno je zmieścić w polu 8x8). Bardzo potrzebny jest zlepek 'ie' (później się okaże dlaczego). Można też zlepiać ze sobą coś takiego jak 'a' oraz spacja ('a '). Można również narysować swoje czcionki, inaczej wyglądające, niż te oryginalne z gry :) Trochę roboty, ale za to jaki efekt :) Ja narysowałem jeszcze znaczek euro oraz małpę (@) :)
Uwaga! Rysując pamiętajmy o tym, żeby z prawej i lewej strony zrobić odstęp 1 pixela, dlaczego? Ponieważ, czcionki w przetłumaczonych wyrazach mogłyby na siebie nachodzić, co nie jest zbyt estetyczne.
Teraz tylko trzeba wzbogacić tablicę o polskie literki i nowe znaki, aby nasz HE obsługiwał polskie czcionki. Często jest z tym trochę roboty, ale znowu gra upraszcza nam robotę :) Trzeba się dobrze przyjrzeć i co? Znak ')' ma wartość 60 później jest jeszcze dziwna kropka i nasze czcionki, a w hexach każdy znak jest przyporządkowany kolejnej wartości, czyli na to wynika, że 'ą' ma wartość 62, proste, prawda?
Musimy obejrzeć nasze czcionki. Otwórzmy HE w miejsce pierwszych dialogów gry. Zmieńmy to co trzeba na polskie fonty. Dostępne jest DTE 'ie', więc tam gdzie są trzy bity dla wyrazu 'nie' teraz będą tylko dwie, czyli jedna wolna dla brakującej litery 'y' :)) Pojemaje?
9. INSERT i DUMP
Hmm, ja osobiście tłumacze tekst w okienku roboczym HE, oczywiście Hexecute jest przystosowany do Dumpu jak i Insertu. A po co? Jeżeli mamy jakąś większą ilość tekstu do przetłumaczenia. Wszystko dumpujemy do pliku *.txt, w celu łatwiejszej edycji (w Notatniku, jak i w każdym innym programie musimy załączyć opcje Insertowania tekstu - klawisz Insert). Jeżeli jesteście pewni wyboru. Zaczynamy. Zaznaczamy kursor w miejscu gdzie chcemy zacząć Dump, wybieramy Specjalne --> Zgraj Skrypt. W pierwszym okienku wpisujemy nazwę *.txt, niżej podajemy początek naszego skryptu, który warto gdzieś zapisać(dokładnie przepisujemy wartość z prawej dolnej części HE o nazwie Offset), a po prawej długość. Tu mały problem, bo wartość od 0 do 10 jest równa jednej linijce w HexEdytorze. Możemy robić na oko, nikt przecież nie będzie się bawił w liczenie... i OK. Plik powinien znaleźć się w katalogu z grą, można go dowolnie edytować, prócz oczywiście znaczników kończących okienko (w HM2 są to trzy kropki). Jeżeli tekst zostanie przetłumaczony, musimy go z powrotem wsadzić do gry, za pomocą funkcji Wgraj Skrypt.
Tutaj wpisujemy nazwę. Adres początkowy, czyli wartość z poprzedniej części (nasz odpis). Musimy wprowadzić ją bardzo dokładnie, jeśli będzie inna, gra po insercie i zapisie raczej nie ruszy (a jeśli ruszy, tekst nie będzie wyświetlany), dlatego też zawsze warto robić kopię zapasową tłumaczonej gry.
10. Wskaźniki, do czego mogą się przydać? (dla dorosłych)
Wskaźniki, inaczej nazywane Pointerami to wyższa szkoła jazdy, jedna z trudniejszych dziedzin RomHackingu (nie bije Assemblera). Po prostu żmudna zabawa z systemem szesnastkowym romu. Może się urobimy, ale na pewno będzie widoczny efekt :) Do czego... no np. w angielskiej wersji HM2 w Item'ach występuje słowo Milker. Chcemy to przetłumaczyć jako Dojarka (inaczej kombinować się nie da) i problem, bo wyraz tłumaczony jest za długi. Możemy jednak, za pomocą pointerów oczywiście zapisać słowo Dojarka. Oczywiście nic nie da się zrobić od tak. Trzeba to zrobić kosztem innych wyrazów występujących niedaleko danego wyrazu.
Wszystko będzie się odbywało w HexEdytorze i aby lepiej to zrozumieć próbujcie postępować zgodnie z instrukcją z romem HM2.
Załadujmy nasz rom do HE i przejdźmy do offsetu 56540. Zauważmy, że wcześniej jest napisane: "Leave shop", co bez problemu można zastąpić jako 'Opuść'. Zwolniło się miejsce, aby wpisać słowo 'Dojarka'. Ustawmy nasz kursor przed rozpoczęciem się wyrazu, którego położenie chcemy zmienić. W moim przypadku coś takiego: '.|Milker', gdzie '|' to kursor. Musimy znać offset danego wyrazu (prawa dolna część HE). Lecz z tego bierzemy tylko 4 ostatnie liczby: 655A, dzielimy to na połowę i zmieniamy kolejność, co daje 5A65... i jush :) mamy naszego pointera. Łatwo było. Ale w innych grach...
Pointery we wszystkich grach na GB są schowane pomiędzy 4000 a 7FFF (nasz pointer też). I jeśli nasz offset jest między:
0000-3FFF - musimy dodać 4000 do offsetu,
4000-7FFF - zostawiamy go w spokoju (655A mieści się właśnie w tym przedziale, dlatego też nie wykonywaliśmy nic innego, tylko dzielenie na pół i zmiana kolejności)
8000-BFFF - odejmujemy 4000
C000-FFFF - odejmujemy 8000
Zauważmy również, że po każdym z Itemów jest wartość F0, o której nie powinniśmy nigdy zapomnieć! Jeżeli nie rozumiemy systemu szesnastkowego (lub chcemy się upewnić, czy nasze obliczenia są dobre) użyjmy systemowego kalkulatora. Kalkulator znajduje się na ogół w akcesoriach :) Z menu widok wybieramy Naukowy (lub Zaawansowany) i system HEX. Teraz musimy wpisać słowo 'Dojarka'. Po słowie 'Opuść' wstawiamy Hex F0 i piszemy 'Dojarka'. Teraz ustawmy kursor przed literą D (tak jak w przypadku litery 'M') i odczytajmy offset. Odczyt: 6555, co po podziale i zmianie kolejności daje: 5565. Logicznie myśląc wartość 5A65 należy zastąpić wartością 5565. Więc znajdźmy wartość 5A65. Wybierzmy Znajdź Hex. Znalazło dwie podobne wartości obok siebie (można to nazwać tablicą pointerów). Zmieńmy obydwie na 5565. Teraz, gdy zapiszemy i otworzymy grę w emulatorze powinno pisać Dojarka. Jeżeli zaś ominęlibyśmy pointery, zobaczylibyśmy literki 'ka'.
Na ogół wskaźniki w HE są nad tłumaczonym tekstem i mają podobne wartości (w naszym przypadku jest dużo wartości xx65). Tak trzeba robić z każdym z naszych wyrazów, znaleźć oryginalnego pointera, przetłumaczyć wyraz i dla niego znaleźć już wartość nowego pointera.
Uwaga!
Powyższy tekst o Pointerach dotyczy tylko gier na GB, inne platformy mają inny system zapisu wskaźników. Inny kurs dotyczący pointerów znajdziecie na stronie RustyCan'a: http://strony.wp.pl/wp/rusty_can/pointery.html (dotyczy pointerów systemu SNES) (strona niestety nieaktualna... ale na szczęście odnalazłem ten artykuł i zostal umieszczony na naszej stronie - LINK)
11. IPS
Tu naprawdę, nie ma co tłumaczyć, mając tak banalny program... Gdy mamy gotową gierkę po prostu wybieramy: pierwsze oryginalny rom, później przetłumaczony i Create IPS i IPS gotowy do użycia :) Chyba najprostsze co może być w tłumaczeniu, a osoby, które nie umiały 'spatchować' gry niech lepiej się za to nie biorą (mogłem to na początku napisać :P)
12. To dopiero początek...
Pocieszę was :), nawet nie wiem, czy to połowa, tego co was czeka przy tłumaczeniach :P. Na pewno nie traficie na grę, którą można równie prosto przetłumaczyć, jak HM2 (zdarzają się wyjątki). To jest tylko tutorial dla 'bardzo' początkujących;). W zasadzie wytłumaczyłem tu wszystko (oprócz oczywiście assemblera), co może nas zaskoczyć.
Sam wziąłem się za tłumaczenie HM2 (idę na łatwiznę :) ). Zajrzyjcie jeszcze do działu Linki, może pomogą :)
13. Outro
Nie ma tu czegoś istotnego, zapomniałem o czymś? Znalazłeś jakiś błąd w treści merytorycznej tekstu, czy literówkę, czy może błąd ortograficzny (:|), napisz do mnie.
To jest mój pierwszy dłuższy tekst, każdemu może zdarzyć się pomyłka:) I jeśli nawet macie problem z wybraną grą, chętnie pomogę...
Ale jeżeli naprawdę chcecie tłumaczyć, radzę nie tracić nadziei. Ja potrzebowałem 2 lat, aby bezproblemowo tłumaczyć gry (lecz na pewno nie wiem wszystkiego).
Autor: ErnBob
Korekta: RPG & bemberg
Spis treści:
1. Intro
2. Co to jest Rom Hacking?
3. Od czego zacząć?
4. Co może się przydać?
5. Hmm, co to za dziwne liczby w tym HE?
6. Co to jest Tablica?
7. Pierwsze próby zmiany tekstu
8. Lubimy malować, prawda?
9. INSERT i DUMP
10. Wskaźniki, do czego mogą się przydać?
11. IPS
12. To dopiero początek...
13. Outro
Narzędzia:
1. HexEdytor - Hexecute
2. TileEdytor - TilEd 2002
3. Tablice - Tabular
4. Szukacz wartości - SearchR
5. IPS - ipsXP
6. Emulator - VisualBoyAdvance
7. Rom Harvest Moon 2 (U) na GBC - Szukaj
1. Intro
Sam uważam, że nie mam daru do tłumaczenia (w sensie piszę, lub coś mówię, a druga osoba próbuje to zrozumieć:) ) Teraz może się to okazać. Zapraszam do lektury!
2. Co to jest Rom Hacking?
Sama nazwa może kojarzyć się z szeroko pojętnym działem Hackerstwa. Może i coś w tym jest, ale nie do końca. Rom Hacker to osoba, która za pomocą specjalnych programów (Hex Edytorów, Tile Edytorów) zmienia zawartość romu.
3. Od czego zacząć?
Najlepiej od zaopatrzenia się w odpowiednie programy (wszystkie, jakie będą wykorzystane w kursie są na tej stronie w dziale Download). Ja osobiście używam Windowsa 2000 lub XP. Podane tu programy działają na systemach NT.
HexEdytor - bardzo prostym edytorem jest program Hexecute, w sam raz dla początkujących i jeszcze w polskiej wersji językowej. Jak ktoś jeszcze nie wie, 'HE' to program, który po przetworzeniu wartości podanych w tablicy, pokazuje zawartość naszej gry (tylko NT).
TileEdytor - TilEd 2002, będzie w sam raz. Ma dość dużo funkcji, ale i ładną szatę graficzną, dzięki czemu jest przejrzysty i nawet początkujący będzie wiedział gdzie kliknąć. Aha no i 'TE' służy do zmiany grafiki w romie, czyli tym programem zrobimy polskie czcionki w grze, no i o ile będzie taka możliwość i potrzeba to pozwolimy sobie na małe zmiany grafiki (zdarza się, że tekst zapisywany jest jako grafika).
Tablice - wystarczająco dobrym programem jest TaBuLar. Posłuży nam jako menadżer tablic. Jak już wcześniej wspomniałem Tablica to normalny plik tekstowy, który po załadowaniu do hexedytora, mówi mu jaka litera jest przyporządkowana danej wartości Hexowej (1 Bitowi).
Szukacz wartości - My takiego programu nie potrzebujemy. Nasz HexEdytor ma możliwość relatywnego szukania. Jak na początek wystarczy, ale nie zaszkodzi zaopatrzyć się w program SearchR.
IPS - ...a to już po zmianach grafiki i tłumaczeniu. IPS to po prostu patch do gry. Ja gorąco polecam program ipsXP, który całkowicie integruje się z naszym Windowsem. I w przeciwieństwie do nazwy ruszy na każdym systemie operacyjnym.
Nie mam Windowsa NT... Jest teraz tyle HexEdytorów. Hexecute można bez problemu zastąpić Translhextion'em. Jeżeli naprawdę nie umiemy się żadnym z nich posługiwać to zapraszam w imieniu Dream#Teamu na forum http://www.emudreams.pl
Wszystko w dziale Download!! (niestety nie uświadczymy już tam tego typu programów... ale zapraszamy do naszego downloadu, wszystkie pliki są sprawdzone i działają pod XP)
4. Co może się przydać?
Na pewno angielska wersja gry (cały kurs opiera się na Harvest Moon'ie 2 na GBC) i emulator, obsługujący GBC. Bez wątpliwości najlepszy z najlepszych to VBA w wersji 1.4 lub 1.5 jak kto woli. Czasami może przydać się znajomość języka obcego ;P a już naprawdę czasami, chociaż małe pojęcie o systemie szesnastkowym.
5. Hmm, co to za dziwne liczby w tym HE?
Spróbuje wam rozjaśnić w mózgownicach ;)
Otwórzmy naszego HexEdytora. Powiem tylko, że okienko robocze podzielone jest na trzy części. Po lewej są liczby, które pokazują nam naszą pozycję (jeżeli chcemy po zamknięciu HE powrócić do danego miejsca wybieramy Edycja --> Idź do... i wpisujemy nasz odczyt. Ta funkcja jest bardzo przydatna podczas Dumpu i Insertu). środkowa część to nic innego, jak wartości szesnastkowe gry. A po prawej to już, obrobione wartości hex, czyli to coś gdzie będą dialogi, itp. Powiem na jakiej zasadzie to działa. Czyli tak, wszystko zaczyna się w pliku tablicy, np, jeżeli znajduje się tam coś takiego, jak: 4A=a. Właśnie taka wartość 4A jest w środkowej części edytora, to po prawej powinna ukazać się naszym oczom literka a, jeżeli według tej tabeli 4B=b, to w tych miejscach będzie pojawiać się literka b. Podobnie jest z wszystkimi innymi znakami oraz cyframi, każda z nich ma swoją wartość HEX.
6. Co to jest Tablica?
Jak już mówiłem, tablica to po prostu plik tekstowy w formacie *.tbl. Spróbujemy coś takiego zrobić. Po pierwsze do naszego edytora ładujemy gierkę. Na razie domyślną tablicą programu jest ASCII, czyli taki system, którego na co dzień używamy w Windowsach. Wybieramy opcję 'Znajdź' i tutaj najlepiej wpisać wyraz, który występuje w dialogach, zaczyna się z małej litery a, b, c lub d i ma co najmniej 5 liter. Ja wybrałem słowo 'build', które występuje w pierwszych dialogach gry. Zmieniamy 'Rodzaj Szukania' na Relatywne, oraz w 'Opcjach Specjalnych wszystko wymazujemy, no i klikamy na 'Następny'. Jak widać podświetlił nam się jakiś ciąg Hexów, zaczynający się od 25. Prawidłowo 25 powinno równać się 'b', ale należy to sprawdzić. Otwieramy program TaBuLar. Naszym oczom ukazuje się miejsce na nową tablice. W miejsce 25 (w pionie 2 w poziomie 5) wpisujemy literkę 'b'. Znając alfabet, przed 'b' znajduje się literka 'a', więc w miejsce 24 wpisujemy tą literkę. Zostawiając podświetlone miejsce 24 z menu wybieramy Insert --> Lowercase English Alphabet.
Chcąc, nie chcąc to początek tablicy do gry HM2. Ale nie cieszmy się za długo, jeszcze trzeba sprawdzić, czy rzeczywiście 25=b... jak? Zapiszmy naszą tablicę wybierając format Thingy TBL, najlepiej w katalogu z grą. Teraz tam gdzie były te głupie, nic nie znaczące wartości, widać już coś co przypomina tekst, więc wartość była poprawna. Lecz to jeszcze nie wszystko. Brakuje dużych liter. Hmm, teraz to już łatwe zadanie. Początek dialogu: "If we don't" Jest duża litera, ale w HexEdytorze jej nie widać. Sprawdźmy jaką ma wartość zaznaczając kursor przed '.f' (ta kropka to przyszła litera 'I') Jeżeli wszystko poszło zgodnie z planem ta kropka jest przypisana wartości 12. Więc uzupełnijmy to w TaBuLarze. Już widać, że litera 'A' będzie miała wartość 0A, więc zaznaczmy tą wartość i kolejno Insert --> Capital English Alphabet. Litera 'I' pozostała na swoim miejscu? Mamy duże litery? Bardzo dobrze. I jeszcze brakuje znaków interpunkcyjnych i cyferek. Spróbujcie sami się pomęczyć :)
Aha, przyjrzyjmy się dokładnie. W dialogu widać coś takiego: 'we.don..do' jedna z kropek po 'don' to spacja (wartość 48), powinno być miejsce dla literki t (której nie widać) i apostrofa. Dlaczego? Tutaj znaki "'t" odpowiadają jednej wartości hexowej (wartość 52), to taka mała oszczędność miejsca (DTE). Te wiadomości powinny wystarczyć, aby można było zrobić pełną tablicę.
Jeszcze wyjaśnię co to jest 'znacznik łamiący linię'. To po prostu wartość hex, która mówi romowi, kiedy ma pisać w niższej linijce. Niezrozumiałe... hmm, dla osób znających HTML jest to odpowiednik funkcji BR :). W Harvest Moon2 ten Hex ma wartość F1. A w tabeli można przyjąć, że będzie to znak '\'
7. Pierwsze próby zmiany tekstu
"If we don't do something" wypadałoby zamienić na "Jeśli czegoś nie zrobimy". Więc ustawiamy kursor przed literą 'I' i piszemy 'Jesli czegos\nie zrobim' i problem bo nie ma miejsca na literkę 'y' a te trzy kropki to znacznik przenoszący nas do kolejnego okna, którego pod żadnym pozorem nie wolno nam zmieniać (na razie nie wolno używać polskich czcionek). No ale dobra, zapiszmy i sprawdźmy co się stało. Otwieramy emulator... Hmm, pierwsze słowa dialogu już są, ale razi brak polskich czcionek :( Jednak postaramy się umieścić je w grze :)
8. Lubimy malować, prawda?
Nasza przygoda z TileEdytorem zaczyna się :)
Otwieramy TE, i co? Trochę dużo tego wszystkiego. Z lewej od góry: menadżer plików, mini operacje na pliku, nasza aktualna pozycja, tryb pracy edytora, rozmiar okna, w którym przeglądamy zawartość gry, a opcji 'Bitmap Mode' lepiej nie dotykać (w programie jest błąd, powodujący wyłączenie programu). Później bliżej środka jest mini edytor (możemy w nim rysować polskie czcionki i inne znaczki). Te dwa okna niżej to 'przybornik' A po lewej okno, które nam raczej się nie przyda. Więc załadujmy do niego angielski rom... nic nie znaczące kropeczki? Teraz dopiero trzeba znaleźć czcionki, które wykorzystuje rom, nie ma innego sposobu niż żmudne przewijanie. W HM2 czcionki są pod adresem 113568. Całe szczęście, są japońskie haczyki, czyli miejsca na przyszłe polskie czcionki. Jeżeli trafimy na grę gdzie nie ma ani haków, ani wolnego miejsca na czcionki, można je dorysować pod angielskie DTE (zlepki liter) lub pod coś takiego jak 's 't itp. A jeżeli nic z tych rzeczy nie znajdziemy, a chcemy koniecznie mieć polskie czcionki możemy zrezygnować z Liter QXVqxv i z niektórych znaków int. (musimy mieć 9 wolnych miejsc, na same małe czcionki). Ale tym (na razie) nie powinniśmy się martwić, mamy uproszczone zadanie :) Najlepiej przeciągnąć czcionki 'acelnoszz' do edytora, zrobić zbliżenie, włączyć tryb malowania, wybrać odpowiedni kolor i pobawić się w malarza.
Gdy będziemy mieli gotowe polskie czcionki, możemy je umieścić w grze. W TE widać: () kropkę i japoński haczyk. Już po kropce możemy wsadzać ąćęłńóśźż. Duże polskie czcionki nie są tak ważne i nie trzeba ich umieszczać. Za to przydatne są zlepki literowe takie jak sz, cz ch, ów, ie (ale trudno je zmieścić w polu 8x8). Bardzo potrzebny jest zlepek 'ie' (później się okaże dlaczego). Można też zlepiać ze sobą coś takiego jak 'a' oraz spacja ('a '). Można również narysować swoje czcionki, inaczej wyglądające, niż te oryginalne z gry :) Trochę roboty, ale za to jaki efekt :) Ja narysowałem jeszcze znaczek euro oraz małpę (@) :)
Uwaga! Rysując pamiętajmy o tym, żeby z prawej i lewej strony zrobić odstęp 1 pixela, dlaczego? Ponieważ, czcionki w przetłumaczonych wyrazach mogłyby na siebie nachodzić, co nie jest zbyt estetyczne.
Teraz tylko trzeba wzbogacić tablicę o polskie literki i nowe znaki, aby nasz HE obsługiwał polskie czcionki. Często jest z tym trochę roboty, ale znowu gra upraszcza nam robotę :) Trzeba się dobrze przyjrzeć i co? Znak ')' ma wartość 60 później jest jeszcze dziwna kropka i nasze czcionki, a w hexach każdy znak jest przyporządkowany kolejnej wartości, czyli na to wynika, że 'ą' ma wartość 62, proste, prawda?
Musimy obejrzeć nasze czcionki. Otwórzmy HE w miejsce pierwszych dialogów gry. Zmieńmy to co trzeba na polskie fonty. Dostępne jest DTE 'ie', więc tam gdzie są trzy bity dla wyrazu 'nie' teraz będą tylko dwie, czyli jedna wolna dla brakującej litery 'y' :)) Pojemaje?
9. INSERT i DUMP
Hmm, ja osobiście tłumacze tekst w okienku roboczym HE, oczywiście Hexecute jest przystosowany do Dumpu jak i Insertu. A po co? Jeżeli mamy jakąś większą ilość tekstu do przetłumaczenia. Wszystko dumpujemy do pliku *.txt, w celu łatwiejszej edycji (w Notatniku, jak i w każdym innym programie musimy załączyć opcje Insertowania tekstu - klawisz Insert). Jeżeli jesteście pewni wyboru. Zaczynamy. Zaznaczamy kursor w miejscu gdzie chcemy zacząć Dump, wybieramy Specjalne --> Zgraj Skrypt. W pierwszym okienku wpisujemy nazwę *.txt, niżej podajemy początek naszego skryptu, który warto gdzieś zapisać(dokładnie przepisujemy wartość z prawej dolnej części HE o nazwie Offset), a po prawej długość. Tu mały problem, bo wartość od 0 do 10 jest równa jednej linijce w HexEdytorze. Możemy robić na oko, nikt przecież nie będzie się bawił w liczenie... i OK. Plik powinien znaleźć się w katalogu z grą, można go dowolnie edytować, prócz oczywiście znaczników kończących okienko (w HM2 są to trzy kropki). Jeżeli tekst zostanie przetłumaczony, musimy go z powrotem wsadzić do gry, za pomocą funkcji Wgraj Skrypt.
Tutaj wpisujemy nazwę. Adres początkowy, czyli wartość z poprzedniej części (nasz odpis). Musimy wprowadzić ją bardzo dokładnie, jeśli będzie inna, gra po insercie i zapisie raczej nie ruszy (a jeśli ruszy, tekst nie będzie wyświetlany), dlatego też zawsze warto robić kopię zapasową tłumaczonej gry.
10. Wskaźniki, do czego mogą się przydać? (dla dorosłych)
Wskaźniki, inaczej nazywane Pointerami to wyższa szkoła jazdy, jedna z trudniejszych dziedzin RomHackingu (nie bije Assemblera). Po prostu żmudna zabawa z systemem szesnastkowym romu. Może się urobimy, ale na pewno będzie widoczny efekt :) Do czego... no np. w angielskiej wersji HM2 w Item'ach występuje słowo Milker. Chcemy to przetłumaczyć jako Dojarka (inaczej kombinować się nie da) i problem, bo wyraz tłumaczony jest za długi. Możemy jednak, za pomocą pointerów oczywiście zapisać słowo Dojarka. Oczywiście nic nie da się zrobić od tak. Trzeba to zrobić kosztem innych wyrazów występujących niedaleko danego wyrazu.
Wszystko będzie się odbywało w HexEdytorze i aby lepiej to zrozumieć próbujcie postępować zgodnie z instrukcją z romem HM2.
Załadujmy nasz rom do HE i przejdźmy do offsetu 56540. Zauważmy, że wcześniej jest napisane: "Leave shop", co bez problemu można zastąpić jako 'Opuść'. Zwolniło się miejsce, aby wpisać słowo 'Dojarka'. Ustawmy nasz kursor przed rozpoczęciem się wyrazu, którego położenie chcemy zmienić. W moim przypadku coś takiego: '.|Milker', gdzie '|' to kursor. Musimy znać offset danego wyrazu (prawa dolna część HE). Lecz z tego bierzemy tylko 4 ostatnie liczby: 655A, dzielimy to na połowę i zmieniamy kolejność, co daje 5A65... i jush :) mamy naszego pointera. Łatwo było. Ale w innych grach...
Pointery we wszystkich grach na GB są schowane pomiędzy 4000 a 7FFF (nasz pointer też). I jeśli nasz offset jest między:
0000-3FFF - musimy dodać 4000 do offsetu,
4000-7FFF - zostawiamy go w spokoju (655A mieści się właśnie w tym przedziale, dlatego też nie wykonywaliśmy nic innego, tylko dzielenie na pół i zmiana kolejności)
8000-BFFF - odejmujemy 4000
C000-FFFF - odejmujemy 8000
Zauważmy również, że po każdym z Itemów jest wartość F0, o której nie powinniśmy nigdy zapomnieć! Jeżeli nie rozumiemy systemu szesnastkowego (lub chcemy się upewnić, czy nasze obliczenia są dobre) użyjmy systemowego kalkulatora. Kalkulator znajduje się na ogół w akcesoriach :) Z menu widok wybieramy Naukowy (lub Zaawansowany) i system HEX. Teraz musimy wpisać słowo 'Dojarka'. Po słowie 'Opuść' wstawiamy Hex F0 i piszemy 'Dojarka'. Teraz ustawmy kursor przed literą D (tak jak w przypadku litery 'M') i odczytajmy offset. Odczyt: 6555, co po podziale i zmianie kolejności daje: 5565. Logicznie myśląc wartość 5A65 należy zastąpić wartością 5565. Więc znajdźmy wartość 5A65. Wybierzmy Znajdź Hex. Znalazło dwie podobne wartości obok siebie (można to nazwać tablicą pointerów). Zmieńmy obydwie na 5565. Teraz, gdy zapiszemy i otworzymy grę w emulatorze powinno pisać Dojarka. Jeżeli zaś ominęlibyśmy pointery, zobaczylibyśmy literki 'ka'.
Na ogół wskaźniki w HE są nad tłumaczonym tekstem i mają podobne wartości (w naszym przypadku jest dużo wartości xx65). Tak trzeba robić z każdym z naszych wyrazów, znaleźć oryginalnego pointera, przetłumaczyć wyraz i dla niego znaleźć już wartość nowego pointera.
Uwaga!
Powyższy tekst o Pointerach dotyczy tylko gier na GB, inne platformy mają inny system zapisu wskaźników. Inny kurs dotyczący pointerów znajdziecie na stronie RustyCan'a: http://strony.wp.pl/wp/rusty_can/pointery.html (dotyczy pointerów systemu SNES) (strona niestety nieaktualna... ale na szczęście odnalazłem ten artykuł i zostal umieszczony na naszej stronie - LINK)
11. IPS
Tu naprawdę, nie ma co tłumaczyć, mając tak banalny program... Gdy mamy gotową gierkę po prostu wybieramy: pierwsze oryginalny rom, później przetłumaczony i Create IPS i IPS gotowy do użycia :) Chyba najprostsze co może być w tłumaczeniu, a osoby, które nie umiały 'spatchować' gry niech lepiej się za to nie biorą (mogłem to na początku napisać :P)
12. To dopiero początek...
Pocieszę was :), nawet nie wiem, czy to połowa, tego co was czeka przy tłumaczeniach :P. Na pewno nie traficie na grę, którą można równie prosto przetłumaczyć, jak HM2 (zdarzają się wyjątki). To jest tylko tutorial dla 'bardzo' początkujących;). W zasadzie wytłumaczyłem tu wszystko (oprócz oczywiście assemblera), co może nas zaskoczyć.
Sam wziąłem się za tłumaczenie HM2 (idę na łatwiznę :) ). Zajrzyjcie jeszcze do działu Linki, może pomogą :)
13. Outro
Nie ma tu czegoś istotnego, zapomniałem o czymś? Znalazłeś jakiś błąd w treści merytorycznej tekstu, czy literówkę, czy może błąd ortograficzny (:|), napisz do mnie.
To jest mój pierwszy dłuższy tekst, każdemu może zdarzyć się pomyłka:) I jeśli nawet macie problem z wybraną grą, chętnie pomogę...
Ale jeżeli naprawdę chcecie tłumaczyć, radzę nie tracić nadziei. Ja potrzebowałem 2 lat, aby bezproblemowo tłumaczyć gry (lecz na pewno nie wiem wszystkiego).