Postautor: ffgriever » 13 lip 2009, o 23:03
Hmmm... A ja trochę jeszcze pomęczę w kwestii FFX. Z czystej ciekawości (ciekawość to jedno, ale że leniwy jestem, nie chce mi się samemu poszperać a ty pewnie to info masz, skoro się zabierałeś do tej gry choćby w najmniejszym stopniu).
Jak wygląda sprawa tablicy plików w FFX? Też jest tak zakręcona jak w FFXII?
W FFXII jest podzielona na 0x24 typy plików i dla każdego z nich jest osobna tablica... ale to nic. Tablice są zmieszane razem i skompilowane w jedną całość. Ale to też jeszcze nic. Czasami wartość dotycząca jednego pliku jest rozdzielona tak, że pierwsze 8 bitów leży kilka kB dalej niż następne, itd. ;) (choć najczęściej któreś z dwóch bajtów leżą obok siebie, dla elementu zero zawsze są w ciągu). Do tego na końcu dodaje do wyniku jakąś z sufitu wziętą wartość (1f4 - w sumie to nie całkiem z sufitu, bo to początkowy sektor tego, co nazwać można "mungem"). Sam kod wyszukujący nie jest do tego cały czas w pamięci, ale jest kopiowany tylko w razie potrzeby Przyznam się szczerze, że jeśli nie udałoby mi się znaleźć tego algorytmu w pliku wykonywalnym ff12 i prześledzić go na debugerze, to raczej na podstawie samego pliku z tablicami ciężko byłoby znaleźć właściwy algorytm wyszukiwania położenia pliku (co nie znaczy, że nie można by tego obejść, bo pliki mają bardzo specyficzne nagłówki ;) ). To nie zmienia jednak faktu, że na podstawie typu (np. tylko lokacje, jeden z kilku typów modeli i animacji, itd.) i numeru pliku (w obrębie typu) mogę odnaleźć jego położenie na dysku dvd (startowy sektor) - rozmiar przed kompresją, po kompresji i sposób kompresji (są trzy, null, odmiana lzss i rle) jest pobierany w podobny sposób, funkcje różnią się tylko odrobinę (choć akurat wielkość zdekompresowanego pliku jest zawarta także w nagłówku i sam dekompresor w grze tylko to bierze w sumie pod uwagę - można zmeinić rozmiar tam a nie zmienić w tablicy a wszystko nadal będzie działać dla skompresowanych plików... dla nieskompresowanych zrobi się masakra lub zwieszka).
No i tutaj następne pytanie. Miałeś w FFX jakąś tablicę nazw? W FFXII mogę z grubsza zgadnąć nazwę pliku dopiero po jego wypakowaniu (niektóre pliki zawierają po dekompresji albo swoją nazwę, albo nazwę pliku źródłowego, z którego zostały skompilowane.