Los scripts son pequeños programas que podemos incluir en las autorías de DVD para realizar funciones avanzadas, interactuando en muchas ocasiones con el usuario final. Por ejemplo, podremos realizar una operación matemática en base al último botón pulsado, muy útil para juegos de preguntas y respuestas. O bien, contabilizar cuántas veces ha sido reproducido en bucle un menú para lanzar un clip automáticamente, de tal forma que el DVD tenga vida propia y lance vídeos cada cierto tiempo, algo que suele gustar a los distribuidores para poner el DVD en sus expositores.

Iniciamos esta serie de artículos dedicados a la programación con scripts en DVD Studio Pro. Lo haremos explicando en primer lugar qué son lo GPRM y los SPRM, básicos para comprender todo lo concerniente a los scripts. Ambos son en esencia memorias que están a nuestra disposición en todos los reproductores de DVD para leer y escribir datos mediante los scripts.
SPRM
System Parameter Register Memory, o Memoria de Registro de Parámetros del Sistema. Son memorias sólo de lectura y disponemos de un total de 24. Cada una de ellas tiene asignada una función que no podremos cambiar, pero que nos interesará acudir a ellas desde el script para saber qué cosas están sucediendo en el reproductor del usuario, y así obrar en consecuencia.
Aquí una breve descripción de cada uno:
- SPRM 0: Código de descripción del idioma del menú. Definido por el usuario en la configuración del reproductor
- SPRM 1: Número del actual flujo (stream) de sonido. Definido por el usuario o el programa
- SPRM 2: Número del actual flujo de subtítulos. Definido por el usuario o el programa
- SPRM 3: Número del actual ángulo. Definido por el usurario o el programa
- SPRM 4: Número del actual título en reproducción (Title). Asignado por el reproductor
- SPRM 5: Número del actual Video Title Set (VTS). Asignado por el reproductor
- SPRM 6: Número del actual título PGC. Asignado por el reprodutor
- SPRM 7: Número de la actual parte del título (capítulo). Asignado por el reproductor
- SPRM 8: Número del actual botón realzado. Definido por el usuario en el reproductor
- SPRM 9: Temporizador de navegación. Asignado por el programa, y entonces termina
- SPRM 10: Destino del temporizador. Pista a reproducir cuando el SPRM termina
- SPRM 11: Modo de mezcla de sonido para Karaoke. Asignado por el programa o los ajustes del reproductor
- SPRM 12: Código de País para control parental
- SPRM 13: Nivel de control parental en efecto
- SPRM 14: Configuración de vídeo del reproductor (Relación de aspecto, modo Letterbox)
- SPRM 15: Configuración de sonido del reproductor (DTS, AC-3, MPEG, PCM, SDDS)
- SPRM 16: Código inicial de idioma para sonido. Definido por el usuario en la configuración del reproductor
- SPRM 17: Extensión de código inicial de idioma para el sonido
- SPRM 18: Código inicial del idioma para para subtítulos. Definido por el usuario en la configuración del reproductor
- SPRM 19: Extensión de código inicial de idioma para el subtítulo
- SPRM 20: Código de Región del reproductor
- SPRM 21: Reservado
- SPRM 22: Reservado
- SPRM 23: Reservado
Cada SPRM tiene unidades de medida diferentes y su interpretación puede resultar compleja, aunque trataremos de simplificarla. Para la mayoría de usos comunes nos centraremos en unos pocos, los más utilizados son el 7 y el 8. Iremos desarrollándolos y facilitando su comprensión a medida que los utilicemos en futuras entregas.
GPRM
General Purpose Register Memory, o Memoria de Registro de Propósito General. Son memorias de lectura y escritura, y son las que más utilizaremos. Tenemos un total de 8 disponibles y todas parten del valor 0 cuando insertamos el disco en el reproductor. Aunque se nombran del 0 al 7, no tienen un uso específico según su número, al contrario que los SPRMs. Podemos utilizarlos para alojar cualquier dato o cifra, y no necesitamos seguir ningún orden.
Podemos ver y cambiar su nombre en el Inspector de DVD Studio Pro. Para ello seleccionamos el disco en la pestaña Outline y acudimos al Inspector, en la pestaña Advanced. Ahí están los 8 GPRM. Si queremos cambiarles el nombre –recomendable para la posterior gestión de los scripts– desplegaremos la flecha del GPRM en cuestión y haremos doble-clic sobre el nombre que aparece. Al realzarse el texto ya podremos cambiarlo.

Introducción
En esta primera entrega haremos un breve acercamiento a los scripts. Vamos a hacer un sencillo script que constará de dos órdenes o comandos, el primero para que retenga el último botón pulsado de un menú, y el segundo para que regrese al mismo menú. Procedamos. Partimos de un proyecto que tenga un menú con por ejemplo 3 botones.
Creamos ahora un script con el botón a tal fin de la barra superior.

En la pestaña Outline aparecerá entonces el nuevo script llamado ‘Script 1’.

Le hacemos doble-clic para acudir a su editor, la pestaña Script, donde lo configuraremos. Un script es un programa, un conjunto de órdenes o comandos. Podemos alojar en un script hasta 124 comandos y se ejecutarán en el orden que aparecen en esta lista, desde la línea 1 en adelante.

En la primera línea siempre vamos a encontrar por defecto el primer comando, nop, (no operation), vamos a cambiarlo. Seleccionamos dicha línea y acudimos al Inspector. En el desplegable cambiamos para este ejemplo el nop por Set GPRM, que se utiliza cuando queremos asignar algo a un GPRM (donde dijimos que podemos escribir datos).

En este caso queremos guardar en nuestro GPRM el valor del SPRM 8, que conserva el valor del último botón realzado. Sigamos.
Al elegir Set GPRM vemos que aparecen debajo las opciones para dicho comando. En operación asignamos mov, en Source Type, SPRM, y en Source Value, SPRM 8. En Target nos aseguramos de que aparece el GPRM donde queremos que se guarde, aquél al que cambiamos el nombre al inicio. Nosotros lo nombramos ‘Último botón pulsado’, así tenemos claro su cometido, en lugar del confuso nombre GPRM 0.

Resumen de lo que acabamos de hacer:
- Set GPRM —> Asignar algo en un GPRM
- Operation: Mov —> Tipo de operación: mover
- Source Type: SPRM —> Tipo de fuente: un SPRM
- Source Value: SPRM 8 —> Valor de la fuente: el SPRM 8
- Target: GPRM 0 —> Destino: GPRM 0 (o el nombre nuevo)
En definitiva, hemos cogido el valor del SPRM 8 y lo hemos guardado en el GPRM 0. Nuestra línea número 1 debería figuar así:

Tenemos ahora que hacer una segunda línea para ordenar al programa que regrese al menú. Para añadir una nueva línea pulsaremos el botón con un símbolo más (+) de la barra superior.

Seleccionamos la nueva línea con el comando Nop y acudimos a su Inspector. En él cambiamos ahora el comando Nop por Jump, que sirve cuando queremos ‘saltar’ a algún elemento desde una línea de un script.
Por último, del desplegable inferior le decimos dónde queremos que salte, en este caso al mismo menú.

El aspecto de las dos líneas debería ser así:

Nuestro primer script ya está listo, ahora nos queda enlazarlo con los botones de nuestro menú. Es decir, queremos que el script se ejecute cada vez que el usuario pulse cualquiera de los botones del menú, por eso el Target o destino de cada botón va a ser nuestro script. Una forma rápida de hacerlo es arrastrando el script uno a uno sobre los botones del menú en el Menú Editor y eligiendo la única opción ‘Connect to Script’ de la Drop Palette.

El trabajo está terminado, hemos creado un script y lo hemos enlazado con el menú, sólo nos queda comprobarlo, y el mejor aliado que tenemos en las tareas de testeado de scripts es el Simulator. Lo activamos mediante el botón Simulate de la barra superior de DVD Studio Pro, o bien pulsando la combinación de teclas Comando+Alt+0.
Cuando lo tengamos activado, pulsamos del simulador el botón Info, identificado con una ‘i’.

Se despliega entonces un tablero que nos muestra todo lo que está sucediendo en nuestra autoría, incluídos los valores de los GPRMs y SPRMs. Podemos activar o desactivar ambos en los botones inferiores. En este caso desactivemos los SPRMs, para comprobar solamente los GPRMs.

Como dijimos, los GPRMs parten del valor 0, así que si navegamos en el Simulator por los diferentes botones del menú y pulsamos cualquiera de ellos, veremos cómo cambia el valor del GPRM en el que estamos alojando el valor del SPRM 8. Observaremos que los valores no son 1, 2, 3, etc, sino 1024, 2048, 3072, etc. Esto es porque este SPRM se mide en incrementos de 1024, teniendo por lo tanto el botón 1 un valor de 1024, el 2 de 2048, y así sucesivamente. La mejor manera de calcular el valor de un botón es dividir su valor entre 1024. Desarrollaremos más a fondo y sacaremos partido a este SPRM y otros en futuras entregas.
Puedes descargarte el proyecto para este ejemplo pinchando aquí.
10 comentarios