Sporo czasu minęło odkąd aktywnie udzielałem się w temacie modów do Tekkena 3. Szczerze? Sądziłem, że mój wkład w tej materii na dobre zakończył się w okolicach 2012 roku, kiedy strona Customize-Arena dostała swoją ostatnią, dużą aktualizację. Uznałem to za naturalną kolej rzeczy, że mój nick pozostanie zakurzonym eksponatem z czasów dawnej świetności Honmaru. Jak się jednak okazało – również ku mojemu zaskoczeniu – nie dane mi było jeszcze powiedzieć ostatniego słowa w tym temacie. Co więcej, społeczność Honmaru okazała się bardziej odporna na upływ czasu, niż sądziłem.
Nowy początek
Zacznę przewrotnie, od momentu, kiedy w 2024 roku na Steamowym czacie napisał do mnie Action, czy mam Tekkena 7 i czy zagramy dwie rundy. Niedługo potem wylądowałem na serwerze Honmaru Discord, gdzie zebrała się rdzenna część starej ekipy i kilka nowych twarzy. Wszyscy skoncentrowani na nowym projekcie Rena – Arkadyzji.
Początkowo mnie to nie obeszło, ale z czasem dotarło do mnie, że to jest właśnie to, do czego dążyliśmy w czasach starego forum, projektując w kuluarach instalkę T3Online 2.0, opartą o Kaillerę P2P, a która to instalka finalnie nigdy nie ujrzała światła dziennego.
Wraz z emulatorem ePSXe i pakietem pre-konfigurowanych pluginów, chcieliśmy spakować nowy framework do Tekkena 3, który w teorii miał zapewniać więcej możliwości i wygodniejszą obsługę.
Był to jednak czas, w którym ruch na stronie zaczął zwalniać tempo, zarówno ze strony userów, jak i redakcji. Projekt finalnie został porzucony, a część jego docelowej zawartości trafiła na CA jako pojedyncze patche.
Wielkie było moje zdziwienie, kiedy po wejściu na serwer DC Honmaru, okazało się, że stare bijatyki przechodzą obecnie renesans. Emulacja PSX dzięki Stenzekowi nabiera nowej jakości, a członkowie ekipy Honmaru nie próżnują, tylko wcielają w życie niegdyś porzucony pomysł, tym razem mając w zanadrzu nowszą technologię, większe doświadczenie w programowaniu i przede wszystkim pomysł na bardziej przystępną aplikację.
Widząc, jak stary moloch powoli zaczyna na nowo kręcić swoimi trybami, poczułem, że znów chcę być tego częścią.
Nowe mody
Początkowo miał to być jednorazowy ruch, w postaci kilku dodatkowych modów, które leżały zamrożone w archiwach moich starych dysków. Dodatkowo, w planach była konwersja wszystkich patchy PPF dostępnych na Customize-Arena, na wersję NTSC-U Tekkena 3, która stała się nowym standardem w sieciowych rozgrywkach.
Szybko okazało się jednak, że nowy netcode nie pozwala na tak dużą swobodę w korzystaniu z modów.
W skrócie: Żeby gra działała dobrze on-line, każdy gracz musi mieć dokładnie te same mody.
Powstał więc pomysł, aby zrobić jeden, zbiorczy, 'oficjalny’ patch, który będzie obsługiwany ekskluzywnie przez Arkadyzję.



A skoro już wracam i mam zrobić jeden, duży mod do Tekkena, to chciałbym zrobić coś więcej, niż tylko kolorować stare ciuszki dla postaci.
Wiele innych elementów gry do tej pory nie zostało poprawnie rozkodowane, np. areny, portrety, czy modele 3D.
20 lat temu moglibyśmy uznać to za normę, ale wypadałoby w końcu ruszyć temat trochę do przodu…
No i ruszyłem, zaczynając od kwestii, która była najbliżej w moim zasięgu..
Składanie puzzli
Plansze były od dawna możliwe do edycji, ale każdy, kto wtedy wiedział jak robić mody do T3, zdawał sobie sprawę z ogromu pracy, jaką trzeba było włożyć w ten proces, dlatego nikt nie porywał się z motyką na słońce.
Jedynie TanelTM podjął wyzwanie i przekolorował planszę Yoshimitsu na śnieżnobiało, sprytnie wykorzystując funkcję masowego aplikowania procedur w Photoshopie:

Areny w Tekkenie 3 na PSX, to panoramiczne tła 360, pocięte na drobne fragmenty. Edycja pojedynczych tekstur nie różni się niczym od edycji strojów postaci, jednak ilość fragmentów i ich losowa kolejność naturalnie wymusiły konieczność stworzenia nowej metody, która choć trochę to ułatwi.
Początkowo chciałem zrobić skrypt do Photoshopa, który będzie zapisywał wycinki obrazu do formatu *.tim. Pierwsze testy pokazały, że metoda działa, choć dalej była czasochłonna i wrażliwa na niuanse związane ze specyfiką formatu.

Łatwiejsze i bardziej efektywne okazało się wykorzystanie AI do napisania dedykowanego programu. Głównie dlatego, że API Photoshopa nie umożliwiało pełnej automatyzacji zapisu plików *.tim.
Dodatkowo, plugin z formatem *.tim dla Photoshopa działa tylko z 32-bitową wersją programu, co czyni ten zestaw nieco archaicznym w dzisiejszych czasach.
Koniecznością było więc całkowite pozbycie się Photoshopa z łańcucha zależności i zastąpienie go nowym, dedykowanym dla tego rodzaju zastosowań programem.
Wiem, że już samo hasło 'vibe-coding’ powoduje u wielu osób mieszane uczucia, ale spokojnie – poza pisaniem promptów, równolegle uczyłem się podstaw pisania kodu, żeby mieć choćby podstawowe pojęcie o tym co właściwie robię.
„Program do puzzli” miał być w założeniu prostym edytorem graficznym, w którym możliwe było wczytanie zestawu tekstur *.tim, poukładanie ich w spójny obrazek i późniejsze nałożenie na ten obrazek własnej grafiki, która zostanie pocięta z powrotem na odpowiednie tekstury.

Do tego celu konieczne było napisanie najpierw sprawnego parsera formatu *.tim, co było moim pierwszym, programistycznym wyzwaniem w życiu, a co okazało się początkiem dłuższej przygody z nauką Pythona. Po kilku miesiącach posiadałem już bardzo kompleksowe narzędzie, które niesamowicie ułatwia proces tworzenia modów, nie tylko dla plansz z Tekkena, ale również tekstur postaci, czy nawet edycji grafik z innych gier na PSX.
W układaniu puzzli bardzo pomógł mi Ren, dodając do programu funkcję kojarzenia tekstur o podobnych krawędziach. Dzięki temu mogłem skrócić czas potrzebny na ułożenie jednej planszy z 5 dni do maksymalnie dwóch godzin.

Na tym etapie, ostatnim (nomen omen) elementem układanki było skuteczne wykorzystanie potencjału nowej metody. Tutaj z pomocą przyszedł Eku, który w ComfyUI, nie zważając na rachunki za prąd, wygenerował około 200 różnych krajobrazów w oparciu o oryginalne plansze. Testowo wykorzystałem kilka z nich, a reszta czeka na lepsze czasy ;)



Program nie jest jeszcze dostępny publicznie, ale planuję udostępnić go za jakiś czas, jako projekt open source. Wtedy też opiszę bardziej szczegółowo jego działanie.
UV mapy
Projektem, który nie umknął mojej uwadze, był T3 Model Viewer od Leo2236. Leo stworzył sporo parserów i narzędzi moderskich dla popularnych gier na psx, ale Tekken 3 go pokonał, jak z resztą każdego z nas do tej pory.
Mimo wszystko, w oparciu o dotychczasową pracę Leo, byłem w stanie wykorzystać działającą część jego parsera do zlokalizowania koordynatów UV, służących do mapowania tekstur na geometrii 3D postaci.

Robiłem kilka podejść do naprawienia reszty programu tak, aby poprawnie wyświetlał również modele 3D, ale bez większych sukcesów. Mimo wszystko, Leo odwalił kawał świetnej roboty i zainspirował mnie do dalszej pracy.
Arcade
Jedną z rzeczy, która spędzała mi sen z powiek przez kilkanaście lat, było pytanie:
Czy Tekkenowe gry na Namco System 12 też oferują podobne możliwości w kwestii edycji tekstur?
Wszakże są to, tak naprawdę – pod względem architektury – wciąż gry na PSX’a..
W 2015 roku napisałem zapytanie na forum romhacking.net, odnośnie tego, czy komuś udało się rozgryźć strukturę plików, w jakiej zapisany jest ROM do gry Tekken Tag Tournament, niestety bez żadnej odpowiedzi. 10 lat później sam postanowiłem poszukać jakiegoś rozwiązania. Pomocnym narzędziem okazał się program ImageHEAT (autorstwa ikskoksa), który interpretuje surowe dane binarne jako obrazy w przeróżnych formatach. W jednym z plików, które przeglądałem tą metodą, znalazłem zarys loga gry, a później dotarłem również do grafik, które przypominały tekstury twarzy jednej z postaci.


Był to dla mnie dowód, że te dane leżą na wyciągnięcie ręki, ale obrazy miały dziwną rozdzielczość i nie dało się dokładnie dopasować kolorów. Moment eureki nastąpił, kiedy przeskanowałem inny plik i okazał się bliźniaczo podobny do poprzedniego. Te same obrazy, w tych samych miejscach, z takimi samymi problemami. Odważnym założeniem było to, że te dane są po prostu podzielone pomiędzy dwa banki pamięci i są odczytywane z tych dwóch banków jednocześnie, po jednym bajcie (pixelu) na zmianę.
Podjąłem więc próbę złączenia tych dwóch plików w jeden, za pomocą prostego skryptu i.. sukces!

TimViewer po przeskanowaniu tak posklejanego pliku, wykrył poprawnie mnóstwo tekstur, min. dla portretów postaci, elementów interfejsu, i oczywiście samych strojów. Piękny to był widok. Oczywiście są to standardowe pliki *.tim, więc proces edycji tych plików nie różni się niczym od edycji tekstur z PSX. Po edycji wystarczy je wrzucić do scalonej binarki, a potem rozdzielić ją z powrotem na dwa osobne banki pamięci i podmienić w plikach ROMu. Takim oto sposobem stworzyłem pierwszy (na świecie?) graficzny mod do TTT1 na System 12.

Jednocześnie gdzieś z tyłu głowy krzątała mi się myśl, że skoro to było tak proste, to dlaczego nikt wcześniej na to nie wpadł?
Tekken 3 Decomp
Wszystko to, co opisałem do tej pory, okazało się być tak naprawdę dopiero wierzchołkiem góry lodowej.
W czasie, kiedy beztrosko pracowałem sobie nad programem do puzzli i robiłem testowe mody do TTT1, rzuciło mi się w oczy wideo, które Yogi wstawił na YouTube:
Nie wiedziałem w zasadzie na co patrzę, ale okazało się, że jest to działająca część gry, już po ponownej kompilacji kodu. Uznałem, że warto obserwować postęp tego projektu. Niedługo potem Yogi sam napisał do mnie, czy chciałbym mu pomóc w całym tym procesie. Przy okazji moim największym zaskoczeniem był fakt, że Yogi to też Polak! Wyszedłem więc z propozycją do Dumiana, aby stworzyć na naszym Discordzie dział, w którym najbardziej 'techniczna’ część ekipy będzie mogła dorzucić przysłowiową cegiełkę do postępów nad tym przedsięwzięciem.
Powiedzieć, że Yogi podjął się zadania ambitnego, to jak nic nie powiedzieć. Mówimy bowiem o projekcie, który zakłada pełną dekompilację konsolowego Tekkena 3. Żeby tego było mało, dekompilacja ma służyć nie tylko do przetłumaczenia kodu na współczesne komputery, czy inny, mocniejszy od pierwszej konsoli Sony sprzęt, ale również do ponownej kompilacji kodu, by z sukcesem odpalić grę na pierwotnie docelowym szaraku.
Od razu nasuwa się uzasadnione pytanie – po co? Przecież jest już Tekken 3, który działa na PSX, więc jaki jest sens w tym żeby rozbierać go na części i składać z powrotem?
Cóż, powodów jest kilka. T3 – w konsolowej wersji – jest zaiste imponującą produkcją, która zdefiniowała termin „wyciskania ostatnich soków” z mocy obliczeniowej konsoli. W kontekście gier na ten sprzęt, zawsze jest jedną z przywoływanych pozycji, kiedy mowa o osiąganiu maksymalnych limitów wydajnościowych. Jednocześnie, nie mniej powszechnie wiadomo, że konsolowa wersja gry jest niemałym kompromisem, w stosunku do swojego Arcade’owego prekursora..
No właśnie, czy aby na pewno Tekken 3, którego wszyscy doskonale znamy, jest absolutnym, optymalizacyjnym majstersztykiem? Z dzisiejszej perspektywy wydaje się, że niekoniecznie.
Tekken 3 został zoptymalizowany w dość brutalny sposób. Zasoby obliczeniowe domowej konsoli były mocno ograniczone, a – jak można się domyślić – czasu na wymyślenie skutecznego obejścia tych ograniczeń było niewiele. Z pragmatycznego punktu widzenia Namco podjęło logiczną decyzję, by maksymalnie uprościć najmniej istotną zawartość gry, czyli geometrię plansz, na którą i tak gracze będą zwracać najmniej uwagi. Priorytetem było stabilne 60fps i w miarę dokładnie odwzorowane modele 3D postaci, które zawsze są w centrum uwagi podczas rozgrywki.
Proces dekompilacji kodu T3 ujawnił, że wciąż istnieje cień szansy na przeniesienie trójwymiarowych aren do konsolowej wersji gry. Oczywiście nie wystarczy po prostu przenieść plików z wersji Arcade i liczyć na sukces. W ogromnym skrócie – zamiast redukować ilość geometrii, można spróbować uprościć same obliczenia.
Nie będę zanudzał szczegółami, bo to temat na osobny, dużo mniej przystępny artykuł.
Parser – moje nowe, ulubione słowo
Nie jestem programistą, trzeba to jasno zaznaczyć. Nie sądziłem, że jakkolwiek będę w stanie przyczynić się do postępów nad decompem. Na szczęście mogę pochwalić się, że pisanie parserów weszło mi w krew i zaowocowało stworzeniem programu, który sprawnie odczytuje i wyświetla areny, zarówno z wersji PSX, jak i z wersji Arcade.
W wyciąganiu modeli aren z Arcade’owej wersji pomogła nam sztuczka ze scalaniem plików z ROMu, którą wcześniej zastosowałem do wyciągnięcia tekstur z TTT1.
Po znalezieniu metody na wyciągnięcie aren z gry, pierwszą rzeczą, jaką możemy zobaczyć, jest ich surowa geometria. W większości przypadków już na samej tej podstawie można określić z jaką planszą mamy do czynienia, nawet bez tekstur.

Dodatkowo, znalazłem jeszcze jeden, ponadprogramowy plik, który nie wyglądał znajomo.

Po doczytaniu tekstur okazało się, że jest to plansza, której finalnie nie użyto, ale jej model i tekstury pozostały w zasobach gry. Udało nam się odtworzyć tę planszę.

Prawdopodobnie miała to być arena True Ogra, ale nawet na System 12 zabrakło mocy obliczeniowej (albo czasu, kto wie?) na jednoczesne wyświetlanie areny i geometrii finałowego bossa. Może dlatego nigdy nie ma tła, kiedy True Ogre jest obecny na ekranie?
Na starych materiałach prasowych można znaleźć screenshoty tej planszy.

Takie odkrycia zawsze mocno podnoszą morale. I nie inaczej było tym razem. Trzy lata pracy Yogiego przy decompie i dwa lata mojej pracy przy parserach zaowocowały odkryciem największego easter egga w 30-letniej historii Tekkena 3.
Co dalej?
Mając już mocno zaktualizowaną wiedzę i wypracowane metody, mam zamiar dalej bawić się w to hexadecymalne sudoku.
Założyłem też nowy kanał na YouTube, na którym będę publikował swoje dokonania, nowe mody, testy i być może również tutoriale, dlatego zachęcam do subskrypcji na przyszłość ;)
Kolejne kroki będą stawiane w kierunku modeli 3D postaci, aby w niedalekiej przyszłości było możliwe np. zrobienie klasycznego gi dla Heihachi’ego:

Dobrą nowiną z ostatniej chwili jest też to, że nie kto inny, jak sam Luc_October (autor pierwszych modów do T3) postanowił przyłączyć się do projektu i też nieco poszperać w tekkenowych binarkach. Nie zdradzę jeszcze szczegółów jego pracy, ale mogę zapewnić, że kolejny raz został pionierem w kwestii moddingu T3.
Warto też wspomnieć o tym, że na Discordzie Honmaru powstał jakiś czas temu dedykowany kanał Customize-Arena, na który co jakiś czas wrzucam nowinki i zajawki z tego, co udało się osiągnąć, a społeczność zainteresowana tymi zagadnieniami tworzy również swoje mody i cheaty. Dla chętnych spróbowania własnych sił w teksturowaniu, przygotowałem mały konwerter TIM do PNG, który umieściłem na moim Githubie.
Poza tym programem, na uwagę zasługuje też aktualnie rozwijany projekt usera Hidden01, który tworzy generator kodów do zmiany ciosów.
Wiem, że mody zmieniające sam system rozgrywki nie należą do najbardziej popularnych, ale z pewnością jest to warte odnotowania.
Dobrą wiadomością dla entuzjastów modów będzie też na pewno fakt, że nowa wersja strony Customize-Arena jest w przygotowaniu i chciałbym, aby ta aktualizacja ujrzała światło dzienne jeszcze w tym roku.
Dla tych, którzy chcą zgłębić tajniki teksturowania strojów, tworzenia własnych patchy, lub – po prostu – ciekawych bardziej szczegółowych informacji, odniosę w przyszłości do kolejnych artykułów, pisanych już pod szyldem Customize-Areny w nowej odsłonie.



