module inscription newsletter haut de page forum mobile

Rejeter la notice

Nouvelle Formation Prise de son : les inscriptions sont ouvertes !
Maîtrisez la qualité de vos prises de son avec notre formation théorique et pratique de 3 jours ! Du 14 au 16 mai 2024 à Paris.

creation script

Discussion dans 'Apple DVD Studio Pro' créé par fabouin, 20 Février 2005.

Tags:
  1. fabouin

    Points Repaire:
    1 200
    Recos reçues:
    1
    Messages:
    134
    Appréciations:
    +0 / 0 / -0
    "lourd" ? tu rigoles?
    non, t'es pas lourd du tout, plutôt très sympa de m'aider dans ma quête...

    ce que tu as compris, c'est à peu près ça...
    je vais faire un graphique pour être plus clair

    je te tiens au jus, merci!

    à+
     
  2. fabouin

    Points Repaire:
    1 200
    Recos reçues:
    1
    Messages:
    134
    Appréciations:
    +0 / 0 / -0
    Salut benjico,

    j'arrive pas à mettre le graphique sur le repaire.
    je te donne le lien en messagerie privée pour le télécharger...
    à+
     
  3. benjico

    Points Repaire:
    2 950
    Recos reçues:
    0
    Messages:
    1 369
    Appréciations:
    +5 / 0 / -0
    Salut,

    je viens de jeter un coup d'oeil à ton graphique. En fait, ca va pas etre simple. Le fait est que chaque accès de ton DVD est indépendant, c'est à dire qu'il faut que le lecteur garde en mémoire si j'ai lu l'intro du film 1, du film 2, du film 3 etc...

    Donc tu n'as pas beaucoup de solutions :
    1 - Tu bloques tes 8 GPRM pour cette programmation, en sachant que tu ne pourras plus les utiliser pour autre chose. Donc tu refait ta programmation en utilisant 1 GPRm par film, donc le GPRM 0 correspond au film 1, le GPRM 1 au film 2, etc. Donc en fonction de la valeur de chaque GPRM, tu lis ou non l'intro.

    2 - Tu as besoin d'autres GPRM et là il y a une solution pour faire tenir ta programmation en 2 GPRM qui s'appelle le Bit Shifting ( qui va de paire avec le Bit extraction ). Tu peux trouver un tuto ici . Ce tuto permet de stocker 4 valeurs dans un seul GPRM...c'est assez compliqué à comprendre, surtout si on ne maitrise pas la programmation des GPRM...

    A+
    Benjico
     
  4. zyzomys

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    206
    Appréciations:
    +0 / 0 / -0
    On peut stocker 16 valeurs dans un GPRM puisqu'un GPRM fait 16 bits. Il suffit de faire un test conditionnel avec & logique pour que cela fonctionne.
    Exemple :
    On initialise d'abord tous les bits du GRPM0 à 1.
    Si l'on a lu l'intro 1 on met le premier bit du GPRM0 a 0 (par pre-script par exemple).
    On fait un affichage conditionnel de l'intro 1 avec un & logique sur le premier bit du GPRM0.

    De même pour les autres intros : deuxième intro sur deuxième bit du GPRM0 etc.

    Si on ne veut pas utiliser l'affichage conditionnel on peut utiliser un script avec exécution d'un saut GOTO conditionné par le même & conditionnel que celui de l'affichage.

    Avec cette méthode du & conditionnel on n'a pas besoin d'extraire les valeurs souhaités du GPRM0 pour les stocker dans un autre GPRM de manière temporaire. Cela économise donc un registre GPRM
     
  5. benjico

    Points Repaire:
    2 950
    Recos reçues:
    0
    Messages:
    1 369
    Appréciations:
    +5 / 0 / -0
    Humm... exact, c'est plutot bien vu mais je ne pige pas comment on peut récupérer ces valeurs pour qu'elle soit exploitables.

    Dans mon GPRM je stocke des valeurs qui sont donc des bit "exact", 1, 2, 4, 8, 16 etc... mais comment je les réutilise ensuite ?

    A+
    Benjico
     
  6. zyzomys

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    206
    Appréciations:
    +0 / 0 / -0
    Je vais essayer d'être compréhensible (c'est pas ce que je réussis le mieux :) )
    Tout d'abord je trouve plus simple d'utiliser les valeurs hexadécimales car c'est plus lisible : les bits "exact" 1,2,4,8,16 deviennent en hexa $1,$2,$4,$8,$10,$20,$40,$80,$100,$200... c'est plus mémotechnique à mon sens.

    Par exemple pour faire un GOTO vers la ligne 10 du script si le 4ème bit est égal à 1 on utilise la ligne de script suivante :
    GOTO 10 if (GPRM 0 & $8)

    Ensuite si tu veux par exemple assigner la valeur 0 au 6ème bit du GPRM 0 tu utilises la ligne de script suivante :
    and GPRM 0, $ffdf
    ($ffdf en binaire cela donne 1111 1111 1101 1111 et l'opération and fait un & logique "bit à bit" donc conserve ici intact tous les bits du GPRM 0 sauf le sixième qui voit sa valeur passer à zéro)

    Et pour assigner la valeur 1 au 11ème bit du GPRM 0 (sans connaitre sa valeur actuelle) on utilise l'astuce suivante : d'abord on passe sa valeur à 0 grâce à la ligne de script précédente, et ensuite on ajoute la valeur idoine au GPRM 0 (soit 2 puissance 10) ce qui donne les deux lignes de scripts suivantes :
    and GPRM 0, $fbff
    add GPRM 0, $400
     
  7. benjico

    Points Repaire:
    2 950
    Recos reçues:
    0
    Messages:
    1 369
    Appréciations:
    +5 / 0 / -0
    OK..j'ai bien compris le principe pour mettre en mémoire 16 selection dans un GPRM. Ma question était de savoir comment tu les récupérait. Dans la programmation de Fabouin, par exemple, il y a huit film. Je dois pouvoir dire quel film j'ai déjà lu et quel film je n'ai pas lu. Si l'on prend ta technique en hexa, on peut dire :
    film 1 = $0 ( ou 1 )
    film 2 = $2 ( ou 2 )
    film 3 = $4 ( ou 4 )
    film 4 = $8 ( ou 8 )
    etc...

    Mais après, une fois que ton GPRM a, imaginons une valeur de 7 ( si j'ai lu les film 1, 2 et 3 ), comment fais-tu pour faire le controle, si je retourne au film 3, que j'ai déjà lu le film? Je suis pas sur d'être clair dans ma question...

    A+
    Benjico
     
  8. Crocro

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    247
    Appréciations:
    +0 / 0 / -0
    Pour isoler le film 3 il faut faire
    Utiliser un GPRM pour le test par exemple le GPRM7

    Set GPRM7=GPRM0 (Copier le GPRM0 dans le 7)

    Puis

    and GPRM7, $4 (effacement des autres bits)

    If GPRM7=0 goto XXXX (pour tester l'état du film 3)

    Crocro
     
  9. benjico

    Points Repaire:
    2 950
    Recos reçues:
    0
    Messages:
    1 369
    Appréciations:
    +5 / 0 / -0
    Excellent... il faut utiliser un autre GPRM.

    Ok, merci beaucoup à vous deux pour ces explications...

    A+
    Benjico
     
  10. zyzomys

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    206
    Appréciations:
    +0 / 0 / -0
    Non, non il n'est pas nécessaire d'utiliser un autre GPRM.
    Un simple if GPRM 0 & $4 goto XXXX suffit. L'opération de test GPRM 0 & $4 renvoie vrai si le troisième bit de GPRM 0 est à 1 et faux si le troisième bit de GPRM 0 est à 0. Dans le manuel de DVDSP3 il y a une explication de l'utilisation de l'opérateur & page 530. Le test se fait sur un SPRM, mais c'est naturellement identique avec un GPRM.

    Attention toutefois, le simulateur de DVDSP semble buggué et parfois (voire tout le temps ??) les tests & sur des valeurs supérieures à 256 ($ff en hexa) ne fonctionnent pas. Il faut créer le projet et tester dans le lecteur DVD qui n'est pas buggué (en tout cas à ce niveau là).
     
Chargement...

Partager cette page