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:
- Aby określić wartość 0..FE, wystarczy użyć tej wartości bajtu
- Aby określić wartość FF..FFFF, użyj dosłownego FF, a następnie wartości słowa, np. dla 320d (140 hex) użyj FF 40 01.
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
- 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)
- Podziel na grupy dwucyfrowe
- Napisz te grupy do tyłu
Examples
- 123 w W zmienia się w 0123, następnie 01 23, a więc w końcu 23 01
- 12345 w D zmienia się na 00012345, a następnie 00 01 23 45, a więc w końcu 45 23 01 00
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:
- \b<dec>
- \b<year>
- \b*<dec>
- \w<dec>
- \wx<hex>
- \w<date>
- \d<dec>
- \dx<hex>
- \d<date> (Obsługiwane tylko przez nforenum 3.4.6 i grfcodec 0.9.11 (r1703) i nowsze.)
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.
- <dec> to dowolna dodatnia liczba całkowita dziesiętna pasująca do podanej szerokości.
- <year> jest rok; wynikowy bajt będzie <year>-1920
- <hex> jest dowolną liczbą całkowitą szesnastkową big-endian, która mieści się w podanej szerokości.
- <date> jest datą w jednym z czterech formatów YYYY-MM-DD, YYYY/MM/DD, DD-MM-YYYY, lub DD/MM/YYYY. We wszystkich przypadkach zera wiodące można pominąć.
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