Podgląd pojedynczego posta
Stary 15.05.2006, 15:58   #50
Reetou
Zarejestrowany
 
Data rejestracji: 18.05.2004
Posty: 9,590
Reetou ma doskonałą reputację, jest przykładem osoby znającej się na rzeczy <2000 i więcej pkt>Reetou ma doskonałą reputację, jest przykładem osoby znającej się na rzeczy <2000 i więcej pkt>Reetou ma doskonałą reputację, jest przykładem osoby znającej się na rzeczy <2000 i więcej pkt>Reetou ma doskonałą reputację, jest przykładem osoby znającej się na rzeczy <2000 i więcej pkt>Reetou ma doskonałą reputację, jest przykładem osoby znającej się na rzeczy <2000 i więcej pkt>Reetou ma doskonałą reputację, jest przykładem osoby znającej się na rzeczy <2000 i więcej pkt>Reetou ma doskonałą reputację, jest przykładem osoby znającej się na rzeczy <2000 i więcej pkt>Reetou ma doskonałą reputację, jest przykładem osoby znającej się na rzeczy <2000 i więcej pkt>Reetou ma doskonałą reputację, jest przykładem osoby znającej się na rzeczy <2000 i więcej pkt>Reetou ma doskonałą reputację, jest przykładem osoby znającej się na rzeczy <2000 i więcej pkt>Reetou ma doskonałą reputację, jest przykładem osoby znającej się na rzeczy <2000 i więcej pkt>
Jeśli kiedykolwiek programowałeś - nie powinno Ci to sprawić problemów. Ważne jest tylko uzmysłowienie sobie kilku rzeczy:

1. Podstawą każdego programu jest korzystanie ze zmiennych w których można przechowywać pewne wartości. W odtwarzaczu DVD zmienne te tworzą rejestry GPRM (od 0 do 15 odczyt/zapis) - czyli mamy do wykorzystania teoretycznie 16 zmiennych. Na tych rejestrach możemy przeprowadzać operacje arytmetyczne, logiczne, możemy porównywać ich zawartość.

2. Odtwarzacz DVD posiada także 24 rejestry SPRM (do odczytu) w których znajdują się interesujące informacje o stanie odtwarzacza takie jak ustawiony język menu, preferowany język audio, podpisów, czy numer wybranego przycisku. W jednym z ków omawiałem znaczenie niektórych SPRM - poszukaj. To najistotniejsze - niektóre z rejestrów SPRM można też zapisać; np. zapis wartości do SPRM(1) powoduje zmianę odtwarzanej ścieżki audio, a zapisując SPRM(2) zmieniamy wyświetlanie podpisów.

3. Nie wszystkie instrukcje możemy wstawiać w każde miejsce - tu ułatwieniem okaże się PGCEdit, który sprawdza poprawność wprowadzonej instrukcji i w przypadku błędu podświetla linię na czerwono.

4. Nie można skakać bezpośrednio pomiędzy VTSami - jeśli chcesz przed filmem puścić jakieś intro znajdujące się w innym VTS niż film, to jego wywołanie (a później powrót) musi się odbywać pośrednio, poprzez video managera (VMG).

5. W danym PGC wykonywane są najpierw instrukcje 'pre commands', później odtwarzany jest materiał, po zakończeniu odtwarzania każdej komórki wykonywane są 'cell commands', po zakończeniu odtwarzania - 'post commands'

Idea programowania jest oczywista - chodzi o zapewnienie właściwego odtwarzania przygotowanego materiału.

Jeśli mamy tylko film, bez dodatków i menu, całość może ograniczyć się do jednej instrukcji - w First play PGC (którego instrukcje wykonywane są zawsze jako pierwsze po włożeniu płyty) wstawiamy instrukcje skoku do VTS z filmem (Jump to Title 1) i to wystarczy

Jeśli chcemy zainicjować odpowiednio audio i subs przed uruchomieniem filmu, to w pre commands VTST z filmem wstawimy np. instrukcje:
Set Audio stream = 0
Set Sub-picture stram = 1, on


Przy bardziej złożonych strukturach, zawierających menu, musimy już 'obsłużyć' sprawdzanie wybranego przycisku w menu i przekazać w zależności od tego sterowanie w odpowiednie miejsce - program nam się rozrasta, trzeba wykorzystać GPRM do przechowania numeru naciśniętego przycisku:
Set GPRM(0) = (mov) SPRM (8:Highlighted button number)
a ponieważ SPRM(8) zawiera wartości (numer klawisza * 1024) możemy podzielić zawartość rejestru przez 1024:
Set GPRM(0) /= (div) 1024
by w rejestrze GPRM(0) przechowywać numer przycisku. Teraz możemy wykorzystać instrukcję warukową if , by w zależności od wybranego przycisku przekazać sterowanie w odpowiednie miejsce:
10 if ( GPRM(0) != 1) then (GOTO line 12)
11 LinkPGCN 2
12 LinkPGCN 3


I tak dalej, i tym podobnie

Walcz!

Ostatnio zmieniany przez Reetou : 15.05.2006 o godz. 16:01
Reetou jest offline   Odpowiedz cytując ten post