0001: /*
0002: scrolling 0.1 - LYNX - kit BLL (newcc65) - 16/12/2010 - philippe H.
0003:
0004: LYNX - r�solution: 160*102 - scroll demo -
0005:
0006: Gestion des tiles: 6 tiles * 7 tiles = 42 tiles, chaque tile ayant une taille de 34*34 -
0007:
0008: Zone de jeu: 30 tiles * 7 tiles soit 210 tiles - 1020 * 238 = 242760 pixels */
0009:
0010: #include <stdlib.h>
0011: #include <lynx.h>
0012: #include <lynxlib.h>
0013:
0014: /* LYNX-specific #defines: */
0015: #define JOY_RIGHT 0x10
0016: #define JOY_LEFT 0x20
0017: #define JOY_DOWN 0x40
0018: #define JOY_UP 0x80
0019:
0020: #define BUTTON_OPTION1 0x08
0021: #define BUTTON_OPTION2 0x04
0022: #define BUTTON_LEFT 0x02
0023: #define BUTTON_RIGHT 0x01
0024:
0025: #define BUTTON_PAUSE 0x01
0026:
0027: //#define BUFFER1 0xBC40
0028: //#define BUFFER2 0xDC20
0029: //char SCREEN[8160] at (MEMTOP-16320);
0030: char SCREEN[8160] at (MEMTOP-16320);
0031: char RENDER[8160] at (MEMTOP-8160);
0032:
0033: uchar pal[]={
0034: 0x00,0x00,0x0F,0x0F,0x0E,0x08,0x07,0x03,0x05,0x0A,0x00,0x0F,0x09,0x09,0x08,0x08,
0035: 0x00,0x0F,0x7C,0x28,0x02,0x00,0x66,0x32,0xE0,0xAA,0x50,0xFF,0x99,0x99,0x88,0x88};
0036:
0037: /**
0038: // ------------------------------------
0039: extern char fond1[];
0040: char SCB[];
0041: #asm
0042: _SCB dc.b $c0,$10,$20
0043: dc.w 0,0
0044: dc.w 0,0,$100,$100
0045: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0046: #endasm
0047:
0048: **/
0049:
0050:
0051:
0052: // ------------------------------------
0053: /*****************************************************************************
0054: ** Ci-dessous, le contenu du fichier batchfile pour l'image cara.bmp **
0055: set image01=cara.bmp
0056:
0057: SPRPCK -t6 -S030021 -r001003 -o000000 -i030063 -a014010 -p0 %image01% ca
0058: cmd
0059: ** Le point d'action de l'image ghost est mis au centre de celle-ci, **
0060: ** (-a014010).
0061: *****************************************************************************/
0062: extern uchar ca000000[];
0063: extern uchar ca001000[];
0064: extern uchar ca002000[];
0065:
0066:
0067: uchar *catab[3] = {ca000000, ca001000, ca002000};
0068:
0069: uchar SCBca[]; // d�claration d'un nouveau controleur de sprite --> car
0070: #asm
0071: _SCBca dc.b $c7,$10,$20
0072: dc.w 0,0
0073: dc.w 0,0,$100,$100
0074: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0075: #endasm
0076: // ------------------------------------
0077: // clip du sprite rtile, d'une taille de 34*34 : 0(pelouse), 1 (bordure), 2 (bord de la route), 3 (bord de la route + flaque d'huile), 4 (route), 5 (route + bande).
0078: /*****************************************************************************
0079: ** Ci-dessous, le contenu du fichier batchfile pour l'image rtile.bmp **
0080: set image01=rtile.bmp
0081:
0082: SPRPCK -t6 -S034034 -r014001 -o000000 -i476034 -p0 %image01% rt
0083: cmd
0084:
0085: *****************************************************************************/
0086: extern uchar rt000000[];
0087: extern uchar rt000001[];
0088: extern uchar rt000002[];
0089: extern uchar rt000003[];
0090: extern uchar rt000004[];
0091: extern uchar rt000005[];
0092: extern uchar rt000006[];
0093: extern uchar rt000007[];
0094: extern uchar rt000008[];
0095: extern uchar rt000009[];
0096: extern uchar rt000010[];
0097: extern uchar rt000011[];
0098: extern uchar rt000012[];
0099: extern uchar rt000013[];
0100:
0101: uchar *rttab[14] = {rt000000, rt000001, rt000002, rt000003, rt000004, rt000005,
0102: rt000006, rt000007, rt000008, rt000009, rt000010, rt000011,
0103: rt000012, rt000013};
0104: // nombreuses d�clarations des nouveaux controleurs de sprite (42) pour les tiles.
0105: uchar SCBrt01[];
0106: uchar SCBrt02[];
0107: uchar SCBrt03[];
0108: uchar SCBrt04[];
0109: uchar SCBrt05[];
0110: uchar SCBrt06[];
0111: uchar SCBrt07[];
0112:
0113: uchar SCBrt08[];
0114: uchar SCBrt09[];
0115: uchar SCBrt10[];
0116: uchar SCBrt11[];
0117: uchar SCBrt12[];
0118: uchar SCBrt13[];
0119: uchar SCBrt14[];
0120:
0121: uchar SCBrt15[];
0122: uchar SCBrt16[];
0123: uchar SCBrt17[];
0124: uchar SCBrt18[];
0125: uchar SCBrt19[];
0126: uchar SCBrt20[];
0127: uchar SCBrt21[];
0128:
0129: uchar SCBrt22[];
0130: uchar SCBrt23[];
0131: uchar SCBrt24[];
0132: uchar SCBrt25[];
0133: uchar SCBrt26[];
0134: uchar SCBrt27[];
0135: uchar SCBrt28[];
0136:
0137: uchar SCBrt29[];
0138: uchar SCBrt30[];
0139: uchar SCBrt31[];
0140: uchar SCBrt32[];
0141: uchar SCBrt33[];
0142: uchar SCBrt34[];
0143: uchar SCBrt35[];
0144:
0145: uchar SCBrt36[];
0146: uchar SCBrt37[];
0147: uchar SCBrt38[];
0148: uchar SCBrt39[];
0149: uchar SCBrt40[];
0150: uchar SCBrt41[];
0151: uchar SCBrt42[];
0152: /*****************************************************************************
0153: ************************************ _SCBrt01 dc.b $c7,$10,$20 *****************************************/
0154: #asm
0155: _SCBrt01 dc.b $c0,$10,$20
0156: dc.w 0,0
0157: dc.w 0,0,$100,$100
0158: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0159: ;
0160: _SCBrt02 dc.b $c0,$10,$20
0161: dc.w 0,0
0162: dc.w 0,0,$100,$100
0163: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0164: ;
0165: _SCBrt03 dc.b $c0,$10,$20
0166: dc.w 0,0
0167: dc.w 0,0,$100,$100
0168: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0169: ;
0170: _SCBrt04 dc.b $c0,$10,$20
0171: dc.w 0,0
0172: dc.w 0,0,$100,$100
0173: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0174: ;
0175: _SCBrt05 dc.b $c0,$10,$20
0176: dc.w 0,0
0177: dc.w 0,0,$100,$100
0178: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0179: ;
0180: _SCBrt06 dc.b $c0,$10,$20
0181: dc.w 0,0
0182: dc.w 0,0,$100,$100
0183: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0184: ;
0185: _SCBrt07 dc.b $c0,$10,$20
0186: dc.w 0,0
0187: dc.w 0,0,$100,$100
0188: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0189: ;
0190: _SCBrt08 dc.b $c0,$10,$20
0191: dc.w 0,0
0192: dc.w 0,0,$100,$100
0193: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0194: ;
0195: _SCBrt09 dc.b $c0,$10,$20
0196: dc.w 0,0
0197: dc.w 0,0,$100,$100
0198: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0199: ;
0200: _SCBrt10 dc.b $c0,$10,$20
0201: dc.w 0,0
0202: dc.w 0,0,$100,$100
0203: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0204: ;
0205: _SCBrt11 dc.b $c0,$10,$20
0206: dc.w 0,0
0207: dc.w 0,0,$100,$100
0208: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0209: ;
0210: _SCBrt12 dc.b $c0,$10,$20
0211: dc.w 0,0
0212: dc.w 0,0,$100,$100
0213: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0214: ;
0215: _SCBrt13 dc.b $c0,$10,$20
0216: dc.w 0,0
0217: dc.w 0,0,$100,$100
0218: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0219: ;
0220: _SCBrt14 dc.b $c0,$10,$20
0221: dc.w 0,0
0222: dc.w 0,0,$100,$100
0223: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0224: ;
0225: _SCBrt15 dc.b $c0,$10,$20
0226: dc.w 0,0
0227: dc.w 0,0,$100,$100
0228: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0229: ;
0230: _SCBrt16 dc.b $c0,$10,$20
0231: dc.w 0,0
0232: dc.w 0,0,$100,$100
0233: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0234: ;
0235: _SCBrt17 dc.b $c0,$10,$20
0236: dc.w 0,0
0237: dc.w 0,0,$100,$100
0238: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0239: ;
0240: _SCBrt18 dc.b $c0,$10,$20
0241: dc.w 0,0
0242: dc.w 0,0,$100,$100
0243: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0244: ;
0245: _SCBrt19 dc.b $c0,$10,$20
0246: dc.w 0,0
0247: dc.w 0,0,$100,$100
0248: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0249: ;
0250: _SCBrt20 dc.b $c0,$10,$20
0251: dc.w 0,0
0252: dc.w 0,0,$100,$100
0253: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0254: ;
0255: _SCBrt21 dc.b $c0,$10,$20
0256: dc.w 0,0
0257: dc.w 0,0,$100,$100
0258: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0259: ;
0260: _SCBrt22 dc.b $c0,$10,$20
0261: dc.w 0,0
0262: dc.w 0,0,$100,$100
0263: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0264: ;
0265: _SCBrt23 dc.b $c0,$10,$20
0266: dc.w 0,0
0267: dc.w 0,0,$100,$100
0268: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0269: ;
0270: _SCBrt24 dc.b $c0,$10,$20
0271: dc.w 0,0
0272: dc.w 0,0,$100,$100
0273: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0274: ;
0275: _SCBrt25 dc.b $c0,$10,$20
0276: dc.w 0,0
0277: dc.w 0,0,$100,$100
0278: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0279: ;
0280: _SCBrt26 dc.b $c0,$10,$20
0281: dc.w 0,0
0282: dc.w 0,0,$100,$100
0283: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0284: ;
0285: _SCBrt27 dc.b $c0,$10,$20
0286: dc.w 0,0
0287: dc.w 0,0,$100,$100
0288: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0289: ;
0290: _SCBrt28 dc.b $c0,$10,$20
0291: dc.w 0,0
0292: dc.w 0,0,$100,$100
0293: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0294: ;
0295: _SCBrt29 dc.b $c0,$10,$20
0296: dc.w 0,0
0297: dc.w 0,0,$100,$100
0298: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0299: ;
0300: _SCBrt30 dc.b $c0,$10,$20
0301: dc.w 0,0
0302: dc.w 0,0,$100,$100
0303: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0304: ;
0305: _SCBrt31 dc.b $c0,$10,$20
0306: dc.w 0,0
0307: dc.w 0,0,$100,$100
0308: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0309: ;
0310: _SCBrt32 dc.b $c0,$10,$20
0311: dc.w 0,0
0312: dc.w 0,0,$100,$100
0313: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0314: ;
0315: _SCBrt33 dc.b $c0,$10,$20
0316: dc.w 0,0
0317: dc.w 0,0,$100,$100
0318: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0319: ;
0320: _SCBrt34 dc.b $c0,$10,$20
0321: dc.w 0,0
0322: dc.w 0,0,$100,$100
0323: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0324: ;
0325: _SCBrt35 dc.b $c0,$10,$20
0326: dc.w 0,0
0327: dc.w 0,0,$100,$100
0328: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0329: ;
0330: _SCBrt36 dc.b $c0,$10,$20
0331: dc.w 0,0
0332: dc.w 0,0,$100,$100
0333: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0334: ;
0335: _SCBrt37 dc.b $c0,$10,$20
0336: dc.w 0,0
0337: dc.w 0,0,$100,$100
0338: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0339: ;
0340: _SCBrt38 dc.b $c0,$10,$20
0341: dc.w 0,0
0342: dc.w 0,0,$100,$100
0343: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0344: ;
0345: _SCBrt39 dc.b $c0,$10,$20
0346: dc.w 0,0
0347: dc.w 0,0,$100,$100
0348: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0349: ;
0350: _SCBrt40 dc.b $c0,$10,$20
0351: dc.w 0,0
0352: dc.w 0,0,$100,$100
0353: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0354: ;
0355: _SCBrt41 dc.b $c0,$10,$20
0356: dc.w 0,0
0357: dc.w 0,0,$100,$100
0358: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0359: ;
0360: _SCBrt42 dc.b $c0,$10,$20
0361: dc.w 0,0
0362: dc.w 0,0,$100,$100
0363: dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
0364: #endasm
0365: // ------------------------------------
0366: // clip du sprite chiffres, chacun d'une taille de 8*8: 0123456789.LEV
0367: extern uchar bc000000[];
0368: extern uchar bc000001[];
0369: extern uchar bc000002[];
0370: extern uchar bc000003[];
0371: extern uchar bc000004[];
0372: extern uchar bc000005[];
0373: extern uchar bc000006[];
0374: extern uchar bc000007[];
0375: extern uchar bc000008[];
0376: extern uchar bc000009[];
0377: extern uchar bc000010[];
0378: extern uchar bc000011[];
0379: extern uchar bc000012[];
0380: extern uchar bc000013[];
0381:
0382: uchar *chiffrestab[14] = {bc000000, bc000001, bc000002, bc000003, bc000004,
0383: bc000005, bc000006, bc000007, bc000008, bc000009,
0384: bc000010, bc000011, bc000012, bc000013};
0385: uchar SCBchiffres1[]; // d�claration d'un nouveau controleur de sprite (test)
0386: uchar SCBchiffres2[]; // d�claration d'un nouveau controleur de sprite (test)
0387: uchar SCBchiffres3[]; // d�claration d'un nouveau controleur de sprite (test)
0388: uchar SCBchiffres4[]; // d�claration d'un nouveau controleur de sprite (test)
0389: uchar SCBchiffres5[]; // d�claration d'un nouveau controleur de sprite (test)
0390:
0391: uchar SCBscore1[]; // d�claration d'un nouveau controleur de sprite (score unit�)
0392: uchar SCBscore2[]; // d�claration d'un nouveau controleur de sprite (score dizaine)
0393: uchar SCBscore3[]; // d�claration d'un nouveau controleur de sprite (score centaine)
0394: uchar SCBscore4[]; // d�claration d'un nouveau controleur de sprite (score millier)
0395:
0396: uchar SCBtexte1[]; // d�claration d'un nouveau controleur de sprite (level)
0397: uchar SCBtexte2[]; // d�claration d'un nouveau controleur de sprite (level)
0398: uchar SCBtexte3[]; // d�claration d'un nouveau controleur de sprite (level)
0399: uchar SCBtexte4[]; // d�claration d'un nouveau controleur de sprite (level)
0400: uchar SCBtexte5[]; // d�claration d'un nouveau controleur de sprite (level)
0401:
0402: uchar SCBlife[]; // d�claration d'un nouveau controleur de sprite (score unit�)
0403:
0404: #asm
0405: _SCBchiffres1 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: _SCBchiffres2 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: _SCBchiffres3 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: _SCBchiffres4 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: _SCBchiffres5 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: _SCBscore1 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: _SCBscore2 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: _SCBscore3 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: _SCBscore4 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: _SCBtexte1 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: _SCBtexte2 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: _SCBtexte3 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: _SCBtexte4 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: _SCBtexte5 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: _SCBlife 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: #endasm
0480: // ------------------------------------
0481:
0482:
0483: //_SCB7b dc.b $c5,$18,$20
0484: // dc.w _SCBp1, hills
0485: // dc.w 0,83,$100,$100
0486: // dc.b $01, $23, $45, $67, $89,$Ab,$cd,$ef
0487: //
0488:
0489: int posx,posy,level,score,xpush,ypush,relach;
0490: int i;
0491:
0492: int atest,unite,dizaine,centaine,millier,dmillier,horszone;
0493:
0494: char tempa,tempb,tempc,tempd,tempe,etape,filife,gspause,gsblip,mhaut,mbas; // de -128 � 127
0495:
0496: int compti, comptx, compty;
0497: int tligne,nbrbriqx, nbrbriqy;
0498:
0499:
0500:
0501:
0502:
0503:
0504:
0505:
0506: // ------------------------------------
0507: uchar *brdata[42]; //6*7 = 42 tiles
0508: int cible, bbcontact, rebcot, brnbr, brie[42], brix[6] ,briy[7], pointx, tile_x, xboucle, iboucle, jboucle; // 5 car il y a 6 rang�es de tiles sur la m�me ligne (ligne car ecran vertical).
0509:
0510:
0511: ShowScreen() // Proc�dure de mise � jour des coordonn�es des 42 tiles.
0512: {
0513:
0514: SCBX(SCBrt01) = brix[0];
0515: SCBX(SCBrt02) = brix[0];
0516: SCBX(SCBrt03) = brix[0];
0517: SCBX(SCBrt04) = brix[0];
0518: SCBX(SCBrt05) = brix[0];
0519: SCBX(SCBrt06) = brix[0];
0520: SCBX(SCBrt07) = brix[0];
0521:
0522: SCBX(SCBrt08) = brix[1];
0523: SCBX(SCBrt09) = brix[1];
0524: SCBX(SCBrt10) = brix[1];
0525: SCBX(SCBrt11) = brix[1];
0526: SCBX(SCBrt12) = brix[1];
0527: SCBX(SCBrt13) = brix[1];
0528: SCBX(SCBrt14) = brix[1];
0529:
0530: SCBX(SCBrt15) = brix[2];
0531: SCBX(SCBrt16) = brix[2];
0532: SCBX(SCBrt17) = brix[2];
0533: SCBX(SCBrt18) = brix[2];
0534: SCBX(SCBrt19) = brix[2];
0535: SCBX(SCBrt20) = brix[2];
0536: SCBX(SCBrt21) = brix[2];
0537:
0538: SCBX(SCBrt22) = brix[3];
0539: SCBX(SCBrt23) = brix[3];
0540: SCBX(SCBrt24) = brix[3];
0541: SCBX(SCBrt25) = brix[3];
0542: SCBX(SCBrt26) = brix[3];
0543: SCBX(SCBrt27) = brix[3];
0544: SCBX(SCBrt28) = brix[3];
0545:
0546: SCBX(SCBrt29) = brix[4];
0547: SCBX(SCBrt30) = brix[4];
0548: SCBX(SCBrt31) = brix[4];
0549: SCBX(SCBrt32) = brix[4];
0550: SCBX(SCBrt33) = brix[4];
0551: SCBX(SCBrt34) = brix[4];
0552: SCBX(SCBrt35) = brix[4];
0553:
0554: SCBX(SCBrt36) = brix[5];
0555: SCBX(SCBrt37) = brix[5];
0556: SCBX(SCBrt38) = brix[5];
0557: SCBX(SCBrt39) = brix[5];
0558: SCBX(SCBrt40) = brix[5];
0559: SCBX(SCBrt41) = brix[5];
0560: SCBX(SCBrt42) = brix[5];
0561:
0562: SCBY(SCBrt01) = briy[0];SCBY(SCBrt08) = briy[0];SCBY(SCBrt15) = briy[0];SCBY(SCBrt22) = briy[0];SCBY(SCBrt29) = briy[0];SCBY(SCBrt36) = briy[0];
0563: SCBY(SCBrt02) = briy[1];SCBY(SCBrt09) = briy[1];SCBY(SCBrt16) = briy[1];SCBY(SCBrt23) = briy[1];SCBY(SCBrt30) = briy[1];SCBY(SCBrt37) = briy[1];
0564: SCBY(SCBrt03) = briy[2];SCBY(SCBrt10) = briy[2];SCBY(SCBrt17) = briy[2];SCBY(SCBrt24) = briy[2];SCBY(SCBrt31) = briy[2];SCBY(SCBrt38) = briy[2];
0565: SCBY(SCBrt04) = briy[3];SCBY(SCBrt11) = briy[3];SCBY(SCBrt18) = briy[3];SCBY(SCBrt25) = briy[3];SCBY(SCBrt32) = briy[3];SCBY(SCBrt39) = briy[3];
0566: SCBY(SCBrt05) = briy[4];SCBY(SCBrt12) = briy[4];SCBY(SCBrt19) = briy[4];SCBY(SCBrt26) = briy[4];SCBY(SCBrt33) = briy[4];SCBY(SCBrt40) = briy[4];
0567: SCBY(SCBrt06) = briy[5];SCBY(SCBrt13) = briy[5];SCBY(SCBrt20) = briy[5];SCBY(SCBrt27) = briy[5];SCBY(SCBrt34) = briy[5];SCBY(SCBrt41) = briy[5];
0568: SCBY(SCBrt07) = briy[6];SCBY(SCBrt14) = briy[6];SCBY(SCBrt21) = briy[6];SCBY(SCBrt28) = briy[6];SCBY(SCBrt35) = briy[6];SCBY(SCBrt42) = briy[6];
0569:
0570: }
0571:
0572:
0573: // assembler vertical retrace syncronisation routine
0574: void Vsync()
0575: {
0576: #asm
0577: vretrace:
0578: lda $fd0a
0579: bne vretrace
0580: #endasm
0581: }
0582: /**************************************************************************
0583:
0584: ATTENTION : Ci-dessous un tableau de valeurs : ces valeurs ne pourront pas �tre modifi� par la suite.
0585:
0586: La variable brie[42] sera donc utilis� pour modifier l'�tat des 42 tiles.
0587: **************************************************************************/
0588: #include "rdata.h"
0589:
0590: /**************************************************************************
0591: ** **
0592: ** **
0593: **************************************************************************/
0594: char main()
0595: {
0596: InitIRQ();
0597: CLI;
0598:
0599: SetBuffers(SCREEN, RENDER ,0);
0600:
0601: /* set the palette */
0602: SetRGB(pal); // Ceci sert � changer la palette de la Lynx.
0603: //DrawFBox(0,0,160,102,0);
0604:
0605: /**
0606: SCBX(SCB) = 0;
0607: SCBY(SCB) = 0;
0608: SCBDATA(SCB) = fond1;
0609: SCBNEXT(SCB) = SCBromeo; // chainage de sprite
0610:
0611: **/
0612:
0613:
0614: horszone=500;// mettre les tiles hors de l'�cran visible. Sprite tile d'une taille de 34*34.
0615:
0616: SCBX(SCBrt01) = 0;SCBY(SCBrt01) = 0-horszone;
0617: SCBDATA(SCBrt01) = rttab[0%14]; //
0618: SCBNEXT(SCBrt01) = SCBrt02; // chainage de la tile 02
0619: SCBY(SCBrt02) = 34-horszone;
0620: SCBDATA(SCBrt02) = rttab[0%14]; //
0621: SCBNEXT(SCBrt02) = SCBrt03; // chainage de la tile 03
0622: SCBY(SCBrt03) = 68-horszone;
0623: SCBDATA(SCBrt03) = rttab[0%14]; //
0624: SCBNEXT(SCBrt03) = SCBrt04; // chainage de la tile 04
0625: SCBY(SCBrt04) = 102-horszone;
0626: SCBDATA(SCBrt04) = rttab[0%14]; //
0627: SCBNEXT(SCBrt04) = SCBrt05; // chainage de la tile 05
0628: SCBY(SCBrt05) = 136-horszone;
0629: SCBDATA(SCBrt05) = rttab[0%14]; //
0630: SCBNEXT(SCBrt05) = SCBrt06; // chainage de la tile 06
0631: SCBY(SCBrt06) = 170-horszone;
0632: SCBDATA(SCBrt06) = rttab[0%14]; //
0633: SCBNEXT(SCBrt06) = SCBrt07; // chainage de la tile 07
0634: SCBY(SCBrt07) = 204-horszone;
0635: SCBDATA(SCBrt07) = rttab[0%14]; //
0636:
0637: SCBNEXT(SCBrt07) = SCBrt08; // chainage de la tile 08
0638: SCBY(SCBrt08) = 0-horszone;
0639: SCBDATA(SCBrt08) = rttab[0%14]; //
0640: SCBNEXT(SCBrt08) = SCBrt09; // chainage de la tile 09
0641: SCBY(SCBrt09) = 34-horszone;
0642: SCBDATA(SCBrt09) = rttab[0%14]; //
0643: SCBNEXT(SCBrt09) = SCBrt10; // chainage de la tile 10
0644: SCBY(SCBrt10) = 68-horszone;
0645: SCBDATA(SCBrt10) = rttab[0%14]; //
0646: SCBNEXT(SCBrt10) = SCBrt11; // chainage de la tile 11
0647: SCBY(SCBrt11) = 102-horszone;
0648: SCBDATA(SCBrt11) = rttab[0%14]; //
0649: SCBNEXT(SCBrt11) = SCBrt12; // chainage de la tile 12
0650: SCBY(SCBrt12) = 136-horszone;
0651: SCBDATA(SCBrt12) = rttab[0%14]; //
0652: SCBNEXT(SCBrt12) = SCBrt13; // chainage de la tile 13
0653: SCBY(SCBrt13) = 170-horszone;
0654: SCBDATA(SCBrt13) = rttab[0%14]; //
0655: SCBNEXT(SCBrt13) = SCBrt14; // chainage de la tile 14
0656: SCBY(SCBrt14) = 204-horszone;
0657: SCBDATA(SCBrt14) = rttab[0%14]; //
0658:
0659: SCBNEXT(SCBrt14) = SCBrt15; // chainage de la tile 15
0660: SCBY(SCBrt15) = 0-horszone;
0661: SCBDATA(SCBrt15) = rttab[0%14]; //
0662: SCBNEXT(SCBrt15) = SCBrt16; // chainage de la tile 16
0663: SCBY(SCBrt16) = 34-horszone;
0664: SCBDATA(SCBrt16) = rttab[0%14]; //
0665: SCBNEXT(SCBrt16) = SCBrt17; // chainage de la tile 17
0666: SCBY(SCBrt17) = 68-horszone;
0667: SCBDATA(SCBrt17) = rttab[0%14]; //
0668: SCBNEXT(SCBrt17) = SCBrt18; // chainage de la tile 18
0669: SCBY(SCBrt18) = 102-horszone;
0670: SCBDATA(SCBrt18) = rttab[0%14]; //
0671: SCBNEXT(SCBrt18) = SCBrt19; // chainage de la tile 19
0672: SCBY(SCBrt19) = 136-horszone;
0673: SCBDATA(SCBrt19) = rttab[0%14]; //
0674: SCBNEXT(SCBrt19) = SCBrt20; // chainage de la tile 20
0675: SCBY(SCBrt20) = 170-horszone;
0676: SCBDATA(SCBrt20) = rttab[0%14]; //
0677: SCBNEXT(SCBrt20) = SCBrt21; // chainage de la tile 21
0678: SCBY(SCBrt21) = 204-horszone;
0679: SCBDATA(SCBrt21) = rttab[0%14]; //
0680:
0681: SCBNEXT(SCBrt21) = SCBrt22; // chainage de la tile 22
0682: SCBY(SCBrt22) = 0-horszone;
0683: SCBDATA(SCBrt22) = rttab[0%14]; //
0684: SCBNEXT(SCBrt22) = SCBrt23; // chainage de la tile 23
0685: SCBY(SCBrt23) = 34-horszone;
0686: SCBDATA(SCBrt23) = rttab[0%14]; //
0687: SCBNEXT(SCBrt23) = SCBrt24; // chainage de la tile 24
0688: SCBY(SCBrt24) = 68-horszone;
0689: SCBDATA(SCBrt24) = rttab[0%14]; //
0690: SCBNEXT(SCBrt24) = SCBrt25; // chainage de la tile 25
0691: SCBY(SCBrt25) = 102-horszone;
0692: SCBDATA(SCBrt25) = rttab[0%14]; //
0693: SCBNEXT(SCBrt25) = SCBrt26; // chainage de la tile 26
0694: SCBY(SCBrt26) = 136-horszone;
0695: SCBDATA(SCBrt26) = rttab[0%14]; //
0696: SCBNEXT(SCBrt26) = SCBrt27; // chainage de la tile 27
0697: SCBY(SCBrt27) = 170-horszone;
0698: SCBDATA(SCBrt27) = rttab[0%14]; //
0699: SCBNEXT(SCBrt27) = SCBrt28; // chainage de la tile 28
0700: SCBY(SCBrt28) = 204-horszone;
0701: SCBDATA(SCBrt28) = rttab[0%14]; //
0702:
0703: SCBNEXT(SCBrt28) = SCBrt29; // chainage de la tile 29
0704: SCBY(SCBrt29) = 0-horszone;
0705: SCBDATA(SCBrt29) = rttab[0%14]; //
0706: SCBNEXT(SCBrt29) = SCBrt30; // chainage de la tile 30
0707: SCBY(SCBrt30) = 34-horszone;
0708: SCBDATA(SCBrt30) = rttab[0%14]; //
0709: SCBNEXT(SCBrt30) = SCBrt31; // chainage de la tile 31
0710: SCBY(SCBrt31) = 68-horszone;
0711: SCBDATA(SCBrt31) = rttab[0%14]; //
0712: SCBNEXT(SCBrt31) = SCBrt32; // chainage de la tile 32
0713: SCBY(SCBrt32) = 102-horszone;
0714: SCBDATA(SCBrt32) = rttab[0%14]; //
0715: SCBNEXT(SCBrt32) = SCBrt33; // chainage de la tile 33
0716: SCBY(SCBrt33) = 136-horszone;
0717: SCBDATA(SCBrt33) = rttab[0%14]; //
0718: SCBNEXT(SCBrt33) = SCBrt34; // chainage de la tile 34
0719: SCBY(SCBrt34) = 170-horszone;
0720: SCBDATA(SCBrt34) = rttab[0%14]; //
0721: SCBNEXT(SCBrt34) = SCBrt35; // chainage de la tile 35
0722: SCBY(SCBrt35) = 204-horszone;
0723: SCBDATA(SCBrt35) = rttab[0%14]; //
0724:
0725: SCBNEXT(SCBrt35) = SCBrt36; // chainage de la tile 36
0726: SCBY(SCBrt36) = 0-horszone;
0727: SCBDATA(SCBrt36) = rttab[0%14]; //
0728: SCBNEXT(SCBrt36) = SCBrt37; // chainage de la tile 37
0729: SCBY(SCBrt37) = 34-horszone;
0730: SCBDATA(SCBrt37) = rttab[0%14]; //
0731: SCBNEXT(SCBrt37) = SCBrt38; // chainage de la tile 38
0732: SCBY(SCBrt38) = 68-horszone;
0733: SCBDATA(SCBrt38) = rttab[0%14]; //
0734: SCBNEXT(SCBrt38) = SCBrt39; // chainage de la tile 39
0735: SCBY(SCBrt39) = 102-horszone;
0736: SCBDATA(SCBrt39) = rttab[0%14]; //
0737: SCBNEXT(SCBrt39) = SCBrt40; // chainage de la tile 40
0738: SCBY(SCBrt40) = 136-horszone;
0739: SCBDATA(SCBrt40) = rttab[0%14]; //
0740: SCBNEXT(SCBrt40) = SCBrt41; // chainage de la tile 41
0741: SCBY(SCBrt41) = 170-horszone;
0742: SCBDATA(SCBrt41) = rttab[0%14]; //
0743: SCBNEXT(SCBrt41) = SCBrt42; // chainage de la tile 42
0744: SCBY(SCBrt42) = 204-horszone;
0745: SCBDATA(SCBrt42) = rttab[0%14]; //
0746:
0747:
0748: SCBNEXT(SCBrt42) = SCBca; // chainage de la voiture
0749: SCBX(SCBca) = 32;SCBY(SCBca) = 51;
0750: SCBDATA(SCBca) = catab[0%3]; //
0751:
0752:
0753:
0754:
0755:
0756: // SCBNEXT(SCBrt09) = SCBrt10; // chainage de la tile 10
0757: // SCBX(SCBrt10) = 95-horszone;
0758: // SCBY(SCBrt10) = 16+56;
0759: // SCBDATA(SCBrt10) = brtab[0%4]; //
0760: //[0]
0761:
0762: // 2�me sprite chain� (test)
0763: SCBX(SCBchiffres1) = 0;SCBY(SCBchiffres1) = 0;
0764: //SCBDATA(SCBchiffres1) = chiffres;
0765: SCBNEXT(SCBchiffres1) = SCBchiffres2; // chainage de sprite
0766: SCBX(SCBchiffres2) = 0;SCBY(SCBchiffres2) = 0;
0767: //SCBDATA(SCBchiffres2) = chiffres;
0768: SCBNEXT(SCBchiffres2) = SCBchiffres3; // chainage de sprite
0769: SCBX(SCBchiffres3) = 0;SCBY(SCBchiffres3) = 0;
0770: //SCBDATA(SCBchiffres3) = chiffres;
0771: SCBNEXT(SCBchiffres3) = SCBchiffres4; // chainage de sprite
0772: SCBX(SCBchiffres4) = 0;SCBY(SCBchiffres4) = 0;
0773: SCBNEXT(SCBchiffres4) = SCBchiffres5; // chainage de sprite
0774: SCBX(SCBchiffres5) = 0;SCBY(SCBchiffres5) = 0;
0775:
0776:
0777:
0778: // truc bien pratique : associer les tiles du tableau � une variable num�rot�.
0779: brdata[0] = SCBrt01;brdata[1] = SCBrt02;brdata[2] = SCBrt03;brdata[3] = SCBrt04;brdata[4] = SCBrt05;brdata[5] = SCBrt06;brdata[6] = SCBrt07;
0780: brdata[7] = SCBrt08;brdata[8] = SCBrt09;brdata[9] = SCBrt10;brdata[10] = SCBrt11;brdata[11] = SCBrt12;brdata[12] = SCBrt13;brdata[13] = SCBrt14;
0781: brdata[14] = SCBrt15;brdata[15] = SCBrt16;brdata[16] = SCBrt17;brdata[17] = SCBrt18;brdata[18] = SCBrt19;brdata[19] = SCBrt20;brdata[20] = SCBrt21;
0782: brdata[21] = SCBrt22;brdata[22] = SCBrt23;brdata[23] = SCBrt24;brdata[24] = SCBrt25;brdata[25] = SCBrt26;brdata[26] = SCBrt27;brdata[27] = SCBrt28;
0783: brdata[28] = SCBrt29;brdata[29] = SCBrt30;brdata[30] = SCBrt31;brdata[31] = SCBrt32;brdata[32] = SCBrt33;brdata[33] = SCBrt34;brdata[34] = SCBrt35;
0784: brdata[35] = SCBrt36;brdata[36] = SCBrt37;brdata[37] = SCBrt38;brdata[38] = SCBrt39;brdata[39] = SCBrt40;brdata[40] = SCBrt41;brdata[41] = SCBrt42;
0785:
0786:
0787: /**************************************************************************
0788:
0789: level=1;
0790: // for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
0791: // {
0792: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
0793: {
0794: if (level==1)
0795: {
0796: //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14];
0797: SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[0][compty]%14];
0798:
0799: }
0800: }
0801: // }
0802: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
0803: {
0804: if (level==1)
0805: {
0806: //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14];
0807: SCBDATA(brdata[0 + (compty+9)]) = rttab[tbr01[1][compty]%14];
0808:
0809: }
0810: }
0811: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
0812: {
0813: if (level==1)
0814: {
0815: //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14];
0816: SCBDATA(brdata[0 + (compty+18)]) = rttab[tbr01[2][compty]%14];
0817:
0818: }
0819: }
0820: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
0821: {
0822: if (level==1)
0823: {
0824: //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14];
0825: SCBDATA(brdata[0 + (compty+27)]) = rttab[tbr01[3][compty]%14];
0826:
0827: }
0828: }
0829: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
0830: {
0831: if (level==1)
0832: {
0833: //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14];
0834: SCBDATA(brdata[0 + (compty+36)]) = rttab[tbr01[4][compty]%14];
0835:
0836: }
0837: }
0838: **************************************************************************/
0839:
0840: /**************************************************************************
0841:
0842: //�a marche !
0843: comptx=0;
0844: SCBDATA(brdata[comptx]) = rttab[tbr01[0][0]%14];
0845: comptx=1;
0846: SCBDATA(brdata[comptx]) = rttab[tbr01[0][1]%14];
0847: comptx=2;
0848: SCBDATA(brdata[comptx]) = rttab[tbr01[0][2]%14];
0849: comptx=3;
0850: SCBDATA(brdata[comptx]) = rttab[tbr01[0][3]%14];
0851: comptx=4;
0852: SCBDATA(brdata[comptx]) = rttab[tbr01[0][4]%14];
0853: **************************************************************************/
0854:
0855:
0856:
0857:
0858:
0859:
0860:
0861: /**************************************************************************
0862: ** BOUCLE PRINCIPALE **
0863: **************************************************************************/
0864: while(1)
0865: {
0866: // for( ; ; )
0867:
0868: Vsync();
0869: SwapBuffers();
0870: //update_music(); // petite subtilit� de la gestion sonore
0871:
0872:
0873:
0874:
0875:
0876: ++gsblip; // economie ressource machine --> certaines des conditions n'ont pas besoin d'�tre lu par la LYNX � chaque boucle.
0877: if (gsblip==5)
0878: {
0879: gsblip=1;
0880:
0881: if (switches & BUTTON_PAUSE)
0882: {
0883: if (gspause==0) {gspause=1;} //silence();abcmusic(0,abcaptvir);}
0884: }
0885: if (!(switches & BUTTON_PAUSE))
0886: {
0887: if (gspause==1) gspause=2;
0888: }
0889:
0890: if (switches & BUTTON_PAUSE)
0891: {
0892: if (gspause==2) gspause=3;
0893: }
0894:
0895: if (!(switches & BUTTON_PAUSE))
0896: {
0897: if (gspause==3) gspause=0;
0898: }
0899: }
0900:
0901:
0902:
0903: /**************************************************************************
0904: **************************************************************************/
0905: if (etape>=0 & etape<=4) // �cran titre
0906: {
0907: ++tempa;
0908: if (tempa>16) {tempa=0;etape=9;}
0909: }
0910: // Affichage des sprites chain�:
0911: /**************************************************************************
0912: **************************************************************************/
0913: if (etape==9) // coordonn�es affichage texte "LEVEL", et surtout application des choix de la nature des tiles (voir tables de donn�es plus haut).
0914: {
0915: ++etape;
0916:
0917: //horszone=0;
0918:
0919: }
0920: /**************************************************************************
0921: **************************************************************************/
0922: if (etape==10) // ecran level
0923: {
0924: brix[0] = 0;
0925: brix[1] = 34;
0926: brix[2] = 68;
0927: brix[3] = 102;
0928: brix[4] = 136;
0929: brix[5] = 170;
0930:
0931: briy[0]=0;briy[1]=34;briy[2]=68;briy[3]=102;briy[4]=136;briy[5]=170;briy[6]=204;//briy[7]=238;briy[8]=272;
0932:
0933: ShowScreen(); // Coordonn�es de toutes les tiles (voir la proc�dure situ� au d�but de ce joyeux code).
0934:
0935: level=1;
0936: // for(comptx=0 ; comptx<5; comptx++) // de 0 � 4, ce qui fait 5.
0937: // {
0938: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
0939: {
0940: if (level==1)
0941: {
0942: //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14];
0943: SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[0][compty]%14];
0944:
0945: }
0946: }
0947: // }
0948: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
0949: {
0950: if (level==1)
0951: {
0952: //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14];
0953: SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[1][compty]%14];
0954:
0955: }
0956: }
0957: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
0958: {
0959: if (level==1)
0960: {
0961: //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14];
0962: SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[2][compty]%14];
0963:
0964: }
0965: }
0966: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
0967: {
0968: if (level==1)
0969: {
0970: //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14];
0971: SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[3][compty]%14];
0972:
0973: }
0974: }
0975: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
0976: {
0977: if (level==1)
0978: {
0979: //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14];
0980: SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[4][compty]%14];
0981:
0982: }
0983: }
0984: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
0985: {
0986: if (level==1)
0987: {
0988: //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14];
0989: SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[5][compty]%14];
0990:
0991: }
0992: }
0993: etape=20;pointx=0;
0994:
0995:
0996: // if (level==1)
0997: // {
0998: //
0999: // }
1000:
1001: }
1002:
1003: if (etape==20) // ecran level
1004: {
1005: /**************************************************************************
1006: #define JOY_DOWN 0x40
1007: #define JOY_UP 0x80
1008:
1009: #define JOY_RIGHT 0x10
1010: #define JOY_LEFT 0x20
1011:
1012: brix[0] = 0;
1013: brix[1] = 34;
1014: brix[2] = 68;
1015: brix[3] = 102;
1016: brix[4] = 136;
1017:
1018: if (joystick & JOY_UP) {
1019: //yplayer=yplayer-2;
1020: //if (yplayer<15) {yplayer=15;}
1021: ++brix[0];++brix[1];++brix[2];++brix[3];++brix[4];
1022: }
1023:
1024: if (joystick & JOY_DOWN) {
1025: //yplayer=yplayer+2;
1026: //if (yplayer>87) {yplayer=87;} // (102-24 = 78-3 = 75) ; 24 = largeur de la raquette
1027: --brix[0];--brix[1];--brix[2];--brix[3];--brix[4];
1028: }
1029: **************************************************************************/
1030:
1031:
1032: /** Coordonn�es des 42 Tiles, r�parties en 19 colonnes (de 0 � 18). Il est bien s�r possible d'afficher plus de colonne encore. **/
1033: if (joystick & JOY_LEFT) {
1034: //yplayer=yplayer-2;
1035: //if (yplayer<15) {yplayer=15;}
1036:
1037: //if (pointx>0)
1038: if (tile_x>0 | (tile_x==0 & pointx>0))
1039: //if (tile_x>0 | (tile_x==0 & pointx>0))
1040: {
1041: --pointx;
1042: ++brix[0];++brix[1];++brix[2];++brix[3];++brix[4];++brix[5];
1043: }
1044: if (pointx<0) // tile d'une taille de 34*34 --> 0 � 33
1045: {
1046: pointx=33;
1047: if (tile_x>0) --tile_x;
1048: //
1049: /**
1050: if (tile_x==0)
1051: {
1052: brix[0]=-33;
1053: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1054: {
1055: SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[0][compty]%14]; // lecture donn�e
1056: }
1057: }
1058: if (tile_x==1)
1059: {
1060: brix[1]=-33;
1061: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1062: {
1063: SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[1][compty]%14]; // lecture donn�e
1064: }
1065: }
1066: if (tile_x==2)
1067: {
1068: brix[2]=-33;
1069: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1070: {
1071: SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[2][compty]%14]; // lecture donn�e
1072: }
1073: }
1074: if (tile_x==3)
1075: {
1076: brix[3]=-33;
1077: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1078: {
1079: SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[3][compty]%14]; // lecture donn�e
1080: }
1081: }
1082: if (tile_x==4)
1083: {
1084: brix[4]=-33;
1085: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1086: {
1087: SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[4][compty]%14]; // lecture donn�e
1088: }
1089: }
1090: if (tile_x==5)
1091: {
1092: brix[5]=-33;
1093: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1094: {
1095: SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[5][compty]%14]; // lecture donn�e
1096: }
1097: }
1098: **/
1099:
1100:
1101:
1102:
1103: /**
1104: if (tile_x==6)
1105: {
1106: brix[0]=-33;
1107: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1108: {
1109: SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[6][compty]%14]; // lecture donn�e
1110: }
1111: }
1112: if (tile_x==7)
1113: {
1114: brix[1]=-33;
1115: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1116: {
1117: SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[7][compty]%14]; // lecture donn�e
1118: }
1119: }
1120: if (tile_x==8)
1121: {
1122: brix[2]=-33;
1123: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1124: {
1125: SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[8][compty]%14]; // lecture donn�e
1126: }
1127: }
1128: if (tile_x==9)
1129: {
1130: brix[3]=-33;
1131: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1132: {
1133: SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[9][compty]%14]; // lecture donn�e
1134: }
1135: }
1136: if (tile_x==10)
1137: {
1138: brix[4]=-33;
1139: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1140: {
1141: SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[10][compty]%14]; // lecture donn�e
1142: }
1143: }
1144: if (tile_x==11)
1145: {
1146: brix[5]=-33;
1147: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1148: {
1149: SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[11][compty]%14]; // lecture donn�e
1150: }
1151: }
1152: **/
1153:
1154:
1155:
1156:
1157:
1158: /**
1159: if (tile_x==12)
1160: {
1161: brix[0]=-33;
1162: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1163: {
1164: SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[12][compty]%14]; // lecture donn�e
1165: }
1166: }
1167: if (tile_x==13)
1168: {
1169: brix[1]=-33;
1170: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1171: {
1172: SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[13][compty]%14]; // lecture donn�e
1173: }
1174: }
1175: if (tile_x==14)
1176: {
1177: brix[2]=-33;
1178: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1179: {
1180: SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[14][compty]%14]; // lecture donn�e
1181: }
1182: }
1183: if (tile_x==15)
1184: {
1185: brix[3]=-33;
1186: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1187: {
1188: SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[15][compty]%14]; // lecture donn�e
1189: }
1190: }
1191: if (tile_x==16)
1192: {
1193: brix[4]=-33;
1194: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1195: {
1196: SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[16][compty]%14]; // lecture donn�e
1197: }
1198: }
1199: if (tile_x==17)
1200: {
1201: brix[5]=-33;
1202: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1203: {
1204: SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[17][compty]%14]; // lecture donn�e
1205: }
1206: }
1207: **/
1208: if (tile_x<6) // 0 1 2 3 4 5
1209: {
1210: jboucle=tile_x;
1211:
1212: brix[jboucle]=-33;
1213: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1214: {
1215: xboucle=jboucle;xboucle=xboucle*7;
1216: iboucle=tile_x;//iboucle=iboucle+5;
1217: SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donn�e
1218: }
1219: }
1220: if (tile_x>5 & tile_x<12) // 6 7 8 9 10 11
1221: {
1222: jboucle=tile_x;jboucle=jboucle-6;
1223: brix[jboucle]=-33;
1224: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1225: {
1226: xboucle=jboucle;xboucle=xboucle*7;
1227: iboucle=tile_x;//iboucle=iboucle+5;
1228: SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donn�e
1229: }
1230: }
1231: if (tile_x>11 & tile_x<18) // 12 13 14 15 16 17
1232: {
1233: jboucle=tile_x;jboucle=jboucle-12;
1234: brix[jboucle]=-33;
1235: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1236: {
1237: xboucle=jboucle;xboucle=xboucle*7;
1238: iboucle=tile_x;//iboucle=iboucle+5;
1239: SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donn�e
1240: }
1241: }
1242: if (tile_x>17 & tile_x<24) // 18 19 20 21 22 23
1243: {
1244: jboucle=tile_x;jboucle=jboucle-18;
1245: brix[jboucle]=-33;
1246: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1247: {
1248: xboucle=jboucle;xboucle=xboucle*7;
1249: iboucle=tile_x;//iboucle=iboucle+5;
1250: SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donn�e
1251: }
1252: }
1253: }
1254:
1255: }
1256:
1257:
1258: if (joystick & JOY_RIGHT) {
1259: //yplayer=yplayer+2;
1260: //if (yplayer>87) {yplayer=87;} // (102-24 = 78-3 = 75) ; 24 = largeur de la raquette
1261:
1262: if (tile_x<25 | (tile_x==25 & pointx<10))
1263: {
1264: ++pointx;
1265: --brix[0];--brix[1];--brix[2];--brix[3];--brix[4];--brix[5];
1266: }
1267: if (pointx>33)
1268: {
1269: pointx=0;
1270: ++tile_x;
1271:
1272: /**************************************************************************
1273: if (tile_x==1)
1274: {
1275: brix[0]=170; // 1ere colonne de sprites plac�e � droite.
1276: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1277: {
1278: SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[6][compty]%14]; // lecture donn�e
1279: }
1280: }
1281: if (tile_x==2)
1282: {
1283: brix[1]=170; // 2eme colonne de sprites plac�e � droite.
1284: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1285: {
1286: SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[7][compty]%14]; // lecture donn�e
1287: }
1288: }
1289: if (tile_x==3)
1290: {
1291: brix[2]=170; // 3eme colonne de sprites plac�e � droite.
1292: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1293: {
1294: SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[8][compty]%14]; // lecture donn�e
1295: }
1296: }
1297: if (tile_x==4)
1298: {
1299: brix[3]=170; // 4eme colonne de sprites plac�e � droite.
1300: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1301: {
1302: SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[9][compty]%14]; // lecture donn�e
1303: }
1304: }
1305: if (tile_x==5)
1306: {
1307: brix[4]=170; // 5eme colonne de sprites plac�e � droite.
1308: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1309: {
1310: SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[10][compty]%14]; // lecture donn�e
1311: }
1312: }
1313: if (tile_x==6)
1314: {
1315: brix[5]=170; // 6eme colonne de sprites plac�e � droite.
1316: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1317: {
1318: SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[11][compty]%14]; // lecture donn�e
1319: }
1320: }
1321:
1322: if (tile_x==7)
1323: {
1324: brix[0]=170; // 1ere colonne de sprites plac�e � droite.
1325: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1326: {
1327: SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[12][compty]%14]; // lecture donn�e
1328: }
1329: }
1330: if (tile_x==8)
1331: {
1332: brix[1]=170; // 1ere colonne de sprites plac�e � droite.
1333: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1334: {
1335: SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[13][compty]%14]; // lecture donn�e
1336: }
1337: }
1338: if (tile_x==9)
1339: {
1340: brix[2]=170; // 1ere colonne de sprites plac�e � droite.
1341: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1342: {
1343: SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[14][compty]%14]; // lecture donn�e
1344: }
1345: }
1346: if (tile_x==10)
1347: {
1348: brix[3]=170; // 1ere colonne de sprites plac�e � droite.
1349: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1350: {
1351: SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[15][compty]%14]; // lecture donn�e
1352: }
1353: }
1354: if (tile_x==11)
1355: {
1356: brix[4]=170; // 1ere colonne de sprites plac�e � droite.
1357: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1358: {
1359: SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[16][compty]%14]; // lecture donn�e
1360: }
1361: }
1362: if (tile_x==12)
1363: {
1364: brix[5]=170; // 1ere colonne de sprites plac�e � droite.
1365: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1366: {
1367: SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[17][compty]%14]; // lecture donn�e
1368: }
1369: }
1370:
1371: if (tile_x==13)
1372: {
1373: brix[0]=170; // 1ere colonne de sprites plac�e � droite.
1374: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1375: {
1376: SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[18][compty]%14]; // lecture donn�e
1377: }
1378: }
1379: if (tile_x==14)
1380: {
1381: brix[1]=170; // 1ere colonne de sprites plac�e � droite.
1382: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1383: {
1384: SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[19][compty]%14]; // lecture donn�e
1385: }
1386: }
1387: if (tile_x==15)
1388: {
1389: brix[2]=170; // 1ere colonne de sprites plac�e � droite.
1390: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1391: {
1392: SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[20][compty]%14]; // lecture donn�e
1393: }
1394: }
1395: if (tile_x==16)
1396: {
1397: brix[3]=170; // 1ere colonne de sprites plac�e � droite.
1398: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1399: {
1400: SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[21][compty]%14]; // lecture donn�e
1401: }
1402: }
1403: if (tile_x==17)
1404: {
1405: brix[4]=170; // 1ere colonne de sprites plac�e � droite.
1406: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1407: {
1408: SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[22][compty]%14]; // lecture donn�e
1409: }
1410: }
1411: if (tile_x==18)
1412: {
1413: brix[5]=170; // 1ere colonne de sprites plac�e � droite.
1414: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1415: {
1416: SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[23][compty]%14]; // lecture donn�e
1417: }
1418: }
1419: **************************************************************************/
1420: if (tile_x<7) // 1 2 3 4 5 6
1421: {
1422: jboucle=tile_x-1;
1423:
1424: brix[jboucle]=170;
1425: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1426: {
1427: xboucle=jboucle;xboucle=xboucle*7;
1428: iboucle=tile_x;iboucle=iboucle+5;
1429: SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donn�e
1430: }
1431: }
1432: if (tile_x>6 & tile_x<13) // 7 8 9 10 11 12
1433: {
1434: jboucle=tile_x-7;
1435:
1436: brix[jboucle]=170;
1437: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1438: {
1439: xboucle=jboucle;xboucle=xboucle*7;
1440: iboucle=tile_x;iboucle=iboucle+5;
1441: SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donn�e
1442: }
1443: }
1444: if (tile_x>12 & tile_x<19) // 13 14 15 16 17 18
1445: {
1446: jboucle=tile_x-13;
1447:
1448: brix[jboucle]=170;
1449: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1450: {
1451: xboucle=jboucle;xboucle=xboucle*7;
1452: iboucle=tile_x;iboucle=iboucle+5;
1453: SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donn�e
1454: }
1455: }
1456: if (tile_x>18 & tile_x<25) // 19 20 21 22 23 24
1457: {
1458: jboucle=tile_x-19;
1459:
1460: brix[jboucle]=170;
1461: for(compty=0 ; compty<7; compty++) // de 0 � 6, ce qui fait 7 tiles par colonne.
1462: {
1463: xboucle=jboucle;xboucle=xboucle*7;
1464: iboucle=tile_x;iboucle=iboucle+5;
1465: SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donn�e
1466: }
1467: }
1468: }
1469: }
1470:
1471:
1472: if (joystick & JOY_UP) {
1473: //yplayer=yplayer-2;
1474: //if (yplayer<15) {yplayer=15;}
1475: //briy[0]
1476: if (briy[0]<0)
1477: {
1478: ++briy[0];++briy[1];++briy[2];++briy[3];++briy[4];++briy[5];++briy[6];//++briy[7];++briy[8];
1479: }
1480: }
1481:
1482: if (joystick & JOY_DOWN) {
1483: //yplayer=yplayer+2;
1484: //if (yplayer>87) {yplayer=87;} // (102-24 = 78-3 = 75) ; 24 = largeur de la raquette
1485: if (briy[0]>-136)//34*4 = 136
1486: {
1487: --briy[0];--briy[1];--briy[2];--briy[3];--briy[4];--briy[5];--briy[6];//--briy[7];--briy[8];
1488: }
1489: }
1490:
1491:
1492:
1493:
1494:
1495:
1496: ShowScreen(); // Coordonn�es de toutes les tiles (voir la proc�dure situ� au d�but de ce joyeux code).
1497: }
1498:
1499:
1500:
1501: DrawSprite(SCBrt01); // Affichage de toutes les images chain�es (tiles, voiture...).
1502:
1503:
1504:
1505: /**************************************************************************
1506: **************************************************************************/
1507: /** test
1508:
1509:
1510: atest=tile_x;//pointx;//xboucle;//tile_x;//xboucle+compty;//tile_x;//pointx;//etape;//brsco[0];//ttest;//9;//balldirX;//yplayer;//speedX;//dirf;//etape;
1511:
1512: //atest=horszone;//relach;//etape;//SCBCTL0(SCBbr);
1513: unite = atest % 10;
1514: dizaine = atest / 10 % 10;
1515: centaine = atest / 100 % 10;
1516: // millier = atest / 1000 % 10;
1517: // dmillier = atest / 10000 % 10;
1518: // unit�:
1519: SCBDATA(SCBchiffres1) = chiffrestab[unite%14];
1520: SCBX(SCBchiffres1) = 100;
1521: SCBY(SCBchiffres1) = 53;
1522:
1523: // dizaine:
1524: SCBDATA(SCBchiffres2) = chiffrestab[dizaine%14];
1525: SCBX(SCBchiffres2) = 100;
1526: SCBY(SCBchiffres2) = 53-8;
1527:
1528: // centaine:
1529: SCBDATA(SCBchiffres3) = chiffrestab[centaine%14]; // 0
1530: SCBX(SCBchiffres3) = 100;
1531: SCBY(SCBchiffres3) = 53-16;
1532:
1533: // millier:
1534: // SCBDATA(SCBchiffres4) = chiffrestab[millier%14]; // 0
1535: // SCBX(SCBchiffres4) = 100;
1536: // SCBY(SCBchiffres4) = 53-24;
1537:
1538: // dizaine de millier:
1539: // SCBDATA(SCBchiffres5) = chiffrestab[dmillier%14]; // 0
1540: // SCBX(SCBchiffres5) = 100;
1541: // SCBY(SCBchiffres5) = 53-32;
1542:
1543: DrawSprite(SCBchiffres1); // Affichage valeur test�
1544:
1545: **/
1546:
1547:
1548: }
1549:
1550: /**************************************************************************
1551: ** FIN de la BOUCLE PRINCIPALE **
1552: **************************************************************************/
1553:
1554: }