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
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 :
Programme pour charger les images :
Désolé igal pour cette méthode si simple. Il n'y a rien de tordu.
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.
@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
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
Merci de ton aide Edité par igal Le 14/11/2015 à 11h53
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
igal
Membre non connecté
Conseiller Municipal
Voici ce que j'ai essayé sans succès
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
Si vous avez une idée a soumettre c'est volontiers
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
Si vous avez une idée a soumettre c'est volontiers
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.
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
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie