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

Pour gagner un peu de velocité, avez vous essayé d'écrire les variables de numero entière comme I%, H%, etc., de supprimer tous les éspaces et comments, et d'écrire plusieurs command en 1 seul ligne? Lisez ici: http://map.grauw.nl/articles/basic_tips_tricks.php

Salut Nrgo.
Beaucoup de chose peuvent être faites pour optimiser le code.
N'hésite pas à exposer tes idées en les mettant en pratique avec le code
Me concernant, il y a encore de très nombreuses choses à voir avant de chercher à optimiser le code.
Je souhaite au final combiner VDP(24) et VDP(27) dans toutes les directions en temps réel.
Plus encore, si j'arrive à finaliser mon projet, je mettrait en application sur un stage de Métroid Fusion juste pour démontrer la faisabilité.
Ce sera long mais cohérent.
Une fois la démonstration faite, ceux qui ont les compétences n'auront cas pondre une adaptation du moteur Basic en programme machine
Mais bon..on y est pas encore lol.
Fais des essais et poste une vidéo voir les idées qui te passent par la tête
Beaucoup de chose peuvent être faites pour optimiser le code.
N'hésite pas à exposer tes idées en les mettant en pratique avec le code

Me concernant, il y a encore de très nombreuses choses à voir avant de chercher à optimiser le code.
Je souhaite au final combiner VDP(24) et VDP(27) dans toutes les directions en temps réel.
Plus encore, si j'arrive à finaliser mon projet, je mettrait en application sur un stage de Métroid Fusion juste pour démontrer la faisabilité.
Ce sera long mais cohérent.
Une fois la démonstration faite, ceux qui ont les compétences n'auront cas pondre une adaptation du moteur Basic en programme machine

Mais bon..on y est pas encore lol.
Fais des essais et poste une vidéo voir les idées qui te passent par la tête

Le problème, Igal, c'est que pour que ton projet puisse démontrer sa faisabilité, il faudra bien que tu passes par le stade de l'optimisation. Car à chaque couche d'animation que tu ajoutes, tu ralentis l'ensemble. A un moment, tu n'auras pas d'autre choix. Je suis convaincu que les limites du BASIC apparaitront assez rapidement.
Et pour être franc, presque tout le monde y est allé de son idée pour optimiser ton programme, mais tu n'as presque jamais intégré ces conseils dans ton code. L'optimisation de la gestion du chargement de tes fichiers "bribes", par exemple, t'a été montrée plusieurs fois, mais tu ne l'as pas intégrée. A force, les gens ont laissé tomber. Ce n'est pas leur projet, c'est le tien.
L'optimisation n'améliore pas uniquement la vitesse, elle améliore aussi parfois la lisibilité du programme et sa compréhension. C'est un point au moins aussi important que le reste.
Sur ce, je te souhaite bon courage pour la suite de tes expérimentations.
Et pour être franc, presque tout le monde y est allé de son idée pour optimiser ton programme, mais tu n'as presque jamais intégré ces conseils dans ton code. L'optimisation de la gestion du chargement de tes fichiers "bribes", par exemple, t'a été montrée plusieurs fois, mais tu ne l'as pas intégrée. A force, les gens ont laissé tomber. Ce n'est pas leur projet, c'est le tien.
L'optimisation n'améliore pas uniquement la vitesse, elle améliore aussi parfois la lisibilité du programme et sa compréhension. C'est un point au moins aussi important que le reste.
Sur ce, je te souhaite bon courage pour la suite de tes expérimentations.
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)

Ok
Je vais m'atteler à appliquer les différentes optimisations proposées
Une version "optimisée" permettra de voir ou on en est niveau vitesse et ainsi éviter des voix irréalistes.
L'autre version "malléable" permettra d'expérimenter "à tâtons".
J'ai voulu laisser cela pour plus tard mais après tout pourquoi pas!
Voyons le côté positif de la chose, cela ne fera qu'enthousiasmer tout le monde moi y compris
Edité par
igal
Le 12/02/2015 à 07h54

Je vais m'atteler à appliquer les différentes optimisations proposées

Une version "optimisée" permettra de voir ou on en est niveau vitesse et ainsi éviter des voix irréalistes.
L'autre version "malléable" permettra d'expérimenter "à tâtons".
J'ai voulu laisser cela pour plus tard mais après tout pourquoi pas!
Voyons le côté positif de la chose, cela ne fera qu'enthousiasmer tout le monde moi y compris


Voici après quelques mois d'exploration avec une approche BLOAD"xyz.SCA",S, une approche COPY "XYZ" to (X,Y).
Les premiers testes semblent très prometteurs avec une vitesse beaucoup plus rapide.
Voici le listing du Player:
Voici le listing du générateur de Bribes par COPY:
Petite précision concernant la vidéo ci dessous:
Le Scrolling ci dessous nécessite plusieurs milliers de bribes.
J'ai utilisé un disque dur virtuel pour placer ces milliers de fichiers structurés et rangés selon le générateur.
Nb: L'idéal est d'utiliser un disque dur qui vient d'être formaté ou encore de placer les fichiers sur une ROM pour obtenir un résulta encore plus rapide je pense
Pour le moment, j'ai utilisé un Turbo-R pour visualiser le résulta en image
https://youtu.be/4Ow8NzydFKc
@ Suivre
Edit: comment mettre un clavier (complet) européen sur un turbo-R svp? Edité par igal Le 29/11/2015 à 19h36
Les premiers testes semblent très prometteurs avec une vitesse beaucoup plus rapide.
Voici le listing du Player:
Copier vers le presse-papierCode TEXT :
0 'SAVE"MAGPLA03.asc",A 2 'PLAYER DE BRIBES VERICALES[(191 X 2,4,8 et 16) 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 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("STAGE0") 29 CALL CHDIR("0") 30 BLOAD"ALPHA.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 60 'VARIABLE DU SCROLL 65 R=0:'Scroll Vertical 66 VA=0:'Scroll Horizontal 67 I=0:'Repertoire Zero 69 II=0:'Sous repertoire Zero 70 S=STICK(0) 99 'Choix du repertoire des pages 100 IF I=&H0THENI=&H1:'CALL CHDIR ("1"):GOTO 120 101 IF I=&H1THEN CALL CHDIR ("1"):GOTO 120 102 IF I=&H2THEN CALL CHDIR ("2"):GOTO 120 103 IF I=&H3THEN CALL CHDIR ("3"):GOTO 120 104 IF I=&H4THEN CALL CHDIR ("4"):GOTO 120 105 IF I=&H5THEN CALL CHDIR ("5"):GOTO 120 106 IF I=&H6THEN CALL CHDIR ("6"):GOTO 120 107 IF I=&H7THEN CALL CHDIR ("7"):GOTO 120 108 IF I=&H8THEN CALL CHDIR ("8"):GOTO 120 109 IF I=&H9THEN CALL CHDIR ("9"):GOTO 120 110 IF I=&HATHEN CALL CHDIR ("A"):GOTO 120 111 IF I=&HBTHEN CALL CHDIR ("B"):GOTO 120 112 IF I=&HCTHEN CALL CHDIR ("C"):GOTO 120 113 IF I=&HDTHEN CALL CHDIR ("D"):GOTO 120 114 IF I=&HETHEN CALL CHDIR ("E"):GOTO 120 115 IF I=&HFTHEN CALL CHDIR ("F"):GOTO 120 119 'choix du repertoire des bribes 120 IF II=&H0THEN CALL CHDIR ("0"):GOTO 140 121 IF II=&H1THEN CALL CHDIR ("1"):GOTO 140 122 IF II=&H2THEN CALL CHDIR ("2"):GOTO 140 123 IF II=&H3THEN CALL CHDIR ("3"):GOTO 140 124 IF II=&H4THEN CALL CHDIR ("4"):GOTO 140 125 IF II=&H5THEN CALL CHDIR ("5"):GOTO 140 126 IF II=&H6THEN CALL CHDIR ("6"):GOTO 140 127 IF II=&H7THEN CALL CHDIR ("7"):GOTO 140 128 IF II=&H8THEN CALL CHDIR ("8"):GOTO 140 129 IF II=&H9THEN CALL CHDIR ("9"):GOTO 140 130 IF II=&HATHEN CALL CHDIR ("A"):GOTO 140 131 IF II=&HBTHEN CALL CHDIR ("B"):GOTO 140 132 IF II=&HCTHEN CALL CHDIR ("C"):GOTO 140 133 IF II=&HDTHEN CALL CHDIR ("D"):GOTO 140 134 IF II=&HETHEN CALL CHDIR ("E"):GOTO 140 135 IF II=&HFTHEN CALL CHDIR ("F"):GOTO 140 139 'Chargement des bribes 2 Pixels 140 ' 142 COPY"1"TO(VA,0):VA=VA+2 144 VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+2 146 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 150 COPY"2"TO(VA,0):VA=VA+2 152 VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+2 154 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 162 COPY"3"TO(VA,0):VA=VA+2 164 VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+2 166 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 170 COPY"4"TO(VA,0):VA=VA+2 172 VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+2 174 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 180 COPY"5"TO(VA,0):VA=VA+2 182 VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+2 184 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 188 COPY"6"TO(VA,0):VA=VA+2 190 VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+2AND255 192 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 198 COPY"7"TO (VA,0):VA=VA+2 199 VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+2 200 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 204 COPY"8"TO (VA,0):VA=VA+2AND255 206 VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+2 208 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 210 CALL CHDIR (".."):II=II+1AND&HF 216 IFVA=0THENI=I+1AND&HF:CALL CHDIR(".."):GOTO100 218 GOTO120 239 'Chargement des bribes 4 Pixels 240 ' 242 COPY"11"TO(VB,0):VB=VB+4 244 VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+4 246 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 248 COPY"13"TO(VB,0):VB=VB+4 250 VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+4 252 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 254 COPY"15"TO(VB,0):VB=VB+4 256 VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+4 258 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 260 COPY"17"TO(VB,0):VB=VB+4AND255 262 VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+4AND255 264 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 266 CALL CHDIR (".."):II=II+1AND&HF 268 IFVB=0THENI=I+1AND&HF:CALL CHDIR(".."):GOTO100 270 GOTO120 339 'Chargement des Bribes 8 Pixels 340 ' 342 COPY"111"TO (VC,0):VC=VC+8 344 VDP(27)=VDP(27)+1 346 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 348 COPY"115"TO (VC,0):VC=VC+8AND255 350 VDP(27)=VDP(27)+1AND255 352 ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800 354 CALL CHDIR (".."):II=II+1AND&HF 356 IFVC=0THENI=I+1AND&HF:CALL CHDIR(".."):GOTO100 358 GOTO120 1000 'STATIQUE**************** 1010 RETURN:VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1050 1020 COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET 1022 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1030 RETURN 1050 COPY(C,D)-(C+58,D+45),3TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0 1052 COPY(X,Y)-(X+58,Y+45),1TO(X,Y),0 1060 RETURN 1099 SCREEN0:COLOR1,35:PRINT"STATIQUE ECHEC 1100 'SAUT******************** 1110 RETURN:VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1150 1120 Y=Y-64AND255:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET 1122 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1130 Y=Y+16AND255:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET 1132 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1140 RETURN 1150 Y=Y-64AND255:COPY(C,D)-(C+58,D+45),3TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0 1152 COPY(X,Y)-(X+58,Y+45),1TO(X,Y),0 1160 Y=Y+32AND255:COPY(C,D)-(C+58,D+45),3TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0 1162 COPY(X,Y)-(X+58,Y+45),1TO(X,Y),0 1170 RETURN 1199 SCREEN0:COLOR1,35:PRINT"SAUT ECHEC 1200 'SAUT DROITE************** 1210 RETURN:VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1250 1220 X=X+32:Y=Y-64:B=0:D=92:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET:A=(A+40)MOD160 1222 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1230 X=X+32:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET:A=(A+40)MOD160 1232 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1240 Y=Y+16:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET:A=(A+40)MOD160 1242 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1245 RETURN 1250 X=X+32:Y=Y-64:B=0:D=92:COPY(C,D)-(C+58,D+45),3TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0 1252 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0 1260 X=X+32:COPY(C,D)-(C+58,D+45),3TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0 1262 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),1 1270 Y=Y+16:COPY(C,D)-(C+58,D+45),3TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0 1272 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0 1280 RETURN 1299 SCREEN0:COLOR1,35:PRINT"SAUT DROITE ECHEC 1300 'DROITE****************** 1310 RETURN:VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1350 1320 X=X+20:B=0:D=92:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET:A=(A+40)MOD160 1322 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1330 RETURN 1350 X=X+20:B=0:D=92:COPY(C,D)-(C+58,D+45),3TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0 1352 COPY(X,Y)-(X+58,Y+45),1TO(X,Y),0 1360 RETURN 1399 SCREEN0:COLOR1,35:PRINT"DROITE ECHEC 1400 'CHUTE DROITE************ 1410 RETURN:VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1350 1420 X=X+32:Y=Y+32:B=0:D=92:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET:A=(A+40)MOD160 1422 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1430 RETURN 1450 X=X+32:Y=Y+32:B=0:D=92:COPY(C,D)-(C+58,D+45),3TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0 1452 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0 1460 RETURN 1499 SCREEN0:COLOR1,35:PRINT"CHUTE DROITE ECHEC 1500 'CHUTE****************** 1510 RETURN:VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1550 1520 Y=Y+32AND255:B=B:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET:A=(A+40)MOD160 1522 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1530 RETURN 1550 Y=Y+32AND255:B=B:COPY(C,D)-(C+58,D+45),3TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0 1552 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0 1560 RETURN 1599 SCREEN0:COLOR1,35:PRINT"CHUTE ECHEC 1600 'CHUTE GAUCHE************ 1610 RETURN:VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1650 1620 X=X-32:Y=Y+32:B=46:D=138:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET:A=(A+40)MOD160 1622 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1630 RETURN 1650 X=X-32:Y=Y+32:B=46:D=138:COPY(C,D)-(C+58,D+45),3TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0 1652 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0 1660 RETURN 1699 SCREEN0:COLOR1,35:PRINT"CHUTE GAUCHE ECHEC 1700 'GAUCHE****************** 1710 RETURN:VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1750 1720 X=X-20:B=46:D=138:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET:A=(A+40)MOD160 1722 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1730 RETURN 1750 X=X-20:B=46:D=138:COPY(C,D)-(C+58,D+45),3TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0 1752 COPY(X,Y)-(X+58,Y+45),1TO(X,Y),0 1760 RETURN 1799 SCREEN0:COLOR1,35:PRINT"GAUCHE ECHEC 1800 'SAUT GAUCHE************** 1810 RETURN:VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1850 1820 X=X-32:Y=Y-64:B=46:D=138:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET:A=(A+40)MOD160 1822 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1830 X=X-32:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET:A=(A+40)MOD160 1832 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1840 Y=Y+16:COPY(A,B)-(A+39,B+45),3TO(X,Y),0,TPSET:A=(A+40)MOD160 1842 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0 1845 RETURN 1850 X=X-32:Y=Y-64:B=46:D=138:COPY(C,D)-(C+58,D+45),3TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0 1852 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0 1860 X=X-32:COPY(C,D)-(C+58,D+45),3TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0 1862 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0 1870 Y=Y+16:COPY(C,D)-(C+58,D+45),3TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0 1872 CY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0, 1880 RETURN 1899 SCREEN0:COLOR1,35:PRINT"SAUT GAUCHE ECHEC 45035 0 IFVD=0THENI=I+1AND&HF:CALL CHDIR(".."):GOTO100 56589 20 'Variable choix du repertoire
Voici le listing du générateur de Bribes par COPY:
Copier vers le presse-papierCode TEXT :
10 'SAVE"MAGIC002.ASC",A 20 'generateur de bribes d'images 128 X 2 verticales. 22 'generateur par copy de bribes verticales. 30 ' Mode Graphique utilisé 32 VDP(10)=0: SCREEN 10 70 'Charger image ZERO [212X256] depuis la ligne Zero vers Zero page Zero 71 SETPAGE 0,0: CLS 72'BLOAD"0.SCA",S: COLOR=RESTORE 76 'Creer et entrer dans le repertoire F-1 [Image Un] 78 CALL CHDIR ("STAGE0"):CALL CHDIR("1") 79 BLOAD"1.SCA",S:'COLOR=RESTORE 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 7 bribes hautes de 2 lignes. 100 CALL MKDIR ("0"):CALL CHDIR ("0") 101 COPY(0,A)-(1,Z),0TO"1":COPY(0,A)-(3,Z),0TO"11":COPY(0,A)-(7,Z),0TO"111" 102 COPY(2,A)-(3,Z),0TO"2" 103 COPY(4,A)-(5,Z),0TO"3":COPY(4,A)-(7,Z),0TO"13" 104 COPY(6,A)-(7,Z),0TO"4" 105 COPY(8,A)-(9,Z),0TO"5":COPY(8,A)-(11,Z),0TO"15":COPY(8,A)-(15,Z),0TO"115" 106 COPY(10,A)-(11,Z),0TO"6" 107 COPY(12,A)-(13,Z),0TO"7":COPY(12,A)-(15,Z),0TO"17" 108 COPY(14,A)-(15,Z),0TO"8" 109 CALL CHDIR ("..") 110 CALL MKDIR ("1"):CALL CHDIR ("1") 111 COPY(16,A)-(17,Z),0 TO "1":COPY(16,A)-(19,Z),0TO"11":COPY(16,A)-(23,Z),0TO"111" 112 COPY(18,A)-(19,Z),0 TO "2" 113 COPY(20,A)-(21,Z),0 TO "3":COPY(20,A)-(23,Z),0TO"13" 114 COPY(22,A)-(23,Z),0 TO "4" 115 COPY(24,A)-(25,Z),0 TO "5":COPY(24,A)-(27,Z),0TO"15":COPY(24,A)-(31,Z),0TO"115" 116 COPY(26,A)-(27,Z),0 TO "6" 117 COPY(28,A)-(29,Z),0 TO "7":COPY(28,A)-(31,Z),0TO"17" 118 COPY(30,A)-(31,Z),0 TO "8" 119 CALL CHDIR ("..") 120 CALL MKDIR ("2"):CALL CHDIR ("2") 121 COPY(32,A)-(33,Z),0 TO "1":COPY(32,A)-(35,Z),0TO"11":COPY(32,A)-(39,Z),0TO"111" 122 COPY(34,A)-(35,Z),0 TO "2" 123 COPY(36,A)-(37,Z),0 TO "3":COPY(36,A)-(39,Z),0TO"13" 124 COPY(38,A)-(39,Z),0 TO "4" 125 COPY(40,A)-(41,Z),0 TO "5":COPY(40,A)-(43,Z),0TO"15":COPY(40,A)-(47,Z),0TO"115" 126 COPY(42,A)-(43,Z),0 TO "6" 127 COPY(44,A)-(45,Z),0 TO "7":COPY(44,A)-(47,Z),0TO"17" 128 COPY(46,A)-(47,Z),0 TO "8" 129 CALL CHDIR ("..") 130 CALL MKDIR ("3"):CALL CHDIR ("3") 131 COPY(48,A)-(49,Z),0 TO "1":COPY(48,A)-(51,Z),0TO"11":COPY(48,A)-(55,Z),0TO"111" 132 COPY(50,A)-(51,Z),0 TO "2" 133 COPY(52,A)-(53,Z),0 TO "3":COPY(52,A)-(55,Z),0TO"13" 134 COPY(54,A)-(55,Z),0 TO "4" 135 COPY(56,A)-(57,Z),0 TO "5":COPY(56,A)-(59,Z),0TO"15":COPY(56,A)-(63,Z),0TO"115" 136 COPY(58,A)-(59,Z),0 TO "6" 137 COPY(60,A)-(61,Z),0 TO "7":COPY(60,A)-(63,Z),0TO"17" 138 COPY(62,A)-(63,Z),0 TO "8" 139 CALL CHDIR ("..") 140 CALL MKDIR ("4"):CALL CHDIR ("4") 141 COPY(64,A)-(65,Z),0 TO "1":COPY(64,A)-(67,Z),0TO"11":COPY(64,A)-(71,Z),0TO"111" 142 COPY(66,A)-(67,Z),0 TO "2" 143 COPY(68,A)-(69,Z),0 TO "3":COPY(68,A)-(71,Z),0TO"13" 144 COPY(70,A)-(71,Z),0 TO "4" 145 COPY(72,A)-(73,Z),0 TO "5":COPY(72,A)-(75,Z),0TO"15":COPY(72,A)-(79,Z),0TO"115" 146 COPY(74,A)-(75,Z),0 TO "6" 147 COPY(76,A)-(77,Z),0 TO "7":COPY(76,A)-(79,Z),0TO"17" 148 COPY(78,A)-(79,Z),0 TO "8" 149 CALL CHDIR ("..") 150 CALL MKDIR ("5"):CALL CHDIR ("5") 151 COPY(80,A)-(81,Z),0 TO "1":COPY(80,A)-(83,Z),0TO"11":COPY(80,A)-(87,Z),0TO"111" 152 COPY(82,A)-(83,Z),0 TO "2" 153 COPY(84,A)-(85,Z),0 TO "3":COPY(84,A)-(87,Z),0TO"13" 154 COPY(86,A)-(87,Z),0 TO "4" 155 COPY(88,A)-(89,Z),0 TO "5":COPY(88,A)-(91,Z),0TO"15":COPY(88,A)-(95,Z),0TO"115" 156 COPY(90,A)-(91,Z),0 TO "6" 157 COPY(92,A)-(93,Z),0 TO "7":COPY(92,A)-(95,Z),0TO"17" 158 COPY(94,A)-(95,Z),0 TO "8" 159 CALL CHDIR ("..") 160 CALL MKDIR ("6"):CALL CHDIR ("6") 161 COPY(96,A)-(97,Z),0 TO "1":COPY(96,A)-(99,Z),0TO"11":COPY(96,A)-(103,Z),0TO"111" 162 COPY(98,A)-(99,Z),0 TO "2" 163 COPY(100,A)-(101,Z),0 TO "3":COPY(100,A)-(103,Z),0TO"13" 164 COPY(102,A)-(103,Z),0 TO "4" 165 COPY(104,A)-(105,Z),0 TO "5":COPY(104,A)-(107,Z),0TO"15":COPY(104,A)-(111,Z),0TO"115" 166 COPY(106,A)-(107,Z),0 TO "6" 167 COPY(108,A)-(109,Z),0 TO "7":COPY(108,A)-(111,Z),0TO"17" 168 COPY(110,A)-(111,Z),0 TO "8" 169 CALL CHDIR ("..") 170 CALL MKDIR ("7"):CALL CHDIR ("7") 171 COPY(112,A)-(113,Z),0 TO "1":COPY(112,A)-(115,Z),0TO"11":COPY(112,A)-(119,Z),0TO"111" 172 COPY(114,A)-(115,Z),0 TO "2" 173 COPY(116,A)-(117,Z),0 TO "3":COPY(116,A)-(119,Z),0TO"13" 174 COPY(118,A)-(119,Z),0 TO "4" 175 COPY(120,A)-(121,Z),0 TO "5":COPY(120,A)-(123,Z),0TO"15":COPY(120,A)-(127,Z),0TO"115" 176 COPY(122,A)-(123,Z),0 TO "6" 177 COPY(124,A)-(125,Z),0 TO "7":COPY(124,A)-(127,Z),0TO"17" 178 COPY(126,A)-(127,Z),0 TO "8" 179 CALL CHDIR ("..") 180 CALL MKDIR ("8"):CALL CHDIR ("8") 181 COPY(128,A)-(129,Z),0 TO "1":COPY(128,A)-(131,Z),0TO"11":COPY(128,A)-(135,Z),0TO"111" 182 COPY(130,A)-(131,Z),0 TO "2" 183 COPY(132,A)-(133,Z),0 TO "3":COPY(132,A)-(135,Z),0TO"13" 184 COPY(134,A)-(135,Z),0 TO "4" 185 COPY(136,A)-(137,Z),0 TO "5":COPY(136,A)-(139,Z),0TO"15":COPY(136,A)-(143,Z),0TO"115" 186 COPY(138,A)-(139,Z),0 TO "6" 187 COPY(140,A)-(141,Z),0 TO "7":COPY(140,A)-(143,Z),0TO"17" 188 COPY(142,A)-(143,Z),0 TO "8" 189 CALL CHDIR ("..") 190 CALL MKDIR ("9"):CALL CHDIR ("9") 191 COPY(144,A)-(145,Z),0 TO "1":COPY(144,A)-(147,Z),0TO"11":COPY(144,A)-(151,Z),0TO"111" 192 COPY(146,A)-(147,Z),0 TO "2" 193 COPY(148,A)-(149,Z),0 TO "3":COPY(148,A)-(151,Z),0TO"13" 194 COPY(150,A)-(151,Z),0 TO "4" 195 COPY(152,A)-(153,Z),0 TO "5":COPY(152,A)-(155,Z),0TO"15":COPY(152,A)-(159,Z),0TO"115" 196 COPY(154,A)-(155,Z),0 TO "6" 197 COPY(156,A)-(157,Z),0 TO "7":COPY(156,A)-(159,Z),0TO"17" 198 COPY(158,A)-(159,Z),0 TO "8" 199 CALL CHDIR ("..") 200 CALL MKDIR ("A"):CALL CHDIR ("A") 201 COPY(160,A)-(161,Z),0 TO "1":COPY(160,A)-(163,Z),0TO"11":COPY(160,A)-(167,Z),0TO"111" 202 COPY(162,A)-(163,Z),0 TO "2" 203 COPY(164,A)-(165,Z),0 TO "3":COPY(164,A)-(167,Z),0TO"13" 204 COPY(166,A)-(167,Z),0 TO "4" 205 COPY(168,A)-(169,Z),0 TO "5":COPY(168,A)-(171,Z),0TO"15":COPY(168,A)-(175,Z),0TO"115" 206 COPY(170,A)-(171,Z),0 TO "6" 207 COPY(172,A)-(173,Z),0 TO "7":COPY(172,A)-(175,Z),0TO"17" 208 COPY(174,A)-(175,Z),0 TO "8" 209 CALL CHDIR ("..") 210 CALL MKDIR ("B"):CALL CHDIR ("B") 211 COPY(176,A)-(177,Z),0 TO "1":COPY(176,A)-(179,Z),0TO"11":COPY(176,A)-(183,Z),0TO"111" 212 COPY(178,A)-(179,Z),0 TO "2" 213 COPY(180,A)-(181,Z),0 TO "3":COPY(180,A)-(183,Z),0TO"13" 214 COPY(182,A)-(183,Z),0 TO "4" 215 COPY(184,A)-(185,Z),0 TO "5":COPY(184,A)-(187,Z),0TO"15":COPY(184,A)-(191,Z),0TO"115" 216 COPY(186,A)-(187,Z),0 TO "6" 217 COPY(188,A)-(189,Z),0 TO "7":COPY(188,A)-(191,Z),0TO"17" 218 COPY(190,A)-(191,Z),0 TO "8" 219 CALL CHDIR ("..") 220 CALL MKDIR ("C"):CALL CHDIR ("C") 221 COPY(192,A)-(193,Z),0 TO "1":COPY(192,A)-(195,Z),0TO"11":COPY(192,A)-(199,Z),0TO"111" 222 COPY(194,A)-(195,Z),0 TO "2" 223 COPY(196,A)-(197,Z),0 TO "3":COPY(196,A)-(199,Z),0TO"13" 224 COPY(198,A)-(199,Z),0 TO "4" 225 COPY(200,A)-(201,Z),0 TO "5":COPY(200,A)-(203,Z),0TO"15":COPY(200,A)-(207,Z),0TO"115" 226 COPY(202,A)-(203,Z),0 TO "6" 227 COPY(204,A)-(205,Z),0 TO "7":COPY(204,A)-(207,Z),0TO"17" 228 COPY(206,A)-(207,Z),0 TO "8" 229 CALL CHDIR ("..") 230 CALL MKDIR ("D"):CALL CHDIR ("D") 231 COPY(208,A)-(209,Z),0 TO "1":COPY(208,A)-(211,Z),0TO"11":COPY(208,A)-(215,Z),0TO"111" 232 COPY(210,A)-(211,Z),0 TO "2" 233 COPY(212,A)-(213,Z),0 TO "3":COPY(212,A)-(215,Z),0TO"13" 234 COPY(214,A)-(215,Z),0 TO "4" 235 COPY(216,A)-(217,Z),0 TO "5":COPY(216,A)-(219,Z),0TO"15":COPY(216,A)-(223,Z),0TO"115" 236 COPY(218,A)-(219,Z),0 TO "6" 237 COPY(220,A)-(221,Z),0 TO "7":COPY(220,A)-(223,Z),0TO"17" 238 COPY(222,A)-(223,Z),0 TO "8" 239 CALL CHDIR ("..") 240 CALL MKDIR ("E"):CALL CHDIR ("E") 241 COPY(224,A)-(225,Z),0 TO "1":COPY(224,A)-(227,Z),0TO"11":COPY(224,A)-(231,Z),0TO"111" 242 COPY(226,A)-(227,Z),0 TO "2" 243 COPY(228,A)-(229,Z),0 TO "3":COPY(228,A)-(231,Z),0TO"13" 244 COPY(230,A)-(231,Z),0 TO "4" 245 COPY(232,A)-(233,Z),0 TO "5":COPY(232,A)-(235,Z),0TO"15":COPY(232,A)-(239,Z),0TO"115" 246 COPY(234,A)-(235,Z),0 TO "6" 247 COPY(236,A)-(237,Z),0 TO "7":COPY(236,A)-(239,Z),0TO"17" 248 COPY(238,A)-(239,Z),0 TO "8" 249 CALL CHDIR ("..") 250 CALL MKDIR ("F"):CALL CHDIR ("F") 251 COPY(240,A)-(241,Z),0 TO "1":COPY(240,A)-(243,Z),0TO"11":COPY(240,A)-(247,Z),0TO"111" 252 COPY(242,A)-(243,Z),0 TO "2" 253 COPY(244,A)-(245,Z),0 TO "3":COPY(244,A)-(247,Z),0TO"13" 254 COPY(246,A)-(247,Z),0 TO "4" 255 COPY(248,A)-(249,Z),0 TO "5":COPY(248,A)-(251,Z),0TO"15":COPY(248,A)-(255,Z),0TO"115" 256 COPY(250,A)-(251,Z),0 TO "6" 257 COPY(252,A)-(253,Z),0 TO "7":COPY(252,A)-(255,Z),0TO"17" 258 COPY(254,A)-(255,Z),0 TO "8" 259 CALL CHDIR ("..") 300 CALL CHDIR (".."):CALL CHDIR ("..")
Petite précision concernant la vidéo ci dessous:
Le Scrolling ci dessous nécessite plusieurs milliers de bribes.
J'ai utilisé un disque dur virtuel pour placer ces milliers de fichiers structurés et rangés selon le générateur.
Nb: L'idéal est d'utiliser un disque dur qui vient d'être formaté ou encore de placer les fichiers sur une ROM pour obtenir un résulta encore plus rapide je pense

Pour le moment, j'ai utilisé un Turbo-R pour visualiser le résulta en image

https://youtu.be/4Ow8NzydFKc
@ Suivre

Edit: comment mettre un clavier (complet) européen sur un turbo-R svp? Edité par igal Le 29/11/2015 à 19h36



Salut turboseb 
Les scroll horizontaux ne nécessitent pas d'écrire sur les zones réservées.
Je vais me pencher sur la création des Sprites.
J'ai pensé à une approche double à savoir:
1)lorsque le scroll est en marche, le hero et ennemis sont des vrais Sprites.
2) lorsque le scroll est arrêté, le hero et ennemis sont des faux sprite "COPY".
Le vdp étant soulagé de ne pas générer le Scroll, il resterait plus de ressources pour déplacer des personnages en copy.
Pour le moment, je dois trouver la méthode pour le scroll en arrière puis l'accélération du scroll.
Pour le moteur de collision et pesanteur j'utiliserai mon petit moteur de Sprites.
Pour les copy du hero/ennemis, j'ai aussi ce qu'il faut je pense.
Me faut juste du temps

Les scroll horizontaux ne nécessitent pas d'écrire sur les zones réservées.
Je vais me pencher sur la création des Sprites.
J'ai pensé à une approche double à savoir:
1)lorsque le scroll est en marche, le hero et ennemis sont des vrais Sprites.
2) lorsque le scroll est arrêté, le hero et ennemis sont des faux sprite "COPY".
Le vdp étant soulagé de ne pas générer le Scroll, il resterait plus de ressources pour déplacer des personnages en copy.
Pour le moment, je dois trouver la méthode pour le scroll en arrière puis l'accélération du scroll.
Pour le moteur de collision et pesanteur j'utiliserai mon petit moteur de Sprites.
Pour les copy du hero/ennemis, j'ai aussi ce qu'il faut je pense.
Me faut juste du temps

Beau travail, igal.
On peut dire que tu es persévérant !
Je suis convaincu que non.
C'est ce que je dit à igal depuis le début.
Mais igal étant ce qu'il est, cela fait longtemps que j'ai compris qu'il faut qu'il le constate par lui même
On peut dire que tu es persévérant !

TurboSEB :
mais.... restera t-il des ressources système pour l'anime des personnages?
Je suis convaincu que non.
C'est ce que je dit à igal depuis le début.
Mais igal étant ce qu'il est, cela fait longtemps que j'ai compris qu'il faut qu'il le constate par lui même

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)

Metalion :
Je suis convaincu que non.
C'est ce que je dit à igal depuis le début.
Mais igal étant ce qu'il est, cela fait longtemps que j'ai compris qu'il faut qu'il le constate par lui même
TurboSEB :
mais.... restera t-il des ressources système pour l'anime des personnages?
Je suis convaincu que non.
C'est ce que je dit à igal depuis le début.
Mais igal étant ce qu'il est, cela fait longtemps que j'ai compris qu'il faut qu'il le constate par lui même

L'expérience personnelle vaut 10 fois celle rapportée par d'autres...

... et puis... on est pas à l'abri non plus d'un coup de génie ! Edité par ericb59 Le 01/12/2015 à 09h31

Salut à tous.
J'ai commencé à modifier le moteur pour les déplacement vers la gauche mais je suis confronté à un problème:
Cette formule simple fonctionne pour faire défiler les décors de droite à gauche par PAS de 8 Pixels:
VDP(27)=VDP(27)+1AND255
Tandis que cette formule fait défiler les décors de Gauche vers la Droite par PAS de 8 Pixels:
VDP(27)=VDP(27)+255AND255
Voici deux formules qui me permettent de dérouler le SCROLL de Droite à Gauche.
VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+4
Cette formule permet de faire dérouler avec fluidité les Bribes larges de 4 Pixels.
VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+2
Cette formule permet de faire dérouler avec fluidité les Bribes larges de 2 Pixels.
Comment modifier les deux dernières Formules pour faire un dérouler un SCROLL de Gauche à Droite?
Merci de votre aide
Edité par
igal
Le 04/12/2015 à 18h44
J'ai commencé à modifier le moteur pour les déplacement vers la gauche mais je suis confronté à un problème:
Cette formule simple fonctionne pour faire défiler les décors de droite à gauche par PAS de 8 Pixels:
VDP(27)=VDP(27)+1AND255
Tandis que cette formule fait défiler les décors de Gauche vers la Droite par PAS de 8 Pixels:
VDP(27)=VDP(27)+255AND255
Voici deux formules qui me permettent de dérouler le SCROLL de Droite à Gauche.
VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+4
Cette formule permet de faire dérouler avec fluidité les Bribes larges de 4 Pixels.
VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+2
Cette formule permet de faire dérouler avec fluidité les Bribes larges de 2 Pixels.
Comment modifier les deux dernières Formules pour faire un dérouler un SCROLL de Gauche à Droite?
Merci de votre aide

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
en gros utilise la méthode SET SCROLL N c'est bien plus simple a comprendre
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
en gros utilise la méthode SET SCROLL N c'est bien plus simple a comprendre


Je viens de retrouver une vidéo que j'avais fait avec des Scroll dans tous les sens mais en Screen 5 et non en Screen 10
https://www.youtube.com/watch?v=45ueWHQkbI0
Je viens de faire quelques testes avec la commande SET SCROLL -N et ca le fait parfaitement bien en screen 10
Par contre, je suis quand même intéressé par l'écriture arithmétique.
Par exemple pour pour créer des mouvements "pseudo pseudo aléatoires", je me suis servi des valeurs de VDP(27) et VDP(24) pour incrémenter mes [Variables] servant au mouvement des Ennemiss ennemis
Donc je repose la question:
Sachant que cette formule fait dérouler "sans accoups" une image en SCREEN 10 de 4 pixels vers la gauche:
VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+4
Ou encore celle ci par 2 pixels:
VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+2
Je vais donc trifouiller en espérant trouver les bons paramètres
Edit: @Eric: Je travaille sur MSX2+ virtuel. Le Turbo-R c'est juste pour faire les vidéos
Edité par
igal
Le 05/12/2015 à 13h26

https://www.youtube.com/watch?v=45ueWHQkbI0
Je viens de faire quelques testes avec la commande SET SCROLL -N et ca le fait parfaitement bien en screen 10

Par contre, je suis quand même intéressé par l'écriture arithmétique.
Par exemple pour pour créer des mouvements "pseudo pseudo aléatoires", je me suis servi des valeurs de VDP(27) et VDP(24) pour incrémenter mes [Variables] servant au mouvement des Ennemiss ennemis

Donc je repose la question:
Sachant que cette formule fait dérouler "sans accoups" une image en SCREEN 10 de 4 pixels vers la gauche:
VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+4
Ou encore celle ci par 2 pixels:
VDP(27)=(N+7)/8:VDP(28)=-NAND7:N=N+2
Je vais donc trifouiller en espérant trouver les bons paramètres

Edit: @Eric: Je travaille sur MSX2+ virtuel. Le Turbo-R c'est juste pour faire les vidéos

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