HACKING (POINTERY)
Vitam ponownie, dzisiejsza lekcja pomoże wam poradzić sobie z problemami polegającymi na nie mieszczeniu się polskich słów w miejscach oryginalnych tekstów gier. Lekcja ta będzie dość trudna i wamagać będzie sporo cierpliwości, ale przyniesie wielkie efekty.
1. Co będzie potrzebne?
Standardowo zaczynamy od przygotowania narzędzi niezbędnych do pracy. Tak więc będziemy potrzebowali hex edytora, ROMu z grą oraz emulatora, aby sprawdzić efekt naszej pracy.
2. Czym są pointery?
Pointery to wartości wskazujące nam gdzie zaczyna się jakaś część tektów. Są także pointery kończące dany tekst, jednak te są bardzo rzadko spotykane, gdyż zwykle stosowane są tzw. "przerywacze", czyli pojedyńcza wartość, która ucina tekst podczas gry. Różne systemy mają swój sposób wyznaczania pointerów, jednak wszystkie gry mogą jakoś od reguł danego systemu odstępować. Podczas poszukiwania pointerów potrzebna będzie więc nasza intuicja. Pointery mogą być wszystkie w jednym miejscu, mogą też być porozrzucane po całym ROMie.
3. Jak znaleźć tablicę pointerów?
Powiedzmy, że mamy w ROMie listę jakiś tam pojedyńczych słów. Każde z nich możemy przedłużyć kosztem innego. Tylko jak? Już tłumaczę. W edytorze hexów klikamy na pierwszą literę słowa i spisujemy jej wartość, np. 032F05, klikamy na pierwszą literę następnego słowa i również spisujemy wartość, np. 032F09. Robimy tak z jeszcze kilkoma słowami i mamy np. takie wartości 032F05, 032F09, 032F10 i 032F2C. Do następnego kroku polecam zaopatrzyć się w program SnesEdit. Otwieramy wyszukiwarkę wartości hex (w SnesEdit jest to klawisz H) i wpisujemy takie coś: 05**09**10**2C. Wpisane wartości są końcówkami adresów wcześniej spisanych hexów. Gwiadkami zastępujemy wartości 32h. Jeśli będziesz miał szczęście to uda ci się znaleźć tablicę pointerów. Jednak od tej reguły bywają też odstępstwa. Pointery mogą być zapisane w odwrotnej kolejności (2C**10**09**05), w formie jednobitowej (0509102C), czy też trzybitowej (****05****09****10****2C). W SnesEdit mamy jednak możliwość automatycznego wyszukiwania pointerów i pokazywanie codany pointer wskazuje. Działa to niestety tylko na ROMach Snesa. Kiedy już znajdziemy tablicę pointerów, wystarczy tylko pozmieniać ich wartości, aby wyregulować długość danych słów i tekstów. Tablicę pointerów można też znaleźc w inny sposób, ale to przydaje się tylko, gdy tablica znajduje się tuż nad/pod tekstem. Jeśli nad twoim tekstem są powtarzające się w równych odstępach wartości, a obok nich są zwiększające się liczby (np. 10580028105F001810... itd. jak widać, powtarzają się ciągle wartości 10 oraz 00) to jest to na 95% twoja tablica pointerów.
4. Edytujemy pointery.
Skoro mamy już naszą tablicę pointerów to możemy zacząć ich edycję. Zrób tak, wróć do normalnych, czytelnych słów i kliknij na pierwszą literę pierwszego słowa, spisz jego wartość i kliknij na pierwszą literę drugiego słowa, a następnie ponownie spisz wartość (zrób tak z przynajmniej trzema słowami). Przykładowo mamy tak: 32D58, 32D67 i 32D72 i odejmij je od siebie (możesz użyć kalkulatora Windowsa). 32D67-32D58=15, 32D72-32D67=11 (taka mała podpowiedź: możesz po prostu liczyć literki, jeśli nie chce ci się liczyć). Chcemy wydłużyć tekst nr 3 o powiedzmy dwie litery, ale żeby to zrobić, musimy jednocześnie skrócić słowo nr 2 o te dwie literki (oba tekstu będą miały po 13 liter). Przechodzimy w tym celu do tablicy pointerów i sprawdzamy rosnące wartości. Tablica wygląda mniej więcej tak:
05AF4CB626BCDBC209AF50B62CBCE2C218AF55B638BCE7C223AF
Obliczmy teraz różniece pomiędzy poszczególnymi wartościami. 09-05=4. Ten wynik nic nam nie mówi, więc idziemy dalej: 18-09=15 (w hexach jest to F). Ten wynik dobrze już znamy, gdyż oznacza on długość słowa nr 2. Mimo to idziemy dalej: 23-18=11 (w hexach jest to D). Podobna sytuacja - ten wynik to długość słowa nr 3. Może już się domyśliłeś co trzeba zrobić, ale jeśli nie to tłumaczę. Musisz teraz zmienić poszczególne wartości tak, aby długość tekstu nr 2 i nr 3 wynosiła 13. Następnie wracasz do tekstu i usuwasz w drugim tekście dwa miejsca (bez kropki [w Hex Workshop zaznaczasz dwa znaki, naciskasz PPM i wybierasz Delete lub wciskasz klawisz Del]), natomiast w słowie trzecim dodajesz dwa miejsca (przed kropką [w Hex Workshop wciskasz PPM i wybierasz Insert lub wciskasz klawisz Ins, a następnie wpisujesz odpowiednią ilość znaków oraz zatwierdzasz wciskając OK]). Teraz oba słowa mają po 13 znaków.
5. Zakończenie.
Jeśli wszystko działa i nie widzisz żadnych błędów to znaczy, że udało ci się przesunąć pointery. Jak widzisz jest to dość trudna, mozolna praca i wymaga sporo cierpliwości, ale dzięki temu uda ci się zrobić o wiele lepsze spolszczenie. Do profesjonalnego tworzenia spolszczeń potrzebujesz jeszcze tylko umiejętności edycji grafiki, aby móc przerobić czcionkę, żeby zawierała polskie znaki. O tym w kolejnym kursie.
Autor: lukasz050792