La Place des Développeurs [EN COURS] un seul chargement et deux destinations. Comment charger une fois pour deux emplacements.
![Avatar](/images/avatars/rollpig.gif)
Reprise du message précédent
@GDX, merci, je comprend mieu![:top](/images/smileys/top.gif)
En screen 5, il me semble que l'on peut deja sauvegarder 2 pages en une en mettant les bonnes adresses dans le Bsave
(désolé si je dis des bêtises, j'essais encore de piger ce que veut le tortueux cerveau d'Igal
![:lol](/images/smileys/rire.gif)
![](/upload/mega_msx_news.gif)
MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
![](/upload/th_oh.gif)
![](/upload/th_oh.gif)
![](/upload/th_oh.gif)
![](/upload/th_oh.gif)
![](/upload/th_oh.gif)
![Avatar](/images/avatars/avatar_09e47.png)
@turboseb: l'idée du copy c'est pour les préparatifs.
@jipe: j'avais vérifié à plusieurs reprises mais pense pas me tromper.
Mes bribes telles que générées et chargées une seule fois sous screen 5 s'affichent deux fois en screen 7 telles que tu le vois à l'écran.
Regarde de près et tu verras que chacune des deux images en screen7 ne contient que la moitié des données formant l'image native en screen 5.
La même quantité de données contenues dans la page zéro plus L1 quantité de données couvrant les 44 autres lignes de la zone non visible de la même page zéro sous screen 5 autrement dit:
256 lignes de 256 pixels d'un screen 5 couvrent la même superficie qu'une demie page screen 7 telle que:
512 pixels horizontalement sur 256 pixels verticalement.
Ce qui en définitive tient la route puisqu'il faut 2 pages screen7 pour remplir la vram et 4 pages screen 5 pour remplir la même vram
@jipe: j'avais vérifié à plusieurs reprises mais pense pas me tromper.
Mes bribes telles que générées et chargées une seule fois sous screen 5 s'affichent deux fois en screen 7 telles que tu le vois à l'écran.
Regarde de près et tu verras que chacune des deux images en screen7 ne contient que la moitié des données formant l'image native en screen 5.
La même quantité de données contenues dans la page zéro plus L1 quantité de données couvrant les 44 autres lignes de la zone non visible de la même page zéro sous screen 5 autrement dit:
256 lignes de 256 pixels d'un screen 5 couvrent la même superficie qu'une demie page screen 7 telle que:
512 pixels horizontalement sur 256 pixels verticalement.
Ce qui en définitive tient la route puisqu'il faut 2 pages screen7 pour remplir la vram et 4 pages screen 5 pour remplir la même vram
![:)](/images/smileys/sourire.gif)
![Avatar](/images/avatars/rollpig.gif)
![Avatar](/images/avatars/avatar_09e47.png)
@TurboSeb: à en croire ce que nous expose Jipe, le codage se fait de la même facon entre le SCREEN 5 et SCREEN 7:
en screen 5 un octet = 2 pixels (1111 2222) les 4 bits codent la couleur
en screen 6 un octet = 4 pixels (11 22 33 44) les 2 bits codent la couleur
en screen 7 un octet = 2 pixels (1111 2222) les 4 bits codent la couleur
en screen 8 un octet = 1 pixel (VVV RRR BB) la palette est de 256 couleurs (le bleu est codé sur 2 bits)
Je pense que le VDP applique une sorte de "Matrice" qui induit ce résulta.
Je pense que c'est le même genre d'incidence lors de mes expérimentation pour numériser dans tous les SCREEN.
L'image est codée en 256 couleurs 8 Bits mais selon la "Matrice" (SCREEN) utilisée, l'image tiendra dans une "superficie" plus ou moins grande.
Le sujet est par là => http://www.msxvillage.fr/forum/topic.php?id=1667&pt=3
(Les photos ont été killées par imageshack.com
)
@Jipe: Le résulta qui est sur la photo que j'ai posté plus haut est bien pour un seul chargement.
D'ailleurs, je viens de lancer un autre petit moteur qui pratique 2 BLOAD de la façon suivante:
La série des [BLOAD"IDENTIQUE",S: BLOAD "IDENTIQUE",S,0+32768!] affiche deux fois la même image native en SCREEN5.
La première s'affiche à la moitié de l'écran du SCREEN7 et l'autre s'affiche à l'extrémité du SCREEN7.
Ce qui correspond aux page 0 et 1 du SCREEN5.
Tout cela tend à conforter l'idée que l'on peut atteindre 2 pages différentes du SCREEN5 simplement en Sauvegardant une image sous SCREEN7.
Forcément, va falloir réfléchir à un procès pour cotourner tous les problèmes techniques![:fou](/images/smileys/fele.gif)
Edité par
igal
Le 07/11/2015 à 19h06
en screen 5 un octet = 2 pixels (1111 2222) les 4 bits codent la couleur
en screen 6 un octet = 4 pixels (11 22 33 44) les 2 bits codent la couleur
en screen 7 un octet = 2 pixels (1111 2222) les 4 bits codent la couleur
en screen 8 un octet = 1 pixel (VVV RRR BB) la palette est de 256 couleurs (le bleu est codé sur 2 bits)
Je pense que le VDP applique une sorte de "Matrice" qui induit ce résulta.
Je pense que c'est le même genre d'incidence lors de mes expérimentation pour numériser dans tous les SCREEN.
L'image est codée en 256 couleurs 8 Bits mais selon la "Matrice" (SCREEN) utilisée, l'image tiendra dans une "superficie" plus ou moins grande.
Le sujet est par là => http://www.msxvillage.fr/forum/topic.php?id=1667&pt=3
(Les photos ont été killées par imageshack.com
![:(](/images/smileys/malheureux.gif)
@Jipe: Le résulta qui est sur la photo que j'ai posté plus haut est bien pour un seul chargement.
D'ailleurs, je viens de lancer un autre petit moteur qui pratique 2 BLOAD de la façon suivante:
Code SQL :
0 'Sauvegarde Travail en cours***** 10 'save"SPRITE47.asc",a 12 SCREEN7:SET PAGE 0,0:CLS:SET PAGE 1,1:CLS 15 'Mode ecran********************* 20 SCREEN7,2:COLOR1,1,1:'VDP(24)=VDP(24)-22AND255 21 'VDP(9)=VDP(9)OR2:'VDP(12)=&B0010000000:'desactive les sprites 22 SET PAGE 0,0':BLOAD"HEROS.SC5",S:COLOR=RESTORE 24 'SET PAGE 0,0:BLOAD"alpha.sc5",S:COLOR=RESTORE 25 ' 27 'Variables Sprites Mobiles****** 28 ' 30 X=1+96+8:Y=0+7:'Position initiale du HERO 31 'XB=32+1:YB=127:' Position initiale ASCENCEUR 32 VM=16:VC=8:VS=16:VH=8:'Vitesses Monte, Chute, Saute, Horizontale 33 SH=1:SD=1:SG=1:'Empeche les sauts. 34 P=1:UP=0:' Active la pesanteur 35 RI=0:LE=0:' Desactive le passe muraille Droite et Gauche 36 'AS=0:Adherence a l Ascenceur 37 SC=2:'Vitesse de scrolling 40 'DATAS des Patterns des Sprites*************** 42 GOTO 1250 44 'Variables des Pattern des sprites************* 46 A=0:B=1:C=2:D=3:E=4 48 'VARIABLES Latitudes et Longitudes des sprites fixes 49 ' 50 A1=24:A2=56:A3=88:A4=120:A5=152:A6=184:A7=216 51 AA=183:AB=183:AC=183:AD=183:AE=183:AF=183:AG=183 52 B1=24:B2=56:B3=73:B4=120:B5=137:B6=200:B7=216 53 BA=95:BB=95:BC=95:BD=63:BE=63:BF=111:BG=111 54 C1=24:C2=41:C3=57:C4=136:C5=168:C6=184:C7=216 55 CA=15:CB=15:CC=15:CD=-1:CE=-1:CF=31:CG=31 56 D1=24:D2=56:D3=88:D4=120:D5=152:D6=184:D7=216 57 DA=15:DB=15:DC=15:DD=15:DE=15:DF=16:DG=15 65 'Projection des Sprites Fixes 66 ' 70 PUTSPRITE1,(A1,AA),1,A:PUTSPRITE2,(A2,AB),1,A:PUTSPRITE3,(A3,AC),1,A:PUTSPRITE4,(A4,AD),1,A:PUTSPRITE5,(A5,AE),1,A:PUTSPRITE6,(A6,AF),1,A:PUTSPRITE7,(A7,AG),1,A 75 PUTSPRITE8,(B1,BA),1,A:PUTSPRITE9,(B2,BB),1,A:PUTSPRITE10,(B3,BC),15,C:PUTSPRITE11,(B4,BD),15,D:PUTSPRITE12,(B5,BE),15,C:PUTSPRITE13,(B6,BF),15,D:PUTSPRITE14,(B7,BG),1,A 80 PUTSPRITE15,(C1,CA),15,D:PUTSPRITE16,(C2,CB),1,A:PUTSPRITE17,(C3,CC),15,C:PUTSPRITE18,(C4,CD),15,D:PUTSPRITE19,(C5,CE),15,C:PUTSPRITE20,(C6,CF),15,D:PUTSPRITE21,(C7,CG),1,A 85 'PUTSPRITE22,(D1,DA),1,A:PUTSPRITE23,(D2,DB),1,A:PUTSPRITE24,(D3,DC),1,A:PUTSPRITE25,(D4,DD),1,A:PUTSPRITE26,(D5,DE),1,A:PUTSPRITE27,(D6,DF),1,A:PUTSPRITE28,(D7,DG),1,A 90 ' 92 ' Choix de la première page à afficher 93 ' 94 J=0:' J est le premier répertoire affiché 95 ' 100 IF J=0THEN CALL CHDIR ("I-1"):GOTO 200 102 IF J=1THEN CALL CHDIR ("I-2"):GOTO 200 104 IF J=2THEN CALL CHDIR ("I-3"):GOTO 200 106 IF J=3THEN CALL CHDIR ("I-4"):GOTO 200 200 CALL CHDIR ("D"):VB=D 202 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 204 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 206 CALL CHDIR ("..") 300 CALL CHDIR ("C") 302 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 304 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 306 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 308 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 310 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 312 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 314 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 316 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 318 CALL CHDIR ("..") 320 CALL CHDIR ("B") 322 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 324 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 326 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 328 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 330 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 332 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 334 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 336 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 338 CALL CHDIR ("..") 340 CALL CHDIR ("A") 342 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 344 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 346 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 348 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 350 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 352 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 354 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 356 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 358 CALL CHDIR ("..") 360 CALL CHDIR ("9") 362 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 364 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 366 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 368 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 370 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 372 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 374 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 376 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 378 CALL CHDIR ("..") 380 CALL CHDIR ("8") 382 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 384 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 386 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 388 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 390 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 392 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 394 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 396 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 398 CALL CHDIR ("..") 400 CALL CHDIR ("7") 402 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 404 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 406 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 408 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 410 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 412 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 414 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 416 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 418 CALL CHDIR ("..") 420 CALL CHDIR ("6") 422 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 424 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 426 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 428 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 430 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 432 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 434 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 436 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 438 CALL CHDIR ("..") 440 CALL CHDIR ("5") 442 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 444 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 446 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 448 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 450 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 452 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 454 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 456 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 458 CALL CHDIR ("..") 460 CALL CHDIR ("4") 462 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 464 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 466 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 468 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 470 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 472 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 474 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 476 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 478 CALL CHDIR ("..") 480 CALL CHDIR ("3") 482 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 484 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 486 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 488 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 490 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 492 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 494 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 496 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 498 CALL CHDIR ("..") 500 CALL CHDIR ("2") 502 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 504 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 506 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 508 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 510 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 512 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 514 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 516 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 518 CALL CHDIR ("..") 520 CALL CHDIR ("1") 522 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 524 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 526 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 528 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 530 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 532 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 534 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 536 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 538 CALL CHDIR ("..") 540 CALL CHDIR ("0") 542 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 544 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 546 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 548 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 550 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 552 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 554 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 556 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 558 CALL CHDIR ("..") 559 IFJ=3THENSC=0:GOTO559 560 CALL CHDIR ("F") 562 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 564 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 566 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 568 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 570 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 572 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 574 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 576 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853:'Zone Sprites screen 5 578 CALL CHDIR ("..") 580 CALL CHDIR ("E") 582 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 584 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853:'Zone Sprites screen 5 586 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853:'Zone Sprites screen 5 588 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853:'Zone Sprites screen 5 590 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 592 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 594 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 853 596 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 853 598 CALL CHDIR ("..") 600 CALL CHDIR ("D") 602 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 853 604 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 853 606 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 853 608 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 853 610 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 853 612 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 853 614 CALL CHDIR (".."):CALL CHDIR (".."):J=J+1:GOTO100 838 'Projection des Sprites Mobiles*************** 839 ' 840 'XB=XB+8AND255:'MOTEUR ASCENCEUR 841 'IFAS=1THENX=XB:'ADHERENCE ASCENCEUR 1 843 'PUTSPRITE29,(XB,YB),15,A:'ASCENCEUR 1 845 'IFY>YB-14THENIFY<YBTHENIFX>XB-4THENIFX<XB+8THENAS=1 847 ' 850 'Moteur Principal 852 ' 853 S=STICK(0):ONS+1GOSUB 860,870,880,890,860,860,860,930,940:'Renvoie selon Stick ZERO 854 VDP(24)=VDP(24)-SCAND255:RETURN 855 ' 856 'Gestion des Mouvements 857 ' 858 'STATIQUE 860 PUTSPRITE0,(X,Y),8,D:ONSPRITE GOSUB1000:SPRITEON:'Si colision aller a 1000 861 'IFRI=1THENP=1 862 'IFLE=1THENP=1 863 IFP=1THEN910:'Si pesanteur alors aller a ligne 210 (chute) 864 RETURN 867 ' 868 'SAUT HAUT 870 PUTSPRITE0,(X,Y),8,D:ONSPRITEGOSUB1010:SPRITEON:'Si colision aller a 1010 872 IFSH=5THEN910:'Si Saut boucle x fois alors aller a 210 873 IFUP=1THENY=Y+2:UP=0:AS=0:'Si saut utilise alors recalibrer Y 874 Y=Y-VS:SH=SH+1:P=1:'Saut Haut utilise! Pesanteur active 876 RETURN 877 ' 878 'SAUT DROITE 880 PUTSPRITE0,(X,Y),8,D:ONSPRITEGOSUB1020:SPRITEON:'Si colision aller a 1020 882 IFSD=3THEN910:'Si Saut Droite deja utilise alors aller a 210 883 IFUP=1THENY=Y+2:UP=0:AS=0:'Si saut utilise alors recalibrer Y 884 X=X+VS:Y=Y-VS:SD=SD+1:P=1:'Saut Droite utilise! Pesanteur active 886 RETURN 887 ' 888 'DROITE 890 PUTSPRITE0,(X,Y),8,A:ONSPRITEGOSUB1030:SPRITEON:'Si colision aller a 1030 892 X=X+VH:'Deplacement a droite 893 ' 894 IFP=1THEN910:'Si pesanteur alors aller a 210 (chute) 896 RETURN 897 ' 898 'CHUTE A DROITE 900 PUTSPRITE0,(X,Y),8,D:ONSPRITEGOSUB1040:SPRITEON:'SI COLISION ALLER A 1040 902 X=X+VC:'Deplacement a Droite 903 IFUP=1THENY=Y+2:UP=0:'si saut utilise alors recalibrer Y 904 IFP=1THENY=Y+VC:'Si pesanteur alors chute de VC pixels 906 RETURN 907 ' 908 'CHUTE 910 PUTSPRITE0,(X,Y),8,D:ONSPRITE GOSUB1050:SPRITEON:'Si colision alors 1050 911 IFLE=1THENEL=EL+1:P=1:'Si RI actif alors Pesanteur Actif 912 IFEL=2THENX=X+1:LE=0:EL=0 913 IFRI=1THENRI=0:P=1:'Si RI actif alors Pesanteur Actif 914 IFUP=1THENY=Y+2:UP=0:'Si saut utilise alors recalibrer Y 915 IFP=1THENY=Y+VC:'Si pesanteur alors chute de VC pixels 916 RETURN 917 ' 918 'CHUTE A GAUCHE 920 PUTSPRITE0,(X,Y),8,D:ONSPRITEGOSUB1060:SPRITEON:SI COLISION ALLER A 1060 922 X=X-16:'Deplacement a Gauche 923 IFUP=1THENY=Y+2:UP=0:SI SAUT UTILISE ALORS RECALIBRER Y 924 IFP=1THENY=Y+VC:'Si pesanteur alors chute de VC pixels 926 RETURN 927 ' 928 'GAUCHE 930 PUTSPRITE0,(X,Y),8,B:ONSPRITE GOSUB1070:'SPRITEON:Si colision aller a 1070 932 X=X-VH:'Deplacement a Gauche 933 ' 934 IFP=1THEN910:'Si pesanteur aller a 210 (chute) 936 RETURN 937 ' 938 'SAUT GAUCHE 940 PUTSPRITE0,(X,Y),8,D:ONSPRITEGOSUB1080:SPRITEON:'Si colision aller a 1020 942 IFSG=3THEN910:'Si Saut Gauche deja utilise alors aller a 210 943 IFUP=1THENY=Y+2:UP=0:AS=0:'Si saut utilise alors recalibrer Y 944 X=X-VS:Y=Y-VS:SG=SG+1:P=1:'Saut Gauche utilisé! Pesanteur active 946 RETURN 998 ' 999 'COLISION STATIQUE 1000 P=0:SH=0:SD=0:SG=0 1001 SPRITEOFF 1002 IFRI=1THENP=1 1003 IFLE=1THENP=1 1004 IFUP=0THENY=Y-2:UP=1 1005 RETURN 1008 ' 1009 'COLISION SAUT HAUT 1010 P=0:SH=0:SD=0:SG=0 1011 SPRITEOFF 1013 IFUP=0THENY=Y-2:UP=1 1014 RETURN 1018 ' 1019 'COLISION SAUT DROITE 1020 P=0:SH=0:SD=0:SG=0 1021 SPRITEOFF 1023 IFUP=0THENY=Y-2:UP=1 1024 RETURN 1028 ' 1029 'COLISION DROITE 1030 IFP=1THENRETURN 1031 P=1:SH=0:SD=0:SG=0:RI=1 1032 SPRITEOFF 1033 IFUP=0THENY=Y-2:UP=1 1034 RETURN 1038 ' 1039 'COLISION CHUTE A DROITE 1040 P=0:SH=0:SD=0:SG=0 1041 SPRITEOFF 1043 IFUP=0THENY=Y-2:UP=1 1044 RETURN 1048 ' 1049 'COLISION BAS 1050 P=0:SH=0:SD=0:SG=0 1051 'SPRITEOFF 1053 IFUP=0THENY=Y-2:UP=1 1054 RETURN 1058 ' 1059 'COLISION CHUTE A GAUCHE 1060 P=0:SH=1:SD=0:SG=0 1061 SPRITEOFF 1063 IFUP=0THENY=Y-2:UP=1 1064 RETURN 1068 ' 1069 'COLISION GAUCHE 1070 IFP=1THENRETURN 1071 P=1:SH=0:SD=0:SG=0:LE=1 1072 X=X-16-1:SPRITEOFF 1073 IFUP=0THENY=Y-2:UP=1 1074 RETURN 1078 ' 1079 'COLISION SAUT GAUCHE 1080 P=0:SH=0:SD=0:SG=0 1081 SPRITEOFF 1083 IFUP=0THENY=Y-2:UP=1 1084 RETURN 1088 ' 1200 DESSIN DES SPRITES 1201 ' 1250 FOR I=1TO16:READA$:S$=S$+CHR$(VAL("&B"+LEFT$(A$,8))):NEXTI 1252 ' DESSIN DES SPRITES 1260 RESTORE 1301 1270 FORI=1TO16:READA$:S$=S$+CHR$(VAL("&B"+RIGHT$(A$,8))):NEXTI 1280 SPRITE$(0)=S$ 1290 GOTO 1350 1301 DATA 0000000000000000 1302 DATA 0000000000000000 1303 DATA 0000000000000000 1304 DATA 0000000000000000 1305 DATA 0000000000000000 1306 DATA 0000000000000000 1307 DATA 0000000000000000 1308 DATA 0000000000000000 1309 DATA 1111111111111111 1310 DATA 1000000000000000 1311 DATA 0000000000000000 1312 DATA 0000000000000000 1313 DATA 0000000000000000 1314 DATA 0000000000000000 1315 DATA 0000000000000000 1316 DATA 0000000000000000 1350 FORJB=1TO16:READA$:T$=T$+CHR$(VAL("&B"+LEFT$(A$,8))):NEXTJB 1360 RESTORE 1401 1370 FORJB=1TO16:READA$:T$=T$+CHR$(VAL("&B"+RIGHT$(A$,8))):NEXTJB 1380 SPRITE$(1)=T$ 1390 GOTO 1450 1401 DATA 0000000000000000 1402 DATA 0000000000000000 1403 DATA 0000000000000000 1404 DATA 0000000000000000 1405 DATA 0000000000000000 1406 DATA 0000000000000000 1407 DATA 0000000000000000 1408 DATA 0000000000000000 1409 DATA 1111111111111111 1410 DATA 0000000000000001 1411 DATA 0000000000000000 1412 DATA 0000000000000000 1413 DATA 0000000000000000 1414 DATA 0000000000000000 1415 DATA 0000000000000000 1416 DATA 0000000000000000 1450 FORK=1TO16:READA$:U$=U$+CHR$(VAL("&B"+LEFT$(A$,8))):NEXTK 1460 RESTORE 1501 1470 FORK=1TO16:READA$:U$=U$+CHR$(VAL("&B"+RIGHT$(A$,8))):NEXTK 1480 SPRITE$(2)=U$ 1490 GOTO 1550 1501 DATA 0000000000000000 1502 DATA 0000000000000000 1503 DATA 0000000000000000 1504 DATA 0000000000000000 1505 DATA 0000000000000000 1506 DATA 0000000000000000 1507 DATA 0000000000000000 1508 DATA 0000000010000000 1509 DATA 1111111111111111 1510 DATA 0000000000000000 1511 DATA 0000000000000000 1512 DATA 0000000000000000 1513 DATA 0000000000000000 1514 DATA 0000000000000000 1515 DATA 0000000000000000 1516 DATA 0000000000000000 1550 FORL=1TO16:READA$:V$=V$+CHR$(VAL("&B"+LEFT$(A$,8))):NEXTL 1560 RESTORE 1601 1570 FORL=1TO16:READA$:V$=V$+CHR$(VAL("&B"+RIGHT$(A$,8))):NEXTL 1580 SPRITE$(3)=V$ 1590 GOTO 44 1601 DATA 0000000000000000 1602 DATA 0000000000000000 1603 DATA 0000000000000000 1604 DATA 0000000000000000 1605 DATA 0000000000000000 1606 DATA 0000000000000000 1607 DATA 0000000000000000 1608 DATA 1000000000000000 1609 DATA 1111111111111111 1610 DATA 0000000000000000 1611 DATA 0000000000000000 1612 DATA 0000000000000000 1613 DATA 0000000000000000 1614 DATA 0000000000000000 1615 DATA 0000000000000000 1616 DATA 0000000000000000
La série des [BLOAD"IDENTIQUE",S: BLOAD "IDENTIQUE",S,0+32768!] affiche deux fois la même image native en SCREEN5.
La première s'affiche à la moitié de l'écran du SCREEN7 et l'autre s'affiche à l'extrémité du SCREEN7.
Ce qui correspond aux page 0 et 1 du SCREEN5.
Tout cela tend à conforter l'idée que l'on peut atteindre 2 pages différentes du SCREEN5 simplement en Sauvegardant une image sous SCREEN7.
Forcément, va falloir réfléchir à un procès pour cotourner tous les problèmes techniques
![:fou](/images/smileys/fele.gif)
![](/upload/screen_5_deux_bload_en_screen_7.png)
![Avatar](/images/avatars/avatar_09e47.png)
Voila.
Comme ca l'info est simple et claire![:)](/images/smileys/sourire.gif)
![](/upload/screen_5_to_screen_7_complet.png)
Un dessin est plus simple a comprendre que mes explications un peu tordus
Y a plus qu'a trouver comment faire pour:
1) Créer une image .SC7 qui puisse être chargé par bribes de facon cohérente.
Je pense à un truc du genre:
Pixel 1, Pixel 256+1, Pixel 2, Pixel 256+2, Pixel 3, Pixel 256+3 etc etc...
(Un sorte d'entrelacement vertical lol)
2) Trouver le moyen de charger des petites bribes qui contiennent les données affichables sur les pages 0 et 1 du SCREEN5.
Pour cela, on voit que:
=> Les données de la partie haute de SC7 sont celles de la Page 0 de SC5.
=> Les données de la partie basse de SC7 sont celle de la page 1 de SC5.
Partant de ce constat, il semble évident que les lignes doivent être sauvegardées verticalement autrement dit: COPY (0,0)-(2,255),0 TO "Bribe000.SC7",S
A suivre... Edité par igal Le 08/11/2015 à 09h56
Comme ca l'info est simple et claire
![:)](/images/smileys/sourire.gif)
![](/upload/screen_5_to_screen_7_complet.png)
Un dessin est plus simple a comprendre que mes explications un peu tordus
![:fou](/images/smileys/fele.gif)
Y a plus qu'a trouver comment faire pour:
1) Créer une image .SC7 qui puisse être chargé par bribes de facon cohérente.
Je pense à un truc du genre:
Pixel 1, Pixel 256+1, Pixel 2, Pixel 256+2, Pixel 3, Pixel 256+3 etc etc...
(Un sorte d'entrelacement vertical lol)
2) Trouver le moyen de charger des petites bribes qui contiennent les données affichables sur les pages 0 et 1 du SCREEN5.
Pour cela, on voit que:
=> Les données de la partie haute de SC7 sont celles de la Page 0 de SC5.
=> Les données de la partie basse de SC7 sont celle de la page 1 de SC5.
Partant de ce constat, il semble évident que les lignes doivent être sauvegardées verticalement autrement dit: COPY (0,0)-(2,255),0 TO "Bribe000.SC7",S
A suivre... Edité par igal Le 08/11/2015 à 09h56
l'image dans BlueMSX étant bien en screen 7 ( c'est indiqué dessus )
tu vois bien que tu affiches la totalité d'une image qui fait 512 X 256 pixels ( taille normale d'un screen 7 )
et que tu y vois ce qu'en théorie tu donne dans ta page 512 x 512 pixels
seul le mode entrelacé permet 512 x 512 avec 2 pages en alternance
donc dans ton exemple toute la partie de 256 a 512 est en fait la page 1
tu vois bien que tu affiches la totalité d'une image qui fait 512 X 256 pixels ( taille normale d'un screen 7 )
et que tu y vois ce qu'en théorie tu donne dans ta page 512 x 512 pixels
seul le mode entrelacé permet 512 x 512 avec 2 pages en alternance
donc dans ton exemple toute la partie de 256 a 512 est en fait la page 1
![Avatar](/images/avatars/rollpig.gif)
En résumé, j'ai compris que igal veut créé et sauvegarder une image screen7 64ko (formater en screen5), afin de l'afficher en screen5 page 0 et 1 et cela en chargeant un seul fichier 64ko au lieu de deux 32ko.
Mais le programme de processus de transformation (ce que igal cherche) : copy bribes to page 0 screen7 fait-il partie du programme : boucle de traitement en temps réel , ou bien est-ce un programme annexe permettant le traitement pour au final utilisé le résultat : image.sc7 (coder sc5) dans le programme principal?
Si oui, est-ce que le fait de passer de screen5 a screen7 dans le programme ou la boucle de programme de transformation, n'efface pas la page 0 (page de travail) ? Dans ce cas n'est-ce pas plus judicieux d'utiliser les pages 1 du screen7 et 2/3 du screen5?
Mince j'ai deux neurones qui ont réussi a se connecter pour pondre ca
ca m'arrive pas souvent
, c'est étrange comme sensation
Edité par
TurboSEB
Le 08/11/2015 à 12h22
Mais le programme de processus de transformation (ce que igal cherche) : copy bribes to page 0 screen7 fait-il partie du programme : boucle de traitement en temps réel , ou bien est-ce un programme annexe permettant le traitement pour au final utilisé le résultat : image.sc7 (coder sc5) dans le programme principal?
Si oui, est-ce que le fait de passer de screen5 a screen7 dans le programme ou la boucle de programme de transformation, n'efface pas la page 0 (page de travail) ? Dans ce cas n'est-ce pas plus judicieux d'utiliser les pages 1 du screen7 et 2/3 du screen5?
Mince j'ai deux neurones qui ont réussi a se connecter pour pondre ca
![:D](/images/smileys/heureux.gif)
![:oups](/images/smileys/clap.gif)
![:p](/images/smileys/tirelangue.gif)
![](/upload/mega_msx_news.gif)
MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
![](/upload/th_oh.gif)
![](/upload/th_oh.gif)
![](/upload/th_oh.gif)
![](/upload/th_oh.gif)
![](/upload/th_oh.gif)
![Avatar](/images/avatars/avatar_09e47.png)
@jipe: l'image visible en screen 7 contient 2 images screen 5.
Les deux images du haut (droite et gauche) sont les conséquences des Bribes d'images.sc5 chargées simplement.
Soit 212*256 et 44*256 qui ont pour effet de remplir la moitié du screen 7 Horizontalement.
Je précise encore une fois que: l'image dédoublée horizontalement semble faire 256 pixels de haut et 512 pixels de long!
Un second bload auquel est ajouté la valeur 32768! Génère l'image dédoublée du bas (droite et gauche) occupe aussi une superficie qui semble faire 256 pixels de haut et 512 pixels de long.
@turboseb: toutes ces opérations ont pour but de charger une bribes qui s'affiche sur deux pages screen 5 simultanément.
Si les bribes sont horizontales elles seront chargées par BLOAD.
Si les bribes sont verticales, elles seront chargées par COPY.
@Jipe: je ferai un teste pour afficher la page 1 du screen 7 une fois toutes les bribes affichées et l'on verra bien si elle existe ou pas
Edité par
igal
Le 08/11/2015 à 15h45
Les deux images du haut (droite et gauche) sont les conséquences des Bribes d'images.sc5 chargées simplement.
Soit 212*256 et 44*256 qui ont pour effet de remplir la moitié du screen 7 Horizontalement.
Je précise encore une fois que: l'image dédoublée horizontalement semble faire 256 pixels de haut et 512 pixels de long!
Un second bload auquel est ajouté la valeur 32768! Génère l'image dédoublée du bas (droite et gauche) occupe aussi une superficie qui semble faire 256 pixels de haut et 512 pixels de long.
@turboseb: toutes ces opérations ont pour but de charger une bribes qui s'affiche sur deux pages screen 5 simultanément.
Si les bribes sont horizontales elles seront chargées par BLOAD.
Si les bribes sont verticales, elles seront chargées par COPY.
@Jipe: je ferai un teste pour afficher la page 1 du screen 7 une fois toutes les bribes affichées et l'on verra bien si elle existe ou pas
![:)](/images/smileys/sourire.gif)
en fait la 1ére image de mon test démontre que l'on ne charge qu'un demi écran screen 7 avec une image screen 5
et la suite prouve qu'il faut 2 images screen 5 de 256 x 212 pour remplir une image screen 7 de 512 x 212
je suis d'accord que tu peux préparer un image screen 7 pour charger en screen 5 mais est ce que cela en vaut le coup
je te prépare un autre test pour comprendre comment le VDP marche
et la suite prouve qu'il faut 2 images screen 5 de 256 x 212 pour remplir une image screen 7 de 512 x 212
je suis d'accord que tu peux préparer un image screen 7 pour charger en screen 5 mais est ce que cela en vaut le coup
je te prépare un autre test pour comprendre comment le VDP marche
ceci démontre que l'image SC7 est comme l'image SC5 mais on affiche une ligne sur 2 de 0 a 255 et l'autre ligne de 256 a 511
lignes.dsk
lignes.dsk
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.
Edité par
GDX
Le 09/11/2015 à 08h35
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](/images/smileys/rire.gif)
![:jesors](/images/smileys/je_sors.gif)
Bravo à GDX pour cette solution effectivement simple.
Cependant, sauf erreur de ma part, ce que cherchait igal, c'était une méthode "miracle" / "mystérieuse" / "matricée" qui permette de charger en 2 endroits différents un seul fichier, en utilisant moins de ressources qu'en chargeant 2 fois le même fichier. Je pense qu'on a réussi à lui démontrer que cette méthode "miracle" n'existe pas. Je dis bien "je pense", car avec igal, on a beau expliquer, démontrer, ... quand il sort par la porte, il revient par la fenêtre.
![:lol](/images/smileys/rire.gif)
Notez que cela peut être une qualité, car il nous force à remettre en cause constamment nos connaissances sur le standard. Mais parfois, lorsqu'on sait pertinemment que ce qu'il cherche à faire est impossible, cela peut être un peu ... difficile.
Ici, le programme charge une image double pour arriver au résultat, donc en utilisant le même niveau de ressources qu'en chargeant 2 fois le même fichier (à peu de choses près). Cela n'enlève rien à l'originalité de la méthode, mais on est toujours dans des pseudo-réponses à un problème qui n'a (en fait) pas de solution. Edité par Metalion Le 09/11/2015 à 09h16
Cependant, sauf erreur de ma part, ce que cherchait igal, c'était une méthode "miracle" / "mystérieuse" / "matricée" qui permette de charger en 2 endroits différents un seul fichier, en utilisant moins de ressources qu'en chargeant 2 fois le même fichier. Je pense qu'on a réussi à lui démontrer que cette méthode "miracle" n'existe pas. Je dis bien "je pense", car avec igal, on a beau expliquer, démontrer, ... quand il sort par la porte, il revient par la fenêtre.
![:lol](/images/smileys/rire.gif)
Notez que cela peut être une qualité, car il nous force à remettre en cause constamment nos connaissances sur le standard. Mais parfois, lorsqu'on sait pertinemment que ce qu'il cherche à faire est impossible, cela peut être un peu ... difficile.
Ici, le programme charge une image double pour arriver au résultat, donc en utilisant le même niveau de ressources qu'en chargeant 2 fois le même fichier (à peu de choses près). Cela n'enlève rien à l'originalité de la méthode, mais on est toujours dans des pseudo-réponses à un problème qui n'a (en fait) pas de solution. Edité par Metalion Le 09/11/2015 à 09h16
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)
![Avatar](/images/avatars/avatar_09e47.png)
Salut Métalion ![:)](/images/smileys/sourire.gif)
Le But est bien de charger une seule fois et d'avoir deux destinations.
Même si au final on charge autant de données qu'en utilisant deux chargements, la solution apportée par GDX à le mérite de répondre à la demande formulée dans le titre à savoir:
Un seul Chargement et Deux destinations.
L'astuce de GDX me parait être bonne puisque avec un chargement, j'ai bien deux destinations
Même si cela peut paraitre évident, comme souvent, fallait y penser!
Bravo GDX![:top](/images/smileys/top.gif)
J'aime bien l'idée de sortir par la porte pour revenir par les fenêtres mais j'ai préfère partir de l'idée que jusqu'à ce que le contraire soit démontré, "YES MSX CAN"
![:)](/images/smileys/sourire.gif)
Le But est bien de charger une seule fois et d'avoir deux destinations.
Même si au final on charge autant de données qu'en utilisant deux chargements, la solution apportée par GDX à le mérite de répondre à la demande formulée dans le titre à savoir:
Un seul Chargement et Deux destinations.
L'astuce de GDX me parait être bonne puisque avec un chargement, j'ai bien deux destinations
![:top](/images/smileys/top.gif)
Même si cela peut paraitre évident, comme souvent, fallait y penser!
Bravo GDX
![:top](/images/smileys/top.gif)
J'aime bien l'idée de sortir par la porte pour revenir par les fenêtres mais j'ai préfère partir de l'idée que jusqu'à ce que le contraire soit démontré, "YES MSX CAN"
![:lol](/images/smileys/rire.gif)
![Avatar](/images/avatars/billy_dc2a7.jpg)
![Avatar](/images/avatars/avatar_09e47.png)
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.![:lol](/images/smileys/rire.gif)
![:jesors](/images/smileys/je_sors.gif)
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](/images/smileys/rire.gif)
![:jesors](/images/smileys/je_sors.gif)
@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](/images/smileys/heureux.gif)
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](/images/smileys/fele.gif)
![:fou](/images/smileys/fele.gif)
Merci de ton aide
![;)](/images/smileys/clindoeil.gif)
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie