Mit diesem Guide möchte ich Euch mal die Möglichkeiten und Lösungsansätze für die Programmierung der VM-Engine von DLP näherbringen. Folgendes Szenario:
Wir haben einen Konzertmitschnitt und wollen auf unserer DVD folgendes realisieren:
- Einen "Play all" für das Abspielen des kompletten Konzerts.
- Eine Songselection, mit der jeweils ein Titel abgespielt wird. Nach Spielen
des Titels wird zum Rootmenü verzweigt und der Highlight-Button des
darauffolgenden Songs automatisch angesteuert(!)
Wir brauchen: DVDlab Pro
Wir erstellen zunächst ein ganz normales VTS-only Projekt, fügen unseren Konzertmitschnitt ins Movie 1 ein und setzen Kapitelmarken an den Anfang eines jeden Songs. Movie 1 wird mit dem Play-all-Button verlinkt. Nach Ende des Movies soll auch wieder "Play all" im Menü angesteuert werden. In unserem Fall ist das der Button 1, also bekommt Movie ein ein Pre-Command verpasst (rechte Maustaste auf Movie 1 im Connection Window, Edit VM-Commands). Wir merken uns den anzusteuernden Button im GPRM0 und schreiben also:
GPRM0 = 1 'Button 1 im Root
Für das Abspielen einzelner Songs ist das "Movie Branch"-Objekt (MB)zuständig. Wir fügen im Connection-Window soviele Movie-Branchs ein, wie unser Mitschnitt (Hauptfilm) Kapitel hat (im Projekt sind das 6 Kapitel), doppelklicken auf die MB und fügen jeweils 1 Kapitel aus dem Hauptfilm ein.
Jedes MB bekommt jetzt ebenfalls ein Pre-Command verpasst, in dem wir uns merken, welcher Button als nächstes angesteuert wird. Wir merken uns das per PRE (und nicht etwa per POST), damit wir sicherstellen können, dass der korrekte Button angesprungen wird, wenn der geneigte Nutzer z.B. innerhalb eines Songs die Title/Menü-Taste drückt und damit ins Root navigiert.
Das erste MB-Objekt bekommt das VM-Command:
GPRM0 = 3 '2. MB-Objekt, sprich Kapitel 2 od. Button-Nr 3!
Das zweite MB-Objekt wird
GPRM0 = 4 usw.
Achtung: Das letzte MB-Objekt (das letzte Kapitel/der letzte Song) muss mit GPRM0 wieder auf das 1. MB verweisen!
GPRM0 = 2 'Highlighting auf Song 1
Damit hätten wir schon mal die halbe Miete drin. Es fehlen jetzt noch ein paar Pre-Commands im Rootmenu, damit auch in Abhängigkeit von GPRM0 die korrekten Buttons angesteuert werden. Wir öffnen also den VM-Editor im Rootmenü und finden folgende (von DLP) erzeugte Commands vor:
1. GPRM12 = 1024 'default Highlight-Button
2. if (GPRM 11 == 5) GPRM12 = 0 'komme ich vom Out-Node des eigenen Menüs, lasse ich Highlite auf den zuletzt gewählten Button
3. if (GPRM12 == 0) Goto 5
4. SetHL_BTN GPRM12 'setze Highlite auf Button, der in GPRM12 steht
5. GPRM11 = 4 'Entry-Node setzen
6. GPRM15 = 4
Wir fügen vor den Default-Commands unsere eigenen ein, und zwar:
1. if (GPRM0 == 0) Goto 6 'noch nichts gespielt, springe zu DLP-Commands (vormals Zeile 1)
2. GPRM1 = GPRM0 'Highlite in GPRM1 zum berechnen speichern
3. GPRM1 *= 1024 'und mit 1024 (400 hex) multiplizieren, da das dazugehörende SPRM8 mit 1024er-Sprüngen arbeitet.
4. GPRM12 = GPRM1 'setze Highlight-Button-User-Register
5. Goto 9 'und springe in die DLP-Commands (vormals Zeile 4 (siehe oben), wird automatisch nummeriert).
Das war's. Zum Nachvollziehen mal ein komplettes Projekt mit einem Konzert der RainbowsFalls DLP mosert, dass er einige Files nicht hat, bitte nach C:\temp\DVDlab\Projekte entpacken.
Viel Spass
BJ1
PS: Kommentare sind ausdrücklich erwünscht!


Falls DLP mosert, dass er einige Files nicht hat, bitte nach C:\temp\DVDlab\Projekte entpacken.
Zitieren

