CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

6/4.1 De nouvelles instructions sonores (28e Complément)Coding Classeurs Weka
6/4 Programmation du circuit sonore en assembleur

6/4.1 De nouvelles instructions sonores

Nous vous avons déjà proposé quelques effets sonores en Basic pour agrémenter vos programmes, cette fois-ci, ce sont de nouvelles instructions sonores que nous vous proposons de créer pour enrichir le vocabulaire de votre CPC.

Le principe

Ces nouvelles instructions seront créées sous formes de RSX (ReSident extension) et utiliseront les vecteurs d'accès au composant sonore, vecteurs décrits en Partie 2 Chapitre 2.7 pages 48 à 53.

Les trois vecteurs qui nous intéressent plus particulièrement sont situés aux adresses &BCAA, &BCBC et &BCBF, et nous allons les préciser un peu plus, par rapport aux instructions Basic équivalentes.

SOUND QUEUE

Ce vecteur situé à l'adresse &BCAA est l'équivalent de l'instruction SOUND du Basic.

L'appel de celui-ci nécessite l'adresse du son à émettre dans le registre HL, celui-ci pointant une zone comportant les paramètres semblables à l'instruction SOUND.

Pour vous permettre de programmer facilement en assembleur cette instruction, nous vous proposons en figure 1 la correspondance mémoire des différents paramètres de SOUND.

CANALPERIODE SONDUREE SONVOLUME INITIALENVELOPPE D'AMPLITUDE
(ENV)
ENVELOPPE DE TON
(ENT)
PERIODE DE BRUIT
SOUNDxxxxxxx
MEMOIRE CPC
.....
.....
OCTET X
OCTET X
OCTET X
OCTET BAS
OCTET HAUT
X
OCTET X
OCTET X
OCTET BAS
OCTET HAUT
X
.....
Fig. 1 : Organisation dans la mémoire des paramètres nécessaires à l'appel du vecteur SOUND-QUEUE pour ajouter un son dans la queue sonore.

SOUND AMPL VOLUME Ce vecteur situé à l'adresse &BCBC est l'équivalent de l'instruction ENV du Basic.

L'appel de celui-ci nécessite le numéro de l'enveloppe de volume dans le registre A, et l'adresse de cette enveloppe dans le registre HL.

Vous trouverez en figure 2 la correspondance mémoire de l'enveloppe de définition d'amplitude.

No ENVELOPPENOMBRE DE PAS
SECTION 1
AMPLITUDE DU PAS
SECTION 1
DUREE DU PAS
SECTION 1
NOMBRE DE PAS
SECTION 2
AMPLITUDE DU PAS
SECTION 2
DUREE DU PAS
SECTION 2
ENVxxxxxxx
DANS REGISTRE A
X
MEMOIRE CPC
.....
.....
Nb DE SECTIONS
OCTET SEC 1 X
OCTET SEC 1 X
OCTET SEC 1 X
OCTET SEC 2 X
OCTET SEC 2 X
OCTET SEC 2 X
OCTET SEC 3 X
OCTET SEC 3 X
.....
Fig. 2 : Organisation dans la mémoire des paramètres nécessaires à l'appel du vecteur SOUND-AMPL-VOLUME pour définir une amplitude de volume.

SOUND TONE ENVELOPPE

Ce vecteur situé à l'adresse &BCBF est l'équivalent de l'instruction ENT du Basic.

L'appel de celui-ci nécessite le chargement des registres A et HL respectivement par le numéro de l'enveloppe et par l'adresse de cette enveloppe.

La figure 3 présente la correspondance mémoire avec les paramètres de l'instruction ENT.

No ENVELOPPENOMBRE DE PAS
SECTION 1
AMPLITUDE DU PAS
SECTION 1
DUREE DU PAS
SECTION 1
NOMBRE DE PAS
SECTION 2
AMPLITUDE DU PAS
SECTION 2
DUREE DU PAS
SECTION 2
ENTxxxxxxx
DANS REGISTRE A
X
MEMOIRE CPC
.....
.....
Nb DE SECTIONS
OCTET SEC 1 X
OCTET SEC 1 X
OCTET SEC 1 X
OCTET SEC 2 X
OCTET SEC 2 X
OCTET SEC 2 X
OCTET SEC 3 X
OCTET SEC 3 X
.....
Fig. 3 : Organisation dans la mémoire des paramètres nécessaires à l'appel du vecteur SOUND-TONE-ENVELOPPE pour définir une enveloppe de tonalité.

Les instructions RSX

|REACTIONCette instruction provoque le bruit d'un avion, ou de tout engin, utilisant la propulsion à réaction.
|EXPLODEIl n'est pas dit que la vie de votre avion soit infinie, et vous pourrez abréger celle-ci de la manière qui vous plaira, nous vous fournissons le bruitage de la triste fin de celui-ci.
|PHONEDe quoi réveiller l'ami Gaston avec son « téléphon » qui « son » à l'aide de cette instruction provoquant le bruit d'une sonnerie de téléphone au demeurant fort moderne pour notre ami.
|OCCUPEPas de chance, Gaston déjà en ligne vous signalera que cette dernière est occupée par cette instruction.
|GOVous changez de moyen de transport, l'avion devenant trop dangereux, voici une instruction vous permettant de vous mettre au volant d'une formule 1 attendant le signal de départ.
|TICTACQue le temps passe vite sur votre CPC, voici de quoi apprécier sa vitesse avec un tictac discret.
|DONGBig Ben dans votre CPC, rien d'étonnant, de part l'origine anglo-saxonne de celui-ci, voilà de quoi simuler l'heure du crime et ses douze coups par cette instruction paramétrable.

La syntaxe exacte est celle-ci :

|DONG,nombredecoupsonnés

Ainsi |DONG,5 signalera à notre ami Dutronc qu'il est 5 heures et que Paris s'éveille.

|PING et |PONGNon, ce ne sont pas les noms de deux auteurs japonais écrivant chez WEKA, mais deux instructions simulant les rebonds d'une balle (de pingpong vous avez dit ?).

Le programme Assembleur











Lignes 11 à 60 : table des équivalences
Lignes 82 à 139 : implantation des RSXs
Lignes 149 à 162 : avion à réaction
Lignes 167 à 192 : explosion
Lignes 197 à 263 : téléphone sonne
Lignes 268 à 302 : téléphone occupé
Lignes 307 à 358 : signal top départ
Lignes 361 à 430 : tic-tac
Lignes 435 à 520 : coups d'horloge
Lignes 525 à 584 : rebond ping
Lignes 591 à 648 : rebond pong

Le chargeur Basic




Un bon conseil : de par leur nombre élevé, vous aurez soin de vérifier chacune des lignes de DATA que vous entrerez avant de la valider.

Après sauvegarde, vous lancerez le programme Basic et suivrez les instructions affichées.

Pour utiliser le programme, il vous suffira d'entrer les lignes suivantes :

10 MEMORY &97FF
20 OPENOUT "TRUC."
30 MEMORY HIMEM - 1
40 CLOSEOUT
50 LOAD "EFFETSON.BIN",&9800
60 CALL &9800

Démonstration

Le petit programme suivant vous permettra de vérifier le bon fonctionnement de votre programme de création de RSX sonores.


Page précédente : 6/4 - Programmation du circuit sonore en assembleur
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 210 millisecondes et consultée 275 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.