La Place des Développeurs [RESOLU] VDP(27) le Scrolling hardware Horizontal Comment alimenter de nouveaux décors VDP (27)?

Et voila les amis
Il m'en a fait baver mais ça y est il fonctionne parfaitement.
Le Code ci dessous permet de faire dérouler un Scroll vers la droite et la gauche à volonté en faisant défiler des bribes de graphismes préalablement générées
Le code est extrêmement répétitif mais c'est un choix volontaire qui me permet de mieux appréhender les problèmes à résoudre.
Rien ne vous empêche de le "synthétiser" en quelques lignes voir même de l'optimiser en essayant de réduire le nombre de commandes "redondantes"
La vidéo de démonstration est en cours d'upload



Il m'en a fait baver mais ça y est il fonctionne parfaitement.
Le Code ci dessous permet de faire dérouler un Scroll vers la droite et la gauche à volonté en faisant défiler des bribes de graphismes préalablement générées

Le code est extrêmement répétitif mais c'est un choix volontaire qui me permet de mieux appréhender les problèmes à résoudre.
Rien ne vous empêche de le "synthétiser" en quelques lignes voir même de l'optimiser en essayant de réduire le nombre de commandes "redondantes"

La vidéo de démonstration est en cours d'upload

Code TEXT :
0 'SAVE"DEBUG18.asc",A 2 'PLAYER DE BRIBES VERICALES[(191 X 8)] 8 'Mode graphique 9 SCREEN 10:'COLOR1,1,0 12 'deplace l'écran verticalement 13 'VDP(24)=VDP(24)+212:VDP(9)=VDP(9)OR2 18 DEFINT A-Z:SETPAGE1,0:CLS:SETPAGE0,1:CLS 21 'Chargement intro/demo 25 SETPAGE0,1:BLOAD"INTRO.SCA",S:COLOR=RESTORE:SETPAGE1,0 26 IF INKEY$=""THEN26 27 'Chargement de la Page Alpha 28 CALL CHDIR("STAGE1") 29 CALL CHDIR("0") 30 BLOAD"0.SCA",S:COLOR = RESTORE:SETPAGE0,0 35 'retour au repertoire des Pages 37 CALL CHDIR("..") 40 'initialisation des variables hero 45 X=100:Y=100:C=0 79 'CONDITIONS PRIMA X8************** 80 S=STICK(0):ONS+1 GOSUB 100,110,120,130,140,150,160,170,180:GOTO80 99 ' 100 'DIRECTION STATIQUE************* 102 RETURN 104 ' 110 'DIRECTION HAUT X8************** 112 RETURN 114 ' 120 'DIRECTION HAUT DROITE X8******* 122 RETURN 124 ' 130 'DIRECTION DROITE X8************ 131 'VA=0:'Scroll de droite a Droite 132 'VB=0:'Scroll de droite a Droite 133 D=1:VD=0:'Scroll vers la droite 134 I=&H2:'Repertoire Prima 135 II=&H1:'Repertoire des Bribes Prima 136 CALLCHDIR("1"):'Condition Proima droite 137 GOTO 10300:'Vers moteur X8 Droite 138 ' 140 'DIRECTION BAS DROITE X8******** 142 RETURN 144 ' 150 'DIRECTION BAS X8*************** 152 RETURN 154 ' 160 'DIRECTION BAS GAUCHE X8******** 162 RETURN 164 ' 170 'DIRECTION GAUCHE X8************ 171 'VA=256:'Scroll de droite a gauche 172 'VB=256:'Scroll de droite a gauche 173 G=1:VG=256:'Scroll vers la gauche 174 II=&HE:'Repertoire des Bribes Prima 175 I=&HE:'Repertoire Prima 176 CALLCHDIR("F"):'Condition Prima Gauche 177 GOTO 1300:'Vers moteur X8 Gauche 178 ' 180 'DIRECTION GAUCHE HAUT X8******* 182 RETURN 184 SCREEN 0:PRINT"SORTIE 184 185 ' 1300 'DIRECTION GAUCHE************ 1310 CALLCHDIR("F"):'SCROLL VERS LA GAUCHE 1320 S=STICK(0):ONS+1GOSUB100,110,120,1322,140,150,160,1324,180:GOTO1320 1322 I=I+3AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("0"):GOTO10324 1324 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1330 S=STICK(0):ONS+1GOSUB100,110,120,1332,140,150,160,1334,180:GOTO1330 1332 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("F"):GOTO11134 1334 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1350 CALL CHDIR ("..") 1360 CALLCHDIR("E"):'SCROLL VERS LA GAUCHE 1370 S=STICK(0):ONS+1GOSUB100,110,120,1372,140,150,160,1374,180:GOTO1370 1372 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("F"):GOTO11124 1374 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1380 S=STICK(0):ONS+1GOSUB100,110,120,1382,140,150,160,1384,180:GOTO1380 1382 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("E"):GOTO11034 1384 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1400 CALL CHDIR ("..") 1410 CALLCHDIR("D"):'SCROLL VERS LA GAUCHE 1420 S=STICK(0):ONS+1GOSUB100,110,120,1422,140,150,160,1424,180:GOTO1420 1422 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("E"):GOTO11024 1424 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1430 S=STICK(0):ONS+1GOSUB100,110,120,1432,140,150,160,1434,180:GOTO1430 1432 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("D"):GOTO10984 1434 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1450 CALL CHDIR ("..") 1460 CALLCHDIR("C"):'SCROLL VERS LA GAUCHE 1470 S=STICK(0):ONS+1GOSUB100,110,120,1472,140,150,160,1474,180:GOTO1470 1472 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("D"):GOTO10974 1474 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1480 S=STICK(0):ONS+1GOSUB100,110,120,1482,140,150,160,1484,180:GOTO1480 1482 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("C"):GOTO10934 1484 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1500 CALLCHDIR("..") 1510 CALLCHDIR("B"):'SCROLL VERS LA GAUCHE 1520 S=STICK(0):ONS+1GOSUB100,110,120,1522,140,150,160,1524,180:GOTO1520 1522 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("C"):GOTO10924 1524 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1530 S=STICK(0):ONS+1GOSUB100,110,120,1532,140,150,160,1534,180:GOTO1530 1532 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("B"):GOTO10884 1534 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1550 CALLCHDIR("..") 1560 CALLCHDIR("A"):'SCROLL VERS LA GAUCHE 1570 S=STICK(0):ONS+1GOSUB100,110,120,1572,140,150,160,1574,180:GOTO1570 1572 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("B"):GOTO10874 1574 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1580 S=STICK(0):ONS+1GOSUB100,110,120,1582,140,150,160,1584,180:GOTO1580 1582 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("A"):GOTO10834 1584 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1600 CALLCHDIR("..") 1610 CALLCHDIR("9"):'SCROLL VERS LA GAUCHE 1620 S=STICK(0):ONS+1GOSUB100,110,120,1622,140,150,160,1624,180:GOTO1620 1622 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("A"):GOTO10824 1624 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1630 S=STICK(0):ONS+1GOSUB100,110,120,1632,140,150,160,1634,180:GOTO1630 1632 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("9"):GOTO10784 1634 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1650 CALLCHDIR("..") 1660 CALLCHDIR("8"):'SCROLL VERS LA GAUCHE 1670 S=STICK(0):ONS+1GOSUB100,110,120,1672,140,150,160,1674,180:GOTO1670 1672 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("9"):GOTO10774 1674 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1680 S=STICK(0):ONS+1GOSUB100,110,120,1682,140,150,160,1684,180:GOTO1680 1682 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("8"):GOTO10734 1684 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1700 CALLCHDIR("..") 1710 CALLCHDIR("7"):'SCROLL VERS LA GAUCHE 1720 S=STICK(0):ONS+1GOSUB100,110,120,1722,140,150,160,1724,180:GOTO1720 1722 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("8"):GOTO10724 1724 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1730 S=STICK(0):ONS+1GOSUB100,110,120,1732,140,150,160,1734,180:GOTO1730 1732 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("7"):GOTO10684 1734 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1750 CALLCHDIR("..") 1760 CALLCHDIR("6"):'SCROLL VERS LA GAUCHE 1770 S=STICK(0):ONS+1GOSUB100,110,120,1772,140,150,160,1774,180:GOTO1770 1772 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("7"):GOTO10674 1774 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1780 S=STICK(0):ONS+1GOSUB 100,110,120,1782,140,150,160,1784,180:GOTO1780 1782 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("6"):GOTO10634 1784 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1800 CALLCHDIR("..") 1810 CALLCHDIR("5"):'SCROLL VERS LA GAUCHE 1820 S=STICK(0):ONS+1GOSUB100,110,120,1822,140,150,160,1824,180:GOTO1820 1822 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("6"):GOTO10624 1824 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1830 S=STICK(0):ONS+1GOSUB100,110,120,1832,140,150,160,1834,180:GOTO1830 1832 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("5"):GOTO10584 1834 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1850 CALLCHDIR("..") 1860 CALLCHDIR("4"):'SCROLL VERS LA GAUCHE 1870 S=STICK(0):ONS+1GOSUB100,110,120,1872,140,150,160,1874,180:GOTO1870 1872 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("5"):GOTO10574 1874 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1880 S=STICK(0):ONS+1GOSUB100,110,120,1882,140,150,160,1884,180:GOTO1880 1882 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("4"):GOTO10534 1884 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1900 CALLCHDIR("..") 1910 CALLCHDIR("3"):'SCROLL VERS LA GAUCHE 1920 S=STICK(0):ONS+1GOSUB100,110,120,1922,140,150,160,1924,180:GOTO1920 1922 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("4"):GOTO10524 1924 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1930 S=STICK(0):ONS+1GOSUB100,110,120,1932,140,150,160,1934,180:GOTO1930 1932 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("3"):GOTO10484 1934 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 1950 CALLCHDIR("..") 1960 CALLCHDIR("2"):'SCROLL VERS LA GAUCHE 1970 S=STICK(0):ONS+1GOSUB100,110,120,1972,140,150,160,1974,180:GOTO1970 1972 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("3"):GOTO10474 1974 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1980 S=STICK(0):ONS+1GOSUB100,110,120,1982,140,150,160,1984,180:GOTO1980 1982 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("2"):GOTO10434 1984 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 2000 CALLCHDIR("..") 2010 CALLCHDIR("1"):'SCROLL VERS LA GAUCHE 2020 S=STICK(0):ONS+1GOSUB100,110,120,2022,140,150,160,2024,180:GOTO2020 2022 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("2"):GOTO10424 2024 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 2030 S=STICK(0):ONS+1GOSUB100,110,120,2032,140,150,160,2034,180:GOTO2030 2032 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("1"):GOTO10384 2034 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 2050 CALLCHDIR("..") 2060 CALLCHDIR("0"):'SCROLL VERS LA GAUCHE 2070 S=STICK(0):ONS+1GOSUB100,110,120,2072,140,150,160,2074,180:GOTO2070 2072 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("1"):GOTO10374 2074 VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 2080 S=STICK(0):ONS+1GOSUB 100,110,120,2082,140,150,160,2084,180:GOTO2080 2082 I=I+2AND&HF:GOSUB20300:VD=VG-256AND255:G=1:D=0:CALLCHDIR("0"):GOTO10334 2084 VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 2090 IFD=1THENI=I-1AND&HF:D=0 2095 'IFG=1THENI=I+1AND&HF:G=0 2100 CALLCHDIR(".."):CALLCHDIR("..") 2580 'choix DU repertoire DES repertoires de Bribes 2582 IF I=&HFTHENCALLCHDIR("F"):I=&HE:GOTO1310 2584 IF I=&HETHENCALLCHDIR("E"):I=&HD:GOTO1310 2586 IF I=&HDTHENCALLCHDIR("D"):I=&HC:GOTO1310 2588 IF I=&HCTHENCALLCHDIR("C"):I=&HB:GOTO1310 2590 IF I=&HBTHENCALLCHDIR("B"):I=&HA:GOTO1310 2592 IF I=&HATHENCALLCHDIR("A"):I=&H9:GOTO1310 2594 IF I=&H9THENCALLCHDIR("9"):I=&H8:GOTO1310 2596 IF I=&H8THENCALLCHDIR("8"):I=&H7:GOTO1310 2598 IF I=&H7THENCALLCHDIR("7"):I=&H6:GOTO1310 2600 IF I=&H6THENCALLCHDIR("6"):I=&H5:GOTO1310 2602 IF I=&H5THENCALLCHDIR("5"):I=&H4:GOTO1310 2604 IF I=&H4THENCALLCHDIR("4"):I=&H3:GOTO1310 2606 IF I=&H3THENCALLCHDIR("3"):I=&H2:GOTO1310 2608 IF I=&H2THENCALLCHDIR("2"):I=&H1:GOTO1310 2610 IF I=&H1THENCALLCHDIR("1"):I=&H0:GOTO1310 2612 IF I=&H0THENCALLCHDIR("0"):I=&HF:GOTO1310 2613 ' 10300 'DIRECTION DROITE************ 10310 CALLCHDIR("0"):'SCROLL VERS LA DROITE 10320 S=STICK(0):ONS+1GOSUB100,110,120,10324,140,150,160,10322,180:GOTO10320 10322 I=I-3AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("F"):GOTO1324 10324 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10330 S=STICK(0):ONS+1GOSUB100,110,120,10334,140,150,160,10332,180:GOTO10330 10332 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("0"):GOTO2084 10334 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10350 CALL CHDIR ("..") 10360 CALLCHDIR("1"):'SCROLL VERS LA DROITE 10370 S=STICK(0):ONS+1GOSUB100,110,120,10374,140,150,160,10372,180:GOTO10370 10372 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("0"):GOTO2074 10374 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10380 S=STICK(0):ONS+1GOSUB100,110,120,10384,140,150,160,10382,180:GOTO10380 10382 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("1"):GOTO2034 10384 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10400 CALL CHDIR ("..") 10410 CALLCHDIR("2"):'SCROLL VERS LA DROITE 10420 S=STICK(0):ONS+1GOSUB100,110,120,10424,140,150,160,10422,180:GOTO10420 10422 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("1"):GOTO2024 10424 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10430 S=STICK(0):ONS+1GOSUB100,110,120,10434,140,150,160,10432,180:GOTO10430 10432 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("2"):GOTO1984 10434 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10450 CALL CHDIR ("..") 10460 CALLCHDIR("3"):'SCROLL VERS LA DROITE 10470 S=STICK(0):ONS+1GOSUB100,110,120,10474,140,150,160,10472,180:GOTO10470 10472 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("2"):GOTO1974 10474 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10480 S=STICK(0):ONS+1GOSUB100,110,120,10484,140,150,160,10482,180:GOTO10480 10482 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("3"):GOTO1934 10484 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10500 CALL CHDIR ("..") 10510 CALLCHDIR("4"):'SCROLL VERS LA DROITE 10520 S=STICK(0):ONS+1GOSUB100,110,120,10524,140,150,160,10522,180:GOTO10520 10522 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("3"):GOTO1924 10524 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10530 S=STICK(0):ONS+1GOSUB100,110,120,10534,140,150,160,10532,180:GOTO10530 10532 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("4"):GOTO1884 10534 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10550 CALL CHDIR ("..") 10560 CALLCHDIR("5"):'SCROLL VERS LA DROITE 10570 S=STICK(0):ONS+1GOSUB100,110,120,10574,140,150,160,10572,180:GOTO10570 10572 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("4"):GOTO1874 10574 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10580 S=STICK(0):ONS+1GOSUB100,110,120,10584,140,150,160,10582,180:GOTO10580 10582 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("5"):GOTO1834 10584 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10600 CALL CHDIR ("..") 10610 CALLCHDIR("6"):'SCROLL VERS LA DROITE 10620 S=STICK(0):ONS+1GOSUB100,110,120,10624,140,150,160,10622,180:GOTO10620 10622 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("5"):GOTO1824 10624 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10630 S=STICK(0):ONS+1GOSUB100,110,120,10634,140,150,160,10632,180:GOTO10630 10632 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("6"):GOTO1784 10634 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10650 CALL CHDIR ("..") 10660 CALLCHDIR("7"):'SCROLL VERS LA DROITE 10670 S=STICK(0):ONS+1GOSUB100,110,120,10674,140,150,160,10672,180:GOTO10670 10672 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("6"):GOTO1774 10674 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10680 S=STICK(0):ONS+1GOSUB100,110,120,10684,140,150,160,10682,180:GOTO10680 10682 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("7"):GOTO1734 10684 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10700 CALL CHDIR("..") 10710 CALLCHDIR("8"):'SCROLL VERS LA DROITE 10720 S=STICK(0):ONS+1GOSUB100,110,120,10724,140,150,160,10722,180:GOTO10720 10722 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("7"):GOTO1724 10724 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10730 S=STICK(0):ONS+1GOSUB100,110,120,10734,140,150,160,10732,180:GOTO10730 10732 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("8"):GOTO1684 10734 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10750 CALL CHDIR ("..") 10760 CALLCHDIR("9"):'SCROLL VERS LA DROITE 10770 S=STICK(0):ONS+1GOSUB100,110,120,10774,140,150,160,10772,180:GOTO10770 10772 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("8"):GOTO1674 10774 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10780 S=STICK(0):ONS+1GOSUB100,110,120,10784,140,150,160,10782,180:GOTO10780 10782 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("9"):GOTO1634 10784 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10800 CALL CHDIR ("..") 10810 CALLCHDIR("A"):'SCROLL VERS LA DROITE 10820 S=STICK(0):ONS+1GOSUB100,110,120,10824,140,150,160,10822,180:GOTO10820 10822 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("9"):GOTO1624 10824 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10830 S=STICK(0):ONS+1GOSUB100,110,120,10834,140,150,160,10832,180:GOTO10830 10832 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("A"):GOTO1584 10834 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10850 CALL CHDIR ("..") 10860 CALLCHDIR("B"):'SCROLL VERS LA DROITE 10870 S=STICK(0):ONS+1GOSUB100,110,120,10874,140,150,160,10872,180:GOTO10870 10872 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("A"):GOTO1574 10874 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10880 S=STICK(0):ONS+1GOSUB100,110,120,10884,140,150,160,10882,180:GOTO10880 10882 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("B"):GOTO1534 10884 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10900 CALL CHDIR ("..") 10910 CALLCHDIR("C"):'SCROLL VERS LA DROITE 10920 S=STICK(0):ONS+1GOSUB100,110,120,10924,140,150,160,10922,180:GOTO10920 10922 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("B"):GOTO1524 10924 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10930 S=STICK(0):ONS+1GOSUB100,110,120,10934,140,150,160,10932,180:GOTO10930 10932 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("C"):GOTO1484 10934 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10950 CALL CHDIR ("..") 10960 CALLCHDIR("D"):'SCROLL VERS LA DROITE 10970 S=STICK(0):ONS+1GOSUB100,110,120,10974,140,150,160,10972,180:GOTO10970 10972 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("C"):GOTO1474 10974 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 10980 S=STICK(0):ONS+1GOSUB100,110,120,10984,140,150,160,10982,180:GOTO10980 10982 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("D"):GOTO1434 10984 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 11000 CALL CHDIR ("..") 11010 CALLCHDIR("E"):'SCROLL VERS LA DROITE 11020 S=STICK(0):ONS+1GOSUB100,110,120,11024,140,150,160,11022,180:GOTO11020 11022 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("D"):GOTO1424 11024 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 11030 S=STICK(0):ONS+1GOSUB100,110,120,11034,140,150,160,11032,180:GOTO11030 11032 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("E"):GOTO1384 11034 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 11050 CALL CHDIR ("..") 11110 CALLCHDIR("F")'SCROLL VERS LA DROITE 11120 S=STICK(0):ONS+1GOSUB100,110,120,11124,140,150,160,11122,180:GOTO11120 11122 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("E"):GOTO1374 11124 COPY"111"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 11130 S=STICK(0):ONS+1GOSUB100,110,120,11134,140,150,160,11132,180:GOTO11130 11132 I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:D=1:G=0:CALLCHDIR("F"):GOTO1334 11134 COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 11140 IFG=1THENI=I+1AND&HF:G=0 11145 'IFD=1THENI=I-1AND&HF:D=0 11150 CALL CHDIR (".."):CALL CHDIR ("..") 12580 'choix DU repertoire DES repertoires de Bribes 12582 IF I=&HFTHENCALLCHDIR("F"):I=&H0:GOTO10310 12584 IF I=&HETHENCALLCHDIR("E"):I=&HF:GOTO10310 12586 IF I=&HDTHENCALLCHDIR("D"):I=&HE:GOTO10310 12588 IF I=&HCTHENCALLCHDIR("C"):I=&HD:GOTO10310 12590 IF I=&HBTHENCALLCHDIR("B"):I=&HC:GOTO10310 12592 IF I=&HATHENCALLCHDIR("A"):I=&HB:GOTO10310 12594 IF I=&H9THENCALLCHDIR("9"):I=&HA:GOTO10310 12596 IF I=&H8THENCALLCHDIR("8"):I=&H9:GOTO10310 12598 IF I=&H7THENCALLCHDIR("7"):I=&H8:GOTO10310 12600 IF I=&H6THENCALLCHDIR("6"):I=&H7:GOTO10310 12602 IF I=&H5THENCALLCHDIR("5"):I=&H6:GOTO10310 12604 IF I=&H4THENCALLCHDIR("4"):I=&H5:GOTO10310 12606 IF I=&H3THENCALLCHDIR("3"):I=&H4:GOTO10310 12608 IF I=&H2THENCALLCHDIR("2"):I=&H3:GOTO10310 12610 IF I=&H1THENCALLCHDIR("1"):I=&H2:GOTO10310 12612 IF I=&H0THENCALLCHDIR("0"):I=&H1:GOTO10310 12613 ' 20299 'Repertoire des repertoires bascule Gauche vers Droite 20300 IFI=&H0THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("0"):RETURN 20301 IFI=&H1THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("1"):RETURN 20302 IFI=&H2THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("2"):RETURN 20303 IFI=&H3THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("3"):RETURN 20304 IFI=&H4THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("4"):RETURN 20305 IFI=&H5THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("5"):RETURN 20306 IFI=&H6THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("6"):RETURN 20307 IFI=&H7THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("7"):RETURN 20308 IFI=&H8THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("8"):RETURN 20309 IFI=&H9THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("9"):RETURN 20310 IFI=&HATHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("A"):RETURN 20311 IFI=&HBTHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("B"):RETURN 20312 IFI=&HCTHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("C"):RETURN 20313 IFI=&HDTHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("D"):RETURN 20314 IFI=&HETHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("E"):RETURN 20315 IFI=&HFTHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("F"):RETURN

vala vala
Par la suite, je ferai un diagramme qui explicitera au mieux le fonctionnement du moteur.
Le but du diagramme étant de vous permettre de "remodeler" ou juste le synthétiser le moteur pour le contracter au minimum
https://www.youtube.com/watch?v=MMc9T8LH8oU
@ suivre ...
Edit: Pour des raisons de praticité, j'ai utilisé les "pas" de 8 plutôt que les pas de 2 ou 4 qui m'auraient donnés 2 à 4 fois plus de lignes de commandes pour trouver la solution parfaite.
Maintenant que le moteur est parfaitement fonctionnel, il me suffit d'appliquer la même règle pour les "Pas" de 2 et 4
Edité par
igal
Le 27/01/2016 à 22h05

Par la suite, je ferai un diagramme qui explicitera au mieux le fonctionnement du moteur.
Le but du diagramme étant de vous permettre de "remodeler" ou juste le synthétiser le moteur pour le contracter au minimum

https://www.youtube.com/watch?v=MMc9T8LH8oU
@ suivre ...
Edit: Pour des raisons de praticité, j'ai utilisé les "pas" de 8 plutôt que les pas de 2 ou 4 qui m'auraient donnés 2 à 4 fois plus de lignes de commandes pour trouver la solution parfaite.
Maintenant que le moteur est parfaitement fonctionnel, il me suffit d'appliquer la même règle pour les "Pas" de 2 et 4

mince ça en fait du basic , tu doit être un des seuls a utiliser le dos2 et le call chdir dans un jeu
si tu pouvais inclure le programme basic sur une disquette pour les curieux comme moi afin de fouiller dedans
c'est sur que ça doit être simplifiable
reste plus qu'a mettre les vraies bribes et faire tourner sur un vrai msx
en tout cas ne lache pas l'affaire , tu as tous mes encouragements
si tu pouvais inclure le programme basic sur une disquette pour les curieux comme moi afin de fouiller dedans

c'est sur que ça doit être simplifiable
reste plus qu'a mettre les vraies bribes et faire tourner sur un vrai msx
en tout cas ne lache pas l'affaire , tu as tous mes encouragements



Merci pour votre soutient, ça fait plaisir 
Cependant, malgré le bon fonctionnement apparent du moteur, je rencontre des erreurs quant au "bon choix" des bribes à afficher lorsque je répète les mouvements "gauche droite, gauche droite, gauche droite" lorsque ces mouvements sont répétés "Rapidement".
J'ai essayé d'isoler le problème et j'ai pu déterminer que l'erreur du choix de bribes ne se produisait seulement et seulement lorsque l'on ne se trouve pas dans une phase de changement de "repertoire de repertoires". (Répertoire contient un pack de bribes. Répertoires de répertoires contient un pack de 16 packs de bribes couvrant l'équivalent d'une page entière)
Bref. Je vais poster une disquette avec les gabarits permettant de visualiser et analyser le problème à résoudre.
Dans le même temps, je vais me pencher sur la création d'un diagramme complet sur le fonctionnement du moteur.
Cela vous permettra de mieux l'appréhender et éventuellement apporter des solutions ou optimisations dans son fonctionnement.
J'essais de faire ça dans le Weekend

Cependant, malgré le bon fonctionnement apparent du moteur, je rencontre des erreurs quant au "bon choix" des bribes à afficher lorsque je répète les mouvements "gauche droite, gauche droite, gauche droite" lorsque ces mouvements sont répétés "Rapidement".
J'ai essayé d'isoler le problème et j'ai pu déterminer que l'erreur du choix de bribes ne se produisait seulement et seulement lorsque l'on ne se trouve pas dans une phase de changement de "repertoire de repertoires". (Répertoire contient un pack de bribes. Répertoires de répertoires contient un pack de 16 packs de bribes couvrant l'équivalent d'une page entière)
Bref. Je vais poster une disquette avec les gabarits permettant de visualiser et analyser le problème à résoudre.
Dans le même temps, je vais me pencher sur la création d'un diagramme complet sur le fonctionnement du moteur.
Cela vous permettra de mieux l'appréhender et éventuellement apporter des solutions ou optimisations dans son fonctionnement.
J'essais de faire ça dans le Weekend


En attendant de trouver la solution à mon problème, pour me changer les idées, j'ai décidé de m'attaquer à la mappe de SPace Manbow.
Voici une ébauche du stage1:

L'idée est d'avoir la mappe d'un shoot them up exploitable en Screen 5 et voir quelles solutions peuvent trouvées pour alterner un scrolling différentiel sans interrompre l'action du jeu
Edité par
igal
Le 06/02/2016 à 23h53
Voici une ébauche du stage1:

L'idée est d'avoir la mappe d'un shoot them up exploitable en Screen 5 et voir quelles solutions peuvent trouvées pour alterner un scrolling différentiel sans interrompre l'action du jeu


Un premier jet qui permet de se rendre compte que le montage de la page D ne peu pas être cohérent juste en jouant sur VDP(24).
Va falloir étudier ca de près
https://www.youtube.com/watch?v=656sDRVlvLs
Va falloir étudier ca de près

https://www.youtube.com/watch?v=656sDRVlvLs

Juste pour vous dire que le Scrolling Multidirectionnel est dorénavant fonctionnel 
https://www.youtube.com/watch?v=RCoFKzLZ5Tk
Pour rappel:
L'écran du MSX est scindé en deux:
La partie visible qui fait 256X212 pixels.
La partie "non visible" 256X44 Pixels.
Le total des deux parties fait "Une page de 256X256 Pixels"
Nb 1: La procédure consistant en des copies simultanées de 3 Zones distinctes, j'ai donc choisi de "précharger" ces trois Zones sur des Pages distinctes du SCREEN 5 qui en compte 4 en tout
10 'save"spmult01.asc",a
20 SCREEN 5:COLOR 0,0,0:VDP(9)=VDP(9)OR2
30 SET PAGE 0,0
40 BLOAD"0bas.sc5",S:COLOR=RESTORE
50 SET PAGE 1,1
60 BLOAD"0haut.sc5",S:COPY(0,0)-(255,44),1TO(0,212),0
70 SET PAGE 2,2
80 BLOAD"1bas.sc5",S
90 SET PAGE 3,3
100 BLOAD"1haut.sc5",S
110 SET PAGE 0,0
120 A=0:VA=0:B=1:AA=211
130 COPY(A,0)-(B,211),2TO(A,0),0:'copie le champs en zone
135 COPY(A,0)-(B,43),3TO(A,212),0:'copie le champs hors zone
137 COPY(0,44)-(255,45),3TO(0,AA),0:'efface l'image r‚siduelle
140 AA=AA-1:VA=VA+1:A=A+1:B=B+1:IFVA=256THEN160
150 VDP(24)=VDP(24)-1AND255:SETSCROLLVA:GOTO 130
160 GOTO160:'COLOR1,15:END

https://www.youtube.com/watch?v=RCoFKzLZ5Tk
Pour rappel:
L'écran du MSX est scindé en deux:
La partie visible qui fait 256X212 pixels.
La partie "non visible" 256X44 Pixels.
Le total des deux parties fait "Une page de 256X256 Pixels"
Nb 1: La procédure consistant en des copies simultanées de 3 Zones distinctes, j'ai donc choisi de "précharger" ces trois Zones sur des Pages distinctes du SCREEN 5 qui en compte 4 en tout

10 'save"spmult01.asc",a
20 SCREEN 5:COLOR 0,0,0:VDP(9)=VDP(9)OR2
30 SET PAGE 0,0
40 BLOAD"0bas.sc5",S:COLOR=RESTORE
50 SET PAGE 1,1
60 BLOAD"0haut.sc5",S:COPY(0,0)-(255,44),1TO(0,212),0
70 SET PAGE 2,2
80 BLOAD"1bas.sc5",S
90 SET PAGE 3,3
100 BLOAD"1haut.sc5",S
110 SET PAGE 0,0
120 A=0:VA=0:B=1:AA=211
130 COPY(A,0)-(B,211),2TO(A,0),0:'copie le champs en zone
135 COPY(A,0)-(B,43),3TO(A,212),0:'copie le champs hors zone
137 COPY(0,44)-(255,45),3TO(0,AA),0:'efface l'image r‚siduelle
140 AA=AA-1:VA=VA+1:A=A+1:B=B+1:IFVA=256THEN160
150 VDP(24)=VDP(24)-1AND255:SETSCROLLVA:GOTO 130
160 GOTO160:'COLOR1,15:END

Salut Jipe.
Pour le moment, j'ai essayé aucune optimisation.
C'est ma toute première mouture en Multidirectionnelle et de fait, je préfère entendre toutes les critiques "bonnes ou mauvaises" pour avoir d'autres points de vue sur la chose.
Y a peut être plus simple juste en abordant le problème autrement.
Content que ça plaise
Pour info:
120 A=0:VA=0:B=1:AA=211
A => est la valeur du début de segment de 2 pixels de larges.
VA => est la valeur du SET SCROLL
B => est la valeur de fin de segment de 2 pixels de larges.
AA => est la valeur de la lignes à effacer (noircir).
130 COPY(A,0)-(B,211),2TO(A,0),0:'copie le champs en zone
Copie par segment de 2 pixels de large sur 212 pixels de haut, l'image contenue dans la page 2 vers la page 1 en les affichant sur le bords GAUCHE de l'écran 0.
135 COPY(A,0)-(B,43),3TO(A,212),0:'copie le champs hors zone
Copie par segment de 2 pixels de large sur 44 Pixels de haut, l'image contenue dans la page 3 vers la page 1 (hors zone) en les affichant sur le bord GAUCHE de l'écran 0.
137 COPY(0,44)-(255,44),3TO(0,AA),0:'efface l'image r‚siduelle
Copie la l'entièreté de la ligne 44 de la page 3 et l'affiche sur le bord BAS de l'écran 0.
140 AA=AA-1:VA=VA+1:A=A+1:B=B+1:IFVA=256THEN160
AA est diminuée pour effacer la ligne supérieur à chaque cycle.
VA est augmenté pour faire défiler l'image de Gauche vers la droite.
AA est augmenté pour déplacer le début de segment large de 2 pixels à copier.
BB est augmenté pour déplacer la fin de segment large de 2 pixels à copier.
150 VDP(24)=VDP(24)-1AND255:SETSCROLLVA:GOTO 130
VDP (24) -1 fait scroller l'écran vers le BAS tandis que SETSCROLL VA déplace vers la GAUCHE simultanément
Pour le moment, j'ai essayé aucune optimisation.
C'est ma toute première mouture en Multidirectionnelle et de fait, je préfère entendre toutes les critiques "bonnes ou mauvaises" pour avoir d'autres points de vue sur la chose.
Y a peut être plus simple juste en abordant le problème autrement.
Content que ça plaise

Pour info:
120 A=0:VA=0:B=1:AA=211
A => est la valeur du début de segment de 2 pixels de larges.
VA => est la valeur du SET SCROLL
B => est la valeur de fin de segment de 2 pixels de larges.
AA => est la valeur de la lignes à effacer (noircir).
130 COPY(A,0)-(B,211),2TO(A,0),0:'copie le champs en zone
Copie par segment de 2 pixels de large sur 212 pixels de haut, l'image contenue dans la page 2 vers la page 1 en les affichant sur le bords GAUCHE de l'écran 0.
135 COPY(A,0)-(B,43),3TO(A,212),0:'copie le champs hors zone
Copie par segment de 2 pixels de large sur 44 Pixels de haut, l'image contenue dans la page 3 vers la page 1 (hors zone) en les affichant sur le bord GAUCHE de l'écran 0.
137 COPY(0,44)-(255,44),3TO(0,AA),0:'efface l'image r‚siduelle
Copie la l'entièreté de la ligne 44 de la page 3 et l'affiche sur le bord BAS de l'écran 0.
140 AA=AA-1:VA=VA+1:A=A+1:B=B+1:IFVA=256THEN160
AA est diminuée pour effacer la ligne supérieur à chaque cycle.
VA est augmenté pour faire défiler l'image de Gauche vers la droite.
AA est augmenté pour déplacer le début de segment large de 2 pixels à copier.
BB est augmenté pour déplacer la fin de segment large de 2 pixels à copier.
150 VDP(24)=VDP(24)-1AND255:SETSCROLLVA:GOTO 130
VDP (24) -1 fait scroller l'écran vers le BAS tandis que SETSCROLL VA déplace vers la GAUCHE simultanément

Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie