1

        }         }      } // jusqu'à la fin des piles de la lynx... } bon bah la même chose que pour l'autre sauf que je vous le fait on the fly...#include <lynx.h> #include <lynxlib.h> #include <stdlib.h> //je me permets de virer les commentaires ne relevant pas du code pour clarifier le tout  // SPRDEMO2 // Montre comment on utilise SPRPCK pour créer 8 sprites...(2 lignes, 4 colonnes) // Contrairement à SPRDEMO1, les sprites seront seulement sur 2 bits de profondeur de couleur (3 couleurs max par sprite  : noir, cyan et la couleur de fond) //par conséquent, une palette par SCB // ---------------------------------------------------------------------- // // Création des sprites // sprpck -t6 -S040051 -r004002 -p0 -c -z -v yx.bmp > sprites2.txt // // -t6      --> BMP // -Swwwhhh --> 040*051 // -rxxxyyy --> divisé en 4 image sur deux lignes // -p0      --> créée un .OBJ // -c       --> compresse indexes la palette // -z       --> choix automatique de la profondeur de pixel (nous donnera 2) // -v       --> mode verbose (infos à l'écran) // yx.bmp   --> nom du fichier // > sprites2.txt --> sauvegarder la console dans un .TXT // // The created sprites will have a 2bit colour depth // Here is a part of sprites2.txt: // (You have to insert the linefeeds for the correct display of the Pixel-table) /****************** Tile nr: 1    0|   1|   2|   3|   4|   5|   6|   7|   8|   9|  10|  11|  12|  13|  14|  15| ----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+  212|1470|   0|   0|   0|   0|   0|   0|   0|   0|   0|   0|   0|   0| 358|   0| Pixel sum: 2040 Colors used: 3 Index table: 01------------2- Written: yx000000.obj  ******************/ // Il faut comparer la table d'index de chaque image pour créer la table sprndx // // 3 couleurs par image, dans cet exemple les couleurs 0 et 2 sont les mêmes 1 est // celle spécifique à l'image et 3 n'est pas utilisée char sprndx[2*4][2] = {{0x01,0xe0},{0x03,0xe0},{0x02,0xe0},{0x04,0xe0},                        {0x09,0xe0},{0x0b,0xe0},{0x0a,0xe0},{0x0c,0xe0}}; // Déclarations des externes: // Première ligne extern char yx000000[]; extern char yx000001[]; extern char yx000002[]; extern char yx000003[]; // Seconde ligne extern char yx001000[]; extern char yx001001[]; extern char yx001002[]; extern char yx001003[]; char *sprtab[2][4] = {{yx000000, yx000001, yx000002, yx000003},                       {yx001000, yx001001, yx001002, yx001003}}; extern char SCB1[]; // la définition du sprite #asm          _SCB1     dc.b $40,$10,$20           dc.w 0,0           dc.w 0,0,$100,$100           dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef ; la compression de pallette nous interdit d'utiliser la même palette d'un sprite sur l'autre #endasm // The colour palette #include "yx.pal" /*********************/ /* wait for a button */ /*********************/ uchar WaitButton() {    uchar key;    while ( !(key = joystick))       ;    /* on attends que le bouton soit relâché... */    while ( joystick )       ;    return key; } /*********************/ /* main              */ /*********************/ main() { register uchar x,y;   CLI; //on autorise les interruptions   SetBuffers(0x9000,0,0); // on définit les buffers vidéo   _SetRGB(pal);                         // On charge la palette   for (;; ) //(boucle infinie)      {      /*******************************************************       affiche les sprites 2bit avec la même palette globale :      *******************************************************/      // Affecte les couleurs par défaut aux entrées de palette:      SCB1[15] = 0x01;      SCB1[16] = 0x23;      DrawFBox(0, 0, 160, 102, 15);      // écran blanc...      for (y=0; y<2; ++y)                // 2 lignes         {         for (x=0; x<4; ++x)             // 4 colonnes            {            SCBX(SCB1) = 40*x;           // position = largeur * numéro de sprite sur la ligne            SCBY(SCB1) = 51*y;           //            longeur * numéro de ligne            SCBDATA(SCB1) = sprtab[y][x];// sélectionne le sprite à afficher            DrawSprite(SCB1);            // affiche            WaitButton();                // attends un bouton            }         }      /*******************************************************************      pareil mais avec leur propres palettes      *******************************************************************/      // "Clear" screen:      DrawFBox(0, 0, 160, 102, 15);      // écran blanc...      for (y=0; y<2; ++y)                // 2 lignes         {         for (x=0; x<4; ++x)             // 4 colonnes            {            // On va chercher les couleurs de sprndx pour les affecter à SCB1 (offset 15 et 16 qui corresmpondent à la couleur bit 0 et bit1)            SCB1[15] = sprndx[4*y+x][0];            SCB1[16] = sprndx[4*y+x][1];            SCBX(SCB1) = 40*x;           // position = largeur * numéro de sprite sur la ligne            SCBY(SCB1) = 51*y;           //            longeur * numéro de ligne            SCBDATA(SCB1) = sprtab[y][x];// sélectionne le sprite à afficher            DrawSprite(SCB1);            // affiche            WaitButton();                // attends un bouton    
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

2

désolé pour la couleur, le bug est en cours de résolution smile
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

3

Excellent Vince,
merci beaucoup c'est très clair smile top

C'était justement un des programmes que j'avais pas trop bien compris, il faut dire aussi que je me suis surtout intéressé aux controles.

Maintenant ça marche bien l'affichage du code smile
Previously known as Damdam