Artykuł: Pointery w grach na GBA (by FenX)
Autor: FenX
Poprawki: mit_mis, mziab
Korekta: bemberg
I. Obliczanie pointerów
Obliczanie pointerów na GBA jest stosunkowo proste, bo w tych standardowych przypadkach nie musimy wykonywać żadnych operacji arytmetycznych.
Przyjmijmy, że szukamy wskaźnika do jakiegoś tekstu znajdującego się pod offsetem 123456. Robimy to tak:
1. Dzielimy offset na pojedyncze bajty - 12 34 56
2. Zamieniamy je kolejnością - 563412.
Jak możemy zauważyć, tylko pierwszy i ostatni bajt zmieniły swoje położenie - zamieniły się miejscami
OK, ale co zrobić jeżeli offset posiada nieparzystą liczbę znaków, np. 12345? Dodajemy na początku offsetu cyfrę 0, a dalej postępujemy wg. instrukcji opisanych wyżej (012345 -> 452301).
Właśnie w takiej formie w grach na GBA najczęściej występują pointery, ale czasami możemy spotkać bardziej skomplikowane przypadki, np. gdy od offsetu tekstu musimy odjąć offset początku blok i dopiero z tego liczymy wskaźnik.
II. Występowanie pointerów w ROMie.
Pointery mogą występować w tzw. tablicy (tzn. wszystkie w jednym miejscu) lub mogą być rozrzucone po całym ROMie.
Jak znaleźć taką tablicę? Otóż... Dla przykładu:
Mamy w menu głównym gry trzy pozycje:
Start Game (offset: B42CB1)
Options (offset: B42CB4)
Save: (offset: B42CB7)
Quit: (offset: B42CBA)
Więc żeby znaleźć tablicę pointerów szukamy ciągu hexów:
B1**B4**B7**BA
(Czyli końcówki naszych offsetów albo inaczej początki naszych pointerów)
tablicę pointerów, ale tablica może występowac również w formach:
- Jednobajtowej (w naszym przykładzie: B1B4B7BA)
- Trzybajtowej (****B1****B4****B7****BA)
- lub w odwrotnej kolejności: (BA**B7**B4**B1)
[PORADNIK] Pointery w grach GBA
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości