File: fission031.c - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

0001: /*
0002:  Fission (casse brique) 0.31 - LYNX - kit BLL (newcc65)
0003:  08/12/2010
0004:  console tenu � la verticale
0005:  Handy/Option/Rotate Screen(Right)
0006:  D-pad et bouton pause
0007:  LYNX - video game */
0008:  
0009: #include <stdlib.h>
0010: #include <lynx.h>
0011: #include <lynxlib.h>
0012: //{
0013: extern void silence();
0014: extern void abcmusic();
0015: extern void update_music();
0016: 
0017: char abcmusic0[];
0018: char abcmusic1[];
0019: char abcmenu1[];
0020: char abcmenu2[];
0021: char abcball1[];
0022: char abcball2[];
0023: char abcball3[];
0024: char abcaptvir[];
0025: char abcbric[];
0026: 
0027: #asm
0028:         xref _abcmenu1
0029:         xref _abcmenu2
0030:         xref _abcball1
0031:         xref _abcbric
0032:         xref _abcaptvir
0033:         xref _abcboum
0034:         xref _abcpanne
0035:         xref _abces
0036:         xref _abcmusic0
0037:         xref _abcmusic1
0038: _abcmenu1
0039:         dc.b "O2X7I1V32T20R54H7K8"
0040:         dc.b "|:C4"
0041:         dc.b 0
0042: _abcmenu2
0043:         dc.b "O3X7I1V16T20R54H7K12"
0044:         dc.b "|:c2"
0045:         dc.b 0
0046: ; ball :
0047: _abcball1
0048:         dc.b "O4X3I1V70T20R32H2K1"
0049:         dc.b "|:C4"
0050: _abcball2
0051:         dc.b "O4X3I1V70T20R32H2K1"
0052:         dc.b "|:D4"
0053: _abcball3
0054:         dc.b "O4X3I1V70T20R32H2K1"
0055:         dc.b "|:F4"
0056: _abcaptvir
0057:         dc.b "O2X15I1V32T1R14H6K30"
0058:         dc.b "|:C4D4C4E4D4C4D4"
0059:         dc.b 0
0060: _abcbric
0061:         dc.b "O4X7I1V16T20R54H7K12"
0062:         dc.b "|:C1"
0063:         dc.b 0
0064: _abcmusic0
0065:         dc.b "O2X3I1V70T20R54H2K1"
0066:         dc.b "|:C4O3T2C4"
0067:         dc.b 0
0068: _abcmusic1
0069:         dc.b "O2X7I0V45T20R80H8K1"
0070:         dc.b "|:C4D4E4F4"
0071:         dc.b "C4D4E4F4"
0072:         dc.b "c4B4A4E4"
0073:         dc.b "c4B4A4E4"
0074:         dc.b "E4F4G4A4"
0075:         dc.b "E4F4G4A4"
0076:         dc.b "C4D4E4F4"
0077:         dc.b "C4D4E4F4:"
0078:         dc.b 0
0079: #endasm
0080: //}
0081: 
0082: /* LYNX-specific #defines: */
0083: #define JOY_RIGHT               0x10
0084: #define JOY_LEFT                0x20
0085: #define JOY_DOWN                0x40
0086: #define JOY_UP                  0x80
0087: 
0088: #define BUTTON_OPTION1  0x08
0089: #define BUTTON_OPTION2  0x04
0090: #define BUTTON_LEFT             0x02
0091: #define BUTTON_RIGHT    0x01
0092: 
0093: #define BUTTON_PAUSE    0x01
0094: 
0095: #define SC BSTRETC H(a) (*(uint *)((a)+15)) // d�formation, macro
0096: #define SC BTILT(a) (*(uint *)((a)+17)) // d�formation, macro
0097: 
0098: uchar SCREEN[8160]       at (MEMTOP-16320);
0099: uchar RENDER[8160]       at (MEMTOP-8160);
0100: 
0101: uchar pali[]={
0102:         0x00,0x0F,0x02,0x03,0x0A,0x04,0x05,0x06,0x07,0x0B,0x08,0x09,0x04,0x0B,0x0C,0x01,
0103:         0x00,0xFF,0x22,0x33,0xAA,0x44,0x55,0x66,0x77,0x00,0x88,0x99,0x53,0xBB,0xCC,0x11};
0104: uchar palg[]={
0105:         0x00,0x0F,0x0A,0x00,0x03,0x05,0x08,0x0A,0x0C,0x0E,0x0D,0x00,0x04,0x03,0x02,0x00,
0106:         0x00,0xFF,0xF0,0x0F,0x3F,0x5F,0x8F,0xAF,0xCF,0xEF,0x28,0xF8,0x53,0x63,0x52,0x21};
0107: 
0108: 
0109: uchar palr[]={
0110:         0x00,0x0F,0x0A,0x00,0x03,0x05,0x08,0x0A,0x0C,0x0E,0x0D,0x00,0x04,0x00,0x02,0x00,
0111:         0x00,0xFF,0xF0,0x0F,0x3F,0x5F,0x8F,0xAF,0xCF,0xEF,0x28,0xF8,0x53,0x0F,0x52,0x21};
0112: /*****************************************************************************
0113: **  Ci-dessous, le contenu du fichier batchfile pour l'image imole.bmp      **
0114:                                                                             **
0115: set image01=imole.bmp
0116: SPRPCK -t6 -S072072 -r001001 -a036036 -p0 %image01%
0117: cmd
0118:                                                                             **
0119: **  Le point d'action de l'image imole est mis au centre de celle-ci,       **
0120: **  72/2 = 36 (-a036036). Le but de la manoeuvre est de r�aliser un zoom    **
0121: **  correctement.                                                           **
0122: *****************************************************************************/
0123: 
0124: extern uchar ititre[];  // image titre, d'une taille de 15*49;
0125: extern uchar iname[];  // image nom/pr�nom de auteur, d'une taille de 93*9;
0126: extern uchar imole[];  // image molecule, d'une taille de 72*72;
0127: uchar SCB[];
0128: #asm        
0129: _SCB      dc.b $c7,$10,$20
0130:           dc.w 0,0
0131:           dc.w 0,0,$100,$100
0132:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0133: #endasm
0134: // ------------------------------------
0135: extern uchar fondg[]; // image fond game, d'une taille de 160*102;
0136: uchar SCBg[];
0137: 
0138: #asm        
0139: _SCBg      dc.b $c0,$10,$20
0140:           dc.w 0,0
0141:           dc.w 0,0,$100,$100
0142:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0143: ;
0144: #endasm
0145: // ------------------------------------
0146: extern uchar pushup[]; // image appuyez sur haut, d'une taille de 48*35;
0147: uchar SCBp[];
0148: #asm        
0149: _SCBp      dc.b $c7,$10,$20
0150:           dc.w 0,0
0151:           dc.w 0,0,$100,$100
0152:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0153: #endasm
0154: // ------------------------------------
0155: /*****************************************************************************
0156: **  Ci-dessous, le contenu du fichier batchfile pour l'image raquet.bmp      **
0157: set image01=raquet.bmp
0158: SPRPCK -t6 -S008025 -a000012 -p0 %image01%
0159: cmd
0160: *****************************************************************************/
0161: extern uchar raquet[]; // image raquette, d'une taille de 8*24;
0162: uchar SCBr[];
0163: #asm        
0164: _SCBr      dc.b $c7,$10,$20
0165:           dc.w 0,0
0166:           dc.w 0,0,$100,$100
0167:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0168: #endasm
0169: // ------------------------------------
0170: // clip du sprite chiffres, chacun d'une taille de 8*8: 0123456789.LEV
0171: extern uchar bc000000[];
0172: extern uchar bc000001[];
0173: extern uchar bc000002[];
0174: extern uchar bc000003[];
0175: extern uchar bc000004[];
0176: extern uchar bc000005[];
0177: extern uchar bc000006[];
0178: extern uchar bc000007[];
0179: extern uchar bc000008[];
0180: extern uchar bc000009[];
0181: extern uchar bc000010[];
0182: extern uchar bc000011[];
0183: extern uchar bc000012[];
0184: extern uchar bc000013[];
0185: 
0186: uchar *chiffrestab[14] = {bc000000, bc000001, bc000002, bc000003, bc000004,
0187:                          bc000005, bc000006, bc000007, bc000008, bc000009,
0188:                          bc000010, bc000011, bc000012, bc000013};
0189: uchar SCBchiffres1[]; // d�claration d'un nouveau controleur de sprite (test)
0190: uchar SCBchiffres2[]; // d�claration d'un nouveau controleur de sprite (test)
0191: uchar SCBchiffres3[]; // d�claration d'un nouveau controleur de sprite (test)
0192: uchar SCBchiffres4[]; // d�claration d'un nouveau controleur de sprite (test)
0193: uchar SCBchiffres5[]; // d�claration d'un nouveau controleur de sprite (test)
0194: 
0195: uchar SCBscore1[]; // d�claration d'un nouveau controleur de sprite (score unit�)
0196: uchar SCBscore2[]; // d�claration d'un nouveau controleur de sprite (score dizaine)
0197: uchar SCBscore3[]; // d�claration d'un nouveau controleur de sprite (score centaine)
0198: uchar SCBscore4[]; // d�claration d'un nouveau controleur de sprite (score millier)
0199: 
0200: uchar SCBtexte1[]; // d�claration d'un nouveau controleur de sprite (level)
0201: uchar SCBtexte2[]; // d�claration d'un nouveau controleur de sprite (level)
0202: uchar SCBtexte3[]; // d�claration d'un nouveau controleur de sprite (level)
0203: uchar SCBtexte4[]; // d�claration d'un nouveau controleur de sprite (level)
0204: uchar SCBtexte5[]; // d�claration d'un nouveau controleur de sprite (level)
0205: 
0206: uchar SCBlife[]; // d�claration d'un nouveau controleur de sprite (score unit�)
0207: 
0208: #asm
0209: _SCBchiffres1     dc.b $c7,$10,$20
0210:           dc.w 0,0
0211:           dc.w 0,0,$100,$100
0212:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0213: ;
0214: _SCBchiffres2     dc.b $c7,$10,$20
0215:           dc.w 0,0
0216:           dc.w 0,0,$100,$100
0217:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0218: ;
0219: _SCBchiffres3     dc.b $c7,$10,$20
0220:           dc.w 0,0
0221:           dc.w 0,0,$100,$100
0222:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0223: ;
0224: _SCBchiffres4     dc.b $c7,$10,$20
0225:           dc.w 0,0
0226:           dc.w 0,0,$100,$100
0227:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0228: ;
0229: _SCBchiffres5     dc.b $c7,$10,$20
0230:           dc.w 0,0
0231:           dc.w 0,0,$100,$100
0232:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0233: ;
0234: _SCBscore1     dc.b $c7,$10,$20
0235:           dc.w 0,0
0236:           dc.w 0,0,$100,$100
0237:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0238: ;
0239: _SCBscore2     dc.b $c7,$10,$20
0240:           dc.w 0,0
0241:           dc.w 0,0,$100,$100
0242:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0243: ;
0244: _SCBscore3     dc.b $c7,$10,$20
0245:           dc.w 0,0
0246:           dc.w 0,0,$100,$100
0247:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0248: ;
0249: _SCBscore4     dc.b $c7,$10,$20
0250:           dc.w 0,0
0251:           dc.w 0,0,$100,$100
0252:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0253: ;
0254: _SCBtexte1     dc.b $c7,$10,$20
0255:           dc.w 0,0
0256:           dc.w 0,0,$100,$100
0257:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0258: ;
0259: _SCBtexte2     dc.b $c7,$10,$20
0260:           dc.w 0,0
0261:           dc.w 0,0,$100,$100
0262:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0263: ;
0264: _SCBtexte3     dc.b $c7,$10,$20
0265:           dc.w 0,0
0266:           dc.w 0,0,$100,$100
0267:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0268: ;
0269: _SCBtexte4     dc.b $c7,$10,$20
0270:           dc.w 0,0
0271:           dc.w 0,0,$100,$100
0272:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0273: ;
0274: _SCBtexte5     dc.b $c7,$10,$20
0275:           dc.w 0,0
0276:           dc.w 0,0,$100,$100
0277:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0278: ;
0279: _SCBlife     dc.b $c7,$10,$20
0280:           dc.w 0,0
0281:           dc.w 0,0,$100,$100
0282:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0283: #endasm
0284: // ------------------------------------
0285: // set image01=fdir.bmp
0286: // SPRPCK -t6 -S018015 -r007001 -o000000 -i126015 -p0 %image01% fd
0287: // cmd
0288: // clip du sprite fleches (7 images d'une taille de 18*15).
0289: extern uchar fd000000[];
0290: extern uchar fd000001[];
0291: extern uchar fd000002[];
0292: extern uchar fd000003[];
0293: extern uchar fd000004[];
0294: extern uchar fd000005[];
0295: extern uchar fd000006[];
0296: 
0297: uchar *fdtab[7] = {fd000000, fd000001, fd000002, fd000003, fd000004,
0298:                    fd000005, fd000006};
0299: uchar SCBfd[]; // d�claration d'un nouveau controleur de sprite
0300: #asm
0301: _SCBfd     dc.b $c7,$10,$20
0302:           dc.w 0,0
0303:           dc.w 0,0,$100,$100
0304:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0305: #endasm
0306: // ------------------------------------
0307: /*****************************************************************************
0308: **  Ci-dessous, le contenu du fichier batchfile pour l'image fball.bmp      **
0309:                                                                             **
0310: set image01=fball.bmp
0311: SPRPCK -t6 -S005005 -r001001 -a002002 -p0 %image01%
0312: cmd
0313:                                                                             **
0314: **  Le point d'action de l'image fball est mis au centre de celle-ci,       **
0315: **  0 1 2 3 4   --> la valeur 2 correspond exactement au centre (-a002002)  **
0316: *****************************************************************************/
0317: 
0318: extern uchar fball[]; // image balle, d'une taille de 5*5;
0319: uchar SCBball[];
0320: #asm        
0321: _SCBball      dc.b $c7,$10,$20
0322:           dc.w 0,0
0323:           dc.w 0,0,$100,$100
0324:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0325: #endasm
0326: // ------------------------------------
0327: // ------------------------------------
0328: //char fbriq[]; //
0329: 
0330: // clip du sprite brique, d'une taille de 10*14 : 0(d�truite), 1(normale), 2(dure) et 3(incassable).
0331: extern uchar br000000[];
0332: extern uchar br000001[];
0333: extern uchar br000002[];
0334: extern uchar br000003[];
0335: 
0336: uchar *brtab[4] = {br000000, br000001, br000002, br000003};
0337: 
0338: // nombreuses d�clarations des nouveaux controleurs de sprite pour les briques.
0339: uchar SCBbr01[];
0340: uchar SCBbr02[];
0341: uchar SCBbr03[];
0342: uchar SCBbr04[];
0343: uchar SCBbr05[];
0344: uchar SCBbr06[];
0345: uchar SCBbr07[];
0346: uchar SCBbr08[];
0347: uchar SCBbr09[];
0348: uchar SCBbr10[];
0349: uchar SCBbr11[];
0350: uchar SCBbr12[];
0351: uchar SCBbr13[];
0352: uchar SCBbr14[];
0353: uchar SCBbr15[];
0354: uchar SCBbr16[];
0355: uchar SCBbr17[];
0356: uchar SCBbr18[];
0357: uchar SCBbr19[];
0358: uchar SCBbr20[];
0359: uchar SCBbr21[];
0360: uchar SCBbr22[];
0361: uchar SCBbr23[];
0362: uchar SCBbr24[];
0363: uchar SCBbr25[];
0364: #asm
0365: _SCBbr01     dc.b $c7,$10,$20
0366:           dc.w 0,0
0367:           dc.w 0,0,$100,$100
0368:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0369: ;
0370: _SCBbr02     dc.b $c7,$10,$20
0371:           dc.w 0,0
0372:           dc.w 0,0,$100,$100
0373:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0374: ;
0375: _SCBbr03     dc.b $c7,$10,$20
0376:           dc.w 0,0
0377:           dc.w 0,0,$100,$100
0378:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0379: ;
0380: _SCBbr04     dc.b $c7,$10,$20
0381:           dc.w 0,0
0382:           dc.w 0,0,$100,$100
0383:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0384: ;
0385: _SCBbr05     dc.b $c7,$10,$20
0386:           dc.w 0,0
0387:           dc.w 0,0,$100,$100
0388:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0389: ;
0390: _SCBbr06     dc.b $c7,$10,$20
0391:           dc.w 0,0
0392:           dc.w 0,0,$100,$100
0393:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0394: ;
0395: _SCBbr07     dc.b $c7,$10,$20
0396:           dc.w 0,0
0397:           dc.w 0,0,$100,$100
0398:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0399: ;
0400: _SCBbr08     dc.b $c7,$10,$20
0401:           dc.w 0,0
0402:           dc.w 0,0,$100,$100
0403:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0404: ;
0405: _SCBbr09     dc.b $c7,$10,$20
0406:           dc.w 0,0
0407:           dc.w 0,0,$100,$100
0408:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0409: ;
0410: _SCBbr10     dc.b $c7,$10,$20
0411:           dc.w 0,0
0412:           dc.w 0,0,$100,$100
0413:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0414: ;
0415: _SCBbr11     dc.b $c7,$10,$20
0416:           dc.w 0,0
0417:           dc.w 0,0,$100,$100
0418:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0419: ;
0420: _SCBbr12     dc.b $c7,$10,$20
0421:           dc.w 0,0
0422:           dc.w 0,0,$100,$100
0423:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0424: ;
0425: _SCBbr13     dc.b $c7,$10,$20
0426:           dc.w 0,0
0427:           dc.w 0,0,$100,$100
0428:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0429: ;
0430: _SCBbr14     dc.b $c7,$10,$20
0431:           dc.w 0,0
0432:           dc.w 0,0,$100,$100
0433:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0434: ;
0435: _SCBbr15     dc.b $c7,$10,$20
0436:           dc.w 0,0
0437:           dc.w 0,0,$100,$100
0438:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0439: ;
0440: _SCBbr16     dc.b $c7,$10,$20
0441:           dc.w 0,0
0442:           dc.w 0,0,$100,$100
0443:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0444: ;
0445: _SCBbr17     dc.b $c7,$10,$20
0446:           dc.w 0,0
0447:           dc.w 0,0,$100,$100
0448:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0449: ;
0450: _SCBbr18     dc.b $c7,$10,$20
0451:           dc.w 0,0
0452:           dc.w 0,0,$100,$100
0453:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0454: ;
0455: _SCBbr19     dc.b $c7,$10,$20
0456:           dc.w 0,0
0457:           dc.w 0,0,$100,$100
0458:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0459: ;
0460: _SCBbr20     dc.b $c7,$10,$20
0461:           dc.w 0,0
0462:           dc.w 0,0,$100,$100
0463:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0464: ;
0465: _SCBbr21     dc.b $c7,$10,$20
0466:           dc.w 0,0
0467:           dc.w 0,0,$100,$100
0468:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0469: ;
0470: _SCBbr22     dc.b $c7,$10,$20
0471:           dc.w 0,0
0472:           dc.w 0,0,$100,$100
0473:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0474: ;
0475: _SCBbr23     dc.b $c7,$10,$20
0476:           dc.w 0,0
0477:           dc.w 0,0,$100,$100
0478:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0479: ;
0480: _SCBbr24     dc.b $c7,$10,$20
0481:           dc.w 0,0
0482:           dc.w 0,0,$100,$100
0483:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0484: ;
0485: _SCBbr25     dc.b $c7,$10,$20
0486:           dc.w 0,0
0487:           dc.w 0,0,$100,$100
0488:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0489: #endasm
0490: // ------------------------------------ ouf !
0491: 
0492: // ------------------------------------
0493: extern char ipause[]; // image pause, d'une taille de 13*43;
0494: char SCBip[];
0495: #asm        
0496: _SCBip      dc.b $c7,$10,$20
0497:           dc.w 0,0
0498:           dc.w 0,0,$100,$100
0499:           dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0500: #endasm
0501: // ------------------------------------
0502: 
0503: 
0504: 
0505: 
0506: int posx,posy,level,score,xpush,ypush,relach;
0507: int i;
0508: char tempa,tempb,tempc,tempd,tempe,etape,filife,gspause,gsblip,mhaut,mbas; // de -128 � 127
0509: int molescx,molescy;
0510: int atest,unite,dizaine,centaine,millier,dmillier,horszone;
0511: 
0512: // ydirf --> d�placer l�g�rement la fl�che.
0513: // 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).
0514: // bdirx --> direction X de la balle (ici haut/bas car le jeu se joue la LYNX tenu � la verticale).
0515: char ydirf,dirf,bdirx,speedX,oboucl,basar,odirx,Xtemp,Ytemp,fsaut,upbri;
0516: int balldirX,balldirY,yplayer;
0517: 
0518: int compti, comptx, compty;
0519: int tligne,nbrbriqx, nbrbriqy;
0520: 
0521: // assembler vertical retrace syncronisation routine
0522: void Vsync()
0523: {
0524: #asm
0525: vretrace:
0526:         lda $fd0a
0527:         bne vretrace
0528: #endasm
0529: }
0530: 
0531: // Hors de l'assembleur, point de salut...
0532: // L'utilisation de la procedure suivante, lors de l'�cran d'action,
0533: // fait ramer le jeu.
0534: 
0535: void Fchiffres(clx,cly,classe)
0536: int clx,cly,classe;
0537:  {
0538:         SCBDATA(SCBchiffres1) = chiffrestab[classe%14];
0539:         SCBX(SCBchiffres1) = clx;
0540:         SCBY(SCBchiffres1) = cly;  
0541:         DrawSprite(SCBchiffres1);
0542:  }
0543: 
0544: 
0545: // brique : �tat + coordonn�es X et Y. brsco[25], bricol[5],
0546: int cible, bbcontact, rebcot, brnbr, brie[25], brif[25], brix[5]; // 5 car il y a 5 rang�es de briques sur la m�me ligne (ligne car ecran vertical).
0547: //int briy[25];
0548:  uchar *brdata[25];//25 briques test en ligne
0549: // uchar *brdatb[25];//25 briques test en colonne
0550:  uchar *brsco[25];
0551: 
0552:  
0553: ShowScreen()
0554: {
0555: 
0556: 
0557:         brix[0] = 85-horszone;
0558:   SCBX(SCBbr01) = brix[0];
0559: 
0560:   SCBX(SCBbr02) = brix[0];
0561: 
0562:   SCBX(SCBbr03) = brix[0];
0563: 
0564:   SCBX(SCBbr04) = brix[0];
0565: 
0566:   SCBX(SCBbr05) = brix[0];
0567: 
0568: 
0569:         brix[1] = 95-horszone;
0570:   SCBX(SCBbr06) = brix[1];
0571: 
0572:   SCBX(SCBbr07) = brix[1];
0573: 
0574:   SCBX(SCBbr08) = brix[1];
0575: 
0576:   SCBX(SCBbr09) = brix[1];
0577: 
0578:   SCBX(SCBbr10) = brix[1];
0579: 
0580: 
0581:         brix[2] = 105-horszone;
0582:   SCBX(SCBbr11) = brix[2];
0583: 
0584:   SCBX(SCBbr12) = brix[2];
0585: 
0586:   SCBX(SCBbr13) = brix[2];
0587: 
0588:   SCBX(SCBbr14) = brix[2];
0589: 
0590:   SCBX(SCBbr15) = brix[2];
0591: 
0592: 
0593:         brix[3] = 115-horszone;
0594:   SCBX(SCBbr16) = brix[3];
0595: 
0596:   SCBX(SCBbr17) = brix[3];
0597: 
0598:   SCBX(SCBbr18) = brix[3];
0599: 
0600:   SCBX(SCBbr19) = brix[3];
0601: 
0602:   SCBX(SCBbr20) = brix[3];
0603:  
0604:  
0605:         brix[4] = 125-horszone;
0606:   SCBX(SCBbr21) = brix[4];
0607: 
0608:   SCBX(SCBbr22) = brix[4];
0609: 
0610:   SCBX(SCBbr23) = brix[4];
0611: 
0612:   SCBX(SCBbr24) = brix[4];
0613: 
0614:   SCBX(SCBbr25) = brix[4];
0615:  
0616:  
0617:         if (horszone>0)
0618:                 {
0619:                 horszone=horszone-4;
0620:                 if (horszone<1)         horszone=0;
0621:                 }
0622: 
0623: }
0624: 
0625: 
0626: 
0627: /**************************************************************************
0628: 
0629: ATTENTION : Ci-dessous des tableaux de valeurs : ces valeurs ne pourront pas �tre modifi� par la suite.
0630: 
0631: La variable brie[25] sera donc utilis� pour modifier l'�tat des 25 briques.
0632: **************************************************************************/
0633: 
0634: #include "fifi.h"
0635: 
0636: /**************************************************************************
0637: **                                                                       **
0638: **                                                                       **
0639: **************************************************************************/
0640: char main()
0641: {
0642:   InitIRQ();
0643:   CLI;
0644: 
0645:   SetBuffers(SCREEN, RENDER ,0);
0646: 
0647: 
0648: 
0649:   posx=76;  
0650:   posy=47;  
0651:   xpush=-48;
0652:   ypush=34;
0653: //  SCBX(SCB) = 60;
0654: //  SCBY(SCB) = 42;
0655: //  SCBDATA(SCB) = ititre;
0656: 
0657: // 1er sprite chain� (fond + raquette)
0658:   SCBX(SCBg) = 0;
0659:   SCBY(SCBg) = 0;
0660:   SCBDATA(SCBg) = fondg;
0661: 
0662:   SCBNEXT(SCBg) = SCBp; // chainage de sprite info commande
0663:   SCBX(SCBp) = xpush;
0664:   SCBY(SCBp) = ypush;
0665:   SCBDATA(SCBp) = pushup;
0666: //SCBCTL0(SCBp)= 0x001;//99; // pas glop
0667:   SCBNEXT(SCBp) = SCBr; // chainage de sprite raquette
0668:   SCBX(SCBr) = -200;
0669:   SCBY(SCBr) = 0;
0670:   SCBDATA(SCBr) = raquet;  
0671: 
0672:   SCBNEXT(SCBr) = SCBfd; // chainage de sprite fleche directionnelle
0673:   SCBX(SCBfd) = 0;
0674:   SCBY(SCBfd) = 0;
0675:   SCBDATA(SCBfd) = fdtab[dirf%7];//fleche;  
0676: 
0677: horszone=150;// mettre les briques hors de l'�cran visible. Sprite brique d'une taille de 6*14, 0=normale 1=dure 2=incassable.
0678:   SCBNEXT(SCBfd) = SCBbr01; // chainage de la brique 01
0679:   SCBX(SCBbr01) = 85-horszone;
0680:   SCBY(SCBbr01) = 16;
0681:   SCBDATA(SCBbr01) = brtab[0%4]; //
0682:   SCBNEXT(SCBbr01) = SCBbr02; // chainage de la brique 02
0683:   SCBX(SCBbr02) = 85-horszone;
0684:   SCBY(SCBbr02) = 16+14;
0685:   SCBDATA(SCBbr02) = brtab[0%4]; //
0686:   SCBNEXT(SCBbr02) = SCBbr03; // chainage de la brique 03
0687:   SCBX(SCBbr03) = 85-horszone;
0688:   SCBY(SCBbr03) = 16+28;
0689:   SCBDATA(SCBbr03) = brtab[0%4]; //
0690:   SCBNEXT(SCBbr03) = SCBbr04; // chainage de la brique 04
0691:   SCBX(SCBbr04) = 85-horszone;
0692:   SCBY(SCBbr04) = 16+42;
0693:   SCBDATA(SCBbr04) = brtab[0%4]; //
0694:   SCBNEXT(SCBbr04) = SCBbr05; // chainage de la brique 05
0695:   SCBX(SCBbr05) = 85-horszone;
0696:   SCBY(SCBbr05) = 16+56;
0697:   SCBDATA(SCBbr05) = brtab[0%4]; //
0698: 
0699:   SCBNEXT(SCBbr05) = SCBbr06; // chainage de la brique 06
0700:   SCBX(SCBbr06) = 95-horszone;
0701:   SCBY(SCBbr06) = 16;
0702:   SCBDATA(SCBbr06) = brtab[0%4]; //
0703:   SCBNEXT(SCBbr06) = SCBbr07; // chainage de la brique 07
0704:   SCBX(SCBbr07) = 95-horszone;
0705:   SCBY(SCBbr07) = 16+14;
0706:   SCBDATA(SCBbr07) = brtab[0%4]; //
0707:   SCBNEXT(SCBbr07) = SCBbr08; // chainage de la brique 08
0708:   SCBX(SCBbr08) = 95-horszone;
0709:   SCBY(SCBbr08) = 16+28;
0710:   SCBDATA(SCBbr08) = brtab[0%4]; //
0711:   SCBNEXT(SCBbr08) = SCBbr09; // chainage de la brique 09
0712:   SCBX(SCBbr09) = 95-horszone;
0713:   SCBY(SCBbr09) = 16+42;
0714:   SCBDATA(SCBbr09) = brtab[0%4]; //
0715:   SCBNEXT(SCBbr09) = SCBbr10; // chainage de la brique 10
0716:   SCBX(SCBbr10) = 95-horszone;
0717:   SCBY(SCBbr10) = 16+56;
0718:   SCBDATA(SCBbr10) = brtab[0%4]; //
0719: 
0720:   SCBNEXT(SCBbr10) = SCBbr11; // chainage de la brique 11
0721:   SCBX(SCBbr11) = 105-horszone;
0722:   SCBY(SCBbr11) = 16;
0723:   SCBDATA(SCBbr11) = brtab[0%4]; //
0724:   SCBNEXT(SCBbr11) = SCBbr12; // chainage de la brique 12
0725:   SCBX(SCBbr12) = 105-horszone;
0726:   SCBY(SCBbr12) = 16+14;
0727:   SCBDATA(SCBbr12) = brtab[0%4]; //
0728:   SCBNEXT(SCBbr12) = SCBbr13; // chainage de la brique 13
0729:   SCBX(SCBbr13) = 105-horszone;
0730:   SCBY(SCBbr13) = 16+28;
0731:   SCBDATA(SCBbr13) = brtab[0%4]; //
0732:   SCBNEXT(SCBbr13) = SCBbr14; // chainage de la brique 14
0733:   SCBX(SCBbr14) = 105-horszone;
0734:   SCBY(SCBbr14) = 16+42;
0735:   SCBDATA(SCBbr14) = brtab[0%4]; //
0736:   SCBNEXT(SCBbr14) = SCBbr15; // chainage de la brique 15
0737:   SCBX(SCBbr15) = 105-horszone;
0738:   SCBY(SCBbr15) = 16+56;
0739:   SCBDATA(SCBbr15) = brtab[0%4]; //
0740: 
0741:   SCBNEXT(SCBbr15) = SCBbr16; // chainage de la brique 16
0742:   SCBX(SCBbr16) = 115-horszone;
0743:   SCBY(SCBbr16) = 16;
0744:   SCBDATA(SCBbr16) = brtab[0%4]; //
0745:   SCBNEXT(SCBbr16) = SCBbr17; // chainage de la brique 17
0746:   SCBX(SCBbr17) = 115-horszone;
0747:   SCBY(SCBbr17) = 16+14;
0748:   SCBDATA(SCBbr17) = brtab[0%4]; //
0749:   SCBNEXT(SCBbr17) = SCBbr18; // chainage de la brique 18
0750:   SCBX(SCBbr18) = 115-horszone;
0751:   SCBY(SCBbr18) = 16+28;
0752:   SCBDATA(SCBbr18) = brtab[0%4]; //
0753:   SCBNEXT(SCBbr18) = SCBbr19; // chainage de la brique 19
0754:   SCBX(SCBbr19) = 115-horszone;
0755:   SCBY(SCBbr19) = 16+42;
0756:   SCBDATA(SCBbr19) = brtab[0%4]; //
0757:   SCBNEXT(SCBbr19) = SCBbr20; // chainage de la brique 15
0758:   SCBX(SCBbr20) = 115-horszone;
0759:   SCBY(SCBbr20) = 16+56;
0760:   SCBDATA(SCBbr20) = brtab[0%4]; //
0761:  
0762:   SCBNEXT(SCBbr20) = SCBbr21; // chainage de la brique 21
0763:   SCBX(SCBbr21) = 125-horszone;
0764:   SCBY(SCBbr21) = 16;
0765:   SCBDATA(SCBbr21) = brtab[0%4]; //
0766:   SCBNEXT(SCBbr21) = SCBbr22; // chainage de la brique 22
0767:   SCBX(SCBbr22) = 125-horszone;
0768:   SCBY(SCBbr22) = 16+14;
0769:   SCBDATA(SCBbr22) = brtab[0%4]; //
0770:   SCBNEXT(SCBbr22) = SCBbr23; // chainage de la brique 23
0771:   SCBX(SCBbr23) = 125-horszone;
0772:   SCBY(SCBbr23) = 16+28;
0773:   SCBDATA(SCBbr23) = brtab[0%4]; //
0774:   SCBNEXT(SCBbr23) = SCBbr24; // chainage de la brique 24
0775:   SCBX(SCBbr24) = 125-horszone;
0776:   SCBY(SCBbr24) = 16+42;
0777:   SCBDATA(SCBbr24) = brtab[0%4]; //
0778:   SCBNEXT(SCBbr24) = SCBbr25; // chainage de la brique 25
0779:   SCBX(SCBbr25) = 125-horszone;
0780:   SCBY(SCBbr25) = 16+56;
0781:   SCBDATA(SCBbr25) = brtab[0%4]; //
0782: 
0783:   SCBNEXT(SCBbr25) = SCBball; // chainage de sprite balle
0784:   SCBX(SCBball) = -200;
0785:   SCBY(SCBball) = 0;
0786:   SCBDATA(SCBball) = fball;  
0787:  
0788:   SCBNEXT(SCBball) = SCBscore1; // chainage score unit�
0789:   SCBX(SCBscore1) = -10;
0790:   SCBY(SCBscore1) = 99-8;
0791:   SCBDATA(SCBscore1) = chiffrestab[0%14]; //
0792:   SCBNEXT(SCBscore1) = SCBscore2; // chainage score dizaine
0793:   SCBX(SCBscore2) = -10;
0794:   SCBY(SCBscore2) = 99-16;
0795:   SCBDATA(SCBscore2) = chiffrestab[0%14]; //
0796:   SCBNEXT(SCBscore2) = SCBscore3; // chainage score centaine
0797:   SCBX(SCBscore3) = -10;
0798:   SCBY(SCBscore3) = 99-24;
0799:   SCBDATA(SCBscore3) = chiffrestab[0%14]; //
0800:   SCBNEXT(SCBscore3) = SCBscore4; // chainage score millier
0801:   SCBX(SCBscore4) = -10;
0802:   SCBY(SCBscore4) = 99-32;
0803:   SCBDATA(SCBscore4) = chiffrestab[0%14]; //
0804:  
0805:   SCBNEXT(SCBscore4) = SCBlife; // chainage nombre de vie
0806:   SCBY(SCBlife) = 9;
0807:  
0808:  
0809:   //SCBX(SCBscore1) = -10;SCBX(SCBscore2) = -10;SCBX(SCBscore3) = -10;SCBX(SCBscore4) = -10; // score plac�s hors de l'�cran
0810:  
0811:   SCBNEXT(SCBlife) = SCBtexte1; // chainage texte 1
0812:   SCBX(SCBtexte1) = 0;SCBY(SCBtexte1) = -200;
0813:   SCBDATA(SCBtexte1) = chiffrestab[0%14]; //
0814:  
0815:   SCBNEXT(SCBtexte1) = SCBtexte2; // chainage texte 2
0816:   SCBX(SCBtexte2) = 0;SCBY(SCBtexte2) = -200;
0817:   SCBDATA(SCBtexte2) = chiffrestab[0%14]; //
0818:  
0819:   SCBNEXT(SCBtexte2) = SCBtexte3; // chainage texte 3
0820:   SCBX(SCBtexte3) = 0;SCBY(SCBtexte3) = -200;
0821:   SCBDATA(SCBtexte3) = chiffrestab[0%14]; //
0822:  
0823:   SCBNEXT(SCBtexte3) = SCBtexte4; // chainage texte 4
0824:   SCBX(SCBtexte4) = 0;SCBY(SCBtexte4) = -200;
0825:   SCBDATA(SCBtexte4) = chiffrestab[0%14]; //
0826:  
0827:   SCBNEXT(SCBtexte4) = SCBtexte5; // chainage texte 3
0828:   SCBX(SCBtexte5) = 0;SCBY(SCBtexte5) = -200;
0829:   SCBDATA(SCBtexte5) = chiffrestab[0%14]; //
0830:  
0831: 
0832:  
0833:  
0834:   SCBNEXT(SCBtexte5) = SCBip; // chainage pause
0835:   SCBX(SCBip) = 147;SCBY(SCBip) = -200;
0836:   SCBDATA(SCBip) = ipause; //
0837:  
0838:  
0839: 
0840:  
0841:  
0842: // 2�me sprite chain� (test)
0843:   SCBX(SCBchiffres1) = 0;SCBY(SCBchiffres1) = 0;
0844:   //SCBDATA(SCBchiffres1) = chiffres;    
0845:   SCBNEXT(SCBchiffres1) = SCBchiffres2; // chainage de sprite
0846:   SCBX(SCBchiffres2) = 0;SCBY(SCBchiffres2) = 0;
0847:   //SCBDATA(SCBchiffres2) = chiffres;  
0848:   SCBNEXT(SCBchiffres2) = SCBchiffres3; // chainage de sprite
0849:   SCBX(SCBchiffres3) = 0;SCBY(SCBchiffres3) = 0;
0850:   //SCBDATA(SCBchiffres3) = chiffres;  
0851:   SCBNEXT(SCBchiffres3) = SCBchiffres4; // chainage de sprite
0852:   SCBX(SCBchiffres4) = 0;SCBY(SCBchiffres4) = 0;
0853:   SCBNEXT(SCBchiffres4) = SCBchiffres5; // chainage de sprite
0854:   SCBX(SCBchiffres5) = 0;SCBY(SCBchiffres5) = 0;
0855: 
0856: 
0857: // truc bien pratique : associer les briques des tableaux � une variable num�rot�.
0858: brdata[0] = SCBbr01;brdata[1] = SCBbr02;brdata[2] = SCBbr03;brdata[3] = SCBbr04;brdata[4] = SCBbr05;
0859: brdata[5] = SCBbr06;brdata[6] = SCBbr07;brdata[7] = SCBbr08;brdata[8] = SCBbr09;brdata[9] = SCBbr10;
0860: brdata[10] = SCBbr11;brdata[11] = SCBbr12;brdata[12] = SCBbr13;brdata[13] = SCBbr14;brdata[14] = SCBbr15;
0861: brdata[15] = SCBbr16;brdata[16] = SCBbr17;brdata[17] = SCBbr18;brdata[18] = SCBbr19;brdata[19] = SCBbr20;
0862: brdata[20] = SCBbr21;brdata[21] = SCBbr22;brdata[22] = SCBbr23;brdata[23] = SCBbr24;brdata[24] = SCBbr25;
0863: 
0864: 
0865: 
0866: /**************************************************************************
0867:  ï¿½a marche !
0868:                 comptx=0;
0869:                 SCBDATA(brdata[comptx]) = brtab[tbr01[0][0]%3];
0870:                 comptx=1;
0871:                 SCBDATA(brdata[comptx]) = brtab[tbr01[0][1]%3];
0872:                 comptx=2;
0873:                 SCBDATA(brdata[comptx]) = brtab[tbr01[0][2]%3];
0874:                 comptx=3;
0875:                 SCBDATA(brdata[comptx]) = brtab[tbr01[0][3]%3];
0876:                 comptx=4;
0877:                 SCBDATA(brdata[comptx]) = brtab[tbr01[0][4]%3];
0878: **************************************************************************/
0879: 
0880: /**************************************************************************
0881:  ï¿½a marche !
0882:         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5. 1ere rang�e de brique
0883:                 {
0884:                 SCBDATA(brdata[comptx]) = brtab[tbr01[0][comptx]%3];
0885:                 }
0886:         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5. 2eme rang�e de brique
0887:                 {
0888:                 SCBDATA(brdata[(comptx+5)]) = brtab[tbr01[1][comptx]%3];
0889:                 }
0890:         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5. 3eme rang�e de brique
0891:                 {
0892:                 SCBDATA(brdata[(comptx+10)]) = brtab[tbr01[2][comptx]%3];
0893:                 }
0894:         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5. 4eme rang�e de brique
0895:                 {
0896:                 SCBDATA(brdata[(comptx+15)]) = brtab[tbr01[3][comptx]%3];
0897:                 }
0898:         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5. 5eme rang�e de brique
0899:                 {
0900:                 SCBDATA(brdata[(comptx+20)]) = brtab[tbr01[4][comptx]%3];
0901:                 }
0902: **/
0903:        
0904: /**************************************************************************
0905:  ï¿½a marche !
0906:         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5. 1ere rang�e de brique
0907:                 {
0908:                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
0909:                         {
0910:                         SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr01[compty][comptx]%3];
0911:                         }
0912:                 }
0913: **/
0914: 
0915: /**************************************************************************
0916: **                       BOUCLE PRINCIPALE                               **
0917: **************************************************************************/    
0918:   while(1)
0919: {
0920: //  for( ; ; )
0921: 
0922:   Vsync();
0923:   SwapBuffers();
0924: update_music(); // petite subtilit� de la gestion sonore
0925: 
0926: 
0927: 
0928: 
0929: 
0930:         ++gsblip; // economie ressource machine --> certaines des conditions n'ont pas besoin d'�tre lu par la LYNX � chaque boucle.
0931:         if (gsblip==5)
0932:         {
0933:         gsblip=1;
0934: 
0935:         if (switches & BUTTON_PAUSE)
0936:                 {
0937:                 if (gspause==0) {gspause=1;silence();abcmusic(0,abcaptvir);}
0938:                 }
0939:         if (!(switches & BUTTON_PAUSE))
0940:                 {
0941:                 if (gspause==1) gspause=2;
0942:                 }
0943: 
0944:         if (switches & BUTTON_PAUSE)
0945:                 {
0946:                 if (gspause==2) gspause=3;
0947:                 }
0948: 
0949:         if (!(switches & BUTTON_PAUSE))
0950:                 {
0951:                 if (gspause==3) gspause=0;
0952:                 }
0953:         }
0954: 
0955: 
0956: 
0957: /**************************************************************************
0958: **************************************************************************/
0959:  if (etape>=0 & etape<=4)  // �cran titre
0960:         {
0961:   /* set the palette */
0962:         SetRGB(pali); //  Ceci sert � changer la palette de la Lynx.
0963:         DrawFBox(0,0,160,102,0); // couleur 0 (noire)
0964:        
0965:         SCBX(SCBlife) = -10;SCBDATA(SCBlife) = chiffrestab[3%14]; //
0966:        
0967:         SCBX(SCBr) = -200; // raquette mis hors de l'�cran
0968:         SCBX(SCBball) = -200; // balle mis hors de l'�cran
0969:         SCBX(SCBfd) = -200; // fleche directionnelle mis hors de l'�cran
0970:        
0971:        
0972:         //SCBX(SCB) = 78-(molescx/gmole);SCBY(SCB) = 42-(molescy/gmole)
0973: 
0974:         //SCBX(SCB) = SCBX(SCB) - (molescx/6); SCBY(SCB) = SCBY(SCB) - (molescy/6);
0975:         SCBX(SCB) = 78; SCBY(SCB) = 52;
0976:         SCBDATA(SCB) = imole;
0977: 
0978: //      SCBY(SCBacteur) = yacteur-(actscy/4);
0979: //      SCBY(SCBacteur) =       SCBY(SCBacteur) + 16;
0980:        
0981:         //SCBHS(SCB) = 0x100;
0982:         //SCBVS(SCB) = 0x100;
0983: 
0984: if (gspause==0)
0985:         {
0986: 
0987: /**
0988:         etape=1;molescx=256;molescy=256;
0989: **/
0990: 
0991: 
0992: /**
0993: 
0994:         if (etape==4)   {
0995:                                         if (molescx>256)        molescx=molescx-4;
0996:                                         if (molescy>128)        molescy=molescy-8;
0997:                                         if (molescx<257 & molescy<129)  {molescx=256;molescy=128;etape=2;mhaut=4;}
0998:                                         }
0999:         if (etape==3)   {
1000:                                         if (molescx>128)        molescx=molescx-8;
1001:                                         if (molescy>256)        molescy=molescy-4;
1002:                                         if (molescx<129 & molescy<257)  {molescx=128;molescy=256;etape=2;mbas=4;}
1003:                                         }
1004:         if (etape==2)   {
1005:                                         if (molescx<384)        molescx=molescx+(4+mbas);
1006:                                         if (molescy<384)        molescy=molescy+(4+mhaut);
1007:                                         if (molescx>383 & molescy>383)
1008:                                                 {
1009:                                                 molescx=384;molescy=384;++tempc;mhaut=0;mbas=0;
1010:                                                 if (tempc==3)   tempc=1;
1011:                                                 if (tempc==1)   etape=3;
1012:                                                 if (tempc==2)   etape=4;
1013:                                                 }
1014:                                         }
1015:         if (etape==1)   {
1016:                                         ++tempb;
1017:                                         if (tempb>64)   {
1018:                                                                         tempb=0;etape=2;
1019:                                                                         }
1020:                                         }
1021:         if (etape==0)   {
1022:                                         if (molescx<256)        {
1023:                                                                                 molescx=molescx+2;molescy=molescy+2;
1024:                                                                                 if (molescx>255) {molescx=256;molescy=256;etape=1;}
1025:                                                                                 }
1026:                                         }
1027: **/
1028:         switch (etape)
1029:                 {
1030:                 case 0:
1031:                                 molescx=molescx+2;molescy=molescy+2;
1032:                 break;
1033:                 }
1034:         if (molescx>255) {molescx=256;molescy=256;etape=1;}    
1035:        
1036:        
1037:        
1038:         SCBY(SCBip) = -50;
1039:         }// if (gspause==0)
1040:         else
1041:         {
1042:         SCBY(SCBip) = 30; // coordonn�es image pause
1043:         }
1044:        
1045:        
1046:        
1047:         SCBHS(SCB) = molescx;
1048:         SCBVS(SCB) = molescy;
1049:         DrawSprite(SCB); // affichage molecule
1050:        
1051:         if (etape>0) {SCBHS(SCB) = 256;SCBVS(SCB) = 256;} // remise � 0 echelle des images SCB
1052:         SCBX(SCB) = 34; SCBY(SCB) = 2;  SCBDATA(SCB) = iname;   DrawSprite(SCB);  
1053:         SCBX(SCB) = 74; SCBY(SCB) = 26; SCBDATA(SCB) = ititre;  DrawSprite(SCB);
1054: 
1055: //
1056:         SCBX(SCBscore1) = 4;SCBX(SCBscore2) = 4;SCBX(SCBscore3) = 4;SCBX(SCBscore4) = 4;SCBX(SCBscore1) = 4;
1057:         SCBDATA(SCBscore1) = chiffrestab[0%14];  
1058:         SCBDATA(SCBscore2) = chiffrestab[1%14];
1059:         SCBDATA(SCBscore3) = chiffrestab[0%14];
1060:         SCBDATA(SCBscore4) = chiffrestab[2%14];
1061: 
1062: 
1063:         SCBX(SCBp) = xpush;//48;
1064:         SCBY(SCBp) = ypush;
1065: 
1066:         SCBY(SCBg) = -200; // fond zone de jeu
1067:         SCBX(SCBr) = -200; // raquette
1068:                
1069:         DrawSprite(SCBg);       // Affichage fond jeu + info commande + raquette + balle + fleche directionnelle + briques + score + texte + pause
1070:                
1071:         if (gspause==0 & etape>0)
1072:                 {
1073:                 if (xpush<8)            xpush=xpush+2; // apparition de la bulle info "Push UP"
1074:                 if (xpush>7)//(tempa>24 & etape==0) // petite teporisation avant d'autoriser le joueur de recommencer le jeu.
1075:                         {
1076:                         xpush=8;
1077:                         ++tempa; // bulle info clignote doucement
1078:                         if (tempa>63)   tempa=1;
1079:                         if (tempa>0 & tempa<32)         ypush=34;
1080:                         if (tempa>31)   ypush=-100;
1081: 
1082:                         if (joystick & JOY_RIGHT)
1083:                                 {
1084:                                 level=1;//3;//1;
1085:                                 tempa=0;tempb=0;etape=9;//xpush=-48;ypush=34;xlvla=160;xlvlb=160;xlvlc=160;xlvld=160;xlvle=160;elvl=0;
1086:                                 xpush=-48;ypush=34;
1087:                                 score=0;
1088:                                 filife=3;
1089:                                 // bruitage menu :
1090:                                 silence();
1091:                                 abcmusic(0,abcmenu1);
1092:                                 abcmusic(1,abcmenu2);
1093: 
1094: 
1095: //                      // bruitage panne s�che :
1096: //                      silence();
1097: //                      abcmusic(3,abcpanne);
1098: 
1099:                                 SetRGB(palg); //  Ceci sert � changer la palette de la Lynx.
1100:                                 SCBY(SCBg) = 0; // fond zone de jeu.
1101:                                 SCBX(SCBp) = xpush;
1102:                                 relach=1;
1103:                                
1104:                                         SCBDATA(SCBscore1) = chiffrestab[0%14];
1105:                                         SCBDATA(SCBscore2) = chiffrestab[0%14];
1106:                                         SCBDATA(SCBscore3) = chiffrestab[0%14];
1107:                                         SCBDATA(SCBscore4) = chiffrestab[0%14];
1108:                                        
1109: 
1110:                                
1111:                                
1112:                                
1113:                                
1114:                                
1115:                                 }
1116:                         }
1117:                 }
1118:         //TextOut(24, 2, 2, 0, "Philippe Haouli present"); // lettre grise 32,32,32
1119:         //TextOut(24, 2, 1, 0, "Philippe Haouli"); // lettre blanche
1120: 
1121:         }
1122: 
1123: /**************************************************************************
1124: **************************************************************************/
1125:  if (etape==9)  // coordonn�es affichage texte "LEVEL", et surtout application des choix de la nature des briques (voir tables de donn�es plus haut).
1126:         {
1127:         ++etape;
1128:                                         SCBX(SCBtexte1) = 140; SCBY(SCBtexte1) = 18; SCBDATA(SCBtexte1) = chiffrestab[11%14]; // L
1129:                                         SCBX(SCBtexte2) = 140; SCBY(SCBtexte2) = 26; SCBDATA(SCBtexte2) = chiffrestab[12%14]; // E
1130:                                         SCBX(SCBtexte3) = 140; SCBY(SCBtexte3) = 34; SCBDATA(SCBtexte3) = chiffrestab[13%14]; // V
1131:                                         SCBX(SCBtexte4) = 140; SCBY(SCBtexte4) = 42; SCBDATA(SCBtexte4) = chiffrestab[12%14]; // E
1132:                                         SCBX(SCBtexte5) = 140; SCBY(SCBtexte5) = 50; SCBDATA(SCBtexte5) = chiffrestab[11%14]; // L
1133: 
1134:         if (level>0 & level<13)
1135:                 {
1136:                 for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1137:                         {
1138:                         for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1139:                                 {
1140:                                 if (level==1)   SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr01[compty][comptx]%4];
1141:                                 if (level==2)   SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr02[compty][comptx]%4];
1142:                                 if (level==3)   SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr03[compty][comptx]%4];
1143:                                 if (level==4)   SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr04[compty][comptx]%4];
1144:                                 if (level==5)   SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr05[compty][comptx]%4];
1145:                                
1146:                                 if (level==6)   SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr06[compty][comptx]%4];
1147:                                 if (level==7)   SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr07[compty][comptx]%4];
1148:                                 if (level==8)   SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr08[compty][comptx]%4];
1149:                                 if (level==9)   SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr09[compty][comptx]%4];
1150:                                 if (level==10)  SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr10[compty][comptx]%4];
1151:                                
1152:                                 if (level==11)  SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr11[compty][comptx]%4];
1153:                                 if (level==12)  SCBDATA(brdata[comptx+(compty*5)]) = brtab[tbr12[compty][comptx]%4];
1154:                                 }
1155:                         }
1156: //brsco=25;// nombre initial de brique � casser
1157: brnbr=0; // �tat des briques, de 0 � 24.
1158:                 if (level==1)
1159:                         {
1160: /************************************************************************** ok
1161: **************************************************************************/
1162:                         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1163:                                 {
1164:                                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1165:                                         {
1166:                                         brie[brnbr]=tbr01[comptx][compty];
1167:                                         ++brnbr;
1168:                                         //if (brie[brnbr]==0 | brie[brnbr]==3)  --brsco; // nombre de brique � casser
1169:                                         //if (brie[brnbr]==0)           --brsco; // nombre de brique � casser
1170:                                         //if (brie[brnbr]==3)           --brsco; // nombre de brique � casser
1171:                                         }
1172:                                 }
1173: /**
1174: brnbr=0; // �tat des briques, de 0 � 24.
1175: 
1176: 
1177:                         for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1178:                                 {
1179:                                 for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1180:                                         {
1181:                                         brif[brnbr]=tbr01[comptx][compty];
1182:                                         ++brnbr;
1183:                                         }
1184:                                 }
1185: **/
1186: /************************************************************************** ok
1187:                         for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1188:                                 {
1189:                                 brif[compty]=tbr01[compty][0];
1190:                                 }
1191: 
1192:                         for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1193:                                 {
1194:                                 brie[compty]=tbr01[0][compty];
1195:                                 }
1196:                         for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1197:                                 {
1198:                                 brie[compty+5]=tbr01[1][compty];
1199:                                 }
1200:                         for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1201:                                 {
1202:                                 brie[compty+10]=tbr01[2][compty];
1203:                                 }
1204:                         for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1205:                                 {
1206:                                 brie[compty+15]=tbr01[3][compty];
1207:                                 }
1208:                         for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1209:                                 {
1210:                                 brie[compty+20]=tbr01[4][compty];
1211:                                 }
1212: **************************************************************************/
1213: 
1214: /************************************************************************** ok
1215:                 brif[0]=tbr01[0][0];
1216:                 brif[1]=tbr01[1][0];
1217:                 brif[2]=tbr01[2][0];
1218:                 brif[3]=tbr01[3][0];
1219:                 brif[4]=tbr01[4][0];
1220: 
1221:                 brif[5]=tbr01[1][1];
1222:                 brif[6]=tbr01[1][1];
1223:                 brif[7]=tbr01[1][2];
1224:                 brif[8]=tbr01[1][3];
1225:                 brif[9]=tbr01[1][4];
1226:                
1227:                         brie[0]=tbr01[0][0];
1228:                         brie[1]=tbr01[0][1];
1229:                         brie[2]=tbr01[0][2];
1230:                         brie[3]=tbr01[0][3];
1231:                         brie[4]=tbr01[0][4];
1232: 
1233:                         brie[5]=tbr01[1][1];
1234:                         brie[6]=tbr01[1][1];
1235:                         brie[7]=tbr01[1][2];
1236:                         brie[8]=tbr01[1][3];
1237:                         brie[9]=tbr01[1][4];
1238: 
1239:                         brie[10]=tbr01[2][1];
1240:                         brie[11]=tbr01[2][1];
1241:                         brie[12]=tbr01[2][2];
1242:                         brie[13]=tbr01[2][3];
1243:                         brie[14]=tbr01[2][4];
1244: 
1245:                         brie[15]=tbr01[3][1];
1246:                         brie[16]=tbr01[3][1];
1247:                         brie[17]=tbr01[3][2];
1248:                         brie[18]=tbr01[3][3];
1249:                         brie[19]=tbr01[3][4];
1250: 
1251:                         brie[20]=tbr01[4][1];
1252:                         brie[21]=tbr01[4][1];
1253:                         brie[22]=tbr01[4][2];
1254:                         brie[23]=tbr01[4][3];
1255:                         brie[24]=tbr01[4][4];
1256: **************************************************************************/
1257:                         }
1258: brnbr=0; // �tat des briques, de 0 � 24.
1259:                 if (level==2)
1260:                         {
1261:                         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1262:                                 {
1263:                                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1264:                                         {
1265:                                         brie[brnbr]=tbr02[comptx][compty];
1266:                                         ++brnbr;
1267:                                         }
1268:                                 }
1269:                         }
1270: brnbr=0; // �tat des briques, de 0 � 24.
1271:                 if (level==3)
1272:                         {
1273:                         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1274:                                 {
1275:                                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1276:                                         {
1277:                                         brie[brnbr]=tbr03[comptx][compty];
1278:                                         ++brnbr;
1279:                                         }
1280:                                 }
1281:                         }
1282: brnbr=0; // �tat des briques, de 0 � 24.
1283:                 if (level==4)
1284:                         {
1285:                         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1286:                                 {
1287:                                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1288:                                         {
1289:                                         brie[brnbr]=tbr04[comptx][compty];
1290:                                         ++brnbr;
1291:                                         }
1292:                                 }
1293:                         }
1294: brnbr=0; // �tat des briques, de 0 � 24.
1295:                 if (level==5)
1296:                         {
1297:                         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1298:                                 {
1299:                                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1300:                                         {
1301:                                         brie[brnbr]=tbr05[comptx][compty];
1302:                                         ++brnbr;
1303:                                         }
1304:                                 }
1305:                         }
1306: brnbr=0; // �tat des briques, de 0 � 24.
1307:                 if (level==6)
1308:                         {
1309:                         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1310:                                 {
1311:                                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1312:                                         {
1313:                                         brie[brnbr]=tbr06[comptx][compty];
1314:                                         ++brnbr;
1315:                                         }
1316:                                 }
1317:                         }
1318: brnbr=0; // �tat des briques, de 0 � 24.
1319:                 if (level==7)
1320:                         {
1321:                         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1322:                                 {
1323:                                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1324:                                         {
1325:                                         brie[brnbr]=tbr07[comptx][compty];
1326:                                         ++brnbr;
1327:                                         }
1328:                                 }
1329:                         }
1330: brnbr=0; // �tat des briques, de 0 � 24.
1331:                 if (level==8)
1332:                         {
1333:                         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1334:                                 {
1335:                                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1336:                                         {
1337:                                         brie[brnbr]=tbr08[comptx][compty];
1338:                                         ++brnbr;
1339:                                         }
1340:                                 }
1341:                         }
1342: brnbr=0; // �tat des briques, de 0 � 24.
1343:                 if (level==9)
1344:                         {
1345:                         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1346:                                 {
1347:                                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1348:                                         {
1349:                                         brie[brnbr]=tbr09[comptx][compty];
1350:                                         ++brnbr;
1351:                                         }
1352:                                 }
1353:                         }
1354: brnbr=0; // �tat des briques, de 0 � 24.
1355:                 if (level==10)
1356:                         {
1357:                         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1358:                                 {
1359:                                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1360:                                         {
1361:                                         brie[brnbr]=tbr10[comptx][compty];
1362:                                         ++brnbr;
1363:                                         }
1364:                                 }
1365:                         }
1366: brnbr=0; // �tat des briques, de 0 � 24.
1367:                 if (level==11)
1368:                         {
1369:                         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1370:                                 {
1371:                                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1372:                                         {
1373:                                         brie[brnbr]=tbr11[comptx][compty];
1374:                                         ++brnbr;
1375:                                         }
1376:                                 }
1377:                         }
1378: brnbr=0; // �tat des briques, de 0 � 24.
1379:                 if (level==12)
1380:                         {
1381:                         for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
1382:                                 {
1383:                                 for(compty=0 ; compty<5; compty++) // de 0 � 4, ce qui fait 5.
1384:                                         {
1385:                                         brie[brnbr]=tbr12[comptx][compty];
1386:                                         ++brnbr;
1387:                                         }
1388:                                 }
1389:                         }
1390:                 brsco[0]=19; // nombre de brique � casser
1391:                 brsco[1]=19; // nombre de brique � casser
1392:                 brsco[2]=18; // nombre de brique � casser
1393:                 brsco[3]=8; // nombre de brique � casser
1394:                 brsco[4]=17; // nombre de brique � casser
1395:                 brsco[5]=15; // nombre de brique � casser
1396:                 brsco[6]=15; // nombre de brique � casser
1397:                 brsco[7]=16; // nombre de brique � casser
1398:                 brsco[8]=12; // nombre de brique � casser
1399:                 brsco[9]=13; // nombre de brique � casser
1400:                 brsco[10]=15; // nombre de brique � casser
1401:                 brsco[11]=12; // nombre de brique � casser
1402:                 }
1403:        
1404:        
1405:         }
1406: 
1407: 
1408: /**************************************************************************
1409: **************************************************************************/
1410:  if (etape==10)  // ecran level
1411:         {
1412:        
1413:         ShowScreen(); // Coordonn�es de toutes les briques (voir au d�but de ce joyeux code).
1414:        
1415:         SCBX(SCBp) = xpush;//48;
1416:         SCBY(SCBp) = ypush;
1417:        
1418:         SCBX(SCBr) = -200; // Coordonn�e X de la raquette (ici mis hors de l'�cran).
1419:         DrawSprite(SCBg);       // Affichage fond jeu + info commande + raquette + balle + fleche directionnelle + briques + score + texte + pause
1420:        
1421:         unite = level % 10;
1422:         dizaine = level / 10 % 10;
1423:         // unit�:  
1424:         SCBDATA(SCBchiffres1) = chiffrestab[unite%14];
1425:         SCBX(SCBchiffres1) = 140;
1426:         SCBY(SCBchiffres1) = 50+24;  
1427:        
1428:         // dizaine:  
1429:         SCBDATA(SCBchiffres2) = chiffrestab[dizaine%14];
1430:         SCBX(SCBchiffres2) = 140;
1431:         SCBY(SCBchiffres2) = 50+16;    
1432:        
1433:         DrawSprite(SCBchiffres1); // Affichage valeur test�            
1434:        
1435:        
1436:         if (relach==1)  {
1437:                                         if (!(joystick & JOY_RIGHT))    {relach=0;} // utile pour v�rifier si le joueur n'appui plus sur D-pad haut
1438:                                         }
1439:         if (gspause==0)
1440:                 {
1441:                 if (xpush<8 & horszone==0) xpush=xpush+2;
1442:                 if (xpush>7)//(tempa>24 & etape==0) // petite teporisation avant d'autoriser le joueur de recommencer le jeu.
1443:                         {
1444:                         xpush=8;
1445: 
1446:                         ++tempa; // bulle info clignote doucement
1447:                         if (tempa>63)  tempa=1;
1448:                         if (tempa>0 & tempa<32)  ypush=34;
1449:                         if (tempa>31)  ypush=200;      
1450:        
1451:                         if (relach==0 & horszone==0)
1452:                                 {
1453:                                 if (joystick & JOY_RIGHT)       {
1454:                                                                                         //level=1;//3;//1;
1455:                                                                                         tempa=0;tempb=0;etape=20,yplayer=51;//xpush=-48;ypush=34;xlvla=160;xlvlb=160;xlvlc=160;xlvld=160;xlvle=160;elvl=0;
1456:                                                                                         xpush=-48;ypush=34;
1457:                                                                                         dirf=3;ydirf=6;
1458:                                                                                         SCBY(SCBtexte1) = -200;SCBY(SCBtexte2) = -200;SCBY(SCBtexte3) = -200;SCBY(SCBtexte4) = -200;SCBY(SCBtexte5) = -200;
1459:                                                                                         SCBX(SCBlife) = 4;
1460:                                                                                         score=0;
1461:                                                                                         // bruitage menu :
1462:                                                                                         silence();
1463:                                                                                         abcmusic(0,abcmenu1);
1464:                                                                                         abcmusic(1,abcmenu2);
1465: 
1466: 
1467: //                      // bruitage panne s�che :
1468: //                      silence();
1469: //                      abcmusic(3,abcpanne);
1470: 
1471:                                                                 //SetRGB(palg); //  Ceci sert � changer la palette de la Lynx.
1472:                                                                 //SCBX(SCBg) = 0; // fond zone de jeu
1473:                                                                                         SCBX(SCBp) = xpush;
1474:                                                                 //SCBX(SCBr) = 200; // raquette
1475:                                                                
1476: 
1477:                                                                                         relach=1; // utile pour v�rifier si le joueur n'appui plus sur D-pad haut
1478:                                                                
1479:                                                                                         //Vsync();
1480:                                                                                         //SwapBuffers();
1481:                                                                                         }
1482:                                 }
1483:                         }
1484:                 SCBY(SCBip) = -50;
1485:                 }// if (gspause==0)
1486:                 else
1487:                 {
1488:                 SCBY(SCBip) = 30; // coordonn�es image pause
1489:                 }
1490:                
1491:                
1492:                
1493:                
1494:                
1495:         }
1496: 
1497: /**************************************************************************
1498: **************************************************************************/
1499:  if (etape==20)  // �cran jeu 1 (fleche directionnelle)
1500:         {
1501:         // raquette :
1502:         SCBX(SCBr) = 24;//32;
1503:         SCBY(SCBr) = yplayer;
1504:        
1505:         // balle :
1506:         SCBX(SCBball) = 34;//+110;//42
1507:         SCBY(SCBball) = 51;
1508:        
1509:         // fleche directionnelle :
1510:         SCBDATA(SCBfd) = fdtab[dirf%7];
1511:         SCBX(SCBfd) = 39;
1512:         SCBY(SCBfd) = 38+ydirf;
1513: 
1514:         if (gspause==0)
1515:                 {
1516:                 if (tempa>0) {--tempa;}
1517: 
1518:                 if (joystick & JOY_DOWN)        
1519:                         {
1520:                         if (tempa==0 & dirf<6)  {++dirf;tempa=16;++ydirf;++ydirf;}
1521:                         }
1522:                 if (joystick & JOY_UP)
1523:                         {
1524:                         if (tempa==0 & dirf>0)  {--dirf;tempa=16;--ydirf;--ydirf;}
1525:                         }
1526: 
1527:                 if (relach==1)
1528:                         {
1529:                         if (!(joystick & JOY_RIGHT))    {relach=0;} // utile pour v�rifier si le joueur n'appui plus sur D-pad haut
1530:                         }
1531:                 if (joystick & JOY_RIGHT)
1532:                         {
1533:                         if (relach==0)  {
1534:                                                         SCBX(SCBfd) = -200; // fleche directionnelle mis hors de l'�cran
1535:                                                         dirf=dirf-3;bdirx=1;
1536:                                                         tempa=0;etape=30;
1537:                                                         balldirX=SCBX(SCBball);
1538:                                                         balldirY=SCBY(SCBball);
1539:                                                         }
1540:                         }
1541:                
1542:                
1543:                 SCBY(SCBip) = -50;
1544:                 }// if (gspause==0)
1545:                 else
1546:                 {
1547:                 SCBY(SCBip) = 30; // coordonn�es image pause
1548:                 }
1549:                 //}
1550:         DrawSprite(SCBg);       // Affichage fond jeu + info commande + raquette + balle + fleche directionnelle + briques + score + texte + pause
1551:         }
1552: 
1553: /**************************************************************************
1554: **************************************************************************/
1555:  if (etape==30)  // �cran jeu 2
1556:         {
1557:         if (gspause==0)
1558:                 {
1559:                 if (dirf<0) // Si la balle se dirige vers la gauche, alors...
1560:                         {
1561:                         if (balldirY<3)
1562:                                 {
1563:                                 balldirY=3;dirf=-dirf; // cadre gauche
1564:                                 // bruitage balle cadre:
1565:                                 silence();
1566:                                 abcmusic(1,abcball2);
1567:                                 }
1568:                         if (dirf==-3)   {
1569:                                                         ++Ytemp;
1570:                                                         if (Ytemp>1)    {Ytemp=0;balldirY=balldirY-3;odirx=3;} // vitesse Y r�elle --> -1,5
1571:                                                         }
1572:                         if (dirf==-2)   {balldirY=balldirY-1;odirx=2;} // vitesse Y --> -1
1573:                         if (dirf==-1)   {
1574:                                                         ++Ytemp;odirx=1;
1575:                                                         if (Ytemp>1)    {Ytemp=0;balldirY=balldirY-1;} // vitesse Y r�elle --> -0,5
1576:                                                         }
1577:                         }
1578: 
1579:                 if (dirf==0)    {odirx=0;} // vitesse X --> +2 balle se dirige droit devant.
1580: 
1581:                 if (dirf>0) // Si la balle se dirige vers la droite, alors...
1582:                         {
1583:                         if (dirf==1)    {
1584:                                                         ++Ytemp;odirx=1;
1585:                                                         if (Ytemp>1)    {Ytemp=0;balldirY=balldirY+1;} // vitesse Y r�elle --> +0,5
1586:                                                         }
1587:                         if (dirf==2)    {balldirY=balldirY+1;odirx=2;} // vitesse Y --> +1
1588:                         if (dirf==3)    {
1589:                                                         ++Ytemp;
1590:                                                         if (Ytemp>1)    {Ytemp=0;balldirY=balldirY+3;odirx=3;} // vitesse Y r�elle --> +1,5
1591:                                                         }
1592:                                                        
1593:                         if (balldirY>93)
1594:                                 {
1595:                                 balldirY=93;dirf=-dirf;// cadre droite (102-6 = 96-3 = 93)
1596:                                 // bruitage balle cadre:
1597:                                 silence();
1598:                                 abcmusic(1,abcball2);
1599:                                 }
1600: //                      balldirY=balldirY+2;
1601:                         //balldirY=balldirY+dirf;
1602:                        
1603:                         //if (dirf==1)  {balldirY=balldirY+1;speedX=1;}
1604:                         //if (dirf==2)  {balldirY=balldirY+2;speedX=3;}
1605:                         //if (dirf==3)  {balldirY=balldirY+2;speedX=5;}
1606: 
1607:                         }
1608:                        
1609:                        
1610:                        
1611:                         //If bille()\balldirY=0:bille()\bally-(3+bille()\speed):EndIf    
1612:                         //If bille()\balldirY=1:bille()\bally+(3+bille()\speed):EndIf
1613:                 if (odirx==0)
1614:                         {
1615:                         //if (bdirx==1) balldirX=balldirX+2; // vitesse X --> +2
1616:                         //if (bdirx==-1)        balldirX=balldirX-2; // vitesse X --> -2
1617:                        
1618:                         ++Xtemp;
1619:                         if (Xtemp>1)
1620:                                 {
1621:                                 Xtemp=0;
1622:                                 if (bdirx==1)   balldirX=balldirX+3; // vitesse X r�elle --> +1,5
1623:                                 if (bdirx==-1)  balldirX=balldirX-3; // vitesse X r�elle --> -1,5
1624:                                 }
1625:                         }
1626:                 if (odirx==1)
1627:                         {
1628:                         ++Xtemp;
1629:                         if (Xtemp>1)
1630:                                 {
1631:                                 Xtemp=0;
1632:                                 if (bdirx==1)   balldirX=balldirX+3; // vitesse X r�elle --> +1,5
1633:                                 if (bdirx==-1)  balldirX=balldirX-3; // vitesse X r�elle --> -1,5
1634:                                 }
1635:                         }
1636:                 if (odirx==2)
1637:                         {
1638:                         if (bdirx==1)   balldirX=balldirX+1;  // vitesse X --> +1
1639:                         if (bdirx==-1)  balldirX=balldirX-1;  // vitesse X --> -1
1640:                         }
1641:                 if (odirx==3)
1642:                         {
1643:                         ++Xtemp;
1644:                         if (Xtemp>1)
1645:                                 {
1646:                                 Xtemp=0;
1647:                                 if (bdirx==1)   balldirX=balldirX+1; // vitesse X r�elle --> +0,5
1648:                                 if (bdirx==-1)  balldirX=balldirX-1; // vitesse X r�elle --> -0,5
1649:                                 }
1650:                         }
1651:                 if (bdirx==1)   { // Si la balle monte
1652:                                                         if (balldirX>154)
1653:                                                                 {// collision haut du cadre: changement de direction
1654:                                                                 balldirX=154;bdirx=-bdirx; // inverse la direction de la balle
1655:                                                                 if (dirf==0)    {
1656:                                                                                                 basar=random()%3; // de 0 � 2
1657:                                                                                                 --basar;dirf=basar; // -1 ou 0 ou 1
1658:                                                                                                 }
1659:                                                                 // bruitage balle cadre:
1660:                                                                 silence();
1661:                                                                 abcmusic(1,abcball2);
1662:                                                                 }
1663:                                                 }
1664:                 if (bdirx==-1)  { // Si la balle descend
1665:                                                
1666:                                                 if (balldirX<18) // provisoire
1667:                                                         {// collision bas du cadre: changement de direction
1668:                                                                 //balldirX=18;bdirx=-bdirx; // inverse la direction de la balle
1669:                                                                 etape=50;gsblip=1;--filife; // aie !
1670:                                                         }
1671:                                                        
1672:                                                 //if (balldirX>34 & balldirX<42)// collision ball/raquette: changement de direction
1673:                                                 if (balldirX>26 & balldirX<34)// collision ball/raquette: changement de direction
1674:                                                         {
1675:                                                         if (balldirY>yplayer-13 & balldirY<yplayer+13)
1676:                                                                 {
1677:                                                                         balldirX=34;bdirx=-bdirx;
1678:                                                                         // bruitage balle raquette:
1679:                                                                         silence();
1680:                                                                         abcmusic(0,abcball1);
1681:                                                                        
1682:                                                                         //centre de la raquette :
1683:                                                                         if (balldirY>yplayer-3 & balldirY<yplayer+3)
1684:                                                                                 {
1685:                                                                                 if (dirf==1)    {dirf=0;oboucl=1;}
1686:                                                                                 if (dirf==2)    {dirf=1;oboucl=1;}
1687:                                                                                 if (dirf==3)    {dirf=2;oboucl=1;}
1688:                                                                                
1689:                                                                                 if (dirf==-1)   {dirf=0;oboucl=1;}
1690:                                                                                 if (dirf==-2)   {dirf=-1;oboucl=1;}
1691:                                                                                 if (dirf==-3)   {dirf=-2;oboucl=1;}
1692:                                                                                 }
1693:                                                                         if (oboucl==1)  {oboucl=0;goto test_finish;}
1694:                                                                        
1695:                                                                         //gauche de la raquette :
1696:                                                                         if (balldirY>yplayer-8 & balldirY<yplayer-2)
1697:                                                                                 {
1698:                                                                                 //if (dirf==-1) {dirf=-2;oboucl=1;}
1699:                                                                                 if (dirf==-1)   {dirf=-1;oboucl=1;}
1700:                                                                                 if (dirf==-3)   {dirf=-2;oboucl=1;}
1701:                                                                                
1702:                                                                                 if (dirf==1)    {dirf=-1;oboucl=1;}
1703:                                                                                 if (dirf==2)    {dirf=-2;oboucl=1;}
1704:                                                                                 if (dirf==3)    {dirf=-2;oboucl=1;}
1705:                                                                                
1706:                                                                                 if (dirf==0)    {dirf=-1;oboucl=1;}
1707:                                                                                 }
1708:                                                                         if (oboucl==1)  {oboucl=0;goto test_finish;}
1709:                                                                        
1710:                                                                         //droite de la raquette :
1711:                                                                         if (balldirY>yplayer+2 & balldirY<yplayer+8)
1712:                                                                                 {
1713:                                                                                 //if (dirf==1)  {dirf=2;oboucl=1;}
1714:                                                                                 if (dirf==1)    {dirf=1;oboucl=1;}
1715:                                                                                 if (dirf==3)    {dirf=2;oboucl=1;}
1716:                                                                                
1717:                                                                                 if (dirf==-1)   {dirf=1;oboucl=1;}
1718:                                                                                 if (dirf==-2)   {dirf=2;oboucl=1;}
1719:                                                                                 if (dirf==-3)   {dirf=2;oboucl=1;}
1720:                                                                                
1721:                                                                                 if (dirf==0)    {dirf=1;oboucl=1;}
1722:                                                                                 }
1723:                                                                         if (oboucl==1)  {oboucl=0;goto test_finish;}
1724:                                                                        
1725:                                                                         //exgauche de la raquette :
1726:                                                                         if (balldirY>yplayer-13 & balldirY<yplayer-7)
1727:                                                                                 {
1728:                                                                                 if (dirf==-1)   {dirf=-2;oboucl=1;}//break;
1729:                                                                                 if (dirf==-2)   {dirf=-3;oboucl=1;}
1730:                                                                                
1731:                                                                                 if (dirf==1)    {dirf=-2;oboucl=1;}
1732:                                                                                 if (dirf==2)    {dirf=-3;oboucl=1;}
1733:                                                                                 if (dirf==3)    {dirf=-3;oboucl=1;}
1734:                                                                                
1735:                                                                                 if (dirf==0)    {dirf=-2;oboucl=1;}
1736:                                                                                 }
1737:                                                                         if (oboucl==1)  {oboucl=0;goto test_finish;}
1738:                                                                        
1739:                                                                         //exdroite de la raquette :
1740:                                                                         if (balldirY>yplayer+7 & balldirY<yplayer+13)
1741:                                                                                 {
1742:                                                                                 if (dirf==1)    {dirf=2;oboucl=1;}
1743:                                                                                 if (dirf==2)    {dirf=3;oboucl=1;}
1744:                                                                                
1745:                                                                                 if (dirf==-1)   {dirf=2;oboucl=1;}
1746:                                                                                 if (dirf==-2)   {dirf=3;oboucl=1;}
1747:                                                                                 if (dirf==-3)   {dirf=3;oboucl=1;}
1748:                                                                                
1749:                                                                                 if (dirf==0)    {dirf=2;oboucl=1;}
1750:                                                                                 }
1751:                                                                         if (oboucl==1)  {oboucl=0;goto test_finish;}
1752:                                                                 }
1753:                                                         }
1754:                                                 }
1755:                        
1756: test_finish:
1757:                        
1758:                 if (joystick & JOY_DOWN)        {
1759:                                                                         yplayer=yplayer+2;
1760:                                                                         if (yplayer>87) {yplayer=87;} // (102-24 = 78-3 = 75) ; 24 = largeur de la raquette
1761:                                                                         }
1762:                 if (joystick & JOY_UP)          {
1763:                                                                         yplayer=yplayer-2;
1764:                                                                         if (yplayer<15) {yplayer=15;}
1765:                                                                         }
1766: 
1767:          
1768:         SCBX(SCBball)=balldirX;SCBY(SCBball)=balldirY; // appliquer les variables balldirX et balldirY aux coordonn�es de la balle.
1769:         SCBY(SCBr) = yplayer;
1770:        
1771:        
1772:        
1773: 
1774: ShowScreen(); // Coordonn�es de toutes les briques (voir au d�but de ce joyeux code).
1775: 
1776: // test Balle/briques : la lutte est rude ;)
1777: //upbri=0;
1778:         if (fsaut==0)
1779:                 {
1780:                 cible=0;bbcontact=0;
1781:                 if (balldirX<brix[0]-3 | balldirX>brix[4]+12)           goto stop_test;//15
1782:                
1783:                 if (balldirY>16-1 & balldirY<30) cible=1;
1784:                 if (balldirY>30-1 & balldirY<44) cible=2;
1785:                 if (balldirY>44-1 & balldirY<58) cible=3;
1786:                 if (balldirY>58-1 & balldirY<72) cible=4;
1787:                 if (balldirY>72-1 & balldirY<86) cible=5;
1788:                
1789:                
1790:                 if (cible>0)
1791:                         {
1792:                         // +10 ou +11 ou +12
1793:                         if (balldirX>brix[0]+9 & balldirX<brix[0]+13) upbri=1; // haut brique de 0 � 4
1794:                         if (balldirX>brix[1]+9 & balldirX<brix[1]+13) upbri=2; // haut brique de 5 � 9
1795:                         if (balldirX>brix[2]+9 & balldirX<brix[2]+13) upbri=3; // haut brique de 10 � 14
1796:                         //if (balldirX>brix[3]+9 & balldirX<brix[3]+13) upbri=4; // haut brique de 15 � 19
1797:                         //if (balldirX>brix[4]+9 & balldirX<brix[4]+13) upbri=5; // haut brique de 20 � 24
1798:                        
1799:                         if (balldirX>brix[1]-4) cible=cible+5;
1800:                         if (balldirX>brix[2]-4) cible=cible+5;
1801:                         if (balldirX>brix[3]-4) cible=cible+5;
1802:                         if (balldirX>brix[4]-4) cible=cible+5;
1803:                         --cible;
1804: 
1805:                         /** La variable brie[25] sera donc utilis� pour modifier l'�tat des 25 briques. **/
1806:                         if (brie[cible] == 1)
1807:                                 {
1808:                                 brie[cible]=0;score+=10;SCBDATA(brdata[0 + cible]) = brtab[0%4];bbcontact=1;
1809:                                 --level;--brsco[level];
1810:                                 if (brsco[level]==0)    etape=40; // toutes les briques destrutibles sont d�truites : passage au niveau suivant...
1811:                                 ++level;
1812:                                 silence();abcmusic(2,abcball3);
1813:                                 }
1814:                         if (brie[cible] == 2)                   {brie[cible]=1;score+=10;SCBDATA(brdata[0 + cible]) = brtab[1%4];bbcontact=1;silence();abcmusic(2,abcball3);}
1815:                         if (brie[cible] == 3)                   {bbcontact=1;}
1816:                        
1817:                         if (bbcontact==1)
1818:                                 {
1819:                                 fsaut=1; // suite � une collision balle/brique, laisser un cycle avant d'autoriser � nouveaux les tests (ceci dit, je ne suis pas s�r de ce choix, hum).
1820:                                 if (dirf>0) // Si la balle se dirige vers la droite, alors...
1821:                                 {
1822:                                 //if ((balldirY>15 & balldirY<19) | (balldirY>29 & balldirY<33) | (balldirY>43 & balldirY<47) | (balldirY>57 & balldirY<61) | (balldirY>71 & balldirY<75))
1823:                                 if ( (balldirY>15-3 & balldirY<19) | (balldirY>29-3 & balldirY<33) | (balldirY>43-3 & balldirY<47) | (balldirY>57-3 & balldirY<61) | (balldirY>71-3 & balldirY<75))
1824:                                         {
1825:                                         if ((balldirX>85-1 & balldirX<85+10) | (balldirX>95-1 & balldirX<95+10) | (balldirX>105-1 & balldirX<105+10) | (balldirX>115-1 & balldirX<115+10) | (balldirX>125-1 & balldirX<125+10))
1826:                                                 {rebcot=1;goto stop_test;} // c�t� gauche
1827:                                         }
1828:                                 }
1829:                                 if (dirf<0) // Si la balle se dirige vers la gauche, alors...
1830:                                 {
1831:                                 //if ((balldirY>26 & balldirY<30) | (balldirY>40 & balldirY<44) | (balldirY>54 & balldirY<58) | (balldirY>68 & balldirY<72) | (balldirY>82 & balldirY<86))
1832:                                 if ((balldirY>26 & balldirY<30+3) | (balldirY>40 & balldirY<44+3) | (balldirY>54 & balldirY<58+3) | (balldirY>68 & balldirY<72+3) | (balldirY>82 & balldirY<86+3))
1833:                                         {
1834:                                         if ((balldirX>85-1 & balldirX<85+10) | (balldirX>95-1 & balldirX<95+10) | (balldirX>105-1 & balldirX<105+10) | (balldirX>115-1 & balldirX<115+10) | (balldirX>125-1 & balldirX<125+10))
1835:                                                 {rebcot=2;goto stop_test;} // c�t� droite
1836:                                         }
1837:                                 }
1838:                                
1839:                                 if (cible>-1 & cible<5 ) // de 0 � 4
1840:                                         { // brix[0] = 85-horszone; // & (balldirY>18 & balldirY<27)balldirX=balldirX-3;balldirX=balldirX+3;
1841:                                         // si balle monte :
1842:                                         if (bdirx==1 & (balldirX>brix[0]-4 & balldirX<brix[0])) // -3 ou -2 ou -1
1843:                                                 {bdirx=-bdirx;balldirX=brix[0]-4;goto stop_test;}//++atest;}
1844:                                         // si balle descend :
1845: //                                      if (bdirx==-1 & (balldirX>brix[0]+9 & balldirX<brix[0]+13)) // +10 ou +11 ou +12
1846:                                         if (bdirx==-1 & upbri==1) // +10 ou +11 ou +12
1847:                                                 {++atest;bdirx=-bdirx;balldirX=brix[0]+13;goto stop_test;}
1848:                                         }
1849:                                 if (cible>4 & cible<10 ) // de 5 � 9
1850:                                         { // brix[1] = 95-horszone; // & (balldirY>32 & balldirY<41)
1851:                                         // si balle monte :
1852:                                         if (bdirx==1 & (balldirX>brix[1]-4 & balldirX<brix[1])) // -3 ou -2 ou -1
1853:                                                 {bdirx=-bdirx;balldirX=brix[1]-4;goto stop_test;}
1854:                                         // si balle descend :
1855: //                                      if (bdirx==-1 & (balldirX>brix[1]+9 & balldirX<brix[1]+13)) // +10 ou +11 ou +12
1856:                                         if (bdirx==-1 & upbri==2) // +10 ou +11 ou +12
1857:                                                 {++atest;bdirx=-bdirx;balldirX=brix[1]+13;goto stop_test;}
1858:                                         }
1859:                                 if (cible>9 & cible<15 ) // de 10 � 14
1860:                                         { // brix[2] = 105-horszone; // & (balldirY>46 & balldirY<55)
1861:                                         // si balle monte :
1862:                                         if (bdirx==1 & (balldirX>brix[2]-4 & balldirX<brix[2])) // -3 ou -2 ou -1
1863:                                                 {bdirx=-bdirx;balldirX=brix[2]-4;goto stop_test;}
1864:                                         // si balle descend :
1865: //                                      if (bdirx==-1 & (balldirX>brix[2]+9 & balldirX<brix[2]+13)) // +10 ou +11 ou +12
1866:                                         if (bdirx==-1 & upbri==3) // +10 ou +11 ou +12
1867:                                                 {++atest;bdirx=-bdirx;balldirX=brix[2]+13;goto stop_test;}
1868:                                         }
1869:                                 if (cible>14 & cible<20 ) // de 15 � 19
1870:                                         { // brix[4] = 115-horszone; // & (balldirY>60 & balldirY<69)
1871:                                         // si balle monte :
1872:                                         if (bdirx==1 & (balldirX>brix[3]-4 & balldirX<brix[3])) // -3 ou -2 ou -1
1873:                                                 {bdirx=-bdirx;balldirX=brix[3]-4;goto stop_test;}
1874:                                         // si balle descend :
1875:                                         if (bdirx==-1 & (balldirX>brix[3]+9 & balldirX<brix[3]+13)) // +10 ou +11 ou +12
1876: //                                      if (bdirx==-1 & upbri==4) // +10 ou +11 ou +12
1877:                                                 {++atest;bdirx=-bdirx;balldirX=brix[3]+13;goto stop_test;}
1878:                                         }
1879:                                 if (cible>19 & cible<25 ) // de 20 � 24
1880:                                         { // brix[4] = 125-horszone; // & (balldirY>74 & balldirY<83)
1881:                                         // si balle monte :
1882:                                         if (bdirx==1 & (balldirX>brix[4]-4 & balldirX<brix[4])) // -3 ou -2 ou -1
1883:                                                 {bdirx=-bdirx;balldirX=brix[4]-4;goto stop_test;}
1884:                                         // si balle descend :
1885:                                         if (bdirx==-1 & (balldirX>brix[4]+9 & balldirX<brix[4]+13)) // +10 ou +11 ou +12
1886: //                                      if (bdirx==-1 & upbri==5) // +10 ou +11 ou +12
1887:                                                 {++atest;bdirx=-bdirx;balldirX=brix[4]+13;goto stop_test;}
1888:                                         }
1889: 
1890:                                 }
1891:                         }
1892:                 }
1893:                 else
1894:                 {
1895:                 fsaut=0;
1896:                 }
1897: stop_test:
1898: if (rebcot==1)          {dirf=-dirf;balldirY=balldirY-3;}//
1899: if (rebcot==2)          {dirf=-dirf;balldirY=balldirY+3;}//
1900: rebcot=0;
1901: 
1902: //if (bdirx==-1)                {++atest;} // descend
1903: 
1904:                 /** affichage du score et nombre de vie:
1905:                 **/
1906:                 //if (gsblip==1) // test effectu� 1 fois 5, car la mise � jour du score n'est pas une priorit� absolu...
1907:                 switch (gsblip)
1908:                 {
1909:                 case 1:
1910:                
1911:                         unite = score % 10;
1912:                         dizaine = score / 10 % 10;
1913:                         centaine = score / 100 % 10;
1914:                         millier = score / 1000 % 10;
1915:                 // unit�:  
1916:                         SCBDATA(SCBscore1) = chiffrestab[unite%14];
1917:                 // dizaine:  
1918:                         SCBDATA(SCBscore2) = chiffrestab[dizaine%14];
1919:                 // centaine:  
1920:                         SCBDATA(SCBscore3) = chiffrestab[centaine%14];
1921:                 // millier:  
1922:                         SCBDATA(SCBscore4) = chiffrestab[millier%14];
1923:                        
1924:                        
1925:                         unite = filife % 10;
1926:                         SCBDATA(SCBlife) = chiffrestab[unite%14];
1927:                 break;
1928:                 }
1929: 
1930: 
1931: 
1932:                 SCBY(SCBip) = -50;
1933:                 }// if (gspause==0)
1934:        
1935:        
1936:        
1937: 
1938: else
1939: {
1940:         //scrollx=0; // vitesse de d�filement du d�cor
1941:         SCBY(SCBip) = 30; // coordonn�es image pause
1942: }
1943:        
1944:        
1945:   DrawSprite(SCBg); // Affichage fond jeu + info commande + raquette + balle + fleche directionnelle + briques + score + texte + pause
1946:        
1947:        
1948: }
1949: /**************************************************************************
1950: **************************************************************************/
1951:  if (etape==40)  // passage au niveau suivant.
1952:         {
1953:                                 tempa=0;tempb=0;etape=9;//xpush=-48;ypush=34;xlvla=160;xlvlb=160;xlvlc=160;xlvld=160;xlvle=160;elvl=0;
1954:                                 xpush=-48;ypush=34;
1955:                                 ++level;
1956:                                 if (level>12)   level=1;
1957:         // balle :
1958:         SCBY(SCBball) = -20;
1959:         horszone=150;// mettre les briques hors de l'�cran visible.
1960:         }
1961: /**************************************************************************
1962: **************************************************************************/
1963: 
1964:  if (etape==50)  // perd une raquette !
1965:         {
1966:         SetRGB(palr); //  Ceci sert � changer la palette de la Lynx.
1967:         DrawSprite(SCBg); // Affichage fond jeu + info commande + raquette + balle + fleche directionnelle + briques + score + texte + pause
1968:        
1969:         ++tempb;
1970:         /**
1971:         if (tempb>64)
1972:                 {
1973:                 tempb=0;
1974:                 SetRGB(palg); //  Ceci sert � changer la palette de la Lynx.
1975:                
1976:                 yplayer=51;//xpush=-48;ypush=34;xlvla=160;xlvlb=160;xlvlc=160;xlvld=160;xlvle=160;elvl=0;
1977:                 dirf=3;ydirf=6;
1978:                
1979:                 etape=20;
1980:                 // raquette :
1981:                 SCBX(SCBr) = 24;//32;
1982:                 SCBY(SCBr) = yplayer;
1983:                
1984:                 // balle :
1985:                 SCBX(SCBball) = 34;//42
1986:                 SCBY(SCBball) = 51;
1987:                
1988:                 // fleche directionnelle :
1989:                 SCBDATA(SCBfd) = fdtab[dirf%7];
1990:                 SCBX(SCBfd) = 39;
1991:                 SCBY(SCBfd) = 38+ydirf;
1992:                
1993: 
1994:                
1995:                 }
1996:         **/
1997:                
1998:         switch (tempb)
1999:                 {
2000:                 case 70:
2001:                 tempb=0;
2002:                 SetRGB(palg); //  Ceci sert � changer la palette de la Lynx.
2003:                
2004:                 yplayer=51;//xpush=-48;ypush=34;xlvla=160;xlvlb=160;xlvlc=160;xlvld=160;xlvle=160;elvl=0;
2005:                 dirf=3;ydirf=6;
2006:                
2007:                 etape=20;
2008:                 // raquette :
2009:                 SCBX(SCBr) = 24;//32;
2010:                 SCBY(SCBr) = yplayer;
2011:                
2012:                 // balle :
2013:                 SCBX(SCBball) = 34;//42
2014:                 SCBY(SCBball) = 51;
2015:                
2016:                 // fleche directionnelle :
2017:                 SCBDATA(SCBfd) = fdtab[dirf%7];
2018:                 SCBX(SCBfd) = 39;
2019:                 SCBY(SCBfd) = 38+ydirf;
2020:                 if (filife==0)  {etape=0;horszone=150;ShowScreen();}
2021:                 break;
2022:                 }
2023:                
2024:         //if (filife==0)        etape=0;
2025:        
2026: //      switch (filife)
2027: //              {
2028: //              case 0:
2029: //              etape=0;
2030: ///             break;
2031: //              }
2032:         }
2033: /**************************************************************************
2034: **************************************************************************/
2035: /** test
2036: 
2037: 
2038:         atest=upbri;//etape;//brsco[0];//ttest;//9;//balldirX;//yplayer;//speedX;//dirf;//etape;
2039: 
2040:         //atest=horszone;//relach;//etape;//SCBCTL0(SCBbr);
2041:         unite = atest % 10;
2042:         dizaine = atest / 10 % 10;
2043:         centaine = atest / 100 % 10;
2044: //      millier = atest / 1000 % 10;
2045: //      dmillier = atest / 10000 % 10;
2046:   // unit�:  
2047:   SCBDATA(SCBchiffres1) = chiffrestab[unite%14];
2048:   SCBX(SCBchiffres1) = 100;
2049:   SCBY(SCBchiffres1) = 53;  
2050: 
2051:   // dizaine:  
2052:   SCBDATA(SCBchiffres2) = chiffrestab[dizaine%14];
2053:   SCBX(SCBchiffres2) = 100;
2054:   SCBY(SCBchiffres2) = 53-8;
2055: 
2056:   // centaine:  
2057:   SCBDATA(SCBchiffres3) = chiffrestab[centaine%14]; // 0
2058:   SCBX(SCBchiffres3) = 100;
2059:   SCBY(SCBchiffres3) = 53-16;
2060:  
2061:   // millier:  
2062: //  SCBDATA(SCBchiffres4) = chiffrestab[millier%14]; // 0
2063: //  SCBX(SCBchiffres4) = 100;
2064: //  SCBY(SCBchiffres4) = 53-24;
2065: 
2066:   // dizaine de millier:  
2067: //  SCBDATA(SCBchiffres5) = chiffrestab[dmillier%14]; // 0
2068: //  SCBX(SCBchiffres5) = 100;
2069: //  SCBY(SCBchiffres5) = 53-32;
2070:  
2071:   DrawSprite(SCBchiffres1); // Affichage valeur test�            
2072: 
2073:  **/
2074: 
2075:  
2076: 
2077: //  SCBDATA(SCBchiffres1) = chiffrestab[10%14];
2078: //  SCBX(SCBchiffres1) = 40;
2079:   //SCBY(SCBchiffres1) = yplayer;
2080: //  SCBY(SCBchiffres1) = yplayer;//yplayer+23;  
2081:  
2082: /*** Tests important des coordonn�es des images ***/
2083: //      SCBDATA(SCBchiffres1) = chiffrestab[10%14];
2084: //      SCBX(SCBchiffres1) = SCBX(SCBball);
2085: //      SCBY(SCBchiffres1) = SCBY(SCBball);
2086: /*** fin de ces tests de coordonn�e ***/
2087:  
2088: //  DrawSprite(SCBchiffres1); // Affichage valeur test�        
2089: 
2090: 
2091: 
2092:   //Vsync();
2093:   //SwapBuffers();
2094:  
2095: }
2096:  
2097: /**************************************************************************
2098: **                     FIN de la BOUCLE PRINCIPALE                       **
2099: **************************************************************************/  
2100:  
2101:  }
2102: 
2103:  
2104:  
2105:  
2106:  
2107:  
2108:  
2109: /*
2110: 
2111: #asm
2112: vretrace:
2113:         lda $fd0a
2114:         bne vretrace
2115: #endasm
2116: 
2117: 
2118: 
2119: 
2120:   LDA bally
2121:   CMP #TOPWALL
2122:   BCS MoveBallUpDone      ;;if ball y > top wall, still on screen, skip next section
2123:   LDA #$01
2124:   STA balldown
2125:   LDA #$00
2126:   STA ballup         ;;bounce, ball now moving down
2127: MoveBallUpDone:
2128: 
2129: 
2130: MoveBallDown:
2131:   LDA balldown
2132:   BEQ MoveBallDownDone   ;;if ballup=0, skip this section
2133: 
2134:   LDA bally
2135:   CLC
2136:   ADC ballspeedy        ;;bally position = bally + ballspeedy
2137:   STA bally
2138: 
2139:   LDA bally
2140:   CMP #BOTTOMWALL
2141:   BCC MoveBallDownDone      ;;if ball y < bottom wall, still on screen, skip next section
2142: 
2143: 
2144:  
2145:  
2146:  
2147:  
2148:  
2149:   LDA ballx
2150:   SEC
2151:   SBC ballspeedx        ;;ballx position = ballx - ballspeedx
2152:   STA ballx  
2153:  
2154:  
2155:  
2156: LDA ballright
2157: BEQ MoveBallRightDone // if ballright=0, skip this section  
2158: */
2159: //#asm
2160: //lda oboucl
2161: //bne test_finish ;;// if oboucl=0, skip this section
2162: //#endasm
2163: 
2164: 
2165: 
2166: 
2167: //#asm
2168: //vretrace:
2169: //      lda $fd0a
2170: //      bne vretrace
2171: //#endasm