MSX Village forum

La Place des Développeurs [EN COURS] un seul chargement et deux destinations. Comment charger une fois pour deux emplacements.

igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 14/11/2015 à 11h50

Reprise du message précédent

GDX :
La gestion de la RAM est un peu différente de ce que je ne souvenais alors.



Quoi qu'il en soit, j'ai trouvé une autre solution on ne peut plus simple. L'astuce est de mettre en mode entrelacé pour pouvoir sauvegarder les 2 pages en même temps.



Programme pour sauvegader les images :

Code TEXT :
10 SCREEN5
20 BLOAD"page0.sc5",S
30 SETPAGE1,1
40 BLOAD"page1.sc5",S
50 SETPAGE0,0
60 SCREEN,3 ' Interlaced mode
70 BSAVE"page0&1.sc5",0,&HEA00,S




Programme pour charger les images :

Code TEXT :
10 SCREEN5,3 ' Interlaced mode
20 BLOAD"page0&1.sc5",S
30 SCREEN,0 ' no interlaced
40 IF NOT STRIG(0) THEN40 ' Press
50 IF STRIG(0) THEN50 ' Space Key to continue
60 SETPAGE1
70 IF NOT STRIG(0) THEN70 ' Press Space Key to quit




Désolé igal pour cette méthode si simple. Il n'y a rien de tordu. :lol



:jesors




@GDX: J'essais d'appliquer ton idée à mon générateur de bribes.

Pour cela, voici un extrait de ce que je voudrais faire:





Voici ce que je projette de faire:

Code TEXT :
 
10      'SAVE"GDX0-1.asc",A
20 'generateur de bribes d'images 128 X 2 entrelacé pages Zero et Un.
22'
30 ' Mode Graphique utilisé
32 VDP(10)=0: SCREEN 5,3
70 'Charger image ZERO [212X256] depuis la ligne Zero vers Zero page Zero
71 SETPAGE 0,0: CLS
72 BLOAD"00000000.SC5",S: COLOR=RESTORE
73 SETPAGE 1,1: CLS
74 BLOAD"00000000.SC5",S: COLOR=RESTORE
75 SETPAGE 0,0
76 'Creer et entrer dans le repertoire I-1 [Image Un]
78 CALL MKDIR ("I-1"):CALL CHDIR ("I-1")
80 '
 
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"):BSAVE"0",128*0,128*2-1,S
101 BSAVE"1",128*2,128*4-1,S
102 BSAVE"2",128*4,128*6-1,S
103 BSAVE"3",128*6,128*8-1,S
104 BSAVE"4",128*8,128*10-1,S
105 BSAVE"5",128*10,128*12-1,S
106 BSAVE"6",128*12,128*14-1,S
107 BSAVE"7",128*14,128*16-1,S:CALL CHDIR ("..")
 




J'ai converti la valeur hexadécimale (que tu as placé après BSAVE) en valeur décimale pour voir à quoi cela correspond:

Code TEXT :
70 BSAVE"page0&1.sc5",0,[b]&HEA00[/b],S


Pour obtenir ceci:

Code TEXT :
70 BSAVE"page0&1.sc5",0,[b]59904[/b],S




De mon coté, je sais que:

256x212 (lignes visibles à travers la fenêtre SCREEN 5 du VDP) => 54272 Pixels

256x44 (lignes cachées de la fenêtre SCREEN 5 du VDP)=> 11 264 Pixels

54272(pixels vus)+11264(pixels cachés)=>65536



Si je soustrait 59904 à 65536, j'obtiens 5632.

Si je divise ce reste de 5632 par 256, j'obtiens 22.

Cela voudrait dire que ta formule indique au MSX de sauver les pages 0 et 1 (SCREEN x,3) du SCREEN 5 par BSAVE sur une surface couvrant 256x212 + 256x22 => 256x234.



Ma question est la suivante:

Est ce que tu as laissé volontairement les 22 dernières lignes de 256 Pixels de la zone non affichés (des pages 0 et 1) par le VDP pour ne pas "empiéter sur les zone réservées Sprites, Color etc" auquel cas, il suffirait que je modifie le moteur d'affichage pour travailler sur les pages 2 et 3 du VDP :D



Ou alors on a encore un autre soucis qui voudrait qu'en mode "entrelacé" on ne peut pas sauver plus que 2 pages de 256 moins 22 lignes fois 2 pages pour d'autres raisons Msxiennes :fou :fou



Merci de ton aide ;) Edité par igal Le 14/11/2015 à 11h53


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 16/11/2015 à 16h23
Sauf erreur de ma part, tu n'es limité que par les valeurs maximum que peut accepter la commande BSAVE"x",début,fin,S : début et fin sont compris entre 0 et 65535. Donc, tu peux sauvegarder 2 pages complètes en SCREEN 5.


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 16/11/2015 à 17h09
Merci Metalion j'essais de bosser dessus des que je peux.

Comme toujours, je suis optimiste et je pense que la solution rapportée par Gdx aussi simple qu'elle soit va faire des merveilles :)


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 19/11/2015 à 11h41
Voici ce que j'ai essayé sans succès :(

Code TEXT :
 
10      'SAVE"GDX0-1.asc",A
20 'generateur de bribes d'images 128 X 2 simplifié version 2.0
22'
30 ' Mode Graphique utilisé
32 VDP(10)=0: SCREEN 5
70 'Charger image ZERO [212X256] depuis la ligne Zero vers Zero page Zero
71 SETPAGE 0,0: CLS
72 BLOAD"00000000.SC5",S: COLOR=RESTORE
73 SETPAGE 1,1: CLS
74 BLOAD"00000000.SC5",S: COLOR=RESTORE
75 SETPAGE 0,0:SCREEN,3
76 'Creer et entrer dans le repertoire G-1 [Image Un]
78 CALL MKDIR ("G-1"):CALL CHDIR ("G-1")
80 '
 
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"):BSAVE"1",128*0,128*2-1,S
101 BSAVE"2",128*2,128*4-1,S
102 BSAVE"3",128*4,128*6-1,S
103 BSAVE"4",128*6,128*8-1,S
104 BSAVE"5",128*8,128*10-1,S
105 BSAVE"6",128*10,128*12-1,S
106 BSAVE"7",128*12,128*14-1,S
107 BSAVE"8",128*14,128*16-1,S:CALL CHDIR ("..")
 
108 CALL MKDIR ("1"):CALL CHDIR ("1"):BSAVE"1",128*16,128*18-1,S
109 BSAVE"2",128*18,128*20-1,S
110 BSAVE"3",128*20,128*22-1,S
111 BSAVE"4",128*22,128*24-1,S
112 BSAVE"5",128*24,128*26-1,S
113 BSAVE"6",128*26,128*28-1,S
114 BSAVE"7",128*28,128*30-1,S
115 BSAVE"8",128*30,128*32-1,S:CALL CHDIR ("..")
 
116 CALL MKDIR ("2"):CALL CHDIR ("2"):BSAVE"1",128*32,128*34-1,S
117 BSAVE"2",128*34,128*36-1,S
118 BSAVE"3",128*36,128*38-1,S
119 BSAVE"4",128*38,128*40-1,S
120 BSAVE"5",128*40,128*42-1,S
121 BSAVE"6",128*42,128*44-1,S
122 BSAVE"7",128*44,128*46-1,S
123 BSAVE"8",128*46,128*48-1,S:CALL CHDIR ("..")
 
124 CALL MKDIR ("3"):CALL CHDIR ("3"): BSAVE"1",128*48,128*50-1,S
125 BSAVE"2",128*50,128*52-1,S
126 BSAVE"3",128*52,128*54-1,S
127 BSAVE"4",128*54,128*56-1,S
128 BSAVE"5",128*56,128*58-1,S
129 BSAVE"6",128*58,128*60-1,S
130 BSAVE"7",128*60,128*62-1,S
131 BSAVE"8",128*62,128*64-1,S:CALL CHDIR ("..")
 
132 CALL MKDIR ("4"):CALL CHDIR ("4"): BSAVE"1",128*64,128*66-1,S
133 BSAVE"2",128*66,128*68-1,S
134 BSAVE"3",128*68,128*70-1,S
135 BSAVE"4",128*70,128*72-1,S
136 BSAVE"5",128*72,128*74-1,S
137 BSAVE"6",128*74,128*76-1,S
138 BSAVE"7",128*76,128*78-1,S
139 BSAVE"8",128*78,128*80-1,S:CALL CHDIR ("..")
 
140 CALL MKDIR ("5"):CALL CHDIR ("5"): BSAVE"1",128*80,128*82-1,S
141 BSAVE"2",128*82,128*84-1,S
142 BSAVE"3",128*84,128*86-1,S
143 BSAVE"4",128*86,128*88-1,S
144 BSAVE"5",128*88,128*90-1,S
145 BSAVE"6",128*90,128*92-1,S
146 BSAVE"7",128*92,128*94-1,S
147 BSAVE"8",128*94,128*96-1,S:CALL CHDIR ("..")
 
148 CALL MKDIR ("6"):CALL CHDIR ("6"): BSAVE"1",128*96,128*98-1,S
149 BSAVE"2",128*98,128*100-1,S
150 BSAVE"3",128*100,128*102-1,S
151 BSAVE"4",128*102,128*104-1,S
152 BSAVE"5",128*104,128*106-1,S
153 BSAVE"6",128*106,128*108-1,S
154 BSAVE"7",128*108,128*110-1,S
155 BSAVE"8",128*110,128*112-1,S:CALL CHDIR ("..")
 
156 CALL MKDIR ("7"):CALL CHDIR ("7"): BSAVE"1",128*112,128*114-1,S
157 BSAVE"2",128*114,128*116-1,S
158 BSAVE"3",128*116,128*118-1,S
159 BSAVE"4",128*118,128*120-1,S
160 BSAVE"5",128*120,128*122-1,S
161 BSAVE"6",128*122,128*124-1,S
162 BSAVE"7",128*124,128*126-1,S
163 BSAVE"8",128*126,128*128-1,S:CALL CHDIR ("..")
 
164 CALL MKDIR ("8"):CALL CHDIR ("8"): BSAVE"1",128*128,128*130-1,S
165 BSAVE"2",128*130,128*132-1,S
166 BSAVE"3",128*132,128*134-1,S
167 BSAVE"4",128*134,128*136-1,S
168 BSAVE"5",128*136,128*138-1,S
169 BSAVE"6",128*138,128*140-1,S
170 BSAVE"7",128*140,128*142-1,S
171 BSAVE"8",128*142,128*144-1,S:CALL CHDIR ("..")
 
172 CALL MKDIR ("9"):CALL CHDIR ("9"): BSAVE"1",128*144,128*146-1,S
173 BSAVE"2",128*146,128*148-1,S
174 BSAVE"3",128*148,128*150-1,S
175 BSAVE"4",128*150,128*152-1,S
176 BSAVE"5",128*152,128*154-1,S
177 BSAVE"6",128*154,128*156-1,S
178 BSAVE"7",128*156,128*158-1,S
179 BSAVE"8",128*158,128*160-1,S:CALL CHDIR ("..")
 
180 CALL MKDIR ("A"):CALL CHDIR ("A"): BSAVE"1",128*160,128*162-1,S
181 BSAVE"2",128*162,128*164-1,S
182 BSAVE"3",128*164,128*166-1,S
183 BSAVE"4",128*166,128*168-1,S
184 BSAVE"5",128*168,128*170-1,S
185 BSAVE"6",128*170,128*172-1,S
186 BSAVE"7",128*172,128*174-1,S
187 BSAVE"8",128*174,128*176-1,S:CALL CHDIR ("..")
 
188 CALL MKDIR ("B"):CALL CHDIR ("B"): BSAVE"1",128*176,128*178-1,S
189 BSAVE"2",128*178,128*180-1,S
190 BSAVE"3",128*180,128*182-1,S
191 BSAVE"4",128*182,128*184-1,S
192 BSAVE"5",128*184,128*186-1,S
193 BSAVE"6",128*186,128*188-1,S
194 BSAVE"7",128*188,128*190-1,S
195 BSAVE"8",128*190,128*192-1,S:CALL CHDIR ("..")
 
196 CALL MKDIR ("C"):CALL CHDIR ("C"): BSAVE"1",128*192,128*194-1,S
197 BSAVE"2",128*194,128*196-1,S
198 BSAVE"3",128*196,128*198-1,S
199 BSAVE"4",128*198,128*200-1,S
200 BSAVE"5",128*200,128*202-1,S
201 BSAVE"6",128*202,128*204-1,S
202 BSAVE"7",128*204,128*206-1,S
203 BSAVE"8",128*206,128*208-1,S:CALL CHDIR ("..")
 
204 CALL MKDIR ("D"):CALL CHDIR ("D"): BSAVE"1",128*208,128*210-1,S
205 BSAVE"2",128*210,128*212-1,S:CALL CHDIR ("..")
 
1000 'Revenir à la racine du disque
1002 CALL CHDIR ("..")
1004'
1070 'Charger image UN [44X256] depuis la ligne Zero vers Zero + 27136 bytes de décalage
1071 SCREEN,0:SETPAGE 0,0: CLS
1072 BLOAD"00000001.SC5",S,0+27136:'COLOR=RESTORE
1073 SETPAGE 1,1: CLS
1074 BLOAD"00000001.SC5",S,0+27136:'COLOR=RESTORE
1075 SETPAGE 0,0:SCREEN,3
1076 'Entrer dans le repertoire G-1 [Image Un]
1078 CALL CHDIR ("G-1")
1080 '
 
1090 'Creer repertoires de D a F et y générer 7 bribes hautes de 2 lignes.
1092 'Sauver les bribes lignes Zero vers Zero + 27136 bytes de décalage.
 
1206 CALL CHDIR ("D"): BSAVE"3",128*0+27136,128*2-1+27136,S
1207 BSAVE"4",128*2+27136,128*4-1+27136,S
1208 BSAVE"5",128*4+27136,128*6-1+27136,S
1209 BSAVE"6",128*6+27136,128*8-1+27136,S
1210 BSAVE"7",128*8+27136,128*10-1+27136,S
1211 BSAVE"8",128*10+27136,128*12-1+27136,S:CALL CHDIR ("..")
 
1212 CALL MKDIR ("E"):CALL CHDIR ("E"): BSAVE"1",128*12+27136,128*14-1+27136,S
1213 BSAVE"2",128*14+27136,128*16-1+27136,S
1214 BSAVE"3",128*16+27136,128*18-1+27136,S
1215 BSAVE"4",128*18+27136,128*20-1+27136,S
1216 BSAVE"5",128*20+27136,128*22-1+27136,S
1217 BSAVE"6",128*22+27136,128*24-1+27136,S
1218 BSAVE"7",128*24+27136,128*26-1+27136,S
1219 BSAVE"8",128*26+27136,128*28-1+27136,S:CALL CHDIR ("..")
 
1220 CALL MKDIR ("F"):CALL CHDIR ("F"): BSAVE"1",128*28+27136,128*30-1+27136,S
1221 BSAVE"2",128*30+27136,128*32-1+27136,S
1222 BSAVE"3",128*32+27136,128*34-1+27136,S
1223 BSAVE"4",128*34+27136,128*36-1+27136,S
1224 BSAVE"5",128*36+27136,128*38-1+27136,S
1225 BSAVE"6",128*38+27136,128*40-1+27136,S
1226 BSAVE"7",128*40+27136,128*42-1+27136,S
1227 BSAVE"8",128*42+27136,128*44-1+27136,S:CALL CHDIR ("..")
 
1264 'Revenir a la racine
1265 CALL CHDIR("..")
 


En définitive, seuls la Page ZERO contient des données mais la Page 1 qui devrait "parallèlement" se remplir reste vide!

Pour info, les Bribes générés avec la méthode de GDX en entrelacé contiennent le même nombre d'octets que les brides que je générai sans le mode entrelacé.
Soit 263 octets dans les deux cas!
Logiquement, si l'on double le nombre de données contenues dans la bribes pour afficher sur deux pages, on devrait s'attendre à avoir au moins deux fois plus de données :hum

Si vous avez une idée a soumettre c'est volontiers :gne


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 19/11/2015 à 14h51
igal,

La taille de ce que tu sauvegardes avec BSAVE est déterminée par les paramètres que tu donnes à la commande. La commande "BSAVE"1",128*160,128*162-1,S", par exemple, sauvera toujours la même portion de VRAM (et donc le même nombre d'octets), que l'écran soit entrelacé ou pas.

Mais de toutes façons, la méthode de GDX (et ça je l'avais déjà dit) n'est valable que pour un écran complet. Elle ne fonctionnera jamais pour quelques lignes d'écran.


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 16/01/2016 à 10h48
z80 :
Implique le recours à l'assembleur... Pour "maquette" reste en BASIC.




Je viens de comprendre ta "mini" vanne. Une vanne "maquette" en somme :lol


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