MSX Village forum

La Place des Développeurs [EN COURS] VDP(24) et décors destructibles. Interagir sur un décor scrollé.

igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 23/10/2014 à 19h54
Salut à tous.

Pour aller plus loin dans les possibilités offertes par l'utilisation de VDP(24), j'ai entrepris de modifier les décors selon l'action du HERO ou de son TIR :top


Voici le principe sous forme d'un schéma:


L'idée est la suivante:

1) Un décors principal appelé MASTER est Scrolé par Bribes de 2 Pixels.
2) 16 décors BETA supplémentaires sont crées tels que [BETA 0] à [BETA F].
3) Chaque Décors BETA contient la Mappe identique que MASTER mais avec TOUS les ennemis contenus dans une colonne de 16 Pixels détruits!
4) La POSITION X (horizontale) du HERO détermine quelle MAPPE BETA afficher sous condition de TIR => IF STRIG (0) THEN CALL CHDIR ("BETA XYZ"): GOSUB => BRIBES
5) La POSITION Y (verticale) du HERO (ou du TIR) détermine quelle BRIBES BETA afficher.

voici un exemple simple:
Mappe Master:

sur cette MAP,les ennemis "Immobiles" sont intacts.

Mappe Beta:


Voici une première ébauche du programme.
Code TEXT :
 
 
10 'SAVE"RPLAY15.asc",A
20 'Version 001
30 'PLAYER DE BRIBES HORIZONTAL [22X(2X256)]+[(106X(4X256)]
40 VDP(10)=0:SCREEN 10:SET PAGE 0,1:VDP(12)=&B001000000:VDP(6)=&B00111111:VDP(7)=&B00000000:CALL CHDIR ("M-0")
50 N=2:P=0:R=0:X=100:Y=100
60 IF P=0THEN CALL CHDIR (".."):CALL CHDIR ("M-0"):PB=0:GOSUB 220
70 IF P=1THEN CALL CHDIR (".."):CALL CHDIR ("M-1"):GOTO220
80 IF P=2THEN CALL CHDIR (".."):CALL CHDIR ("M-2"):GOTO220
90 IF P=3THEN CALL CHDIR (".."):CALL CHDIR ("M-3"):GOTO220
100 IF P=4THEN CALL CHDIR (".."):CALL CHDIR ("M-4"):GOTO220
110 IF P=5THEN CALL CHDIR (".."):CALL CHDIR ("M-5"):GOTO220
120 IF P=6THEN CALL CHDIR (".."):CALL CHDIR ("M-6"):GOTO220
130 IF P=7THEN CALL CHDIR (".."):CALL CHDIR ("M-7"):GOTO220
140 IF P=8THEN CALL CHDIR (".."):CALL CHDIR ("M-8"):GOTO220
150 IF P=9THEN CALL CHDIR (".."):CALL CHDIR ("M-9"):GOTO220
160 IF P=10THEN CALL CHDIR (".."):CALL CHDIR ("M-A"):GOTO220
170 IF P=11THEN CALL CHDIR (".."):CALL CHDIR ("M-B"):GOTO220
180 IF P=12THEN CALL CHDIR (".."):CALL CHDIR ("M-C"):GOTO220
190 IF P=13THEN CALL CHDIR (".."):CALL CHDIR ("M-D"):GOTO220
200 IF P=14THEN CALL CHDIR (".."):CALL CHDIR ("M-E"):GOTO220
210 IF P=15THEN CALL CHDIR (".."):CALL CHDIR ("M-F"):P=0:PB=15:GOTO220
220 CALL CHDIR ("0"):RB = 0
222  BLOAD"0",S,0-11264:GOSUB 1510
224  BLOAD"1",S,0-11264:GOSUB 1510
226  BLOAD"2",S,0-11264:GOSUB 1510
228  BLOAD"3",S,0-11264:GOSUB 1510
230  BLOAD"4",S,0-11264:GOSUB 1510
232  BLOAD"5",S,0-11264:GOSUB 1510
234  BLOAD"6",S,0-11264:GOSUB 1510
236  BLOAD"7",S,0-11264:GOSUB 1510
238  BLOAD"8",S,0-11264:GOSUB 1510
240  BLOAD"9",S,0-11264:GOSUB 1510
242  BLOAD"A",S,0-11264:GOSUB 1510
244  BLOAD"B",S,0-11264:GOSUB 1510
246  BLOAD"C",S,0-11264:GOSUB 1510
248  BLOAD"D",S,0-11264:GOSUB 1510
250  BLOAD"E",S,0-11264:GOSUB 1510
252  BLOAD"F",S,0-11264:GOSUB 1510
254 R=R+1:CALL CHDIR (".."):CALL CHDIR ("1")
256 BLOAD"0",S,0-11264:GOSUB 1510
258 BLOAD"1",S,0-11264:GOSUB 1510
260 BLOAD"2",S,0-11264:GOSUB 1510
262 BLOAD"3",S,0-11264:GOSUB 1510
264 BLOAD"4",S,0-11264:GOSUB 1510
266 BLOAD"5",S,0-11264:GOSUB 1510
268 BLOAD"6",S:GOSUB 1510
270 BLOAD"7",S:GOSUB 1510
272 BLOAD"8",S:GOSUB 1510
274 BLOAD"9",S:GOSUB 1510
276 BLOAD"A",S:GOSUB 1510
278 BLOAD"B",S:GOSUB 1510
280 BLOAD"C",S:GOSUB 1510
282 BLOAD"D",S:GOSUB 1510
284 BLOAD"E",S:GOSUB 1510
286 BLOAD"F",S:GOSUB 1510
288 R=R+1:CALL CHDIR (".."):CALL CHDIR ("2"):GOTO 300
290 IF R=3THEN CALL CHDIR ("3"):GOTO 300
291 IF R=4THEN CALL CHDIR ("4"):GOTO 300
292 IF R=5THEN CALL CHDIR ("5"):GOTO 300
293 IF R=6THEN CALL CHDIR ("6"):GOTO 300
294 IF R=7THEN CALL CHDIR ("7"): RB=7: GOTO 300
300 IF R=8THEN R=0 : P=P+1 : GOTO 60
301 BLOAD"0",S:GOSUB 1510
302 BLOAD"1",S:GOSUB 1510
304 BLOAD"2",S:GOSUB 1510
306 BLOAD"3",S:GOSUB 1510
308 BLOAD"4",S:GOSUB 1510
310 BLOAD"5",S:GOSUB 1510
312 BLOAD"6",S:GOSUB 1510
314 BLOAD"7",S:GOSUB 1510
316 BLOAD"8",S:GOSUB 1510
318 BLOAD"9",S:GOSUB 1510
320 BLOAD"A",S:GOSUB 1510
322 BLOAD"B",S:GOSUB 1510
324 BLOAD"C",S:GOSUB 1510
326 BLOAD"D",S:GOSUB 1510
328 BLOAD"E",S:GOSUB 1510
330 BLOAD"F",S:GOSUB 1510
332 R=R+1:CALL CHDIR (".."):GOTO 290
1500 '
1510 Y=Y+2AND255:COPY(0,0)-(3,3),0TO(X,Y),0:VDP(24)=VDP(24)+252and255:N=N+2AND255:IFSTRIG(0)THENGOSUB2000
1515 S=STICK(0):ONS+1 GOSUB 1530,1560,1590,1620,1650,1690,1720,1750,1780:RETURN
1520 '
1530 'STATIQUE
1540 RETURN
1550 '
1560 'HAUT
1570 Y=Y-2AND255:RETURN
1580 '
1590 'DIAGO HAUT DROITE
1600 X=X+2AND255:Y=Y-2AND255:RETURN
1610 '
1620 'DROITE
1630 X=X+2AND255:RETURN
1640 '
1650 'DROITE BAS
1660 X=X+2AND255:Y=Y+2AND255:RETURN
1670 '
1680 '
1690 'BAS
1700 Y=Y+2AND255:RETURN
1710 '
1720 'DIAGO BAS GAUCHE
1730 X=X-4AND255:Y=Y+2AND255:RETURN
1740 '
1750 'GAUCHE
1760 X=X-4AND255:RETURN
1770 '
1780 'DIAGO HAUT GAUCHE
1790 X=X-4:Y=Y-2:RETURN
2000 '
2010 'BETA MAPPE Longitude "X" '(Sélécteur de Colonnes)
2020 CALL CHDIR (".."):CALL CHDIR ("..")
2020 IF X>239THEN CALL CHDIR ("B-F"): GOTO 3000
2030 IF X>223THEN CALL CHDIR ("B-E"): GOTO 3000
2040 IF X>207THEN CALL CHDIR ("B-D"): GOTO 3000
2030 IF X>191THEN CALL CHDIR ("B-C"): GOTO 3000
2040 IF X>175THEN CALL CHDIR ("B-B"): GOTO 3000
2050 IF X>159THEN CALL CHDIR ("B-A"): GOTO 3000
2060 IF X>143THEN CALL CHDIR ("B-9"): GOTO 3000
2070 IF X>127THEN CALL CHDIR ("B-8"): GOTO 3000
2080 IF X>111THEN CALL CHDIR ("B-7"): GOTO 3000
2090 IF X>95THEN CALL CHDIR ("B-6"): GOTO 3000
2100 IF X>79THEN CALL CHDIR ("B-5"): GOTO 3000
2110 IF X>63THEN CALL CHDIR ("B-4"): GOTO 3000
2120 IF X>47THEN CALL CHDIR ("B-3"): GOTO 3000
2130 IF X>31THEN CALL CHDIR ("B-2"): GOTO 3000
2140 IF X>15THEN CALL CHDIR ("B-1"): GOTO 3000
2150 IF X>-1THEN CALL CHDIR ("B-0"): GOTO 3000
 
3000 '
3010 'BETA MAPPE Latitude "Y" (Selecteur de bribes)
3020 IF Y>239THEN CALL CHDIR ("7"): GOTO 4316
3030 IF Y>223THEN CALL CHDIR ("7"): GOTO 4301
3040 IF Y>207THEN CALL CHDIR ("6"): GOTO 4316
3030 IF Y>191THEN CALL CHDIR ("6"): GOTO 4301
3040 IF Y>175THEN CALL CHDIR ("5"): GOTO 4316
3050 IF Y>159THEN CALL CHDIR ("5"): GOTO 4301
3060 IF Y>143THEN CALL CHDIR ("4"): GOTO 4316
3070 IF Y>127THEN CALL CHDIR ("4"): GOTO 4301
3080 IF Y>111THEN CALL CHDIR ("3"): GOTO 4316
3090 IF Y>95THEN CALL CHDIR ("3"): GOTO 4301
3100 IF Y>79THEN CALL CHDIR ("2"):GOTO 4316
3110 IF Y>63THEN CALL CHDIR ("2"):GOTO 4301
3120 IF Y>47THEN CALL CHDIR ("1"):GOTO 4272
3130 IF Y>31THEN CALL CHDIR ("1"):GOTO 4254
3140 IF Y>15THEN CALL CHDIR ("0"):GOTO 4238
3150 IF Y>-1THEN CALL CHDIR ("0"):GOTO 4220
 
 
4000 ' BRIBES BETA (Lecteur de Bribes par groupe de 8)
4220 '
4222  BLOAD"0",S,0-11264
4224  BLOAD"1",S,0-11264
4226  BLOAD"2",S,0-11264
4228  BLOAD"3",S,0-11264
4230  BLOAD"4",S,0-11264
4232  BLOAD"5",S,0-11264
4234  BLOAD"6",S,0-11264
4236  BLOAD"7",S,0-11264:CALL CHDIR (".."):CALL CHDIR (".."):GOTO 5000
 
4238  BLOAD"8",S,0-11264
4240  BLOAD"9",S,0-11264
4242  BLOAD"A",S,0-11264
4244  BLOAD"B",S,0-11264
4246  BLOAD"C",S,0-11264
4248  BLOAD"D",S,0-11264
4250  BLOAD"E",S,0-11264
4252  BLOAD"F",S,0-11264:CALL CHDIR (".."):CALL CHDIR (".."):GOTO 5000
 
4254 BLOAD"0",S,0-11264
4258 BLOAD"1",S,0-11264
4260 BLOAD"2",S,0-11264
4262 BLOAD"3",S,0-11264
4264 BLOAD"4",S,0-11264
4266 BLOAD"5",S,0-11264
4268 BLOAD"6",S
4270 BLOAD"7",S:CALL CHDIR (".."):CALL CHDIR (".."):GOTO 5000
 
4272 BLOAD"8",S
4274 BLOAD"9",S
4276 BLOAD"A",S
4278 BLOAD"B",S
4280 BLOAD"C",S
4282 BLOAD"D",S
4284 BLOAD"E",S
4286 BLOAD"F",S:CALL CHDIR (".."):CALL CHDIR (".."):GOTO 5000
 
4301 BLOAD"0",S
4302 BLOAD"1",S
4304 BLOAD"2",S
4306 BLOAD"3",S
4308 BLOAD"4",S
4310 BLOAD"5",S
4312 BLOAD"6",S
4314 BLOAD"7",S:CALL CHDIR (".."):CALL CHDIR (".."):GOTO 5000
 
4316 BLOAD"8",S
4318 BLOAD"9",S
4320 BLOAD"A",S
4322 BLOAD"B",S
4324 BLOAD"C",S
4326 BLOAD"D",S
4328 BLOAD"E",S
4330 BLOAD"F",S:CALL CHDIR (".."):CALL CHDIR (".."):GOTO 5000
4332 '
 
 
5000 ' Retour au Réperoire Initial
 
5210 IF PB=15THEN CALL CHDIR ("M-F"):GOTO 6000
5060 IF P=0THEN CALL CHDIR ("M-0"):GOTO 6000
5070 IF P=1THEN CALL CHDIR ("M-1"):GOTO 6000
5080 IF P=2THEN CALL CHDIR ("M-2"):GOTO 6000
5090 IF P=3THEN CALL CHDIR ("M-3"):GOTO 6000
5100 IF P=4THEN CALL CHDIR ("M-4"):GOTO 6000
5110 IF P=5THEN CALL CHDIR ("M-5"):GOTO 6000
5120 IF P=6THEN CALL CHDIR ("M-6"):GOTO 6000
5130 IF P=7THEN CALL CHDIR ("M-7"):GOTO 6000
5140 IF P=8THEN CALL CHDIR ("M-8"):GOTO 6000
5150 IF P=9THEN CALL CHDIR ("M-9"):GOTO 6000
5160 IF P=10THEN CALL CHDIR ("M-A"):GOTO 6000
5170 IF P=11THEN CALL CHDIR ("M-B"):GOTO 6000
5180 IF P=12THEN CALL CHDIR ("M-C"):GOTO 6000
5190 IF P=13THEN CALL CHDIR ("M-D"):GOTO 6000
5200 IF P=14THEN CALL CHDIR ("M-E"):GOTO 6000
5210 'IF P=15THEN CALL CHDIR ("M-F"):GOTO 6000
 
6000 ' Retour au répertoire Initial
6300 IF RB=7THEN CALL CHDIR ("7"):GOTO 1515
6220 IF R=0THEN CALL CHDIR ("0"):GOTO 1515
6254 IF R=1THEN CALL CHDIR ("1"):GOTO 1515
6288 IF R=2THEN CALL CHDIR ("2"):GOTO 1515
6290 IF R=3THEN CALL CHDIR ("3"):GOTO 1515
6291 IF R=4THEN CALL CHDIR ("4"):GOTO 1515
6292 IF R=5THEN CALL CHDIR ("5"):GOTO 1515
6293 IF R=6THEN CALL CHDIR ("6"):GOTO 1515
6294 'IF R=7THEN CALL CHDIR ("7"):GOTO 1515

 


On peut voir dans le déroulement du programme que lorsque la commande IF STRIG (0) est activé, on est renvoyé dans les sous programme suivants:

Le sous programme ci dessous permet d'aiguiller vers le répertoire contenant la MAPPE ou les Graphismes sont détruits sur une seule colonne sur toute la mappe.
Nb: La mappe MASTER étant découpée zones horizontales large de 16 Pixels, il faut donc 16 mappes différentes :D
2010 'BETA MAPPE Longitude "X" '(Sélécteur de Colonnes)
2020 CALL CHDIR ("..")
2020 IF X>239THEN CALL CHDIR ("B-F"): GOTO 3000
2030 IF X>223THEN CALL CHDIR ("B-E"): GOTO 3000
2040 IF X>207THEN CALL CHDIR ("B-D"): GOTO 3000
2030 IF X>191THEN CALL CHDIR ("B-C"): GOTO 3000
2040 IF X>175THEN CALL CHDIR ("B-B"): GOTO 3000
2050 IF X>159THEN CALL CHDIR ("B-A"): GOTO 3000
2060 IF X>143THEN CALL CHDIR ("B-9"): GOTO 3000
2070 IF X>127THEN CALL CHDIR ("B-8"): GOTO 3000
2080 IF X>111THEN CALL CHDIR ("B-7"): GOTO 3000
2090 IF X>95THEN CALL CHDIR ("B-6"): GOTO 3000
2100 IF X>79THEN CALL CHDIR ("B-5"): GOTO 3000
2110 IF X>63THEN CALL CHDIR ("B-4"): GOTO 3000
2120 IF X>47THEN CALL CHDIR ("B-3"): GOTO 3000
2130 IF X>31THEN CALL CHDIR ("B-2"): GOTO 3000
2140 IF X>15THEN CALL CHDIR ("B-1"): GOTO 3000
2150 IF X>-1THEN CALL CHDIR ("B-0"): GOTO 3000
Il m'a semblé plus judicieux de procéder à rebours :fou

Le sous programme suivant permet d'aiguiller vers le répertoire contenant les Bribes devant être affichées à une latitude déterminée par la valeur Y
3000 '
3010 'BETA MAPPE Latitude "Y" (Selecteur de bribes)
3020 IF Y>239THEN CALL CHDIR ("7"): GOTO 4316
3030 IF Y>223THEN CALL CHDIR ("7"): GOTO 4301
3040 IF Y>207THEN CALL CHDIR ("6"): GOTO 4316
3030 IF Y>191THEN CALL CHDIR ("6"): GOTO 4301
3040 IF Y>175THEN CALL CHDIR ("5"): GOTO 4316
3050 IF Y>159THEN CALL CHDIR ("5"): GOTO 4301
3060 IF Y>143THEN CALL CHDIR ("4"): GOTO 4316
3070 IF Y>127THEN CALL CHDIR ("4"): GOTO 4301
3080 IF Y>111THEN CALL CHDIR ("3"): GOTO 4316
3090 IF Y>95THEN CALL CHDIR ("3"): GOTO 4301
3100 IF Y>79THEN CALL CHDIR ("2"):GOTO 4316
3110 IF Y>63THEN CALL CHDIR ("2"):GOTO 4301
3120 IF Y>47THEN CALL CHDIR ("1"):GOTO 4272
3130 IF Y>31THEN CALL CHDIR ("1"):GOTO 4254
3140 IF Y>15THEN CALL CHDIR ("0"):GOTO 4238
3150 IF Y>-1THEN CALL CHDIR ("0"):GOTO 4220
La aussi, il me parait plus logique de procéder à rebours :siffle

Maintenant que la Longitude et Latitude est correctement retranscrite, il ne reste plus qu'a faire se succéder les Bribes.
J'ai pensé que 8 bribes de 2 Pixels de Hauts devraient convenir. (on verra bien).

4000 ' BRIBES BETA (Lecteur de Bribes par groupe de 8)
4220 '
4222 BLOAD"0",S,0-11264
4224 BLOAD"1",S,0-11264
4226 BLOAD"2",S,0-11264
4228 BLOAD"3",S,0-11264
4230 BLOAD"4",S,0-11264
4232 BLOAD"5",S,0-11264
4234 BLOAD"6",S,0-11264
4236 BLOAD"7",S,0-11264:CALL CHDIR (".."):CALL CHDIR (".."):GOTO 5000

4238 BLOAD"8",S,0-11264
4240 BLOAD"9",S,0-11264
4242 BLOAD"A",S,0-11264
4244 BLOAD"B",S,0-11264
4246 BLOAD"C",S,0-11264
4248 BLOAD"D",S,0-11264
4250 BLOAD"E",S,0-11264
4252 BLOAD"F",S,0-11264:CALL CHDIR (".."):CALL CHDIR (".."):GOTO 5000

4254 BLOAD"0",S,0-11264
4258 BLOAD"1",S,0-11264
4260 BLOAD"2",S,0-11264
4262 BLOAD"3",S,0-11264
4264 BLOAD"4",S,0-11264
4266 BLOAD"5",S,0-11264
4268 BLOAD"6",S
4270 BLOAD"7",S:CALL CHDIR (".."):CALL CHDIR (".."):GOTO 5000

4272 BLOAD"8",S
4274 BLOAD"9",S
4276 BLOAD"A",S
4278 BLOAD"B",S
4280 BLOAD"C",S
4282 BLOAD"D",S
4284 BLOAD"E",S
4286 BLOAD"F",S:CALL CHDIR (".."):CALL CHDIR (".."):GOTO 5000

4301 BLOAD"0",S
4302 BLOAD"1",S
4304 BLOAD"2",S
4306 BLOAD"3",S
4308 BLOAD"4",S
4310 BLOAD"5",S
4312 BLOAD"6",S
4314 BLOAD"7",S:CALL CHDIR (".."):CALL CHDIR (".."):GOTO 5000

4316 BLOAD"8",S
4318 BLOAD"9",S
4320 BLOAD"A",S
4322 BLOAD"B",S
4324 BLOAD"C",S
4326 BLOAD"D",S
4328 BLOAD"E",S
4330 BLOAD"F",S:CALL CHDIR (".."):CALL CHDIR (".."):GOTO 5000
4332 '
Pour que le moulin tourne normalement, il faut séparer 3 possibilité quant à la possibilité de rencontrer des Bribes [Toutes Particulières] [Mi particulières, mi normales] [Toutes Normales] :p

Chaque groupe est donc constitué de 8 Bribes de 2 Pixels de Haut pour un total de 16 Pixels de Haut pour "COUVRIR" l'ancien graphisme MASTER par le Graphisme BETA.


Voici la dernière étape avant de reprendre un processus "initial".
5000 ' Retour au Réperoire Initial

5210 IF PB=15THEN CALL CHDIR ("M-F"):GOTO 6000
5060 IF P=0THEN CALL CHDIR ("M-0"):GOTO 6000
5070 IF P=1THEN CALL CHDIR ("M-1"):GOTO 6000
5080 IF P=2THEN CALL CHDIR ("M-2"):GOTO 6000
5090 IF P=3THEN CALL CHDIR ("M-3"):GOTO 6000
5100 IF P=4THEN CALL CHDIR ("M-4"):GOTO 6000
5110 IF P=5THEN CALL CHDIR ("M-5"):GOTO 6000
5120 IF P=6THEN CALL CHDIR ("M-6"):GOTO 6000
5130 IF P=7THEN CALL CHDIR ("M-7"):GOTO 6000
5140 IF P=8THEN CALL CHDIR ("M-8"):GOTO 6000
5150 IF P=9THEN CALL CHDIR ("M-9"):GOTO 6000
5160 IF P=10THEN CALL CHDIR ("M-A"):GOTO 6000
5170 IF P=11THEN CALL CHDIR ("M-B"):GOTO 6000
5180 IF P=12THEN CALL CHDIR ("M-C"):GOTO 6000
5190 IF P=13THEN CALL CHDIR ("M-D"):GOTO 6000
5200 IF P=14THEN CALL CHDIR ("M-E"):GOTO 6000
5210 'IF P=15THEN CALL CHDIR ("M-F"):GOTO 6000

6000 ' Retour au répertoire Initial
6300 IF RB=7THEN CALL CHDIR ("7"):GOTO 1515
6220 IF R=0THEN CALL CHDIR ("0"):GOTO 1515
6254 IF R=1THEN CALL CHDIR ("1"):GOTO 1515
6288 IF R=2THEN CALL CHDIR ("2"):GOTO 1515
6290 IF R=3THEN CALL CHDIR ("3"):GOTO 1515
6291 IF R=4THEN CALL CHDIR ("4"):GOTO 1515
6292 IF R=5THEN CALL CHDIR ("5"):GOTO 1515
6293 IF R=6THEN CALL CHDIR ("6"):GOTO 1515
6294 'IF R=7THEN CALL CHDIR ("7"):GOTO 1515

Ce sous programme permet de retourner vers le répertoire dans lequel se déroulait précédemment le programme principal.

J'ai pas encore tester, mais on doit pas être très loin de ce que je cherche à faire.

J'suis en r'tard avec mes poireaux moa :lol

Edité par igal Le 24/10/2014 à 15h10


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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 24/10/2014 à 12h57
et bhé :s :)


banniere-ericb59e
Site web    
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 24/10/2014 à 14h37
Tu dois pouvoir remplacer :
5210 IF PB=15THEN CALL CHDIR ("M-F"):GOTO 6000
5060 IF P=0THEN CALL CHDIR ("M-0"):GOTO 6000
5070 IF P=1THEN CALL CHDIR ("M-1"):GOTO 6000
5080 IF P=2THEN CALL CHDIR ("M-2"):GOTO 6000
5090 IF P=3THEN CALL CHDIR ("M-3"):GOTO 6000
5100 IF P=4THEN CALL CHDIR ("M-4"):GOTO 6000
5110 IF P=5THEN CALL CHDIR ("M-5"):GOTO 6000
5120 IF P=6THEN CALL CHDIR ("M-6"):GOTO 6000
5130 IF P=7THEN CALL CHDIR ("M-7"):GOTO 6000
5140 IF P=8THEN CALL CHDIR ("M-8"):GOTO 6000
5150 IF P=9THEN CALL CHDIR ("M-9"):GOTO 6000
5160 IF P=10THEN CALL CHDIR ("M-A"):GOTO 6000
5170 IF P=11THEN CALL CHDIR ("M-B"):GOTO 6000
5180 IF P=12THEN CALL CHDIR ("M-C"):GOTO 6000
5190 IF P=13THEN CALL CHDIR ("M-D"):GOTO 6000
5200 IF P=14THEN CALL CHDIR ("M-E"):GOTO 6000
5210 'IF P=15THEN CALL CHDIR ("M-F"):GOTO 6000

par :
5060 CALL CHDIR ("M-"+hex$(P)):GOTO 6000

Cela doit permettre en une ligne d'éviter les 15 conditions ;)
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 24/10/2014 à 19h43
Merci Fabf. Je garde ça sous le coude.

Pour le moment, je vais déjà essayé de mouliner ça voir combien de Bugs ont tapé l'incruste :lol

Voici une nouvelle version du schéma de fonctionnement:


Votre opinion m'intéresse ^^




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

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10326

Le 24/10/2014 à 20h00
poour tester ça serait bien d'avoir un exemple complet sur une disquette ;)
sinon as tu penser a faire ça dans un ramdisk , avec 4Mo de mémoire ça devrait être jouable


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 26/10/2014 à 22h33
Oui Jipe. Vais faire ca demain ;)

Pour se faire une idée du procédé, voici 3 images d'une Mappe.

La plus à gauche es vierge, celle du milieu contient les ennemis et celle de droite affiche des explosions.

Pour faciliter l'insertion des explosions, j'ai scindé la mappe en 16 colonnes de sorte à ne pas placer une explosion à cheval sur deux colonnes.



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

Maire-adjoint

Rang

Avatar

Inscrit le : 06/10/2009 à 18h27

Messages: 613

Le 27/10/2014 à 18h31
Et avec un BOSS animé en fin de niveau, hmm, que du bon !




MSX Turbo-R FS A1GT - 1 Mo de RAM - Disque dur SCSI Syquest cartouches de 270 Mo - Lecteur CD. Musique, musique, musique et encore musique !
   
Bastion Rebel Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/09/2013 à 07h42

Messages: 1717

Le 27/10/2014 à 18h53
ah super ca me donner envie de faire un RAIDEN !!!

a quand la version sur MSX !!!


TURBO-R FS-A1ST 512/128ko MSX2+ NMS 8250 F4 /Fix Audio /Ram 1/4Mb VDP9958 VRAM 192ko 2FDD SANYO WAVY PHC35J MSX2 NMS 8280 Ram 4Mb VDP9938 VRAM 192ko 2FDD NMS 8250 128/128ko 2FDD VG8235/39 128/128ko 1FDD SONY HB-F700D MSX1 MC810 32/16k VG 8020 64k HB75F 64k HX-22 64k RS232/ CX5M 32k HB501F EXT : My Exp 4X/[b] MegaFlashSCC 512ko/BERT R2/BEER CF/SUNRISE 2CF/FUNRICE V2.01/MAXIOL/MEGASCSI HDD-CD/SDMSX 1SD/FMPAC SRAM/NMS1205+1160/RS 232 Harukaze/GR8NET/DOS2/ HOMER V2 RAM512ko/Floppy Pack/MAXduino/ROM1664/FM Pak /GR8NET /AMIGA/ PC/ RaspB Pi(B) / ARDUINO
E-mail    
gradius Membre non connecté

Maire-adjoint

Rang

Avatar

Inscrit le : 06/10/2009 à 18h27

Messages: 613

Le 27/10/2014 à 21h02
Moi en tous cas j'en suis ! Enfin, pour la musique... ;)


MSX Turbo-R FS A1GT - 1 Mo de RAM - Disque dur SCSI Syquest cartouches de 270 Mo - Lecteur CD. Musique, musique, musique et encore musique !
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 27/10/2014 à 23h09
Damnation!

Me suis loupé dans l'ordre de la création de la Mappe et donc de défilement des Bribes!
Me reste plus qu'à recréer toute les bribes en commençant par découper la mappe en commençant par le haut et non par le bas :(

@Gradius: Tu as trouvé ma taverne.

J'ai essayé de récupérer les animation des GIF en faisant [Click droit/ Enregistrer sous] mais au final, j'ai seulement une image même en ouvrant avec Paint.Net.
Je voulais ajouter un Boss animé en fin de Mape ;)


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

Maire-adjoint

Rang

Avatar

Inscrit le : 06/10/2009 à 18h27

Messages: 613

Le 28/10/2014 à 19h42
:top


MSX Turbo-R FS A1GT - 1 Mo de RAM - Disque dur SCSI Syquest cartouches de 270 Mo - Lecteur CD. Musique, musique, musique et encore musique !
   
SveN Membre non connecté

Villageois

Rang

Avatar

Groupe : compte ++

Inscrit le : 22/11/2011 à 21h14

Messages: 865

Le 28/10/2014 à 21h24
@Igal : Même après avoir relu l'ensemble de tes posts relatifs au "VDP(xx)", je n'y comprends rien du tout .. :moue


Philips.NMS.8245/50/80, Sony.F1XV/HBF-700D, Pana.FSA1FX/A1WX(x2)/A1GT, OCM, GR8BIT.... et ...
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 28/10/2014 à 22h12
J'ai des trucs importants à préparer ces prochains jours et avec mon PC qui boit plus sur Windows, c'est pas gagné.

Je ferai une vidéo des sue possible et je posterai avec des explications :)


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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 29/10/2014 à 15h07
@sven: j'ai toujours été frustré de ne pouvoir créer un scroll en Basic.

En toute modestie, avec l'aide du village, j'ai pu trouver le moyen extrêmement simple de créer un scroll vertical sur la base de L'incrementation de vdp (24).

La seconde difficulté étant que le scroll conséquent à vdp (24) déplace la zone habituellement cachée des spirites.
Ce problème est triple mais pour faire simple, les trois probes sont résolus par
1) vdp (9)=vdp (9) or 2 pour désactiver l'affichage des spirites en attendant de déplacer la zone sur la seconde page disponible en SCREEN 12

2) bload"image.scc", 0-44, S qui permet d'afficher des images facilement au delà de la zone comprise allant de 0 à 211.

3) le générateur de bribes qui sont rien d'autres que de petites images contenant la coordonnée d'affichage de la dite image.

Voilà dans les grandes lignes ce qu'il faut retenir sur le scroll "selon vdp (24)"

Pour ce qui est du vdp (27) c'est encore plus compliqué puisqu'en plus des 3 paramètres précédents, il faut faire glisser horizontalement une addition de décors se faisant verticalement :fou

La encore avec l'aide des villageois, j'ai trouvé la solution en appliquant cette idée.

Une copie verticale de bribes horizontales doit alimenter le scroll à mesure que vdp(27) s'incremente mais comment faire ?

Il suffit d'alterner une séquence d'affichage verticale avec une séquence de création horizontale.

Pour cela, la première chose visible avec cette technique est le contenu "neant" de la vram qui est remplacé à crescendo (en escalier) par le contenu alimenté de la vram par les bribes horizontales créés dans la seconde page du screen 12. :fou

Pour un résulta cohérent, il est indispensable d'avoir une progression horizontale qui soit égale à la création verticale.

concrètement, la page cachée créée doit faire 256X256 (mais c'est faux) et la page affichée doit faire 256X256 et la c'est vrai :)

Sachant que l'affichage sur la page visible se fait par défilement horizontal par crans de 2 pixels, il faut donc que les bribes qui s'affichent sur la page cachée fassent aussi 2 pixels mais cette fois de hauteur.

de la sorte, on a bien une lecture en escalier traçant une diagonale depuis les coordonnées 0/0-44 jusqu'à 256/212.
On a donc bien une diagonale de 256/256.

Le dernier problème à résoudre avec le scroll horizontal avec cette technique est le suivant:

Puisque le contenu de la page cachée est affichée sur la page visible mais en que le contenu visible est la conséquence d'une progression diagonale, la première moitié de l'image cachée est visible avec une image de retard.

Ce problème se résout par le remplacement de la partie inférieur gauche de la diagonale de limage B par la partie inférieur gauche de la diagonale de l'image A.

Partant de ce principe:
Bas Gauche de C contient bas Gauche de B.
D de C.
E de D etc etc...

A ce sujet, la toute première image affichée par ce scroll ne pouvant être que vierge, il suffit de pré charger une image contenant le bas Gauche coherent de la première image pour que le scroll commence par une image entière et cohérente.
Autrement dit il suffit d'un bload " première image. Sca", S avant de commencer un scroll horizontal.

On peut aussi boucler les image sans fin simplement en faisant en sorte que la dernière image du scroll coïncide avec la première image du scroll.

Voilà dans les grandes lignes:)

Beaucoup d'autres choses sont possible comme la modification de la palette graphique sans sortir de la boucle principale du scroll.
Avant tout il faut savoir .........





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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 01/01/2015 à 19h17
A force de creuser, je viens de comprendre pourquoi il m'est impossible d'afficher des graphismes qui déroulent de [BAS en HAUT] de manière cohérente alors que l'affichage de [HAUT en BAS] se fait parfaitement.



La raison est simple puisque:



1) Les bribes ont un emplacement prédéfinies.

2) L'emplacement est indiqué par le "générateur".

3) Le générateur se contente "d'extraire" par [Copier/Coller] des lignes d'une image.

4) Le player ne fait que lire les bribes de façon succincte sans indiquer de coordonnées.



Ces opérations ne posent aucun problème pour un SCROLL allant de [HAUT vers le BAS] puisque le générateur suit ce processus.



Pour créer un SROLL allant de [BAS en HAUT], il faut "Altérer" les coordonnées "Latitudes" dans le générateur.



Concrètement, voici à quoi ressemble le générateur actuellement.



Citation :


10 'SAVE"GEN00-03.asc",A

20 'generateur de bribes d'images [22x(2x256)]+[(106x(2x256)]

30 VDP(10)=0: SCREEN 10



99 CALL CHDIR ("M-00-01")



122 BLOAD"00000001.SCA",S: BSAVE"022",256*0,256*2-1,S

123 BLOAD"00000001.SCA",S: BSAVE"023",256*2,256*4-1,S

124 BLOAD"00000001.SCA",S: BSAVE"024",256*4,256*6-1,S

125 BLOAD"00000001.SCA",S: BSAVE"025",256*6,256*8-1,S

126 BLOAD"00000001.SCA",S: BSAVE"026",256*8,256*10-1,S

127 BLOAD"00000001.SCA",S: BSAVE"027",256*10,256*12-1,S

128 BLOAD"00000001.SCA",S: BSAVE"028",256*12,256*14-1,S

129 BLOAD"00000001.SCA",S: BSAVE"029",256*14,256*16-1,S

130 BLOAD"00000001.SCA",S: BSAVE"030",256*16,256*18-1,S

131 BLOAD"00000001.SCA",S: BSAVE"031",256*18,256*20-1,S

132 BLOAD"00000001.SCA",S: BSAVE"032",256*20,256*22-1,S

133 BLOAD"00000001.SCA",S: BSAVE"033",256*22,256*24-1,S

134 BLOAD"00000001.SCA",S: BSAVE"034",256*24,256*26-1,S

135 BLOAD"00000001.SCA",S: BSAVE"035",256*26,256*28-1,S

136 BLOAD"00000001.SCA",S: BSAVE"036",256*28,256*30-1,S

137 BLOAD"00000001.SCA",S: BSAVE"037",256*30,256*32-1,S

138 BLOAD"00000001.SCA",S: BSAVE"038",256*32,256*34-1,S

139 BLOAD"00000001.SCA",S: BSAVE"039",256*34,256*36-1,S

140 BLOAD"00000001.SCA",S: BSAVE"040",256*36,256*38-1,S

141 BLOAD"00000001.SCA",S: BSAVE"041",256*38,256*40-1,S

142 BLOAD"00000001.SCA",S: BSAVE"042",256*40,256*42-1,S

143 BLOAD"00000001.SCA",S: BSAVE"043",256*42,256*44-1,S

144 BLOAD"00000001.SCA",S: BSAVE"044",256*44,256*46-1,S

145 BLOAD"00000001.SCA",S: BSAVE"045",256*46,256*48-1,S

146 BLOAD"00000001.SCA",S: BSAVE"046",256*48,256*50-1,S

147 BLOAD"00000001.SCA",S: BSAVE"047",256*50,256*52-1,S

148 BLOAD"00000001.SCA",S: BSAVE"048",256*52,256*54-1,S

149 BLOAD"00000001.SCA",S: BSAVE"049",256*54,256*56-1,S

150 BLOAD"00000001.SCA",S: BSAVE"050",256*56,256*58-1,S

151 BLOAD"00000001.SCA",S: BSAVE"051",256*58,256*60-1,S

152 BLOAD"00000001.SCA",S: BSAVE"052",256*60,256*62-1,S

153 BLOAD"00000001.SCA",S: BSAVE"053",256*62,256*64-1,S

154 BLOAD"00000001.SCA",S: BSAVE"054",256*64,256*66-1,S

155 BLOAD"00000001.SCA",S: BSAVE"055",256*66,256*68-1,S

156 BLOAD"00000001.SCA",S: BSAVE"056",256*68,256*70-1,S

157 BLOAD"00000001.SCA",S: BSAVE"057",256*70,256*72-1,S

158 BLOAD"00000001.SCA",S: BSAVE"058",256*72,256*74-1,S

159 BLOAD"00000001.SCA",S: BSAVE"059",256*74,256*76-1,S

160 BLOAD"00000001.SCA",S: BSAVE"060",256*76,256*78-1,S

161 BLOAD"00000001.SCA",S: BSAVE"061",256*78,256*80-1,S

162 BLOAD"00000001.SCA",S: BSAVE"062",256*80,256*82-1,S

163 BLOAD"00000001.SCA",S: BSAVE"063",256*82,256*84-1,S

164 BLOAD"00000001.SCA",S: BSAVE"064",256*84,256*86-1,S

165 BLOAD"00000001.SCA",S: BSAVE"065",256*86,256*88-1,S

166 BLOAD"00000001.SCA",S: BSAVE"066",256*88,256*90-1,S

167 BLOAD"00000001.SCA",S: BSAVE"067",256*90,256*92-1,S

168 BLOAD"00000001.SCA",S: BSAVE"068",256*92,256*94-1,S

169 BLOAD"00000001.SCA",S: BSAVE"069",256*94,256*96-1,S

170 BLOAD"00000001.SCA",S: BSAVE"070",256*96,256*98-1,S

171 BLOAD"00000001.SCA",S: BSAVE"071",256*98,256*100-1,S

172 BLOAD"00000001.SCA",S: BSAVE"072",256*100,256*102-1,S

173 BLOAD"00000001.SCA",S: BSAVE"073",256*102,256*104-1,S

174 BLOAD"00000001.SCA",S: BSAVE"074",256*104,256*106-1,S

175 BLOAD"00000001.SCA",S: BSAVE"075",256*106,256*108-1,S

176 BLOAD"00000001.SCA",S: BSAVE"076",256*108,256*110-1,S

177 BLOAD"00000001.SCA",S: BSAVE"077",256*110,256*112-1,S

178 BLOAD"00000001.SCA",S: BSAVE"078",256*112,256*114-1,S

179 BLOAD"00000001.SCA",S: BSAVE"079",256*114,256*116-1,S

180 BLOAD"00000001.SCA",S: BSAVE"080",256*116,256*118-1,S

181 BLOAD"00000001.SCA",S: BSAVE"081",256*118,256*120-1,S

182 BLOAD"00000001.SCA",S: BSAVE"082",256*120,256*122-1,S

183 BLOAD"00000001.SCA",S: BSAVE"083",256*122,256*124-1,S

184 BLOAD"00000001.SCA",S: BSAVE"084",256*124,256*126-1,S

185 BLOAD"00000001.SCA",S: BSAVE"085",256*126,256*128-1,S

186 BLOAD"00000001.SCA",S: BSAVE"086",256*128,256*130-1,S

187 BLOAD"00000001.SCA",S: BSAVE"087",256*130,256*132-1,S

188 BLOAD"00000001.SCA",S: BSAVE"088",256*132,256*134-1,S

189 BLOAD"00000001.SCA",S: BSAVE"089",256*134,256*136-1,S

190 BLOAD"00000001.SCA",S: BSAVE"090",256*136,256*138-1,S

191 BLOAD"00000001.SCA",S: BSAVE"091",256*138,256*140-1,S

192 BLOAD"00000001.SCA",S: BSAVE"092",256*140,256*142-1,S

193 BLOAD"00000001.SCA",S: BSAVE"093",256*142,256*144-1,S

194 BLOAD"00000001.SCA",S: BSAVE"094",256*144,256*146-1,S

195 BLOAD"00000001.SCA",S: BSAVE"095",256*146,256*148-1,S

196 BLOAD"00000001.SCA",S: BSAVE"096",256*148,256*150-1,S

197 BLOAD"00000001.SCA",S: BSAVE"097",256*150,256*152-1,S

198 BLOAD"00000001.SCA",S: BSAVE"098",256*152,256*154-1,S

199 BLOAD"00000001.SCA",S: BSAVE"099",256*154,256*156-1,S

200 BLOAD"00000001.SCA",S: BSAVE"100",256*156,256*158-1,S

201 BLOAD"00000001.SCA",S: BSAVE"101",256*158,256*160-1,S

202 BLOAD"00000001.SCA",S: BSAVE"102",256*160,256*162-1,S

203 BLOAD"00000001.SCA",S: BSAVE"103",256*162,256*164-1,S

204 BLOAD"00000001.SCA",S: BSAVE"104",256*164,256*166-1,S

205 BLOAD"00000001.SCA",S: BSAVE"105",256*166,256*168-1,S

206 BLOAD"00000001.SCA",S: BSAVE"106",256*168,256*170-1,S

207 BLOAD"00000001.SCA",S: BSAVE"107",256*170,256*172-1,S

208 BLOAD"00000001.SCA",S: BSAVE"108",256*172,256*174-1,S

209 BLOAD"00000001.SCA",S: BSAVE"109",256*174,256*176-1,S

210 BLOAD"00000001.SCA",S: BSAVE"110",256*176,256*178-1,S

211 BLOAD"00000001.SCA",S: BSAVE"111",256*178,256*180-1,S

212 BLOAD"00000001.SCA",S: BSAVE"112",256*180,256*182-1,S

213 BLOAD"00000001.SCA",S: BSAVE"113",256*182,256*184-1,S

214 BLOAD"00000001.SCA",S: BSAVE"114",256*184,256*186-1,S

215 BLOAD"00000001.SCA",S: BSAVE"115",256*186,256*188-1,S

216 BLOAD"00000001.SCA",S: BSAVE"116",256*188,256*190-1,S

217 BLOAD"00000001.SCA",S: BSAVE"117",256*190,256*192-1,S

218 BLOAD"00000001.SCA",S: BSAVE"118",256*192,256*194-1,S

219 BLOAD"00000001.SCA",S: BSAVE"119",256*194,256*196-1,S

220 BLOAD"00000001.SCA",S: BSAVE"120",256*196,256*198-1,S

221 BLOAD"00000001.SCA",S: BSAVE"121",256*198,256*200-1,S

222 BLOAD"00000001.SCA",S: BSAVE"122",256*200,256*202-1,S

223 BLOAD"00000001.SCA",S: BSAVE"123",256*202,256*204-1,S

224 BLOAD"00000001.SCA",S: BSAVE"124",256*204,256*206-1,S

225 BLOAD"00000001.SCA",S: BSAVE"125",256*206,256*208-1,S

226 BLOAD"00000001.SCA",S: BSAVE"126",256*208,256*210-1,S

227 BLOAD"00000001.SCA",S: BSAVE"127",256*210,256*212-1,S





Je voudrais donc modifier tel que par exemple:



122 BLOAD"00000001.SCA",S: BSAVE"022",256*0,256*2-1,S soit sauvée avec la latitude de 211 à 212

123 BLOAD"00000001.SCA",S: BSAVE"023",256*2,256*4-1,S soit sauvée avec la latitude de 209 à 210

124 BLOAD"00000001.SCA",S: BSAVE"024",256*4,256*6-1,S soit sauvée avec la latitude de 207 à 208



etc etc...



Pouvez vous m'indiquer la commande exacte svp?


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie