Close2
philip-lynxOn the 2010-10-14 at 09:24pm
Bonsoir,

je souhaite adapter un jeu que j'ai fais avec The game factory il y a quelques années, Glob shoot, sur console:
glob01grand.gif
glob02grand.gif


Pour afficher l'animation de l'hélice du shiplayer, j'ai fait une petite planche de sprite, 6 images de l'hélice en mouvement, chacune d'une taille de 8*22:
tromb Fichier joint : sprite1.bmp
tromb Fichier joint : sprite2.bmp
Mais j'ai désactivé les ligné inspiré d'un source sprdemo3.c car je n'y arrive pas :
source sur ce site : http://www.mdgames.de/lynx_eng.htm

/* Glob Shoot - LYNX 14/10/2010 clip d'une image 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 #define SC BSTRETC H(a) (*(uint *)((a)+15)) // déformation, macro #define SC BTILT(a) (*(uint *)((a)+17)) // déformation, macro char SCREEN[8160] at (MEMTOP-16320); char RENDER[8160] at (MEMTOP-8160); extern char fond1[]; // ecran titre extern 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 // déclaration des objets sprites qui seront linkés extern char sprite1[]; // moteur à hélice (6 images d'une taille de 8*22 chacunes, placées de gauche à droite) extern char sprite2[]; // coque (taille: 30*24) // A partir du sprite1, je souhaite obtenir 6 images, de 0 à 5, du moteur à élice : // clip du sprite 1 : lignes suivantes désactivées car bug //extern char sprite1000000[]; //extern char sprite1000001[]; //extern char sprite1000002[]; //extern char sprite1000003[]; //extern char sprite1000004[]; //extern char sprite1000005[]; //char *sprtab[5] = {sprite1000000, sprite1000001, sprite1000002, sprite1000003, // sprite1000004, sprite1000005}; extern char SCBsprite1[]; // déclaration d'un nouveau controleur de sprite, moteur à hélice extern char SCBsprite2[]; // déclaration d'un nouveau controleur de sprite, coque #asm _SCBsprite1 dc.b $c7,$10,$20 dc.w _SCBsprite2,_sprite1 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef _SCBsprite2 dc.b $c7,$10,$20 dc.w 0, _sprite2 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef #endasm // variavle (int = 2 octets ; char = 1 octet) int posx,posy; int i; // 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 (16 couleurs). DrawFBox(0,0,160,102,0); SCBX(SCB) = 0; SCBY(SCB) = 0; SCBDATA(SCB) = fond1; // coordonnées X et Y du shiplayer: moteur à hélice : SCBX(SCBsprite1) = 0; SCBY(SCBsprite1) = 0; SCBDATA(SCBsprite1) = sprite1; posx = 50; posy = 50; // coordonnées X et Y du shiplayer: coque : SCBX(SCBsprite2) = 50+8; SCBY(SCBsprite2) = 50+2; SCBDATA(SCBsprite2) = sprite2; // posx = 50; // posy = 50; for( ; ; ) { DrawSprite(SCB); // affichage fond1 if (joystick & JOY_RIGHT) posx++; // direction Droite if (posx>112) posx=112; if (joystick & JOY_LEFT) posx--; // direction Gauche if (posx<0) posx=0; if (joystick & JOY_UP) posy--; // direction Haut if (posy<0) posy=0; if (joystick & JOY_DOWN) posy++; // direction Bas if (posy>80) posy=80; // shiplayer: moteur à hélice (6 images d'une taille de 8*22 chacunes) SCBX(SCBsprite1) = posx; SCBY(SCBsprite1) = posy; // clip du sprite 1 : lignes suivantes désactivées // SCBDATA(SCBsprite1) = sprtab[t%5] // if (key == BUTTON_OPTION1) // { // if (t==0) // t = 4*9; // --t; // } // if (key == BUTTON_OPTION2) // { // if (t==4*9-1) // t = -1; // ++t; // } DrawSprite(SCBsprite1); // shiplayer: coque SCBX(SCBsprite2) = posx+8; SCBY(SCBsprite2) = posy; DrawSprite(SCBsprite2); Vsync(); SwapBuffers(); } }