Blog (1)
Komentarze (819)
Recenzje (0)

Gra niemożliwa do przejścia — ja nie dam rady?

@pionnerGra niemożliwa do przejścia — ja nie dam rady?13.05.2017 21:27

Na początku chcę uprzedzić, że jeśli bawiłeś się kiedyś hex edytorem, modyfikowałeś zapisy gier itp. to raczej nie dowiesz się tutaj niczego nowego. Ale i tak możesz przeczytać :) Mam nadzieję, ze mój pierwszy wpis przypadnie wam do gustu.

W podstawówce, czyli już parę ładnych lat temu, odkupiłem od znajomego mojego pierwszego handhelda. Był to śliczny, fioletowo-przezroczysty Game Boy Color. Wraz z nim dostałem dwie gry- “Nigel Mansell’s World Championship”, oraz bohatera dzisiejszego wpisu, grę “Tony Hawk’s Pro Skater 3”.

Bohater dzisiejszego opowiadania
Bohater dzisiejszego opowiadania

Zagrywałem się w nią godzinami, jednak nigdy nie udało mi się dojść dalej, niż do czwartego poziomu, przy czym pierwsze trzy były odblokowane od ręki.

Gra na GBC, tak samo jak jej “doroślejsze” odpowiedniczki z PS2, czy PC polegała na wykonywaniu określonych zadań na czas- dostajesz listę zadań do wykonania: zdobycie danej liczby punktów, wykonanie konkretnego triku, czy zebranie literek SKATE rozrzuconych po planszy. Za każde wykonane zadanie gracz był nagradzany punktem statystyk, a zebranie ich odpowiedniej ilości odblokowywało następną mapę. Ponadto, niektóre plansze były turniejami, na których jedynym celem było zebranie jak największej liczby punktów.

Lista zadań do wykonania na pierwszym poziomie
Lista zadań do wykonania na pierwszym poziomie

Ostatnio ponownie odkopałem grę i odpalając ją, miałem nadzieję, że tym razem mi lepiej pójdzie i chociaż obejrzę jak wyglądają dalsze poziomy. Niestety się zawiodłem, bo o ile z wersją na PC nigdy nie miałem większych problemów i potrafiłem ją dawniej przejść w jeden wieczór, to wydanie na GBC jest diabelnie trudne. Po zdobyciu 13 punktów na 16 wymaganych do odblokowania piątego poziomu (przy czym odblokowany czwarty poziom praktycznie nie pomaga) utknąłem na amen. Postanowiłem sobie jednak, że nie odpuszczę, dopóki nie obejrzę pozostałych poziomów (i nie znajdę taśmy VHS na 1 poziomie- coś czego te kilkanaście lat temu nigdy nie udało mi się zrobić).

Jako, że grę mam na gameboyowym kartridżu, z którym nic poza wsadzeniem w konsolę nie jestem w stanie zrobić, a już na pewno nie edytować zapisy, zacząłem więc od pozyskania ROMu gry w formacie .gbc, oraz instalacji emulatora.

Emulator przy pierwszym uruchomieniu gry tworzy plik .sav, w którym przechowywany jest postęp gracza i to nim będziemy się dzisiaj bawić. Do tego celu zainstalowałem GHex.

Zapis gry otwarty w edytorze heksadecymalnym
Zapis gry otwarty w edytorze heksadecymalnym

Jak widać na powyższym zrzucie, plik nie jest duży. Widoczne na dole wartości FF ciągną się przez jakiś czas i są przez grę ignorowane. Nie jestem pewien dlaczego tam są i dlaczego jest ich akurat tyle, ile jest, nie chcę teoretyzować.

Zaczynając jednak od początku, widzimy 54 48 33, które w ASCII tworzą TH3, następnie 20, czyli spacja i A018, które zapewne jest identyfikatorem gry. Dalszy ciąg jest dla nas (jeszcze) niezrozumiały, ale spostrzegawcza osoba może zobaczyć, że dane tworzą “schodki” pooddzielane zerami. Ponadto poniżej widać powtarzający się ciąg “TH3”.

Zaznaczyłem “schodki”
Zaznaczyłem “schodki”

Warto się zastanowić, co w ogóle gra może w tym pliku przechowywać. Na pewno będą to statystyki poszczególnych skejterów, zaliczone zadania oraz rekordy punktów. Patrząc na listę rekordów, chyba zaczynamy się domyślać, w której części zapisu gra je przechowuje :)

Rekordy
Rekordy

Ta część nas nie interesuje, ponieważ rekordy nam nic nie odblokowują. Szukamy dalej.

Przejdźmy sobie do podglądu statystyk skejterów. Pierwszym jest oczywiście Tony Hawk.

Statystyki Tonego
Statystyki Tonego

Czego możemy się tutaj dowiedzieć? Ano, Tony ma 6 statystyk, czyli dokładnie tyle, ile elementów ma nasz “schodek” w GHeksie. Wypiszmy sobie te statystyki po kolei: 4-3-4-6-3-2. Nie wygląda znajomo? Oczywiście jest to nasz pierwszy (czerwony) schodek. Drugą przechowywaną daną mamy już z głowy, teraz pozostało tylko odnaleźć zaliczone zadania. Każdy skejter ma oddzielnie zliczane zadania, więc tutaj obstawiałbym pustą przestrzeń pomiędzy statystykami. Po policzeniu poziomów wychodzi 9, czyli tyle, ile jest bajtów pomiędzy poszczególnymi skejterami. Myślę, że trafiliśmy :)

Pozostało tylko potwierdzić naszą teorię zaliczając jakieś zadanie. Zacząłem od zebrania słowa SKATE, a oto i wynik:

Zdobyty punkt
Zdobyty punkt

Popróbowałem z kilkoma zadaniami na wszystkich trzech dostępnych planszach i uzyskałem całkiem ciekawe wyniki. Czego można się było domyślić, to format zapisywanych danych. Jako, że każda plansza dysponuje tylko jednym bajtem na zapisanie stanu 7 zadań, jest to robione przez sumowanie kolejnych potęg dwójki. Pierwsze zadanie ma wartość 1, drugie 2, trzecie 4 i tak dalej. Przykładowo przy zaliczeniu zadań 1, 2, 7, zostanie to zapisane w sposób 1+2+32=35 (23 w zapisie szesnastkowym).

Logika nakazywałaby, żeby numeracja szła od pierwszego zadania do ostatniego, jednak widać, ze jedno z zadań było doimplementowywane na szybko :)

Reprezentacja zadań w zapisie
Reprezentacja zadań w zapisie

Szybki rzut okiem na listę zadań i od razu widzimy, że zbieranie VHSek zostało napisane po całej reszcie i raczej nie było planowane od początku.

Mamy wszystko, czego potrzebowaliśmy, pora sprawdzić naszą wiedzę. Szybka edycja pliku, odpalenie emulatora i... Gra skasowała zapis.

Emulator informuje, że gra właśnie radośnie dokonała zapisu... Usuwając nasze zmiany
Emulator informuje, że gra właśnie radośnie dokonała zapisu... Usuwając nasze zmiany

Szybka weryfikacja, czy wszystko było zmienione jak należy, kolejna próba, efekt ten sam. Co mogło pójść źle? Ano zapewne mamy gdzieś jakąś sumę kontrolną, która nam wchodzi w paradę. Teraz pytanie jak ją znaleźć. Najłatwiej będzie wykonać kopię pustego zapisu, wykonać jedną misję i porównać pliki. Oczekujemy, że podniesie się jeden punkt statystyk i zmieniony zostanie bajt odpowiadający za przechowywanie zaliczonych misji. Wszelkie inne zmiany będą oznaczać naszą sumę kontrolną. Odpalam, przechodzę, porównuję i nasz winowajca aż się świeci na biało :)

Winowajca na tacy
Winowajca na tacy

Dla przypomnienia: podświetlone 05 to nasza szybkość (statystyka), 10 (w szesnastkowym), czyli 16 (w dziesiętnym) to zaliczenie zadanie (z tabelki i screena z listą zadań powinieneś sam móc odczytać, które zadanie wykonałem).

Teraz pozostaje jeszcze problem obliczenia prawidłowej sumy. Tutaj z pomocą przychodzi nam jednak Online Checksum Calculator, który pozwala na obliczenie sum mniej więcej siedmioma trylionami sposobów. Najpierw wrzucamy niezmodyfikowany zapis (wszystkie bajty do sumy kontrolnej, oczywiście bez niej samej).

http://www.scadacore.com/field-tools/programming-calculators/online-checksum-calculator/
http://www.scadacore.com/field-tools/programming-calculators/online-checksum-calculator/

No i od razu widzimy, że “CheckSum8 Modulo 256” pokrywa się z naszą sumą. Bingo!

Szybkie podkręcenie naszych wyników:

0E(16) = 14(10), czyli maksymalna ilość punktów w danej statystyce
0E(16) = 14(10), czyli maksymalna ilość punktów w danej statystyce

I mamy wynik:

Sam nabiłem, nie oszukiwałem!
Sam nabiłem, nie oszukiwałem!

Z 64 punktami dostęp do wszystkich map jest odblokowany, a z podniesionymi statystykami mogę w końcu wskoczyć na samą górę 1 planszy i się przekonać, czy kaseta tam faktycznie jest. Ehh... Oczywiście, że jej tam nie ma, bo w zapisie gry jest już oznaczona jako zebrana. No, ale jako że wiemy jak to poprawić, jedna szybka edycja i...

Czyli jednak tam była!
Czyli jednak tam była!
Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.