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 16/12/2014 à 19h10

Reprise du message précédent

C'est cool :top

Le but est de partager au maximum donc...Quelque soit le nom, le tout est que cela soit exploité au mieux sur nos machines chéries :kiss


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

Touriste

Rang

Avatar

Inscrit le : 14/10/2012 à 23h04

Messages: 25

Le 11/02/2015 à 15h07
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
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 11/02/2015 à 19h29
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 :fou


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

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1487

Le 11/02/2015 à 20h07
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.


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)
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 12/02/2015 à 07h42
Ok :)

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

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


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 29/11/2015 à 19h36
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:
Code 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:
Code 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 :top
Pour le moment, j'ai utilisé un Turbo-R pour visualiser le résulta en image :kiss


https://youtu.be/4Ow8NzydFKc

@ Suivre :tea

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


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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 30/11/2015 à 20h43
Beau travail...
Après, faudrait quand même optimiser ton code... Mais ça à le mérite d'être très clair du coup !


banniere-ericb59e
Site web    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5794

Le 30/11/2015 à 20h59
C'est super :top, bien aboutit, mais.... restera t-il des ressources système pour l'anime des personnages?



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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5794

Le 30/11/2015 à 21h10
A voir si une version plus rapide en langage machine est faisable?
Par contre pour un system multi machine en superimpose :D:siffle Wouaw ^^



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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 30/11/2015 à 21h18
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 :)


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

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1487

Le 01/12/2015 à 09h02
Beau travail, igal.

On peut dire que tu es persévérant ! :top



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


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 01/12/2015 à 09h31
Metalion :


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




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


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 04/12/2015 à 18h44
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 :top Edité par igal Le 04/12/2015 à 18h44


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

Le 04/12/2015 à 19h09
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 ;)


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 05/12/2015 à 09h08
Jipe à raison, si tu travailles avec le Turbo-R tu as tout intérêt à utiliser la commande "Set Scroll" ....


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 05/12/2015 à 11h58
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 :top

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

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


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie