GRFActionsDetailed
en
EN
pl
PL

nfo

Dokumentacja techniczna nowych akcji .grf

Contents

General Information

Następne kilka stron szczegółowo opisuje składnię akcji GRF TTDPatch. Na każdej stronie znajdziesz listę elementów składniowych, które tworzą linię dla tej akcji w pliku .nfo.

Każdy element ma rozmiar (ile bajtów wykorzystuje w danych pseudo 'sprite'). To są możliwe rozmiary:

Rozmiar Opis
dec Ta wartość jest podana w dziesiętnych, a nie szesnastkowych; rozmiar ten nie ma zatem znaczenia
B Ten parametr jest pojedynczym bajtem
B* Ten parametr jest bajtem rozszerzonym (bajtem lub wartością słowa)
W Ten parametr jest wyrazem dwu bajtowym, określonym w kolejności bajtów 'little-endian'
D Ten parametr jest cztero-bajtowym 'dwordem', ponownie w porządku bajtów 'little-endian'
S Ten parametr jest ciągiem tekstowym o zmiennej-długości i zerowym zakończeniu
V Ten parametr ma zmienną długość, która zależy od jednego z poprzednich parametrów; zostanie tam opisany.

Rozszerzone bajty działają w następujący sposób:

Comments

Byte order

W przypadku wartości większych niż jeden bajt (tj. W i D) wartość należy podzielić na poszczególne bajty w odpowiedniej kolejności. Ta kolejność to tak zwana kolejność little-endian , z najpierw najmniej znaczącymi bajtami.

Oto jak przekonwertować liczbę szesnastkową na bajty little-endian

  1. Pad z zerami od lewej, aż będziesz mieć dwa razy więcej cyfr niż potrzebujesz bajtów (tj. 4 cyfry W, 8 cyfr D)
  2. Podziel na grupy dwucyfrowe
  3. Napisz te grupy do tyłu

Examples

Escape sequences

W wersji Info 7 i nowszych (obsługiwanych przez grfcodec w wersji 0.9.9 i nowszych), grfcodec może wykonać dla ciebie część tej pracy. Zamiast robić powyższe, możesz użyć dowolnej z następujących sekwencji ucieczki:

Gdzie:

Drugi znak (lub, w przypadku \b*, drugi i trzeci znak) wskazuje liczbę wymaganych bajtów: b dla bajtu, b* dla bajtu rozszerzonego, w dla słowa i d dla dworda.

W datach wielkości-słowa lata 1932..2000 można podać tylko za pomocą dwóch cyfr.

Aby uniknąć dwuznaczności, daty w formacie dwordów przed 1 stycznia 32 muszą być określone w formatach YMD, a nie w formatach DMY. np. 10 lutego 20 jest \d20-2-10.

Istnieją również pewne sekwencje specjalne specyficzne dla akcji; są tego formatu

\<action><operator>

, gdzie sekwencja jest używana dla akcji

<action>

, i

<operator>

to operator C związany z funkcją wartości bajtu sekwencji lub coś niejasno związany z operatorem C. Albo coś innego.

Są one omówione bardziej szczegółowo na stronie odpowiedniego działania.

'Należy odnotować', że to zachowanie jest obsługiwane tylko w wersji Info 7 i nowszych; w wersji Info 6 i wcześniejszych takie sekwencje specjalne są błędami.

Strings

Ciągi są zapisywane jako pojedyncze znaki w kodach szesnastkowych, a końcowy 00 oznacza koniec łańcucha. Na przykład "Hello" to 48 65 6D 6D 6F 00.

Aby przekonwertować tekst na składnię wymaganą dla plików .nfo, możesz użyć konwertera str2hex . Począwszy od grfcodec 0.9.6, możesz również umieszczać dosłowne ciągi znaków w .nfo . Pamiętaj, że możesz używać znaków tylko z zestawu znaków Latin1, z czego korzysta TTD.  Inne znaki albo nie pojawią się w TTD, albo zepsują cały wyświetlacz.

Jeśli znajdziesz jakieś znaki z zakresu od 7B do 9F, usuń je z łańcucha. Zobacz StringCodes , aby uzyskać więcej informacji.

W wersji Info 7 i nowszych ciągi zachowują się w większości tak, jak w rodzinie języków C : \\, \n i \" wstawiają odpowiednio pojedynczy ukośnik odwrotny, przejście do wiersza (0D) i podwójny cudzysłów (22) Ponadto, \<hex> (do dwóch znaków) wstawia bajt <hex>, a \U<hex> (do czterech znaków) wstawia kodowanie UTF-8 znaku U+<hex>

'Należy odnotować', że to zachowanie jest obsługiwane tylko w wersji Info 7 i nowszych; w wersji Info 6 i wcześniejszych ukośnik odwrotny nie jest znakiem ucieczki. ( "\\" koduje jako jeden bajt w wersji Info 7, ale dwa bajty w wersji Info 6.)

Lista Actions

Zobacz specs.tt