/* scrolling 0.1 - LYNX - kit BLL (newcc65) - 16/12/2010 - philippe H. LYNX - résolution: 160*102 - scroll demo - Gestion des tiles: 6 tiles * 7 tiles = 42 tiles, chaque tile ayant une taille de 34*34 - Zone de jeu: 30 tiles * 7 tiles soit 210 tiles - 1020 * 238 = 242760 pixels */ #include #include #include /* LYNX-specific #defines: */ #define JOY_RIGHT 0x10 #define JOY_LEFT 0x20 #define JOY_DOWN 0x40 #define JOY_UP 0x80 #define BUTTON_OPTION1 0x08 #define BUTTON_OPTION2 0x04 #define BUTTON_LEFT 0x02 #define BUTTON_RIGHT 0x01 #define BUTTON_PAUSE 0x01 //#define BUFFER1 0xBC40 //#define BUFFER2 0xDC20 //char SCREEN[8160] at (MEMTOP-16320); char SCREEN[8160] at (MEMTOP-16320); char RENDER[8160] at (MEMTOP-8160); uchar pal[]={ 0x00,0x00,0x0F,0x0F,0x0E,0x08,0x07,0x03,0x05,0x0A,0x00,0x0F,0x09,0x09,0x08,0x08, 0x00,0x0F,0x7C,0x28,0x02,0x00,0x66,0x32,0xE0,0xAA,0x50,0xFF,0x99,0x99,0x88,0x88}; /** // ------------------------------------ extern char fond1[]; char SCB[]; #asm _SCB dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef #endasm **/ // ------------------------------------ /***************************************************************************** ** Ci-dessous, le contenu du fichier batchfile pour l'image cara.bmp ** set image01=cara.bmp SPRPCK -t6 -S030021 -r001003 -o000000 -i030063 -a014010 -p0 %image01% ca cmd ** Le point d'action de l'image ghost est mis au centre de celle-ci, ** ** (-a014010). *****************************************************************************/ extern uchar ca000000[]; extern uchar ca001000[]; extern uchar ca002000[]; uchar *catab[3] = {ca000000, ca001000, ca002000}; uchar SCBca[]; // déclaration d'un nouveau controleur de sprite --> car #asm _SCBca dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef #endasm // ------------------------------------ // clip du sprite 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). /***************************************************************************** ** Ci-dessous, le contenu du fichier batchfile pour l'image rtile.bmp ** set image01=rtile.bmp SPRPCK -t6 -S034034 -r014001 -o000000 -i476034 -p0 %image01% rt cmd *****************************************************************************/ extern uchar rt000000[]; extern uchar rt000001[]; extern uchar rt000002[]; extern uchar rt000003[]; extern uchar rt000004[]; extern uchar rt000005[]; extern uchar rt000006[]; extern uchar rt000007[]; extern uchar rt000008[]; extern uchar rt000009[]; extern uchar rt000010[]; extern uchar rt000011[]; extern uchar rt000012[]; extern uchar rt000013[]; uchar *rttab[14] = {rt000000, rt000001, rt000002, rt000003, rt000004, rt000005, rt000006, rt000007, rt000008, rt000009, rt000010, rt000011, rt000012, rt000013}; // nombreuses déclarations des nouveaux controleurs de sprite (42) pour les tiles. uchar SCBrt01[]; uchar SCBrt02[]; uchar SCBrt03[]; uchar SCBrt04[]; uchar SCBrt05[]; uchar SCBrt06[]; uchar SCBrt07[]; uchar SCBrt08[]; uchar SCBrt09[]; uchar SCBrt10[]; uchar SCBrt11[]; uchar SCBrt12[]; uchar SCBrt13[]; uchar SCBrt14[]; uchar SCBrt15[]; uchar SCBrt16[]; uchar SCBrt17[]; uchar SCBrt18[]; uchar SCBrt19[]; uchar SCBrt20[]; uchar SCBrt21[]; uchar SCBrt22[]; uchar SCBrt23[]; uchar SCBrt24[]; uchar SCBrt25[]; uchar SCBrt26[]; uchar SCBrt27[]; uchar SCBrt28[]; uchar SCBrt29[]; uchar SCBrt30[]; uchar SCBrt31[]; uchar SCBrt32[]; uchar SCBrt33[]; uchar SCBrt34[]; uchar SCBrt35[]; uchar SCBrt36[]; uchar SCBrt37[]; uchar SCBrt38[]; uchar SCBrt39[]; uchar SCBrt40[]; uchar SCBrt41[]; uchar SCBrt42[]; /***************************************************************************** ************************************ _SCBrt01 dc.b $c7,$10,$20 *****************************************/ #asm _SCBrt01 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt02 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt03 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt04 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt05 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt06 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt07 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt08 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt09 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt10 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt11 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt12 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt13 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt14 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt15 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt16 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt17 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt18 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt19 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt20 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt21 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt22 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt23 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt24 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt25 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt26 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt27 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt28 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt29 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt30 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt31 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt32 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt33 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt34 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt35 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt36 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt37 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt38 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt39 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt40 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt41 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBrt42 dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef #endasm // ------------------------------------ // clip du sprite chiffres, chacun d'une taille de 8*8: 0123456789.LEV extern uchar bc000000[]; extern uchar bc000001[]; extern uchar bc000002[]; extern uchar bc000003[]; extern uchar bc000004[]; extern uchar bc000005[]; extern uchar bc000006[]; extern uchar bc000007[]; extern uchar bc000008[]; extern uchar bc000009[]; extern uchar bc000010[]; extern uchar bc000011[]; extern uchar bc000012[]; extern uchar bc000013[]; uchar *chiffrestab[14] = {bc000000, bc000001, bc000002, bc000003, bc000004, bc000005, bc000006, bc000007, bc000008, bc000009, bc000010, bc000011, bc000012, bc000013}; uchar SCBchiffres1[]; // déclaration d'un nouveau controleur de sprite (test) uchar SCBchiffres2[]; // déclaration d'un nouveau controleur de sprite (test) uchar SCBchiffres3[]; // déclaration d'un nouveau controleur de sprite (test) uchar SCBchiffres4[]; // déclaration d'un nouveau controleur de sprite (test) uchar SCBchiffres5[]; // déclaration d'un nouveau controleur de sprite (test) uchar SCBscore1[]; // déclaration d'un nouveau controleur de sprite (score unité) uchar SCBscore2[]; // déclaration d'un nouveau controleur de sprite (score dizaine) uchar SCBscore3[]; // déclaration d'un nouveau controleur de sprite (score centaine) uchar SCBscore4[]; // déclaration d'un nouveau controleur de sprite (score millier) uchar SCBtexte1[]; // déclaration d'un nouveau controleur de sprite (level) uchar SCBtexte2[]; // déclaration d'un nouveau controleur de sprite (level) uchar SCBtexte3[]; // déclaration d'un nouveau controleur de sprite (level) uchar SCBtexte4[]; // déclaration d'un nouveau controleur de sprite (level) uchar SCBtexte5[]; // déclaration d'un nouveau controleur de sprite (level) uchar SCBlife[]; // déclaration d'un nouveau controleur de sprite (score unité) #asm _SCBchiffres1 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBchiffres2 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBchiffres3 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBchiffres4 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBchiffres5 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBscore1 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBscore2 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBscore3 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBscore4 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBtexte1 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBtexte2 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBtexte3 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBtexte4 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBtexte5 dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef ; _SCBlife dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef #endasm // ------------------------------------ //_SCB7b dc.b $c5,$18,$20 // dc.w _SCBp1, hills // dc.w 0,83,$100,$100 // dc.b $01, $23, $45, $67, $89,$Ab,$cd,$ef // int posx,posy,level,score,xpush,ypush,relach; int i; int atest,unite,dizaine,centaine,millier,dmillier,horszone; char tempa,tempb,tempc,tempd,tempe,etape,filife,gspause,gsblip,mhaut,mbas; // de -128 à 127 int compti, comptx, compty; int tligne,nbrbriqx, nbrbriqy; // ------------------------------------ uchar *brdata[42]; //6*7 = 42 tiles 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). ShowScreen() // Procédure de mise à jour des coordonnées des 42 tiles. { SCBX(SCBrt01) = brix[0]; SCBX(SCBrt02) = brix[0]; SCBX(SCBrt03) = brix[0]; SCBX(SCBrt04) = brix[0]; SCBX(SCBrt05) = brix[0]; SCBX(SCBrt06) = brix[0]; SCBX(SCBrt07) = brix[0]; SCBX(SCBrt08) = brix[1]; SCBX(SCBrt09) = brix[1]; SCBX(SCBrt10) = brix[1]; SCBX(SCBrt11) = brix[1]; SCBX(SCBrt12) = brix[1]; SCBX(SCBrt13) = brix[1]; SCBX(SCBrt14) = brix[1]; SCBX(SCBrt15) = brix[2]; SCBX(SCBrt16) = brix[2]; SCBX(SCBrt17) = brix[2]; SCBX(SCBrt18) = brix[2]; SCBX(SCBrt19) = brix[2]; SCBX(SCBrt20) = brix[2]; SCBX(SCBrt21) = brix[2]; SCBX(SCBrt22) = brix[3]; SCBX(SCBrt23) = brix[3]; SCBX(SCBrt24) = brix[3]; SCBX(SCBrt25) = brix[3]; SCBX(SCBrt26) = brix[3]; SCBX(SCBrt27) = brix[3]; SCBX(SCBrt28) = brix[3]; SCBX(SCBrt29) = brix[4]; SCBX(SCBrt30) = brix[4]; SCBX(SCBrt31) = brix[4]; SCBX(SCBrt32) = brix[4]; SCBX(SCBrt33) = brix[4]; SCBX(SCBrt34) = brix[4]; SCBX(SCBrt35) = brix[4]; SCBX(SCBrt36) = brix[5]; SCBX(SCBrt37) = brix[5]; SCBX(SCBrt38) = brix[5]; SCBX(SCBrt39) = brix[5]; SCBX(SCBrt40) = brix[5]; SCBX(SCBrt41) = brix[5]; SCBX(SCBrt42) = brix[5]; SCBY(SCBrt01) = briy[0];SCBY(SCBrt08) = briy[0];SCBY(SCBrt15) = briy[0];SCBY(SCBrt22) = briy[0];SCBY(SCBrt29) = briy[0];SCBY(SCBrt36) = briy[0]; SCBY(SCBrt02) = briy[1];SCBY(SCBrt09) = briy[1];SCBY(SCBrt16) = briy[1];SCBY(SCBrt23) = briy[1];SCBY(SCBrt30) = briy[1];SCBY(SCBrt37) = briy[1]; SCBY(SCBrt03) = briy[2];SCBY(SCBrt10) = briy[2];SCBY(SCBrt17) = briy[2];SCBY(SCBrt24) = briy[2];SCBY(SCBrt31) = briy[2];SCBY(SCBrt38) = briy[2]; SCBY(SCBrt04) = briy[3];SCBY(SCBrt11) = briy[3];SCBY(SCBrt18) = briy[3];SCBY(SCBrt25) = briy[3];SCBY(SCBrt32) = briy[3];SCBY(SCBrt39) = briy[3]; SCBY(SCBrt05) = briy[4];SCBY(SCBrt12) = briy[4];SCBY(SCBrt19) = briy[4];SCBY(SCBrt26) = briy[4];SCBY(SCBrt33) = briy[4];SCBY(SCBrt40) = briy[4]; SCBY(SCBrt06) = briy[5];SCBY(SCBrt13) = briy[5];SCBY(SCBrt20) = briy[5];SCBY(SCBrt27) = briy[5];SCBY(SCBrt34) = briy[5];SCBY(SCBrt41) = briy[5]; SCBY(SCBrt07) = briy[6];SCBY(SCBrt14) = briy[6];SCBY(SCBrt21) = briy[6];SCBY(SCBrt28) = briy[6];SCBY(SCBrt35) = briy[6];SCBY(SCBrt42) = briy[6]; } // assembler vertical retrace syncronisation routine void Vsync() { #asm vretrace: lda $fd0a bne vretrace #endasm } /************************************************************************** ATTENTION : Ci-dessous un tableau de valeurs : ces valeurs ne pourront pas être modifié par la suite. La variable brie[42] sera donc utilisé pour modifier l'état des 42 tiles. **************************************************************************/ #include "rdata.h" /************************************************************************** ** ** ** ** **************************************************************************/ char main() { InitIRQ(); CLI; SetBuffers(SCREEN, RENDER ,0); /* set the palette */ SetRGB(pal); // Ceci sert à changer la palette de la Lynx. //DrawFBox(0,0,160,102,0); /** SCBX(SCB) = 0; SCBY(SCB) = 0; SCBDATA(SCB) = fond1; SCBNEXT(SCB) = SCBromeo; // chainage de sprite **/ horszone=500;// mettre les tiles hors de l'écran visible. Sprite tile d'une taille de 34*34. SCBX(SCBrt01) = 0;SCBY(SCBrt01) = 0-horszone; SCBDATA(SCBrt01) = rttab[0%14]; // SCBNEXT(SCBrt01) = SCBrt02; // chainage de la tile 02 SCBY(SCBrt02) = 34-horszone; SCBDATA(SCBrt02) = rttab[0%14]; // SCBNEXT(SCBrt02) = SCBrt03; // chainage de la tile 03 SCBY(SCBrt03) = 68-horszone; SCBDATA(SCBrt03) = rttab[0%14]; // SCBNEXT(SCBrt03) = SCBrt04; // chainage de la tile 04 SCBY(SCBrt04) = 102-horszone; SCBDATA(SCBrt04) = rttab[0%14]; // SCBNEXT(SCBrt04) = SCBrt05; // chainage de la tile 05 SCBY(SCBrt05) = 136-horszone; SCBDATA(SCBrt05) = rttab[0%14]; // SCBNEXT(SCBrt05) = SCBrt06; // chainage de la tile 06 SCBY(SCBrt06) = 170-horszone; SCBDATA(SCBrt06) = rttab[0%14]; // SCBNEXT(SCBrt06) = SCBrt07; // chainage de la tile 07 SCBY(SCBrt07) = 204-horszone; SCBDATA(SCBrt07) = rttab[0%14]; // SCBNEXT(SCBrt07) = SCBrt08; // chainage de la tile 08 SCBY(SCBrt08) = 0-horszone; SCBDATA(SCBrt08) = rttab[0%14]; // SCBNEXT(SCBrt08) = SCBrt09; // chainage de la tile 09 SCBY(SCBrt09) = 34-horszone; SCBDATA(SCBrt09) = rttab[0%14]; // SCBNEXT(SCBrt09) = SCBrt10; // chainage de la tile 10 SCBY(SCBrt10) = 68-horszone; SCBDATA(SCBrt10) = rttab[0%14]; // SCBNEXT(SCBrt10) = SCBrt11; // chainage de la tile 11 SCBY(SCBrt11) = 102-horszone; SCBDATA(SCBrt11) = rttab[0%14]; // SCBNEXT(SCBrt11) = SCBrt12; // chainage de la tile 12 SCBY(SCBrt12) = 136-horszone; SCBDATA(SCBrt12) = rttab[0%14]; // SCBNEXT(SCBrt12) = SCBrt13; // chainage de la tile 13 SCBY(SCBrt13) = 170-horszone; SCBDATA(SCBrt13) = rttab[0%14]; // SCBNEXT(SCBrt13) = SCBrt14; // chainage de la tile 14 SCBY(SCBrt14) = 204-horszone; SCBDATA(SCBrt14) = rttab[0%14]; // SCBNEXT(SCBrt14) = SCBrt15; // chainage de la tile 15 SCBY(SCBrt15) = 0-horszone; SCBDATA(SCBrt15) = rttab[0%14]; // SCBNEXT(SCBrt15) = SCBrt16; // chainage de la tile 16 SCBY(SCBrt16) = 34-horszone; SCBDATA(SCBrt16) = rttab[0%14]; // SCBNEXT(SCBrt16) = SCBrt17; // chainage de la tile 17 SCBY(SCBrt17) = 68-horszone; SCBDATA(SCBrt17) = rttab[0%14]; // SCBNEXT(SCBrt17) = SCBrt18; // chainage de la tile 18 SCBY(SCBrt18) = 102-horszone; SCBDATA(SCBrt18) = rttab[0%14]; // SCBNEXT(SCBrt18) = SCBrt19; // chainage de la tile 19 SCBY(SCBrt19) = 136-horszone; SCBDATA(SCBrt19) = rttab[0%14]; // SCBNEXT(SCBrt19) = SCBrt20; // chainage de la tile 20 SCBY(SCBrt20) = 170-horszone; SCBDATA(SCBrt20) = rttab[0%14]; // SCBNEXT(SCBrt20) = SCBrt21; // chainage de la tile 21 SCBY(SCBrt21) = 204-horszone; SCBDATA(SCBrt21) = rttab[0%14]; // SCBNEXT(SCBrt21) = SCBrt22; // chainage de la tile 22 SCBY(SCBrt22) = 0-horszone; SCBDATA(SCBrt22) = rttab[0%14]; // SCBNEXT(SCBrt22) = SCBrt23; // chainage de la tile 23 SCBY(SCBrt23) = 34-horszone; SCBDATA(SCBrt23) = rttab[0%14]; // SCBNEXT(SCBrt23) = SCBrt24; // chainage de la tile 24 SCBY(SCBrt24) = 68-horszone; SCBDATA(SCBrt24) = rttab[0%14]; // SCBNEXT(SCBrt24) = SCBrt25; // chainage de la tile 25 SCBY(SCBrt25) = 102-horszone; SCBDATA(SCBrt25) = rttab[0%14]; // SCBNEXT(SCBrt25) = SCBrt26; // chainage de la tile 26 SCBY(SCBrt26) = 136-horszone; SCBDATA(SCBrt26) = rttab[0%14]; // SCBNEXT(SCBrt26) = SCBrt27; // chainage de la tile 27 SCBY(SCBrt27) = 170-horszone; SCBDATA(SCBrt27) = rttab[0%14]; // SCBNEXT(SCBrt27) = SCBrt28; // chainage de la tile 28 SCBY(SCBrt28) = 204-horszone; SCBDATA(SCBrt28) = rttab[0%14]; // SCBNEXT(SCBrt28) = SCBrt29; // chainage de la tile 29 SCBY(SCBrt29) = 0-horszone; SCBDATA(SCBrt29) = rttab[0%14]; // SCBNEXT(SCBrt29) = SCBrt30; // chainage de la tile 30 SCBY(SCBrt30) = 34-horszone; SCBDATA(SCBrt30) = rttab[0%14]; // SCBNEXT(SCBrt30) = SCBrt31; // chainage de la tile 31 SCBY(SCBrt31) = 68-horszone; SCBDATA(SCBrt31) = rttab[0%14]; // SCBNEXT(SCBrt31) = SCBrt32; // chainage de la tile 32 SCBY(SCBrt32) = 102-horszone; SCBDATA(SCBrt32) = rttab[0%14]; // SCBNEXT(SCBrt32) = SCBrt33; // chainage de la tile 33 SCBY(SCBrt33) = 136-horszone; SCBDATA(SCBrt33) = rttab[0%14]; // SCBNEXT(SCBrt33) = SCBrt34; // chainage de la tile 34 SCBY(SCBrt34) = 170-horszone; SCBDATA(SCBrt34) = rttab[0%14]; // SCBNEXT(SCBrt34) = SCBrt35; // chainage de la tile 35 SCBY(SCBrt35) = 204-horszone; SCBDATA(SCBrt35) = rttab[0%14]; // SCBNEXT(SCBrt35) = SCBrt36; // chainage de la tile 36 SCBY(SCBrt36) = 0-horszone; SCBDATA(SCBrt36) = rttab[0%14]; // SCBNEXT(SCBrt36) = SCBrt37; // chainage de la tile 37 SCBY(SCBrt37) = 34-horszone; SCBDATA(SCBrt37) = rttab[0%14]; // SCBNEXT(SCBrt37) = SCBrt38; // chainage de la tile 38 SCBY(SCBrt38) = 68-horszone; SCBDATA(SCBrt38) = rttab[0%14]; // SCBNEXT(SCBrt38) = SCBrt39; // chainage de la tile 39 SCBY(SCBrt39) = 102-horszone; SCBDATA(SCBrt39) = rttab[0%14]; // SCBNEXT(SCBrt39) = SCBrt40; // chainage de la tile 40 SCBY(SCBrt40) = 136-horszone; SCBDATA(SCBrt40) = rttab[0%14]; // SCBNEXT(SCBrt40) = SCBrt41; // chainage de la tile 41 SCBY(SCBrt41) = 170-horszone; SCBDATA(SCBrt41) = rttab[0%14]; // SCBNEXT(SCBrt41) = SCBrt42; // chainage de la tile 42 SCBY(SCBrt42) = 204-horszone; SCBDATA(SCBrt42) = rttab[0%14]; // SCBNEXT(SCBrt42) = SCBca; // chainage de la voiture SCBX(SCBca) = 32;SCBY(SCBca) = 51; SCBDATA(SCBca) = catab[0%3]; // // SCBNEXT(SCBrt09) = SCBrt10; // chainage de la tile 10 // SCBX(SCBrt10) = 95-horszone; // SCBY(SCBrt10) = 16+56; // SCBDATA(SCBrt10) = brtab[0%4]; // //[0] // 2ème sprite chainé (test) SCBX(SCBchiffres1) = 0;SCBY(SCBchiffres1) = 0; //SCBDATA(SCBchiffres1) = chiffres; SCBNEXT(SCBchiffres1) = SCBchiffres2; // chainage de sprite SCBX(SCBchiffres2) = 0;SCBY(SCBchiffres2) = 0; //SCBDATA(SCBchiffres2) = chiffres; SCBNEXT(SCBchiffres2) = SCBchiffres3; // chainage de sprite SCBX(SCBchiffres3) = 0;SCBY(SCBchiffres3) = 0; //SCBDATA(SCBchiffres3) = chiffres; SCBNEXT(SCBchiffres3) = SCBchiffres4; // chainage de sprite SCBX(SCBchiffres4) = 0;SCBY(SCBchiffres4) = 0; SCBNEXT(SCBchiffres4) = SCBchiffres5; // chainage de sprite SCBX(SCBchiffres5) = 0;SCBY(SCBchiffres5) = 0; // truc bien pratique : associer les tiles du tableau à une variable numéroté. brdata[0] = SCBrt01;brdata[1] = SCBrt02;brdata[2] = SCBrt03;brdata[3] = SCBrt04;brdata[4] = SCBrt05;brdata[5] = SCBrt06;brdata[6] = SCBrt07; brdata[7] = SCBrt08;brdata[8] = SCBrt09;brdata[9] = SCBrt10;brdata[10] = SCBrt11;brdata[11] = SCBrt12;brdata[12] = SCBrt13;brdata[13] = SCBrt14; brdata[14] = SCBrt15;brdata[15] = SCBrt16;brdata[16] = SCBrt17;brdata[17] = SCBrt18;brdata[18] = SCBrt19;brdata[19] = SCBrt20;brdata[20] = SCBrt21; brdata[21] = SCBrt22;brdata[22] = SCBrt23;brdata[23] = SCBrt24;brdata[24] = SCBrt25;brdata[25] = SCBrt26;brdata[26] = SCBrt27;brdata[27] = SCBrt28; brdata[28] = SCBrt29;brdata[29] = SCBrt30;brdata[30] = SCBrt31;brdata[31] = SCBrt32;brdata[32] = SCBrt33;brdata[33] = SCBrt34;brdata[34] = SCBrt35; brdata[35] = SCBrt36;brdata[36] = SCBrt37;brdata[37] = SCBrt38;brdata[38] = SCBrt39;brdata[39] = SCBrt40;brdata[40] = SCBrt41;brdata[41] = SCBrt42; /************************************************************************** level=1; // for(comptx=0 ; comptx<5; comptx++) // de 0 à 4, ce qui fait 5. // { for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { if (level==1) { //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14]; SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[0][compty]%14]; } } // } for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { if (level==1) { //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14]; SCBDATA(brdata[0 + (compty+9)]) = rttab[tbr01[1][compty]%14]; } } for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { if (level==1) { //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14]; SCBDATA(brdata[0 + (compty+18)]) = rttab[tbr01[2][compty]%14]; } } for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { if (level==1) { //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14]; SCBDATA(brdata[0 + (compty+27)]) = rttab[tbr01[3][compty]%14]; } } for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { if (level==1) { //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14]; SCBDATA(brdata[0 + (compty+36)]) = rttab[tbr01[4][compty]%14]; } } **************************************************************************/ /************************************************************************** //ça marche ! comptx=0; SCBDATA(brdata[comptx]) = rttab[tbr01[0][0]%14]; comptx=1; SCBDATA(brdata[comptx]) = rttab[tbr01[0][1]%14]; comptx=2; SCBDATA(brdata[comptx]) = rttab[tbr01[0][2]%14]; comptx=3; SCBDATA(brdata[comptx]) = rttab[tbr01[0][3]%14]; comptx=4; SCBDATA(brdata[comptx]) = rttab[tbr01[0][4]%14]; **************************************************************************/ /************************************************************************** ** BOUCLE PRINCIPALE ** **************************************************************************/ while(1) { // for( ; ; ) Vsync(); SwapBuffers(); //update_music(); // petite subtilité de la gestion sonore ++gsblip; // economie ressource machine --> certaines des conditions n'ont pas besoin d'être lu par la LYNX à chaque boucle. if (gsblip==5) { gsblip=1; if (switches & BUTTON_PAUSE) { if (gspause==0) {gspause=1;} //silence();abcmusic(0,abcaptvir);} } if (!(switches & BUTTON_PAUSE)) { if (gspause==1) gspause=2; } if (switches & BUTTON_PAUSE) { if (gspause==2) gspause=3; } if (!(switches & BUTTON_PAUSE)) { if (gspause==3) gspause=0; } } /************************************************************************** **************************************************************************/ if (etape>=0 & etape<=4) // écran titre { ++tempa; if (tempa>16) {tempa=0;etape=9;} } // Affichage des sprites chainé: /************************************************************************** **************************************************************************/ 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). { ++etape; //horszone=0; } /************************************************************************** **************************************************************************/ if (etape==10) // ecran level { brix[0] = 0; brix[1] = 34; brix[2] = 68; brix[3] = 102; brix[4] = 136; brix[5] = 170; 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; ShowScreen(); // Coordonnées de toutes les tiles (voir la procédure situé au début de ce joyeux code). level=1; // for(comptx=0 ; comptx<5; comptx++) // de 0 à 4, ce qui fait 5. // { for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { if (level==1) { //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14]; SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[0][compty]%14]; } } // } for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { if (level==1) { //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14]; SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[1][compty]%14]; } } for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { if (level==1) { //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14]; SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[2][compty]%14]; } } for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { if (level==1) { //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14]; SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[3][compty]%14]; } } for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { if (level==1) { //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14]; SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[4][compty]%14]; } } for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { if (level==1) { //SCBDATA(brdata[comptx+(compty*5)]) = rttab[tbr01[compty][comptx]%14]; SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[5][compty]%14]; } } etape=20;pointx=0; // if (level==1) // { // // } } if (etape==20) // ecran level { /************************************************************************** #define JOY_DOWN 0x40 #define JOY_UP 0x80 #define JOY_RIGHT 0x10 #define JOY_LEFT 0x20 brix[0] = 0; brix[1] = 34; brix[2] = 68; brix[3] = 102; brix[4] = 136; if (joystick & JOY_UP) { //yplayer=yplayer-2; //if (yplayer<15) {yplayer=15;} ++brix[0];++brix[1];++brix[2];++brix[3];++brix[4]; } if (joystick & JOY_DOWN) { //yplayer=yplayer+2; //if (yplayer>87) {yplayer=87;} // (102-24 = 78-3 = 75) ; 24 = largeur de la raquette --brix[0];--brix[1];--brix[2];--brix[3];--brix[4]; } **************************************************************************/ /** 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. **/ if (joystick & JOY_LEFT) { //yplayer=yplayer-2; //if (yplayer<15) {yplayer=15;} //if (pointx>0) if (tile_x>0 | (tile_x==0 & pointx>0)) //if (tile_x>0 | (tile_x==0 & pointx>0)) { --pointx; ++brix[0];++brix[1];++brix[2];++brix[3];++brix[4];++brix[5]; } if (pointx<0) // tile d'une taille de 34*34 --> 0 à 33 { pointx=33; if (tile_x>0) --tile_x; // /** if (tile_x==0) { brix[0]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[0][compty]%14]; // lecture donnée } } if (tile_x==1) { brix[1]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[1][compty]%14]; // lecture donnée } } if (tile_x==2) { brix[2]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[2][compty]%14]; // lecture donnée } } if (tile_x==3) { brix[3]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[3][compty]%14]; // lecture donnée } } if (tile_x==4) { brix[4]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[4][compty]%14]; // lecture donnée } } if (tile_x==5) { brix[5]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[5][compty]%14]; // lecture donnée } } **/ /** if (tile_x==6) { brix[0]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[6][compty]%14]; // lecture donnée } } if (tile_x==7) { brix[1]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[7][compty]%14]; // lecture donnée } } if (tile_x==8) { brix[2]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[8][compty]%14]; // lecture donnée } } if (tile_x==9) { brix[3]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[9][compty]%14]; // lecture donnée } } if (tile_x==10) { brix[4]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[10][compty]%14]; // lecture donnée } } if (tile_x==11) { brix[5]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[11][compty]%14]; // lecture donnée } } **/ /** if (tile_x==12) { brix[0]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[12][compty]%14]; // lecture donnée } } if (tile_x==13) { brix[1]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[13][compty]%14]; // lecture donnée } } if (tile_x==14) { brix[2]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[14][compty]%14]; // lecture donnée } } if (tile_x==15) { brix[3]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[15][compty]%14]; // lecture donnée } } if (tile_x==16) { brix[4]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[16][compty]%14]; // lecture donnée } } if (tile_x==17) { brix[5]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[17][compty]%14]; // lecture donnée } } **/ if (tile_x<6) // 0 1 2 3 4 5 { jboucle=tile_x; brix[jboucle]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { xboucle=jboucle;xboucle=xboucle*7; iboucle=tile_x;//iboucle=iboucle+5; SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donnée } } if (tile_x>5 & tile_x<12) // 6 7 8 9 10 11 { jboucle=tile_x;jboucle=jboucle-6; brix[jboucle]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { xboucle=jboucle;xboucle=xboucle*7; iboucle=tile_x;//iboucle=iboucle+5; SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donnée } } if (tile_x>11 & tile_x<18) // 12 13 14 15 16 17 { jboucle=tile_x;jboucle=jboucle-12; brix[jboucle]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { xboucle=jboucle;xboucle=xboucle*7; iboucle=tile_x;//iboucle=iboucle+5; SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donnée } } if (tile_x>17 & tile_x<24) // 18 19 20 21 22 23 { jboucle=tile_x;jboucle=jboucle-18; brix[jboucle]=-33; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { xboucle=jboucle;xboucle=xboucle*7; iboucle=tile_x;//iboucle=iboucle+5; SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donnée } } } } if (joystick & JOY_RIGHT) { //yplayer=yplayer+2; //if (yplayer>87) {yplayer=87;} // (102-24 = 78-3 = 75) ; 24 = largeur de la raquette if (tile_x<25 | (tile_x==25 & pointx<10)) { ++pointx; --brix[0];--brix[1];--brix[2];--brix[3];--brix[4];--brix[5]; } if (pointx>33) { pointx=0; ++tile_x; /************************************************************************** if (tile_x==1) { brix[0]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[6][compty]%14]; // lecture donnée } } if (tile_x==2) { brix[1]=170; // 2eme colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[7][compty]%14]; // lecture donnée } } if (tile_x==3) { brix[2]=170; // 3eme colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[8][compty]%14]; // lecture donnée } } if (tile_x==4) { brix[3]=170; // 4eme colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[9][compty]%14]; // lecture donnée } } if (tile_x==5) { brix[4]=170; // 5eme colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[10][compty]%14]; // lecture donnée } } if (tile_x==6) { brix[5]=170; // 6eme colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[11][compty]%14]; // lecture donnée } } if (tile_x==7) { brix[0]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[12][compty]%14]; // lecture donnée } } if (tile_x==8) { brix[1]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[13][compty]%14]; // lecture donnée } } if (tile_x==9) { brix[2]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[14][compty]%14]; // lecture donnée } } if (tile_x==10) { brix[3]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[15][compty]%14]; // lecture donnée } } if (tile_x==11) { brix[4]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[16][compty]%14]; // lecture donnée } } if (tile_x==12) { brix[5]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[17][compty]%14]; // lecture donnée } } if (tile_x==13) { brix[0]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty)]) = rttab[tbr01[18][compty]%14]; // lecture donnée } } if (tile_x==14) { brix[1]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+7)]) = rttab[tbr01[19][compty]%14]; // lecture donnée } } if (tile_x==15) { brix[2]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+14)]) = rttab[tbr01[20][compty]%14]; // lecture donnée } } if (tile_x==16) { brix[3]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+21)]) = rttab[tbr01[21][compty]%14]; // lecture donnée } } if (tile_x==17) { brix[4]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+28)]) = rttab[tbr01[22][compty]%14]; // lecture donnée } } if (tile_x==18) { brix[5]=170; // 1ere colonne de sprites placée à droite. for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { SCBDATA(brdata[0 + (compty+35)]) = rttab[tbr01[23][compty]%14]; // lecture donnée } } **************************************************************************/ if (tile_x<7) // 1 2 3 4 5 6 { jboucle=tile_x-1; brix[jboucle]=170; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { xboucle=jboucle;xboucle=xboucle*7; iboucle=tile_x;iboucle=iboucle+5; SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donnée } } if (tile_x>6 & tile_x<13) // 7 8 9 10 11 12 { jboucle=tile_x-7; brix[jboucle]=170; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { xboucle=jboucle;xboucle=xboucle*7; iboucle=tile_x;iboucle=iboucle+5; SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donnée } } if (tile_x>12 & tile_x<19) // 13 14 15 16 17 18 { jboucle=tile_x-13; brix[jboucle]=170; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { xboucle=jboucle;xboucle=xboucle*7; iboucle=tile_x;iboucle=iboucle+5; SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donnée } } if (tile_x>18 & tile_x<25) // 19 20 21 22 23 24 { jboucle=tile_x-19; brix[jboucle]=170; for(compty=0 ; compty<7; compty++) // de 0 à 6, ce qui fait 7 tiles par colonne. { xboucle=jboucle;xboucle=xboucle*7; iboucle=tile_x;iboucle=iboucle+5; SCBDATA(brdata[0 + (compty+xboucle)]) = rttab[tbr01[iboucle][compty]%14]; // lecture donnée } } } } if (joystick & JOY_UP) { //yplayer=yplayer-2; //if (yplayer<15) {yplayer=15;} //briy[0] if (briy[0]<0) { ++briy[0];++briy[1];++briy[2];++briy[3];++briy[4];++briy[5];++briy[6];//++briy[7];++briy[8]; } } if (joystick & JOY_DOWN) { //yplayer=yplayer+2; //if (yplayer>87) {yplayer=87;} // (102-24 = 78-3 = 75) ; 24 = largeur de la raquette if (briy[0]>-136)//34*4 = 136 { --briy[0];--briy[1];--briy[2];--briy[3];--briy[4];--briy[5];--briy[6];//--briy[7];--briy[8]; } } ShowScreen(); // Coordonnées de toutes les tiles (voir la procédure situé au début de ce joyeux code). } DrawSprite(SCBrt01); // Affichage de toutes les images chainées (tiles, voiture...). /************************************************************************** **************************************************************************/ /** test atest=tile_x;//pointx;//xboucle;//tile_x;//xboucle+compty;//tile_x;//pointx;//etape;//brsco[0];//ttest;//9;//balldirX;//yplayer;//speedX;//dirf;//etape; //atest=horszone;//relach;//etape;//SCBCTL0(SCBbr); unite = atest % 10; dizaine = atest / 10 % 10; centaine = atest / 100 % 10; // millier = atest / 1000 % 10; // dmillier = atest / 10000 % 10; // unité: SCBDATA(SCBchiffres1) = chiffrestab[unite%14]; SCBX(SCBchiffres1) = 100; SCBY(SCBchiffres1) = 53; // dizaine: SCBDATA(SCBchiffres2) = chiffrestab[dizaine%14]; SCBX(SCBchiffres2) = 100; SCBY(SCBchiffres2) = 53-8; // centaine: SCBDATA(SCBchiffres3) = chiffrestab[centaine%14]; // 0 SCBX(SCBchiffres3) = 100; SCBY(SCBchiffres3) = 53-16; // millier: // SCBDATA(SCBchiffres4) = chiffrestab[millier%14]; // 0 // SCBX(SCBchiffres4) = 100; // SCBY(SCBchiffres4) = 53-24; // dizaine de millier: // SCBDATA(SCBchiffres5) = chiffrestab[dmillier%14]; // 0 // SCBX(SCBchiffres5) = 100; // SCBY(SCBchiffres5) = 53-32; DrawSprite(SCBchiffres1); // Affichage valeur testé **/ } /************************************************************************** ** FIN de la BOUCLE PRINCIPALE ** **************************************************************************/ }