Magiczne kolory

Przez ostatnie kilka miesięcy walczę ostro z grą Gloom Deluxe. Większość czasu poszło mi na rozszyfrowanie jak podmieniać pliki multimedialne w grze na własne. Na samym końcu zabrałem się za podmianę obrazków, które pojawiają się przed danym poziomem. Niestety po tygodniu nieustannej walki i spędzeniu ponad 50 godzin nad tym zagadnieniem dalej jest w punkcie wyjścia.

Zacznę jednak od początku. W grze Gloom Deluxe występuje 6 obrazków. 4 z nich pojawiają się przed poziomami: "combat", "gothic", "hell", "spacehulk". Następne dwa to obrazek tytułowy "title" oraz końcowy "theend". Każdy obrazek ma zapisaną paletę kolorów w osobnym pliku o tej samej nazwie co obrazek. Poniżej można zobaczyć jak prezentuje się jeden z takich plików (hell.pal) z zapisaną paletą kolorów.

Na pierwszy rzut oka można zauważyć, że w czerwonej ramce są zapisane te same informacje o kolorach co powyżej. Kolejne co można zauważyć to to, że każdy kolor jest opisany 8 cyframi zamiast 6 cyframi. Ostatnie 4 cyfry każdego koloru są zapisane za pomocą cyfry "0" lub "8" co daje na powyższym przykładzie tylko 8 kombinacji. Zastanawiam się czy nie ma żadnego konwertera który mógłby przekształcić kolor zapisany 8 cyframi na 6 cyfr.

Na poniższym przykładzie można zobaczyć zapis kolorów w kodzie szesnastkowym (HEX) na zwykłym obrazku IFF. W tym systemie można bardzo łatwo ręcznie podmieniać kolory na inne.

Jako, że nie byłem w stanie rozgryźć plików z rozszerzeniem ".pal" występujących w grze Gloom postanowiłem na programie graficznym narysować obrazek składający się z 32 kolorów układając po kolei wszystkie 32 kolory palety. Stworzyłem na początku obrazek w 32 kolorach bo nie byłem do końca pewny jaką paletę kolorów mają dołączone do gry obrazki.

Następnym krokiem było przetestowanie mojego obrazka z każdym plikiem z rozszerzeniem "pal". Na poniższym obrazku można zobaczyć efekt tego testu.

Jako, że ostatni obrazek "hell.pal" prezentował się najlepiej postanowiłem na PPaincie ustawić i poukładać w kolejności takie same kolory. Następnie prze kolorowałem mój obrazek museum aby używał takiej samej palety kolorów. Niestety podczas gry na obrazku pojawił się dodatkowo żółty odcień, który również widać na powyższym zdjęciu przedstawiającym różne palety kolorów. Jako ciekawostkę dodam, że wszystkie 6 palet mają takie same kolory w pierwszej kolumnie kolorów (czyli co 8 kolor palety).

Po wielu godzinach prób postanowiłem sprawdzić jaki kolor "gryzie" się z jakim kolorem. Stworzyłem obrazek w 32 kolorach ze wszystkimi możliwymi kombinacjami pomiędzy 32 kolorami. Daje to dokładnie 1024 kombinacji ułożenia kolorów.

Analizując obrazek "colorsgloom2.gif" doszedłem do wniosku, że pierwsze, drugie, trzecie i czwarte 8 kolorów palety mogą się ze sobą mieszać i podczas gry nie będzie widoczny dodatkowy kolorowy brzydki cień. Tylko kolory nie mogą się mieszać pomiędzy tymi grupami 8 kolorów czyli np. dowolny kolor z 1 grupy kolorów nie może mieszać się z dowolnym kolorem z 2 grupy kolorów itd. Dobre kolory zaznaczyłem różowym kwadratem, dodatkowo kolory rozmieszczone nad różowymi liniami też są dobrze wyświetlane.

Postanowiłem więc stworzyć nową paletę 64 kolorów, które nie będą się ze sobą gryźć. Po kilku dniach walki udało się to dokonać na obrazku testowym. W tym miejscu warto porównać powyższy obrazek w 32 kolorach oraz poniższy w 64 kolorach. Oba obrazki używają innych palet kolorów a pomimo to poprawnie wyświetlają się w grze używając tego samego pliku pal!

Podczas gry obrazek wygląda dokładnie tak samo jak w PPaincie (bez żadnych widocznych cieni czy złych kolorów). Dorysowałem więc na obrazku parę kolorowych liter i ponownie odpaliłem grę, obrazek dalej prezentował się tak samo jak w PPaincie. Szczęśliwy postanowiłem wyczyścić ekran i używając tych samych kolorów wkleiłem te same litery. Po uruchomieniu gry wszystko się zepsuło. Za każdym razem kiedy wyczyszczę ekran czy to ręcznie czy za pomocą ikonki śmietnik kolory po odpaleniu gry ulegają zmianie, dodatkowo widać cień wokół dorysowanych liter. Czy ktoś wie dlaczego tak się dzieje?