24Fermer26
philip-lynxLe 04/11/2010 à 13:35
J'ai compris comment chainés les sprites grin
Maintenant, je me demande si ma méthode, pour cloner romeo, ne pourrai être amélioré ? loupe

exe : tromb Fichier joint : romeo02.o
/* Clonage/liste chainée version 0.2 - LYNX 04/11/2010 LYNX-image */ #include <stdlib.h> #include <lynx.h> #include <lynxlib.h> #include "inc\fond1.pal" // Ceci sert à inclure le fichier palette généré par sprpck /* LYNX-specific #defines: */ #define JOY_RIGHT 0x10 #define JOY_LEFT 0x20 #define JOY_DOWN 0x40 #define JOY_UP 0x80 #define BUTTON_OPTION1 0x08 #define BUTTON_OPTION2 0x04 #define BUTTON_INNER 0x02 #define BUTTON_OUTER 0x01 #define BUTTON_PAUSE 0x01 char SCREEN[8160] at (MEMTOP-16320); char RENDER[8160] at (MEMTOP-8160); // ------------------------------------ extern char fond1[]; char SCB[]; #asm _SCB dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef #endasm // ------------------------------------ //char romeo[]; // extern char om000000[]; extern char om000001[]; extern char om000002[]; extern char om000003[]; extern char om000004[]; extern char om000005[]; char *romeotab[6] = {om000000, om000001, om000002, om000003, om000004, om000005}; char SCBromeo[]; // déclaration d'un nouveau controleur de sprite char SCBromeo2[]; // déclaration d'un nouveau controleur de sprite char SCBromeo3[]; // déclaration d'un nouveau controleur de sprite #asm _SCBromeo dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBromeo2 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBromeo3 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef #endasm // ------------------------------------ int posx,posy; int i; int tempa,aromeo,drap1; // assembler vertical retrace syncronisation routine void Vsync() { #asm vretrace: lda $fd0a bne vretrace #endasm } /************************************************************************** ** ** ** ** **************************************************************************/ char main() { InitIRQ(); CLI; SetBuffers(SCREEN, RENDER ,0); /* set the palette */ SetRGB(pal); // Ceci sert à changer la palette de la Lynx. //DrawFBox(0,0,160,102,0); SCBX(SCB) = 0; SCBY(SCB) = 0; SCBDATA(SCB) = fond1; SCBNEXT(SCB) = SCBromeo; // chainage de sprite SCBX(SCBromeo) = 0; SCBY(SCBromeo) = 0; SCBDATA(SCBromeo) = romeotab[0%6]; SCBNEXT(SCBromeo) = SCBromeo2; // chainage de sprite SCBX(SCBromeo2) = 52; SCBY(SCBromeo2) = 26; SCBDATA(SCBromeo2) = romeotab[0%6]; SCBNEXT(SCBromeo2) = SCBromeo3; // chainage de sprite SCBX(SCBromeo3) = 104; SCBY(SCBromeo3) = 52; SCBDATA(SCBromeo3) = romeotab[0%6]; /************************************************************************** ** BOUCLE PRINCIPALE ** **************************************************************************/ for( ; ; ) { // position X et Y du grand sprite pour le fond : SCBX(SCB) = posx; SCBY(SCB) = posy; if (joystick & JOY_RIGHT) // direction Droite posx++; if (joystick & JOY_LEFT) // direction Gauche posx--; if (joystick & JOY_UP) // direction Haut posy--; if (joystick & JOY_DOWN) // direction Bas posy++; if (posx<-160) posx=-160; // limit va à gauche if (posx>0) posx=0; // limit va à gauche if (posy>0) posy=0; // limit haut if (posy<-102) posy=-102; // limit bas // animation de romeo if (drap1==0) { ++tempa; // animation de romeo if (tempa>40) {drap1=1;tempa=0;} } if (drap1==1) { ++tempa; // animation de romeo if (tempa>10) { tempa=0;++aromeo; if (aromeo>5) {aromeo=0;drap1=0;} } } // romeo 1 : SCBX(SCBromeo) = 0; SCBY(SCBromeo) = 0; SCBDATA(SCBromeo) = romeotab[aromeo%6]; // romeo 2 : SCBX(SCBromeo2) = 52; SCBY(SCBromeo2) = 26; SCBDATA(SCBromeo2) = romeotab[aromeo%6]; // romeo 3 : SCBX(SCBromeo3) = 104; SCBY(SCBromeo3) = 52; SCBDATA(SCBromeo3) = romeotab[aromeo%6]; // Affichage des sprites chainé: DrawSprite(SCB); Vsync(); SwapBuffers(); } /************************************************************************** ** FIN de la BOUCLE PRINCIPALE ** **************************************************************************/ }