Boo
@_ö
(10:59)  Bienvenue ! - Inscrivez vous pour poster ! -
@Boo + 1 inconnu(s)

Login :  Mot de passe :      Se souvenir de moi.  Mot de passe perdu ?
/!\:: Cliquez ici pour vous inscrire et poster, créer des sujets ou des forums ! ::/!\
 « - 1/2 - Suivant » :: Pages
 Index » Forum Atari :: Vince//Nymphodusse//piwi » Developpeurs Lynx (33r) » Fission
./Post de départ - Fission
26.09.2010 - 493
20:44  Beaupixel - Posté : 25-11-2010  M

Fission est un casse-brique, la 0.1 est la toute première version "jouable", donc pas encore de brique à l'écran. #fatigue# Et comme d'hab, console tenu à la verticale, bon test. :)

#tromb# Fichier joint : fission_01.o
Et là un peu de lecture :
/* 
 Fission (casse brique) 0.1 - LYNX - kit BLL (newcc65) 
 24/11/2010 
 console tenu à la verticale 
 Handy/Option/Rotate Screen(Right) 
 D-pad et bouton pause 
 LYNX - video game */ 
  
#include <stdlib.h> 
#include <lynx.h> 
#include <lynxlib.h> 
//{ 
extern void silence(); 
extern void abcmusic(); 
extern void update_music(); 
 
char abcmusic0[]; 
char abcmusic1[]; 
char abcmusic2[]; 
char abcmusic3[]; 
char abcmenu1[]; 
char abcmenu2[]; 
char abcbric[]; 
char abcaptvir[]; 
char abcboum[]; 
char abcpanne[]; 
char abces[]; 
 
#asm 
	xref _abcmenu1 
	xref _abcmenu2 
	xref _abcbric 
	xref _abcaptvir 
	xref _abcboum 
	xref _abcpanne 
	xref _abces 
	xref _abcmusic0 
	xref _abcmusic1 
	xref _abcmusic2 
	xref _abcmusic3 
_abcmenu1 
	dc.b "O2X7I1V32T20R54H7K8" 
	dc.b "|:C4" 
	dc.b 0 
_abcmenu2 
	dc.b "O3X7I1V16T20R54H7K12" 
	dc.b "|:c2" 
	dc.b 0 
_abcbric 
	dc.b "O4X7I1V16T20R54H7K12" 
	dc.b "|:C1" 
	dc.b 0 
_abcaptvir 
	dc.b "O2X15I1V32T1R14H6K30" 
	dc.b "|:C4D4C4E4D4C4D4" 
	dc.b 0 
_abcboum 
	dc.b "O2X248I1V16T50R80H2K2" 
	dc.b "|:C2" 
	dc.b 0 
_abcpanne 
	dc.b "O4X6I1V127T6R5H6K6" 
	dc.b "|:C4D4C4E4D4C4D4E4C4" 
	dc.b 0 
_abces 
	dc.b "O4X6I1V127T6R16H2K3" 
	dc.b "|:C2D2C2E2D2C2D2E2C2" 
	dc.b 0 
_abcmusic0 
	dc.b "O2X3I1V70T20R54H2K1" 
	dc.b "|:C4O3T2C4" 
	dc.b 0 
_abcmusic1 
	dc.b "O2X7I0V45T20R80H8K1" 
	dc.b "|:C4D4E4F4" 
	dc.b "C4D4E4F4" 
	dc.b "c4B4A4E4" 
	dc.b "c4B4A4E4" 
	dc.b "E4F4G4A4" 
	dc.b "E4F4G4A4" 
	dc.b "C4D4E4F4" 
	dc.b "C4D4E4F4:" 
	dc.b 0 
_abcmusic2 
	dc.b "O1X7I0V45T20R40H2K3" 
	dc.b "zzzzzzzz" 
	dc.b "|:CDEEDEFFEFGEFDGG" 
	dc.b "I1CDEEDEFFEFGEFDCC" 
	dc.b "I0cBAABAGGAGFFEDEE" 
	dc.b "cBAABAGGAGFFEDCC" 
	dc.b "ECDDFDEEGEFGABcc" 
	dc.b "ECDDFDEEGEFGABcc" 
	dc.b "CDEEDEFFEFGEFDGG" 
	dc.b "CDEEDEFFEFGEFDCC:" 
	dc.b 0 
_abcmusic3 
	dc.b "O2X7I0V45T20R80H8K1" 
	dc.b "z4z4z2" 
	dc.b "|:C4D4E4F4" 
	dc.b "C4D4E4F4" 
	dc.b "c4B4A4E4" 
	dc.b "c4B4A4E4" 
	dc.b "E4F4G4A4" 
	dc.b "E4F4G4A4" 
	dc.b "C4D4E4F4" 
	dc.b "C4D4E4F4:" 
	dc.b 0 
#endasm 
//} 
 
/* 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_LEFT		0x02 
#define BUTTON_RIGHT	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); 
 
char pali[]={ 
	0x00,0x0F,0x02,0x03,0x0A,0x04,0x05,0x06,0x07,0x0B,0x08,0x09,0x04,0x0B,0x0C,0x01, 
	0x00,0xFF,0x22,0x33,0xAA,0x44,0x55,0x66,0x77,0x00,0x88,0x99,0x53,0xBB,0xCC,0x11}; 
char palg[]={ 
	0x00,0x0F,0x0A,0x00,0x03,0x05,0x08,0x0A,0x0C,0x0E,0x0D,0x00,0x04,0x03,0x02,0x00, 
	0x00,0xFF,0xF0,0x0F,0x3F,0x5F,0x8F,0xAF,0xCF,0xEF,0x28,0xF8,0x53,0x63,0x52,0x21}; 
/***************************************************************************** 
**  Ci-dessous, le contenu du fichier batchfile pour l'image imole.bmp      ** 
                                                                            ** 
set image01=imole.bmp 
SPRPCK -t6 -S072072 -r001001 -a036036 -p0 %image01% 
cmd 
                                                                            ** 
**  Le point d'action de l'image imole est mis au centre de celle-ci,       ** 
**  72/2 = 36 (-a036036). Le but de la manoeuvre est de réaliser un zoom    ** 
**  correctement.                                                           ** 
*****************************************************************************/ 
 
// Ci-dessous, le contenu du fichier batchfile pour l'image imole.bmp 
 
// set image01=imole.bmp 
// SPRPCK -t6 -S072072 -r001001 -a036036 -p0 %image01% 
// cmd 
 
// ci-dessus, le point d'action de l'image imole est mis au centre de celle-ci, 72/2 = 36 (-a036036). 
 
extern char ipause[]; // image game over, d'une taille de 13*43; 
extern char ititre[];  // image titre, d'une taille de 15*49; 
extern char iname[];  // image nom/prénom de auteur, d'une taille de 93*9; 
extern char imole[];  // image molecule, d'une taille de 72*72; 
char SCB[]; 
#asm          
_SCB      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 
// ------------------------------------ 
extern char fondg[]; // image fond game, d'une taille de 160*102; 
char SCBg[]; 
#asm          
_SCBg      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 
// ------------------------------------ 
extern char pushup[]; // image appuyez sur haut, d'une taille de 48*35; 
char SCBp[]; 
#asm          
_SCBp      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 
// ------------------------------------ 
extern char raquet[]; // image raquette, d'une taille de 8*24; 
char SCBr[]; 
#asm          
_SCBr      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 
// ------------------------------------ 
char chiffres[]; //  
 
// clip du sprite chiffres: 0123456789.LEV 
extern char bc000000[]; 
extern char bc000001[]; 
extern char bc000002[]; 
extern char bc000003[]; 
extern char bc000004[]; 
extern char bc000005[]; 
extern char bc000006[]; 
extern char bc000007[]; 
extern char bc000008[]; 
extern char bc000009[]; 
extern char bc000010[]; 
extern char bc000011[]; 
extern char bc000012[]; 
extern char bc000013[]; 
 
char *chiffrestab[14] = {bc000000, bc000001, bc000002, bc000003, bc000004, 
                         bc000005, bc000006, bc000007, bc000008, bc000009, 
                         bc000010, bc000011, bc000012, bc000013}; 
char SCBchiffres1[]; // déclaration d'un nouveau controleur de sprite 
char SCBchiffres2[]; // déclaration d'un nouveau controleur de sprite 
char SCBchiffres3[]; // déclaration d'un nouveau controleur de sprite 
#asm 
_SCBchiffres1     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 
; 
_SCBchiffres2     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 
; 
_SCBchiffres3     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 
// ------------------------------------ 
// ------------------------------------ 
char fleche[]; //  
 
// clip du sprite fleches 
extern char fd000000[]; 
extern char fd000001[]; 
extern char fd000002[]; 
extern char fd000003[]; 
extern char fd000004[]; 
extern char fd000005[]; 
extern char fd000006[]; 
 
char *fdtab[7] = {fd000000, fd000001, fd000002, fd000003, fd000004, 
                   fd000005, fd000006}; 
char SCBfd[]; // déclaration d'un nouveau controleur de sprite 
#asm 
_SCBfd     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 
// ------------------------------------ 
extern char fball[]; // image raquette, d'une taille de 8*24; 
char SCBball[]; 
#asm          
_SCBball      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 
// ------------------------------------ 
// ------------------------------------ 
char fbriq[]; //  
 
// clip du sprite brique, d'une taille de 6*14, normale, dure et incassable. 
extern char br000000[]; 
extern char br000001[]; 
extern char br000002[]; 
 
char *brtab[3] = {br000000, br000001, br000002}; 
char SCBbr[]; // déclaration d'un nouveau controleur de sprite 
#asm 
_SCBbr     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,level,score,compteur,xpush,ypush,relach; 
int i; 
char tempa,tempb,tempc,tempd,tempe,etape,filife,drap1,gspause,gsblip,mhaut,mbas; // de -128 à 127 
int molescx,molescy,gmole; 
int atest,unite,dizaine,centaine; 
 
// ydirf --> déplacer légérement la flèche. 
// dirf --> direction fleche de 0 à 6, mais aussi direction Y de la balle (-3 -2 -1 0 +1 +2 +3) (ici gauche/droite car LYNX verticale). 
// bdirx --> direction X de la balle (ici haut/bas car le jeu se joue la LYNX tenu à la verticale). 
char ydirf,dirf,bdirx,speedX,oboucl,basar;  
int balldirX,balldirY; 
int yplayer; 
 
// assembler vertical retrace syncronisation routine 
void Vsync()  
{ 
#asm 
vretrace: 
	lda $fd0a 
	bne vretrace 
#endasm 
} 
 
// Hors de l'assembleur, point de salut... 
// L'utilisation de la procedure suivante, lors de l'écran d'action, 
// fait ramer le jeu. 
 
void Fchiffres(clx,cly,classe) 
int clx,cly,classe; 
 { 
	SCBDATA(SCBchiffres1) = chiffrestab[classe%14];  
	SCBX(SCBchiffres1) = clx; 
	SCBY(SCBchiffres1) = cly;   
	DrawSprite(SCBchiffres1);  
 } 
 
/************************************************************************** 
**                                                                       ** 
**                                                                       ** 
**************************************************************************/ 
char main() 
{ 
  InitIRQ(); 
  CLI; 
 
  SetBuffers(SCREEN, RENDER ,0); 
 
 
 
  posx=76;   
  posy=47;   
  xpush=-48; 
  ypush=34; 
//  SCBX(SCB) = 60; 
//  SCBY(SCB) = 42; 
//  SCBDATA(SCB) = ititre; 
 
// 1er sprite chainé (fond + raquette) 
  SCBX(SCBg) = -200; 
  SCBY(SCBg) = 0; 
  SCBDATA(SCBg) = fondg; 
  SCBNEXT(SCBg) = SCBp; // chainage de sprite info commande 
  SCBX(SCBp) = xpush; 
  SCBY(SCBp) = ypush; 
  SCBDATA(SCBp) = pushup; 
//SCBCTL0(SCBp)= 0x001;//99; // pas glop 
  SCBNEXT(SCBp) = SCBr; // chainage de sprite raquette 
  SCBX(SCBr) = -200; 
  SCBY(SCBr) = 0; 
  SCBDATA(SCBr) = raquet;   
  SCBNEXT(SCBr) = SCBball; // chainage de sprite balle 
  SCBX(SCBball) = -200; 
  SCBY(SCBball) = 0; 
  SCBDATA(SCBball) = fball;   
  SCBNEXT(SCBball) = SCBfd; // chainage de sprite fleche directionnelle 
  SCBX(SCBfd) = 0; 
  SCBY(SCBfd) = 0; 
  SCBDATA(SCBfd) = fleche;   
 
  
  
  SCBX(SCBbr) = -200; 
  SCBY(SCBbr) = 0; 
  SCBDATA(SCBbr) = fbriq;  
 
  
// 3ème sprite chainé (score) 
  SCBX(SCBchiffres1) = 0; 
  SCBY(SCBchiffres1) = 0; 
  SCBDATA(SCBchiffres1) = chiffres;     
  SCBNEXT(SCBchiffres1) = SCBchiffres2; // chainage de sprite 
  SCBX(SCBchiffres2) = 0; 
  SCBY(SCBchiffres2) = 0; 
  SCBDATA(SCBchiffres2) = chiffres;   
  SCBNEXT(SCBchiffres2) = SCBchiffres3; // chainage de sprite 
  SCBX(SCBchiffres3) = 0; 
  SCBY(SCBchiffres3) = 0; 
  SCBDATA(SCBchiffres3) = chiffres;    
 
/************************************************************************** 
**                       BOUCLE PRINCIPALE                               ** 
**************************************************************************/     
   
  for( ; ; ) 
{ 
update_music(); // petite subtilité de la gestion sonore 
 
	++gsblip; // economie ressource machine --> certaines des conditions n'ont pas besoin d'être lu par la LYNX à chaque boucle. 
	if (gsblip==5)  
	{ 
	gsblip=1; 
 
	if (switches & BUTTON_PAUSE) 
		{ 
		if (gspause==0) {gspause=1;silence();abcmusic(0,abcaptvir);}  
		}  
	if (!(switches & BUTTON_PAUSE)) 
		{ 
		if (gspause==1) gspause=2; 
		} 
 
	if (switches & BUTTON_PAUSE) 
		{ 
		if (gspause==2) gspause=3; 
		} 
 
	if (!(switches & BUTTON_PAUSE)) 
		{ 
		if (gspause==3) gspause=0; 
		} 
	} 
 
 
 
/************************************************************************** 
**************************************************************************/  
 if (etape>=0 & etape<=4)  // écran titre 
	{  
  /* set the palette */ 
  SetRGB(pali); //  Ceci sert à changer la palette de la Lynx.  
  DrawFBox(0,0,160,102,0); // couleur 0 (noire) 
 
	SCBX(SCBr) = -200; // raquette mis hors de l'écran 
	SCBX(SCBball) = -200; // balle mis hors de l'écran 
	SCBX(SCBfd) = -200; // fleche directionnelle mis hors de l'écran 
	 
	 
	//SCBX(SCB) = 78-(molescx/gmole);SCBY(SCB) = 42-(molescy/gmole) 
 
	//SCBX(SCB) = SCBX(SCB) - (molescx/6); SCBY(SCB) = SCBY(SCB) - (molescy/6); 
	SCBX(SCB) = 78; SCBY(SCB) = 52; 
	SCBDATA(SCB) = imole; 
 
if (gspause==0) 
	{ 
	if (etape==4)	{ 
					if (molescx>256)	molescx=molescx-4; 
					if (molescy>128)	molescy=molescy-8; 
					if (molescx<257 & molescy<129)	{molescx=256;molescy=128;etape=2;mhaut=4;} 
					} 
	if (etape==3)	{ 
					if (molescx>128)	molescx=molescx-8; 
					if (molescy>256)	molescy=molescy-4; 
					if (molescx<129 & molescy<257)	{molescx=128;molescy=256;etape=2;mbas=4;} 
					} 
	if (etape==2)	{ 
					if (molescx<384)	molescx=molescx+(4+mbas); 
					if (molescy<384)	molescy=molescy+(4+mhaut); 
					if (molescx>383 & molescy>383) 
						{ 
						molescx=384;molescy=384;++tempc;mhaut=0;mbas=0; 
						if (tempc==3)	tempc=1; 
						if (tempc==1)	etape=3; 
						if (tempc==2)	etape=4; 
						} 
					} 
	if (etape==1)	{ 
					++tempb; 
					if (tempb>64)	{ 
									tempb=0;etape=2; 
									} 
					} 
	if (etape==0)	{ 
					if (molescx<256)	{ 
										molescx=molescx+2;molescy=molescy+2; 
										if (molescx>255) {molescx=256;molescy=256;etape=1;gmole=2;} 
										} 
					} 
	} 
	SCBHS(SCB) = molescx; 
	SCBVS(SCB) = molescy; 		 
	DrawSprite(SCB); // affichage molecule 
	 
	if (etape>0) {SCBHS(SCB) = 256;SCBVS(SCB) = 256;} // remise à 0 echelle des images SCB 
	SCBX(SCB) = 34;	SCBY(SCB) = 2;	SCBDATA(SCB) = iname;	DrawSprite(SCB);   
	SCBX(SCB) = 74;	SCBY(SCB) = 26;	SCBDATA(SCB) = ititre;	DrawSprite(SCB); 
 
 
 
	 
	Fchiffres(6,68,2);  // 2 
	Fchiffres(6,76,0);  // 0 
	Fchiffres(6,84,1);  // 1 
	Fchiffres(6,92,0);  // 0 
 
	SCBDATA(SCBp) = pushup; 
	SCBX(SCBp) = xpush;//48; 
	SCBY(SCBp) = ypush; 
 
	SCBX(SCBg) = -200; // fond zone de jeu 
	//SCBX(SCBp) = xpush; 
	SCBX(SCBr) = -200; // raquette 
		 
	DrawSprite(SCBg); 
		 
	if (gspause==0 & etape>0) 
		{ 
		if (xpush<8)		xpush=xpush+2; // apparition de la bulle info "Push UP" 
		if (xpush>7)//(tempa>24 & etape==0) // petite teporisation avant d'autoriser le joueur de recommencer le jeu. 
			{ 
			xpush=8; 
			++tempa; // bulle info clignote doucement 
			if (tempa>63)	tempa=1; 
			if (tempa>0 & tempa<32)		ypush=34;  
			if (tempa>31)	ypush=-100; 
 
			if (joystick & JOY_RIGHT) 
				{ 
				level=1;//3;//1; 
				tempa=0;tempb=0;etape=10;//xpush=-48;ypush=34;xlvla=160;xlvlb=160;xlvlc=160;xlvld=160;xlvle=160;elvl=0; 
				xpush=-48;ypush=34; 
				score=0;drap1=0; // drap1 agit sur l'affichage du score. 
				filife=3; 
				// bruitage menu : 
				silence(); 
				abcmusic(0,abcmenu1); 
				abcmusic(1,abcmenu2); 
 
				SetRGB(palg); //  Ceci sert à changer la palette de la Lynx.  
				SCBX(SCBg) = 0; // fond zone de jeu 
				SCBX(SCBp) = xpush; 
				relach=1; 
				} 
			}  
		} 
 
	} 
 
/************************************************************************** 
**************************************************************************/  
 if (etape==10)  // ecran level 
	{  
	SCBDATA(SCBp) = pushup; 
	SCBX(SCBp) = xpush;//48; 
	SCBY(SCBp) = ypush; 
	 
	SCBX(SCBr) = -200; // Coordonnée X de la raquette (ici mis hors de l'écran). 
	DrawSprite(SCBg);	// Affichage fond jeu + info commande + raquette + balle + fleche directionnelle 
	 
	Fchiffres(120,18,11); //L 
	Fchiffres(120,18+8,12); //E 
	Fchiffres(120,18+16,13); //V 
	Fchiffres(120,18+24,12); //E 
	Fchiffres(120,18+32,11); //L 
	 
	unite = level % 10; 
	dizaine = level / 10 % 10; 
	// unité:   
	SCBDATA(SCBchiffres1) = chiffrestab[unite%14]; 
	SCBX(SCBchiffres1) = 120; 
	SCBY(SCBchiffres1) = 50+24;   
	 
	// dizaine:   
	SCBDATA(SCBchiffres2) = chiffrestab[dizaine%14]; 
	SCBX(SCBchiffres2) = 120; 
	SCBY(SCBchiffres2) = 50+16;  	 
	 
	DrawSprite(SCBchiffres1); // Affichage valeur testé		 
	 
	 
	if (relach==1)	{ 
					if (!(joystick & JOY_RIGHT))	{relach=0;} // utile pour vérifier si le joueur n'appui plus sur D-pad haut 
					} 
	 
	if (gspause==0 & xpush<8) xpush=xpush+2; 
	if (gspause==0 & xpush>7)//(tempa>24 & etape==0) // petite teporisation avant d'autoriser le joueur de recommencer le jeu. 
		{ 
		xpush=7; 
		 
 
		++tempa; // bulle info clignote doucement 
		if (tempa>63)  tempa=1; 
		if (tempa>0 & tempa<32)  ypush=34;  
		if (tempa>31)  ypush=200; 	 
	 
	 
	 
		if (relach==0)	{ 
						if (joystick & JOY_RIGHT)	{ 
													//level=1;//3;//1; 
													tempa=0;tempb=0;etape=20,yplayer=39;//xpush=-48;ypush=34;xlvla=160;xlvlb=160;xlvlc=160;xlvld=160;xlvle=160;elvl=0; 
													xpush=-48;ypush=34; 
													dirf=3;ydirf=6; 
								//score=0;drap1=0; // drap1 agit sur l'affichage du score. 
			//goship=0; posx=-40; posy=39; 
								//filife=3; 
			//govil=0;goroch=0;tyroch=0;chroch=0; 
								//SCBDATA(SCB) = fondlvl; 
			// bruitage menu : 
													silence(); 
													abcmusic(0,abcmenu1); 
													abcmusic(1,abcmenu2); 
 
 
//			// bruitage panne sèche : 
//			silence(); 
//			abcmusic(3,abcpanne); 
 
								//SetRGB(palg); //  Ceci sert à changer la palette de la Lynx.  
								//SCBX(SCBg) = 0; // fond zone de jeu 
													SCBX(SCBp) = xpush; 
								//SCBX(SCBr) = 200; // raquette 
								 
 
													relach=1; // utile pour vérifier si le joueur n'appui plus sur D-pad haut 
								 
													Vsync(); 
													SwapBuffers(); 
												} 
						} 
		}  
	 
	 
	} 
 
/************************************************************************** 
**************************************************************************/  
 if (etape==20)  // écran jeu 1 (fleche directionnelle) 
	{  
	// raquette : 
	SCBDATA(SCBr) = raquet; 
	SCBX(SCBr) = 32; 
	SCBY(SCBr) = yplayer; 
	 
	// balle : 
	SCBX(SCBball) = 40; 
	SCBY(SCBball) = 48; 
	 
	// fleche directionnelle : 
	SCBDATA(SCBfd) = fdtab[dirf%7];  
	SCBX(SCBfd) = 39+8; 
	SCBY(SCBfd) = (42-6)+ydirf; 
 
	if (gspause==0) 
		{ 
		if (tempa>0) {--tempa;} 
 
		if (joystick & JOY_DOWN)	 
			{ 
			if (tempa==0 & dirf<6)	{++dirf;tempa=16;++ydirf;++ydirf;} 
			} 
		if (joystick & JOY_UP) 
			{ 
			if (tempa==0 & dirf>0)	{--dirf;tempa=16;--ydirf;--ydirf;} 
			} 
 
		if (relach==1) 
			{ 
			if (!(joystick & JOY_RIGHT))	{relach=0;} // utile pour vérifier si le joueur n'appui plus sur D-pad haut 
			} 
		if (joystick & JOY_RIGHT) 
			{ 
			if (relach==0)	{ 
							SCBX(SCBfd) = -200; // fleche directionnelle mis hors de l'écran 
							dirf=dirf-3;bdirx=1; 
							tempa=0;etape=30; 
							balldirX=SCBX(SCBball); 
							balldirY=SCBY(SCBball); 
							} 
			} 
		} 
	DrawSprite(SCBg);	// Affichage fond jeu + info commande + raquette + balle + fleche directionnelle 
	} 
 
/************************************************************************** 
**************************************************************************/  
 if (etape==30)  // écran jeu 2 
	{ 
	if (gspause==0) 
		{ 
		if (dirf<0) // Si la balle se dirige vers la gauche, alors... 
			{ 
			balldirY=balldirY-1; 
			if (dirf==-3)	{speedX=3;} 
			if (dirf==-2)	{speedX=2;} 
			if (dirf==-1)	{speedX=1;} 
			if (balldirY<3)		{balldirY=3;dirf=-dirf;} // cadre gauche 
			} 
		if (dirf==0) // Si la balle se dirige droit devant, alors... 
			{ 
			speedX=0; 
			} 
		if (dirf>0) // Si la balle se dirige vers la droite, alors... 
			{ 
			balldirY=balldirY+1; 
			if (dirf==1)	{speedX=1;} 
			if (dirf==2)	{speedX=2;} 
			if (dirf==3)	{speedX=3;} 
			if (balldirY>93)	{balldirY=93;dirf=-dirf;} // cadre droite (102-6 = 96-3 = 93) 
			} 
			 
		++tempa; 
		if (tempa>speedX) 
			{ 
			tempa=0; 
			if (bdirx==1)	{ 
							balldirX=balldirX+2; // ball monte 
							if (balldirX>154)	{// collision haut du cadre: changement de direction 
												balldirX=154;bdirx=-bdirx; // inverse la direction de la balle 
												if (dirf==0)	{ 
																basar=random()%3; // de 0 à 2 
																--basar;dirf=basar; // -1 ou 0 ou 1 
																}  
												}  
							}  
			if (bdirx==-1)	{ 
							balldirX=balldirX-2;// ball descend 
							if (balldirX>32 & balldirX<40)// collision ball/raquette: changement de direction 
								{ 
								if ((balldirY+1>yplayer-1 & balldirY+1<yplayer+24) | (balldirY+4>yplayer-1 & balldirY+4<yplayer+24)) 
									{ 
									balldirX=40;bdirx=-bdirx; 
									//gauche de la raquette : 
									if ((balldirY+1>yplayer-1 & balldirY+1<yplayer+4) | (balldirY+4>yplayer-1 & balldirY+4<yplayer+4)) 
										{ 
										if (dirf==-1)	{dirf=-3;oboucl=1;}//break; 
										if (dirf==-2)	{dirf=-3;oboucl=1;}  
										 
										if (dirf==1)	{dirf=-2;oboucl=1;}  
										if (dirf==2)	{dirf=-3;oboucl=1;}  
										if (dirf==3)	{dirf=-3;oboucl=1;}  
										 
										if (dirf==0)	{dirf=-2;oboucl=1;}  
										} 
									if (oboucl==1)	{oboucl=0;goto test_finish;} 
									//gauche de la raquette : 
									if ((balldirY+1>yplayer+3 & balldirY+1<yplayer+9) | (balldirY+3>yplayer+4 & balldirY+4<yplayer+9)) 
										{ 
										if (dirf==-1)	{dirf=-2;oboucl=1;} 
										if (dirf==-3)	{dirf=-2;oboucl=1;}  
										 
										if (dirf==1)	{dirf=-1;oboucl=1;}  
										if (dirf==2)	{dirf=-2;oboucl=1;}  
										if (dirf==3)	{dirf=-2;oboucl=1;}  
										 
										if (dirf==0)	{dirf=-1;oboucl=1;}  
										} 
									if (oboucl==1)	{oboucl=0;goto test_finish;} 
									//centre de la raquette : 
									if ((balldirY+1>yplayer+8 & balldirY+1<yplayer+15) | (balldirY+4>yplayer+8 & balldirY+4<yplayer+15)) 
										{ 
										if (dirf==1)	{dirf=0;oboucl=1;}  
										if (dirf==2)	{dirf=1;oboucl=1;}  
										if (dirf==3)	{dirf=2;oboucl=1;}  
										 
										if (dirf==-1)	{dirf=0;oboucl=1;}  
										if (dirf==-2)	{dirf=-1;oboucl=1;} 
										if (dirf==-3)	{dirf=-2;oboucl=1;}  
										} 
									if (oboucl==1)	{oboucl=0;goto test_finish;} 
									//droite de la raquette : 
									if ((balldirY+1>yplayer+14 & balldirY+1<yplayer+20) | (balldirY+4>yplayer+14 & balldirY+4<yplayer+20)) 
										{ 
										if (dirf==1)	{dirf=2;oboucl=1;} 
										if (dirf==3)	{dirf=2;oboucl=1;}  
										 
										if (dirf==-1)	{dirf=1;oboucl=1;}  
										if (dirf==-2)	{dirf=2;oboucl=1;}  
										if (dirf==-3)	{dirf=2;oboucl=1;}  
										 
										if (dirf==0)	{dirf=1;oboucl=1;}  
										} 
									if (oboucl==1)	{oboucl=0;goto test_finish;} 
									//droite de la raquette : 
									if ((balldirY+1>yplayer+19 & balldirY+1<yplayer+24) | (balldirY+4>yplayer+19 & balldirY+4<yplayer+24)) 
										{ 
										if (dirf==1)	{dirf=3;oboucl=1;} 
										if (dirf==2)	{dirf=3;oboucl=1;}  
										 
										if (dirf==-1)	{dirf=2;oboucl=1;}  
										if (dirf==-2)	{dirf=3;oboucl=1;}  
										if (dirf==-3)	{dirf=3;oboucl=1;}  
										 
										if (dirf==0)	{dirf=2;oboucl=1;}  
										} 
									if (oboucl==1)	{oboucl=0;goto test_finish;} 
									}  
								}  
							}  
			}  
			 
test_finish: 
			 
		if (joystick & JOY_DOWN)	{ 
									yplayer=yplayer+2; 
									if (yplayer>75)	{yplayer=75;} // (102-24 = 78-3 = 75) ; 24 = largeur de la raquette 
									} 
		if (joystick & JOY_UP)		{ 
									yplayer=yplayer-2; 
									if (yplayer<3)	{yplayer=3;}  
									} 
		} 
 
	SCBX(SCBball)=balldirX;SCBY(SCBball)=balldirY; // appliquer les variables balldirX et balldirY aux coordonnées de la balle. 
	SCBY(SCBr) = yplayer; 
	 
	// Affichage fond jeu + info commande + raquette + balle + fleche directionnelle : 
	DrawSprite(SCBg); 
 
	} 
	 
/************************************************************************** 
**************************************************************************/  
/* test 
 */  
	//atest=balldirX;//yplayer;//speedX;//dirf;//etape; 
 
	atest=etape;//SCBCTL0(SCBbr); 
	unite = atest % 10; 
	dizaine = atest / 10 % 10; 
	centaine = score / 100 % 10;   
	 
  // unité:   
  SCBDATA(SCBchiffres1) = chiffrestab[unite%14]; 
  SCBX(SCBchiffres1) = 100; 
  SCBY(SCBchiffres1) = 53;   
 
  // dizaine:   
  SCBDATA(SCBchiffres2) = chiffrestab[dizaine%14]; 
  SCBX(SCBchiffres2) = 100; 
  SCBY(SCBchiffres2) = 53-8;  	 
 
  // centaine:   
  SCBDATA(SCBchiffres3) = chiffrestab[centaine%12]; // 0 
  SCBX(SCBchiffres3) = 100; 
  SCBY(SCBchiffres3) = 53-16;    
   
  DrawSprite(SCBchiffres1); // Affichage valeur testé		 
 
 
	 
	 
  //if (etape==2 & gspause>0)  
  if (gspause>0)	{ 
					SCBDATA(SCB) = ipause; 
					SCBHS(SCB) = 256;SCBVS(SCB) = 256;  
					SCBX(SCB) = 73;SCBY(SCB) = 30; 
					DrawSprite(SCB);	 
					} 
  
  Vsync(); 
  SwapBuffers(); 
} 
   
/************************************************************************** 
**                     FIN de la BOUCLE PRINCIPALE                       ** 
**************************************************************************/    
   
 } 


Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./Publicité AdSense
./1
15.01.2007 - 1418
07:53  RYGAR - Posté : 26-11-2010  M

Je suis entrain de finir une mini borne d'arcade avec une lynx à l'intérieur et j'hésitais à en faire aussi une avec l'écran en position vertical car je trouvais qu'il n'y avait pas assez de jeux qui utilisait cette mise en page mais vu tes réalisations je pense que cette petite borne verticale verra bien le jour :)


Mon site sur la LYNX :ZoneLynx
./2
16.06.2001 - 55196
12:02  squalyl - Posté : 26-11-2010  M

c'est obligé d'écrire dans votre compilateur:
void Fchiffres(clx,cly,classe)
int clx,cly,classe;
{
blabla
}

parce que c'est quand même plus facile de faire

void Fchiffres(int clx, int cly, int classe)
{
blabla
}

non? :D


For most people, good enough is near enough. For the few, good enough is never enough.
Nspire wiki
CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES
./3
30.06.2001 - 50024
17:25  Godzil - Posté : 26-11-2010  M

C K&R powered (ie pre ISO)


Proud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-

./4
16.06.2001 - 55196
21:27  squalyl - Posté : 26-11-2010  M

je sais oui, mais je demande si c'est nécessaire ici :D


For most people, good enough is near enough. For the few, good enough is never enough.
Nspire wiki
CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES
./5
26.03.2003 - 6531
21:41  Fadest - Posté : 26-11-2010  M

De mémoire justement, ça marchait pas...
Sinon, on peut tout faire avec des variables globales aussi :o


Devs Jaguar : Project W | S.P.A.C.E
Jeux Lynx : Yastuna The alchemy of cubes | The space incident
./6
16.06.2001 - 55196
21:53  squalyl - Posté : 26-11-2010  M

#trilove#

(ah ok ^^)


For most people, good enough is near enough. For the few, good enough is never enough.
Nspire wiki
CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES
./7
26.09.2010 - 493
13:32  Beaupixel - Posté : 28-11-2010  M

Godzil (./3) :
C K&R powered (ie pre ISO)
une âme charitable pour traduire/décrypter ? #alien#
squalyl (./2) :
c'est obligé d'écrire dans votre compilateur:
void Fchiffres(clx,cly,classe)
int clx,cly,classe;
{
blabla
}

parce que c'est quand même plus facile de faire

void Fchiffres(int clx, int cly, int classe)
{
blabla
}

non? :D
de mémoire ça ne marchais pas comme ça. Mais à utiliser que pour tester la valeur des variables (je n'utilise pas encore mednafen), ou alors en dehors de l'écran de jeu (l'intro par exemple), car le chainage des sprites est primordial. #cyborg#

RYGAR (./1) :
Je suis entrain de finir une mini borne d'arcade avec une lynx à l'intérieur et j'hésitais à en faire aussi une avec l'écran en position vertical car je trouvais qu'il n'y avait pas assez de jeux qui utilisait cette mise en page mais vu tes réalisations je pense que cette petite borne verticale verra bien le jour :)
J'ai déjà envie de voir ça :D , et l'ancien joueur de salle d'arcade de mon état aimerait bien y poser ses paluches ! #skate#

exe version 0.2 : #tromb# Fichier joint : fission_02.o #tromb#

Fichier joint : img (fofo_fission02.jpg)

chainage de sprites + point d'action de la balle mis au centre de celle-ci + correction interacton balle/raquette + bruitages

source:

Edité par beauregard le 28-11-2010 à 14:31:35.

Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./8
26.09.2010 - 493
14:29  Beaupixel - Posté : 28-11-2010  M

source, 1er partie:
/* 
 Fission (casse brique) 0.2 - LYNX - kit BLL (newcc65) 
 27/11/2010 
 console tenu à la verticale 
 Handy/Option/Rotate Screen(Right) 
 D-pad et bouton pause 
 LYNX - video game */ 
  
#include <stdlib.h> 
#include <lynx.h> 
#include <lynxlib.h> 
//{ 
extern void silence(); 
extern void abcmusic(); 
extern void update_music(); 
 
char abcmusic0[]; 
char abcmusic1[]; 
char abcmusic2[]; 
char abcmusic3[]; 
char abcmenu1[]; 
char abcmenu2[]; 
char abcball1[]; 
char abcball2[]; 
char abcbric[]; 
char abcaptvir[]; 
char abcboum[]; 
char abcpanne[]; 
char abces[]; 
 
 
#asm 
	xref _abcmenu1 
	xref _abcmenu2 
	xref _abcball1 
	xref _abcbric 
	xref _abcaptvir 
	xref _abcboum 
	xref _abcpanne 
	xref _abces 
	xref _abcmusic0 
	xref _abcmusic1 
	xref _abcmusic2 
	xref _abcmusic3 
_abcmenu1 
	dc.b "O2X7I1V32T20R54H7K8" 
	dc.b "|:C4" 
	dc.b 0 
_abcmenu2 
	dc.b "O3X7I1V16T20R54H7K12" 
	dc.b "|:c2" 
	dc.b 0 
; ball : 
_abcball1 
	dc.b "O4X3I1V70T20R32H2K1" 
	dc.b "|:C4" 
_abcball2 
	dc.b "O4X3I1V70T20R32H2K1" 
	dc.b "| :D 4" 
_abcbric 
	dc.b "O4X7I1V16T20R54H7K12" 
	dc.b "|:C1" 
	dc.b 0 
_abcaptvir 
	dc.b "O2X15I1V32T1R14H6K30" 
	dc.b "|:C4D4C4E4D4C4D4" 
	dc.b 0 
_abcboum 
	dc.b "O2X248I1V16T50R80H2K2" 
	dc.b "|:C2" 
	dc.b 0 
_abcpanne 
	dc.b "O4X6I1V127T6R5H6K6" 
	dc.b "|:C4D4C4E4D4C4D4E4C4" 
	dc.b 0 
_abces 
	dc.b "O4X6I1V127T6R16H2K3" 
	dc.b "|:C2D2C2E2D2C2D2E2C2" 
	dc.b 0 
_abcmusic0 
	dc.b "O2X3I1V70T20R54H2K1" 
	dc.b "|:C4O3T2C4" 
	dc.b 0 
_abcmusic1 
	dc.b "O2X7I0V45T20R80H8K1" 
	dc.b "|:C4D4E4F4" 
	dc.b "C4D4E4F4" 
	dc.b "c4B4A4E4" 
	dc.b "c4B4A4E4" 
	dc.b "E4F4G4A4" 
	dc.b "E4F4G4A4" 
	dc.b "C4D4E4F4" 
	dc.b "C4D4E4F4:" 
	dc.b 0 
_abcmusic2 
	dc.b "O1X7I0V45T20R40H2K3" 
	dc.b "zzzzzzzz" 
	dc.b "|:CDEEDEFFEFGEFDGG" 
	dc.b "I1CDEEDEFFEFGEFDCC" 
	dc.b "I0cBAABAGGAGFFEDEE" 
	dc.b "cBAABAGGAGFFEDCC" 
	dc.b "ECDDFDEEGEFGABcc" 
	dc.b "ECDDFDEEGEFGABcc" 
	dc.b "CDEEDEFFEFGEFDGG" 
	dc.b "CDEEDEFFEFGEFDCC:" 
	dc.b 0 
_abcmusic3 
	dc.b "O2X7I0V45T20R80H8K1" 
	dc.b "z4z4z2" 
	dc.b "|:C4D4E4F4" 
	dc.b "C4D4E4F4" 
	dc.b "c4B4A4E4" 
	dc.b "c4B4A4E4" 
	dc.b "E4F4G4A4" 
	dc.b "E4F4G4A4" 
	dc.b "C4D4E4F4" 
	dc.b "C4D4E4F4:" 
	dc.b 0 
#endasm 
//} 
 
/* 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_LEFT		0x02 
#define BUTTON_RIGHT	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); 
 
char pali[]={ 
	0x00,0x0F,0x02,0x03,0x0A,0x04,0x05,0x06,0x07,0x0B,0x08,0x09,0x04,0x0B,0x0C,0x01, 
	0x00,0xFF,0x22,0x33,0xAA,0x44,0x55,0x66,0x77,0x00,0x88,0x99,0x53,0xBB,0xCC,0x11}; 
char palg[]={ 
	0x00,0x0F,0x0A,0x00,0x03,0x05,0x08,0x0A,0x0C,0x0E,0x0D,0x00,0x04,0x03,0x02,0x00, 
	0x00,0xFF,0xF0,0x0F,0x3F,0x5F,0x8F,0xAF,0xCF,0xEF,0x28,0xF8,0x53,0x63,0x52,0x21}; 
 
 
/***************************************************************************** 
**  Ci-dessous, le contenu du fichier batchfile pour l'image imole.bmp      ** 
                                                                            ** 
set image01=imole.bmp 
SPRPCK -t6 -S072072 -r001001 -a036036 -p0 %image01% 
cmd 
                                                                            ** 
**  Le point d'action de l'image imole est mis au centre de celle-ci,       ** 
**  72/2 = 36 (-a036036). Le but de la manoeuvre est de réaliser un zoom    ** 
**  correctement.                                                           ** 
*****************************************************************************/ 
 
extern char ipause[]; // image game over, d'une taille de 13*43; 
extern char ititre[];  // image titre, d'une taille de 15*49; 
extern char iname[];  // image nom/prénom de auteur, d'une taille de 93*9; 
extern char imole[];  // image molecule, d'une taille de 72*72; 
char SCB[]; 
#asm          
_SCB      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 
// ------------------------------------ 
extern char fondg[]; // image fond game, d'une taille de 160*102; 
char SCBg[]; 
#asm          
_SCBg      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 
// ------------------------------------ 
extern char pushup[]; // image appuyez sur haut, d'une taille de 48*35; 
char SCBp[]; 
#asm          
_SCBp      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 
// ------------------------------------ 
extern char raquet[]; // image raquette, d'une taille de 8*24; 
char SCBr[]; 
#asm          
_SCBr      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 
// ------------------------------------ 
// clip du sprite chiffres, chacun d'une taille de 8*8: 0123456789.LEV 
extern char bc000000[]; 
extern char bc000001[]; 
extern char bc000002[]; 
extern char bc000003[]; 
extern char bc000004[]; 
extern char bc000005[]; 
extern char bc000006[]; 
extern char bc000007[]; 
extern char bc000008[]; 
extern char bc000009[]; 
extern char bc000010[]; 
extern char bc000011[]; 
extern char bc000012[]; 
extern char bc000013[]; 
 
char *chiffrestab[14] = {bc000000, bc000001, bc000002, bc000003, bc000004, 
                         bc000005, bc000006, bc000007, bc000008, bc000009, 
                         bc000010, bc000011, bc000012, bc000013}; 
char SCBchiffres1[]; // déclaration d'un nouveau controleur de sprite (test) 
char SCBchiffres2[]; // déclaration d'un nouveau controleur de sprite (test) 
char SCBchiffres3[]; // déclaration d'un nouveau controleur de sprite (test) 
 
char SCBscore1[]; // déclaration d'un nouveau controleur de sprite (score unité) 
char SCBscore2[]; // déclaration d'un nouveau controleur de sprite (score dizaine) 
char SCBscore3[]; // déclaration d'un nouveau controleur de sprite (score centaine) 
char SCBscore4[]; // déclaration d'un nouveau controleur de sprite (score millier) 
 
#asm 
_SCBchiffres1     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 
; 
_SCBchiffres2     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 
; 
_SCBchiffres3     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 
; 
_SCBscore1     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 
; 
_SCBscore2     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 
; 
_SCBscore3     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 
; 
_SCBscore4     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 
// ------------------------------------ 
// ------------------------------------ 
//char fleche[]; //  
 
// clip du sprite fleches 
extern char fd000000[]; 
extern char fd000001[]; 
extern char fd000002[]; 
extern char fd000003[]; 
extern char fd000004[]; 
extern char fd000005[]; 
extern char fd000006[]; 
 
char *fdtab[7] = {fd000000, fd000001, fd000002, fd000003, fd000004, 
                   fd000005, fd000006}; 
char SCBfd[]; // déclaration d'un nouveau controleur de sprite 
#asm 
_SCBfd     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 
// ------------------------------------ 
/***************************************************************************** 
**  Ci-dessous, le contenu du fichier batchfile pour l'image fball.bmp      ** 
                                                                            ** 
set image01=fball.bmp 
SPRPCK -t6 -S005005 -r001001 -a002002 -p0 %image01% 
cmd 
                                                                            ** 
**  Le point d'action de l'image fball est mis au centre de celle-ci,       ** 
**  0 1 2 3 4   --> la valeur 2 correspond exactement au centre (-a002002)  ** 
*****************************************************************************/ 
 
extern char fball[]; // image balle, d'une taille de 5*5; 
char SCBball[]; 
#asm          
_SCBball      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 
// ------------------------------------ 
// ------------------------------------ 
//char fbriq[]; //  
 
// clip du sprite brique, d'une taille de 6*14, normale, dure et incassable. 
extern char br000000[]; 
extern char br000001[]; 
extern char br000002[]; 
 
char *brtab[3] = {br000000, br000001, br000002}; 
 
// nombreuses déclarations des nouveaux controleurs de sprite pour les briques. 
char SCBbr01[];  
char SCBbr02[];  
char SCBbr03[];  
char SCBbr04[];  
char SCBbr05[];  
char SCBbr06[];  
char SCBbr07[];  
char SCBbr08[];  
char SCBbr09[];  
char SCBbr10[];  
char SCBbr11[]; 
char SCBbr12[]; 
char SCBbr13[]; 
char SCBbr14[]; 
char SCBbr15[]; 
char SCBbr16[]; 
char SCBbr17[]; 
char SCBbr18[]; 
char SCBbr19[]; 
char SCBbr20[]; 
char SCBbr21[]; 
char SCBbr22[]; 
char SCBbr23[]; 
char SCBbr24[]; 
char SCBbr25[]; 
#asm 
_SCBbr01     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 
; 
_SCBbr02     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 
; 
_SCBbr03     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 
; 
_SCBbr04     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 
; 
_SCBbr05     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 
; 
_SCBbr06     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 
; 
_SCBbr07     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 
; 
_SCBbr08     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 
; 
_SCBbr09     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 
; 
_SCBbr10     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 
; 
_SCBbr11     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 
; 
_SCBbr12     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 
; 
_SCBbr13     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 
; 
_SCBbr14     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 
; 
_SCBbr15     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 
; 
_SCBbr16     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 
; 
_SCBbr17     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 
; 
_SCBbr18     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 
; 
_SCBbr19     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 
; 
_SCBbr20     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 
; 
_SCBbr21     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 
; 
_SCBbr22     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 
; 
_SCBbr23     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 
; 
_SCBbr24     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 
; 
_SCBbr25     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 
// ------------------------------------ ouf ! 
 
 
 
 
 
 
int posx,posy,level,score,xpush,ypush,relach; 
int i; 
char tempa,tempb,tempc,tempd,tempe,etape,filife,drap1,gspause,gsblip,mhaut,mbas; // de -128 à 127 
int molescx,molescy,gmole; 
int atest,unite,dizaine,centaine,horszone; 
 
// ydirf --> déplacer légérement la flèche. 
// dirf --> direction fleche de 0 à 6, mais aussi direction Y de la balle (-3 -2 -1 0 +1 +2 +3) (ici gauche/droite car LYNX verticale). 
// bdirx --> direction X de la balle (ici haut/bas car le jeu se joue la LYNX tenu à la verticale). 
char ydirf,dirf,bdirx,speedX,oboucl,basar;  
int balldirX,balldirY; 
int yplayer; 
char odirx,Xtemp,Ytemp; 
 
char compteurx, compteury; 
int nbrbriqx, nbrbriqy, brix[5], briy[5], brie[3];	// brique : coordonnées X et Y, et l'état. 
 
// assembler vertical retrace syncronisation routine 
void Vsync()  
{ 
#asm 
vretrace: 
	lda $fd0a 
	bne vretrace 
#endasm 
} 
 
// Hors de l'assembleur, point de salut... 
// L'utilisation de la procedure suivante, lors de l'écran d'action, 
// fait ramer le jeu. 
 
void Fchiffres(clx,cly,classe) 
int clx,cly,classe; 
 { 
	SCBDATA(SCBchiffres1) = chiffrestab[classe%14];  
	SCBX(SCBchiffres1) = clx; 
	SCBY(SCBchiffres1) = cly;   
	DrawSprite(SCBchiffres1);  
 } 
 
  
  
 /* test 
 */ 
ShowScreen() 
{ 
	//horszone=0;// mettre les briques hors de l'écran visible. Sprite brique d'une taille de 6*14, 0=normale 1=dure 2=incassable. 
	if (etape==10 & horszone>0)		{ 
									horszone=horszone-4; 
									if (horszone<1)		horszone=0; 
									} 
  
  
  SCBX(SCBbr01) = 85-horszone; 
  SCBY(SCBbr01) = 16; 
  SCBDATA(SCBbr01) = brtab[0%3]; //  
 
  SCBX(SCBbr02) = 85-horszone; 
  SCBY(SCBbr02) = 16+14; 
  SCBDATA(SCBbr02) = brtab[0%3]; //  
 
  SCBX(SCBbr03) = 85-horszone; 
  SCBY(SCBbr03) = 16+28; 
  SCBDATA(SCBbr03) = brtab[0%3]; //  
 
  SCBX(SCBbr04) = 85-horszone; 
  SCBY(SCBbr04) = 16+42; 
  SCBDATA(SCBbr04) = brtab[0%3]; //  
 
  SCBX(SCBbr05) = 85-horszone; 
  SCBY(SCBbr05) = 16+56; 
  SCBDATA(SCBbr05) = brtab[0%3]; //  
 
 
   
  SCBX(SCBbr06) = 91-horszone; 
  SCBY(SCBbr06) = 16; 
  SCBDATA(SCBbr06) = brtab[0%3]; //  
 
  SCBX(SCBbr07) = 91-horszone; 
  SCBY(SCBbr07) = 16+14; 
  SCBDATA(SCBbr07) = brtab[0%3]; //  
 
  SCBX(SCBbr08) = 91-horszone; 
  SCBY(SCBbr08) = 16+28; 
  SCBDATA(SCBbr08) = brtab[0%3]; //  
 
  SCBX(SCBbr09) = 91-horszone; 
  SCBY(SCBbr09) = 16+42; 
  SCBDATA(SCBbr09) = brtab[0%3]; //  
 
  SCBX(SCBbr10) = 91-horszone; 
  SCBY(SCBbr10) = 16+56; 
  SCBDATA(SCBbr10) = brtab[0%3]; //  
 
 
   
  SCBX(SCBbr11) = 97-horszone; 
  SCBY(SCBbr11) = 16; 
  SCBDATA(SCBbr11) = brtab[0%3]; //  
 
  SCBX(SCBbr12) = 97-horszone; 
  SCBY(SCBbr12) = 16+14; 
  SCBDATA(SCBbr12) = brtab[0%3]; //  
 
  SCBX(SCBbr13) = 97-horszone; 
  SCBY(SCBbr13) = 16+28; 
  SCBDATA(SCBbr13) = brtab[0%3]; //  
 
  SCBX(SCBbr14) = 97-horszone; 
  SCBY(SCBbr14) = 16+42; 
  SCBDATA(SCBbr14) = brtab[0%3]; //  
 
  SCBX(SCBbr15) = 97-horszone; 
  SCBY(SCBbr15) = 16+56; 
  SCBDATA(SCBbr15) = brtab[0%3]; // 	 
 
   
   
  SCBX(SCBbr16) = 103-horszone; 
  SCBY(SCBbr16) = 16; 
  SCBDATA(SCBbr16) = brtab[0%3]; //  
 
  SCBX(SCBbr17) = 103-horszone; 
  SCBY(SCBbr17) = 16+14; 
  SCBDATA(SCBbr17) = brtab[0%3]; //  
 
  SCBX(SCBbr18) = 103-horszone; 
  SCBY(SCBbr18) = 16+28; 
  SCBDATA(SCBbr18) = brtab[0%3]; //  
 
  SCBX(SCBbr19) = 103-horszone; 
  SCBY(SCBbr19) = 16+42; 
  SCBDATA(SCBbr19) = brtab[0%3]; //  
 
  SCBX(SCBbr20) = 103-horszone; 
  SCBY(SCBbr20) = 16+56; 
  SCBDATA(SCBbr20) = brtab[0%3]; //  
 
   
   
 
  SCBX(SCBbr21) = 109-horszone; 
  SCBY(SCBbr21) = 16; 
  SCBDATA(SCBbr21) = brtab[0%3]; //  
 
  SCBX(SCBbr22) = 109-horszone; 
  SCBY(SCBbr22) = 16+14; 
  SCBDATA(SCBbr22) = brtab[0%3]; //  
 
  SCBX(SCBbr23) = 109-horszone; 
  SCBY(SCBbr23) = 16+28; 
  SCBDATA(SCBbr23) = brtab[0%3]; //  
 
  SCBX(SCBbr24) = 109-horszone; 
  SCBY(SCBbr24) = 16+42; 
  SCBDATA(SCBbr24) = brtab[0%3]; //  
 
  SCBX(SCBbr25) = 109-horszone; 
  SCBY(SCBbr25) = 16+56; 
  SCBDATA(SCBbr25) = brtab[0%3]; //  
   
   
   
   
   
	if (etape==30 & horszone==0) 
		{ 
		//							horszone=horszone-4; 
		//							if (horszone<1)		horszone=0; 
		 
	 
		} 
   
   
   
}


Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./9
10.06.2001 - 22559
14:33  Pen^2 - Posté : 28-11-2010  M

beauregard (./7) :
une âme charitable pour traduire/décrypter ? img
Ben la norme C K & R est la première norme du C, telle que définie par les auteurs du langage (Kernigan & Ritchie)
Il y a eu des petites modifications ensuite.

Edité par Pen^2 le 28-11-2010 à 14:33:52.


./10
26.09.2010 - 493
14:33  Beaupixel - Posté : 28-11-2010  M

source, 2eme partie:
 
/************************************************************************** 
**                                                                       ** 
**                                                                       ** 
**************************************************************************/ 
char main() 
{ 
  InitIRQ(); 
  CLI; 
 
  SetBuffers(SCREEN, RENDER ,0); 
 
 
 
  posx=76;   
  posy=47;   
  xpush=-48; 
  ypush=34; 
//  SCBX(SCB) = 60; 
//  SCBY(SCB) = 42; 
//  SCBDATA(SCB) = ititre; 
 
// 1er sprite chainé (fond + raquette) 
  SCBX(SCBg) = -200; 
  SCBY(SCBg) = 0; 
  SCBDATA(SCBg) = fondg; 
  SCBNEXT(SCBg) = SCBp; // chainage de sprite info commande 
  SCBX(SCBp) = xpush; 
  SCBY(SCBp) = ypush; 
  SCBDATA(SCBp) = pushup; 
//SCBCTL0(SCBp)= 0x001;//99; // pas glop 
  SCBNEXT(SCBp) = SCBr; // chainage de sprite raquette 
  SCBX(SCBr) = -200; 
  SCBY(SCBr) = 0; 
  SCBDATA(SCBr) = raquet;   
  SCBNEXT(SCBr) = SCBball; // chainage de sprite balle 
  SCBX(SCBball) = -200; 
  SCBY(SCBball) = 0; 
  SCBDATA(SCBball) = fball;   
  SCBNEXT(SCBball) = SCBfd; // chainage de sprite fleche directionnelle 
  SCBX(SCBfd) = 0; 
  SCBY(SCBfd) = 0; 
  SCBDATA(SCBfd) = fdtab[dirf%7];//fleche;   
horszone=150;// mettre les briques hors de l'écran visible. Sprite brique d'une taille de 6*14, 0=normale 1=dure 2=incassable. 
  SCBNEXT(SCBfd) = SCBbr01; // chainage de la brique 01 
  SCBX(SCBbr01) = 85-horszone; 
  SCBY(SCBbr01) = 16; 
  SCBDATA(SCBbr01) = brtab[0%3]; //  
  SCBNEXT(SCBbr01) = SCBbr02; // chainage de la brique 02 
  SCBX(SCBbr02) = 85-horszone; 
  SCBY(SCBbr02) = 16+14; 
  SCBDATA(SCBbr02) = brtab[0%3]; //  
  SCBNEXT(SCBbr02) = SCBbr03; // chainage de la brique 03 
  SCBX(SCBbr03) = 85-horszone; 
  SCBY(SCBbr03) = 16+28; 
  SCBDATA(SCBbr03) = brtab[0%3]; //  
  SCBNEXT(SCBbr03) = SCBbr04; // chainage de la brique 04 
  SCBX(SCBbr04) = 85-horszone; 
  SCBY(SCBbr04) = 16+42; 
  SCBDATA(SCBbr04) = brtab[0%3]; //  
  SCBNEXT(SCBbr04) = SCBbr05; // chainage de la brique 05 
  SCBX(SCBbr05) = 85-horszone; 
  SCBY(SCBbr05) = 16+56; 
  SCBDATA(SCBbr05) = brtab[0%3]; //  
  
  SCBNEXT(SCBbr05) = SCBbr06; // chainage de la brique 06 
  SCBX(SCBbr06) = 91-horszone; 
  SCBY(SCBbr06) = 16; 
  SCBDATA(SCBbr06) = brtab[0%3]; //  
  SCBNEXT(SCBbr06) = SCBbr07; // chainage de la brique 07 
  SCBX(SCBbr07) = 91-horszone; 
  SCBY(SCBbr07) = 16+14; 
  SCBDATA(SCBbr07) = brtab[0%3]; //  
  SCBNEXT(SCBbr07) = SCBbr08; // chainage de la brique 08 
  SCBX(SCBbr08) = 91-horszone; 
  SCBY(SCBbr08) = 16+28; 
  SCBDATA(SCBbr08) = brtab[0%3]; //  
  SCBNEXT(SCBbr08) = SCBbr09; // chainage de la brique 09 
  SCBX(SCBbr09) = 91-horszone; 
  SCBY(SCBbr09) = 16+42; 
  SCBDATA(SCBbr09) = brtab[0%3]; //  
  SCBNEXT(SCBbr09) = SCBbr10; // chainage de la brique 10 
  SCBX(SCBbr10) = 91-horszone; 
  SCBY(SCBbr10) = 16+56; 
  SCBDATA(SCBbr10) = brtab[0%3]; //  
 
  SCBNEXT(SCBbr10) = SCBbr11; // chainage de la brique 11 
  SCBX(SCBbr11) = 97-horszone; 
  SCBY(SCBbr11) = 16; 
  SCBDATA(SCBbr11) = brtab[0%3]; //  
  SCBNEXT(SCBbr11) = SCBbr12; // chainage de la brique 12 
  SCBX(SCBbr12) = 97-horszone; 
  SCBY(SCBbr12) = 16+14; 
  SCBDATA(SCBbr12) = brtab[0%3]; //  
  SCBNEXT(SCBbr12) = SCBbr13; // chainage de la brique 13 
  SCBX(SCBbr13) = 97-horszone; 
  SCBY(SCBbr13) = 16+28; 
  SCBDATA(SCBbr13) = brtab[0%3]; //  
  SCBNEXT(SCBbr13) = SCBbr14; // chainage de la brique 14 
  SCBX(SCBbr14) = 97-horszone; 
  SCBY(SCBbr14) = 16+42; 
  SCBDATA(SCBbr14) = brtab[0%3]; //  
  SCBNEXT(SCBbr14) = SCBbr15; // chainage de la brique 15 
  SCBX(SCBbr15) = 97-horszone; 
  SCBY(SCBbr15) = 16+56; 
  SCBDATA(SCBbr15) = brtab[0%3]; //  
 
  SCBNEXT(SCBbr15) = SCBbr16; // chainage de la brique 16 
  SCBX(SCBbr16) = 103-horszone; 
  SCBY(SCBbr16) = 16; 
  SCBDATA(SCBbr16) = brtab[0%3]; //  
  SCBNEXT(SCBbr16) = SCBbr17; // chainage de la brique 17 
  SCBX(SCBbr17) = 103-horszone; 
  SCBY(SCBbr17) = 16+14; 
  SCBDATA(SCBbr17) = brtab[0%3]; //  
  SCBNEXT(SCBbr17) = SCBbr18; // chainage de la brique 18 
  SCBX(SCBbr18) = 103-horszone; 
  SCBY(SCBbr18) = 16+28; 
  SCBDATA(SCBbr18) = brtab[0%3]; //  
  SCBNEXT(SCBbr18) = SCBbr19; // chainage de la brique 19 
  SCBX(SCBbr19) = 103-horszone; 
  SCBY(SCBbr19) = 16+42; 
  SCBDATA(SCBbr19) = brtab[0%3]; //  
  SCBNEXT(SCBbr19) = SCBbr20; // chainage de la brique 15 
  SCBX(SCBbr20) = 103-horszone; 
  SCBY(SCBbr20) = 16+56; 
  SCBDATA(SCBbr20) = brtab[0%3]; //  
   
  SCBNEXT(SCBbr20) = SCBbr21; // chainage de la brique 21 
  SCBX(SCBbr21) = 109-horszone; 
  SCBY(SCBbr21) = 16; 
  SCBDATA(SCBbr21) = brtab[0%3]; //  
  SCBNEXT(SCBbr21) = SCBbr22; // chainage de la brique 22 
  SCBX(SCBbr22) = 109-horszone; 
  SCBY(SCBbr22) = 16+14; 
  SCBDATA(SCBbr22) = brtab[0%3]; //  
  SCBNEXT(SCBbr22) = SCBbr23; // chainage de la brique 23 
  SCBX(SCBbr23) = 109-horszone; 
  SCBY(SCBbr23) = 16+28; 
  SCBDATA(SCBbr23) = brtab[0%3]; //  
  SCBNEXT(SCBbr23) = SCBbr24; // chainage de la brique 24 
  SCBX(SCBbr24) = 109-horszone; 
  SCBY(SCBbr24) = 16+42; 
  SCBDATA(SCBbr24) = brtab[0%3]; //  
  SCBNEXT(SCBbr24) = SCBbr25; // chainage de la brique 25 
  SCBX(SCBbr25) = 109-horszone; 
  SCBY(SCBbr25) = 16+56; 
  SCBDATA(SCBbr25) = brtab[0%3]; //  
   
  SCBNEXT(SCBbr25) = SCBscore1; // chainage score unité 
  SCBX(SCBscore1) = 4; 
  SCBY(SCBscore1) = 99-8; 
  SCBDATA(SCBscore1) = chiffrestab[0%14]; //  
  SCBNEXT(SCBscore1) = SCBscore2; // chainage score dizaine 
  SCBX(SCBscore2) = 4; 
  SCBY(SCBscore2) = 99-16; 
  SCBDATA(SCBscore2) = chiffrestab[0%14]; //  
  SCBNEXT(SCBscore2) = SCBscore3; // chainage score centaine 
  SCBX(SCBscore3) = 4; 
  SCBY(SCBscore3) = 99-24; 
  SCBDATA(SCBscore3) = chiffrestab[0%14]; //  
  SCBNEXT(SCBscore3) = SCBscore4; // chainage score millier 
  SCBX(SCBscore4) = 4; 
  SCBY(SCBscore4) = 99-32; 
  SCBDATA(SCBscore4) = chiffrestab[0%14]; //  
   
 
  SCBX(SCBscore1) = -10;SCBX(SCBscore2) = -10;SCBX(SCBscore3) = -10;SCBX(SCBscore4) = -10; // score placés hors de l'écran 
   
   
   
   
// 3ème sprite chainé (score) 
  SCBX(SCBchiffres1) = 0; 
  SCBY(SCBchiffres1) = 0; 
  //SCBDATA(SCBchiffres1) = chiffres;     
  SCBNEXT(SCBchiffres1) = SCBchiffres2; // chainage de sprite 
  SCBX(SCBchiffres2) = 0; 
  SCBY(SCBchiffres2) = 0; 
  //SCBDATA(SCBchiffres2) = chiffres;   
  SCBNEXT(SCBchiffres2) = SCBchiffres3; // chainage de sprite 
  SCBX(SCBchiffres3) = 0; 
  SCBY(SCBchiffres3) = 0; 
  //SCBDATA(SCBchiffres3) = chiffres;    
  
 
  
etape=10;SetRGB(palg); // provisoire 
 
								level=1;//3;//1; 
								tempa=0;tempb=0;etape=10;//xpush=-48;ypush=34;xlvla=160;xlvlb=160;xlvlc=160;xlvld=160;xlvle=160;elvl=0; 
								xpush=-48;ypush=34; 
								score=0;drap1=0; // drap1 agit sur l'affichage du score. 
 
								filife=3; 
 
								silence(); 
								abcmusic(0,abcmenu1); 
								abcmusic(1,abcmenu2); 
 
								SetRGB(palg); //  Ceci sert à changer la palette de la Lynx.  
								SCBX(SCBg) = 0; // fond zone de jeu 
								SCBX(SCBp) = xpush; 
								//SCBX(SCBr) = 200; // raquette 
								 
								relach=1; 
    
 
*/  
 
 
 
/************************************************************************** 
**                       BOUCLE PRINCIPALE                               ** 
**************************************************************************/     
   
  for( ; ; ) 
{ 
  Vsync(); 
  SwapBuffers(); 
update_music(); // petite subtilité de la gestion sonore 
 
 
 
 
 
	++gsblip; // economie ressource machine --> certaines des conditions n'ont pas besoin d'être lu par la LYNX à chaque boucle. 
	if (gsblip==5)  
	{ 
	gsblip=1; 
 
	if (switches & BUTTON_PAUSE) 
		{ 
		if (gspause==0) {gspause=1;silence();abcmusic(0,abcaptvir);}  
		}  
	if (!(switches & BUTTON_PAUSE)) 
		{ 
		if (gspause==1) gspause=2; 
		} 
 
	if (switches & BUTTON_PAUSE) 
		{ 
		if (gspause==2) gspause=3; 
		} 
 
	if (!(switches & BUTTON_PAUSE)) 
		{ 
		if (gspause==3) gspause=0; 
		} 
	} 
 
 
 
/************************************************************************** 
**************************************************************************/  
 if (etape>=0 & etape<=4)  // écran titre 
	{  
  /* set the palette */ 
	SetRGB(pali); //  Ceci sert à changer la palette de la Lynx.  
	DrawFBox(0,0,160,102,0); // couleur 0 (noire) 
 
	SCBX(SCBr) = -200; // raquette mis hors de l'écran 
	SCBX(SCBball) = -200; // balle mis hors de l'écran 
	SCBX(SCBfd) = -200; // fleche directionnelle mis hors de l'écran 
	 
	SCBX(SCB) = 78; SCBY(SCB) = 52; 
	SCBDATA(SCB) = imole; 
 
if (gspause==0) 
	{ 
	if (etape==4)	{ 
					if (molescx>256)	molescx=molescx-4; 
					if (molescy>128)	molescy=molescy-8; 
					if (molescx<257 & molescy<129)	{molescx=256;molescy=128;etape=2;mhaut=4;} 
					} 
	if (etape==3)	{ 
					if (molescx>128)	molescx=molescx-8; 
					if (molescy>256)	molescy=molescy-4; 
					if (molescx<129 & molescy<257)	{molescx=128;molescy=256;etape=2;mbas=4;} 
					} 
	if (etape==2)	{ 
					if (molescx<384)	molescx=molescx+(4+mbas); 
					if (molescy<384)	molescy=molescy+(4+mhaut); 
					if (molescx>383 & molescy>383) 
						{ 
						molescx=384;molescy=384;++tempc;mhaut=0;mbas=0; 
						if (tempc==3)	tempc=1; 
						if (tempc==1)	etape=3; 
						if (tempc==2)	etape=4; 
						} 
					} 
	if (etape==1)	{ 
					++tempb; 
					if (tempb>64)	{ 
									tempb=0;etape=2; 
									} 
					} 
	if (etape==0)	{ 
					if (molescx<256)	{ 
										molescx=molescx+2;molescy=molescy+2; 
										if (molescx>255) {molescx=256;molescy=256;etape=1;gmole=2;} 
										} 
					} 
	} 
	SCBHS(SCB) = molescx; 
	SCBVS(SCB) = molescy; 		 
	DrawSprite(SCB); // affichage molecule 
	 
	if (etape>0) {SCBHS(SCB) = 256;SCBVS(SCB) = 256;} // remise à 0 echelle des images SCB 
	SCBX(SCB) = 34;	SCBY(SCB) = 2;	SCBDATA(SCB) = iname;	DrawSprite(SCB);   
	SCBX(SCB) = 74;	SCBY(SCB) = 26;	SCBDATA(SCB) = ititre;	DrawSprite(SCB); 
 
 
// 
	SCBX(SCBscore1) = 4;SCBX(SCBscore2) = 4;SCBX(SCBscore3) = 4;SCBX(SCBscore4) = 4; 
	SCBDATA(SCBscore1) = chiffrestab[0%14];   
	SCBDATA(SCBscore2) = chiffrestab[1%14]; 
	SCBDATA(SCBscore3) = chiffrestab[0%14]; 
	SCBDATA(SCBscore4) = chiffrestab[2%14]; 
	//Fchiffres(6,68,2);  // 2 
	//Fchiffres(6,76,0);  // 0 
	//Fchiffres(6,84,1);  // 1 
	//Fchiffres(6,92,0);  // 0 
 
	SCBDATA(SCBp) = pushup; 
	SCBX(SCBp) = xpush;//48; 
	SCBY(SCBp) = ypush; 
 
	SCBX(SCBg) = -200; // fond zone de jeu 
	//SCBX(SCBp) = xpush; 
	SCBX(SCBr) = -200; // raquette 
		 
	DrawSprite(SCBg);	// Affichage fond jeu + info commande + raquette + balle + fleche directionnelle + briques + score 
		 
	if (gspause==0 & etape>0) 
		{ 
		if (xpush<8)		xpush=xpush+2; // apparition de la bulle info "Push UP" 
		if (xpush>7)//(tempa>24 & etape==0) // petite teporisation avant d'autoriser le joueur de recommencer le jeu. 
			{ 
			xpush=8; 
			++tempa; // bulle info clignote doucement 
			if (tempa>63)	tempa=1; 
			if (tempa>0 & tempa<32)		ypush=34;  
			if (tempa>31)	ypush=-100; 
 
			if (joystick & JOY_RIGHT) 
				{ 
				level=1;//3;//1; 
				tempa=0;tempb=0;etape=10;//xpush=-48;ypush=34;xlvla=160;xlvlb=160;xlvlc=160;xlvld=160;xlvle=160;elvl=0; 
				xpush=-48;ypush=34; 
				score=0;drap1=0; // drap1 agit sur l'affichage du score. 
				filife=3; 
				// bruitage menu : 
				silence(); 
				abcmusic(0,abcmenu1); 
				abcmusic(1,abcmenu2); 
 
 
//			// bruitage panne sèche : 
//			silence(); 
//			abcmusic(3,abcpanne); 
 
				SetRGB(palg); //  Ceci sert à changer la palette de la Lynx.  
				SCBX(SCBg) = 0; // fond zone de jeu 
				SCBX(SCBp) = xpush; 
				relach=1; 
				 
					SCBDATA(SCBscore1) = chiffrestab[0%14]; 
					SCBDATA(SCBscore2) = chiffrestab[0%14]; 
					SCBDATA(SCBscore3) = chiffrestab[0%14]; 
					SCBDATA(SCBscore4) = chiffrestab[0%14]; 
				 
				} 
			}  
		} 
	//TextOut(24, 2, 2, 0, "Philippe Haouli present"); // lettre grise 32,32,32  
	//TextOut(24, 2, 1, 0, "Philippe Haouli"); // lettre blanche 
 
	} 
 
/************************************************************************** 
**************************************************************************/  
 if (etape==10)  // ecran level 
	{  
	 
	ShowScreen(); // Coordonnées de toutes les briques (voir au début de ce joyeux code). 
	//DrawSprite(SCBg);	// Affichage fond jeu + info commande + raquette + balle + fleche directionnelle + briques + score 
	 
	SCBDATA(SCBp) = pushup; 
	SCBX(SCBp) = xpush;//48; 
	SCBY(SCBp) = ypush; 
	 
	SCBX(SCBr) = -200; // Coordonnée X de la raquette (ici mis hors de l'écran). 
	DrawSprite(SCBg);	// Affichage fond jeu + info commande + raquette + balle + fleche directionnelle + score 
	 
	Fchiffres(120,18,11); //L 
	Fchiffres(120,18+8,12); //E 
	Fchiffres(120,18+16,13); //V 
	Fchiffres(120,18+24,12); //E 
	Fchiffres(120,18+32,11); //L 
	 
	unite = level % 10; 
	dizaine = level / 10 % 10; 
	// unité:   
	SCBDATA(SCBchiffres1) = chiffrestab[unite%14]; 
	SCBX(SCBchiffres1) = 120; 
	SCBY(SCBchiffres1) = 50+24;   
	 
	// dizaine:   
	SCBDATA(SCBchiffres2) = chiffrestab[dizaine%14]; 
	SCBX(SCBchiffres2) = 120; 
	SCBY(SCBchiffres2) = 50+16;  	 
	 
	DrawSprite(SCBchiffres1); // Affichage valeur testé		 
	 
	 
	if (relach==1)	{ 
					if (!(joystick & JOY_RIGHT))	{relach=0;} // utile pour vérifier si le joueur n'appui plus sur D-pad haut 
					} 
	 
	if (gspause==0 & xpush<8 & horszone==0) xpush=xpush+2; 
	if (gspause==0 & xpush>7)//(tempa>24 & etape==0) // petite teporisation avant d'autoriser le joueur de recommencer le jeu. 
		{ 
		xpush=7; 
		 
 
		++tempa; // bulle info clignote doucement 
		if (tempa>63)  tempa=1; 
		if (tempa>0 & tempa<32)  ypush=34;  
		if (tempa>31)  ypush=200; 	 
	 
	 
	 
		if (relach==0 & horszone==0)	{ 
						if (joystick & JOY_RIGHT)	{ 
													//level=1;//3;//1; 
													tempa=0;tempb=0;etape=20,yplayer=39;//xpush=-48;ypush=34;xlvla=160;xlvlb=160;xlvlc=160;xlvld=160;xlvle=160;elvl=0; 
													xpush=-48;ypush=34; 
													dirf=3;ydirf=6; 
								//score=0;drap1=0; // drap1 agit sur l'affichage du score. 
			//goship=0; posx=-40; posy=39; 
								//filife=3; 
			//govil=0;goroch=0;tyroch=0;chroch=0; 
								//SCBDATA(SCB) = fondlvl; 
			// bruitage menu : 
													silence(); 
													abcmusic(0,abcmenu1); 
													abcmusic(1,abcmenu2); 
 
 
//			// bruitage panne sèche : 
//			silence(); 
//			abcmusic(3,abcpanne); 
 
								//SetRGB(palg); //  Ceci sert à changer la palette de la Lynx.  
								//SCBX(SCBg) = 0; // fond zone de jeu 
													SCBX(SCBp) = xpush; 
								//SCBX(SCBr) = 200; // raquette 
								 
 
													relach=1; // utile pour vérifier si le joueur n'appui plus sur D-pad haut 
								 
													Vsync(); 
													SwapBuffers(); 
												} 
						} 
		}  
	} 
 
/************************************************************************** 
**************************************************************************/  
 if (etape==20)  // écran jeu 1 (fleche directionnelle) 
	{  
	// raquette : 
	SCBDATA(SCBr) = raquet; 
	SCBX(SCBr) = 32; 
	SCBY(SCBr) = yplayer; 
	 
	// balle : 
	SCBX(SCBball) = 42; 
	SCBY(SCBball) = 50; 
	 
	// fleche directionnelle : 
	SCBDATA(SCBfd) = fdtab[dirf%7];  
	SCBX(SCBfd) = 39+8; 
	SCBY(SCBfd) = (42-6)+ydirf; 
 
	if (gspause==0) 
		{ 
		if (tempa>0) {--tempa;} 
 
		if (joystick & JOY_DOWN)	 
			{ 
			if (tempa==0 & dirf<6)	{++dirf;tempa=16;++ydirf;++ydirf;} 
			} 
		if (joystick & JOY_UP) 
			{ 
			if (tempa==0 & dirf>0)	{--dirf;tempa=16;--ydirf;--ydirf;} 
			} 
 
		if (relach==1) 
			{ 
			if (!(joystick & JOY_RIGHT))	{relach=0;} // utile pour vérifier si le joueur n'appui plus sur D-pad haut 
			} 
		if (joystick & JOY_RIGHT) 
			{ 
			if (relach==0)	{ 
							SCBX(SCBfd) = -200; // fleche directionnelle mis hors de l'écran 
							dirf=dirf-3;bdirx=1; 
							tempa=0;etape=30; 
							balldirX=SCBX(SCBball); 
							balldirY=SCBY(SCBball); 
							} 
			} 
		} 
	DrawSprite(SCBg);	// Affichage fond jeu + info commande + raquette + balle + fleche directionnelle + briques + score 
	} 
 
/************************************************************************** 
**************************************************************************/  
 if (etape==30)  // écran jeu 2 
	{ 
	if (gspause==0) 
		{ 
		if (dirf<0) // Si la balle se dirige vers la gauche, alors... 
			{ 
 
			if (balldirY<3) 
				{ 
				balldirY=3;dirf=-dirf; // cadre gauche 
				// bruitage balle cadre: 
				silence(); 
				abcmusic(1,abcball2); 
				} 
			if (dirf==-3) 	{ 
							++Ytemp; 
							if (Ytemp>1)	{Ytemp=0;balldirY=balldirY-3;odirx=3;} // vitesse Y réelle --> -1,5 
							} 
			if (dirf==-2) 	{balldirY=balldirY-1;odirx=2;} // vitesse Y --> -1 
			if (dirf==-1) 	{ 
							++Ytemp;odirx=1; 
							if (Ytemp>1)	{Ytemp=0;balldirY=balldirY-1;} // vitesse Y réelle --> -0,5 
							} 
			} 
 
		if (dirf==0)	{odirx=0;} // vitesse X --> +2 balle se dirige droit devant. 
 
		if (dirf>0) // Si la balle se dirige vers la droite, alors... 
			{ 
			if (dirf==1) 	{ 
							++Ytemp;odirx=1; 
							if (Ytemp>1)	{Ytemp=0;balldirY=balldirY+1;} // vitesse Y réelle --> +0,5 
							} 
			if (dirf==2) 	{balldirY=balldirY+1;odirx=2;} // vitesse Y --> +1 
			if (dirf==3) 	{ 
							++Ytemp; 
							if (Ytemp>1)	{Ytemp=0;balldirY=balldirY+3;odirx=3;} // vitesse Y réelle --> +1,5 
							} 
							 
			if (balldirY>93) 
				{ 
				balldirY=93;dirf=-dirf;// cadre droite (102-6 = 96-3 = 93) 
				// bruitage balle cadre: 
				silence(); 
				abcmusic(1,abcball2); 
				}  
 
			} 
			 
			 
			 
		if (odirx==0) 
			{ 
			 
			++Xtemp; 
			if (Xtemp>1) 
				{ 
				Xtemp=0; 
				if (bdirx==1)	balldirX=balldirX+3; // vitesse X réelle --> +1,5 
				if (bdirx==-1)	balldirX=balldirX-3; // vitesse X réelle --> -1,5 
				}  
			} 
		if (odirx==1) 
			{ 
			++Xtemp; 
			if (Xtemp>1) 
				{ 
				Xtemp=0; 
				if (bdirx==1)	balldirX=balldirX+3; // vitesse X réelle --> +1,5 
				if (bdirx==-1)	balldirX=balldirX-3; // vitesse X réelle --> -1,5 
				}  
			} 
		if (odirx==2)  
			{ 
			if (bdirx==1)	balldirX=balldirX+1;  // vitesse X --> +1 
			if (bdirx==-1)	balldirX=balldirX-1;  // vitesse X --> -1 
			} 
		if (odirx==3) 
			{ 
			++Xtemp; 
			if (Xtemp>1) 
				{ 
				Xtemp=0; 
				if (bdirx==1)	balldirX=balldirX+1; // vitesse X réelle --> +0,5 
				if (bdirx==-1)	balldirX=balldirX-1; // vitesse X réelle --> -0,5 
				} 
			} 
 
		if (bdirx==1)	{ // Si la balle monte 
							if (balldirX>154) 
								{// collision haut du cadre: changement de direction 
								balldirX=154;bdirx=-bdirx; // inverse la direction de la balle 
								if (dirf==0)	{ 
												basar=random()%3; // de 0 à 2 
												--basar;dirf=basar; // -1 ou 0 ou 1 
												} 
								// bruitage balle cadre: 
								silence(); 
								abcmusic(1,abcball2); 
								} 
								else 
								{ 
								// ici peut être test collision balle/brique 
								}  
						}  
		if (bdirx==-1)	{ // Si la balle descend 
 
							 
						if (balldirX<18) // provisoire 
							{// collision bas du cadre: changement de direction  
								balldirX=18;bdirx=-bdirx; // inverse la direction de la balle 
							} 
							 
							 
							 
							 
							 
							 
							 
							if (balldirX>34 & balldirX<42)// collision ball/raquette: changement de direction 
								{ 
								//if ((balldirY+1>yplayer-1 & balldirY+1<yplayer+24) | (balldirY+4>yplayer-1 & balldirY+4<yplayer+24)) 
								if (balldirY>yplayer-1 & balldirY<yplayer+24)  
									{ 
									balldirX=42;bdirx=-bdirx; 
									// bruitage balle raquette: 
									silence(); 
									abcmusic(0,abcball1); 
									 
									//centre de la raquette : 
									//if ((balldirY+1>yplayer+7 & balldirY+1<yplayer+16) | (balldirY+4>yplayer+7 & balldirY+4<yplayer+16)) 
									if (balldirY>yplayer+7 & balldirY<yplayer+16) 
										{ 
										if (dirf==1)	{dirf=0;oboucl=1;}  
										if (dirf==2)	{dirf=1;oboucl=1;}  
										if (dirf==3)	{dirf=2;oboucl=1;}  
										 
										if (dirf==-1)	{dirf=0;oboucl=1;}  
										if (dirf==-2)	{dirf=-1;oboucl=1;} 
										if (dirf==-3)	{dirf=-2;oboucl=1;}  
										} 
									if (oboucl==1)	{oboucl=0;goto test_finish;} 
									 
									//gauche de la raquette : 
									//if ((balldirY+1>yplayer+2 & balldirY+1<yplayer+8) | (balldirY+4>yplayer+2 & balldirY+4<yplayer+8)) 
									if (balldirY>yplayer+2 & balldirY<yplayer+8) 
										{ 
										//if (dirf==-1)	{dirf=-2;oboucl=1;} 
										if (dirf==-1)	{dirf=-1;oboucl=1;} 
										if (dirf==-3)	{dirf=-2;oboucl=1;}  
										 
										if (dirf==1)	{dirf=-1;oboucl=1;}  
										if (dirf==2)	{dirf=-2;oboucl=1;}  
										if (dirf==3)	{dirf=-2;oboucl=1;}  
										 
										if (dirf==0)	{dirf=-1;oboucl=1;}  
										} 
									if (oboucl==1)	{oboucl=0;goto test_finish;} 
									 
									//droite de la raquette : 
									//if ((balldirY+1>yplayer+15 & balldirY+1<yplayer+21) | (balldirY+4>yplayer+15 & balldirY+4<yplayer+21)) 
									if (balldirY>yplayer+15 & balldirY<yplayer+21) 
										{ 
										//if (dirf==1)	{dirf=2;oboucl=1;} 
										if (dirf==1)	{dirf=1;oboucl=1;} 
										if (dirf==3)	{dirf=2;oboucl=1;}  
										 
										if (dirf==-1)	{dirf=1;oboucl=1;}  
										if (dirf==-2)	{dirf=2;oboucl=1;}  
										if (dirf==-3)	{dirf=2;oboucl=1;}  
										 
										if (dirf==0)	{dirf=1;oboucl=1;}  
										} 
									if (oboucl==1)	{oboucl=0;goto test_finish;} 
									 
									//exgauche de la raquette : 
									//if ((balldirY+1>yplayer-1 & balldirY+1<yplayer+3) | (balldirY+4>yplayer-1 & balldirY+4<yplayer+3)) 
									if (balldirY>yplayer-1 & balldirY<yplayer+3) 
										{ 
										if (dirf==-1)	{dirf=-2;oboucl=1;}//break; 
										if (dirf==-2)	{dirf=-3;oboucl=1;}  
										 
										if (dirf==1)	{dirf=-2;oboucl=1;}  
										if (dirf==2)	{dirf=-3;oboucl=1;}  
										if (dirf==3)	{dirf=-3;oboucl=1;}  
										 
										if (dirf==0)	{dirf=-2;oboucl=1;}  
										} 
									if (oboucl==1)	{oboucl=0;goto test_finish;} 
									 
									//exdroite de la raquette : 
									//if ((balldirY+1>yplayer+20 & balldirY+1<yplayer+24) | (balldirY+4>yplayer+20 & balldirY+4<yplayer+24)) 
									if (balldirY>yplayer+20 & balldirY<yplayer+24) 
										{ 
										if (dirf==1)	{dirf=2;oboucl=1;} 
										if (dirf==2)	{dirf=3;oboucl=1;}  
										 
										if (dirf==-1)	{dirf=2;oboucl=1;}  
										if (dirf==-2)	{dirf=3;oboucl=1;}  
										if (dirf==-3)	{dirf=3;oboucl=1;}  
										 
										if (dirf==0)	{dirf=2;oboucl=1;}  
										} 
									if (oboucl==1)	{oboucl=0;goto test_finish;} 
									}  
									 
									 
									 
									 
									 
									 
									 
									 
								}  
								else 
								{ 
								// ici peut être test collision balle/brique 
								}  
						}  
			//}  
			 
test_finish: 
			 
		if (joystick & JOY_DOWN)	{ 
									yplayer=yplayer+2; 
									if (yplayer>75)	{yplayer=75;} // (102-24 = 78-3 = 75) ; 24 = largeur de la raquette 
									} 
		if (joystick & JOY_UP)		{ 
									yplayer=yplayer-2; 
									if (yplayer<3)	{yplayer=3;}  
									} 
		} 
	   
	SCBX(SCBball)=balldirX;SCBY(SCBball)=balldirY; // appliquer les variables balldirX et balldirY aux coordonnées de la balle. 
	SCBY(SCBr) = yplayer; 
	 
	 
ShowScreen(); // Coordonnées de toutes les briques (voir au début de ce joyeux code). 
	 
	 
	// Affichage fond jeu + info commande + raquette + balle + fleche directionnelle + briques : 
	DrawSprite(SCBg); 
 
	 
	} 
	 
/************************************************************************** 
**************************************************************************/  
/* test 
   
	//atest=balldirX;//yplayer;//speedX;//dirf;//etape; 
 
	atest=etape;//SCBCTL0(SCBbr); 
	unite = atest % 10; 
	dizaine = atest / 10 % 10; 
	centaine = atest / 100 % 10;   
	 
  // unité:   
  SCBDATA(SCBchiffres1) = chiffrestab[unite%14]; 
  SCBX(SCBchiffres1) = 100; 
  SCBY(SCBchiffres1) = 53;   
 
  // dizaine:   
  SCBDATA(SCBchiffres2) = chiffrestab[dizaine%14]; 
  SCBX(SCBchiffres2) = 100; 
  SCBY(SCBchiffres2) = 53-8;  	 
 
  // centaine:   
  SCBDATA(SCBchiffres3) = chiffrestab[centaine%12]; // 0 
  SCBX(SCBchiffres3) = 100; 
  SCBY(SCBchiffres3) = 53-16;    
   
*/ 
  //SCBDATA(SCBchiffres1) = chiffrestab[10%14]; 
  //SCBX(SCBchiffres1) = 40; 
  //SCBY(SCBchiffres1) = yplayer; 
  //SCBY(SCBchiffres1) = yplayer+23;   
   
/*** Tests important des coordonnées des images ***/  
//	SCBDATA(SCBchiffres1) = chiffrestab[10%14]; 
//	SCBX(SCBchiffres1) = SCBX(SCBball); 
//	SCBY(SCBchiffres1) = SCBY(SCBball); 
/*** fin de ces tests de coordonnée ***/  
   
 // DrawSprite(SCBchiffres1); // Affichage valeur testé		 
 
 
	 
	 
  //if (etape==2 & gspause>0)  
  if (gspause>0)	{ 
					SCBDATA(SCB) = ipause; 
					SCBHS(SCB) = 256;SCBVS(SCB) = 256;  
					SCBX(SCB) = 73;SCBY(SCB) = 30; 
					DrawSprite(SCB);	 
					} 
  
  //Vsync(); 
  //SwapBuffers(); 
   
} 
   
/************************************************************************** 
**                     FIN de la BOUCLE PRINCIPALE                       ** 
**************************************************************************/    
   
 } 


Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./11
26.09.2010 - 493
14:36  Beaupixel - Posté : 28-11-2010  M

Pen^2 (./9) :
Ben la norme C K & R est la première norme du C, telle que définie par les auteurs du langage (Kernigan & Ritchie)
Il y a eu des petites modifications ensuite.
merci :)


Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./12
30.06.2001 - 50024
10:21  Godzil - Posté : 29-11-2010  M

Petites ? J'aurais dit grosse perso :D


Proud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-

./13
10.06.2001 - 22559
11:19  Pen^2 - Posté : 29-11-2010  M

:p



./14
15.01.2007 - 1418
13:15  RYGAR - Posté : 02-12-2010  M

beauregard (./7) :
exe version 0.2 : img Fichier joint : fission_02.o img


Tu aurais pu prévenir que les briques c'était juste pour faire joli j'ai passé des heures à essayer de le briser moi #picol#





Mon site sur la LYNX :ZoneLynx
./15
26.09.2010 - 493
21:10  Beaupixel - Posté : 02-12-2010  M

RYGAR (./14) :
beauregard (./7) :
exe version 0.2 : img Fichier joint : fission_02.o img


Tu aurais pu prévenir que les briques c'était juste pour faire joli j'ai passé des heures à essayer de le briser moi #picol#
Une 0.2 est rarement jouable. Tu n'as pas noté #crayon# de bug et ça c'est cool. :) Tu peux déjà étudier l'interaction balle/raquette. #loupe#
Quand aux interactions balle/briques, après avoir étudié de près le code Moon Patrol (mon jeu préféré sur VCS2600 soit dis en passant) j'ai enfin trouvé la soluce dans la soirée, joie ! :)


Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./16
15.01.2007 - 1418
08:49  RYGAR - Posté : 06-12-2010  M

beauregard (./15) :
Une 0.2 est rarement jouable. Tu n'as pas noté img de bug et ça c'est cool. img Tu peux déjà étudier l'interaction balle/raquette. img


J'ai pas "encore" noté de bug mais j'ai néanmoins une petite question :
Parfois si on ne bouge pas la raquette la balle se met à rebondir de manière verticale raquette/haut du tableau, la balle effectue environs 3/4 aller retours puis d'un coup l'angle se modifie et au lieu de repartir en ligne droite, la balle part à nouveau en diagonale et la partie reprend.
Le problème c'est que je n'arrive pas à trouver dans ton code la commande qui définie cette instruction...?


Mon site sur la LYNX :ZoneLynx
./17
26.09.2010 - 493
14:23  Beaupixel - Posté : 09-12-2010  M

RYGAR (./16) :
beauregard (./15) :
Une 0.2 est rarement jouable. Tu n'as pas noté img de bug et ça c'est cool. img Tu peux déjà étudier l'interaction balle/raquette. img


J'ai pas "encore" noté de bug mais j'ai néanmoins une petite question :
Parfois si on ne bouge pas la raquette la balle se met à rebondir de manière verticale raquette/haut du tableau, la balle effectue environs 3/4 aller retours puis d'un coup l'angle se modifie et au lieu de repartir en ligne droite, la balle part à nouveau en diagonale et la partie reprend.
Le problème c'est que je n'arrive pas à trouver dans ton code la commande qui définie cette instruction...?

Quand la balle touche le plafond, j'utilise la commande random pour définir sa prochaine direction :

608 if (bdirx==1) { // Si la balle monte
609 if (balldirX>154)
610 {// collision haut du cadre: changement de direction
611 balldirX=154;bdirx=-bdirx; // inverse la direction de la balle
612 if (dirf==0) {
613 basar=random()%3; // de 0 à 2
614 --basar;dirf=basar; // -1 ou 0 ou 1
615 }
616 // bruitage balle cadre:
617 silence();
618 abcmusic(1,abcball2);
619 }


Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./18
26.09.2010 - 493
20:36  Beaupixel - Posté : 09-12-2010  M

Fission version 0.31
12 tableaux jouable les amis :)

exe: http://www.mirari.fr/A0CK

source:
http://www.mirari.fr/cY3U

source extension .h :
http://www.mirari.fr/VEpb

info brique
img
(n'oubliez pas que le jeu se joue la console tenu à la verticale)


Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./19
15.01.2007 - 1418
18:52  RYGAR - Posté : 19-12-2010  M

Alors alors, Passons sur les félicitations pour ton boulot rapide et impressionnant et ma joie de pouvoir enfin jouer à un arkanoide sur lynx pour ce concentrer sur les défauts :p

Tout d'abord, le problème que je détaillais plus haut concernant le rebond mur/raquette en ligne droite devient omniprésent dans ta dernière mise a jour, autant quand il n'y avait pas de brique la balle ne faisait que deux ou trois aller retour en ligne droite autant là il suffit de lancer la balle avec un angle verticale et de ne pas bouger la raquette pour se faire toute les briques placées sur la même trajectoire. Ensuite lorsqu'il n'y a plus de brique et si on ne bouge toujours pas la raquette la balle fera pas loin de 5/6 aller retour mur/raquette avant de brusquement changer de direction.

Ensuite il y a parfois de gros problème de collisions, la balle qui passe à travers trois briques sans rebondir (mais en les détruisant tout de même) ou bien des rebonds qui se font non pas sur le bord d'une brique mais sur son centre notamment dans les niveaux avec des briques indestructibles, les rebonds de la balle sur ces briques sont presque toujours aberrant.

Sur ce je retourne essayer de passer le 10em tableaux.

Et je ne résiste quand même pas, Wahou !!! Quel boulot impressionnant tu fais et quel plaisir de voir de nouveaux homebrew pour la Lynx !!!


Mon site sur la LYNX :ZoneLynx
./20
26.09.2010 - 493
18:44  Beaupixel - Posté : 25-12-2010  M

oui, après réflexion, je pense que j'ai peut être pris le problème à l'envers concernant la collision balle/brique.


Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./21
26.09.2010 - 493
22:12  Beaupixel - Posté : 27-01-2011  M

nouvelle version 0.5
http://www.mirari.fr/pIM7
explication X:
img
explication Y:
img

source .c
http://www.mirari.fr/hz7b

source .h
http://www.mirari.fr/HZ0P

jaquette face:
img


Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./22
15.01.2007 - 1418
16:11  RYGAR - Posté : 28-01-2011  M

Ça commence à prendre vraiment forme là :p

J'ai pu aller jusqu'au niveau 11 ou je suis resté bloqué à cause d'un bug.

Je vais essayer d'expliquer le problème :
Dans ce niveau tu as une ligne de 5 briques destructibles enfermées entre deux lignes de briques indestructibles, pour les briques destructibles citées aux extrémités gauche et droite pas de souci dés que la balle les touche elles disparaissent par contre pour les trois briques situées au centre lorsque la balle commence à rebondir entre les deux lignes indestructible l'écran nous affiche deux balles fixes l'une sur l'autre qui avance sans rebondir (ou si on ce fit au son on dirait que la balle rebondi tellement vite que l'affichage ne suit plus) et passent à travers les trois briques normalement destructibles sans leur faire de mal.
img


Mon site sur la LYNX :ZoneLynx
./23
26.09.2010 - 493
14:16  Beaupixel - Posté : 29-01-2011  M

RYGAR (./22) :
Ça commence à prendre vraiment forme là :p

J'ai pu aller jusqu'au niveau 11 ou je suis resté bloqué à cause d'un bug.

Je vais essayer d'expliquer le problème :
Dans ce niveau tu as une ligne de 5 briques destructibles enfermées entre deux lignes de briques indestructibles, pour les briques destructibles citées aux extrémités gauche et droite pas de souci dés que la balle les touche elles disparaissent par contre pour les trois briques situées au centre lorsque la balle commence à rebondir entre les deux lignes indestructible l'écran nous affiche deux balles fixes l'une sur l'autre qui avance sans rebondir (ou si on ce fit au son on dirait que la balle rebondi tellement vite que l'affichage ne suit plus) et passent à travers les trois briques normalement destructibles sans leur faire de mal.
img
hier j'ai testé le 11ème tableau, et effectivement, la balle traverse même des briques normalement destructibles. Je pense trouver la soluce, mais aujourd'hui mon PC de dev a rendu l'âme: plusieurs bip horrible à son démarrage, hier et avant hier déjà il fallait redémarrer plusieurs fois la machine, mais là, couic. #couic#
J'ai enlevé les barrettes de mémoire, la cartes graphique, mais rien y fait, faut que je passe de nouveau à la caisse, grml.


Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./24
16.06.2001 - 55196
14:30  squalyl - Posté : 29-01-2011  M

t'as pas perdu ton code en cours de dev, quand même ?! :(


For most people, good enough is near enough. For the few, good enough is never enough.
Nspire wiki
CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES
./25
15.01.2007 - 1418
15:03  RYGAR - Posté : 29-01-2011  M

beauregard (./23) :
mais aujourd'hui mon PC de dev a rendu l'âme: plusieurs bip horrible à son démarrage, hier et avant hier déjà il fallait redémarrer plusieurs fois la machine, mais là, couic. img


C'est moche ça :(
Comme squalyl j'espère que tu avais ailleurs des sauvegardes de tes programmes ou que le disque dur est réutilisable.



Mon site sur la LYNX :ZoneLynx
./26
30.06.2001 - 50024
15:04  Godzil - Posté : 29-01-2011  M

Laisse le reposer un peu, on sais jamais, et backup si il veux revenir a la vie !


Proud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-

./27
27.04.2006 - 30234
17:19  Zerosquare - Posté : 29-01-2011  @_ö

Essaie aussi de changer l'alim, c'est un problème assez courant pour ce genre de symptômes.


Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
./28
26.09.2010 - 493
20:34  Beaupixel - Posté : 29-01-2011  M

Je sauvegarde systématiquement sur clé USB.

Le problème ne vient pas du DD, des barrettes mémoires ou encore de la carte graphique.

Ce matin, je me suis dis: "le problème doit venir d'une barrette mémoire, comme j'ai pu le lire deci delà sur le web, pas bien grave." J'en enlève 1, "bip, bip", 2, "bip, bip", 3, "bip, bip" et enfin la 4ème "bip, bip", aie. J'enlève aussi la carte graphique "bip,bip", le disque dur, "bip,bip" (trop de bip dans une même phrase, hein ?).

J'ai changé l'alim l'an dernier, mais je peux toujours remettre l'ancienne pour voir.

merci pour votre soutient. :)

ps: pour le nombre de bip, il y en a 5, peut être qu'il s'agit là d'un problème particulier bien définie ??

après recherche: 5 bips courts = Erreur de processeur



Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./29
26.09.2010 - 493
22:35  Beaupixel - Posté : 10-02-2011  M

nouvelle version, la 0.6 :
http://www.mirari.fr/tA95
img
source .c
http://www.mirari.fr/aP8L
source .h
http://www.mirari.fr/RjQB

bon jeu ! :)

Edité par beauregard le 10-02-2011 à 22:46:37.

Si comme moi votre rêve c'est de proposer une console, dans un esprit un peu retro, et que vous cherchez un associé, mp moi.
Megadrive
http://www.yaronet.com/posts.php?sl=172&s=143753
Lynx
http://www.yaronet.com/sujets.php?s=&f=255
./Publicité AdSense
 « - 1/2 - Suivant » :: Pages
 Index » Forum Atari :: Vince//Nymphodusse//piwi » Developpeurs Lynx (33r) » Fission

./Poster un nouveau message. - Ouvrir dans une nouvelle fenêtre
Login : Mot de passe :

url - image - media  
spoiler - pre - fixed
quote - box - hr
poll - code





Smileys
Smileys perso
Pièce jointe
     Flood control (?) :    
Les messages postés sont la propriété de leurs auteurs. Nous ne sommes pas responsables de leurs contenus.

» yN ©1624 - Aide / Charte / Crédits
145ms | Statistiques