home *** CD-ROM | disk | FTP | other *** search
/ Groovy Bytes: Behind the Moon / groovybytes.iso / GROOVY / SND_TOOL / CRYS250.ZIP / CRYSEXP.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-23  |  2.7 KB  |  70 lines

  1. /**************************************************************************/
  2. /*   Voici un petit programme d'exemple d'intégration de mes routines     */
  3. /*   dans un programme C.                                                 */
  4. /*                                            */
  5. /*   Attention comme la routine de chargement du MOD se charge d'allouer  */
  6. /*   elle même la mémoire dont elle a besoin,il ne faut pas que le tas    */
  7. /*   occupe toutes la mémoire disponible. (compiler en SMALL). Deplus     */
  8. /*   l'orde d'appel des fonction est importants.                      */
  9. /*   Evidament il faut lier ce programme avec CRYS24.OBJ.          */
  10. /*                                      */
  11. /* Programmé par Sébastien Granjoux                                       */
  12. /* Commencé le 30/12/93                                                   */
  13. /* Modification le 25/10/94                          */
  14.  
  15. #include <dos.h>
  16.  
  17. /* Les définitions des fonctions de CRYS24.OBJ                  */
  18.  
  19. extern "C"
  20. {
  21. int far pascal SETMOD(unsigned int frequence,char device,int port,char irq);
  22. int far pascal FLOADMOD(char far *filename);
  23. int far pascal MLOADMOD(char far *adress);
  24. void far pascal DETECTSND(unsigned char far *device,unsigned int far *port,unsigned char far *irq,unsigned char far *dma);
  25. void far pascal UNLOADMOD();
  26. void far pascal STARTMOD();
  27. void far pascal MAKEMOD();
  28. void far pascal STOPMOD();
  29. };
  30.  
  31. void main()
  32. {
  33.  char *Fichier="c:patega.mod";    /* Nom du fichier à jouer */
  34.  unsigned int port=0;
  35.  unsigned char irq=0;
  36.  unsigned char dma=0;
  37.  unsigned char dev=5;
  38.  
  39.  DETECTSND(&dev,&port,&irq,&dma); /* Cherche la meilleur cartes sonore
  40.                     dans les variables d'environnements   */
  41.  
  42.  FLOADMOD(Fichier);               /* Charge le fichier MOD                */
  43.  
  44.  SETMOD(180,dev,port,irq);      /* Prépare le MOD à 18kHz avec la carte
  45.                     son trouvé                            */
  46.  
  47.  STARTMOD();              /* Commence la musique                  */
  48.  
  49.  /* A partir de ce moment il ne peut y avoir que les interruptions clavier
  50.   ou horloge, vous devez donc démasquer les interruptions qui pourraient
  51.   vous être utile comme celle du disque dur ou de la souris. Toutefois si
  52.   vous tenez à avoir une musique de la meilleur qualité possible évitez
  53.   de le faire et n'utilisez que des routines simples.                  */
  54.  
  55.  do
  56.  {
  57.   MAKEMOD();                     /* Calcul 1/50s de musique              */
  58.  
  59.  }while(inportb(0x60)>=0x80);    /* Beaucoup plus rapide qu'une fonction
  60.                    du genre de kbhit() et donc meilleur
  61.                    pour la qualité de la musique      */
  62.  
  63.  STOPMOD();                      /* Arrête la musique et remet le PC dans
  64.                    son état initial              */
  65.  
  66.  UNLOADMOD();                    /* Rend la mémoire utilisé pour charger
  67.                    le MOD au DOS                  */
  68.  
  69. }
  70.