La Place des Développeurs [EN COURS] Joe&mac Challenge. scrolling du jeu Joe And Ma.
igal :
AND160 remet pourtant A à ZERO si sa valeur atteint 160!
Je comprends pas pourquoi ca marche pas
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
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
Voici la vidéo:
Voici le DSK:
JOE&MAC.rar
Merci de votre aide
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
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
Voici la vidéo:
Voici le DSK:
JOE&MAC.rar
Merci de votre aide
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
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.
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
"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.
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.
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
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
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
igal
Membre non connecté
Conseiller Municipal
J'ai avancé autant que possible avec mes connaissances limités
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
Merci de votre aide
voici le programme:
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
Merci de votre aide
voici le programme:
Copier vers le presse-papierCode TEXT :
Edité par
igal
Le 07/02/2015 à 18h48
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
igal
Membre non connecté
Conseiller Municipal
Metalion :
Pas besoin de manipuler les registres, il y a en basic la commande BASE() qui est là pour ça.
C'est la méthode classique du "double buffering".
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.
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:
Copier vers le presse-papierCode 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
Merci de ton aide
igal
Membre non connecté
Conseiller Municipal
@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
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
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.
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 :
Copier vers le presse-papierCode :
Edité par
Metalion
Le 09/02/2015 à 13h37
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
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
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:
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
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:
@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.. Edité par igal Le 10/02/2015 à 15h42
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:
Copier vers le presse-papierCode 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
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:
Copier vers le presse-papierCode 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.. Edité par igal Le 10/02/2015 à 15h42
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie