      HuC v3.10 Rfrence de la bibliothque C, 2001.08.15


** FONCTIONS VIDO ** (11 Fcts)
---------------------

  disp_off();

      Dsactive l'affichage.
      PS: Dsactive mais n'efface pas le contenu de la VRAM.


  disp_on();

      Active l'affichage.
      PS: Active/ractive le contenu de la VRAM, trs utile pour afficher
          une image instantanment 

  cls();
  cls(int val);

      Efface tout l'cran. Sans paramtre, l'cran est rempli avec un caractre
      espace, sinon il est rempli avec la valeur bat donne en argument.


  vsync();
  vsync(char nb_images);

      Synchronise votre programme  la ligne de balayage vertical (VBL), qui est
      de 1/60me de seconde. Sans paramtre cette fonction retourne ds qu'un
      signal VBL a t reu, sinon votre programme sera synchronis au nombre
      d'image que vous avez demand. Par exemple pour excuter votre jeu 
      20 im/s, il suffit d'utiliser vsync(3)  la fin de votre boucle de jeu.


  vreg(char idx);
  vreg(char idx, int val);

      Cette fonction vous donne un accs direct aux registres du processeur
      vido (VDC). La premire forme de cette fonction est utilise pour      
      simplement slectionner un registre VDC (pour des accs personnaliss), et la
      seconde est utilise pour fixer la valeur d'un registre (cela slectionne
      en mme temps ce registre).


  vram_addr(char x, char y);

      Une simple fonction qui sert  renvoyer l'adresse cran en mmoire vido (VRAM)
      d'un caractre situ  la position x/y.


  set_screen_size(char taille);

      Change la taille de l'cran virtuelle. Par dfaut le code de mise en route
      initialise un cran virtuelle de 64 caractres en largeur et de
      32 caractres en hauteur, mais d'autres valeurs sont possibles,
       savoir: 32x32, 128x32, 32x64, 64x64 ou 128x64.
      Plus l'cran virtuel est grand, moins vous avez de mmoire vido pour
      vos graphiques (polices, tiles, sprites).


  load_vram(int vaddr, int *data, int nb);

      Une fonction gnrique pour charger toute sorte de donnes (BAT, CG, sprites)
      en mmoire vido,  l'adresse "vaddr". "nb" est le nombre de mots 16 bits
       charger.


  load_bat(int vaddr, int *bat_data, char w, char h);

      Charge une table d'attributs de blocs (BAT) de largeur "w" et de hauteur "h"
      en mmoire vido,  l'adresse "vaddr".


  load_background(char *gfx, int *pal, int *bat, char largeur, char hauteur);

      Cette fonction est une fonction tout en un, elle est utilise pour
      afficher une entire image de fond sur l'cran, comme une image de titre
      d'un jeu. Elle chargera les donnes de tiles, elle chargera la
      palette, et enfin elle chargera le BAT. Utilisez les directives
      #incchr, #incpal et #incbat pour grer les diffrent type de donnes. Les
      donnes de blocs seront stockes aux adresses de 0x1000  0x5000
      en mmoire vido.


   set_xres(int xres);    [ 1.5+ ]

      Change la rsolution horizontal  "xres" (en pixels). Cela change les
      registres du contrleur vido pour afficher davantage de pixels sur
      l'cran; cela n'affecte pas les calculs virtuels.
      On peut monter jusqu' 320 (voir 511 mais aucun emulateur ne restitue
      cette resolution) et descendre jusqu'a 8.
      PS: L'affichage reel sera tjs un multiple de 8 soit un caratere.


** FONTIONS DE PALETTES ** (6 Fcts)
--------------------------

  set_color(int num, int rvb);

      Fixe la couleur indique (0-511)  la valeur rvb (rouge vert bleu) donne.
      PS: Avec cette fonction les 32 palettes disponible sont confondues (32*16).
      EX:	set_color(145,0x777);
		           |     L-> nouvelle couleur RVB "blanc"
		           L-------> choisi la 2ieme couleur de la 9ieme palette

  set_color_rgb(int num, char r, char v, char b);

      Fixe la couleur indique aux valeurs rvb composes donnes. Cette fonction
      est plus facile  utiliser que set_color(), mais elle est plus lente.
      PS: Avec cette fonction les 32 palettes disponible sont confondues (32*16).


  get_color(int num);

      Renvoie la valeur rvb de la couleur indique.
      PS: Avec cette fonction les 32 palettes disponible sont confondues (32*16).


  load_palette(char pal_num, int *pal, char nb_pal);

      Charge un ou plusieurs blocs de palettes de 16 couleurs  la fois.
      "pal_num" est l'index du premier bloc (0-31)  charger, et "nb_pal" le
      nombre de blocs. Cette fonction peut tre utilise pour charger une
      palette dfinie avec #defpal ou inclue avec la directive #incpal.


  set_sprpal(char pal_num, int *pal);
  set_sprpal(char pal_num, int *pal, int nb_pal);

      Exactement la mme fonction que load_palette(), mais cette fonction offre
      un accs direct aux blocs de palettes de sprites. Les blocs de palettes de
      sprites sont les numros de blocs standards de 16  31, mais avec cette
      fonction vous pouvez simplement y accder avec des index de 0  15. Cette
      fonction et la fonction set_bgpal() rend plus facile la manipulation de
      sprites et de blocs de palettes de caractres; avec eux vous n'avez pas
      besoin de connatre les index rels de blocs. Sans le troisime argument,
      la fonction ne charge qu'un bloc.


  set_bgpal(char pal_num, int *pal);
  set_bgpal(char pal_num, int *pal, int nb_pal);

      La mme fonction que set_sprpal() mais pour les blocs de palettes de
      caractres.


** FONCTIONS DE POLICES ** (7 Fcts)
--------------------------

  set_font_color(char pp, char ap);

      Fixe les couleurs de premier plan et d'arrire plan de la police par
      dfaut (les couleurs vont de 0  15). Les changements ne prendront pas
      effet immdiatement, vous devez recharger la police en appelant
      load_default_font().


  set_font_pal(char pal);

      Fixe la palette (0-15) a utiliser pour la police.
      PS: Cette palette est une des 16 pour les Tiles.


  set_font_addr(int vaddr);

      Fixe l'adresse de la police en mmoire vido. Utilisez cette fonction pour
      changer la police actuelle; pour utiliser plusieurs polices sur le mme
      cran, ou lorsque vous chargez vous-mme une police et que vous avez
      besoin de dire  la bibliothque o elle est.


  get_font_pal();

      Renvoie l'index de palette de la police actuelle.


  get_font_addr();

      Renvoie l'adresse de la police actuelle en mmoire vido.


  load_default_font();
  load_default_font(char num);
  load_default_font(char num, int vaddr);

      Charge une police par dfaut en mmoire vido. Sans paramtres la premire
      police par dfaut est charge juste au-dessus du BAT en mmoire vido;
      d'habitude c'est  l'adresse 0x800. Autrement vous pouvez slectionner le
      numro de police, et ensuite l'adresse en mmoire vido. Dans
      l'implmentation actuelle la bibliothque ne supporte qu'une police par
      dfaut, mais  l'avenir davantage de police pourraient tre disponible.


  load_font(char *police, char nb_char);
  load_font(char *police, char nb_char, int vaddr);

      Charge une police personnalise en mmoire vido. Utilise ensemble avec la
      directive #incchr cela vous permettra de charger une police  partir d'un
      fichier PCX. Il faut noter que les polices personnalises sont des polices
      colores, ainsi ils ne seront pas affects par des appels antrieurs 
      set_font_color(). Le nombre de caractres  charger vont de 0  224, les
      caractres ASCII 0  31 ne sont jamais utiliss, et ne peuvent tre dfinis,
      vous devez dmarrer votre police au caractre espace, qui est le code
      ASCII 32. Si vous ne donnez pas implicitement une adresse en mmoire vido,
      la fonction chargera votre police juste au-dessus du BAT (d'habitude c'est
       l'adress 0x800).


** FONCTIONS D'AFFICHAGE DE TEXTE ** (6 Fcts)
------------------------------------

      Toutes les fonctions de sortie de texte ont deux formes, une o vous
      spcifiez directement l'adresse en mmoire vido, et une autre o vous
      spcifiez les coordonnes x/y (en units de caractre). La seconde forme
      est un peu plus lente mais plus facile d'utilisation.


  put_digit(char chiffre, int vaddr);
  put_digit(char chiffre, char x, char y);

      Affiche un caractre de chiffre "0" - "9" en donnant sa valeur numrique.
      Les chiffres hexa ("A" - "F") sont aussi supports, une valeur de 10
      affichera "A", une valeur de 11 affichera "B", et ainsi de suite...


  put_char(char c, int vaddr);
  put_char(char c, char x, char y);

      Affiche un caractre ASCII.


  put_raw(int bat_val, int vaddr);
  put_raw(int bat_val, char x, char y);

      Affiche une valeur bat brute.
      PS: Fonction utilise pour l'affichage de Tiles 8*8.


  put_number(int nombre, char largeur, int vaddr);
  put_number(int nombre, char largeur, char x, char y);

      Affiche un nombre sign. l'argument "largeur" est utilise pour formater
      le nombre. Autant que "largeur" chiffre(s) seront affichs. Si le nombre a
      moins de "largeur" chiffres, des espaces vides seront ajout  sa gauche.
      Si le nombre est ngatif, un signe "-" sera ajout.


  put_hex(int nombre, char largeur, int vaddr);
  put_hex(int nombre, char largeur, char x, char y);

      Affiche un nombre hexa.


  put_string(char *chaine, int vaddr);
  put_string(char *chaine, char x, char y);

      Affiche une chane ASCII termine par nul.

 
** FONCTIONS DE TILES & DE MAPS ** (8 Fcts)
------------------------------------

  set_tile_data(char *tile_data, int nb_tile, char *pal_ref);

      Dfinie un tableau de tiles  tre utilis par toutes les fonctions de
      tiles et de maps. "tile_data" est l'adresse des donnes graphiques de
      tiles en mmoire, "nb_tile" est le nombre de tiles (max. 256), et
      "pal_ref" est l'adresse d'un tableau d'index de palettes  utiliser pour
      les tiles; chaque tile possde son propre index de palette qui lui est
      attach (il faut noter que les index de palettes doivent tre dcal vers
      la gauche de quatre bits, c.--d. 0x40 pour l'index de palette 4).


  load_tile(int vaddr);

      Charge des donnes graphiques de tiles,  l'adresse "vaddr". Vous devez
      d'abord avoir dfini un tableau de tiles avec set_tile_data() avant
      d'utiliser cette fonction.


  put_tile(int num, int vaddr);
  put_tile(int num, char x, char y);

      Met des tiles individuels sur l'cran, soit directement  l'emplacement en
      mmoire vido "vaddr", soit aux coordonnes cran "x/y" (en unit de
      tile). "num" est un index de tile dans le tableau de tiles dfinis par
      l'appel le plus rcent  set_tile_data().


  get_tile(char x, char y);    [ 1.5+ ]

      Renvoie l'index de tile comme dfini dans le tableau de tiles utilis dans
      le plus rcent appel  set_tile_data(). les arguments "x/y" sont en
      unit de pixel, contrairement aux fonctions put_tile et ainsi cette
      fonction est idale pour les routines de collision.


  set_map_data(char *map, char w, char h);

      Dfinie une map d'index de tiles  tre utilise par load_map(). "map" est
      l'adresse d'une map de largeur "w" (max. 256) et de hauteur "h" (max. 256).


  load_map(char sx, char sy, int mx, int my, char w, char h);

      Charge une partie d'une map sur l'cran. "sx" et "sy" sont des coordonnes
      d'cran (en unit de tile; 16 pixels), "mx" et "my" sont les positions
      dans la map, et "w" et "h" sont respectivement le nombre d'index de tiles
       charger horizontalement et verticalement. Cette fonction n'effectue
      aucun clipping, alors vous ne devez pas lui passer des coordonnes cran
      incorrectes ou trop grandes, cela corromprait la mmoire vido.


  scroll(char num, int x, int y, char superieur, char inferieur, char disp);

      Dfini la fentre cran "num". Jusqu' quatre fentres peuvent tre
      dfinies. "superieur" et "inferieur" sont les limites cran suprieur et
      infrieur de la fentre (les limites sont inclues dans la zone de la
      fentre). "disp" contrle le type de la fentre, si le bit 7 est mis les
      graphiques d'arrire plan seront affich dans cette fentre, et si le
      bit 6 est mis les sprites seront galement affichs. si aucun de ces bits
      n'est mis la fentre restera vide. "x" et "y" sont les coordonnes
      haut-gauche de la zone dans l'cran virtuel qui sera affich dans la
      fentre.
   
     
  scroll_disable(char num);    [ 1.5+ ]

     Dsactive le dfilement de la fentre cran "num".


** FONCTIONS GRAPHIQUES DE PIXELS ** (5 Fcts)
------------------------------------

  gfx_setbgpal(char bgcolor);    [3.04+]

     Fixe le groupe de palette d'arrire plan par dfaut. Utilis par gfx_init().

     Exemple: gfx_setbgpal(5) avant gfx_init() fera utiliser aux fonctions
              gfx_*() les entres de palette d'arrire plan de $50 jusqu' $5F.


  gfx_init(int vaddr);   [3.04+]

     Initialise l'cran pour pointer sur des tiles graphiques squentiels,
     situs  partir de l'adresse "vaddr" en VRAM.


  gfx_clear(int vaddr);    [3.04+]

     Efface l'cran graphique.
     En partant de l'adress "vaddr" en VRAM, cette fonction fixes les tiles
     squentiels en VRAM sur des zros, avec une taille base sur le plan virtuel.


  gfx_plot(int x, int y, int couleur);   [3.04+]

     Fixe un pixel  (x,y)  la couleur indiques.
     "couleur" doit tre une valeur entre 0 et 15.


  gfx_point(int x, int y);   [3.04+]

     Renvoie la couleur du pixel  (x,y).


** FONCTIONS DE SPRITES ** (17 Fcts)
--------------------------

  load_sprites(int vaddr, int *spr_data, int nb_spr);

      Charge des donnes graphiques de sprites en mmoire vido,  l'adresse
      "vaddr". Cette fonction charge des sprites par ensemble de 8 sprites
      de 16x16 pixels. "nb_spr" est le nombre d'ensembles  charger.
      Si vous avez besoin de charger moins de sprite 16x16 que les huit
      contenu dans un ensemble, utilisez plutt la fonction load_vram().


  init_satb();

      Initialise la table interne d'attributs de sprites.
      (SATB) utilis par la bibliothque pour manipuler les sprites.
      Cette fonction doit tre appele avant que toute autre fonction de sprite
      soit appele.


  reset_satb();

      Rinitialise le SATB interne, cela a pour effet de dsactiver et
      rinitialiser tous les sprites.


  satb_update();
  satb_update(char nb);

      Copie la table interne d'attributs de sprites vers la mmoire vido. Cela
      rafrachira les sprites sur l'cran. utilisez cette fonction rgulirement
      pour mettre  jour l'affichage des sprites. Le meilleur endroit pour
      appeler satb_update() est aprs chaque appel  vsync(), mais inutile
      d'appeler satb_update() si vous n'avez chang aucun attribut de sprites.
      "nb" indique le nombre de sprite  rafrachir; en partant du sprite 0.
      Par dfaut la bibliothque rafrachit seulement les sprites que vous
      utilisez, mais si vous avez besoin de rafrachir implicitement un certain
      nombre de sprites alors vous pouvez utiliser "nb".


  spr_set(char num);

      Slectionne le sprite "num" (0-63) en tant que sprite actuel.


  spr_x(int valeur);

      Fixe la coordonne x du sprite actuel. Des valeurs ngatives fera
      disparatre le sprite sous le bord gauche, alors que des valeur plus
      grandes que la largeur de l'cran le fera disparatre sous le bord droite.


  spr_y(int valeur);

      Fixe la coordonne y du sprite actuel.


  spr_pattern(int vaddr);

      Fixe l'adresse du motif en mmoire vido du sprite actuel.


  spr_ctrl(char mask, char valeur);

      Fixe diffrents attributs du sprite actuel. Avec cette fonction vous
      pouvez changer la taille du sprite (16x16, 32x32, ...) et l'orientation
      du sprite (renversement horizontal/vertical).


  spr_pal(char pal);

      Dfini l'index du bloc de palette (0-15) du sprite actuel.


  spr_pri(char pri);

      Fixe la priorit du sprite actuel. "0" le fera apparatre derrire
      l'arrire plan ( travers la couleur 0), "1" le fera apparatre devant
      l'arrire plan.


  spr_get_x();

      Renvoie la coordonne x du sprite actuel.


  spr_get_y();

      Renvoie la coordonne y du sprite actuel.


  spr_get_pal();

      renvoie l'index du bloc de palette du sprite actuel.


  spr_get_pattern();

      renvoie l'adresse du motif en mmoire vido du sprite actuel.


  spr_hide();
  spr_hide(char num);

      Sans paramtres cette fonction cachera le sprite actuel. utilisez "num"
      pour cacher un sprite diffrent de celui qui est actuel.


  spr_show();
  spr_show(char num);

      Montre un sprite qui a t cach en utilisant la fonction spr_hide().


** FONCTIONS DES MANETTES ** (5 Fcts)
----------------------------

  joy(char num);

      Renvoie l'tat actuel de la manette numro "num".
      Depuis la version 1.5, c'est conforme avec 6 boutons.


  joytrg(char num);

      Renvoie des informations sur les boutons et les directions nouvellement
      appuys de la manette "num". Mais attention  cette fonction, ces
      informations sont rafrachies  chaque images, donc si votre boucle de jeu
      n'est pas assez rapide vous pourriez manquer quelques pressions de
      touches. Dans un tel cas utilisez les fonctions joy_events(), elles
      gardent la trace de toutes les pressions de touches.


  set_joy_callback(char num, char mask, char touches, void (*proc)());

      Vous pouvez programmer la bibliothque pour appeler une de vos fonctions
      lorsqu'une certaine touche a t appuye. La meilleur utilisation de cette
      fonction est pour grer le mode pause d'un jeu lorsque le joueur appuie
      sur le bouton START. "num" est le numro de la fonction callback 
      installer, pour l'instant il n'y a qu'une callback (0), mais de futurs
      versions de la bibliothque pourrait en avoir davantage. "mask" indique
      quel manette analyser (un bit pour chaque manette, avec le bit 0 pour la
      manette 0, etc...), et "touches" indique quel pressions de touches regarder,
      d'habitude c'est simplement JOY_STRT. "proc" est l'adresse de la fonction
      que vous voulez tre appele par la bibliothque.


  get_joy_events(char num);
  get_joy_events(char num, char rst);

      Renvoie toutes les pressions de touches pour la manette "num" qui se sont
      produites depuis le dernier appel de cette fonction. Avec cette fonction
      vous ne pouvez pas manquer de pressions de touches. "rst" dit  la
      fonction si les vnements de pressions de touches seront rinitialiss
      aprs avoir t lus, par dfaut ils sont rinitialiss aprs chaque
      lecture, mais si "rst" est gal  zro les vnements ne seront pas
      rinitialiss.


  clear_joy_events(char mask);

      Rinitialise le(s) liste(s) d'vnements de pressions de touches de manette.
      "mask" indique quelle liste d'vnement de manette vous voulez
      rinitialiser. Un bit pour chaque manette, bit 0 est la manette 0, bit 1
      est la manette 1, etc... Toutes les listes d'vnements peuvent tre
      rinitialises en fixant "mask"  0x1F.


** FONCTIONS DIVERSES ** (7 Fcts)
------------------------

  poke(int offset, char val);
  pokew(int offset, int val);    [ 3.04 + ]

     crit la valeur "val"  l'emplacement mmoire "offset".
     poke() est un accs de dimension char, alors que pokew() est de dimension word.

     Ces fonctions peuvent tre utilises pour accder au ports
     E/S matriels situs de 0x0000  0x1FFF.


  peek(int offset);
  peekw(int offset);    [ 3.04 + ]

     Lit le contenu de l'emplacement mmoire "offset".
     peek() est un accs de dimension char, alors que peekw() est de dimension word.


  rand();

     renvoie un nombre 16 bits pseudo-alatoire. Depuis la version 1.5, c'est un
     algorithme amlior qui fourni une valeur au hasard.


  srand(int racine);    [ 1.5+ ]

     Change la racine pseudo-alatoire. Vous pouvez utiliser cette fonction pour
     amliorer l'aspect alatoire en donnant une valeur base sur le moment o
     le joueur appuie la premire fois sur start par exemple.

  random(char max);    [ 1.5+ ]

     Renvoie une valeur pseudo-alatoire entre 0 et max - 1;


** FONCTIONS DE LA SOURIS ** (5 Fcts)
----------------------------

  mouse_exists();    [ 1.5+ ]
  
     Vrifie si une souris est installe. renvoie vrai si elle a t dtecte
     pendant l'initialisation.


  mouse_enable();    [ 1.5+ ]

     Active la souris. Renvoie vrai si une souris est effectivement prsente.


  mouse_disable();   [ 1.5+ ]

    teint le support de la souris.
   
     
  mouse_x();    [ 1.5+ ]
  
      Renvoie le delta horizontal de la souris depuis le dernier vsync().
 
     
  mouse_y();    [ 1.5+ ]
  
      Renvoie le delta vertical de la souris depuis le dernier vsync().


** FONCTIONS DE LA BACKUP RAM ** (19 Fcts)
--------------------------------

  bm_check();    [ 1.5+ ]

     Renvoie si la backup ram (BRAM) est disponible.


  bm_free();     [ 1.5+ ]

     Renvoie le nombre d'octets disponibles pour les donnes utilisateurs.
     La quantit ncessaire pour les donnes d'en-tte et pour la terminaison
     de 2 octets sont dj dduites de cette quantit. La valeur renvoye est
     le nombre d'octets libres pour les donnes utilisateurs.


  bm_size();     [ 3.03+ ]

     Renvoie le nombre total d'octets en mmoire backup.
     Cela devrait tre 2KO sur des systmes rels, mais la mmoire backup
     fonctionnera avec une valeur aussi grande que 8KO, au cas o du matriel
     trange existerait.


  bm_rawread(int ptr);     [ 3.03+ ]

     Similaire  peek(), mais manipule les accs  la BRAM.
     Gre automatiquement l'adressage mmoire et la porte d'adressage
     (c.--d. les adresses n'ont pas besoin d'tre dans l'intervalle $8000-$A000)


  bm_rawwrite(int offset, char val);    [ 3.03+ ]

     Similaire  poke(), mais manipule les accs  la BRAM.
     Gre automatiquement l'adressage mmoire et la porte d'adressage
     (c.--d. les adresses n'ont pas besoin d'tre dans l'intervalle $8000-$A000)


  bm_format();   [ 1.5+ ]

     Formate toute la backup ram. Ne formate pas si les donnes sont dj formates.

     En fait, les donnes ne sont pas effaces contrairement  se que rapportent les
     donnes d'en-tte. Vous devriez pouvoir trouver d'anciennes donnes dans la BRAM
     en utilisant des accs en lecture brutes dans le banc de backup ram mais pas
      travers les fonctions habituelles de HuC.

     renvoie l'tat de la backup ram comme dfini dans le fichier huc.h


  bm_exist(char* nom);    [ 1.5+ / 3.03+ ]

     Vrifie si un fichier de backup ram existe.

     Note:  La valeur de retour a chang depuis la version 3.03.

            Avant la 3.03, elle retournait le code de bm_error (0 est OK, != 0 est mauvais),
            mais cela ne correspondait pas au sens du nom de la fonction.

            Depuis la 3.03, elle renvoie VRAI (!= 0) si c'est bon; FAUX (0) si c'est mauvais.
            Le type d'erreur peut tre retrouv  partir de bm_errno().

     Note2: La structure du nom n'est pas seulement un nom ASCII; il commence avec un
            "ID d'unicit" de 2 octets qui est presque toujours 00 00, suivi par 10 octets
            d'un nom ASCII - qui doit tre rempli avec des espaces.


  bm_sizeof(char* nom);   [ 3.03+ ]

     renvoie la taille des donnes utilisateur pour un fichier BRAM avec un nom donne.


  bm_getptr(int ptr, char* nom);   [ 3.03+ ]

     Utile pour parcourir la liste de fichier en BRAM.
     Utilisez "BRAM_STARTPTR" pour la premire itration, et cela retournera le nom de
     cette entre, et le prochain pointeur dans la liste (pour utiliser dans la prochaine
     itration). Lorsque la valeur retourne est 0, il n'y a pas d'entre sur
     l'emplacement actuel (c.--d. ne vous attendez pas  avoir un nom retourn), et pas
     d'entre ultrieur.

     Celle-ci est plus facile  utiliser qu'il n'y parait, alors voici un morceau de code:
        char tampnom[13];
        int ptrsuiv;
        int cmpt_ligne;

        tampnom[12] = 0;
        ptrsuiv = BRAM_STARTPTR;
        cmpt_ligne = 5;

        while (ptrsuiv = bm_getptr(ptrsuiv, tampnom) {
           put_string(&tampnom[2], 2, cmpt_ligne);
           put_number(bm_sizeof(tampnom), 4, 15, cmpt_ligne);
           cmpt_ligne++;
        }


  bm_delete(char* nom);   [ 3.03+ ]

     Efface une entre BRAM avec un nom donne.


  bm_write(char *tamp, char *nom, int offset, int nb);   [ 1.5+ ]

     crit dans le fichier nomm "nom". Les donnes  crire sont dans le tampon "tamp"
     et "nb" octets sont crits depuis l'offset "offset" dans le tampon.
     Renvoie l'tat de la backup ram comme dfini dans le fichier huc.h.


  bm_read(char *tamp, char *nom, int offset, int nb);   [ 1.5+ ]

     Lit "nb" octets depuis le fichier nomm "nom" et le met dans "tamp". je ne suis
     pas sr si l'"offset" est relatif au tampon ou au fichier...
     Renvoie l'tat de la backup ram comme dfini dans le fichier huc.h.


  bm_create(char *nom, int taille);    [ 1.5+ ]

     Cre un nouveau fichier nomme "nom" avec une taille de "taille" octets.
     Renvoie l'tat de la backup ram comme dfini dans le fichier huc.h.


  bm_errno();    [ 1.5+ ]

     renvoie l'tat de la backup ram comme dfini dans le fichier huc.h.
     L'erreur (ou le succs) est relatif  la dernire opration sur la backup ram.


  bm_open(char *nom);     [ 1.5+ ]

     Fonction interne, non destine  une utilisation directe.

  bm_enable();    [ 1.5+ ]

     Fonction interne, non destine  une utilisation directe.

  bm_disable();   [ 1.5+ ]

     Fonction interne, non destine  une utilisation directe.

  bm_checksum(char *fcb);   [ 1.5+ ]

     Fonction interne, non destine  une utilisation directe.

  bm_setup_ptr(char *fcb, char *tamp, int offset, int nb);    [ 1.5+ ]

     Fonction interne, non destine  une utilisation directe.


** FONCTIONS DE CHANES ** (8 Fcts)
--------------------------

  strcpy(char *dest, char *src);
  strncpy(char *dest, char *src, int max);
  memcpy(char *dest, char *src, int nb);

     Copie l'information source vers la zone de destination, comme en 'C' ANSI.


  strcat(char *dest, char *src);
  strncat(char *dest, char *src, int max);

     Enchane la chane source sur la fin de la chane de destination, comme en 'C' ANSI.


  strcmp(char *dest, char *src);
  strncmp(char *dest, char *src, int max);
  memcmp(char *dest, char *src, int nb);

     Compare l'information source  l'information destination, comme en 'C' ANSI.


** FONCTIONS CDROM ** (12 Fcts)
---------------------

  cd_reset();   [3.01+]

     Rinitialise le lecteur CDROM, et arrte le moteur.


  cd_pause();   [3.01+]

     Met le lecteur CDROM en pause pendant la lecture d'une piste audio.
     Probablement trs utile si le joueur fait une pause de jeu en plein
     milieu d'un niveau qui est synchronis  la musique.


  cd_unpause();   [3.02+]

     Poursuit la piste audio du CDROM aprs une pause.


  cd_playtrk(int debut, int fin, int mode);  [3.01+]

     Joue une ou plusieurs piste audio du CDROM dans quelques modes diffrents.
     Cela ne jouera pas la piste "fin", donc "fin" >= "debut" + 1. Si vous souhaitez
     jouer jusqu' la fin du disque (ou si la piste "debut" est la piste finale), alors
     fixez "fin" sur la valeur "CDPLAY_ENDOFDISC".
     Les tentatives de jouer des pistes de donnes ne marcheront pas, et renvoieront un
     code d'erreur non-zro.

      Modes valides          Signification
      -------------          -------------
      CDPLAY_MUTE        Joue du audio sans son (silencieux)
      CDPLAY_REPEAT      Joue du audio, en rptant lorsque la piste s'achve
      CDPLAY_NORMAL      Joue du audio seulement jusqu' la fin de la(des) piste(s)


  cd_playmsf(int debut_m, int debut_s, int debut_f,
             int fin_m,  int fin_s,  int fin_f, int mode);  [3.02+]

     Joue du audio CDROM dans quelques modes diffrents, comme au dessus.
     M/S/F = technique d'indexation minute/seconde/frame
     (Note: il y a 75 frames par seconde)

     (Voir cd_plytrk() pour les valeurs valides de "mode")


  cd_getver();   [3.01+]

     Renvoie le numro de version de la carte systme CDROM en BCD.
     (c.--d. Super System card Japonais = 0x0300, Duo Amricain = 0x301)


  cd_numtrk();   [3.02+]

     renvoie le nombre de pistes sur le CD.


  cd_trktype(int piste);   [3.02+]

     renvoie le type de la piste indique.
     Les valeurs valides sont:
      - CDTRK_AUDIO
      - CDTRK_DATA


  cd_trkinfo(int piste, char * min, char * sec, char * frame);   [3.10+]

     Avec un numro de piste donn:
     - renvoie le type de la piste indique (voir cd_trktype()).
     - Remplie les valeurs min/sec/frame (de dimension char, mais doivent tre envoys
       comme adresses) avec le point de dpart pour la piste.
     - Si "track" == 0, le type de piste est indfini mais min/sec/frame est
       la fin de la dernire piste (c.--d. la fin du disque). 


  cd_loaddata(int ovl_idx, int sector_offset, farptr destaddr, int octets);   [3.10+]

     Lit les donnes depuis le CDROM vers la zone (ou overlay "const" ou d'autre donnes)
     spcifie par "destaddr", pour une longueur de "octets".

     Lisez-le depuis le segment overlay spcifi par "ovl_idx", avec un offset
     de secteur (c.--d. des multiples de 2048 octets) de "sector_offset".

     Des valeurs de retour non-zero indiquent des erreurs.


  cd_loadvram(int ovl_idx, int sector_offset, int vramaddr, int octets);   [3.10+]

     Lit des donnes depuis le CDROM directement vers la RAM vido  l'adresse
     spcifie par "destaddr", pour une longueur de "octets". Il faut noter que
     2 octets sont ncessaires pour remplir un mot VRAM.

     Lisez-le depuis le segment overlay spcifi par "ovl_idx", avec un offset
     de secteur (c.--d. des multiples de 2048 octets) de "sector_offset".

     Des valeurs de retour non-zero indiquent des erreurs.


  cd_execoverlay(int ovl_idx);   [3.10+]

     Charge un programme overlay spcifi par "ovl_idx", et l'excute.

     Si une erreur se produit pendant le chargement, le contexte prcdent (c.--d.
     l'overlay qui tourne jusqu' ce moment) est recharg et une valeur d'erreur est
     renvoye au programme.


** FONCTIONS ADPCM ** (1 Fct)
---------------------

  ad_reset();   [3.02+]

     rinitialise le matriel ADPCM.


** FONCTIONS DE L'ARCADE CARD ** (1 Fct)
--------------------------------

  ac_exists();   [3.02+]

     renvoie VRAI (1) si elle est prsente; FAUX (0) sinon.


