MSX Village forum

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

TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5795

Le 07/11/2015 à 12h10

Reprise du message précédent

@GDX, merci, je comprend mieu :top

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) Edité par TurboSEB Le 07/11/2015 à 12h12



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 07/11/2015 à 12h26
@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 :)


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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5795

Le 07/11/2015 à 12h41
Comme les deux demi images s'affichant sur le screen 7 sont différente, normalement il devrait y avoir une alternance de ligne, une sur deux remplit et une sur deux vide!?



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 07/11/2015 à 18h50
@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:

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

Edité par igal Le 07/11/2015 à 19h06


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 07/11/2015 à 22h05
Voila.

Comme ca l'info est simple et claire :)


Un dessin est plus simple a comprendre que mes explications un peu tordus :fou

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


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

Le 08/11/2015 à 11h42
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


:noel
Site web    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5795

Le 08/11/2015 à 12h05
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 :D ca m'arrive pas souvent :oups, c'est étrange comme sensation :p Edité par TurboSEB Le 08/11/2015 à 12h22



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

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10358

Le 08/11/2015 à 15h12
petite démonstration screen 5 -> screen 7
je vous laisse regarder le basic , il n'y a pas de triche
test.dsk


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 08/11/2015 à 15h39
@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


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

Le 08/11/2015 à 15h50
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


:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10358

Le 08/11/2015 à 16h11
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


:noel
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 09/11/2015 à 08h24
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 Edité par GDX Le 09/11/2015 à 08h35
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1487

Le 09/11/2015 à 09h01
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

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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 09/11/2015 à 12h13
Salut Métalion :)

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
Même si cela peut paraitre évident, comme souvent, fallait y penser!
Bravo GDX :top

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


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 09/11/2015 à 19h40
Citation :
'aime bien l'idée de sortir par la porte pour revenir par les fenêtres




Faut dire que ceux qui sortent par la fenêtre, c'est souvent mauvais signe ... :lol :jesors Edité par ericb59 Le 09/11/2015 à 19h40


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 14/11/2015 à 11h50
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
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie