Sonic Heroes i Sonic Raiders w dowolnej rozdzielczości na PC |  Autor - MartiusR


 

Pośród gier z Soniciem wydanych na PC-ty dwie z nich mają na chwilę obecną dość specyficzny status – są to Sonic Heroes i Sonic Riders. Obie nie doczekały się do tej pory żadnego wznowienia w ramach dystrybucji elektronicznej, obie są grami trójwymiarowymi i obie działają domyślnie w niskich (jak na dzisiejsze standardy) rozdzielczościach. Dla zmyślnych PC-towych graczy nie jest to na szczęście żaden problem – w poniższym poradniku zaprezentuję pokrótce metody, jakie możemy wykorzystać aby cieszyć się grą w oba tytuły w dowolnej rozdzielczości.

Sonic Heroes
W przypadku Sonic Heroes możemy po prostu skorzystać z modyfikacji dostępnej na stronie Thirteenag (link na końcu artykułu), następnie wypakować zawartość pobranej paczki do katalogu z grą i dokonać odpowiedniej modyfikacji w pliku .ini (wpisując tam odpowiednią rozdzielczość). Modyfikacja ta jest trochę problematyczna ze względu na fakt, iż powoduje drobne przekłamania graficzne w menu głównym, widoczne na poniższym screenie:

Na szczęście, to na dobrą sprawę jedyna poważna niedogodność, bowiem sama gra działa bez zarzutu. Jedyną zauważalną różnicą jest umiejscowienie elementów interfejsu wciąż w „centralnej” części, a nie po bokach:

Zastrzeżenia: Zauważyłem, że po dokonaniu modyfikacji grze zdarza się ładować nieco dłużej niż przed jej dokonaniem (po kliknięciu na „Play Game” będziecie prawdopodobnie musieli trochę poczekać, zanim gra „zaskoczy”, ale potem wszystko chodzi bez większych problemów). Podobno wersje gry z cd-checkiem (zabezpieczeniem polegającym na sprawdzaniu przy każdym uruchomieniu gry, czy oryginalna płyta jest w napędzie) mogą nie współpracować z tą modyfikacją, ale nie miałem okazji zweryfikowania tej tezy. Próby dokonałem na europejskiej wersji gry, dystrybuowanej w Portugalii (ten ostatni fakt raczej nie powinien mieć znaczenia, bo w całej Europie była sprzedawana ta sama wersja gry, tylko napisy na pudełku były w różnych językach.

Sonic Riders

Tutaj jest już nieco trudniej, bo gra nie doczekała się analogicznego „gotowca” i musimy sami dokonać modyfikacji. Do tego celu będziemy potrzebowali dwóch rzeczy: programu HxD oraz konwertera z systemu dziesiętnego do szesnastkowego (oczywiście można przeliczenia dokonać na własną rękę, ale użycie konwertera jest szybsze i wygodniejsze). Zmian dokonamy na pliku SonicRiders.exe, radzę zatem wykonać przedtem jego kopię zapasową. Poniższą modyfikację wykonałem na bazie poradnika ze strony Wide Screen Gaming Forum (link na końcu artykułu), jednakże był on, jak na mój gust, pozbawiony pewnych istotnych detali, bardzo ważnych dla początkującego. W tym poradniku rzecz jasna wszystko opisałem tak, aby każdy mógł bez większych problemów dokonać modyfikacji.

Dokładne wyjaśnienie modyfikacji zajmie trochę miejsca. Jeśli chcecie jak najszybciej jej dokonać bez wgłębiania się w detale, zamieściłem na początku ekstremalnie skróconą wersję(mimo wszystko zalecam przeczytanie wersji bardziej szczegółowej).

UWAGA – nie zniechęcajcie się tym, że sprawa wygląda w teorii dość skomplikowanie, w praktyce jest to dużo prostsze, o czym sam się swego czasu przekonałem.

Poradnik skrócony
1.Otwórz plik SonicRiders.exe za pomocą programu HxD (od Visty wzwyż może być wymagane uruchomienie w trybie administratora, aby móc nadpisać zmiany w pliku).
2.Odnajdź w pliku fragment:
80 02 00 00 E0 01 00 00 10 00 00 00 80 02 00 00 E0 01 00 00 20 00 00 00 20 03 00 00 58 02 00 00 10 00 00 00 20 03 00 00 58 02 00 00 20 00 00 00 00 04 00 00 00 03 00 00 10 00 00 00 00 04 00 00 00 03 (skorzystaj z opcji znajdź, jako typ danych wybierz „wartość hex” )

Część, na której się skupimy, to: 00 04 00 00 00 03 00 00 10 00 00 00 00 04 00 00 00 03

3.Modyfikacji wymaga część, którą pogrubiłem. Zamiast 00 04 należy wstawić pierwszą „cząstkę” rozdzielczości, zamiast 00 03 – drugą.
4.Użyj kalkulatora, aby przeliczyć obie wartości. Załóżmy, że chcemy uzyskać rozdzielczość 1368 na 768. 1368 to 558, natomiast 768 to 300.
5.Dopisz zero przed każdą z „nowych” liczb zero, jeśli jest to wartość trzycyfrowa (czyli 0558 i 0300).
6.Zamień kolejność zapisu tak, aby dwa ostatnie znaki były dwoma pierwszymi, a dwa pierwsze, dwoma ostatnimi., oddziel obie „pary” spacjami Czyli zamiast 0558 będzie to 58 05, a zamiast 0300 – 00 03).
7.Zamiast 00 04 (pogrubionego!) wstaw nową wartość 58 05. Druga z nich już wynosi 00 03, więc nie musimy jej zmieniać. Po modyfikacji zapis powinien wyglądać tak:

00 04 00 00 00 03 00 00 10 00 00 00 58 05 00 00 00 03

8.Zapisz plik i uruchom grę. W launcherze wybierz rozdzielczość 1024x768. I to wszystko! Oczywiście, możesz wstawić dowolną inną rozdzielczość. Jeśli ta metoda nie zadziała, spróbuj podmienić tylko „pierwszą” wartość (czyli 00 04 i 00 03 z zacytowanej linijki), albo dokonać modyfikacji na obu wartościach.

Oto inny przykład rozdzielczości i jej konwersji – 1920 na 1080. 1920 należy wprowadzić jako 80 70, natomiast 1080 jako 38 04. A więc cytowana wcześniej linjka powinna wyglądać tak:

00 04 00 00 00 03 00 00 10 00 00 00 80 70 00 00 38 04

Poradnik szczegółowy

Zacznijmy od krótkiego wyjaśnienie, czym właściwie jest system heksadecymalny. Jeśli znacie ten system liczbowy, możecie spokojnie pominąć ten akapit. Modyfikacja, której dokonamy przy użyciu wspomnianego programu, będzie polegała na zmianie wartości w pliku wykonalnym gry, które to są zapisane w formacie heksadecymalnym, zwanym też szesnastkowym. Podstawowa różnica między nim a używanym powszechnie systemem dziesiętnym jest taka, że zamiast dziesięciu „standardowych” cyfr (0-9), mamy ich łącznie szesnaście (0-9, oraz litery A-F). Oznacza to, że 10 w systemie szesnastkowym jest zapisane jako A, 11 jako B, 12 jako C, 13 jako D, 14 jako E, a 15 jako F. Nieco trudniej robi się dalej, bo już 16 w systemie szesnastkowym zapisujemy jako… 11. Wynika to z faktu, że „cofnęliśmy się” o 5 do tyłu, ze względu na wykorzystanie liter. Efektem czego jeszcze wartość 25 (z dziesiętnego) zapiszemy jako 19 (w szesnastkowym), ale już 26 zapiszemy jako 1A (bo dopiero tutaj, zgodnie z logiką systemu szesnastkowego, potrzebujemy wykorzystać „cyfrę” 11). Brzmi dość skomplikowanie, ale bez obaw – z wykorzystaniem zalinkowanego kalkulatora oraz porad z dalszych akapitów można sobie bez problemu poradzić z tą modyfikacją.

Po otwarciu pliku wyświetli się nam ciąg znaków. Modyfikacja będzie polegała na tym, że jedną z domyślnych rozdzielczości „zamienimy” na nową. Oczywiście w pliku launcher.exe wciąż będzie widniała jako „stara” wartość, ale już w grze będzie zastosowana nowa rozdzielczość. Załóżmy, że zechcemy zmienić najwyższą dostępną rozdzielczość, czyli 1024x768. Potrzebujemy dwóch wartości przeliczonych na system szesnastkowy. W przypadku 1024 będzie to 400. Zaś w przypadku 768 – 300. Teraz nieco trudniejsza sprawa – ta wartość będzie zapisana w nieco inny sposób w pliku gry. Po pierwsze – każda wartość musi być zapisana czterema znakami. Jeśli jest ich mniej – przed tym „najwyższym” musi być wstawione zero. A to oznacza, że będziemy szukać wartości 0400 i 0300. Drugą zmianą w zapisie jest „odwrócenie” kolejności zapisu – dwa ostatnie znaki widnieją jako dwa pierwsze, natomiast dwa pierwsze, jako dwa ostatnie.

A to oznacza, że zamiast 0400 będziemy szukali 0004 , a zamiast 0300 – szukamy 0003. Do tego między każdym dwoma znakami jest spacja, więc zapis wygląda tak: 00 04 i 00 03. Te wartości nie sąsiadują ze sobą bezpośrednio – są bowiem oddzielone dwoma parami zer. Czyli ostatecznie wartość, której szukamy, wygląda tak:

00 04 00 00 00 03

Jest jeszcze jeden detal, na który musimy zwrócić uwagę, aby odnaleźć dokładnie to, czego szukamy. Każda wartość odpowiedzialna za rozdzielczość, występuje w pliku dwukrotnie. Raz, jako wartość „informacyjna” (zazwyczaj wyświetlana na ekranie, o ile jest to informacja dostępna dla użytkownika), drugi raz jako wartość „faktyczna” (czyli przekładająca się na konkretny efekt). W przypadku rozdzielczości obie te wartości znajdują się dość blisko siebie, i są oddzielone zawsze tym samym ciągiem znaków: 00 00 10 00 00 00 . To nie wszystko jednak – chcąc mieć 100% pewności, że wyszukamy odpowiedni fragment, warto dać dostatecznie długie kryterium wyszukiwawcze, aby odnaleźć fragment, w którym są przetrzymywane dane odnośnie wszystkich trzech rozdzielczości. Dlatego też wyszukajcie ten właśnie fragment (korzystając z opcji „znajdź”, jako typ danych wybierając „wartość hex”) :

80 02 00 00 E0 01 00 00 10 00 00 00 80 02 00 00 E0 01 00 00 20 00 00 00 20 03 00 00 58 02 00 00 10 00 00 00 20 03 00 00 58 02 00 00 20 00 00 00 00 04 00 00 00 03 00 00 10 00 00 00 00 04 00 00 00 03

W ostatecznym rozrachunku, szukamy w powyższym ciągu takiego oto fragmentu:

00 04 00 00 00 03 00 00 10 00 00 00 00 04 00 00 00 03

(oczywiście nic nie stoi na przeszkodzie, aby zmodyfikować inną domyślną rozdzielczość, skupmy się jednak na tym fragmencie).

Jak widać, na początku występuje oznaczenie rozdzielczości 1024 na 768, wraz z „odstępem” między wartościami (00 04 00 00 00 03), potem jest cytowana już „przerwa”, a następnie ponownie ta sama wartość odnośnie parametrów rozdzielczości. I właśnie ta druga nas interesuje, a dokładniej – wartości przedzielone czterema zerami, czyli te pogrubione:

00 04 00 00 00 03 00 00 10 00 00 00 00 04 00 00 00 03

Teraz będzie już dużo prościej – musimy już zrobić tylko dwie rzeczy. Pierwsza z nich to odpowiednie przeliczenie i „przerobienie” obu wartości składających się na pożądaną rozdzielczość, druga to podmiana pogrubionych wartości. Kiedy dokonywałem po raz pierwszy tej modyfikacji, robiłem to na potrzeby mojego starego laptopa z rozdzielczością natywną 1368 na 768, co miało taki plus, że musiałem podmienić tylko jedną wartością (00 04), drugą (00 03) mogłem zostawić w spokoju. Na potrzeby poradnika rozpatrzymy dwa warianty – jeden z rozdzielczością 1368 na 768, drugi z wyższą 1920 na 1080.

Zaczynamy – po wrzucenie do kalkulatora obu wartości wyjdzie nam takie oto zestawienie:

1368(dziesiętne) - 558
768(dziesiętne) – 300

Teraz dopisujemy zera, i wychodzi nam:
1368 – 0558
768 – 0300

I ostatnia operacja – zamiana ‘dwójek”:

1368 – 58 05
768 – 00 03

Mamy już wartości, teraz trzeba je wstawić na miejsca „pogrubione”w wierszu z rozdzielczością:
00 04 00 00 00 03 00 00 10 00 00 00 00 04 00 00 00 03

58 05 wstawimy zamiast 00 04, natomiast wartości 00 03 nie musimy wstawiać, bo już tam jest. Po modyfikacji wiersz będzie wyglądał tak:

00 04 00 00 00 03 00 00 10 00 00 00 58 05 00 00 00 03

Teraz wystarczy zapisać plik (oczywiście nadpisując w istniejącym pliku – jeśli w tym punkcie Windows „buntuje się”, informując o braku uprawnień, należy ponownie uruchomić program, ale z uprawnieniami administratora). Potem wystarczy odpalić grę, wybierając w launcherze rozdzielczość 1024x768 i na tym koniec, gra odpali się w nowej rozdziałce.

Teraz szybko cofnijmy się kilka kroków wstecz i spróbujmy wstawić wyższą rozdzielczość, 1920 na 1080 .

Zaczynamy od przeliczenia:

1920-(kalkulator)→780-(dopisujemy zero)→0780-(zamieniamy kolejność)→80 70
1080-(kalkulator)→438-(dopisujemy zero)→0438-(zamieniamy kolejność)→38 04

Teraz wracamy do linijki z rozdzielczością 1024x768:

00 04 00 00 00 03 00 00 10 00 00 00 00 04 00 00 00 03

Podmieniamy kolejno wartość 00 04 na 80 70 i 00 03 na 38 04, oto linijka po modyfikacji:

00 04 00 00 00 03 00 00 10 00 00 00 80 70 00 00 38 04


Dalej powtarzamy już znane kroki – zapisujemy zmiany, nadpisując stare dane w pliku i odpalamy grę, wybierając rozdziałkę 1024x768. Może się zdarzyć, że będziemy potrzebowali jednak nadpisać „pierwsze” wystąpienie wartości zamiast drugiego, albo że modyfikacji trzeba będzie dokonać na obydwu wartościach.

Zastrzeżenia: Podobnie jak przy Sonic Heroes, możecie uświadczyć dłuższego ładowania się gry po dokonaniu modyfikacji. I tak samo jak tam, również w Sonic Riders zmiany może wymagać również „pierwsza” wartość mówiąca o rozdzielczości. Metodę testowałem na europejskim wydaniu gry na DVD, dystrybuowanym w Portugalii (raczej nieróżniącym się niczym od wersji dystrybuowanych w innych krajach Europy), które nie posiada zabezpieczenia „sprawdzającego płytę” przy każdym uruchomieniu gry.

Na zakończenie warto dodać, że niestety modyfikacja do Sonic Riders nie jest tak niezawodna jak ta do Sonic Heroes – może się zdarzyć, że bez żadnego znaczącego powodu na danej konfiguracji komputera modyfikacja najzwyczajniej w świecie nie przyniesie skutku (albo wręcz poskutkuje niemożnością odpalenia gry w danej rozdzielczości). W takim przypadku oczywiście wystarczy skopiować uczynioną uprzednio kopię zapasową, aby wrócić do pierwotnego stanu. Wszelkich modyfikacji dokonujecie oczywiście na własną odpowiedzialność, aczkolwiek nie ma tutaj zbyt dużego ryzyka, więc eksperymentowanie nie powinno przynieść jakichś nieodwracalnych skutków, tak długo jak macie skopiowany oryginalny plik.

Linki:
Modyfikacja do Sonic Heroes: https://thirteenag.github.io/wfp#sonicheroes
Porady odnośnie modyfikacji Sonic Riders: http://www.wsgf.org/dr/sonic-riders
Program HxD (dostępna wersja polska): https://mh-nexus.de/en/programs.php
Konwerter z systemu dziesiętnego do szesnastkowego:
http://www.binaryhexconverter.com/decimal-to-hex-converter