La Place des Développeurs [EN COURS] Double Buffer Scroll VDP(24) Créer un double buffer hors des zones d'affichage.
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:GOTO100Jusqu'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
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
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,...
@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
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
@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
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
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



