Contents |
Advanced sprite layout using register offsets
<Sprite-number> * <Length> 02 07/09/0F/11 <set-id> <0x40 + num-sprites> <groundsprite> <flags> [<register/value>]... [ <buildingsprite> <flags> ( <xoffset> <yoffset> <zoffset> <xextent> <yextent> <zextent> | <xpixeloffset> <ypixeloffset> 80) [<register/value>]... ]...
1.2 Spritelayout definiuje stałe zestawy ikon do użycia z Akcji 1. Rejestry mogą być używane do indywidualnego wyboru 'sprites' z zestawów ikon, zamiast zawsze korzystania z etapu budowy. Rejestry są oceniane, a ich wartości są zapisywane podczas oceny układu ikonki Action 2. Inne wywołania zwrotne wywoływane podczas rysowania (jak CB 1E) nie mają wpływu na używane wartości rejestrów.
Element | Rozmiar | Opis |
---|---|---|
<Sprite-number> | dec | Kolejny numer 'sprite' |
<length> | dec | Całkowita liczba bajtów użytych w tej akcji |
02 | B | Definiuje akcję 02 |
04/07/09/0F/11 | B | cecha 4=stacje, 7=budynki miejskie, 9=kafle przemysłu, 0F = obiekty lub 11 = kafle lotnisk |
<set-id> | B | ID tej definicji |
40 + <num-sprites> | B | Liczba kolejnych sprite'ów budujących (nie można liczyć głównego podłoża). Dozwolony zakres: od 1 do 63 (0x01 do 0x3F). |
<groundsprite> | D | 'Primary' 'sprite' naziemny dla budynku (patrz format poniżej) |
<flags> | W | Flagi dla pierwszego 'sprite' naziemnego (zobacz format poniżej) |
<register/value> | V | Rejestry / wartości do wykorzystania. Zależy od <flags> (zobacz format poniżej) |
<buildingsprite> | D | Sprite do narysowania. W przeciwieństwie do podstawowego formatu, zero nie jest tutaj dozwolone. |
<flags> | W | Flagi dla 'sprite' budynku (patrz format poniżej) |
-- dla 'sprites' definiujących nowe obwiednię -- | ||
<xofs> | B | Przesunięcie x od północnego rogu kafla (jako 'signed' bajt) |
<yofs> | B | Przesunięcie y od północnego rogu kafla (jako 'signed' bajt) |
<zofs> | B | z-offset od ziemi |
<xextent> | B | rozmiar sprite'a w kierunku x |
<yextent> | B | rozmiar sprite'a w kierunku x |
<zextent> | B | rozmiar sprite'a w kierunku z |
-- dla 'sprites' dzielących obwiednię z poprzednim 'sprite' -- | ||
<xpixeloffset> | B | x 'odsunięcie' od lewego górnego rogu poprzedniego 'sprite' |
<ypixeloffset> | B | y odsunięty od lewego górnego rogu poprzedniego 'sprite' |
80 | B | dosłowny bajt 80-godzinny do odróżnienia od definicji nowego pola ograniczającego |
<register/value> | V | Registers / values do wykorzystania. W zależności od <flags> (zobacz format poniżej) |
Opisy elementów
Numer-sprite'a
To tylko numer, na którym jesteś.
Długość
Policz liczbę bajtów w tej akcji.
Set-id
'Set-ID', który chcesz zdefiniować dla tego zestawu. Możesz wybrać dowolną wartość z przedziału od 00 do FF, i możesz użyć ich ponownie w pliku grf w późniejszym momencie (jeśli jest równy istniejącemu set-ID, istniejący jest zastępowany i używany jest nowy).
Definicja sprite'a dla sprite'ów naziemnych i budowlanych
Pola 'sprite' ziemi i budynku mają następujący format:
0.6 2.5 Od wersji TTDPatch 2.0.1 alpha 57 wartość dna może być zerowa, jeśli 'sprite' nie jest potrzebny (jest to przydatne, jeśli trzeba narysować niestandardowe fundamenty, patrz example). Naziemne 'sprite' są zawsze rysowane normalnie, więc bit 30 jest dla nich ignorowany. Bit 30 może mieć inne znaczenie dla naziemnych 'sprites' w późniejszej wersji TTDPatch, więc na razie pozostaw to zero. Nie dotyczy to dodatkowych usług naziemnych korzystających z "<xpixeloffset> <ypixeloffset> 80"-'składnia' (patrz wyżej); dla tych bitów 30 ma to samo znaczenie, co dla budowania 'sprites' .
Specjalny numer sprite w translacji koloru
Jest to używane tylko wtedy, gdy bity 14 lub 15 są niezerowe. Bity 16–29 muszą być liczbą zwykłego 'sprite' TTD zawierającego tabelę translacji kolorów (dostępne tabele tłumaczeń znajdują się poniżej). W trybie przezroczystym potrzebna jest odpowiednia tabela translacji, np. z 'sprite' TTD o numerze 802 (s.b.). Zobacz RecolorSprites, aby uzyskać więcej informacji na temat używania przezroczystych i zmieniających kolor 'sprites' .
W przypadku domów, jeśli nie podano sprite'a zmieniającego kolor, ale zmiana koloru jest włączona w bitach 14-15, istnieją dwie możliwości:
- Jeśli masz włączone callback 1E , jest ono wywoływane w celu określenia odwzorowania kolorów.
- Jeśli callback 1E jest wyłączone lub nie działa, jeden z kolorów określonych we właściwości 17 zostanie wybrany losowo.
Zobacz RecolorSprites, aby uzyskać listę dostępnych tłumaczeń kolorów.
W przypadku kafli branżowych, jeśli to pole jest równe zero, ale zmiana koloru jest włączona w bitach 14 lub 15, automatycznie zostanie zastosowany kolor branży zawierającej.
Zmielony 'sprite' powinien mieć dokładnie ten sam rozmiar i kształt co płaski kafel TTD. Ogólnie rzecz biorąc, nie powinien zawierać niczego, co ma wymiar Z, ponieważ zakryje go dowolny niemielony 'sprite' .
Przydatne wartości dla 'sprite' naziemnych:
Numer sprite'a ('dziesiętny') | 'Contents' |
---|---|
3924 | 'teren' |
3981 | trawnik |
4061 | woda |
4550 | śnieg lub pustynia (w zależności od klimatu) |
1420 | 'beton' |
Pamiętaj, że wszystkie 'sprites' naziemne stają się widoczne w trybie "przezroczystych budynków" , dlatego powinieneś rysować również części, które wydają się być ukryte.
Typ sprite'a
Jeśli bit 31 jest wyraźny, dolne 14 bitów zawiera regularną liczbę 'sprites' TTD.
Jeśli ustawiony jest bit 31, dolne 14 bitów zawiera pewną liczbę zestawów 'sprites' w najnowszej akcji 1, a o używanym 'sprite' decyduje się zgodnie z bieżącym stanem konstrukcyjnym i liczbą 'sprites' w zestawie:
- jeśli jest tylko jeden 'sprite' , jest używany zawsze
- jeśli są dwa 'sprites' , pierwszy jest używany podczas budowy (etapy 0-2), a drugi jest używany do ukończonego budynku (etap 3)
- jeśli są trzy 'sprites' , pierwszy zostanie użyty na początku budowy (etap 0), drugi będzie użyty podczas reszty budowy (etapy 1 i 2), a trzeci zostanie wykorzystany do ukończenia budowy (etap 3)
- jeśli są cztery lub więcej 'sprites' , pierwsze cztery zostaną wykorzystane do czterech etapów budowy. 'Sprites' po pierwszych czterech są zawsze ignorowane.
Flagi w zaawansowanych układach sprite'ów
<flags> jest zbiorem rozmiaru słowa o tych znaczeniach:
Bit | 'Hex' | 'Parentsprite' | 'Gruntsprite/Podrzędnysprite' |
---|---|---|---|
0 | 0001 | Pominięcie bounding box w tym child sprites | Pominięcie 'sprite' |
1 | 0002 | Dodanie offset do 'sprite', wyłącza domyślne wykorzystanie konstrukcji lub railtype-offset | |
2 | 0004 | Dodanie offset do recoloursprite | |
3 | 0008 | Recolour 'sprite' jest z Action 1 (będzie 'dotknięte' (affected) tą samą fazą (stage ) konstrukcji resp. railtype-offsets jako sprites, chyba że bit 2 jest ustawiony) | |
4 | 0010 | Dodanie offset dla <xoffset> i <yoffset> | Dodanie offset dla <xpixeloffset> |
5 | 0020 | Dodanie offset dla <zoffset> | Dodanie offset dla <ypixeloffset> |
6 | 0040 | Rozwiązywać sprite z Zmienną 10 ustawioną na określoną wartość[1] | |
7 | 0080 | Rozwiązywanie problemu ponownego odbarwiania za pomocą Zmiennej 10 ustawionej na określoną wartość[1] | |
8..15 | Zarezerwowane, powinno być zero. Jeśli GRF ustawi nieznane bity, to zostanie wyłączony.. |
-
↑ 1.0 1.1 Ważne tylko dla stacji: Łańcuch Action 1/2/3 jest rozwiązywany wielokrotnie, 'sprites' mogą być częścią różnych Action 1: Związana z tym wartość w <register/value> jest wartością surową (nie rejestrem!), którą należy wpisać do zmiennej 10 podczas rozwiązywania 'sprites'.
-
- tylko dozwolone wartości obecnie 0-7
-
- wartość '2' jest stosowana przy rozwiązywaniu fundowania niestandardowego, (a więc nie należy z tym kolidować))
-
- nawet jeśli sprite nie pochodzi z Action 1, wartość nadal określa, które łańcuchy Action2 definiują wartości dla rejestrów, do których się odwołują.
-
- Rejestr dla "Dodaj offset do rekoloryzacji" jest określony przez działanie 1/2/3 łańcucha ze zmienną 10, jak określono dla 'spritu' odbarwionego.
-
- Pozostałe rejestry są określone przez działanie 1/2/3 łańcucha ze zmienną 10, jak określono dla 'sprite'.
-
- Jeżeli nie jest zdefiniowana zmienna 10 wartości, to właściwość stacji 13 bit 0 staje się skuteczna; tj. zmienna 10 jest ustawiona na 0 lub 1 w zależności od bitu i tego, czy 'rozwiązany' jest pierwszy 'spritenaziemny', czy też inny 'sprite'. Odnosi się to zarówno do 'groundsprite', jak i do palety 'groundsprite'.
-
Rejestr lub wartość w zaawansowanych układach sprite
Są to rejestry tymczasowego przechowywania, które można dodać do poszczególnych części. Wartości rejestru uważa się za podpisane. Kolejność rejestrów jest taka sama jak bitów w <flags>. Jeśli bit nie jest ustawiony, nie pojawiają się dla niego rejestry. Większość bitów wymaga jednego rejestru.
- <xoffset> i <yoffset> można włączyć tylko razem, używając dwóch rejestrów,
- rejestr "pomiń ramkę ograniczającą" - używa wartości 1, aby narysować 'sprite' , a 0, aby go pominąć,
- "recolorsprite z działania 1" - w ogóle nie używa rejestru,
- Wartości zmiennej 10 nie są ustawiane za pomocą rejestru, ale za pomocą stałej bajtowej.