...czyli o tłumaczeniu i graniu w przetłumaczone przygodówki.

Moderatorzy: Elum, aegnor, jackowsky

twig
Posty: 27
Rejestracja: śr 13 sty 2010, 13:37

Re: Black Dahlia po polsku

Post autor: twig »

Miałem się rozpisywać o tych czcionkach, ale właśnie doszedłem do wniosku, że szczegóły techniczne i tak nikogo nie będą interesowały, więc napiszę w skrócie.

Czcionki fnt w grze nie są standardowe, więc można sobie spokojnie odpuścić standardowe programy do edycji czcionek (chyba że znajdzie się program od Take2...). Zła wiadomość jest taka, że dane graficzne są w tych plikach skompresowane. Plik można podzielić z grubsza na 3 części: nagłówek, informacje na temat znaków (wysokość i szerokość znaku, przesunięcie w poziomi i przesunięcie w pionie oraz prawdopodobnie adres w rozpakowanym strumieniu danych graficznych) oraz skompresowany strumień danych graficznych.

Nagłówek i dane o znakach mam (z grubsza) rozpracowane. Problem stanowi skompresowana grafika. Podejrzewam, że chodzi o kompresję RLE (choć nie wykluczam LZW). Grafika czcionek jest 1-bitowa, więc skompresowane dane są ciągiem bitów. Jeżeli mamy do czynienia z kompresją RLE to w tym ciągu muszą być jakieś "kody sterujące" - czyli ustalone wartości, które mówią np. o powtórkach. Próbowałem modyfikować skompresowany strumień i sprawdzać, jak wpływa to na wyświetlane znaki w grze. Niestety na razie nie ustaliłem niczego praktycznego.

Edycja plików AEX - są to pliki z logiką gry. Aby edytować zawarty w nich tekst bez żadnych ograniczeń, trzeba by rozpracować kod tych skryptów, a to niełatwe zajęcie. Na pocieszenie mogę zaoferować narzędzie podmieniające tekst z ograniczeniem jego długości. Jak wspominał Elum pliki francuskiej wersji językowej powinny być wystarczająco "pojemne", by pomieścić polski tekst. Porównując pliki wersji angielskiej i francuskiej zauważyłem, że czasem pliki francuskie zawierają dodatkowy tekst, którego nie ma w wersji angielskiej - pod tym względem pliki francuskie i niemieckie są bardzo podobne, więc pewnie powstały w tym samym czasie.

Plik GAME.TF ma prostą strukturę. Zawarty w nim tekst można zmieniać bez ograniczeń (przed i po).
Awatar użytkownika
Elum
Posty: 2535
Rejestracja: pt 18 lut 2005, 18:52
Lokalizacja: Schwientochlowitz

Post autor: Elum »

Wiem! Jest jeszcze jeden sposób na problem czcionkowy - dobieranie takich wyrazów, zwrotów itp. w których nie ma polskich znaków :D (oprócz "ó", obecnego w pliku czcionkowym, bo wykorzystywanego chyba zarówno przez Hiszpanów jak i Portugalczyków). Teoretycznie jest to wykonalne. Naturalnie, z drugiej strony, po kilku godzinach takiego pisania pewnie... miaubym doszcz. :P
twig pisze:Plik GAME.TF ma prostą strukturę. Zawarty w nim tekst można zmieniać bez ograniczeń (przed i po).
A czym/jak zmieniałeś? U mnie jest niestety tak, że jeśli podmienię np. "badge" na "odznakę" to przemieszczają/rozjeżdżają się nazwy innych przedmiotów (z odznaką - gra oczywiście układa przedmioty alfabetycznie, ale co stało się z "invitation"? :niesmialy:).
twig
Posty: 27
Rejestracja: śr 13 sty 2010, 13:37

Re: Black Dahlia po polsku

Post autor: twig »

Elum pisze:Wiem! Jest jeszcze jeden sposób na problem czcionkowy - dobieranie takich wyrazów, zwrotów itp. w których nie ma polskich znaków :D
Albo kropkować i kreskować: Zażółć gęślą jaźń ---> Zaz.ól/c' ge,s'la, jaz'n' :lol:
Elum pisze:A czym/jak zmieniałeś?
Napisałem do tego prosty program. W tej chwili jest trochę "durny" - spakuje wszystko, co znajduje się w drugiej kolumnie arkusza.

Niedługo uzdatnię program do plików AEX, dzięki czemu można będzie tłumaczyć tekst w takim lockicie. W tej chwili niby działa, ale nie ma żadnego interfejsu użytkownika :lol:
Awatar użytkownika
Elum
Posty: 2535
Rejestracja: pt 18 lut 2005, 18:52
Lokalizacja: Schwientochlowitz

Post autor: Elum »

twig pisze:Napisałem do tego prosty program. W tej chwili jest trochę "durny" - spakuje wszystko, co znajduje się w drugiej kolumnie arkusza.
Acha, w ten sposób. Myślałem, że może znalazłeś na to jakiś prostszy (jeszcze prostszy :P) patent. Dzięki, przyda się (niestety Francuzi też na "odznakę" mówią "badge" :ble:).
twig pisze:Niedługo uzdatnię program do plików AEX, dzięki czemu można będzie tłumaczyć tekst w takim lockicie. W tej chwili niby działa, ale nie ma żadnego interfejsu użytkownika :lol:
Trochę niepotrzebnie. To jest bardzo drugorzędna sprawa. No chyba, że robisz to dla siebie, bo to Cię odpręża. ;) Jeśli o mnie chodzi - do tej pory struktura tych plików mi nie przeszkadzała, więc tego programu raczej nie wykorzystam.
twig
Posty: 27
Rejestracja: śr 13 sty 2010, 13:37

Re: Black Dahlia po polsku

Post autor: twig »

Serio wolisz edytować te pliki w hexedytorze?
Awatar użytkownika
Elum
Posty: 2535
Rejestracja: pt 18 lut 2005, 18:52
Lokalizacja: Schwientochlowitz

Post autor: Elum »

W jakim hex edytorze? Pliki .AEX tłumaczę w Notepad++ :)
twig
Posty: 27
Rejestracja: śr 13 sty 2010, 13:37

Re: Black Dahlia po polsku

Post autor: twig »

Mimo wszystko :lol:

Ja mam nadzieję, że ty masz gdzieś tekst z polskimi znakami, bo jak się pojawi ta czcionka, to będzie masakrycznie dużo pracy z dodawaniem ogonków i kreseczek - usunąć je można automatycznie nawet w Notepadzie ++, za to dodanie ich to zupełnie inna sprawa :D
Awatar użytkownika
Elum
Posty: 2535
Rejestracja: pt 18 lut 2005, 18:52
Lokalizacja: Schwientochlowitz

Post autor: Elum »

Spokojnie, panuję nad sytuacją. Pamiętam o takich rzeczach.
robbor
Posty: 5
Rejestracja: pn 27 sie 2018, 20:58

Re: Black Dahlia po polsku

Post autor: robbor »

Witam.
Czy potrzebujecie jeszcze pomocy przy edycji czcionki?
Awatar użytkownika
Elum
Posty: 2535
Rejestracja: pt 18 lut 2005, 18:52
Lokalizacja: Schwientochlowitz

Re: Black Dahlia po polsku

Post autor: Elum »

Tak. Od 2016 roku nic się nie zmieniło. W dalszym ciągu nie mam zielonego pojęcia, jak się do pliku czcionki Black Dahlii dobrać.

Pytasz, bo masz pomysł, jak ten problem rozwiązać? :)
robbor
Posty: 5
Rejestracja: pn 27 sie 2018, 20:58

Re: Black Dahlia po polsku

Post autor: robbor »

Tak. Zapytałem bo zacząłem rozpracowywać dekompresję czcionki i wolałem się upewnić czy jesteście jeszcze tym zainteresowani i czy nie porzuciliście tłumaczenia tej gry.

Opiszę krótko co udało mi się ustalić.
Odpaliłem debugger olydbg i znalazłem miejsce w kodzie gry gdzie plik z czcionką jest ładowany i dekompresowany w pamięci.
Jakby kogoś to interesowało to ten fragment:

Kod: Zaznacz cały

Address   Hex dump          Command                                 
0043E836  ³> 8A3D 0C924A00  MOV BH,BYTE PTR DS:[BD_WIN.4A920C]
0043E83C  ³. 80FF 02        CMP BH,2
0043E83F  ³. 74 05          JE SHORT BD_WIN.0043E846
0043E841  ³. 80FF 06        CMP BH,6
0043E844  ³. 75 05          JNE SHORT BD_WIN.0043E84B
0043E846  ³> C64424 0C 01   MOV BYTE PTR SS:[LOCAL.3],1
0043E84B  ³> 8A06           MOV AL,BYTE PTR DS:[ESI]
0043E84D  ³. 8B15 00924A00  MOV EDX,DWORD PTR DS:[BD_WIN.4A9200]
0043E853  ³. 884424 08      MOV BYTE PTR SS:[LOCAL.4],AL
0043E857  ³. 31C0           XOR EAX,EAX
0043E859  ³. 46             INC ESI
0043E85A  ³. 8A4424 08      MOV AL,BYTE PTR SS:[LOCAL.4]
0043E85E  ³. 47             INC EDI
0043E85F  ³. 30ED           XOR CH,CH
0043E861  ³. 8A80 FC904A00  MOV AL,BYTE PTR DS:[EAX+BD_WIN.4A90FC]  
0043E867  ³. 29D5           SUB EBP,EDX
0043E869  ³. 8847 FF        MOV BYTE PTR DS:[EDI-1],AL
0043E86C  ³. 4D             DEC EBP
0043E86D  ³. 0F84 D8000000  JZ BD_WIN.0043E94B
0043E873  ³> 31D2           XOR EDX,EDX
0043E875  ³. 8A16           ³MOV DL,BYTE PTR DS:[ESI]
0043E877  ³. 88E9           ³MOV CL,CH
0043E879  ³. 89D0           ³MOV EAX,EDX
0043E87B  ³. D3F8           ³SAR EAX,CL
0043E87D  ³. 83E0 0F        ³AND EAX,0000000F
0043E880  ³. 80F5 04        ³XOR CH,04
0043E883  ³. 75 01          ³JNZ SHORT BD_WIN.0043E886
0043E885  ³. 46             ³INC ESI
0043E886  ³> 88C4           ³MOV AH,AL
0043E888  ³. 3C 0F          ³CMP AL,0F
0043E88A  ³. 75 0C          ³JNE SHORT BD_WIN.0043E898
0043E88C  ³. 88E9           ³MOV CL,CH
0043E88E  ³. 8B06           ³MOV EAX,DWORD PTR DS:[ESI]
0043E890  ³. D3E8           ³SHR EAX,CL
0043E892  ³. 46             ³INC ESI
0043E893  ³. E9 96000000    ³JMP BD_WIN.0043E92E
0043E898  ³> 3C 0E          ³CMP AL,0E
0043E89A  ³. 75 6E          ³JNE SHORT BD_WIN.0043E90A
0043E89C  ³. 807C24 0C 00   ³CMP BYTE PTR SS:[LOCAL.3],0
0043E8A1  ³. 74 67          ³JE SHORT BD_WIN.0043E90A
0043E8A3  ³. 31C0           ³XOR EAX,EAX
0043E8A5  ³. 8B16           ³MOV EDX,DWORD PTR DS:[ESI]
0043E8A7  ³. 88E8           ³MOV AL,CH
0043E8A9  ³. 88E9           ³MOV CL,CH
0043E8AB  ³. D3EA           ³SHR EDX,CL
0043E8AD  ³. 30F6           ³XOR DH,DH
0043E8AF  ³. 46             ³INC ESI
0043E8B0  ³. 895424 04      ³MOV DWORD PTR SS:[LOCAL.5],EDX
0043E8B4  ³. 66:81FA FF00   ³CMP DX,0FF
0043E8B9  ³. 75 22          ³JNE SHORT BD_WIN.0043E8DD
0043E8BB  ³. 8B16           ³MOV EDX,DWORD PTR DS:[ESI]
0043E8BD  ³. D3EA           ³SHR EDX,CL
0043E8BF  ³. 81E2 FF000000  ³AND EDX,000000FF
0043E8C5  ³. 8B46 01        ³MOV EAX,DWORD PTR DS:[ESI+1]
0043E8C8  ³. 46             ³INC ESI
0043E8C9  ³. C1E2 08        ³SHL EDX,8
0043E8CC  ³. D3E8           ³SHR EAX,CL
0043E8CE  ³. 89D3           ³MOV EBX,EDX
0043E8D0  ³. 30E4           ³XOR AH,AH
0043E8D2  ³. 895424 04      ³MOV DWORD PTR SS:[LOCAL.5],EDX
0043E8D6  ³. 01C3           ³ADD EBX,EAX
0043E8D8  ³. 46             ³INC ESI
0043E8D9  ³. 895C24 04      ³MOV DWORD PTR SS:[LOCAL.5],EBX
0043E8DD  ³> 834424 04 02   ³ADD DWORD PTR SS:[LOCAL.5],2
0043E8E2  ³. 31C0           ³XOR EAX,EAX
0043E8E4  ³. 31D2           ³XOR EDX,EDX
0043E8E6  ³. 66:8B4424 04   ³MOV AX,WORD PTR SS:[LOCAL.5]
0043E8EB  ³. 8A57 FF        ³MOV DL,BYTE PTR DS:[EDI-1]
0043E8EE  ³. 890424         ³MOV DWORD PTR SS:[LOCAL.6],EAX         
0043E8F1  ³. 89C3           ³MOV EBX,EAX
0043E8F3  ³. 89F8           ³MOV EAX,EDI
0043E8F5  ³. E8 46DEFFFF    ³CALL BD_WIN.0043C740                   
0043E8FA  ³. 31C0           ³XOR EAX,EAX
0043E8FC  ³. 8B1C24         ³MOV EBX,DWORD PTR SS:[LOCAL.6]
0043E8FF  ³. 66:8B4424 04   ³MOV AX,WORD PTR SS:[LOCAL.5]
0043E904  ³. 01DF           ³ADD EDI,EBX
0043E906  ³. 29C5           ³SUB EBP,EAX
0043E908  ³. EB 39          ³JMP SHORT BD_WIN.0043E943
0043E90A  ³> 88E0           ³MOV AL,AH
0043E90C  ³. 25 FF000000    ³AND EAX,000000FF
0043E911  ³. 30F6           ³XOR DH,DH
0043E913  ³. 8A90 0D924A00  ³MOV DL,BYTE PTR DS:[EAX+BD_WIN.4A920D] 
0043E919  ³. 30E4           ³XOR AH,AH
0043E91B  ³. 8A4424 08      ³MOV AL,BYTE PTR SS:[LOCAL.4]
0043E91F  ³. 01D0           ³ADD EAX,EDX
0043E921  ³. 8A15 25924A00  ³MOV DL,BYTE PTR DS:[BD_WIN.4A9225]
0043E927  ³. 66:39D0        ³CMP AX,DX
0043E92A  ³. 72 02          ³JB SHORT BD_WIN.0043E92E
0043E92C  ³. 29D0           ³SUB EAX,EDX
0043E92E  ³> 884424 08      ³MOV BYTE PTR SS:[LOCAL.4],AL
0043E932  ³. 31C0           ³XOR EAX,EAX
0043E934  ³. 8A4424 08      ³MOV AL,BYTE PTR SS:[LOCAL.4]
0043E938  ³. 47             ³INC EDI
0043E939  ³. 8A80 FC904A00  ³MOV AL,BYTE PTR DS:[EAX+BD_WIN.4A90FC] 
0043E93F  ³. 4D             ³DEC EBP
0043E940  ³. 8847 FF        ³MOV BYTE PTR DS:[EDI-1],AL
0043E943  ³> 85ED           ³TEST EBP,EBP
0043E945  ³. 0F8F 28FFFFFF  JG BD_WIN.0043E873
Zacząłem już go analizować. Kompresja jest trochę podobna do RLE.
Może uda mi się jakiś program napisać do dekompresji i kompresji ale to pewnie zajmie mi jeszcze trochę czasu.
Awatar użytkownika
Elum
Posty: 2535
Rejestracja: pt 18 lut 2005, 18:52
Lokalizacja: Schwientochlowitz

Re: Black Dahlia po polsku

Post autor: Elum »

Super. Gdyby Ci się udało, od razu wracam do tłumaczenia i można by w końcu doprowadzić ten projekt do końca. Bardzo trzymam kciuki.
robbor
Posty: 5
Rejestracja: pn 27 sie 2018, 20:58

Re: Black Dahlia po polsku

Post autor: robbor »

Udało mi się rozpracować algorytm kompresji.
Myślałem, że zajmie mi to więcej czasu, ale poszło całkiem sprawnie.

Napisałem już program. Co prawda jest trochę prymitywny ale spełnia swoją funkcję.
Można go pobrać pod adresem.
Link
W archiwum znajduje się krótka instrukcja obsługi.
Awatar użytkownika
jackowsky
Posty: 2299
Rejestracja: wt 22 lut 2005, 10:43
Lokalizacja: Chorzów

Re: Black Dahlia po polsku

Post autor: jackowsky »

robbor pisze:Udało mi się rozpracować algorytm kompresji.
Myślałem, że zajmie mi to więcej czasu, ale poszło całkiem sprawnie.[...]
A może pomógłbyś mi z rozpracowaniem czcionki do Ve stinu havrana?
Ostatnio skończone: Underground Blossom PL (60%), Justin Wack and the Big Time Hack PL (80%), The Many Pieces of Mr. Coo (60%), Monolith PL (80%), Baldur's Gate 3 PL (80%)
Awatar użytkownika
Elum
Posty: 2535
Rejestracja: pt 18 lut 2005, 18:52
Lokalizacja: Schwientochlowitz

Re: Black Dahlia po polsku

Post autor: Elum »

Przetestowałem dziś ten program. Działa idealnie, robi wszystko dokładnie tak, jak potrzeba. Podoba mi się m.in. to, że zdekompresowana czcionka jest w wygodnym do edycji .png (zgaduję, że to też Twoja robota, bo nie widziałem nigdzie w plikach gry formatu .png).

W takim razie, po prawie czterech latach, kluczowy problem techniczny mamy rozwiązany. Dzięki. Już dopisałem Cię do krótkiej listy autorów polskiej wersji. :)
ODPOWIEDZ