Aussi, il y a des choses qui ne sont pas claires pour moi :
- à quoi sert cette ligne : SetBuffers(0x9000,0,0);
- comment fonctionne ceci : _SetRGB(pal); ? Je l'ai bien trouvé dans lynxlib.h mais comme je ne m'y connais pas trop en programmation je n'ai pas été plus loin.
#include <lynx.h> #include <lynxlib.h> #include <stdlib.h> // Bug dans cc65? Besoin d'instructions avant les commentaires? // SPRDEMO1 de Matthias Domin (http://http://home.t-online.de/home/Matthias.Domin/lynx_eng.htm) // 1er Avril 2000 // traduction et ajout de commentaires par D@md@m // 13 Juin 2003 // Montre l'utilisation de SPRPCK pour créer 8 sprites (2 lignes et 4 colonnes) // Tous les sprites partagent les mêmes index de palette de couleurs // // ---------------------------------------------------------------------- // // Crée les 8 sprites en lançant SPRPCK avec ces paramètres : // sprpck -t6 -S040051 -r004002 -p0 yx.bmp // // -t6 --> la source est un fichier MS Windows BMP // -Swwwhhh --> grand S, définit la largeur et la taille du sprite créé (w: largeur ; h: hauteur) // -rxxxyyy --> découpe l'image source en yyy*xxx sprites (de taille -Swwwhhh) // -p0 --> crée des fichiers OBJ à partir des fichiers SPR // yx.bmp --> le fichier source est un BMP de 160*102 pixels // // Les sprites ainsi créé auront une profondeur de couleur de 4 bits // Accès aux 8 sprites créés: // Les 4 sprites de la 1ère ligne extern char yx000000[]; extern char yx000001[]; extern char yx000002[]; extern char yx000003[]; // Les 4 sprites de la 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[]; #asm _SCB1 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 ; Puisque nous n'avons pas employé -C en lançant SPRPCK ; nous pouvons employer les mêmes index de palette de couleurs pour tous les sprites dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef #endasm // La palette de couleur #include "yx.pal" /***********************/ /* Attente d'un bouton */ /***********************/ uchar WaitButton() { uchar key; while ( !(key = joystick)) ; /* attend que le bouton soit relaché */ while ( joystick ) ; return key; } /***********************/ /* programme principal */ /***********************/ main() { register uchar x,y; // demande au compilateur que les variables déclarées // soient placées dans un registre du processeur CLI; // autorise les interruptions SetBuffers(0x9000,0,0); _SetRGB(pal); // Définit la palette de couleurs for (;;) { DrawFBox(0, 0, 160, 102, 15); // La couleur 15 est le blanc for (y=0; y<2; ++y) // 2 lignes { for (x=0; x<4; ++x) // 4 colonnes { SCBX(SCB1) = 40*x; // coordonnées x du sprite à afficher SCBY(SCB1) = 51*y; // coordonnées y du sprite à afficher SCBDATA(SCB1) = sprtab[y][x]; // sprite DrawSprite(SCB1); // affiche le sprite WaitButton(); } } } // boucle infinie }
Edit : j'ai remplacé les "tuiles" par sprites
