Specyfikacja techniczna gier z serii Final Fantasy

Wszelkie kwestie techniczne.
Regulamin forum
1. W miarę możliwości prosimy o załączanie plików przez nasze forum, nie na zewnętrznych serwerach. Pliki nie znikną wtedy po upływie pewnego czasu. 2. Jeśli chcecie uzyskać pomoc przy rozpracowaniu plików (np. z tekstem, czcionką) załączajcie je do postów - nie każdy przecież posiada tłumaczoną przez Was grę.
ffgriever
Posty: 488
Rejestracja: 17 paź 2008, o 15:29

Jaką grę chciałbyś spolszczyć?

Postautor: ffgriever » 29 paź 2008, o 14:42

Jak tylko skończymy obecny projekt, biorę się za FFXII. Plan jest taki:

1. Zmienić FFXII:Int - Zodiac Job System w angielski. Prawie cały tekst z wersji us lub pal/uk będzie pasował, więc problem mały. Resztę trzeba dotłumaczyć z japońskiego (trochę się tego pozmieniało, głównie w czarach, przedmiotach, itp.). Test już za mną, więc problemu nie będzie na 100%. Ta wersja zostanie oczywiście wydana ;) .

2. Przetłumaczyć FFXII:Int ZJS na język polski. Nie wiem jeszcze, czy bezpośrednio z japońskiego, czy z angielskiego - to zależy od tego, jaką drużynę uda się zebrać. Sam nie czuję się na siłach, aby tak potężną grę z japońskiego tłumaczyć (sens zwykle rozumiem, ale to niewystarczające... a ślęczenie non stop ze słownikiem to już lekka przesada - szczególnie przy natłoku kanji ;) ).

Podstawowe narzędzia mam już napisane (dekompresja, ponowna kompresja, wstawianie do obrazu i przebudowywanie obrazu (część plików będzie nieco większa, inne będą mniejsze, czasami zdarzy się, że mniejszy plik po kompresji jest większy od oryginalnego skompresowanego... innej rady nie ma, musi być rebuild). Mam też już prostą aplikację do edycji tekstu. Z rebuildera zostanie stworzony custom patcher (jedyna rada na przebudowany obraz płyty, inaczej patch ważyłby zbyt wiele, bo zawierałby praktycznie całą płytę ;) )...

No, ale to dopiero za kilka miesięcy... co najwyżej podłubię trochę jak będą przestoje w bieżącym projekcie.

To w sumie tyle... można to nazwać "rezerwacją projektu".

ffgriever
Posty: 488
Rejestracja: 17 paź 2008, o 15:29

Re: Jaką grę chciałbyś spolszczyć?

Postautor: ffgriever » 30 paź 2008, o 13:03

Czy ja wiem. Chyba nie ma różnicy, czy pracuje się z nowymi, czy ze starymi platformami. Jedyny problem, to kwestia czasu. W nowszych zwykle więcej grafiki, więcej tekstu. Najwięcej zawsze odczuje programista. Na nesie całość mieściła się w kilkudziesięciu, góra kilkuset kB. Na dobrą sprawę, nawet gdyby chcieć przepisać całą grę na nowo, dwa miesiące dla solidnego programisty to aż nadto ;). W grach na nowsze konsole jest więcej kodu, więc i znaleźć odpowiednią część jest trudniej. Cała reszta jest raczej niezależna od platformy. Dużo oczywiście zależy od samego developera i tego, jak bardzo chciał utrudnić nam życie.

Dla przykładu. W FF12 nie znalazłem tablicy z nazwami (być może nie ma), ale bez problemu mogę dotrzeć do wszystkich plików. Te interesujące mnie, po wypakowaniu mają specyficzne nagłówki, więc można je odróżnić od całej reszty. Wystarczy więc dekompresować pierwszych kilkadziesiąt bajtów i sprawdzać, potem tworzona jest lista, która w dalszej pracy jest wykorzystywana. Grafika jest w większości w timach (tim2 dokładniej). Większość z nich jest absolutnie "standardowa", choć niektóre zawierają pewne "usprawnienia" niespotykane przeze mnie do tej pory w tym formacie (np. tim2 z czcionką jest 4bit, ale nie zawiera w ogóle clut, do tego w nagłówku ma położenie wszystkich liter opisane przed samą bitmapą, do tego składa się z dwóch plików różnych rozmiarów, które po połączeniu tworzą dopiero czcionkę). Tekst jest ładnie umieszczony dużymi partiami. Wszystkie "levele" mają specyficzny nagłówek, różny od tych, gdzie jest tekst dla np. menu. Algorytm kompresji zastosowali bardzo mało wydajny w kwestii stopnia kompresji, ale za to dekompresja jest natychmiastowa (dekompresor zapisany w c składa się z 12 linii aktywnego kodu, kompresor z około 70 - taka wariacja na temat lzss).

Problemem będzie natomiast ogrom tekstu w tej grze ;) .

PS. Jeden z fontów używanych w grze... niezły galimatias!
ObrazekObrazek

Awatar użytkownika
Robin
Posty: 298
Rejestracja: 19 maja 2008, o 10:04
Grupa: CosmoFF
Kontakt:

Re: Jaką grę chciałbyś spolszczyć?

Postautor: Robin » 30 paź 2008, o 14:11

Nieźle z tą dwunastką, nieźle ;) W FFach nazwy są zazwyczaj w plikach kernel, więc jeśli masz dostęp do nazw plików, to szukaj :)

Square zawsze kombinowało, jak tu uprzykrzyć życie ;) Właśnie kończę edytować plik kernel.bin z FF8, ale to, co tam się dzieje, to przechodzi ludzkie pojęcie - rozgryzałem ten plik 2 miesiące. :P
Aby dostać się do tekstu, potrzeba przeskoczyć przez 4 sekcje: pierwsza pokazuje, gdzie jest sekcja pointerowa dla danego kawałka tekstu (np. same przedmioty + opisy do nich), druga sekcja pokazuje, gdzie jest tekst. Trzecia, to właśnie sekcja z pointerami, która z kolei dopiero daje namiary na adres, gdzie się zaczynają właściwe pointery (czyli 4 sekcja) do sekcji tekstowej. Mało tego, nie ma tak lekko ;) Pointery do tekstów owszem, są, ale nie ma tak, że wszystko ładnie poukładane, jeden pointer po drugim. Przykładowy układ:
Pierwszy pointer, później 14 bajtów jakichś dziwactw, drugi pointer, 58 bajtów dziwactw, trzeci i czwarty pointer, 18 bajtów przerwy... itd. :P Dla każdego kawałka tekstu inny rozkład pointerów, rzadko kiedy jest to taki sam odstęp "śmieci" pomiędzy pointerami, masakra. :P Do tego dochodzi fakt, że nazwy przedmiotów nie są w DTE, a opisy do nich już tak; ponadto część tekstu to zmienne, które są po prostu tekstami w innym pliku ;) Także przygotuj się na ciężką przeprawę z tablicą z nazwami, jak już ją znajdziesz. ;)
Co do fontów - standard w FF. :P
www.balamb.pl
Smrtka je tradiční personifikace smrti, zpodobněná jako kostlivec s kosou, často bývá zobrazována v černém hábitu.

ffgriever
Posty: 488
Rejestracja: 17 paź 2008, o 15:29

Re: Jaką grę chciałbyś spolszczyć?

Postautor: ffgriever » 30 paź 2008, o 19:42

W dwunastce pliku kernel nie ma. Na dobrą sprawę, to nie ma plików w ogóle ;) . Dane są bezpośrednio w odpowiednich sektorach poumieszczane. Dostęp też poprzez tablicę bezpośrednio po sektorach. Na płytce "normalne" pliki to tylko moduły dla IOP i plik wykonywalny. Aby uzyskać dostęp do pliku trzeba przeskoczyć trzy kolejne tablice ze wskaźnikami.

Jeśli chodzi o same pliki z "levelem". Są to pliki EBP2. We wszystkich z nich zawarta jest data, folder i nazwa źródła, z którego zostały skompilowane. Np. "07/14 14:28", "t-hirose" (ten akurat od takaaki hirose ;) ) i "naf_a01.src" (ten akurat z pierwszego "levelu", czyli film z prologu - ślub i wojna, wraz z tekstem do niego oraz tekst do tutorialu). Więc w przypadku tych plików nazwę można bez problemu ustawić na "naf_a01.bin". Wewnątrz też są dziwne odstępy między pointerami, ale akurat jest o tyle fajnie, że w tych odstępach zawsze są zera ;), więc wystarczy skakać co u32 aż będzie różny od zera... i tak aż do znacznika końcowego. Wskazują one na kolejne "podpliki". Każdy z tych plików ma też swoją, oddzielną strukturę. W pliku z teksturami jest to ilość bitmap i pointery, w części z actionami są kolejne komendy, w części z tekstem są pointery do kolejnych tekstów. Niestety takie nazwy w plikach są tylko dla kilku typów. Większość nie ma nic, co by pozwalało nadać im jakąkolwiek nazwę, poza numerkiem. Teksty dla menu, opcji, nazwy lokacji, nazwy przedmiotów i opisy, bestiariusz i opisy są już w innych plikach. Strukturę mają podobną, tylko nieco mniej skomplikowaną (wszystko na miejscu, bez udziwnień). Na szczęście imiona, nazwy miejsc i tym podobne rzeczy są bezpośrednio w tekście, co nieco ułatwi edycję (szczególnie odmianę w języku polskim ;) ).

W FFX ponoć nikt do tej pory nie znalazł tablicy z nazwami (ja akurat nie grzebałem zbytnio, kiedyś tylko stwierdziłem, że format tablicy z pointerami do plików jest prostszy niż ten w FFXII), obawiam się, że w FFXII może być to samo. Zrobiłem wykaz wszystkich "plików", które po kolei w trakcie startu gra odczytuje. Są to kolejne tablice z pointerami, później stan gry (nie save, chodzi mi o domyślne wartości wszystkich flag, zmieniając je można zmusić grę do natychmiastowego przejścia po starcie w odpowiednie miejsce... nie bawiłem się tym wiele, wiem tylko, jak zmienić plik ze stanem, żeby po starcie od razu wyświetlał animację końcową), dalej font, trochę tekstur, definicję pierwszej "sceny" (czyli głównego menu - to już wynika bezpośrednio z wczytanego wcześniej stanu). W żadnym z tych plików nie ma nazw. Ale, nie jest to jakiś wielki problem, można się bez nich obejść.

Mam nadzieję, że gdzieś w marcu uda się do tego siąść już na poważnie. Trochę z tematu robi się wywód o hackowaniu final fantasy ;) . Forum jednak póki co świeci pustkami, więc chyba nikt się nie obrazi.

Awatar użytkownika
Robin
Posty: 298
Rejestracja: 19 maja 2008, o 10:04
Grupa: CosmoFF
Kontakt:

Specyfikacja techniczna gier z serii Final Fantasy

Postautor: Robin » 31 paź 2008, o 07:57

Wewnątrz też są dziwne odstępy między pointerami, ale akurat jest o tyle fajnie, że w tych odstępach zawsze są zera ;), więc wystarczy skakać co u32 aż będzie różny od zera... i tak aż do znacznika końcowego.
O, to dobrze, że chociaż w FFXII pustkę wypełnili zerami :P W FF8 plik kernel wygląda m.in. tak:
ObrazekObrazek

I tutaj sekcja pointerowa zaczyna się teoretycznie od adresu 3930, a na tej stronie jest w sumie 12 pointerów XD Najgorsze są te śmieci, które "symulują" pointery, a naprawdę nimi nie są. Kilka razy mi się nawet zdarzyło, że śmieć z dwoma pointerami był takiej samej wartości (!), co pointer prawdziwy. Także szukać trzeba :P Najgorsze jest to, że we wszystkich plikach z FF8, typów pointerów (że liczy się adres od tego miejsca albo od tamtego, albo jeszcze inaczej) jest 6 i niektóre z nich się niemal niczym nie różnią, ale 2 z nich muszą mieć wartość początkową i końcową, bo teksty nie są oddzielone zerami :P W innych przypadkach musi być określona ilość zer (nie raz) pomiędzy tekstami, inaczej program się wywala ;) Jak już skończę całe FF8, to to wszystko będę musiał opisać i utworzyć jakiś podręcznik techniczny do FF8, może komuś się przyda.
www.balamb.pl
Smrtka je tradiční personifikace smrti, zpodobněná jako kostlivec s kosou, často bývá zobrazována v černém hábitu.

Awatar użytkownika
Berion
Posty: 598
Rejestracja: 3 cze 2008, o 08:34
Grupa: żadna, freelancer :P
Kontakt:

Re: Specyfikacja techniczna gier z serii Final Fantasy

Postautor: Berion » 31 paź 2008, o 12:42

Śmieci to to nie są, albo i są, ale wyliczone w jakiś konkretny sposób. W tej materii nie ma przypadków. ;)
~ Primum non nocere ~

Awatar użytkownika
Robin
Posty: 298
Rejestracja: 19 maja 2008, o 10:04
Grupa: CosmoFF
Kontakt:

Re: Specyfikacja techniczna gier z serii Final Fantasy

Postautor: Robin » 6 lis 2008, o 11:53

To nie są śmieci, ale z punktu widzenia porządku estetycznego oraz z punktu widzenia tłumacza - są. :P Sprawdzałem - przenosząc część tych niewiadomek na koniec pliku i nadając odpowiednie pointery - nie ma problemu, plik działa. Czemu nie mogli tego uporządkować, tylko poszatkowali? Ano właśnie, bo to Square :P Inna sprawa, że po zmianie niektórych śmieci na inne, gra działa, wszystko jest ok... ;)

Jeszcze jedna sprawa - z uwagi zapewne na ograniczenia sprzętowe przy tworzeniu gry, Square wrzuca czasem maksymalne rozmiary dla różnych plików. I tak, kernel.bin może mieć maksymalnie 40400 bajtów po rozpakowaniu z LZSS. W innym wypadku, gra sczytuje jedynie pierwsze 40400 bajtów :P Jeżeli pointer wskazuje na adres poza tę liczbę, gra pobiera to po prostu z kolejnego wczytanego pliku. I tak, czar Scan w przypadku Snow Liona pokazuje, że potwór ten "Absorbuje Quezacotl" ;) :P A w niektórych przypadkach po prostu gra się wywala :) Inne podobne działania:
"Skradziono [4 Potionthers" <- to "thers" pochodzi od nazwy "Brothers" :P
Na szczęście jest na to sposób - zmiana DTE :) Już nawet wiem, jakiego "dwuznaku" w polskich opisach używam najczęściej - chodzi o "a " (a ze spacją). Pozwoli to zaoszczędzić 400 bajtów miejsca ;) Gdyby popracować nad innymi DTE, byłoby tego jeszcze więcej.
Nawiasem mówiąc, zrobiłem mini programik, który sprawdza w danym tekście, jakie "dwuznaki" pojawiają się najczęściej. Jak doprowadzę go do stanu "ładnego" (żeby się nie wstydzić za swój zmysł nie-estetyki), wrzucę go tutaj :)
www.balamb.pl
Smrtka je tradiční personifikace smrti, zpodobněná jako kostlivec s kosou, často bývá zobrazována v černém hábitu.

Awatar użytkownika
bemberg
Reptilianin
Posty: 1184
Rejestracja: 31 maja 2008, o 12:03
Grupa: wsparcia
Kontakt:

Re: Specyfikacja techniczna gier z serii Final Fantasy

Postautor: bemberg » 6 lis 2008, o 12:05

Świetny pomysł, dziwne że do tej pory nie powstał taki program. Pamiętam, że przy którymś "fajnalu" tłumacz wziął sobie do DTE "cz" "rz" "ch" itd.
http://www.wykop.pl/link/2516381/playlo ... omentarzy/
Tłumaczymy w rytmie serca? Prawda o Playloc, BDIP i Tłumaczymy w rytmie serca.

Awatar użytkownika
Robin
Posty: 298
Rejestracja: 19 maja 2008, o 10:04
Grupa: CosmoFF
Kontakt:

Re: Specyfikacja techniczna gier z serii Final Fantasy

Postautor: Robin » 6 lis 2008, o 12:14

No tak, tylko akurat w FF8 DTE jest używane tylko w opisach do przedmiotów, magii, umiejętności itp., ale tylko do opisów ;) Czyli np. "Potion" nie może mieć DTE, a "Przywraca 200 HP" już może, a wręcz musi :)

W tym samym programie zrobiłem funkcję, która liczy pointery od początku sekcji tekstu (akurat w tym pliku takie pointery są najczęstsze). Dopracuję jeszcze to, by móc liczyć różne typy pointerów (od początku pliku, sekcji, od konkretnego miejsca, po prostu poprzez dodawanie jakiejś wartości, itp. :P) Wtedy wystarczy odpowiednio spreparować tablicę znaków (by DTE były wyświetlane jako jeden znak) i w tablicy znak końca (zazwyczaj 00h) ustawić na wartość 0 (oczywiście wtedy należy cyfrę "0" w tablicy zamienić na cokolwiek innego, by się nie mieszało) i voila - wyskakuje lista pointerów, które wystarczy wprowadzić w odpowiednie miejsce (trza jeszcze wiedzieć gdzie) :)
www.balamb.pl
Smrtka je tradiční personifikace smrti, zpodobněná jako kostlivec s kosou, často bývá zobrazována v černém hábitu.

Awatar użytkownika
szczuru
Posty: 155
Rejestracja: 14 sie 2008, o 02:11
Grupa: † PSX-PL †
Kontakt:

Re: Specyfikacja techniczna gier z serii Final Fantasy

Postautor: szczuru » 19 lut 2009, o 21:21

A jak wygląda spawa z FFX? @ffgriever, skoro tak hmm "dogłebnie" obadałeś technikalia związane z Final Fantasy to czy masz może jakiegoś tool'a do wypakowania/rebuildu plików (oczywiście tych poza TOC'em ;] ) z FFX?
by Szczuru


Wróć do „Technikalia”



Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości