Software  Development  for  Flight  Simulators 

Drzewiecki Design Drzewiecki Design Tutorials

 

Programowanie p? roku - SDK 2002 i ASM Tweaking

 

 

   Tutorial ten jest materia?em dla bardziej zaawansowanych u?ytkownik? i polega na modyfikowaniu plik? ASM projekt?, zatem nadaje si? jedynie przy korzystaniu z SDK 2002.

 

Pokazana zostanie r?nie? r?zna metoda dodawania tekstur nocnych, jednak polecam robi?to z poziomu GMAXa: GMAX Material Navigator > wybra?materia? (to te z czerwonymi kropkami) > otworzy si?Material Editor, gdzie stawiamy ptaszka przy Ambient Color, klikamy na k??k?oraz na None > klikamy na Bitmap i wybieramy tekstur? kt?a ma by?wy?wietlana zamiast oryginalnej tekstury w porze nocnej.

 

Na wst?ie chcia?bym uprzedzi? i? opisane poni?ej dzia?ania wymagaj? du?ej uwagi i koncentracji. Edytowane pliki s? bardzo d?ugie i skomplikowane, a jedna kropka lub spacja spowoduje b??d kompilacji ca?ego pliku. Nie ma te? mechanizmu, kt?y u?atwi?by p?iej znalezienie takiego b??u i trzeba go r?znie szuka? Pliki ASM uzyskujemy przy eksporcie sceny przez SDK 2002 z zaznaczeniem opcji "Keep Files". Tworz? si?dwa pliki o ko??kach .asm i _0.asm . Do tego tutorialu interesowa?b?zie nas tylko ten drugi plik.

 

Plik ASM o ko??ce _0.asm (kt?y naj?atwiej otworzy?go w Notatniku) mo?emy podzieli?na kilka sekcji, lecz my b?ziemy korzysta?tylko z dw?h - przyjmijmy, ?e b?zie to sekcja A i sekcja C. Tak te? zosta? podzielony ten tutorial.

 

 

Sekcja A - lista tekstur, tekstury nocne

Tekstury sezonowe

Tekstury nocne

Tekstury nocne i sezonowe

 

Sekcja C - programowanie p? roku

Wzory kodu

Przyk?ady

 

 

Aby zrozumienie zawartych wskaz?ek by?o ?atwiejsze, proponuje intuicyjny system oznacze? gdy cytowane b?? fragmenty kodu z pliku:

 

bia?e t?o - cz? pliku kt?? nie ruszamy

zielone t?o - cz? pliku kt?? wstawiamy lub cz? pliku po dokonanych zmianach

czerwone t?o - cz? pliku kt?? usuwamy

??e t?o - cz? pliku kt?? zmieniamy

 

Opcj? Notatnika, o kt?ej warto dodatkowo pami?a? jest mo?liwo??wyszukiwania zestawu znak? w pliku (Ctrl+F) a tak?e zmieniania konkretnego zestawu znak? na inny, w ca?ym pliku lub w zaznaczonym obszarze (Ctrl+H).

 


 

Sekcja A

 

 

Wprowadzenie

 

Sekcja A to lista tekstur, z kt?ych b?ziemy korzysta?oraz ich numery porz?dkowe. Rozpoczyna si?z TEXTURE_LIST_BEGIN a ko?zy na TEXTURE_LIST_END . W tej sekcji musz? by?wpisane wszystkie tekstury, w??cznie z sezonowymi i nocnymi. Standardowy wpis jednaj tektury to:

 

 TEXTURE_DEF TEXTURE_AIRCRAFT , <255,255,255,255>, 0.424360, "EPBC_TWRANTENNA.BMP" ; 0

 

TEXTURE_DEF TEXTURE_AIRCRAFT to typ tekstury. We wszystkich eksportowanych plikach nale?y go zmieni?z AIRCRAFT na BUILDING - to znany b??d eksportera, kt?y nie pozwala wybra? czy eksportujemy samolot czy sceneri?

 

"EPBC_TWRANTENNA.BMP" to nazwa tekstury. W wypadku tekstur sezonowych przyjmuje si?dodanie symbolu pory roku za nazw? g??n?, np. _SU (summer - lato / podstawowa pora roku), _FA (fall - jesie?, _WI (winter - zima), _HW (hard/harsh winter - mocna zima / przewa?nie zwi?szona ilo???niegu) i _SP (spring - wiosna). Np. tekstura jesienna powinna nazywa?si?EPBC_TWRANTENNA_FA.BMP .

 

0 - to numer porz?dkowy. Nale?y pami?a? ?e numeracja rozpoczyna si?od 0 a nie od 1.

 

 

Dodawanie tekstur sezonowych

 

Aby doda?do listy tekstury sezonowe, nale?y po prostu skopiowa?oryginalne wpisy, zmodyfikowa?nazw?tekstur oraz ustawi?w kolejno?ci numery porz?dkowe. Kolejno??umieszczania tekstur jest dowolna. Oto lista tekstur przed edycj?:

 

 TEXTURE_LIST_BEGIN
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 1.543538, "KONST_ZYWOPLOT.BMP" ; 0
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 17.260703, "TREESCOLLECTION10.BMP" ; 1
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 10.850835, "TREESCOLLECTION14.BMP" ; 2
TEXTURE_LIST_END

 

Kopiujemy wpisy tyle razy, ile tekstur chcemy doda?

 

 TEXTURE_LIST_BEGIN
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 1.543538, "KONST_ZYWOPLOT.BMP" ; 0
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 1.543538, "KONST_ZYWOPLOT.BMP" ; 0
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 17.260703, "TREESCOLLECTION10.BMP" ; 1
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 17.260703, "TREESCOLLECTION10.BMP" ; 1
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 17.260703, "TREESCOLLECTION10.BMP" ; 1
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 10.850835, "TREESCOLLECTION14.BMP" ; 2
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 10.850835, "TREESCOLLECTION14.BMP" ; 2
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 10.850835, "TREESCOLLECTION14.BMP" ; 2
TEXTURE_LIST_END

 

Zmieniamy odpowiednio nazwy oraz numer porz?dkowy. Ta sama lista tekstur po edycji:

 

 TEXTURE_LIST_BEGIN
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 1.543538, "KONST_ZYWOPLOT.BMP" ; 0
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 1.543538, "KONST_ZYWOPLOT
_HW.BMP" ; 1
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 17.260703, "TREESCOLLECTION10.BMP" ;
2
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 17.260703, "TREESCOLLECTION10
_FA.BMP" ; 3
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 17.260703, "TREESCOLLECTION10
_HW.BMP" ; 4
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 10.850835, "TREESCOLLECTION14.BMP" ;
5
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 10.850835, "TREESCOLLECTION14
_FA.BMP" ; 6
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 10.850835, "TREESCOLLECTION14
_HW.BMP" ; 7
TEXTURE_LIST_END

 

Jest to gotowa lista tekstur, kt?a mo?e by?w projekcie dalej wykorzystywana.

 

 

Dodawanie tekstur nocnych

 

Tak jak pisa?em na pocz?tku tutoriala, tekstury nocne polecam dodawa?z poziomu GMAXa, co oszcz?za czas i zmniejsza ryzyko pope?nienia b??u. Jest jednak mo?liwo??doda?je r?znie. Oto lista tekstur przed edycj?:

 

 TEXTURE_LIST_BEGIN
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 0.424360, "EPBC_TWRANTENNA.BMP" ; 0
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 8.022464, "KONST_1.BMP" ; 1
TEXTURE_LIST_END

 

Na pocz?tku tak samo jak w przyk?adzie z teksturami sezonowymi, kopiujemy oryginalne wpisy.

 

 TEXTURE_LIST_BEGIN
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 0.424360, "EPBC_TWRANTENNA.BMP" ; 0

TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 0.424360, "EPBC_TWRANTENNA.BMP" ; 0
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 8.022464, "KONST_1.BMP" ;
1

TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 8.022464, "KONST_1.BMP" ; 1
TEXTURE_LIST_END

 

Zmieniamy nazw?tekstur nocnych i numer porz?dkowy. Jednak aby FS korzysta? z tekstury w nocy, musi by? zdefiniowana jako tekstura nocna. W tym celu zmieniamy TEXTURE_BUILDING na TEXTURE2_NIGHT. Oto lista tekstur po edycji:

 

 TEXTURE_LIST_BEGIN
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 0.424360, "EPBC_TWRANTENNA.BMP" ; 0
TEXTURE_DEF
TEXTURE2_NIGHT , <255,255,255,255>, 0.424360, "EPBC_TWRANTENNA_LM.BMP" ; 1
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 8.022464, "KONST_1.BMP" ;
2
TEXTURE_DEF
TEXTURE2_NIGHT , <255,255,255,255>, 8.022464, "KONST_1_LM.BMP" ; 3
TEXTURE_LIST_END

 

 

Dodawanie tekstur sezonowych i tekstur nocnych

 

Og?ne zasady s? oczywi?cie identyczne jak w przyk?adach powy?ej, nale?y jednak pami?a? i? tekstura nocna musi by?przypisana do ka?dej tekstury sezonowej bez wyj?tku. Oto lista tekstur przed edycj?:

 

 TEXTURE_LIST_BEGIN
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_SU_FS2004R1C1.BMP" ; 0
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_SU_FS2004R1C2.BMP" ; 1
TEXTURE_LIST_END

 

Kopiujemy oryginalne wpisy tyle razy, ile mamy tekstur sezonowych oraz dodatkowo po jednym razie dla ka?dej tekstury sezonowej - to b?? tekstury nocne. W naszym przypadku mamy tylko letnie i zimowe tekstury, zatem ka?dy z dw?h wpis? powy?ej musimy skopiowa?3 razy:

 

 TEXTURE_LIST_BEGIN
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_SU_FS2004R1C1.BMP" ; 0

TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_SU_FS2004R1C1.BMP" ; 0

TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_SU_FS2004R1C1.BMP" ; 0

TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_SU_FS2004R1C1.BMP" ; 0
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_SU_FS2004R1C2.BMP" ;
1

TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_SU_FS2004R1C2.BMP" ; 1

TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_SU_FS2004R1C2.BMP" ; 1

TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_SU_FS2004R1C2.BMP" ; 1
TEXTURE_LIST_END

 

Po kolei zmieniamy:

  • typ tekstury - w nocnych z TEXTURE_BUILDING na TEXTURE2_NIGHT

  • nazwy tekstur - w tym przypadku z letnich _SU na _HW dla zimowych i _LM dla nocnych

  • numery porz?dkowe

Oto lista tekstur po edycji:

 

 TEXTURE_LIST_BEGIN
TEXTURE_DEF TEXTURE_BUILDING , <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_SU_FS2004R1C1.BMP" ; 0
TEXTURE_DEF
TEXTURE2_NIGHT ,      <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_LM_FS2004R1C1.BMP" ; 1
TEXTURE_DEF TEXTURE_BUILDING ,  <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT
_HW_FS2004R1C1.BMP" ; 2
TEXTURE_DEF
TEXTURE2_NIGHT ,      <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_LM_FS2004R1C1.BMP" ; 3
TEXTURE_DEF TEXTURE_BUILDING ,  <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_SU_FS2004R1C2.BMP" ;
4
TEXTURE_DEF
TEXTURE2_NIGHT ,      <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_LM_FS2004R1C2.BMP" ; 5
TEXTURE_DEF TEXTURE_BUILDING ,  <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT
_HW_FS2004R1C2.BMP" ; 6
TEXTURE_DEF
TEXTURE2_NIGHT ,      <255,255,255,255>, 164.253752, "KONSTANCIN_MAPSAT_LM_FS2004R1C2.BMP" ; 7
TEXTURE_LIST_END

 

 


 

Sekcja C

 

 

Wprowadzenie

 

Sekcja C to miejsce, gdzie ??czone s? tekstury z modelem. W tym miejscu mamy bezpo?redni wp?yw na to, co kiedy i gdzie b?zie wy?wietla?si?w naszym projekcie. Sekcja C jest ca?kowicie uzale?niona od Sekcji A, zatem przed przyst?pieniem do jej edycji, nale?y mie?ca?kowicie gotow? list?tekstur. Sekcja C rozpoczyna si?zazwyczaj od "; NonAlpha" a ko?zy "BGL_RETURN". Znajduj? si?w niej charakterystyczne linie zaczynaj?ce si?od "DRAW_TRI", dzi?i czemu ?atwo jest t?sekcj?namierzy?

 

 

Programowanie tekstur sezonowych - wzory

 

Wz? kodu jest bardzo prosty i pozwala na niemal nieograniczone mo?liwo?ci je?li chodzi o wy?wietlanie tekstur. Skupmy si?jednak na zmianach sezonowych. Wygl?d podstawowego wzoru jest nast?uj?cy:

 

IFIN1 tex_01, 038Ah, 0, 78
MATERIAL 0,
2 ; winter
JUMP tex_continue
tex_01 label word

 

MATERIAL 0,0 ; summer
tex_continue label word

 

W skr?ie, powy?szy wz? oznacza, i? od 0 do 78 dnia roku (0, 78) b?zie wy?wietlana tekstura o numerze porz?dkowym 2 (MATERIAL 0,2), w innych dniach tekstura o numerze 0 (MATERIAL 0,0). W danym przypadku mo?emy zmieni?numer wy?wietlanej teksturki oraz czas, kiedy jest wy?wietlana. Cztery g?ne linijki mo?na kopiowa? tyle razy, ile jest potrzeba, jednak w praktyce stosuje si?nie wi?ej ni? 6 razy (5 p? roku i przej?cie przez granic?roku).

 

Dzie? w kt?ym FS zmienia por?roku w danym regionie trzeba sprawdzi?do?wiadczalnie, zmieniaj?c daty i obserwuj?c, kt?ego dnia tekstury drzew i ziemi ulegn? zmianie. Znaj?c dat? mo?na z ?atwo?ci? obliczy?dzie?roku, korzystaj?c m.in. z mojego narz?zia ze strony Tutoriale. Poni?ej przedstawiam kilka bardziej z?o?onych i bardziej przydatnych wzor?. Dni roku zmiany, w kt?ym pory roku si? zmieniaj?, dzia?aj? poprawnie na wi?szo?ci terytorium Polski, za ka?dym razem jednak warto je sprawdzi?

 

IFIN1 tex_01, 038Ah, 345, 355
MATERIAL 0,2 ; winter
JUMP tex_continue
tex_01 label word


IFIN1 tex_02, 038Ah, 356, 365
MATERIAL 0,8 ; harshwinter
JUMP tex_continue
tex_02 label word


IFIN1 tex_03, 038Ah, 0, 78
MATERIAL 0,8 ; harshwinter
JUMP tex_continue
tex_03 label word


IFIN1 tex_04, 038Ah, 79, 86
MATERIAL 0,2 ; winter
JUMP tex_continue
tex_04 label word


IFIN1 tex_05, 038Ah, 87, 171
MATERIAL 0,4 ; spring
JUMP tex_continue
tex_05 label word


IFIN1 tex_06, 038Ah, 172, 265
MATERIAL 0,0 ; summer
JUMP tex_continue
tex_06 label word


MATERIAL 0,6 ; fall
tex_continue label word

 

IFIN1 tex_01, 038Ah, 79, 86
MATERIAL 0,4 ; winter
JUMP tex_continue
tex_01 label word

IFIN1 tex_02, 038Ah, 87, 265
MATERIAL 0,0 ; summer
JUMP tex_continue
tex_02 label word

IFIN1 tex_03, 038Ah, 266, 344
MATERIAL 0,2 ; fall
JUMP tex_continue
tex_03 label word

IFIN1 tex_04, 038Ah, 345, 355
MATERIAL 0,4 ; winter
JUMP tex_continue
tex_04 label word

MATERIAL 0,6 ; harshwinter
tex_continue label word

IFIN1 tex_01, 038Ah, 87, 265
MATERIAL 0,0 ; summer
JUMP tex_continue
tex_01 label word

IFIN1 tex_02, 038Ah, 266, 344
MATERIAL 0,2 ; fall
JUMP tex_continue
tex_02 label word

MATERIAL 0,4 ; winter
tex_continue label word

IFIN1 tex_01, 038Ah, 87, 344
MATERIAL 0,0 ; summer
JUMP tex_continue
tex_01 label word

MATERIAL 0,2 ; winter
tex_continue label word

Powy?szy wz? jest najbardziej kompletny - przedstawia 5 pi? roku wraz z "mocn?" czyli ?nie?n? zim?. Aby przej??przez granic?roku zastosowane s? dwa czterolinijkowe wpisy - w tym przypadku od 356 do 365 dnia roku oraz od 0 do 78 dnia roku. W FS tekstury si?nie zmieni?. W praktyce rzadko kiedy jest sens korzystania z tego wzoru z racji niepraktycznie du?ej r?orodno?ci tekstur (oznacza to wi?szy plik ko?owy i wi?sze obci??enie komputera, podczas gdy r?ica wizualna jest minimalna).

Wz? ten u?ywamy do niekt?ych typ? pod?o?a, kt?e urozmaica sceneri?w "?rodkow?" por?zimy, kiedy jest najwi?sze prawdopodobie?two pojawienia si??niegu. W stosunku do wzoru po lewej, brak wiosny. Jej rol?przejmuj? teksturki letnie. Przej?cie przez granic?roku jest rozwi?zane komend? "pozosta?e", kt?a w tym przypadku odnosi si?do tekstur harsh winter. Dzi?i temu nie ma potrzeby dodatkowego wpisywania czterech linijek kodu.

Doskona?y wz? do stosowania dla w?asnor?znie wykonanej ro?linno?ci - obs?uguje teksturki letnie, zimowe i jesienne. Teksturki letnie wy?wietlaj? si?wiosn? i latem, teksturki zimowe zim? i ?nie?n? zim?.

Najbardziej uniwersalny wz?, kt?y u?ywamy do du?ych obszar? terenu a tak?e do dach? budynk?. Obs?uguje teksturki letnie i zimowe. Teksturki letnie s? aktywne od 87 do 344 dnia roku, w pozosta?ym czasie wy?wietlaj? si?zimowe. W taki spos? mo?na r?nie? zaprogramowa?warstw??niegu, le??c? na lotnisku. Wystarczy latem zastosowa?prze?roczyst? teksturk?a zim? t? w?a?ciw? ze ?niegiem.

 

 

Programowanie tekstur sezonowych - przyk?ady

 

Wzory opisane powy?ej, nale?y umie?ci?w odpowiednich miejscach sekcji C pliku _0.asm . Sekcja C rozpoczyna si?od "; NonAlpha" a ko?zy w standardowych przypadkach na "BGL_RETURN". Ca?a sekcja C, posiadaj?ca w poni?szym przyk?adzie 3 teksturki, mo?e wygl?da?wi? w spos? nast?uj?cy:

 

; NonAlpha
EPSJ_mapsat_10_NonAlpha label BGLCODE
MATERIAL 0,0 ; <255,255,255,255> SOBIENIE_MAPSAT_SUR1C1.BMP;;;
DRAW_TRI_BEGIN 0, 5
DRAW_TRI 0, 1, 3 ; poly=2 part=1
DRAW_TRI 2, 0, 3 ; poly=3 part=1
DRAW_TRI 1, 4, 3 ; poly=1 part=1
DRAW_TRI_END
MATERIAL 0,2 ; <255,255,255,255> SOBIENIE_MAPSAT_SUR1C2.BMP;;;
DRAW_TRI_BEGIN 5, 4
DRAW_TRI 2, 0, 1 ; poly=5 part=1
DRAW_TRI 1, 3, 2 ; poly=4 part=1
DRAW_TRI_END
MATERIAL 0,3 ; <255,255,255,255> SOBIENIE_MAPSAT_SUR1C3.BMP;;;
DRAW_TRI_BEGIN 9, 4
DRAW_TRI 1, 3, 2 ; poly=6 part=1
DRAW_TRI 2, 0, 1 ; poly=7 part=1
DRAW_TRI_END
BGL_END
BGL_RETURN

 

Zaznaczamy kursorem ka?d?, z zaznaczonych powy?ej na czerwono, linijek i w te miejsca wklejamy interesuj?cy nas wz?. Na potrzeby tego przyk?adu skorzystamy ze wzoru, obs?uguj?cego lato, jesie?i zim? Polecam wkleja?wzory po kolei, gdy? trzeba b?zie w ka?dym kolejnym zmienia?niekt?e liczby. Oto nasz przyk?ad po wklejeniu wzor?, niestety sta? si?teraz zdecydowanie d?u?szy:

 

; NonAlpha
EPSJ_mapsat_10_NonAlpha label BGLCODE
IFIN1 tex_01, 038Ah, 87, 265
MATERIAL 0,0 ; summer
JUMP tex_continue
tex_01 label word

IFIN1 tex_02, 038Ah, 266, 344
MATERIAL 0,2 ; fall
JUMP tex_continue
tex_02 label word

MATERIAL 0,4 ; winter
tex_continue label word

DRAW_TRI_BEGIN 0, 5
DRAW_TRI 0, 1, 3 ; poly=2 part=1
DRAW_TRI 2, 0, 3 ; poly=3 part=1
DRAW_TRI 1, 4, 3 ; poly=1 part=1
DRAW_TRI_END
IFIN1 tex_01, 038Ah, 87, 265
MATERIAL 0,0 ; summer
JUMP
tex_continue
tex_01 label word

IFIN1
tex_02, 038Ah, 266, 344
MATERIAL 0,2 ; fall
JUMP
tex_continue
tex_02 label word

MATERIAL 0,4 ; winter
tex_continue label word
DRAW_TRI_BEGIN 5, 4
DRAW_TRI 2, 0, 1 ; poly=5 part=1
DRAW_TRI 1, 3, 2 ; poly=4 part=1
DRAW_TRI_END
IFIN1 tex_01, 038Ah, 87, 265
MATERIAL 0,0 ; summer
JUMP
tex_continue
tex_01 label word

IFIN1
tex_02, 038Ah, 266, 344
MATERIAL 0,2 ; fall
JUMP tex_continue
tex_02 label word

MATERIAL 0,4 ; winter
tex_continue label word
DRAW_TRI_BEGIN 9, 4
DRAW_TRI 1, 3, 2 ; poly=6 part=1
DRAW_TRI 2, 0, 1 ; poly=7 part=1
DRAW_TRI_END
BGL_END
BGL_RETURN

 

Niestety taki kod nie b?zie jeszcze dzia?a?. Opr?z poprawnego przyporz?dkowania "MATERIAL 0,...) do tekstur z listy tekstur w sekcji A, trzeba w ka?dym z kolejnych wzor?, za wy??czeniem pierwszego, zmieni?warto??tex_ na kolejn?. W pierwszym wzorze b?zie to tylko tex_, jednak w kolejnych tex1_ , tex2_ , tex3_ itd. Warto??tex_ wyst?uje w ka?dym u?ytym wzorze 7 razy, jednak we wzorach d?u?szych liczba ta jest wi?sza a w kr?szych - mniejsza. Oto poprawnie zaprogramowana sekcja C:

 

; NonAlpha
EPSJ_mapsat_10_NonAlpha label BGLCODE


     IFIN1 tex_01, 038Ah, 87, 265
     MATERIAL 0,
0 ; summer
     JUMP tex_continue
     tex_01 label word

     IFIN1 tex_02, 038Ah, 266, 344
     MATERIAL 0,
2 ; fall
     JUMP tex_continue
     tex_02 label word

     MATERIAL 0,
4 ; winter
     tex_continue label word


DRAW_TRI_BEGIN 0, 5
DRAW_TRI 0, 1, 3 ; poly=2 part=1
DRAW_TRI 2, 0, 3 ; poly=3 part=1
DRAW_TRI 1, 4, 3 ; poly=1 part=1
DRAW_TRI_END


     IFIN1 tex
1_01, 038Ah, 87, 265
     MATERIAL 0,
6 ; summer
     JUMP tex
1_continue
     tex
1_01 label word

     IFIN1 tex
1_02, 038Ah, 266, 344
     MATERIAL 0,
8 ; fall
     JUMP tex
1_continue
     tex
1_02 label word

     MATERIAL 0,
10 ; winter
     tex1_continue label word


DRAW_TRI_BEGIN 5, 4
DRAW_TRI 2, 0, 1 ; poly=5 part=1
DRAW_TRI 1, 3, 2 ; poly=4 part=1
DRAW_TRI_END


     IFIN1 tex
2_01, 038Ah, 87, 265
     MATERIAL 0,
12 ; summer
     JUMP tex
2_continue
     tex
2_01 label word


     IFIN1 tex
2_02, 038Ah, 266, 344
     MATERIAL 0,
14 ; fall
     JUMP tex
2_continue
     tex
2_02 label word


     MATERIAL 0,
16 ; winter
     tex
2_continue label word


DRAW_TRI_BEGIN 9, 4
DRAW_TRI 1, 3, 2 ; poly=6 part=1
DRAW_TRI 2, 0, 1 ; poly=7 part=1
DRAW_TRI_END
BGL_END
BGL_RETURN

 

Nale?y by?bardzo uwa?nym przy zmienianiu warto?ci tex_ . Bardzo ?atwo jest pope?ni?tutaj b??d, a w wypadku d?u?szych plik? znalezienie b??u mo?e by?czasami trudniejsze ni? napisanie ca?ego pliku od nowa.

 

Wzory mog? by?mieszane (czasem d?u?sze, czasem kr?sze dla wybranych tekstur z listy tekstur) jednak zawsze nale?y pami?a?o warto?ci tex_ i jej konsekwentnych zmianach w kolejnych dodanych wzorach. Zdarza si? ?e nie wszystkie tekstury z listy tekstur potrzebuj? dodatkowych ustawie?w postaci wzoru. Mo?na w?czas umieszcza?zar?no podstawowe wpisy (np. MATERIAL 0,4 ; <255,255,255,255> SOBIENIE_MAPSAT_SUR1C4.BMP;;) jak i wzory dotycz?ce tekstur sezonowych. Wtedy r?nie? nale?y pami?a?o warto?ci tex_1, jednak zawsze dotyczy?b?zie ona tylko wzor?!

 

Aby zredukowa?to minimum mo?liwo?? pope?nienia b??u, polecam wype?nia?i zmienia?wpisy we wzorach po kolei, czyli:

  1. Wklei?wz? Ctrl+V w miejsce podstawowego wpisu "MATERIAL (...)"

  2. Zmieni?numery tekstur tak, aby pasowa?y do listy tekstur, czyli warto?ci: "MATERIAL 0,0"

  3. Zmieni?warto??"tex_" w zale?no?ci od numeru wzoru w pliku ("tex_" dla pierwszego, "tex1"_ dla drugiego, "tex2"_ dla trzeciego itd.)

  4. Zaznaczy?ca?y nasz wz? i skopiowa? Ctrl+C

  5. Przej??do punktu 1. przy kolejnym podstawowym wpisie.

Dzi?i takiej metodzie dodatkowo sprawdzamy ka?dy poprzedni wz? po wklejeniu go w celu ponownej edycji. Je?li jednak zdarzy nam si?sytuacja, ?e plik asm nie chce si?kompilowa? do bgl, proponuj?przejrze?najpierw plik pod k?tem poprawno?ci wszystkich warto?ci tex_ . W 90% przypadk? b??y wkradaj? si? w?a?nie tam.

 

?ycz?zatem udanego programowania p? roku w oparciu o SDK 2002!

 

 

<< Powr? do strony Tutoriale

<< Powr? do Sekcji A

<< Powr? do Sekcji C