La Place des Développeurs [EN COURS] Double Buffer Scroll VDP(24) Créer un double buffer hors des zones d'affichage.
igal
Membre non connecté
Conseiller Municipal
salut à tous.
Toujours la tête dans mon projet Joe&Mac, je suis confronté à un nouveau problème.
Tout au long des jours et selon mes questions, on peut voir des débuts de réponse dans différents sujets mais là, mon problème semble conjuguer plusieurs difficultés techniques.
Pour copier des graphismes sur la zone allant de 212 à 255 de la page [Zéro], on peut appliquer cette simple technique:
COPY (0,0)-(255,43),quelconque TO (0,211+1),Zéro
ce qui aura pour effet de copier un dessin Haut de 44 Pixels sur la
Par contre, lorsque l'on veut utiliser cette technique sur une page autre que la page ZERO, les graphismes ne s'affichent pas avec cette technique
Gdx nous à gratifié d'une technique permettant d'afficher des graphismes dans les zones non accessibles des pages autres que la page ZERO.
http://www.msxvillage.fr/forum/topic.php?id=1956#m44958
De mon coté, j'ai essayé d'aborder le problème autrement en essayer la technique suivante:
1) Je BLOAD une image de 256 pixels de long sur 44 Pixels de Haut tel que en décalant l'image de 27136 bytes :
2) Sauver les Bribes de l'images en indiquant qu'elles sont décalées de 27136 Bytes.
3) Charger les bribes par un simple BLOAD"BRIBES",S pour qu'elle se place automatiquement sur les lignes 212, 214, 216, 218 etc...jusqu'à la ligne 255 pour un total de 44 ligne affichées automatiquement sur la page Zéro.
Pour afficher des graphismes "Automatiquement" sur les zones 212 à 255 des pages 1, 2 et 3, il faut procéder comme suit:
1) On indique la page de travail ZERO (donc SET PAGE X,0)
SET PAGE 0,0 (par exemple)
2)On charge la bribe créée avec le générateur comme décrit plus haut (+27136 bytes)
Jusqu'ici tout va bien.
On peut changer de page avec la commande SET PAGE 1,0 pour visualiser que les bribes s'affichent bien sur les zones allant de [212 à 255] de la page 1
Vous aurez remarqué qu'il y a deux BLOAD par ligne sur ce listing.
Il s'agit d'un...
premier BLOAD "X",S qui va afficher sur les zone [212 à 255] de la page ZERO.
Second BLOAD "X",S,0+32768 qui va afficher sur les zone [212 à 255] de la page UN.
voici le listing complet:
Mais alors ou est le problème me direz vous?
Le problème est que même si les décors sont chargés de facon cohérente sur la Page 1 qui me sert de Buffer, lorsque je déplace le héro, les décors sont correctement copiés/collés depuis toutes les pages vers toutes les pages SAUF... Sauf lorsque le héro se déplace sur la zone allant des pixels [212 à 255].
Je compte sur les grosses têtes du village pour m'aider à trouver une solution.
La vidéo est en cours de chargement
(Je poste avant de perdre tout ce que j'ai ecrit lol )
Je ne comprends pas pourquoi la Zone [212 à 255] bufférisée en page 1 n'est pas correctement "affichée" comme le reste des décors
Merci de votre aide. Edité par igal Le 03/04/2015 à 19h16
Toujours la tête dans mon projet Joe&Mac, je suis confronté à un nouveau problème.
Tout au long des jours et selon mes questions, on peut voir des débuts de réponse dans différents sujets mais là, mon problème semble conjuguer plusieurs difficultés techniques.
Pour copier des graphismes sur la zone allant de 212 à 255 de la page [Zéro], on peut appliquer cette simple technique:
COPY (0,0)-(255,43),quelconque TO (0,211+1),Zéro
ce qui aura pour effet de copier un dessin Haut de 44 Pixels sur la
Par contre, lorsque l'on veut utiliser cette technique sur une page autre que la page ZERO, les graphismes ne s'affichent pas avec cette technique
Gdx nous à gratifié d'une technique permettant d'afficher des graphismes dans les zones non accessibles des pages autres que la page ZERO.
http://www.msxvillage.fr/forum/topic.php?id=1956#m44958
De mon coté, j'ai essayé d'aborder le problème autrement en essayer la technique suivante:
1) Je BLOAD une image de 256 pixels de long sur 44 Pixels de Haut tel que en décalant l'image de 27136 bytes :
Code TEXT :
1070 'Charger image UN [44X256] depuis la ligne Zero vers Zero + 27136 bytes de décalage 1072 BLOAD"00000001.SC5",S,0+27136: COLOR=RESTORE 1074 ' 1076 'Entrer dans le repertoire I-1 [Image Un] 1078 CALL CHDIR ("J-1") 1080 '
2) Sauver les Bribes de l'images en indiquant qu'elles sont décalées de 27136 Bytes.
Code TEXT :
1090 'Creer repertoires de D a F et y générer 7 bribes hautes de 2 lignes. 1092 'Sauver les bribes lignes Zero vers Zero + 27136 bytes de décalage. 1206 CALL CHDIR ("D"): BSAVE"2",128*0+27136,128*2-1+27136,S 1207 BSAVE"3",128*2+27136,128*4-1+27136,S 1208 BSAVE"4",128*4+27136,128*6-1+27136,S 1209 BSAVE"5",128*6+27136,128*8-1+27136,S 1210 BSAVE"6",128*8+27136,128*10-1+27136,S 1211 BSAVE"7",128*10+27136,128*12-1+27136,S:CALL CHDIR ("..") 1212 CALL MKDIR ("E"):CALL CHDIR ("E"): BSAVE"0",128*12+27136,128*14-1+27136,S 1213 BSAVE"1",128*14+27136,128*16-1+27136,S 1214 BSAVE"2",128*16+27136,128*18-1+27136,S 1215 BSAVE"3",128*18+27136,128*20-1+27136,S 1216 BSAVE"4",128*20+27136,128*22-1+27136,S 1217 BSAVE"5",128*22+27136,128*24-1+27136,S 1218 BSAVE"6",128*24+27136,128*26-1+27136,S 1219 BSAVE"7",128*26+27136,128*28-1+27136,S:CALL CHDIR ("..") 1220 CALL MKDIR ("F"):CALL CHDIR ("F"): BSAVE"0",128*28+27136,128*30-1+27136,S 1221 BSAVE"1",128*30+27136,128*32-1+27136,S 1222 BSAVE"2",128*32+27136,128*34-1+27136,S 1223 BSAVE"3",128*34+27136,128*36-1+27136,S 1224 BSAVE"4",128*36+27136,128*38-1+27136,S 1225 BSAVE"5",128*38+27136,128*40-1+27136,S 1226 BSAVE"6",128*40+27136,128*42-1+27136,S 1227 BSAVE"7",128*42+27136,128*44-1+27136,S:CALL CHDIR ("..") 1264 'Revenir a la racine 1265 CALL CHDIR("..")
3) Charger les bribes par un simple BLOAD"BRIBES",S pour qu'elle se place automatiquement sur les lignes 212, 214, 216, 218 etc...jusqu'à la ligne 255 pour un total de 44 ligne affichées automatiquement sur la page Zéro.
Pour afficher des graphismes "Automatiquement" sur les zones 212 à 255 des pages 1, 2 et 3, il faut procéder comme suit:
1) On indique la page de travail ZERO (donc SET PAGE X,0)
SET PAGE 0,0 (par exemple)
2)On charge la bribe créée avec le générateur comme décrit plus haut (+27136 bytes)
Code TEXT :
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:'zone sprites 572 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900:'zone sprites 574 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900 576 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900:'zone sprites 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:'zone sprites 586 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900:'zone sprites 588 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900:'zone sprites 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
Jusqu'ici tout va bien.
On peut changer de page avec la commande SET PAGE 1,0 pour visualiser que les bribes s'affichent bien sur les zones allant de [212 à 255] de la page 1
Vous aurez remarqué qu'il y a deux BLOAD par ligne sur ce listing.
Il s'agit d'un...
premier BLOAD "X",S qui va afficher sur les zone [212 à 255] de la page ZERO.
Second BLOAD "X",S,0+32768 qui va afficher sur les zone [212 à 255] de la page UN.
voici le listing complet:
Code TEXT :
10 'SAVE"RPLAY33.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:COLOR1,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,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 ("I-1"):GOTO 200 102 IF I=1THEN CALL CHDIR ("I-2"):GOTO 200 104 IF I=2THEN CALL CHDIR ("I-3"):GOTO 200 106 IF I=3THEN CALL CHDIR ("I-4"):GOTO 200 200 CALL CHDIR ("D"):VB=D 202 BLOAD"2",S:COPY(0,210)-(255,211),0TO(0,210),1:GOSUB900 204 BLOAD"1",S:COPY(0,208)-(255,209),0TO(0,208),1:GOSUB900 206 CALL CHDIR ("..") 300 CALL CHDIR ("C") 302 BLOAD"8",S:COPY(0,206)-(255,207),0TO(0,206),1:GOSUB900 304 BLOAD"7",S:COPY(0,204)-(255,205),0TO(0,204),1:GOSUB900 306 BLOAD"6",S:COPY(0,202)-(255,203),0TO(0,202),1:GOSUB900 308 BLOAD"5",S:COPY(0,200)-(255,201),0TO(0,200),1:GOSUB900 310 BLOAD"4",S:COPY(0,198)-(255,199),0TO(0,198),1:GOSUB900 312 BLOAD"3",S:COPY(0,196)-(255,197),0TO(0,196),1:GOSUB900 314 BLOAD"2",S:COPY(0,194)-(255,195),0TO(0,194),1:GOSUB900 316 BLOAD"1",S:COPY(0,192)-(255,193),0TO(0,192),1:GOSUB900 318 CALL CHDIR ("..") 320 CALL CHDIR ("B") 322 BLOAD"8",S:COPY(0,190)-(255,191),0TO(0,190),1:GOSUB900 324 BLOAD"7",S:COPY(0,188)-(255,189),0TO(0,188),1:GOSUB900 326 BLOAD"6",S:COPY(0,186)-(255,187),0TO(0,186),1:GOSUB900 328 BLOAD"5",S:COPY(0,184)-(255,185),0TO(0,184),1:GOSUB900 330 BLOAD"4",S:COPY(0,182)-(255,183),0TO(0,182),1:GOSUB900 332 BLOAD"3",S:COPY(0,180)-(255,181),0TO(0,180),1:GOSUB900 334 BLOAD"2",S:COPY(0,178)-(255,179),0TO(0,178),1:GOSUB900 336 BLOAD"1",S:COPY(0,176)-(255,177),0TO(0,176),1:GOSUB900 338 CALL CHDIR ("..") 340 CALL CHDIR ("A") 342 BLOAD"8",S:COPY(0,174)-(255,175),0TO(0,174),1:GOSUB900 344 BLOAD"7",S:COPY(0,172)-(255,173),0TO(0,172),1:GOSUB900 346 BLOAD"6",S:COPY(0,170)-(255,171),0TO(0,170),1:GOSUB900 348 BLOAD"5",S:COPY(0,168)-(255,169),0TO(0,168),1:GOSUB900 350 BLOAD"4",S:COPY(0,166)-(255,167),0TO(0,166),1:GOSUB900 352 BLOAD"3",S:COPY(0,164)-(255,165),0TO(0,164),1:GOSUB900 354 BLOAD"2",S:COPY(0,162)-(255,163),0TO(0,162),1:GOSUB900 356 BLOAD"1",S:COPY(0,160)-(255,161),0TO(0,160),1:GOSUB900 358 CALL CHDIR ("..") 360 CALL CHDIR ("9") 362 BLOAD"8",S:COPY(0,158)-(255,159),0TO(0,158),1:GOSUB900 364 BLOAD"7",S:COPY(0,156)-(255,157),0TO(0,156),1:GOSUB900 366 BLOAD"6",S:COPY(0,154)-(255,155),0TO(0,154),1:GOSUB900 368 BLOAD"5",S:COPY(0,152)-(255,153),0TO(0,152),1:GOSUB900 370 BLOAD"4",S:COPY(0,150)-(255,151),0TO(0,150),1:GOSUB900 372 BLOAD"3",S:COPY(0,148)-(255,149),0TO(0,148),1:GOSUB900 374 BLOAD"2",S:COPY(0,146)-(255,147),0TO(0,146),1:GOSUB900 376 BLOAD"1",S:COPY(0,144)-(255,145),0TO(0,144),1:GOSUB900 378 CALL CHDIR ("..") 380 CALL CHDIR ("8") 382 BLOAD"8",S:COPY(0,142)-(255,143),0TO(0,142),1:GOSUB900 384 BLOAD"7",S:COPY(0,140)-(255,141),0TO(0,140),1:GOSUB900 386 BLOAD"6",S:COPY(0,138)-(255,139),0TO(0,138),1:GOSUB900 388 BLOAD"5",S:COPY(0,136)-(255,137),0TO(0,136),1:GOSUB900 390 BLOAD"4",S:COPY(0,134)-(255,135),0TO(0,134),1:GOSUB900 392 BLOAD"3",S:COPY(0,132)-(255,133),0TO(0,132),1:GOSUB900 394 BLOAD"2",S:COPY(0,130)-(255,131),0TO(0,130),1:GOSUB900 396 BLOAD"1",S:COPY(0,128)-(255,129),0TO(0,128),1:GOSUB900 398 CALL CHDIR ("..") 400 CALL CHDIR ("7") 402 BLOAD"8",S:COPY(0,126)-(255,127),0TO(0,126),1:GOSUB900 404 BLOAD"7",S:COPY(0,124)-(255,125),0TO(0,124),1:GOSUB900 406 BLOAD"6",S:COPY(0,122)-(255,123),0TO(0,122),1:GOSUB900 408 BLOAD"5",S:COPY(0,120)-(255,121),0TO(0,120),1:GOSUB900 410 BLOAD"4",S:COPY(0,118)-(255,119),0TO(0,118),1:GOSUB900 412 BLOAD"3",S:COPY(0,116)-(255,117),0TO(0,116),1:GOSUB900 414 BLOAD"2",S:COPY(0,114)-(255,115),0TO(0,114),1:GOSUB900 416 BLOAD"1",S:COPY(0,112)-(255,113),0TO(0,112),1:GOSUB900 418 CALL CHDIR ("..") 420 CALL CHDIR ("6") 422 BLOAD"8",S:COPY(0,110)-(255,111),0TO(0,110),1:GOSUB900 424 BLOAD"7",S:COPY(0,108)-(255,109),0TO(0,108),1:GOSUB900 426 BLOAD"6",S:COPY(0,106)-(255,107),0TO(0,106),1:GOSUB900 428 BLOAD"5",S:COPY(0,104)-(255,105),0TO(0,104),1:GOSUB900 430 BLOAD"4",S:COPY(0,102)-(255,103),0TO(0,102),1:GOSUB900 432 BLOAD"3",S:COPY(0,100)-(255,101),0TO(0,100),1:GOSUB900 434 BLOAD"2",S:COPY(0,98)-(255,99),0TO(0,98),1:GOSUB900 436 BLOAD"1",S:COPY(0,96)-(255,97),0TO(0,96),1:GOSUB900 438 CALL CHDIR ("..") 440 CALL CHDIR ("5") 442 BLOAD"8",S:COPY(0,94)-(255,95),0TO(0,94),1:GOSUB900 444 BLOAD"7",S:COPY(0,92)-(255,93),0TO(0,92),1:GOSUB900 446 BLOAD"6",S:COPY(0,90)-(255,91),0TO(0,90),1:GOSUB900 448 BLOAD"5",S:COPY(0,88)-(255,89),0TO(0,88),1:GOSUB900 450 BLOAD"4",S:COPY(0,86)-(255,87),0TO(0,86),1:GOSUB900 452 BLOAD"3",S:COPY(0,84)-(255,85),0TO(0,84),1:GOSUB900 454 BLOAD"2",S:COPY(0,82)-(255,83),0TO(0,82),1:GOSUB900 456 BLOAD"1",S:COPY(0,80)-(255,81),0TO(0,80),1:GOSUB900 458 CALL CHDIR ("..") 460 CALL CHDIR ("4") 462 BLOAD"8",S:COPY(0,78)-(255,79),0TO(0,78),1:GOSUB900 464 BLOAD"7",S:COPY(0,76)-(255,77),0TO(0,76),1:GOSUB900 466 BLOAD"6",S:COPY(0,74)-(255,75),0TO(0,74),1:GOSUB900 468 BLOAD"5",S:COPY(0,72)-(255,73),0TO(0,72),1:GOSUB900 470 BLOAD"4",S:COPY(0,70)-(255,71),0TO(0,70),1:GOSUB900 472 BLOAD"3",S:COPY(0,68)-(255,69),0TO(0,68),1:GOSUB900 474 BLOAD"2",S:COPY(0,66)-(255,67),0TO(0,66),1:GOSUB900 476 BLOAD"1",S:COPY(0,64)-(255,65),0TO(0,64),1:GOSUB900 478 CALL CHDIR ("..") 480 CALL CHDIR ("3") 482 BLOAD"8",S:COPY(0,62)-(255,63),0TO(0,62),1:GOSUB900 484 BLOAD"7",S:COPY(0,60)-(255,61),0TO(0,60),1:GOSUB900 486 BLOAD"6",S:COPY(0,58)-(255,59),0TO(0,58),1:GOSUB900 488 BLOAD"5",S:COPY(0,56)-(255,57),0TO(0,56),1:GOSUB900 490 BLOAD"4",S:COPY(0,54)-(255,55),0TO(0,54),1:GOSUB900 492 BLOAD"3",S:COPY(0,52)-(255,53),0TO(0,52),1:GOSUB900 494 BLOAD"2",S:COPY(0,50)-(255,51),0TO(0,50),1:GOSUB900 496 BLOAD"1",S:COPY(0,48)-(255,49),0TO(0,48),1:GOSUB900 498 CALL CHDIR ("..") 500 CALL CHDIR ("2") 502 BLOAD"8",S:COPY(0,46)-(255,47),0TO(0,46),1:GOSUB900 504 BLOAD"7",S:COPY(0,44)-(255,45),0TO(0,44),1:GOSUB900 506 BLOAD"6",S:COPY(0,42)-(255,43),0TO(0,42),1:GOSUB900 508 BLOAD"5",S:COPY(0,40)-(255,41),0TO(0,40),1:GOSUB900 510 BLOAD"4",S:COPY(0,38)-(255,39),0TO(0,38),1:GOSUB900 512 BLOAD"3",S:COPY(0,36)-(255,37),0TO(0,36),1:GOSUB900 514 BLOAD"2",S:COPY(0,34)-(255,35),0TO(0,34),1:GOSUB900 516 BLOAD"1",S:COPY(0,32)-(255,33),0TO(0,32),1:GOSUB900 518 CALL CHDIR ("..") 520 CALL CHDIR ("1") 522 BLOAD"8",S:COPY(0,30)-(255,31),0TO(0,30),1:GOSUB900 524 BLOAD"7",S:COPY(0,28)-(255,29),0TO(0,28),1:GOSUB900 526 BLOAD"6",S:COPY(0,26)-(255,27),0TO(0,26),1:GOSUB900 528 BLOAD"5",S:COPY(0,24)-(255,25),0TO(0,24),1:GOSUB900 530 BLOAD"4",S:COPY(0,22)-(255,23),0TO(0,22),1:GOSUB900 532 BLOAD"3",S:COPY(0,20)-(255,21),0TO(0,20),1:GOSUB900 534 BLOAD"2",S:COPY(0,18)-(255,19),0TO(0,18),1:GOSUB900 536 BLOAD"1",S:COPY(0,16)-(255,17),0TO(0,16),1:GOSUB900 538 CALL CHDIR ("..") 540 CALL CHDIR ("0") 542 BLOAD"8",S:COPY(0,14)-(255,15),0TO(0,14),1:GOSUB900 544 BLOAD"7",S:COPY(0,12)-(255,13),0TO(0,12),1:GOSUB900 546 BLOAD"6",S:COPY(0,10)-(255,11),0TO(0,10),1:GOSUB900 548 BLOAD"5",S:COPY(0,8)-(255,9),0TO(0,8),1:GOSUB900 550 BLOAD"4",S:COPY(0,6)-(255,7),0TO(0,6),1:GOSUB900 552 BLOAD"3",S:COPY(0,4)-(255,5),0TO(0,4),1:GOSUB900 554 BLOAD"2",S:COPY(0,2)-(255,3),0TO(0,2),1:GOSUB900 556 BLOAD"1",S:COPY(0,0)-(255,1),0TO(0,0),1:GOSUB900 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:'zone sprites 572 BLOAD"3",S:BLOAD"3",S,0+32768!:GOSUB 900:'zone sprites 574 BLOAD"2",S:BLOAD"2",S,0+32768!:GOSUB 900 576 BLOAD"1",S:BLOAD"1",S,0+32768!:GOSUB 900:'zone sprites 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:'zone sprites 586 BLOAD"6",S:BLOAD"6",S,0+32768!:GOSUB 900:'zone sprites 588 BLOAD"5",S:BLOAD"5",S,0+32768!:GOSUB 900:'zone sprites 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(X-20,Y)-(X+39+20,Y+45),1TO(80,100),3 1021 COPY(A,B)-(A+39,B+45),2TO(100,100),3,TPSET 1022 COPY(100-20,100)-(100+39+20,100+45),3TO(X-20,Y),0 1030 RETURN 1050 COPY(X-20,Y)-(X+58+20,Y+45),1TO(80,100),3 1051 COPY(C,D)-(C+58,D+45),2TO(100,100),3,TPSET:C=C+59:IFC=177THENC=0 1052 COPY(100-20,100)-(100+58+20,100+45),3TO(X-20,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 COPY(X-20,Y)-(X+39,Y+45),1TO(80,100),3 1321 X=X+20:B=0:D=92:COPY(A,B)-(A+39,B+45),2TO(100,100),3,TPSET:A=(A+40)MOD160 1322 COPY(80,100)-(100+39,100+45),3TO(X-40,Y),0 1330 RETURN 1350 COPY(X-20,Y)-(X+58,Y+45),1TO(80,100),3 1351 X=X+20:B=0:D=92:COPY(C,D)-(C+58,D+45),2TO(100,100),3,TPSET:C=C+59:IFC=177THENC=0 1352 COPY(80,100)-(100+58,100+45),3TO(X-40,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 COPY(X,Y)-(X+39+20,Y+45),1TO(100,100),3 1721 X=X-20:B=46:D=138:COPY(A,B)-(A+39,B+45),2TO(100,100),3,TPSET:A=(A+40)MOD160 1722 COPY(100,100)-(100+39+20,100+45),3TO(X+20,Y),0 1730 RETURN 1750 COPY(X,Y)-(X+58+20,Y+45),1TO(100,100),3 1751 X=X-20:B=46:D=138:COPY(C,D)-(C+58,D+45),2TO(100,100),3,TPSET:C=C+59:IFC=177THENC=0 1752 COPY(100,100)-(100+58+20,100+45),3TO(X+20,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
Mais alors ou est le problème me direz vous?
Le problème est que même si les décors sont chargés de facon cohérente sur la Page 1 qui me sert de Buffer, lorsque je déplace le héro, les décors sont correctement copiés/collés depuis toutes les pages vers toutes les pages SAUF... Sauf lorsque le héro se déplace sur la zone allant des pixels [212 à 255].
Je compte sur les grosses têtes du village pour m'aider à trouver une solution.
La vidéo est en cours de chargement
(Je poste avant de perdre tout ce que j'ai ecrit lol )
Je ne comprends pas pourquoi la Zone [212 à 255] bufférisée en page 1 n'est pas correctement "affichée" comme le reste des décors
Merci de votre aide. Edité par igal Le 03/04/2015 à 19h16
igal
Membre non connecté
Conseiller Municipal
Pour le moment, j'utilise aucun SPRITE.
J'utilise la commande VDP(9)=VDP(9)OR2 pour désactiver empêcher leurs affichage.
Métalion m'avait donné une commande pour déplacer les zones de SPRITES sur la PAGE [UN] avec les commandes suivantes:
VDP(5)=4:VDP(12)=3:VDP(6)=49
(ces commandes doivent être placées après le dernier SET PAGE puisque ce même SET PAGE réinitialise toutes les valeurs par défaut y compris les valeurs prédéterminées pour les SPRITES!
Arf...Du coup, peut être que ca vient foutre la merde sur la page UN qui me sert de Buffer
J'avais pas pensé à ca!
Je vais modifier le moteur pour placer le BUFFER en page 2 ou 3
Je continue à uploader la video... lol
J'utilise la commande VDP(9)=VDP(9)OR2 pour désactiver empêcher leurs affichage.
Métalion m'avait donné une commande pour déplacer les zones de SPRITES sur la PAGE [UN] avec les commandes suivantes:
VDP(5)=4:VDP(12)=3:VDP(6)=49
(ces commandes doivent être placées après le dernier SET PAGE puisque ce même SET PAGE réinitialise toutes les valeurs par défaut y compris les valeurs prédéterminées pour les SPRITES!
Arf...Du coup, peut être que ca vient foutre la merde sur la page UN qui me sert de Buffer
J'avais pas pensé à ca!
Je vais modifier le moteur pour placer le BUFFER en page 2 ou 3
Je continue à uploader la video... lol
igal
Membre non connecté
Conseiller Municipal
Voici la vidéo:
voici l'image disk contenant tout le nécessaire:
Le programme Basic est RPLAY33.ASC
JOE&MAC 29-03-2015.rar
Nb: Lorsque je parle de problèmes graphiques, je ne parle pas des "résidus" du Héro (j'ai pas terminé de couvrir toutes ses positions par le Buffer de la page 1).
Lorsque je parle de problème graphiques, je parle d'une large bande horizontale qui est [La Zone allant de 212 à 255] qui est bufférisée en page 1 et qui semble ne pas vouloir se "coller" correctement lors des opérations qui consiste à animer le Héro en page 3
(Z80...vais déplace la page qui sert de buffer )
Merci de votre aide Edité par igal Le 29/03/2015 à 23h13
voici l'image disk contenant tout le nécessaire:
Le programme Basic est RPLAY33.ASC
JOE&MAC 29-03-2015.rar
Nb: Lorsque je parle de problèmes graphiques, je ne parle pas des "résidus" du Héro (j'ai pas terminé de couvrir toutes ses positions par le Buffer de la page 1).
Lorsque je parle de problème graphiques, je parle d'une large bande horizontale qui est [La Zone allant de 212 à 255] qui est bufférisée en page 1 et qui semble ne pas vouloir se "coller" correctement lors des opérations qui consiste à animer le Héro en page 3
(Z80...vais déplace la page qui sert de buffer )
Merci de votre aide Edité par igal Le 29/03/2015 à 23h13
ericb59 :
la zone (0,212-(255,255) est innaccessible avec l'instruction copy
En BASIC peut-être, mais pas en ssembleur!
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
igal
Membre non connecté
Conseiller Municipal
@Eric: Regarde la vidéo à de la seconde [10 à 30] tu vois défiler les lignes [0 à 211] sur la page UN grâce à la fonction COPY.
De la Seconde [30 à 37], tu vois défiler les lignes [212 à 255] toujours sur la page UN.
Pour atteindre cette Zone en page UN, grace à la commande BLOAD.
j'ai utilisé la méthode suivante:
1) je BLOAD une image de 44Lignes de 256 Pixels dans la zone allant de [212 à 256].
Voici comment => BLOAD"00000001.SC5",S,0+27136: COLOR=RESTORE
2) Je BSAVE cette image en indiquant qu'elle est située en zone [ ,0+27136].
BSAVE"IMAGE.SC5",128*0+27136,128*44-1+27136,S
3) Les Points (1) et (2) suffisent à afficher une image de 44 lignes de haut sur 256 de long [Automatiquement] dans la zone "inaccessible" allant de la ligne [212 à 255] par la commande suivante => BLOAD"IMAGE.SC5",S
Tu peux aussi afficher cette image haute de 44X256 dans la Zone allant des lignes [212 à 256] de la page UN en appliquant ce qui suit:
les points (1) et (2) restent les mêmes.
Le point (3) se présente comme suit:
=> SET PAGE 0,X
=> BLOAD"IMAGE.SC5",S,0+32768!
Cela signifie que tu ES sur la page ZERO.
Tu Charges sur la page ZERO une image qui dans son [Entête] indique qu'elle doit être placée dans la zone que j'appelle [Ligne 212 à 256].
Mais ...Mais... Mais...
Le bouquet final est que tu indique que tu veut afficher cette image 32768 bytes plus loin que la byte ZERO de la page ZERO!
Au final, ton image s'affiche dans la zone [212 à 255] décallée de 256 lignes avec un top départ de la Page ZERO, Pixel ZERO...donc Page UN
Je n'ai pas appliqué la méthode de Gdx, mais si j'ai compris ses explications, on arrive au même résulta en procédant de deux façons différentes Edité par igal Le 30/03/2015 à 11h20
De la Seconde [30 à 37], tu vois défiler les lignes [212 à 255] toujours sur la page UN.
Pour atteindre cette Zone en page UN, grace à la commande BLOAD.
j'ai utilisé la méthode suivante:
1) je BLOAD une image de 44Lignes de 256 Pixels dans la zone allant de [212 à 256].
Voici comment => BLOAD"00000001.SC5",S,0+27136: COLOR=RESTORE
2) Je BSAVE cette image en indiquant qu'elle est située en zone [ ,0+27136].
BSAVE"IMAGE.SC5",128*0+27136,128*44-1+27136,S
3) Les Points (1) et (2) suffisent à afficher une image de 44 lignes de haut sur 256 de long [Automatiquement] dans la zone "inaccessible" allant de la ligne [212 à 255] par la commande suivante => BLOAD"IMAGE.SC5",S
Tu peux aussi afficher cette image haute de 44X256 dans la Zone allant des lignes [212 à 256] de la page UN en appliquant ce qui suit:
les points (1) et (2) restent les mêmes.
Le point (3) se présente comme suit:
=> SET PAGE 0,X
=> BLOAD"IMAGE.SC5",S,0+32768!
Cela signifie que tu ES sur la page ZERO.
Tu Charges sur la page ZERO une image qui dans son [Entête] indique qu'elle doit être placée dans la zone que j'appelle [Ligne 212 à 256].
Mais ...Mais... Mais...
Le bouquet final est que tu indique que tu veut afficher cette image 32768 bytes plus loin que la byte ZERO de la page ZERO!
Au final, ton image s'affiche dans la zone [212 à 255] décallée de 256 lignes avec un top départ de la Page ZERO, Pixel ZERO...donc Page UN
Je n'ai pas appliqué la méthode de Gdx, mais si j'ai compris ses explications, on arrive au même résulta en procédant de deux façons différentes Edité par igal Le 30/03/2015 à 11h20
igal
Membre non connecté
Conseiller Municipal
On peut mon ami
C'est Jipe qui m'a sorti ce lapin d'son chapeau
http://youtu.be/UXV-3OdZI8c
Ce qu'on peut pas faire avec COPY c'est [Copier] vers la zone [211 à 255] d'une page autre que la page ZERO.
Cela explique pourquoi mon Listing contient de COPY sur la quasi totalité des brides devant être affichées sur la Page UN, sauf pour la partie hors Zone de la page UN ou je "répète deux fois" la commande BLOAD
C'est pour trouver une parade à ce problème que j'ai posté le sujet => http://www.msxvillage.fr/forum/topic.php?id=2703
Edit: étonnamment, les SPRITES n'ont pas l'air de souffrir d'avoir des graphismes affichés sur la zone des sprite Edité par igal Le 30/03/2015 à 16h50
C'est Jipe qui m'a sorti ce lapin d'son chapeau
http://youtu.be/UXV-3OdZI8c
Code TEXT :
10 'DEFUSR=&HD000:A=USR(0):FORP=0TO10:NEXT:POKE&HFD9F,201:SAVE"vdp27.asc",a 20 VDP(10)=(0):WIDTH80:SCREEN5,2:COLOR 15,1,1:SETPAGE0,0:CLS:DEFINTA-Z 30 ' 40 ' Chargement ecran des niveaux en page 3 50 ' 60 SETPAGE0,3:BLOAD"fondw.sc5",S 70 ' 80 ' Chargement ecran des "sprites" en page 2 90 ' 100 SETPAGE0,1:BLOAD"winnie.sc5",S 110 COLOR=RESTORE 120 ' 130 ' -----------INSERTION DES MUSIQUES ET SONS---------- 140 GOTO 1530 150 'DEFUSR=&HD000:A=USR(0):'STOP LA MUSIQUE 160 DEFUSR=&HD000:A=USR(0):POKE&HCFFF,30:A=USR2(0):' MUSIQUE STAGE 6 170 ' 180 ' Cr‚ation d'un sprite pour masque en page 0 190 ' 200 SETPAGE0,0 210 FORI=&H7800TO&H781F:VPOKEI,255:NEXTI 220 'PUTSPRITE0,(100,100),7,0 230 ' 240 ' Initialisation des varibles 250 ' 260 V=3 270 C=0:X=100:Y=80:D=52:A=0:N=1:M=0 280 ' 290 ' Mise en place d‚cors 300 ' 310 GOSUB 1440 320 COPY(0,161)-(255,199),0TO(0,192),0:' Overscan 330 ' 340 ' Sprites ennemis statiques 350 ' 360 'ONSPRITEGOSUB1090 370 'PUTSPRITE5,(150,100),1,0:PUTSPRITE6,(180,75),1,0:PUTSPRITE7,(180,125),1,0 380 'PUTSPRITE8,(200,150),1,0:PUTSPRITE9,(200,50),1,0:putsprite10,(100,100),1,0 390 'SPRITE ON 400 ' 410 ' Boucle du moteur principale 420 ' 430 S=STICK(0):ONS+1GOSUB510,570,640,710,770,840,910,980,1040 440 PUTSPRITE0,(X,Y),11,0:PUTSPRITE1,(X,Y),0,0:PUTSPRITE2,(-X,X),9,0 450 PUTSPRITE3,(-X,-Y),15,0:PUTSPRITE4,(-Y,X),8,0:PUTSPRITE5,(VDP(27),X),1,0 460 GOTO 430 470 ' 480 ' 490 ' SP gestion mouvement: STATIQUE 500 ' 510 IFSTRIG(0)THENPOKE&HCFFF,11:A=USR2(0):PUTSPRITE1,(X+50,Y),3,0 520 IFX<1THENX=0:'N=N-1:GOSUB1380 530 VDP(27)=VDP(27)+1AND255:X=X-1:RETURN 540 ' 550 ' SP gestion mouvement: HAUT 560 ' 570 IFSTRIG(0)THENPOKE&HCFFF,11:A=USR2(0):PUTSPRITE1,(X,Y-50),3,0 580 IFY<-6THENY=-7:VDP(24)=VDP(24)+1 590 IFX<1THENX=0:'N=N-1:GOSUB1380 600 VDP(24)=VDP(24)-1AND255:Y=Y-6:X=X-1:VDP(27)=VDP(27)+1AND255:RETURN 610 ' 620 ' SP gestion mouvement: HAUT/DROITE 630 ' 640 IFSTRIG(0)THENPOKE&HCFFF,11:A=USR2(0):PUTSPRITE1,(X+50,Y-50),3,0 650 IFY<-6THENY=-7:VDP(24)=VDP(24)+1 660 IFX>200THENX=196:N=N+1:GOSUB1400 670 VDP(24)=VDP(24)-1AND255:Y=Y-6:X=X+4:VDP(27)=VDP(27)+1AND255:RETURN 680 ' 690 ' SP gestion mouvement: DROITE 700 ' 710 IFSTRIG(0)THENPOKE&HCFFF,11:A=USR2(0):PUTSPRITE1,(X+50,Y),3,0 720 IFX>200THENX=196:N=N+1:GOSUB1400 730 VDP(27)=VDP(27)+1AND255:X=X+4:RETURN 740 ' 750 ' SP gestion mouvement: DROITE/BAS 760 ' 770 IFSTRIG(0)THENPOKE&HCFFF,11:A=USR2(0):PUTSPRITE1,(X+50,Y+50),3,0 780 IFY>189THENY=190:VDP(24)=VDP(24)-1 790 IFX>200THENX=196:N=N+1:GOSUB1400 800 VDP(24)=VDP(24)+1AND255:Y=Y+6:X=X+4:VDP(27)=VDP(27)+1AND255:RETURN 810 ' 820 ' SP gestion mouvement: BAS 830 ' 840 IFSTRIG(0)THENPOKE&HCFFF,11:A=USR2(0):PUTSPRITE1,(X,Y+50),3,0 850 IFY>189THENY=190:VDP(24)=VDP(24)-1 860 IFX<1THENX=0:'N=N-1:GOSUB1380 870 VDP(24)=VDP(24)+1AND255:Y=Y+6:X=X-1:VDP(27)=VDP(27)+1AND255:RETURN 880 ' 890 ' SP gestion mouvement: BAS/GAUCHE 900 ' 910 IFSTRIG(0)THENPOKE&HCFFF,11:A=USR2(0):PUTSPRITE1,(X-50,Y+50),3,0:'THEND=0 920 IFY>189THENY=190:VDP(24)=VDP(24)-1 930 IFX<1THENX=0:'N=N-1:GOSUB1380 940 VDP(24)=VDP(24)+1AND255:Y=Y+6:X=X-4:VDP(27)=VDP(27)+1AND255:RETURN 950 ' 960 ' SP gestion mouvement: GAUCHE 970 ' 980 IFSTRIG(0)THENPOKE&HCFFF,11:A=USR2(0):PUTSPRITE1,(X-50,Y),3,0:'THEND=0 990 IFX<1THENX=0:'N=N-1:GOSUB1380 1000 VDP(27)=VDP(27)+1AND255:X=X-6:RETURN 1010 ' 1020 ' SP gestion mouvement: GAUCHE/HAUT 1030 ' 1040 IFSTRIG(0)THENPOKE&HCFFF,11:A=USR2(0):PUTSPRITE1,(X+50,Y+50),3,0:'THEND=0 1050 IFY<-6THENY=-7:VDP(24)=VDP(24)+1 1060 IFX<1THENX=0:'N=N-1:GOSUB1380 1070 VDP(24)=VDP(24)-1AND255:Y=Y-6:X=X-4:VDP(27)=VDP(27)+1AND255:RETURN 1080 ' 1090 ' Collisions 1100 ' 1110 IF P=10THEN1260 ' si trou -> SP tombe 1120 COPY(X,Y)-(X+34,Y+50),2TO(0,0),3 1130 COPY(D,A)-(D+25,A+37),1TO(4,4),3,TPSET 1140 COPY(0,0)-(34,50),3TO(X,Y),0 1150 POKE&HFD9F,201 1160 PSET(INT((X+15)/16),202+INT((Y+4)/16)),15:B=P*6:F=P*5 1170 COPY(240,191)-(255,206),1TO((INT((X+15)/16))*16,(INT((Y+36)/16))*16),2 1180 COPY(208,P*16-112)-(223,P*16-97),1TO(C*16+32,196),0 1190 POKE&HFD9F,201:POKE&HFDA0,&H6:POKE&HFDA1,&HD0:POKE&HFD9F,&HC3 1200 POKE&HCFFF,82:A=USR2(0) 1210 C=C+1 1220 GOTO 430 1230 ' 1240 ' SP chute dans le trou 1250 ' 1260 FORI=0TO36STEP2 1270 COPY(X,Y)-(X+34,Y+50),2TO(0,0),3 1280 COPY(D,A)-(D+25,A+37-I),1TO(4,4+I),3,TPSET 1290 COPY(0,0)-(34,50),3TO(X,Y),0 1300 A=A+38:IFA=190THENA=38 1310 B=I+40:POKE&HCFFF,70:A=USR2(0) 1320 IFPLAY(0)=-1THEN1320 1330 NEXT 1340 M=0:N=0 1350 LINE(32,196)-(255,212),1,BF 1360 V=V-1:IFV=0THEN1380 1370 GOTO 270 1380 SCREEN0:PRINT" GAME OVER 1390 GOTO1390 1400 ' 1410 ' SP Mise en place du d‚cor 1420 ' 1430 COPY(0,200)-(15,211),0TO(M*16,200),3 1440 COPY(N*16,200)-(15+N*16,211),3TO(0,200),0 1450 POKE&HCFFF,69:A=USR2(0) 1460 FORI=0TO15:FORJ=0TO11:P=POINT(I,J+200):COPY(P*16,191)-(15+P*16,206),1TO(I*16,J*16),0 1470 NEXTJ:NEXTI 1480 COPY(0,0)-(256,192),0TO(0,0),2 1490 M=N 1500 'BEEP 1510 RETURN 1520 GOTO 1520 1530 '---------DEBUT DE SALAMANDER DEMO MODIFIE---------------- 1540 'POKE&HFBB1,1: 'EMPECHE CONTROL+STOP 1550 BLOAD"1.006":DEFUSR4=&HD600:' CHARGE LE PLAYER ? 1560 BLOAD"1.007":U=USR4(1):' CHARGE SONS ET MUSIQUES 1570 BLOAD"1.008":U=USR4(2):' CHARGE SONS ET MUSIQUES 1580 BLOAD"1.009":U=USR4(3):' CHARGE SONS ET MUSIQUES 1590 BLOAD"1.010":U=USR4(4):' CHARGE SONS ET MUSIQUES 1600 BLOAD"1.011":FORT=0TO2000:NEXT 1610 DEFUSR=&HD000:A=USR(0): 'PREREQUIS ARRET LA MUSIQUE 1620 DEFUSR2=&HD003:' PREREQUIS FONCTION INCONNUE 1630 POKE&HFD9F,201 1640 POKE&HFDA0,&H6:POKE&HFDA1,&HD0:POKE&HFD9F,&HC3 1650 ' LISTE COMPLETE DES MUSIQUES ET SONS DANS POKE SALAMANDER 1660 ' 1670 DEFUSR=&HD000:A=USR(0):POKE&HCFFF,32:A=USR2(0):' MUSIQUE STAGE 6 1680 'POKE&HCFFF,67:A=USR2(0):' EXPLOSION D'ENNEMI MOYENNE 1690 ' 1700 'DEFUSR=&HD000:A=USR(0):FORP=0TO10:NEXT:POKE&HFD9F,201:'PERMET ACCES DISK MAIS ARRETER MUSIQUE AVANT 1710 GOTO 150:' RETOUR A L ANIMATION 1720 ' 1730 '---------FIN DE SALAMANDER DEMO MODIFIE-------------------
Ce qu'on peut pas faire avec COPY c'est [Copier] vers la zone [211 à 255] d'une page autre que la page ZERO.
Cela explique pourquoi mon Listing contient de COPY sur la quasi totalité des brides devant être affichées sur la Page UN, sauf pour la partie hors Zone de la page UN ou je "répète deux fois" la commande BLOAD
C'est pour trouver une parade à ce problème que j'ai posté le sujet => http://www.msxvillage.fr/forum/topic.php?id=2703
Edit: étonnamment, les SPRITES n'ont pas l'air de souffrir d'avoir des graphismes affichés sur la zone des sprite Edité par igal Le 30/03/2015 à 16h50
igal
Membre non connecté
Conseiller Municipal
@z80: je vais réaliser différents générateurs de bribes de sorte à permettre l'affichage sur les zones automatique dans la zone [212 à 256] des pages 1, 2 et 3.
Logiquement, le BLOAD"image",S,0+ 32768 prend toujours comme point de référence le bytes 0 de la page 0 et ce, qu'elle que soit la page affichée ou la page de travail.
Soyons optimiste, ça devrait marcher
Logiquement, le BLOAD"image",S,0+ 32768 prend toujours comme point de référence le bytes 0 de la page 0 et ce, qu'elle que soit la page affichée ou la page de travail.
Soyons optimiste, ça devrait marcher
igal
Membre non connecté
Conseiller Municipal
Bonne nouvelle. Ca marche
En fait, il faut impérativement travailler de la façon suivante.
Tout d'abord, pour rappel, On peut atteindre aisément la Zone [212 à 256] de SET PAGE 0 avec la commande COPY:
SET PAGE 0,0
COPY (0,0)-(255,43),0 TO (0,212),0
Applicable sur toutes les pages pourvues que l'on copie dans la même page.
Les Copies Hors Zone peuvent être appliquées d'une page à l'autre pourvu que l'on procède par le binomes suivant:
COPY (0,0)-(255,43),0 TO (0,212),1
ou encore
COPY (0,0)-(255,43),2 TO (0,212),3
a partir de là toutes les combinaisons avec BLOAD sont possibles pourvue que l'on travail encore en respectant ces règles.
Les deux combinaisons suivantes sont possibles pour copier Hors Zone:
Je BLOAD sur la page ZERO et je COPY (hors Zone) en Page 1
Je BLOAD sur la Page DEUX et je COPY (hors Zone) en Page 3
Encore quelques testes et je classe le sujet comme résolu
N'hésitez pas à donner votre point de vu sur ces limitations
En fait, il faut impérativement travailler de la façon suivante.
Tout d'abord, pour rappel, On peut atteindre aisément la Zone [212 à 256] de SET PAGE 0 avec la commande COPY:
SET PAGE 0,0
COPY (0,0)-(255,43),0 TO (0,212),0
Applicable sur toutes les pages pourvues que l'on copie dans la même page.
Les Copies Hors Zone peuvent être appliquées d'une page à l'autre pourvu que l'on procède par le binomes suivant:
COPY (0,0)-(255,43),0 TO (0,212),1
ou encore
COPY (0,0)-(255,43),2 TO (0,212),3
a partir de là toutes les combinaisons avec BLOAD sont possibles pourvue que l'on travail encore en respectant ces règles.
Les deux combinaisons suivantes sont possibles pour copier Hors Zone:
Je BLOAD sur la page ZERO et je COPY (hors Zone) en Page 1
Je BLOAD sur la Page DEUX et je COPY (hors Zone) en Page 3
Encore quelques testes et je classe le sujet comme résolu
N'hésitez pas à donner votre point de vu sur ces limitations
igal
Membre non connecté
Conseiller Municipal
Conclusions: on peut donc utiliser le double buffer avec la technique du vdp (24) pourvu que les COPY vers les hors zones se fasse en respectant les indications qui sont données juste au dessus.
L'affaire est [RESOLU]
Dédicacé a turboseb qui a supporté sans broncher mes délires sur le vdp lors de sa visite lol Edité par igal Le 01/04/2015 à 14h20
L'affaire est [RESOLU]
Dédicacé a turboseb qui a supporté sans broncher mes délires sur le vdp lors de sa visite lol Edité par igal Le 01/04/2015 à 14h20
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie