Do tego wystarczyła zmiana w jednej linijce kodu.
A kto by się domyślił!? Po 24 latach od wydania gry haker o pseudonimie zoinknoise znalazł błąd w Super Mario 64! Powodem niecodziennej sytuacji był dym, który wlótł się za głównym bohaterem gry. Okazuje się, że był źle wyświetlany. Sposób „załatania” gry był bardzo prosty – wystarczyło zmienić jedynie parę liter w jednej linijce kodu.
Ten fakt mógł wyjść na światło dzienne jedynie dzięki grzebaniu w kodzie źródłowym produkcji, który od 25 sierpnia zeszłego roku jest umieszczony na platformie GitHub. Co ciekawe, konto również zawiera zdekompilowane pliki innych gier, takich jak GoldenEye 007, czy dwóch części The Legend of Zelda.
Wracając jednak do tematu – wspomniany „błąd” występuje w 47 linii pliku /actors/burn_smoke/model.inc.c. Jego naprawa polega na zamianie tekstu z G_IM_FMT_RGBA na G_IM_FMT_IA. Mówiąc krótko, cały „myk” polega na zmianie referencji tak, aby wskazywała na prawidłowy format tekstur.
RGBA to model kolorów dobieranych z palety RGB, z uwzględnieniem Alpha, który mówi jak bardzo nieprzezroczysty jest piksel oraz pozwala na dalsze przetwarzanie obrazu z użyciem komponowania Alpha. Nadaje to teksturom transparentności. Natomiast IA zawiera jedynie informację o intensywności (I) oraz poziomu transparencji Alpha (A). Na temat obu sposobów dobierania kolorów w N64 możecie poczytać w bardzo dobrym artykule umieszczonym na łamach N64Squid.
O swoim dziele wypowiedział się autor w opisie łatki na stronie Romhacking:
Od teraz już wiadomo, że gra wyświetla dym w złym formacie, czego rezultatem jest pokaz brzydkich pikseli. Jako że w większości gier z tamtego okresu ten efekt był pokazywany w taki sposób, błąd był praktycznie niewykrywalny przez ponad dwie dekady. Ta łatka ma za zadanie wyświetlać poprawny, transparentny dym, jednak niczego nowego nie dodaje. Ta tekstura była w plikach gry przez cały czas.
Na poniższych zrzutach możecie zobaczyć jak gra wygląda przed (z lewej) i po zmianie w jednej linijce kodu:
Ciekawe, czy znalezisko zoinknoise wykorzysta Nintendo podczas remasterowania Super Mario 64 na jego 35 rocznicę?
Źródło: Nintendo Life.


Dodaj komentarz