Konwersja FF8PL na PSX - postęp prac
: 27 mar 2009, o 01:13
Zacząłem już pracę nad konwersją tłumaczenia na PSX. Większość potrzebnych plików już mam (parę poprawek do wstawienia pozostało), także potrzeba je jedynie wziąć i przenieść na PSX-ową płytkę. A przynajmniej tak by się mogło wydawać na początku. ;)
Otworzyłem CD1 z FF8 i nie widać oczywiście nic. Wiadomo, Squaresoft wręcz słynie z utrudniania dostępu do swoich plików ;) przerobiłem do ccd + sub + img, choć potrzebne mi tak naprawdę tylko img. Otwieram go i widzę w środku pliki - „SLES_020.80”, „SYSTEM” oraz „FF8disc1.img”. Z tego wynika, że olbrzymiej większości plików będę musiał szukać właśnie w tym pliku IMG.
Squaresoftowy format IMG to po prostu zbiór plików władowany do jednego pliku. Niektóre są idealnie takie same jak te z wersji na PC, toteż bardzo łatwo je przekopiować (np. pliki TIM w menu), inne są pomieszane - w sekcji menu znalazły się elementy z innych plików - widocznie w wersji na PC to zmienili.
Gdy plik jest dokładnie taki sam, to wiadomo, szuka się bardzo łatwo. Cała tekstowa część menu, testy SeeD, Tutorial, już z łatwością zostały przerzucone.
Pozostaje teraz problem - znaleźć czcionkę. W wersji na PC występowały 3 pliki graficzne w formacie TEX - dwa były do czcionki w wysokiej rozdzielczości (złożone dawały jedną całość), trzeci to czcionka w niskiej rozdzielczości. W wersji PSX jest tylko czcionka o niskiej rozdzielczości. Muszę ją znaleźć; znalezienie jej będzie się równało pokonaniu pierwszej, jakże ważnej przeszkody.
Problemy ze znalezieniem czcionki wynikają z tego, że:
- może być ona skompresowana LZSS-em;
- może być w innym formacie - TIM, MIM, LZS (tak, to u Squaresoftu również format graficzny... tzw. „Wallpaper Graphic”).
Znalazłem plik, który odpowiada plikowi „sysfnt.tdw” z wersji na PC (a „sysfnt.tex” to nazwa pliku czcionki w niskiej rozdzielczości na PC) - w sensie jest taki sam. Problem w tym, że nie mam pojęcia, czy mi się do czegokolwiek przyda... sprawdziłem ten plik i wygląda trochę, jak niekompletna czcionka w jeszcze niższej, tragicznej rozdzielczości. Zagadka, jak na razie.
Aby poszukać ciekawych dla mnie plików, otwieram plik IMG (squaresoftowy, nie mylić z IMG - obrazem płyty) i szukam początków plików. To akurat łatwo znaleźć - zazwyczaj między plikami jest wielka przerwa w postaci wartości 0x00 i można sobie spokojnie wyciągać takie pliki. Wszystkie będę wykopiowywał, sprawdzał dostępnymi programami, wypakowywał i sprawdzał ponownie. Żmudna robota, ale po tym, konwersja już będzie w domku, tak myślę.
Co ciekawe, pliki walk, a więc i także dialogi w środku walk oraz nazwy potworów i parametry potrzebne do patcha utrudniającego, leżą luzem, niespakowane, nieskompresowane i mógłbym je już podmienić dziś. Dobrze, przynajmniej część pliku IMG odejdzie mi ze sprawdzania :)
Jest jeszcze jeden problem - znalazłem miejsce, gdzie jest plik jądra gry (kernel.bin w wersji PC), jednak odstęp pomiędzy jego początkiem, a początkiem kolejnego pliku to około 39000 bajtów, podczas gdy polska wersja kernel.bin potrzebuje jeszcze tysiączka. W takim razie, potrzebne mi jest znalezienie pointerów do początków każdego z „pliku” w pliku IMG. Offset do początku pliku jądra to 0x5000, czyli 20480 bajtów. Krótko mówiąc, początek 11 sektor od początku pliku IMG. Pointerów w stylu 00 50 nie ma, dodając fizyczny początek pliku IMG na płycie, 0x33A, czyli 3A 53, również nie ma. Może pointery są zapisane w formacie minutowym? 0x533A, to zgodnie z (M * 60 + S) * 75 + F, to M => 4; S => 44, a F => 06. Czyli jest to 04:44:06. Dodając 2 minuty Lead in płytki, to jest 06:44:06 (druga możliwość wskaźnika). Wartość minutowa bez „dodatku” 0x33A to 04:33:05. Jak tego szukać? Od przodu, od tyłu, w hex, dec z tablicą czy może bez tablicy? Ma ktoś jakiś pomysł? Coś mi się zdaje, że to druga ważna przeszkoda w tej konwersji :P
Cóż, chyba czeka mnie kilka dni wybałuszania gałek ocznych w kierunku hexedytora ;P
Otworzyłem CD1 z FF8 i nie widać oczywiście nic. Wiadomo, Squaresoft wręcz słynie z utrudniania dostępu do swoich plików ;) przerobiłem do ccd + sub + img, choć potrzebne mi tak naprawdę tylko img. Otwieram go i widzę w środku pliki - „SLES_020.80”, „SYSTEM” oraz „FF8disc1.img”. Z tego wynika, że olbrzymiej większości plików będę musiał szukać właśnie w tym pliku IMG.
Squaresoftowy format IMG to po prostu zbiór plików władowany do jednego pliku. Niektóre są idealnie takie same jak te z wersji na PC, toteż bardzo łatwo je przekopiować (np. pliki TIM w menu), inne są pomieszane - w sekcji menu znalazły się elementy z innych plików - widocznie w wersji na PC to zmienili.
Gdy plik jest dokładnie taki sam, to wiadomo, szuka się bardzo łatwo. Cała tekstowa część menu, testy SeeD, Tutorial, już z łatwością zostały przerzucone.
Pozostaje teraz problem - znaleźć czcionkę. W wersji na PC występowały 3 pliki graficzne w formacie TEX - dwa były do czcionki w wysokiej rozdzielczości (złożone dawały jedną całość), trzeci to czcionka w niskiej rozdzielczości. W wersji PSX jest tylko czcionka o niskiej rozdzielczości. Muszę ją znaleźć; znalezienie jej będzie się równało pokonaniu pierwszej, jakże ważnej przeszkody.
Problemy ze znalezieniem czcionki wynikają z tego, że:
- może być ona skompresowana LZSS-em;
- może być w innym formacie - TIM, MIM, LZS (tak, to u Squaresoftu również format graficzny... tzw. „Wallpaper Graphic”).
Znalazłem plik, który odpowiada plikowi „sysfnt.tdw” z wersji na PC (a „sysfnt.tex” to nazwa pliku czcionki w niskiej rozdzielczości na PC) - w sensie jest taki sam. Problem w tym, że nie mam pojęcia, czy mi się do czegokolwiek przyda... sprawdziłem ten plik i wygląda trochę, jak niekompletna czcionka w jeszcze niższej, tragicznej rozdzielczości. Zagadka, jak na razie.
Aby poszukać ciekawych dla mnie plików, otwieram plik IMG (squaresoftowy, nie mylić z IMG - obrazem płyty) i szukam początków plików. To akurat łatwo znaleźć - zazwyczaj między plikami jest wielka przerwa w postaci wartości 0x00 i można sobie spokojnie wyciągać takie pliki. Wszystkie będę wykopiowywał, sprawdzał dostępnymi programami, wypakowywał i sprawdzał ponownie. Żmudna robota, ale po tym, konwersja już będzie w domku, tak myślę.
Co ciekawe, pliki walk, a więc i także dialogi w środku walk oraz nazwy potworów i parametry potrzebne do patcha utrudniającego, leżą luzem, niespakowane, nieskompresowane i mógłbym je już podmienić dziś. Dobrze, przynajmniej część pliku IMG odejdzie mi ze sprawdzania :)
Jest jeszcze jeden problem - znalazłem miejsce, gdzie jest plik jądra gry (kernel.bin w wersji PC), jednak odstęp pomiędzy jego początkiem, a początkiem kolejnego pliku to około 39000 bajtów, podczas gdy polska wersja kernel.bin potrzebuje jeszcze tysiączka. W takim razie, potrzebne mi jest znalezienie pointerów do początków każdego z „pliku” w pliku IMG. Offset do początku pliku jądra to 0x5000, czyli 20480 bajtów. Krótko mówiąc, początek 11 sektor od początku pliku IMG. Pointerów w stylu 00 50 nie ma, dodając fizyczny początek pliku IMG na płycie, 0x33A, czyli 3A 53, również nie ma. Może pointery są zapisane w formacie minutowym? 0x533A, to zgodnie z (M * 60 + S) * 75 + F, to M => 4; S => 44, a F => 06. Czyli jest to 04:44:06. Dodając 2 minuty Lead in płytki, to jest 06:44:06 (druga możliwość wskaźnika). Wartość minutowa bez „dodatku” 0x33A to 04:33:05. Jak tego szukać? Od przodu, od tyłu, w hex, dec z tablicą czy może bez tablicy? Ma ktoś jakiś pomysł? Coś mi się zdaje, że to druga ważna przeszkoda w tej konwersji :P
Cóż, chyba czeka mnie kilka dni wybałuszania gałek ocznych w kierunku hexedytora ;P