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
Salut à tous.
La commande VDP(27)=VDP(27)-1AND255 permet de faire scrooler horizontalement une page BLOAD"IMAGE.SCx",S précédemment chargée.
Nb: VDP(27)=VDP(27)+1AND255 fait dérouler dans l'autre sens
L'effet est très impressionnant mais sans intérêt si l'on ne renouvelle/génère pas de nouveaux décors.
Je cherche donc un moyen très simple "d'injecter" des décors simultanément au déroulement du SCROLL!
Pour le moment, voici à quoi ressemble le programme:
Merci de vôtre aide
Après Plusieurs mois de travail, voici la solution:
Voici le Diagramme du fonctionnement très précis du moteur de Scroll Horizontal bidirectionnel selon la volonté du joueur.
Le But de ce diagramme est de le rendre le plus accessible et compréhensible possible.
De la sorte, ceux qui en ont la volonté pourront facilement le modifier
Ouvrez l'image sous un autre onglet puis cliquer sur la loupe agrandir ou alors sauvegarder l'image puis l'ouvrir puis zoomer avec le logiciel de votre choix.
Question résolu avec ce diagramme:
Voici le player:
Voici le générateur de Bribes:
Voici l'image du Disque Dur (CF) qui contient tout le nécessaire:
METAL.zip Edité par igal Le 06/09/2016 à 11h21
La commande VDP(27)=VDP(27)-1AND255 permet de faire scrooler horizontalement une page BLOAD"IMAGE.SCx",S précédemment chargée.
Nb: VDP(27)=VDP(27)+1AND255 fait dérouler dans l'autre sens
L'effet est très impressionnant mais sans intérêt si l'on ne renouvelle/génère pas de nouveaux décors.
Je cherche donc un moyen très simple "d'injecter" des décors simultanément au déroulement du SCROLL!
Pour le moment, voici à quoi ressemble le programme:
Code TEXT :
10 'SAVE"SCROOL.ASC",a 20 VDP(10)=0:SCREEN12,,,,,1 30 BLOAD"IMAGE.SCC",S 40 VDP(27)=VDP(27)-1AND255: ' [+1AND255] pour dérouler dans l'autre sens! 50 GOTO 40
Merci de vôtre aide
Après Plusieurs mois de travail, voici la solution:
Voici le Diagramme du fonctionnement très précis du moteur de Scroll Horizontal bidirectionnel selon la volonté du joueur.
Le But de ce diagramme est de le rendre le plus accessible et compréhensible possible.
De la sorte, ceux qui en ont la volonté pourront facilement le modifier
Ouvrez l'image sous un autre onglet puis cliquer sur la loupe agrandir ou alors sauvegarder l'image puis l'ouvrir puis zoomer avec le logiciel de votre choix.
Question résolu avec ce diagramme:
Voici le player:
Code VB :
0 'SAVE"METAL001.asc",A 2 'PLAYER DE BRIBES VERICALES[(8 X 212)] 8 'Mode graphique 9 SCREEN 12:'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.SCC",S:COLOR=RESTORE:SETPAGE1,0 26 IF INKEY$=""THEN26 27 'Chargement de la Page Alpha 28 CLS:SCREEN 8:CLS:CALL CHDIR("STAGE1") 29 CALL CHDIR("0") 30 SETPAGE0,1:BLOAD"0.SC8",S:SETPAGE1,0: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 G=1:I=I+3AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("0"):GOTO10324 1324 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("F"):GOTO11134 1334 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("F"):GOTO11124 1374 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("E"):GOTO11034 1384 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("E"):GOTO11024 1424 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("D"):GOTO10984 1434 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("D"):GOTO10974 1474 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("C"):GOTO10934 1484 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("C"):GOTO10924 1524 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("B"):GOTO10884 1534 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("B"):GOTO10874 1574 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("A"):GOTO10834 1584 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("A"):GOTO10824 1624 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("9"):GOTO10784 1634 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("9"):GOTO10774 1674 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("8"):GOTO10734 1684 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("8"):GOTO10724 1724 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("7"):GOTO10684 1734 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("7"):GOTO10674 1774 G=0:VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 1780 S=STICK(0):ONS+1GOSUB100,110,120,1782,140,150,160,1784,180:GOTO1780 1782 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("6"):GOTO10634 1784 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("6"):GOTO10624 1824 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("5"):GOTO10584 1834 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("5"):GOTO10574 1874 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("4"):GOTO10534 1884 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("4"):GOTO10524 1924 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("3"):GOTO10484 1934 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("3"):GOTO10474 1974 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("2"):GOTO10434 1984 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("2"):GOTO10424 2024 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("1"):GOTO10384 2034 G=0: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 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("1"):GOTO10374 2074 G=0:VG=VG-8AND255:COPY"115"TO(VG,0):SETSCROLLVG 2080 S=STICK(0):ONS+1GOSUB100,110,120,2082,140,150,160,2084,180:GOTO2080 2082 G=1:I=I+2AND&HF:GOSUB5300:VD=VG-256AND255:CALLCHDIR("0"):GOTO10334 2084 G=0:VG=VG-8AND255:COPY"111"TO(VG,0):SETSCROLLVG 2090 IFD=1THENI=I-1AND&HF:D=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 ' 5299 'Repertoire des repertoires bascule Gauche vers la Droite 5300 IFD=1THENI=I-1AND&HF:D=0 5301 IFI=&HFTHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("F"):RETURN 5302 IFI=&HETHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("E"):RETURN 5303 IFI=&HDTHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("D"):RETURN 5304 IFI=&HCTHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("C"):RETURN 5305 IFI=&HBTHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("B"):RETURN 5306 IFI=&HATHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("A"):RETURN 5307 IFI=&H9THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("9"):RETURN 5308 IFI=&H8THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("8"):RETURN 5309 IFI=&H7THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("7"):RETURN 5310 IFI=&H6THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("6"):RETURN 5311 IFI=&H5THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("5"):RETURN 5312 IFI=&H4THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("4"):RETURN 5313 IFI=&H3THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("3"):RETURN 5314 IFI=&H2THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("2"):RETURN 5315 IFI=&H1THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("1"):RETURN 5316 IFI=&H0THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("0"):RETURN 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 D=1:I=I-3AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("F"):GOTO1324 10324 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("0"):GOTO2084 10334 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("0"):GOTO2074 10374 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("1"):GOTO2034 10384 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("1"):GOTO2024 10424 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("2"):GOTO1984 10434 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("2"):GOTO1974 10474 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("3"):GOTO1934 10484 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("3"):GOTO1924 10524 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("4"):GOTO1884 10534 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("4"):GOTO1874 10574 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("5"):GOTO1834 10584 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("5"):GOTO1824 10624 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("6"):GOTO1784 10634 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("6"):GOTO1774 10674 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("7"):GOTO1734 10684 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("7"):GOTO1724 10724 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("8"):GOTO1684 10734 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("8"):GOTO1674 10774 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("9"):GOTO1634 10784 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("9"):GOTO1624 10824 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("A"):GOTO1584 10834 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("A"):GOTO1574 10874 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("B"):GOTO1534 10884 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("B"):GOTO1524 10924 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("C"):GOTO1484 10934 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("C"):GOTO1474 10974 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("D"):GOTO1434 10984 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("D"):GOTO1424 11024 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("E"):GOTO1384 11034 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("E"):GOTO1374 11124 D=0: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 D=1:I=I-2AND&HF:GOSUB20300:VG=VD+256AND255:CALLCHDIR("F"):GOTO1334 11134 D=0:COPY"115"TO(VD,0):VD=VD+8AND255:SETSCROLLVD 11140 IFG=1THENI=I+1AND&HF:G=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 Droite vers Gauche 20300 IFG=1THENI=I+1AND&HF:G=0 20301 IFI=&H0THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("0"):RETURN 20302 IFI=&H1THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("1"):RETURN 20303 IFI=&H2THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("2"):RETURN 20304 IFI=&H3THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("3"):RETURN 20305 IFI=&H4THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("4"):RETURN 20306 IFI=&H5THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("5"):RETURN 20307 IFI=&H6THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("6"):RETURN 20308 IFI=&H7THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("7"):RETURN 20309 IFI=&H8THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("8"):RETURN 20310 IFI=&H9THENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("9"):RETURN 20311 IFI=&HATHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("A"):RETURN 20312 IFI=&HBTHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("B"):RETURN 20313 IFI=&HCTHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("C"):RETURN 20314 IFI=&HDTHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("D"):RETURN 20315 IFI=&HETHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("E"):RETURN 20316 IFI=&HFTHENCALLCHDIR(".."):CALLCHDIR(".."):CALLCHDIR("F"):RETURN
Voici le générateur de Bribes:
Code VB :
10 'SAVE"GENOUTV8.ASC",A 20 'generateur de bribes Verticales d'images en 8 X 212. 22 'generateur par copy de bribes verticales. 30 ' Mode Graphique utilisé 32 VDP(10)=0: SCREEN 8 70 'Charger image ZERO [256X212] depuis la ligne Zero vers la page Zero. 71 SETPAGE 0,0: CLS 72 ' 76 'Entrer dans le repertoire STAGE1 prealablement cree. 77 'A l interieur de STAGE1 doivent se trouver les repertoires 0.1.2.3 avec les images .SC8 respectives 78 CALL CHDIR("STAGE1") 79 CALL CHDIR("0"):BLOAD"0.SC8",S 80 ' 81 A=0:'debut de copy 89 Z=211:'fin de copy 90 'Creer repertoires de 0 a F et y générer 2 bribes Larges de 8 lignes. 100 CALL MKDIR ("0"):CALL CHDIR ("0") 101 COPY(0,A)-(7,Z),0TO"111" 105 COPY(8,A)-(15,Z),0TO"115" 109 CALL CHDIR ("..") 110 CALL MKDIR ("1"):CALL CHDIR ("1") 111 COPY(16,A)-(23,Z),0TO"111" 115 COPY(24,A)-(31,Z),0TO"115" 119 CALL CHDIR ("..") 120 CALL MKDIR ("2"):CALL CHDIR ("2") 121 COPY(32,A)-(39,Z),0TO"111" 125 COPY(40,A)-(47,Z),0TO"115" 129 CALL CHDIR ("..") 130 CALL MKDIR ("3"):CALL CHDIR ("3") 131 COPY(48,A)-(55,Z),0TO"111" 135 COPY(56,A)-(63,Z),0TO"115" 139 CALL CHDIR ("..") 140 CALL MKDIR ("4"):CALL CHDIR ("4") 141 COPY(64,A)-(71,Z),0TO"111" 145 COPY(72,A)-(79,Z),0TO"115" 149 CALL CHDIR ("..") 150 CALL MKDIR ("5"):CALL CHDIR ("5") 151 COPY(80,A)-(87,Z),0TO"111" 155 COPY(88,A)-(95,Z),0TO"115" 159 CALL CHDIR ("..") 160 CALL MKDIR ("6"):CALL CHDIR ("6") 161 COPY(96,A)-(103,Z),0TO"111" 165 COPY(104,A)-(111,Z),0TO"115" 169 CALL CHDIR ("..") 170 CALL MKDIR ("7"):CALL CHDIR ("7") 171 COPY(112,A)-(119,Z),0TO"111" 175 COPY(120,A)-(127,Z),0TO"115" 179 CALL CHDIR ("..") 180 CALL MKDIR ("8"):CALL CHDIR ("8") 181 COPY(128,A)-(135,Z),0TO"111" 185 COPY(136,A)-(143,Z),0TO"115" 189 CALL CHDIR ("..") 190 CALL MKDIR ("9"):CALL CHDIR ("9") 191 COPY(144,A)-(151,Z),0TO"111" 195 COPY(152,A)-(159,Z),0TO"115" 199 CALL CHDIR ("..") 200 CALL MKDIR ("A"):CALL CHDIR ("A") 201 COPY(160,A)-(167,Z),0TO"111" 205 COPY(168,A)-(175,Z),0TO"115" 209 CALL CHDIR ("..") 210 CALL MKDIR ("B"):CALL CHDIR ("B") 211 COPY(176,A)-(183,Z),0TO"111" 215 COPY(184,A)-(191,Z),0TO"115" 219 CALL CHDIR ("..") 220 CALL MKDIR ("C"):CALL CHDIR ("C") 221 COPY(192,A)-(199,Z),0TO"111" 225 COPY(200,A)-(207,Z),0TO"115" 229 CALL CHDIR ("..") 230 CALL MKDIR ("D"):CALL CHDIR ("D") 231 COPY(208,A)-(215,Z),0TO"111" 235 COPY(216,A)-(223,Z),0TO"115" 239 CALL CHDIR ("..") 240 CALL MKDIR ("E"):CALL CHDIR ("E") 241 COPY(224,A)-(231,Z),0TO"111" 245 COPY(232,A)-(239,Z),0TO"115" 249 CALL CHDIR ("..") 250 CALL MKDIR ("F"):CALL CHDIR ("F") 251 COPY(240,A)-(247,Z),0TO"111" 255 COPY(248,A)-(255,Z),0TO"115" 259 CALL CHDIR ("..") 300 CALL CHDIR (".."):CALL CHDIR ("..")
Voici l'image du Disque Dur (CF) qui contient tout le nécessaire:
METAL.zip Edité par igal Le 06/09/2016 à 11h21
En BASIC, il n'y a que la commande COPY qui pourra t'aider.
Tu charges sur une page passive, et tu copie au fur et à mesure sur la page active.
Tu charges sur une page passive, et tu copie au fur et à mesure sur la page active.
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)
GDX :
Le AND255 ne sert à rien.
Je me souviens plus trop comment ca fonctionne, mais est ce qu'il n'existe pas un mode ou le scrolling se fait sur 2 pages? Les 2 registres de scrolling (26 et 27) totalisent 9 bit. Est ce que dans le mode "2 pages", les valeurs jusque 511 sont acceptees? Qu'en est il sous Basic? Je pense qu'il vaut mieux utiliser l'instruction Set Scroll que VDP(27) non?
ericb59
Membre non connecté
Conseiller Municipal
Metalion :
En BASIC, il n'y a que la commande COPY qui pourra t'aider.
Tu charges sur une page passive, et tu copie au fur et à mesure sur la page active.
Tu charges sur une page passive, et tu copie au fur et à mesure sur la page active.
j'ai jamais réussi à faire un scroll propre en basic avec défilement de décors qui se renouvelle...
J'attends de voir vos solutions...
igal
Membre non connecté
Conseiller Municipal
@Métalion: J'ai utilisé la fonction COPY tel que tu peux le voir sur la vidéo:
Pour l'occasion, j'ai fait scrollé une image en SCREEN 12 simultanément verticale et horizontale et c'est assez rapide je trouve.
Screen 12 Multidirectionnel H/8 et V/8:
http://youtu.be/aNlN5ckJtvQ
Screen 12 Multidirectionnel H/8 et V/1:
http://youtu.be/-Q653-eQhz4
Ca reste très simpliste comme approche.
En fait je me demande si l'un d'entre vous peut poster une formule qui permette de "plaquer" des Blocs de 16X16 ou encore des Bandes de 16X212
Edit:
Screen 12 Multidirectionnel H/8 :
(on voit mieux s'exécuter la commande COPY )
http://youtu.be/vnpdttPfNuw
@MsxLégend:
comment t'as fait pour te débarrasser de la grosse bande horizontale qui fait la jointure entre le haut et le bas de l'image lors ce que ca scrool à la verticale?
T'as solutionner le truc avec ta démo T erminator Edité par igal Le 09/12/2013 à 17h59
Pour l'occasion, j'ai fait scrollé une image en SCREEN 12 simultanément verticale et horizontale et c'est assez rapide je trouve.
Screen 12 Multidirectionnel H/8 et V/8:
http://youtu.be/aNlN5ckJtvQ
Screen 12 Multidirectionnel H/8 et V/1:
http://youtu.be/-Q653-eQhz4
Ca reste très simpliste comme approche.
En fait je me demande si l'un d'entre vous peut poster une formule qui permette de "plaquer" des Blocs de 16X16 ou encore des Bandes de 16X212
Edit:
Screen 12 Multidirectionnel H/8 :
(on voit mieux s'exécuter la commande COPY )
http://youtu.be/vnpdttPfNuw
@MsxLégend:
comment t'as fait pour te débarrasser de la grosse bande horizontale qui fait la jointure entre le haut et le bas de l'image lors ce que ca scrool à la verticale?
T'as solutionner le truc avec ta démo T erminator Edité par igal Le 09/12/2013 à 17h59
The MSX PAZZA
The MSX 2+ VDP has three additional registers, number 25 to 27. These registers can be accessed from BASIC using VDP(26)-VDP(28). So, to determine the correct VDP number of a register, you need to add one to the register number.
The registers are used as followed:
reg b7 b6 b5 b4 b3 b2 b1 b0
25 - CMD VDS YAE YJK WTE MSK SP2
26 - - H08 H07 H06 H05 H04 H03
27 - - - - - H02 H01 H00
The abbreviations have the following meaning:
CMD: Command function
This bit determines how the VDP commands function. When this bit is reset, the commands only function in screen 5 to 12. In the other case, the commands function in all screen modes. On screen 5 to 12, they behave as usual. On the other screens, the VDP uses the same addressing scheme as if the VDP is in screen 8. Hence, you have to set the coordinates just like when you are working in screen 8.
VDS: VRAM data select
This bit determines the function for VDP pin 8. When VDS is reset, the 3.38MHz clock signal for the CPU will be put on pin 8. Otherwise, the so-called VDS signal is put on pin 8. This signal is low when the VDP accesses the VRAM for screen display. Otherwise, the VDS signal is high.
Since most MSX 2+ computers derive the CPU clock from pin 8, you should always keep this bit to 0.
YAE and YJK
These are described in the section 'Select MSX 2+ screens in assembly' in the other part of the article.
WTE: Wait function
This bit determines whether the wait function of the VDP is enabled. When WTE is reset, the wait function is disabled. Otherwise, the wait function is enabled. In the latter case, the VDP will generate wait states when the CPU wants to access the VRAM before the VDP is ready for it. Programs using the wait function do not need to explicitly check bit 7 of status register 2 when transferring data to or from VRAM using the VDP commands.
MSK: Mask bit
This bit can enable the mask function of the VDP. When MSK is reset, the mask function is disabled. Otherwise, the mask function is enabled, which means that the eight left most pixels will be masked with the border color. You need to do this when you implement a horizontal scroll using register 26 and 27. The output for the eight left most pixels is not guaranteed when register 27 is not equal to zero. Please note that in screen 6 and 7, sixteen pixels will be masked in stead of eight.
SP2: Screen size bit
This bit sets the screen size for horizontal scroll. When SP2 is reset, the screen will have a size of one page. Everything dissapearing at the left hand of the screen will re-appear at the right hand side. When the bit is set, the screen will have a size of two pages. If the first page dissapears to the left of the screen, the second page will appear at the right hand side. Though, you must have selected an odd page number to use this functionality.
H08-H00: The horizontal scroll value
These bits are used to set the horizontal scroll value. On screen 6 and 7, the VDP scrolls with two pixels per unit. On the other screens, the VDP scrolls with one pixel per unit.
The horizontal scroll value must be split-up into two registers. Bit H08-H03 must be placed in register 26 and determine a shift of the screen to left. Bit H02-H00 must be placed in register 27 and determine a shift of the screen to the right. This makes setting the scroll value a little bit complicated. For example, to scroll the screen N pixels to the left under BASIC, you can use the following commands:
VDP(27)=(N+7)8: VDP(28)=-N AND 7
This is the same as using the command:
SET SCROLL N
Other programming languages, like assembler, do not have the SET SCROLL command. So, when using these languages you can use the method shown above.
google trad
Le MSX 2 + VDP a trois registres supplémentaires , le nombre 25 à 27 . Ces registres sont accessibles à partir de base en utilisant VDP ( 26 ) - VDP ( 28 ) . Ainsi, pour déterminer le nombre de VDP correcte d'un registre , vous avez besoin d' ajouter un le numéro de registre .
Les registres sont utilisés comme suit :
reg b7 b6 b5 b4 b3 b2 b1 b0
25 - CMD VDS YAE YJK WTE MSK SP2
26 - H08 H07 H06 H05 H04 H03
27 ----- H02 H01 H00
Les abréviations ont la signification suivante:
CMD : la fonction de commande
Ce bit détermine comment le VDP commandes fonction. Lorsque ce bit est remis à zéro , les commandes fonction que dans l'écran de 5 à 12 . Dans l'autre cas , la fonction de commandes dans tous les modes de l'écran . Sur l'écran de 5 à 12 , ils se comportent comme d'habitude . D' les autres écrans , la VDP utilise le même système d'adressage comme si la VDP est dans l'écran 8 . Par conséquent, vous devez définir les coordonnées aiment juste lorsque vous travaillez dans l'écran 8 .
VDS : données VRAM sélectionner
Ce bit détermine la fonction de VDP broche 8 . Lorsque VDS est remis à zéro , le signal 3.38MHz d'horloge pour le CPU sera mis sur la broche 8 . Sinon , le signal que l'on appelle VDS est mis sur la broche 8 . Ce signal est faible lorsque le VDP accède à la VRAM pour l'affichage de l'écran. Sinon , le signal VDS est élevée .
Comme la plupart des MSX 2 + ordinateurs proviennent de l'horloge du CPU de la broche 8 , vous devez toujours garder ce bit à 0 .
EJA et YJK
Ceux-ci sont décrits dans la section « Sélectionner MSX 2 + écrans dans l'assembly ' dans l'autre partie de l'article .
WTE : fonction Attendre
Ce bit détermine si la fonction d'attente de la VDP est activée . Quand WTE est remis à zéro , la fonction d'attente est désactivé . Sinon, la fonction d'attente est activée . Dans ce dernier cas , le PDV générer des états d'attente lorsque le CPU veut accéder à la VRAM avant la VDP est prêt pour cela . programmes en utilisant la fonction d'attente n'ont pas besoin de vérifier explicitement le bit 7 du registre d'état 2 lors du transfert de données vers ou à partir de VRAM en utilisant les commandes de VDP .
MSK : peu de masque
Ce bit peut activer la fonction de masque de la VDP . Quand MSK est remis à zéro , la fonction de masque est désactivé . Sinon, la fonction de masque est activé , ce qui signifie que les huit plus à gauche pixels seront masqués par la couleur de la bordure . Vous devez faire quand vous implémentez un défilement horizontal utilisant le registre 26 et 27 . la sortie pour les huit plus à gauche pixels n'est pas garanti lorsque le registre 27 n'est pas égal à zéro . S'il vous plaît noter que dans l'écran 6 et 7 , seize pixels seront masqués à la place de huit .
SP2 : peu de taille de l'écran
Ce bit définit la taille de l'écran pour défilement horizontal . Lorsque SP2 est réinitialisé, l'écran aura une taille d'une page . Tout dissapearing à la main gauche de l'écran s'affiche de nouveau du côté de la main droite. Lorsque le bit est défini, l'écran aura une taille de deux pages . Si la première page disparait à la gauche de l'écran , la deuxième page apparaîtront sur le côté de la main droite . Bien, vous devez avoir sélectionné un numéro de page impair pour utiliser cette fonctionnalité .
H08 - H00 : La valeur de défilement horizontale
Ces bits sont utilisés pour définir la valeur de défilement horizontale . Sur l'écran 6 et 7 , les rouleaux de VDP avec deux pixels par unité . Sur les autres écrans , les rouleaux de VDP avec un pixel par unité .
La valeur de défilement horizontale doit être divisé - en deux registres . Bit H08 - H03 doit être placé dans le registre 26 et de déterminer un décalage de l'écran à gauche . Bit H02- H00 doit être placé dans le registre 27 et de déterminer un décalage de l'écran .. à droite Cela rend la mise en valeur d'un peu compliqué de défilement Par exemple , pour faire défiler les N pixels de l'écran vers la gauche sous BASIC , vous pouvez utiliser les commandes suivantes :
VDP ( 27 ) = ( N 7 ) 8 : VDP ( 28 ) = -N ET 7
C'est le même que l'utilisation de la commande:
SET SCROLL N
Ensemble de défilement de N
D'autres langages de programmation, comme l'assembleur , n'ont pas la commande SET SCROLL . Ainsi, lors de l'utilisation de ces langues, vous pouvez utiliser la méthode ci-dessus.
The MSX 2+ VDP has three additional registers, number 25 to 27. These registers can be accessed from BASIC using VDP(26)-VDP(28). So, to determine the correct VDP number of a register, you need to add one to the register number.
The registers are used as followed:
reg b7 b6 b5 b4 b3 b2 b1 b0
25 - CMD VDS YAE YJK WTE MSK SP2
26 - - H08 H07 H06 H05 H04 H03
27 - - - - - H02 H01 H00
The abbreviations have the following meaning:
CMD: Command function
This bit determines how the VDP commands function. When this bit is reset, the commands only function in screen 5 to 12. In the other case, the commands function in all screen modes. On screen 5 to 12, they behave as usual. On the other screens, the VDP uses the same addressing scheme as if the VDP is in screen 8. Hence, you have to set the coordinates just like when you are working in screen 8.
VDS: VRAM data select
This bit determines the function for VDP pin 8. When VDS is reset, the 3.38MHz clock signal for the CPU will be put on pin 8. Otherwise, the so-called VDS signal is put on pin 8. This signal is low when the VDP accesses the VRAM for screen display. Otherwise, the VDS signal is high.
Since most MSX 2+ computers derive the CPU clock from pin 8, you should always keep this bit to 0.
YAE and YJK
These are described in the section 'Select MSX 2+ screens in assembly' in the other part of the article.
WTE: Wait function
This bit determines whether the wait function of the VDP is enabled. When WTE is reset, the wait function is disabled. Otherwise, the wait function is enabled. In the latter case, the VDP will generate wait states when the CPU wants to access the VRAM before the VDP is ready for it. Programs using the wait function do not need to explicitly check bit 7 of status register 2 when transferring data to or from VRAM using the VDP commands.
MSK: Mask bit
This bit can enable the mask function of the VDP. When MSK is reset, the mask function is disabled. Otherwise, the mask function is enabled, which means that the eight left most pixels will be masked with the border color. You need to do this when you implement a horizontal scroll using register 26 and 27. The output for the eight left most pixels is not guaranteed when register 27 is not equal to zero. Please note that in screen 6 and 7, sixteen pixels will be masked in stead of eight.
SP2: Screen size bit
This bit sets the screen size for horizontal scroll. When SP2 is reset, the screen will have a size of one page. Everything dissapearing at the left hand of the screen will re-appear at the right hand side. When the bit is set, the screen will have a size of two pages. If the first page dissapears to the left of the screen, the second page will appear at the right hand side. Though, you must have selected an odd page number to use this functionality.
H08-H00: The horizontal scroll value
These bits are used to set the horizontal scroll value. On screen 6 and 7, the VDP scrolls with two pixels per unit. On the other screens, the VDP scrolls with one pixel per unit.
The horizontal scroll value must be split-up into two registers. Bit H08-H03 must be placed in register 26 and determine a shift of the screen to left. Bit H02-H00 must be placed in register 27 and determine a shift of the screen to the right. This makes setting the scroll value a little bit complicated. For example, to scroll the screen N pixels to the left under BASIC, you can use the following commands:
VDP(27)=(N+7)8: VDP(28)=-N AND 7
This is the same as using the command:
SET SCROLL N
Other programming languages, like assembler, do not have the SET SCROLL command. So, when using these languages you can use the method shown above.
google trad
Le MSX 2 + VDP a trois registres supplémentaires , le nombre 25 à 27 . Ces registres sont accessibles à partir de base en utilisant VDP ( 26 ) - VDP ( 28 ) . Ainsi, pour déterminer le nombre de VDP correcte d'un registre , vous avez besoin d' ajouter un le numéro de registre .
Les registres sont utilisés comme suit :
reg b7 b6 b5 b4 b3 b2 b1 b0
25 - CMD VDS YAE YJK WTE MSK SP2
26 - H08 H07 H06 H05 H04 H03
27 ----- H02 H01 H00
Les abréviations ont la signification suivante:
CMD : la fonction de commande
Ce bit détermine comment le VDP commandes fonction. Lorsque ce bit est remis à zéro , les commandes fonction que dans l'écran de 5 à 12 . Dans l'autre cas , la fonction de commandes dans tous les modes de l'écran . Sur l'écran de 5 à 12 , ils se comportent comme d'habitude . D' les autres écrans , la VDP utilise le même système d'adressage comme si la VDP est dans l'écran 8 . Par conséquent, vous devez définir les coordonnées aiment juste lorsque vous travaillez dans l'écran 8 .
VDS : données VRAM sélectionner
Ce bit détermine la fonction de VDP broche 8 . Lorsque VDS est remis à zéro , le signal 3.38MHz d'horloge pour le CPU sera mis sur la broche 8 . Sinon , le signal que l'on appelle VDS est mis sur la broche 8 . Ce signal est faible lorsque le VDP accède à la VRAM pour l'affichage de l'écran. Sinon , le signal VDS est élevée .
Comme la plupart des MSX 2 + ordinateurs proviennent de l'horloge du CPU de la broche 8 , vous devez toujours garder ce bit à 0 .
EJA et YJK
Ceux-ci sont décrits dans la section « Sélectionner MSX 2 + écrans dans l'assembly ' dans l'autre partie de l'article .
WTE : fonction Attendre
Ce bit détermine si la fonction d'attente de la VDP est activée . Quand WTE est remis à zéro , la fonction d'attente est désactivé . Sinon, la fonction d'attente est activée . Dans ce dernier cas , le PDV générer des états d'attente lorsque le CPU veut accéder à la VRAM avant la VDP est prêt pour cela . programmes en utilisant la fonction d'attente n'ont pas besoin de vérifier explicitement le bit 7 du registre d'état 2 lors du transfert de données vers ou à partir de VRAM en utilisant les commandes de VDP .
MSK : peu de masque
Ce bit peut activer la fonction de masque de la VDP . Quand MSK est remis à zéro , la fonction de masque est désactivé . Sinon, la fonction de masque est activé , ce qui signifie que les huit plus à gauche pixels seront masqués par la couleur de la bordure . Vous devez faire quand vous implémentez un défilement horizontal utilisant le registre 26 et 27 . la sortie pour les huit plus à gauche pixels n'est pas garanti lorsque le registre 27 n'est pas égal à zéro . S'il vous plaît noter que dans l'écran 6 et 7 , seize pixels seront masqués à la place de huit .
SP2 : peu de taille de l'écran
Ce bit définit la taille de l'écran pour défilement horizontal . Lorsque SP2 est réinitialisé, l'écran aura une taille d'une page . Tout dissapearing à la main gauche de l'écran s'affiche de nouveau du côté de la main droite. Lorsque le bit est défini, l'écran aura une taille de deux pages . Si la première page disparait à la gauche de l'écran , la deuxième page apparaîtront sur le côté de la main droite . Bien, vous devez avoir sélectionné un numéro de page impair pour utiliser cette fonctionnalité .
H08 - H00 : La valeur de défilement horizontale
Ces bits sont utilisés pour définir la valeur de défilement horizontale . Sur l'écran 6 et 7 , les rouleaux de VDP avec deux pixels par unité . Sur les autres écrans , les rouleaux de VDP avec un pixel par unité .
La valeur de défilement horizontale doit être divisé - en deux registres . Bit H08 - H03 doit être placé dans le registre 26 et de déterminer un décalage de l'écran à gauche . Bit H02- H00 doit être placé dans le registre 27 et de déterminer un décalage de l'écran .. à droite Cela rend la mise en valeur d'un peu compliqué de défilement Par exemple , pour faire défiler les N pixels de l'écran vers la gauche sous BASIC , vous pouvez utiliser les commandes suivantes :
VDP ( 27 ) = ( N 7 ) 8 : VDP ( 28 ) = -N ET 7
C'est le même que l'utilisation de la commande:
SET SCROLL N
Ensemble de défilement de N
D'autres langages de programmation, comme l'assembleur , n'ont pas la commande SET SCROLL . Ainsi, lors de l'utilisation de ces langues, vous pouvez utiliser la méthode ci-dessus.
J'ai fait un petit exemple de défilement vertical de la page 0 vers la page 1, ça pourra peut-être servir même si ce n'est pas vraiment le sujet.
Ça marche dans tous les modes graphiques à partir du SCREEN 4. Il faut seulement retirer le "PAINT STEP(0,0),15,7" en SCREEN 4 ou 12. En SCREEN 6 ou 7, il faut adapter la largeur du COPY avec celle de l'écran.
Pour faire un défilement en Basic avec des décors qui se renouvellent, c'est peut-être faisable en faisant une bande de 256 x 16 de décors caché d'avance et à chaque déplacement d'une ligne du scroll, faire un COPY de 16 x 16 plus bas afin de créer la bande de 256 x 16 suivante au fur et à mesure.
Je n'ai jamais essayé mais il ne faut pas se faire d'illusion, même si ça marche, c'est sans doute lent et pas synchro. Ça serait juste utilisable pour une démo.
Pour un scroll horizontal, il faut des blocks 8x8~212 car le cache ne fait que 8X212.
Ça risque d'être assez moche sans synchro. Le scroll vertical passe sans doute mieux. Edité par GDX Le 10/12/2013 à 08h30
Code TEXT :
10 SCREEN8 20 VDP(9)=VDP(9)OR2 'sprites OFF 30 CIRCLE(127,105),106,7:PAINT STEP(0,0),15,7:SETPAGE,1:CLS:CIRCLE(127,105),106,6:SETPAGE,0 40 'BLOAD"IMAGE1.SC8",S:SETPAGE,1:BLOAD"IMAGE2.SC8",S:SETPAGE,0 50 Y=0:YD=212 60 IF VDP(-2)AND 1 THEN60 70 VDP(35)=Y:VDP(36)=1:VDP(37)=0:VDP(38)=0:VDP(39)=YD:VDP(40)=0:VDP(41)=255:VDP(42)=1:VDP(43)=1:VDP(44)=0:VDP(46)=0:VDP(47)=&HE0 80 VDP(24)=Y:Y=Y+1:IF Y<44 THEN YD=Y+212 ELSE YD=Y-44 90 IF Y=212 THEN110 100 GOTO60 110 IF NOTSTRIG(0) THEN110
Ça marche dans tous les modes graphiques à partir du SCREEN 4. Il faut seulement retirer le "PAINT STEP(0,0),15,7" en SCREEN 4 ou 12. En SCREEN 6 ou 7, il faut adapter la largeur du COPY avec celle de l'écran.
- La ligne 20 sert à désactiver les Sprites parce que les COPY se font sur la zone des Sprites.
- La ligne 30 est à effacer si on utilise la ligne 40.
- La ligne 60 sert à tester si le COPY est fini ou pas. Cette ligne est nécessaire car le VDP ne peut pas faire 2 COPY simultanément.
- La ligne 70 est l'instruction "YMMM" du VDP. (voir le livre "Pratique du MSX2" pour les explications). Il est nécessaire car l'instruction COPY du Basic ne fonctionne pas sur les lignes 212 à 255.
- La ligne 80 sert au défilement vertical. "SET SCROLL ,Y" est utilisable à la place de VDP(24)=Y mais ne fonctionne qu'à partir du MSX2+.
Pour faire un défilement en Basic avec des décors qui se renouvellent, c'est peut-être faisable en faisant une bande de 256 x 16 de décors caché d'avance et à chaque déplacement d'une ligne du scroll, faire un COPY de 16 x 16 plus bas afin de créer la bande de 256 x 16 suivante au fur et à mesure.
Je n'ai jamais essayé mais il ne faut pas se faire d'illusion, même si ça marche, c'est sans doute lent et pas synchro. Ça serait juste utilisable pour une démo.
igal :
En fait je me demande si l'un d'entre vous peut poster une formule qui permette de "plaquer" des Blocs de 16X16 ou encore des Bandes de 16X212
Pour un scroll horizontal, il faut des blocks 8x8~212 car le cache ne fait que 8X212.
Ça risque d'être assez moche sans synchro. Le scroll vertical passe sans doute mieux. Edité par GDX Le 10/12/2013 à 08h30
J'ai essayé le défilement horizontal de la page 0 vers la page 1 avec l'instruction SET SCROLL. C'est tout simple et ça marche plutôt bien !
Code TEXT :
Edité par
GDX
Le 10/12/2013 à 14h14
10 SCREEN8 20 CIRCLE(127,105),106,7:PAINT STEP(0,0),15,7:SETPAGE,1:CLS:CIRCLE(127,105),106,6:SETPAGE,0 30 'BLOAD"IMAGE1.SC8",S:SETPAGE,1:BLOAD"IMAGE2.SC8",S:SETPAGE,0 40 X=0 50 COPY(X,0)-STEP(0,211),1 TO(X,0) 60 SET SCROLL X:X=X+1:IF X=256 THEN80 70 GOTO50 80 IF NOTSTRIG(0) THEN80
igal
Membre non connecté
Conseiller Municipal
@GDX:
J'ai testé ton premier programme qui fonctionne très bien en permettant le sroll sur 2 pages à la verticale.
Par contre, j'ai essayé de créer une nouvelle page à scroller pour la suite, mais comme tu peux le voir, j'arrive pas à perpétuer le mouvement en implantant des nouvelles pages
Un résidu de l'ancienne page vient s'intercaler entre la nouvelle page et l'ancienne
http://youtu.be/O0FxC7Kc1as
Merci de ton aide
J'ai testé ton premier programme qui fonctionne très bien en permettant le sroll sur 2 pages à la verticale.
Par contre, j'ai essayé de créer une nouvelle page à scroller pour la suite, mais comme tu peux le voir, j'arrive pas à perpétuer le mouvement en implantant des nouvelles pages
Un résidu de l'ancienne page vient s'intercaler entre la nouvelle page et l'ancienne
http://youtu.be/O0FxC7Kc1as
Merci de ton aide
en basic 3 il existe une instruction SET SCROLL X,Y,0,0
SET SCROLL A,B,C,D
A - Horizontal mouvement.
B - Vertical mouvement.
C e D - cache les coins de l'écran. Valeur entre 0 and 1.
SET SCROLL A,B,C,D
A - Horizontal mouvement.
B - Vertical mouvement.
C e D - cache les coins de l'écran. Valeur entre 0 and 1.
Pour créer une nouvelle page à scroller et ainsi de suite, il suffit d'afficher la page 1 avec VDP(24)=0 en fin de scroll et de la recopier sur la page 0. Ensuite réaffichée la page 0 comme au départ pour recharger la page suivante sur la page 1 afin de relancer le scroll.
J'ai ajouté aussi le COLOR,,0 et les lignes 25 et 26 pour effacer les déchets qui se trouvent sur les lignes 212~256 de la page 1. C'est la commande LMMV du VDP (un rectangle plein). C'est pour que le switch de la page 0 à 1 se fasse proprement.
Tu peux bien sûr remplacer ce qu'il y a à la ligne 120 par un BLOAD"IMAGEx.SC8",S avec une variable pour changer d'image.
EDIT :
Finalement, voici plus simple et plus propre.
Comme ça, pas besoin du switch de la page 0 à 1. Edité par GDX Le 14/12/2013 à 09h44
Code TEXT :
10 SCREEN8:COLOR ,,0 20 VDP(9)=VDP(9)OR2 'sprites OFF 25 IF VDP(-2)AND 1 THEN25 26 VDP(37)=0:VDP(38)=0:VDP(39)=212:VDP(40)=1:VDP(41)=255:VDP(42)=1:VDP(43)=44:VDP(44)=0:VDP(45)=0:VDP(46)=0:VDP(47)=&H80 30 CIRCLE(127,105),106,7:PAINT STEP(0,0),15,7:SETPAGE,1:CLS:CIRCLE(127,105),106,6:SETPAGE,0 40 'BLOAD"IMAGE1.SC8",S:SETPAGE,1:BLOAD"IMAGE2.SC8",S:SETPAGE,0 50 Y=0:YD=212 60 IF VDP(-2)AND 1 THEN60 70 VDP(35)=Y:VDP(36)=1:VDP(37)=0:VDP(38)=0:VDP(39)=YD:VDP(40)=0:VDP(41)=255:VDP(42)=1:VDP(43)=1:VDP(44)=0:VDP(46)=0:VDP(47)=&HE0 80 VDP(24)=Y:Y=Y+1:IF Y<44 THEN YD=Y+212 ELSE YD=Y-44 90 IF Y=212 THEN GOSUB110 95 IF STRIG(0) THEN END 100 GOTO60 110 SETPAGE1:VDP(24)=0 111 COPY(0,0)-(255,211),1 TO(0,0),0:SETPAGE0,1:CLS 120 FORI=1TO10:CIRCLE(127,105),12*RND(1)*I,I:NEXT 130 SETPAGE,0:RETURN50
J'ai ajouté aussi le COLOR,,0 et les lignes 25 et 26 pour effacer les déchets qui se trouvent sur les lignes 212~256 de la page 1. C'est la commande LMMV du VDP (un rectangle plein). C'est pour que le switch de la page 0 à 1 se fasse proprement.
Tu peux bien sûr remplacer ce qu'il y a à la ligne 120 par un BLOAD"IMAGEx.SC8",S avec une variable pour changer d'image.
EDIT :
Finalement, voici plus simple et plus propre.
Code TEXT :
10 SCREEN8:I=0 20 VDP(9)=VDP(9)OR2 'sprites OFF 30 GOSUB120:GOSUB110 40 YD=212 50 IF VDP(-2)AND 1 THEN50 60 VDP(35)=Y:VDP(36)=1:VDP(37)=0:VDP(38)=0:VDP(39)=YD:VDP(40)=0:VDP(41)=255:VDP(42)=1:VDP(43)=1:VDP(44)=0:VDP(46)=0:VDP(47)=&HE0 70 VDP(24)=VDP(24)+1 AND255:Y=Y+1:YD=YD+1 AND255 80 IF Y=212 THEN GOSUB110 90 IF STRIG(0)THEN END 100 GOTO50 110 SETPAGE,1:CLS:Y=0 120 FORI=1TO10:CIRCLE(127,105),12*RND(1)*I,I:NEXT 130 'BLOAD"IMAGE"+RIGHT$(STR$(I),LEN(STR$(I))-1)+".SC8",S:I=(I+1)mod17 140 SETPAGE,0:RETURN
Comme ça, pas besoin du switch de la page 0 à 1. Edité par GDX Le 14/12/2013 à 09h44
La même chose mais horizontale :
EDIT :
- J'ai retiré le PAINT et j'ai ajouté le chargement d'images (ligne 90). Cette ligne permet de charger 17 images différentes en boucle (de IMAGE0 à IMAGE16). C'est le chiffre qu'il y a après la fonction MOD qui détermine le nombre d'image. Ce chiffre peut varier de 1 à 1000 (sans doute moins en pratique). La ligne 90 doit bien sûr remplacer la ligne 80 si elle est utilisée.
- J'ai fait la même modif sur le scroll vertical juste au dessus. Edité par GDX Le 14/12/2013 à 12h42
Code TEXT :
10 SCREEN8:I=0 20 GOSUB80:GOSUB70 30 COPY(X,0)-STEP(0,255),1 TO(X,0) 40 SET SCROLL X:X=X+1:IF X=256 THEN GOSUB70 50 IF STRIG(0)THEN END 60 GOTO30 70 SETPAGE,1:CLS:X=0 80 FORI=1TO10:CIRCLE(127,105),12*RND(1)*I,I:NEXT 90 'BLOAD"IMAGE"+RIGHT$(STR$(I),LEN(STR$(I))-1)+".SC8",S:I=(I+1)mod17 100 SETPAGE,0:RETURN
EDIT :
- J'ai retiré le PAINT et j'ai ajouté le chargement d'images (ligne 90). Cette ligne permet de charger 17 images différentes en boucle (de IMAGE0 à IMAGE16). C'est le chiffre qu'il y a après la fonction MOD qui détermine le nombre d'image. Ce chiffre peut varier de 1 à 1000 (sans doute moins en pratique). La ligne 90 doit bien sûr remplacer la ligne 80 si elle est utilisée.
- J'ai fait la même modif sur le scroll vertical juste au dessus. Edité par GDX Le 14/12/2013 à 12h42
Maggoo :
Je me souviens plus trop comment ca fonctionne, mais est ce qu'il n'existe pas un mode ou le scrolling se fait sur 2 pages? Les 2 registres de scrolling (26 et 27) totalisent 9 bit. Est ce que dans le mode "2 pages", les valeurs jusque 511 sont acceptees? Qu'en est il sous Basic? Je pense qu'il vaut mieux utiliser l'instruction Set Scroll que VDP(27) non?
Oups, je n'avais pas vu ton message.
Vaudrait voir, je ne connais pas bien les spécificités du 2+ (et encore moins du Turbo R). J'y jetterai un oeuil à l'occasion. Je pense que Igal peut se débrouiller avec ce que j'ai mis. Comme on dit : "Pas de nouvelle, bonne nouvelle".
igal
Membre non connecté
Conseiller Municipal
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie