MSX Village forum

La Place des Développeurs [EN COURS] Joe&mac Challenge. scrolling du jeu Joe And Ma.

ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 03/02/2015 à 12h18

Reprise du message précédent

non igal, c'est :

A=(A+40) MOD 160

A revient à Zéro si A>=160


banniere-ericb59e
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1487

Le 03/02/2015 à 17h14
igal :
AND160 remet pourtant A à ZERO si sa valeur atteint 160!

Je comprends pas pourquoi ca marche pas


Non.

160AND160=160.

La fonction logique "AND" agit comme un filtre binaire sur la valeur.



igal :
1320 B=0:COPY(A,B)-(A+39,B+45),1TO(X,Y),0:A=A+40AND160


Si tu recherches la vitesse d'exécution, remplace cette ligne par :



1320 B=0:COPY(A,0)-(A+39,45),1TO(X,Y),0:A=(A+40)MOD160



ou même



1320 COPY(A,0)-(A+39,45),1TO(X,Y),0:A=(A+40)MOD160



si tu n'as pas besoin de la valeur de B en retour de ton GOSUB.


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 03/02/2015 à 19h18
Merci Eric, ca fonctionne très bien maintenant.

Je suis confronté à un problème récurent à savoir "La Zone des Sprites".
Pour rappel, la zone en question est atteinte par la formule suivante:
1 => BLOAD "ZORO",S,0+27136
2 => BSAVE "ZORO",128*0+27136,128*2-1+27136,S
3 => BLOAD "ZORO",S (s'affiche automatiquement dans la zone réservée)
Ces trois étapes me permettent d'afficher le "Background" des niveaux.

Par contre, j'ai un soucis avec mon "Faux Sprite".
Comme tu peux le voir sur la vidéo, la ZONE des SPRITES semble poser problèmes.
En fait je ne sais pas si c'est la Zone des prites à elle seule qui pose problème ou alors le passage au travers de la ligne [ZERO] vers la ligne [DEUX CENT DOUZE] qui doit traverser les [QUARANTE QUATRE LIGNE] de la zone des SPRITES!

J'ai mis l'image DSK dans le fichier RAR.
Il suffit de lancer RPLAY19.ASC et déplacer le HERO.
Nb: les déplacement ne sont que provisoire.
Au final, puisque c'est un jeu de plate forme, il n'y aura pas de HAUT, ni de BAS, mais des SAUT et des CHUTES :top

Voici la vidéo:


Voici le DSK:
JOE&MAC.rar

Merci de votre aide :tchin :tchin :tchin

Merci Metalion. Une fois que tout tournera comme je le souhaite, j'essaierai d'optimiser ce qui est possible. Edité par igal Le 03/02/2015 à 19h46


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 03/02/2015 à 19h56
Il suffit de déplacer la zone des sprites en page 2,3 ou 4 pour être à l'abri.
Voir le message de Jipe sur la page précédente.


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 04/02/2015 à 05h55
"infos sur le screen 5
la table des noms - 192 lignes 0000H - 5FFFH 24576 octets
- 212 lignes 0000H - 69FFH 27136 octets
table des attributs de sprite : - 7600H - 767FH 128 octets
table des formes de sprite : - 7800H - 7FFFH 2048 octets
table des couleurs de sprite : - 7400H - 75FFFH 512 octets
table de palette : - 7680H - 769FH 32 octets"

En cherchant il y a quelque mois, j'étais tombé sur la commande à appliquer à un registre spécifique pour déplacer "La Fameuse Zone".

En attendant de trouver le bon registre, je viens de trouver une chose très intéressante pour la suite des opérations:

Afin de proposer de jolies (faux) SPRITES, j'ai choisi la méthode que j'ai appris dans le moteur WINNIE de MsxoSaure.

A mesure de mes trifouillages, j'ai trouvé qu'il "pouvait être" plus intéressant de se passer de l'une des étapes de la méthode de MsxOsaure.
Cela génère un "Cliping", mais me semblait acceptable et c'est une piste que je voudrais tester.

Pour ce faire la méthode se résume à:

Je recopie la partie du SCREEN qui sera recouverte par le faux sprite MAIS que je souhaite ré-afficher par la suite!
Cette opération fonctionne assez bien (malgré un cliping du faux sprite) mais elle est assez lourde à mettre en place parce qu'il faut anticiper chaque parcelle qui sera altérée par le SPRITE pour la "sauver" sur une autre page pour ensuite, une fois qu'on déplace le SPRITE à DROITE, on doit "reconstruire" le "résidu" du SPRITE qui est resté à GAUCHE!

Tu peux voir ZELDA se déplacer à droite et gauche selon cette méthode sur cette vidéo:


Pour éviter toutes ces opération chiantes et complexes, j'ai pensé à "recréer" un second "Fond d'écran" sur une autre page!

Par exemple:
1) Page 0 => DECORS et SPRITES superposés
2) Page 1 => DECORS "sans rien d'autre!"
3) Page 2 => SPRITES "Héros"
4) Page 3 => SPRITES "Ennemis"

Donc ma page 0 et 1 sont identique sauf que la page 1 n'est pas altérée par les faux SPRITES!
La Page 1 me servirait comme une matrice vierge de tout "défaut" qu'il me suffit de copier pour recouvrir la partie (X,Y)-(X+39,Y+45) précédemment altérée sur la page 0!

J'ai pensé à deux méthodes pour cela!

1) soit je charge les bribes sur deux pages 0 et 1 => donc 2 BLOAD par bribes!
Avantage: Pas de "COPY TO" sur le VDP!
Inconvénient: cela double le temps d'accès disk !

2) soit je charge une seule bribe sur la page 0 puis je la copie sur la page 1
Avantage: pas d'accès disk supplémentaire!
Inconvénient: cela double la somme de travail du VDP juste pour créer les décors!

Je voudrais essayer la méthode 2 et voir laquelle sera la plus rapide.


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 04/02/2015 à 08h26
igal :
En cherchant il y a quelque mois, j'étais tombé sur la commande à appliquer à un registre spécifique pour déplacer "La Fameuse Zone".


Pas besoin de manipuler les registres, il y a en basic la commande BASE() qui est là pour ça.



igal :
Pour éviter toutes ces opération chiantes et complexes, j'ai pensé à "recréer" un second "Fond d'écran" sur une autre page!


C'est la méthode classique du "double buffering".



igal :
Je voudrais essayer la méthode 2 et voir laquelle sera la plus rapide.


Si tu veux mon avis, tu devrais laisser tomber les sprites software. Trop complexe et nécessite effectivement toute une gestion de recopie d'écran qui vont ralentir tout le programme. Ce serait plus simple et plus rapide si tu utilisais des sprites hardware.


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 04/02/2015 à 14h56
If you are in SCREEN 1, BASE(10) does not have any effect as it is for SCREEN 2 only.

To calculate correct BASE(X) number, you can use following formula:

BASE(<SCREEN MODE>*5+N)
N=0 Name table
N=1 Colors
N=2 Shapes
N=3 Sprite atributes
N=4 Sprite shapes

I suggest to use BASE command before SCREEN command as there was some bug IIRC when using other way around.

By NYYRIKKI


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/02/2015 à 18h47
J'ai avancé autant que possible avec mes connaissances limités :p

Le Héro se [Déplace] et [Frappe] dans les directions prévues.


Je souhaite déplacer la Zone des sprites avec la commande BASE, mais j'ai beau essayé et chercher des infos sur divers bouquins, j'ai pas compris comment on fait.

Si un "Connaisseur" peut m'expliquer clairement le principe, ce serait très aimable :D

Merci de votre aide :top

voici le programme:
Code TEXT :
 
10 'SAVE"RPLAY24.asc",A
12 'Version 002
14 'PLAYER DE BRIBES VERICALES[(106 X 2) + (22 X 2)]
16 VDP(10)=0:SCREEN 5:COLOR,1,1:VDP(24)=VDP(24)+212:VDP(9)=VDP(9)OR2
18 C=0:I=0:X=100:Y=100:R=2
30 SET PAGE 0,1:BLOAD"HEROS.SC5",S:COLOR=RESTORE
32 SET PAGE 0,0:'VDP(14)=&H33:VDP(10)=VDP(10) OR 4
100 IF I=0THEN CALL CHDIR ("J-1"):GOTO 200
102 IF I=1THEN CALL CHDIR ("J-2"):GOTO 200
104 IF I=2THEN CALL CHDIR ("J-3"):GOTO 200
106 IF I=3THEN CALL CHDIR ("J-4"):GOTO 200
200 CALL CHDIR ("D"):VB=D
202 BLOAD"2",S:GOSUB 900
204 BLOAD"1",S:GOSUB 900
206 CALL CHDIR ("..")
300 CALL CHDIR ("C")
302 BLOAD"8",S:GOSUB 900
304 BLOAD"7",S:GOSUB 900
306 BLOAD"6",S:GOSUB 900
308 BLOAD"5",S:GOSUB 900
310 BLOAD"4",S:GOSUB 900
312 BLOAD"3",S:GOSUB 900
314 BLOAD"2",S:GOSUB 900
316 BLOAD"1",S:GOSUB 900
318 CALL CHDIR ("..")
320 CALL CHDIR ("B")
322 BLOAD"8",S:GOSUB 900
324 BLOAD"7",S:GOSUB 900
326 BLOAD"6",S:GOSUB 900
328 BLOAD"5",S:GOSUB 900
330 BLOAD"4",S:GOSUB 900
332 BLOAD"3",S:GOSUB 900
334 BLOAD"2",S:GOSUB 900
336 BLOAD"1",S:GOSUB 900
338 CALL CHDIR ("..")
340 CALL CHDIR ("A")
342 BLOAD"8",S:GOSUB 900
344 BLOAD"7",S:GOSUB 900
346 BLOAD"6",S:GOSUB 900
348 BLOAD"5",S:GOSUB 900
350 BLOAD"4",S:GOSUB 900
352 BLOAD"3",S:GOSUB 900
354 BLOAD"2",S:GOSUB 900
356 BLOAD"1",S:GOSUB 900
358 CALL CHDIR ("..")
360 CALL CHDIR ("9")
362 BLOAD"8",S:GOSUB 900
364 BLOAD"7",S:GOSUB 900
366 BLOAD"6",S:GOSUB 900
368 BLOAD"5",S:GOSUB 900
370 BLOAD"4",S:GOSUB 900
372 BLOAD"3",S:GOSUB 900
374 BLOAD"2",S:GOSUB 900
376 BLOAD"1",S:GOSUB 900
378 CALL CHDIR ("..")
380 CALL CHDIR ("8")
382 BLOAD"8",S:GOSUB 900
384 BLOAD"7",S:GOSUB 900
386 BLOAD"6",S:GOSUB 900
388 BLOAD"5",S:GOSUB 900
390 BLOAD"4",S:GOSUB 900
392 BLOAD"3",S:GOSUB 900
394 BLOAD"2",S:GOSUB 900
396 BLOAD"1",S:GOSUB 900
398 CALL CHDIR ("..")
400 CALL CHDIR ("7")
402 BLOAD"8",S:GOSUB 900
404 BLOAD"7",S:GOSUB 900
406 BLOAD"6",S:GOSUB 900
408 BLOAD"5",S:GOSUB 900
410 BLOAD"4",S:GOSUB 900
412 BLOAD"3",S:GOSUB 900
414 BLOAD"2",S:GOSUB 900
416 BLOAD"1",S:GOSUB 900
418 CALL CHDIR ("..")
420 CALL CHDIR ("6")
422 BLOAD"8",S:GOSUB 900
424 BLOAD"7",S:GOSUB 900
426 BLOAD"6",S:GOSUB 900
428 BLOAD"5",S:GOSUB 900
430 BLOAD"4",S:GOSUB 900
432 BLOAD"3",S:GOSUB 900
434 BLOAD"2",S:GOSUB 900
436 BLOAD"1",S:GOSUB 900
438 CALL CHDIR ("..")
440 CALL CHDIR ("5")
442 BLOAD"8",S:GOSUB 900
444 BLOAD"7",S:GOSUB 900
446 BLOAD"6",S:GOSUB 900
448 BLOAD"5",S:GOSUB 900
450 BLOAD"4",S:GOSUB 900
452 BLOAD"3",S:GOSUB 900
454 BLOAD"2",S:GOSUB 900
456 BLOAD"1",S:GOSUB 900
458 CALL CHDIR ("..")
460 CALL CHDIR ("4")
462 BLOAD"8",S:GOSUB 900
464 BLOAD"7",S:GOSUB 900
466 BLOAD"6",S:GOSUB 900
468 BLOAD"5",S:GOSUB 900
470 BLOAD"4",S:GOSUB 900
472 BLOAD"3",S:GOSUB 900
474 BLOAD"2",S:GOSUB 900
476 BLOAD"1",S:GOSUB 900
478 CALL CHDIR ("..")
480 CALL CHDIR ("3")
482 BLOAD"8",S:GOSUB 900
484 BLOAD"7",S:GOSUB 900
486 BLOAD"6",S:GOSUB 900
488 BLOAD"5",S:GOSUB 900
490 BLOAD"4",S:GOSUB 900
492 BLOAD"3",S:GOSUB 900
494 BLOAD"2",S:GOSUB 900
496 BLOAD"1",S:GOSUB 900
498 CALL CHDIR ("..")
500 CALL CHDIR ("2")
502 BLOAD"8",S:GOSUB 900
504 BLOAD"7",S:GOSUB 900
506 BLOAD"6",S:GOSUB 900
508 BLOAD"5",S:GOSUB 900
510 BLOAD"4",S:GOSUB 900
512 BLOAD"3",S:GOSUB 900
514 BLOAD"2",S:GOSUB 900
516 BLOAD"1",S:GOSUB 900
518 CALL CHDIR ("..")
520 CALL CHDIR ("1")
522 BLOAD"8",S:GOSUB 900
524 BLOAD"7",S:GOSUB 900
526 BLOAD"6",S:GOSUB 900
528 BLOAD"5",S:GOSUB 900
530 BLOAD"4",S:GOSUB 900
532 BLOAD"3",S:GOSUB 900
534 BLOAD"2",S:GOSUB 900
536 BLOAD"1",S:GOSUB 900
538 CALL CHDIR ("..")
540 CALL CHDIR ("0")
542 BLOAD"8",S:GOSUB 900
544 BLOAD"7",S:GOSUB 900
546 BLOAD"6",S:GOSUB 900
548 BLOAD"5",S:GOSUB 900
550 BLOAD"4",S:GOSUB 900
552 BLOAD"3",S:GOSUB 900
554 BLOAD"2",S:GOSUB 900
556 BLOAD"1",S:GOSUB 900
558 CALL CHDIR ("..")
559 IFI=3THENR=0:GOSUB900:GOTO559
560 CALL CHDIR ("F")
562 BLOAD"8",S:GOSUB 900
564 BLOAD"7",S:GOSUB 900
566 BLOAD"6",S:GOSUB 900
568 BLOAD"5",S:GOSUB 900
570 BLOAD"4",S:GOSUB 900
572 BLOAD"3",S:GOSUB 900
574 BLOAD"2",S:GOSUB 900
576 BLOAD"1",S:GOSUB 900
578 CALL CHDIR ("..")
580 CALL CHDIR ("E")
582 BLOAD"8",S:GOSUB 900
584 BLOAD"7",S:GOSUB 900
586 BLOAD"6",S:GOSUB 900
588 BLOAD"5",S:GOSUB 900
590 BLOAD"4",S:GOSUB 900
592 BLOAD"3",S:GOSUB 900
594 BLOAD"2",S:GOSUB 900
596 BLOAD"1",S:GOSUB 900
598 CALL CHDIR ("..")
600 CALL CHDIR ("D")
602 BLOAD"8",S:GOSUB 900
604 BLOAD"7",S:GOSUB 900
606 BLOAD"6",S:GOSUB 900
608 BLOAD"5",S:GOSUB 900
610 BLOAD"4",S:GOSUB 900
612 BLOAD"3",S:GOSUB 900
614 CALL CHDIR (".."):CALL CHDIR (".."):I=I+1:GOTO100
 
699 'TESTE STICK**************
900 S=STICK(0):ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800:RETURN
999 SCREEN0:COLOR1,15:PRINT"S=STICK"
 
1000 'STATIQUE****************
1010 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1050 
1020 COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET
1030 RETURN
1050 COPY(C,D)-(C+58,D+45),1TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0
1060 RETURN
1099 SCREEN0:COLOR1,15:PRINT"STATIQUE ECHEC
 
1100 'SAUT********************
1110 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1150
1120 Y=Y-64AND255:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET
1130 Y=Y+16AND255:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET
1140 RETURN
1150 Y=Y-64AND255:COPY(C,D)-(C+58,D+45),1TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0
1160 Y=Y+32AND255:COPY(C,D)-(C+58,D+45),1TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0
1170 RETURN
1199 SCREEN0:COLOR1,15:PRINT"SAUT ECHEC
 
1200 'SAUT DROITE**************
1210 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1250
1220 X=X+32:Y=Y-64:B=0:D=92:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET:A=(A+40)MOD160
1230 X=X+32:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET:A=(A+40)MOD160
1240 Y=Y+16:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET:A=(A+40)MOD160
1245 RETURN
1250 X=X+32:Y=Y-64:B=0:D=92:COPY(C,D)-(C+58,D+45),1TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1260 X=X+32:COPY(C,D)-(C+58,D+45),1TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1270 Y=Y+16:COPY(C,D)-(C+58,D+45),1TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1280 RETURN
1299 SCREEN0:COLOR1,15:PRINT"SAUT DROITE ECHEC
 
1300 'DROITE******************
1310 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1350
1320 X=X+20:B=0:D=92:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET:A=(A+40)MOD160
1330 RETURN
1350 X=X+20:B=0:D=92:COPY(C,D)-(C+58,D+45),1TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0
1360 RETURN
1399 SCREEN0:COLOR1,15:PRINT"DROITE ECHEC
 
1400 'CHUTE DROITE************
1410 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1350
1420 X=X+32:Y=Y+32:B=0:D=92:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET:A=(A+40)MOD160
1430 RETURN
1450 X=X+32:Y=Y+32:B=0:D=92:COPY(C,D)-(C+58,D+45),1TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1460 RETURN
1499 SCREEN0:COLOR1,15:PRINT"CHUTE DROITE ECHEC
 
1500 'CHUTE******************
1510 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1550
1520 Y=Y+32AND255:B=B:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET:A=(A+40)MOD160
1530 RETURN
1550 Y=Y+32AND255:B=B:COPY(C,D)-(C+58,D+45),1TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1560 RETURN
1599 SCREEN0:COLOR1,15:PRINT"CHUTE ECHEC
 
1600 'CHUTE GAUCHE************
1610 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1650
1620 X=X-32:Y=Y+32:B=46:D=138:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET:A=(A+40)MOD160
1630 RETURN
1650 X=X-32:Y=Y+32:B=46:D=138:COPY(C,D)-(C+58,D+45),1TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1660 RETURN
1699 SCREEN0:COLOR1,15:PRINT"CHUTE GAUCHE ECHEC
 
1700 'GAUCHE******************
1710 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1750
1720 X=X-20:B=46:D=138:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET:A=(A+40)MOD160
1730 RETURN
1750 X=X-20:B=46:D=138:COPY(C,D)-(C+58,D+45),1TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0
1760 RETURN
1799 SCREEN0:COLOR1,15:PRINT"GAUCHE ECHEC
 
1800 'SAUT GAUCHE**************
1810 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1850
1820 X=X-32:Y=Y-64:B=46:D=138:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET:A=(A+40)MOD160
1830 X=X-32:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET:A=(A+40)MOD160
1840 Y=Y+16:COPY(A,B)-(A+39,B+45),1TO(X,Y),0,TPSET:A=(A+40)MOD160
1845 RETURN
1850 X=X-32:Y=Y-64:B=46:D=138:COPY(C,D)-(C+58,D+45),1TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1860 X=X-32:COPY(C,D)-(C+58,D+45),1TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1870 Y=Y+16:COPY(C,D)-(C+58,D+45),1TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1880 RETURN
1899 SCREEN0:COLOR1,15:PRINT"SAUT GAUCHE ECHEC

 
Edité par igal Le 07/02/2015 à 18h48


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 08/02/2015 à 19h56
Metalion :
igal :
En cherchant il y a quelque mois, j'étais tombé sur la commande à appliquer à un registre spécifique pour déplacer "La Fameuse Zone".


Pas besoin de manipuler les registres, il y a en basic la commande BASE() qui est là pour ça.



igal :
Pour éviter toutes ces opération chiantes et complexes, j'ai pensé à "recréer" un second "Fond d'écran" sur une autre page!


C'est la méthode classique du "double buffering".



igal :
Je voudrais essayer la méthode 2 et voir laquelle sera la plus rapide.


Si tu veux mon avis, tu devrais laisser tomber les sprites software. Trop complexe et nécessite effectivement toute une gestion de recopie d'écran qui vont ralentir tout le programme. Ce serait plus simple et plus rapide si tu utilisais des sprites hardware.




Le double buffering fonctionne parfaitement bien en utilisant ces commandes:



Code TEXT :
 
300 CALL CHDIR ("C")
302 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
304 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
306 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
308 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
310 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
312 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
314 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
316 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
 




Forcément en doublant BLOAD, c'est un peu moins rapide.



Je suis sur qu'il doit exister une solution pour faire avec une seul BLOAD et deux destinations VRAMS :)



@Métalion:

J'ai eu beau chercher avec BASE, mais j'y arrive pas...

Je voudrais déplacer les zones sur la PAGE 3 du SCREEN 5 :)

En toute fin de VRAM :top



Merci de ton aide :)


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 08/02/2015 à 20h19
Bonsoir Igal,

Je te réponds en détail demain matin.


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 08/02/2015 à 20h32
Metalion :
Bonsoir Igal,



Je te réponds en détail demain matin.




ca m'interesse aussi :)


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 08/02/2015 à 20h56
@eric:j'ai imaginé une solution pas chère en ressources pour gérer les "SOLS" etc...

Imaginons qu'un jeu de plate forme prenne en charge les éléments suivants:

Air: permet la chute selon la pesanteur.
Terre: désactive la chute (pesanteur).
fer: empêche d'aller à droite (ou gauche).(désactive donc droite ou gauche)
feu: fait perdre des points de vie.
Eau: permet certains mouvement à définir selon conditions à définir.

La grande question pour gérer tout ça avec peu de moyen devrait trouver sa réponse dans les SPRITES.

VDP (24) présente l'avantage de "trainer" les Sprites qu'on y dépose.

Il suffit de trouver le moyen de distinguer (facilement) les Sprites en 5 groupes puis les placer aux bons endroits pour que le héros atterrisse sur le sol (atterisse sur le sprite :)) de façon cohérente.

Y a encore plein de chose envisageables mais faut changer sa façon de percevoir les Sprites.
Avec cette méthode, les Sprites deviennent des balises Edité par igal Le 08/02/2015 à 21h01


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

Le 08/02/2015 à 22h37
Pas con, ca sent l'usine a gaz ca :p , faut voir avec la limitation du nombres de sprites ^^



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

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1487

Le 09/02/2015 à 10h56
Nyyrikki :
To calculate correct BASE(X) number, you can use following formula:



BASE(<SCREEN MODE>*5+N)

N=0 Name table

N=1 Colors

N=2 Shapes

N=3 Sprite atributes

N=4 Sprite shapes



I suggest to use BASE command before SCREEN command as there was some bug IIRC when using other way around.




Ce message de Nyyrikki résume bien la commande et son usage. BASE est utilisée pour déplacer en VRAM les zones stratégiques définies pour chaque mode graphique. Elle est utilisée comme un tableau de valeur, que l'on renseigne avant la déclaration du mode graphique par la commande SCREEN. Sauf, qu'après vérification, elle n'est utilisable qu'en lecture seule pour les modes graphiques au delà de SCREEN3. Nous allons donc devoir utiliser la commande VDP.



Dans le cas qui nous concerne, nous cherchons à déplacer les zones définissant les sprites.



Il y a 2 zones à déplacer :

  • la SAT (Sprite Attributes Table - les attributs des sprites). Longueur : 128 octets. Elle peut être placée où on veut en VRAM, pour autant que ce soit une adresse multiple de 128 octets. Son adresse est définie par les registres VDP R#5 (8 bits)et R#11 (2 bits).
  • la SPT (Sprite Patterns Table - les formes des sprites). Longueur : 2048 octets. Elle peut être placée où on veut en VRAM, pour autant que ce soit une adresse multiple de 2048 octets. Son adresse est définie par le registre VDP R#6 (6 bits).



Il y a aussi une 3e zone : la table des couleurs de sprites, mais elle est placée automatiquement par le VDP 512 octets avant l'adresse de la SAT. On ne doit donc pas la paramétrer, mais il va falloir en tenir compte dans la modification des adresses.



On veut donc placer ces zones stratégiques en page 3 de la VRAM (en SCREEN5), c'est à dire à partir de l'adresse &h18000 (98304). Si on procède dans l'ordre :

  • la SAT peut être positionnée à &h18200 (98304+512=98816) de manière à ce que la table des couleurs de sprites se place automatiquement en &h18000 (98304). Le nombre codé sur 10 bits dans les registres R#5 et R#11 est l'adresse divisée par 128. Ici : 98816/128=772, soit en binaire &b1100000100, qui se divise en &b11 (3 en décimal) pour les 2 bits les plus élevés et &b00000100 (4 en décimal) pour les 8 bits les plus faibles.
  • la SPT peut être positionnée à &h18800 (98304+2048=100352), qui est le premier multiple de 2048 après 98304. Le nombre codé sur 6 bits dans le registre R#6 est l'adresse divisée par 2048. Ici : 100352/2048=49, soit &b110001 en binaire.



Les commandes à intégrer dans le programme sont donc :



Code :
VDP(5)=4:VDP(12)=3  '12 parce qu'il y a un décalage à partir du R#8 dans la commande
VDP(6)=49
Edité par Metalion Le 09/02/2015 à 13h37


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 10/02/2015 à 15h38
Salut Métalion.

Je te remercie pour le mal que tu te donne mais les zones réservées semblent ne pas avoir changées de "lieu"!

Le "HERO" se déplace sur la page ZERO, la ou se déroule se Scroll.
Le Double Buffer est stocké en page 1 et les "Faux Sprites" en page 2.
La Page 3 est donc complètement libre.

J'ai bien intégré tes commandes avant d'entrer SCREEN 5 tel que ci dessous:
Code TEXT :
 
15 VDP(5)=4: VDP(12)=3:VDP(6)=49
16 SCREEN 5
...
30 SET PAGE 0,2: BLOAD"HERO",S:COLOR=RESTORE
32 SET PAGE 0,0
...
110 BLOAD"BRIBE1",S:BLOAD"BRIBE1",S,0+32768!
120 BLOAD"BRIBE2",S:BLOAD"BRIBE2",S,0+32768!
130 BLOAD"BRIBE3",S:BLOAD"BRIBE3",S,0+32768!
 


Je précise que:
SCREEN5 => SET PAGE 0,0 => BLOAD"IMAGE",S => Les images sont visibles sur la page ZERO en LIVE! (ce qui est normal)
SCREEN5 => SET PAGE 0,0 => BLOAD"IMAGE",S,0+32768! => Les images sont chargées sur la PAGE 1
Cette commande permet de charger les images sur la PAGE 1 alors que nous sommes sur la PAGE 0,0 :top


Voici la vidéo de ce qui se passe:

http://youtu.be/pBW2mdddAHU
On voit bien apparaître les artefacts dus à l’empiétement des COPY sur les les zones réservées en Pages ZERO! (de la ligne 211+1 à 211+44 ou encore ligne 0-1 à la ligne 0-44)

Voici le DSK pret à l'emploi:
=> LOAD"RPLAY28.ASC
JOE&MAC 10-02-2015.rar

Voici le Listing:
Code TEXT :
 
10 'SAVE"RPLAY28.asc",A
12 'Version 002
14 'PLAYER DE BRIBES VERICALES[(106 X 2) + (22 X 2)]
15 VDP(5)=4:VDP(12)=3:VDP(6)=49
16 VDP(10)=0:SCREEN 5:VDP(24)=VDP(24)+212:'VDP(9)=VDP(9)OR2
18 C=0:I=0:X=100:Y=100:R=2
30 SET PAGE 0,2:BLOAD"HEROS.SC5",S:COLOR=RESTORE
32 SET PAGE 0,0:'VDP(14)=&H33:VDP(10)=VDP(10) OR 4
100 IF I=0THEN CALL CHDIR ("J-1"):GOTO 200
102 IF I=1THEN CALL CHDIR ("J-2"):GOTO 200
104 IF I=2THEN CALL CHDIR ("J-3"):GOTO 200
106 IF I=3THEN CALL CHDIR ("J-4"):GOTO 200
200 CALL CHDIR ("D"):VB=D
202 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
204 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
206 CALL CHDIR ("..")
300 CALL CHDIR ("C")
302 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
304 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
306 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
308 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
310 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
312 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
314 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
316 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
318 CALL CHDIR ("..")
320 CALL CHDIR ("B")
322 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
324 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
326 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
328 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
330 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
332 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
334 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
336 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
338 CALL CHDIR ("..")
340 CALL CHDIR ("A")
342 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
344 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
346 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
348 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
350 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
352 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
354 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
356 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
358 CALL CHDIR ("..")
360 CALL CHDIR ("9")
362 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
364 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
366 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
368 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
370 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
372 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
374 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
376 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
378 CALL CHDIR ("..")
380 CALL CHDIR ("8")
382 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
384 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
386 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
388 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
390 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
392 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
394 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
396 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
398 CALL CHDIR ("..")
400 CALL CHDIR ("7")
402 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
404 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
406 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
408 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
410 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
412 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
414 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
416 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
418 CALL CHDIR ("..")
420 CALL CHDIR ("6")
422 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
424 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
426 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
428 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
430 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
432 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
434 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
436 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
438 CALL CHDIR ("..")
440 CALL CHDIR ("5")
442 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
444 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
446 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
448 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
450 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
452 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
454 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
456 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
458 CALL CHDIR ("..")
460 CALL CHDIR ("4")
462 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
464 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
466 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
468 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
470 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
472 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
474 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
476 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
478 CALL CHDIR ("..")
480 CALL CHDIR ("3")
482 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
484 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
486 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
488 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
490 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
492 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
494 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
496 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
498 CALL CHDIR ("..")
500 CALL CHDIR ("2")
502 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
504 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
506 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
508 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
510 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
512 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
514 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
516 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
518 CALL CHDIR ("..")
520 CALL CHDIR ("1")
522 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
524 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
526 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
528 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
530 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
532 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
534 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
536 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
538 CALL CHDIR ("..")
540 CALL CHDIR ("0")
542 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
544 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
546 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
548 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
550 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
552 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
554 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
556 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
558 CALL CHDIR ("..")
559 IFI=3THENR=0:GOSUB900:GOTO559
560 CALL CHDIR ("F")
562 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
564 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
566 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
568 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
570 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
572 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
574 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
576 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
578 CALL CHDIR ("..")
580 CALL CHDIR ("E")
582 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
584 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
586 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
588 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
590 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
592 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
594 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900
596 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900
598 CALL CHDIR ("..")
600 CALL CHDIR ("D")
602 BLOAD"8",S:BLOAD"8",S,0+32768!:GOSUB 900
604 BLOAD"7",S:BLOAD"7",S,0+32768!:GOSUB 900
606 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900
608 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900
610 BLOAD"4",S:BLOAD"4",S,0+32768!:GOSUB 900
612 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900
614 CALL CHDIR (".."):CALL CHDIR (".."):I=I+1:GOTO100
699 'TESTE STICK**************
900 S=STICK(0):ONS+1 GOSUB 1000,1100,1200,1300,1400,1500,1600,1700,1800:RETURN
999 SCREEN0:COLOR1,35:PRINT"S=STICK"
1000 'STATIQUE****************
1010 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1050 
1020 COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET
1022 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1030 RETURN
1050 COPY(C,D)-(C+58,D+45),2TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0
1052 COPY(X,Y)-(X+58,Y+45),1TO(X,Y),0
1060 RETURN
1099 SCREEN0:COLOR1,35:PRINT"STATIQUE ECHEC
1100 'SAUT********************
1110 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1150
1120 Y=Y-64AND255:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET
1122 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1130 Y=Y+16AND255:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET
1132 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1140 RETURN
1150 Y=Y-64AND255:COPY(C,D)-(C+58,D+45),2TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0
1152 COPY(X,Y)-(X+58,Y+45),1TO(X,Y),0
1160 Y=Y+32AND255:COPY(C,D)-(C+58,D+45),2TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0
1162 COPY(X,Y)-(X+58,Y+45),1TO(X,Y),0
1170 RETURN
1199 SCREEN0:COLOR1,35:PRINT"SAUT ECHEC
1200 'SAUT DROITE**************
1210 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1250
1220 X=X+32:Y=Y-64:B=0:D=92:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET:A=(A+40)MOD160
1222 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1230 X=X+32:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET:A=(A+40)MOD160
1232 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1240 Y=Y+16:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET:A=(A+40)MOD160
1242 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1245 RETURN
1250 X=X+32:Y=Y-64:B=0:D=92:COPY(C,D)-(C+58,D+45),2TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1252 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0
1260 X=X+32:COPY(C,D)-(C+58,D+45),2TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1262 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),1
1270 Y=Y+16:COPY(C,D)-(C+58,D+45),2TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1272 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0
1280 RETURN
1299 SCREEN0:COLOR1,35:PRINT"SAUT DROITE ECHEC
1300 'DROITE******************
1310 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1350
1320 X=X+20:B=0:D=92:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET:A=(A+40)MOD160
1322 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1330 RETURN
1350 X=X+20:B=0:D=92:COPY(C,D)-(C+58,D+45),2TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0
1352 COPY(X,Y)-(X+58,Y+45),1TO(X,Y),0
1360 RETURN
1399 SCREEN0:COLOR1,35:PRINT"DROITE ECHEC
1400 'CHUTE DROITE************
1410 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1350
1420 X=X+32:Y=Y+32:B=0:D=92:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET:A=(A+40)MOD160
1422 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1430 RETURN
1450 X=X+32:Y=Y+32:B=0:D=92:COPY(C,D)-(C+58,D+45),2TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1452 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0
1460 RETURN
1499 SCREEN0:COLOR1,35:PRINT"CHUTE DROITE ECHEC
1500 'CHUTE******************
1510 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1550
1520 Y=Y+32AND255:B=B:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET:A=(A+40)MOD160
1522 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1530 RETURN
1550 Y=Y+32AND255:B=B:COPY(C,D)-(C+58,D+45),2TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1552 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0
1560 RETURN
1599 SCREEN0:COLOR1,35:PRINT"CHUTE ECHEC
1600 'CHUTE GAUCHE************
1610 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1650
1620 X=X-32:Y=Y+32:B=46:D=138:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET:A=(A+40)MOD160
1622 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1630 RETURN
1650 X=X-32:Y=Y+32:B=46:D=138:COPY(C,D)-(C+58,D+45),2TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1652 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0
1660 RETURN
1699 SCREEN0:COLOR1,35:PRINT"CHUTE GAUCHE ECHEC
1700 'GAUCHE******************
1710 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1750
1720 X=X-20:B=46:D=138:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET:A=(A+40)MOD160
1722 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1730 RETURN
1750 X=X-20:B=46:D=138:COPY(C,D)-(C+58,D+45),2TO(X,Y),0,TPSET:C=C+59:IFC=177THENC=0
1752 COPY(X,Y)-(X+58,Y+45),1TO(X,Y),0
1760 RETURN
1799 SCREEN0:COLOR1,35:PRINT"GAUCHE ECHEC
1800 'SAUT GAUCHE**************
1810 VDP(24)=VDP(24)-RAND255:IFSTRIG(0)THEN1850
1820 X=X-32:Y=Y-64:B=46:D=138:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET:A=(A+40)MOD160
1822 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1830 X=X-32:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET:A=(A+40)MOD160
1832 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1840 Y=Y+16:COPY(A,B)-(A+39,B+45),2TO(X,Y),0,TPSET:A=(A+40)MOD160
1842 COPY(X,Y)-(X+39,Y+45),1TO(X,Y),0
1845 RETURN
1850 X=X-32:Y=Y-64:B=46:D=138:COPY(C,D)-(C+58,D+45),2TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1852 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0
1860 X=X-32:COPY(C,D)-(C+58,D+45),2TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1862 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0
1870 Y=Y+16:COPY(C,D)-(C+58,D+45),2TO(X-59,Y),0,TPSET:C=C+59:IFC=177THENC=0
1872 COPY(X,Y)-(X+58,Y+45),1TO(X-59,Y),0,
1880 RETURN
1899 SCREEN0:COLOR1,35:PRINT"SAUT GAUCHE ECHEC
 


@Metalion: Soit j'ai loupé un truc, soit les commandes ne conviennent pas.
essais mon DSK pour visualiser le résulta.

@Eric: t'as obtenu un résulta probant?

Nb: Une fois les SPRITES déplacés, je supprimerai certainement les "Faux Sprites" ce qui me permettra de me débarrasser du double buffer.

@Suivre.. :p Edité par igal Le 10/02/2015 à 15h42


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 10/02/2015 à 15h48
Essaie de positionner les commandes VDP après la commande SCREEN5.


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)
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie