MSX Village forum

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

igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 19/01/2016 à 13h52

Reprise du message précédent

Le stage 2 :)



@eric: tu veux les sources?


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 27/01/2016 à 19h16
Et voila les amis :tchin :tchin :tchin

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 :noel

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

 


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 27/01/2016 à 21h53
vala vala :D

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 :top

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 :top Edité par igal Le 27/01/2016 à 22h05


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5794

Le 27/01/2016 à 22h36
Igal, ..... il assure :)



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1487

Le 28/01/2016 à 08h51
Bravo Igal :top


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 28/01/2016 à 08h53
:top


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10347

Le 28/01/2016 à 12h13
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 :top


:noel
Site web    
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 28/01/2016 à 17h38
Beau boulot igal :| :top
Ta persévérance a fini par payer ^^
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 29/01/2016 à 07h13
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 :)


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 05/02/2016 à 18h17
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


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 24/02/2016 à 11h16
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


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 04/03/2016 à 13h21
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


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10347

Le 04/03/2016 à 13h33
bravo igal , reste plus qu'a combiner les 3 scrolling horizontal , vertical , multidirectionnel
as tu déja essayé le X-Basic
vu le peu de lignes de programme ça devrait décoiffer


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 04/03/2016 à 14h28
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 :)


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 04/03/2016 à 17h09
voici les sources:

SP MULTI.zip

Bon amusement :)


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5794

Le 04/03/2016 à 19h04
SET SCROLL, c'est uniquement pour 2+ ou ca fonctionne sur Msx2 ? Ou j'ai encore dis une bêtise? :oups



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie