MSX Village forum

La Place des Développeurs [EN COURS] VDP Flash Pipeline Expérimentations Quelques applications sur l'approche Flash

igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 26/07/2018 à 15h10

Reprise du message précédent

@Jipe et Sylvain: Merci pour vos lumières ;)

@Sylvain: J'ai grugé en déplaçant "une bribe" de ma boucle principale.
En gros...
Dans ma boucle "Nuancier de Saut du Héro 1" j'ai intégré la partie de la boucle principale qui permet le déplacement du Héro 2.
T=STICK(1):ONT+1GOSUB10780,10890, etc...

Et inversement:
Dans ma boucle "Nuancier de saut du Héro 2", j'ai intégré la partie de la boucle principale qui permet le déplacement du Héro 1.
S=STICK(0):ONS+1GOSUB780,890,1060, etc...

De la sorte, j'ai conservé la nomenclature du programme à savoir boucle principale en premier (déplacement) et boucle secondaire (nuancier saut) par la suite.


La modification du programme a fait émerger un bug caché dans le nuancier de saut du Héro 2 (le Ninja) :oups
A suivre...


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

Le 26/07/2018 à 15h58
Igal : ton programme est transposable en X-Basic
il y a juste une instruction qui coince

750 S=STICK(0):ON S+1 GOSUB780,890,1060,1250,1420,1590,1740,1910,2080:COPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZV,ZX),1:COPY(0+ZK+ZI,ZE)-(24+ZK+ZI,ZF),1TO(ZV+ZA,ZX+ZB),1,TPSET:COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL-ZB),0
752 T=STICK(1):ONT+1GOSUB10780,10890,11060,11250,11420,11590,11740,11910,12080:COPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(VA,VC),1:COPY(0+GS+DS,AP)-(24+GS+DS,AC),1TO(VA+EA,VC+FA),1,TPSET:COPY(VA,VC)-(VB,VD),1TO(E-EA,F-FA),0

a quoi sert ton copy 0+ZK ou copy 0+GS ?

il faut faire une version sans commentaire juste les ' pour avoir un progamme moins lourd
peut tu mettre ta derniére version pour en faire une X-Basic


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 26/07/2018 à 17h31
Je m'occupe de nettoyer et je t'envoie le code.

par contre, y a une bug dans "la boucle de saut du joueur 2" je vais vois si j'arrive à fixer ça en même temps ;)
Pour le Zéro..C'est ma façon de travailler...ça me sert de repère. Tu peux virer Zero
Nb: Lors de la lecture du fichier ASC par le MSX, les Zéros disparaissent :D

Un premier fixe sur le saut vers la gauche qui arrivé à son point le plus haut, faisait "une saccade" en arrière avant de terminer son saut vers la gauche...
Je continue pour le second bug de saut :D

Je m'occupe de nettoyer le bordel dans les phases de saut. Edité par igal Le 26/07/2018 à 18h37


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 26/07/2018 à 21h49
Voila pour toi Jipe:...(Dernier correctif 27/07 à 7h14)
Correctif: Le déplacement du héro 1 fait scroller le niveau même en se déplacant en diagonal.
Remplacement des COPYSCREEN par BLOAD... (en cours de correction)

Le code sans commentaires:
J'ai pu virer un petit bug lors des sauts vers la gauche.
Les sauts d'un héro sont possibles simultanément aux déplacement d'un autre héro.
Nb: Pour le moment, il n'est pas possible de faire sauter les deux héros en même temps...Ce bug sera corrigé par la suite ;)

Il s'agit de la version ne nécessitant pas de numériser à la volée.
J'ai remplacé la première page 00 et sa page d'arrière plan 01 qui étaient numérisés par la méthode Flash pipeline par un chargement depuis le disque dur...le support des autres pages se feront par la suite.

Code TEXT :
 
30 DEFINT A-Z
130 SCREEN 8
150 COLOR,,0
200 CALLCHDIR("stage1")
320 ZA = 4
330 ZB = 4
340 ZC = 4
350 ZD = 4
360 ZE = 176
370 ZF = 207
380 ZG = 25
390 ZH = 32
400 ZI = 0
410 ZJ = 156
420 ZK = 0
430 ZL = ZB*34
440 ZM = ZA*32
450 ZN= 1
460 ZO = 0
470 ZP = 0
480 ZQ = 0
500 ZR = 0
510 ZS = 255
520 ZT = 0
530 ZU = 171
550 ZV = 128-ZA-(ZG/2)
560 ZW = ZV+ZA+ZG+ZC
570 ZX = 172
580 ZY = ZX+ZB+ZH+ZD
582 GOTO 10320
590 DEFUSR =&H41:A=USR(0)
600 BLOAD"00.sc8",S:SETPAGE1,1:BLOAD"01.sc8",S:VDP(10)=0:SETPAGE0
610 IFVDP(-2)AND1THEN610
620 DEFUSR=&H44:A=USR(0)
750 S=STICK(0):ONS+1GOSUB780,890,1060,1250,1420,1590,1740,1910,2080:COPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZV,ZX),1:COPY(0+ZK+ZI,ZE)-(24+ZK+ZI,ZF),1TO(ZV+ZA,ZX+ZB),1,TPSET:COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL-ZB),0
752 T=STICK(1):ONT+1GOSUB10780,10890,11060,11250,11420,11590,11740,11910,12080:COPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(VA,VC),1:COPY(0+GS+DS,AP)-(24+GS+DS,AC),1TO(VA+EA,VC+FA),1,TPSET:COPY(VA,VC)-(VB,VD),1TO(E-EA,F-FA),0
754 SETSCROLLSCAND255:GOTO 750
780 ZQ=5:IFZO=1THENZK=ZJELSEZK=0
800 IFSTRIG(0)THENGOSUB2270
820 RETURN
890 ZQ=10:IFZO=1THENZK=ZJELSEZK=0
910 IFZL<ZB*24THENRETURN
930 IFSTRIG(0)THENIFZL<ZB*32THENRETURNELSE2270
950 ZI=ZI+25:IFZI=100THENZI=0
970 ZL=ZL-ZB
990 RETURN
1060 ZQ=10:ZN=1:ZO=0 
1080 IFZL<ZB*24THENRETURN
1100 IFZM>240THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=4:GOSUB2960
1120 IFSTRIG(0)THENGOSUB2270
1140 ZI=ZI+25:IFZI=100THENZI=0
1160 ZM=ZM+ZA:ZL=ZL-ZB:SC=SC+4AND255
1180 RETURN
1250 ZQ=5:ZN=1:ZO=0
1270 IFSTRIG(0)THENGOSUB2270
1290 IFZM>240THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=4:GOSUB2960
1310 ZI=ZI+25:IFZI=100THENZI=0
1330 ZM=ZM+ZA:SC=SC+4AND255
1350 RETURN
1420 ZQ=2:ZN=1:ZO=0 
1440 IFZL>ZB*33THENRETURN
1460 ZI=ZI+25:IFZI=100THENZI=0
1480 ZM=ZM+ZA:ZL=ZL+ZB:SC=SC+4AND255
1500 IFZM>240THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=4:GOSUB2960
1520 RETURN
1590 ZQ=2:IFZO=1THENZK=ZJELSEZK=0
1610 IFZL>ZB*33THENRETURN
1630 ZI=ZI+25:IFZI=100THENZI=0
1650 ZL=ZL+ZB
1670 RETURN
1740 ZQ=2:ZO=1:ZN=0 
1760 IFZL>ZB*33THENRETURN
1780 ZI=ZI+25:IFZI=100THENZI=0
1800 ZL=ZL+ZB:ZM=ZM-ZA:SC=SC-4AND255
1820 IFZM<4THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=240:GOSUB2960
1840 RETURN
1910 ZQ=5:ZO=1:ZN=0 
1930 ZI=ZI+25:IFZI=100THENZI=0
1950 IFSTRIG(0)THENGOSUB2270
1970 IFZM<4THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=240:GOSUB2960
1990 ZM=ZM-ZA:SC=SC-4AND255
2010 RETURN
2080 ZQ=10:ZO=1:ZN=0
2100 IFZL<ZB*24THENRETURN
2120 IFZM<4THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=240:GOSUB2960
2140 IF STRIG (0) THEN GOSUB 2270
2160 ZI=ZI+25:IFZI=100THENZI=0
2180 ZM=ZM-ZA:ZL=ZL-ZB:SC=SC-4AND255
2200 RETURN
2270 IFZL<100THENRETURN
2290 IFZP=ZQTHEN2570ELSEZP=ZP+1
2310 T=STICK(1):ONT+1GOSUB10780,10890,11060,11250,11420,11590,11740,11910,12080:COPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(VA,VC),1:COPY(0+GS+DS,AP)-(24+GS+DS,AC),1TO(VA+EA,VC+FA),1,TPSET:COPY(VA,VC)-(VB,VD),1TO(E-EA,F-FA),0
2312 S=STICK(0):ONS+1GOTO 2330,2350,2370,2370,2370,2430,2450,2450,2450:GOTO2310
2330 GOTO2500
2350 GOTO2500
2370 ZI=25:ZK=0:ZM=ZM+4:SC=SC+4:SETSCROLLSCAND255:GOTO2500
2430 GOTO2500
2450 ZI=75:ZK=ZJ:ZM=ZM-4:SC=SC-4:SETSCROLLSCAND255:GOTO2500
2500 IFZM>240THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=4:GOSUB2960
2510 IFZM<4THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=240:GOSUB2960
2520 ZL=ZL-ZD*2
2530 COPY(ZM-ZA,ZL)-(ZM+ZG+ZC,ZL+ZB+ZH+ZD),1TO(ZV,ZX),1
2540 COPY(ZI+ZK,ZE)-(ZI+24+ZK,ZF),1TO(ZV+ZA,ZX),1,TPSET
2550 COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL),0
2560 GOTO2290
2570 T=STICK(1):ONT+1GOSUB10780,10890,11060,11250,11420,11590,11740,11910,12080:COPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(VA,VC),1:COPY(0+GS+DS,AP)-(24+GS+DS,AC),1TO(VA+EA,VC+FA),1,TPSET:COPY(VA,VC)-(VB,VD),1TO(E-EA,F-FA),0
2572 S=STICK(0):ONS+1GOTO 2580,2580,2590,2590,2590,2580,2600,2600,2600:GOTO2570
2580 GOTO 2610 
2590 ZM=ZM+4:SC=SC+4:SETSCROLLSCAND255:GOTO2610
2600 ZM=ZM-4:SC=SC-4:SETSCROLLSCAND255:GOTO2610
2610 COPY(ZM-ZA,ZL)-(ZM+ZG+ZC,ZL+ZB+ZH+ZD),1TO(ZV,ZX),1
2620 COPY(ZI+ZK,ZE)-(ZI+24+ZK,ZF),1TO(ZV+ZA,ZX),1,TPSET
2630 COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL),0
2640 IFZM>240THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=4:GOSUB2960
2650 IFZM<4THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=240:GOSUB2960
2660 IFZP=0THEN2930ELSEZP=ZP-1
2680 T=STICK(1):ONT+1GOSUB10780,10890,11060,11250,11420,11590,11740,11910,12080:COPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(VA,VC),1:COPY(0+GS+DS,AP)-(24+GS+DS,AC),1TO(VA+EA,VC+FA),1,TPSET:COPY(VA,VC)-(VB,VD),1TO(E-EA,F-FA),0
2682 S=STICK(0):ONS+1GOTO2700,2700,2740,2740,2740,2800,2820,2820,2820:GOTO2680
2700 GOTO 2870
2740 ZI=25:ZK=0:ZM=ZM+4:SC=SC+4:SETSCROLLSCAND255:GOTO2870
2800 GOTO 2870
2820 ZI=75:ZK=ZJ:ZM=ZM-4:SC=SC-4:SETSCROLLSCAND255:GOTO2870
2870 COPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZB+ZH+ZD-4),1 TO (ZV,ZX),1
2880 COPY(ZI+ZK,ZE)-(ZI+24+ZK,ZF),1 TO (ZV+ZA,ZX+8),1,TPSET
2890 COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL-ZB),0
2900 IFZM>240THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=4:GOSUB2960
2910 IFZM<4THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=240:GOSUB2960
2920 ZL=ZL+ZD*2:GOTO2660
2930 RETURN:'ZA=4:ZB=4:RETURN
2960 DEFUSR =&H41:A=USR(0):SETPAGE1,1:CLS:SETPAGE0,0:CLS
2970 BLOAD"02.sc8",S:SETPAGE1,1:BLOAD"03.sc8",S:VDP(10)=0:SETPAGE0,0
2980 IFVDP(-2)AND1THEN2980
3000 DEFUSR=&H44:A=USR(0)
3010 RETURN
10320 EA = 4
10330 FA = 4
10340 EB = 4
10350 FB = 4
10360 AP = 176 - 172
10370 AC = 207 - 172
10380 AI = 25
10390 AW = 31
10400 DS = 0
10410 II = 156
10420 GS = 0
10430 F = FA*34
10440 E = EA*20
10450 J = 1
10460 K = 0
10470 QB = 0
10480 NB = 0
10550 VA = 128-EA-(AI/2)
10560 VB = VA+EA+AI+EB
10570 VC = 172 - 172
10580 VD = VC+FA+AW+FB
10582 GOTO 590
10780 NB=5:IFK=1THENGS=IIELSEGS=0 
10800 IFSTRIG(1)THENGOSUB12270
10820 RETURN
10890 NB=10:IFK=1THENGS=IIELSEGS=0
10910 IFF<FA*24THENRETURN
10930 IFSTRIG(1)THENIFF<FA*32THENRETURNELSE12270
10950 DS=DS+25:IFDS=100THENDS=0
10970 F=F-FA
10990 RETURN
11060 NB=10:J=1:K=0 
11080 IFF<FA*24THENRETURN
11100 IFE>240THENCOPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(E-EA,F-FA),0:E=4:GOSUB12960
11120 IFSTRIG(1)THENGOSUB12270
11140 DS=DS+25:IFDS=100THENDS=0
11160 E=E+EA:F=F-FA
11180 RETURN
11250 NB=5:J=1:K=0
11270 IFSTRIG(1)THENGOSUB12270
11290 IFE>240THENCOPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(E-EA,F-FA),0:E=4:GOSUB12960
11310 DS=DS+25:IFDS=100THENDS=0
11330 E=E+EA 
11350 RETURN
11420 NB=2:J=1:K=0 
11440 IFF>FA*33THENRETURN
11460 DS=DS+25:IFDS=100THENDS=0
11480 E=E+EA:F=F+FA
11500 IFE>240THENCOPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(E-EA,F-FA),0:E=4:GOSUB12960
11520 RETURN
11590 NB=2:IFK=1THENGS=IIELSEGS=0
11610 IFF>FA*33THENRETURN
11630 DS=DS+25:IFDS=100THENDS=0
11650 F=F+FA
11670 RETURN
11740 NB=2:K=1:J=0 
11760 IFF>FA*33THENRETURN
11780 DS=DS+25:IFDS=100THENDS=0
11800 F=F+FA:E=E-EA
11820 IFE<4THENCOPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(E-EA,F-FA),0:E=240:GOSUB12960
11840 RETURN
11910 NB=5:K=1:J=0 
11930 DS=DS+25:IFDS=100THENDS=0
11950 IFSTRIG(1)THENGOSUB12270
11970 IFE<4THENCOPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(E-EA,F-FA),0:E=240:GOSUB12960
11990 E=E-EA
12010 RETURN
12080 NB=10:K=1:J=0
12100 IFF<FA*24THENRETURN
12120 IFE<4THENCOPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(E-EA,F-FA),0:E=240:GOSUB12960
12140 IFSTRIG(1)THENGOSUB12270
12160 DS=DS+25:IFDS=100THENDS=0
12180 E=E-EA:F=F-FA
12200 RETURN
12270 IF F < 100 THEN RETURN
12290 IF QB = NB THEN 12570 ELSE QB = QB + 1
12310 S=STICK(0):ONS+1GOSUB780,890,1060,1250,1420,1590,1740,1910,2080:COPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZV,ZX),1:COPY(0+ZK+ZI,ZE)-(24+ZK+ZI,ZF),1TO(ZV+ZA,ZX+ZB),1,TPSET:COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL-ZB),0
12312 T=STICK(1):ONT+1GOTO 12330,12350,12370,12390,12410,12430,12450,12470,12490:GOTO12310
12330 GOTO12500
12350 GOTO12500
12370 DS = 25 : GS = 0 : E = E+4 : GOTO12500
12390 DS = 25 : GS = 0 : E = E+4 : GOTO12500
 
12410 DS = 75 : GS = 0 : E = E+4 : GOTO12500
12430 GOTO12500
12450 DS = 75 : GS = II : E = E-4 : GOTO12500
12470 DS = 25 : GS = II : E = E-4 : GOTO12500
12490 DS = 25 : GS = II : E = E-4 : GOTO12500
12500 IF E>240 THEN COPY (E-EA,F-FA) - (E+AI+EB,F+AW+FB),1 TO (E-EA,F-FA),0 : E=4 : GOSUB 12960
12510 IF E<4 THEN COPY (E-EA,F-FA) - (E+AI+EB,F+AW+FB),1 TO (E-EA,F-FA),0 : E=240 : GOSUB 12960
12520 F = F - FB*2
12530 COPY (E-EA,F)-(E+AI+EB,F+FA+AW+FB),1 TO (VA,VC),1
12540 COPY (DS+GS,AP)-(DS+24+GS,AC),1 TO (VA+EA,VC),1,TPSET
12550 COPY (VA,VC)-(VB,VD),1 TO (E-EA,F),0
12560 GOTO12290
12570 S=STICK(0):ONS+1GOSUB780,890,1060,1250,1420,1590,1740,1910,2080:COPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZV,ZX),1:COPY(0+ZK+ZI,ZE)-(24+ZK+ZI,ZF),1TO(ZV+ZA,ZX+ZB),1,TPSET:COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL-ZB),0
12572 T=STICK(1):ONT+1GOTO 12580,12580,12590,12590,12590,12580,12600,12600,12600:GOTO12570
12580 GOTO 12610
12590 E = E + 4 : GOTO 12610
12600 E = E - 4 : GOTO 12610
12610 COPY (E-EA,F)-(E+AI+EB,F+FA+AW+FB),1 TO (VA,VC),1
12620 COPY (DS+GS,AP)-(DS+24+GS,AC),1 TO (VA+EA,VC),1,TPSET
12630 COPY (VA,VC)-(VB,VD),1 TO (E-EA,F),0
12640 IF E>240 THEN COPY (E-EA,F-FA) - (E+AI+EB,F+AW+FB),1 TO (E-EA,F-FA),0 : E=4 : GOSUB 12960
12650 IF E<4 THEN COPY (E-EA,F-FA) - (E+AI+EB,F+AW+FB),1 TO (E-EA,F-FA),0 : E=240 : GOSUB 12960
12660 IF QB = 0 THEN 12930 ELSE QB = QB - 1
12680 S=STICK(0):ONS+1GOSUB780,890,1060,1250,1420,1590,1740,1910,2080:COPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZV,ZX),1:COPY(0+ZK+ZI,ZE)-(24+ZK+ZI,ZF),1TO(ZV+ZA,ZX+ZB),1,TPSET:COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL-ZB),0
12682 T=STICK(1):ONT+1GOTO12700,12720,12740,12760,12780,12800,12820,12840,12860:GOTO12680
12700 GOTO 12870
12720 GOTO 12870
12740 DS = 25 : GS = 0 : E = E+4 : GOTO 12870
12760 DS = 25 : GS = 0 : E = E+4 : GOTO 12870
12780 DS = 75 : GS = 0 : E = E+4 : GOTO 12870
12800 GOTO 12870
12820 DS = 75 : GS = II : E = E-4 : GOTO 12870
12840 DS = 25 : GS = II : E = E-4 : GOTO 12870
12860 DS = 25 : GS = II : E = E-4 : GOTO 12870
12870 COPY (E-EA,F-FA)-(E+AI+EB,F+FA+AW+FB-4),1 TO (VA,VC),1
12880 COPY (DS+GS,AP)-(DS+24+GS,AC),1 TO (VA+EA,VC+8),1,TPSET
12890 COPY (VA,VC)-(VB,VD),1 TO (E-EA,F-FA),0
12900 IF E>240 THEN COPY (E-EA,F-FA) - (E+AI+EB,F+AW+FB),1 TO (E-EA,F-FA),0 : E=4 : GOSUB 12960
12910 IF E<4 THEN COPY (E-EA,F-FA) - (E+AI+EB,F+AW+FB),1 TO (E-EA,F-FA),0 : E=240 : GOSUB 12960
12920 F = F + FB*2 : GOTO 12660
12930 RETURN
12960 DEFUSR =&H41:A=USR(0):SETPAGE1,1:CLS:SETPAGE0,0:CLS
12970 BLOAD"02.sc8",S:SETPAGE1,1:BLOAD"03.sc8",S:VDP(10)=0:SETPAGE0,0
12980 IFVDP(-2)AND1THEN12980
13000 DEFUSR=&H44:A=USR(0)
13010 RETURN

Edité par igal Le 27/07/2018 à 07h17


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

Le 27/07/2018 à 12h28
il y a des moyens de simplifier les opérations pour les lignes identiques

ex : 752 2310 2570 2680

il suffit de faire un GOSUB vers une ligne

752 GOSUB 20000
2310 GOSUB 20000
2570 GOSUB 20000
2680 GOSUB 20000

20000 T=STICK(1):ONT+1GOSUB10780,10890,11060,11250,11420,11590,11740,11910,12080:COPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(VA,VC),1:COPY(0+GS+DS,AP)-(24+GS+DS,AC),1TO(VA+EA,VC+FA),1,TPSET:COPY(VA,VC)-(VB,VD),1TO(E-EA,F-FA),0
20010 RETURN

peux tu faire un DSK contenant tes images ?


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 27/07/2018 à 13h35
Je m'en occupe en rentrant ce soir..
:)


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 27/07/2018 à 15h14
Je viens de jeter un œil sur le listing..

Il y a pas mal de lignes de commandes répétés.
Le problème est que j'ai choisi de répéter ces lignes plutôt que d'ajouter des GOSUB dans les boucles.

Si il est nécessaire de gagner quelques centaines d'octets, pas de problèmes... Je peux remplacer ces 4 lignes de commandes pour le joueur 1, 4 autres lignes de commandes pour le joueur 2.

@Jipe: Les lignes de commandes dont tu parles sont le coeur même du moteur.
La raison pour laquelle ces lignes de commandes sont répétés est d'économiser "Un Gosub et donc un Return à chaque boucle"
Si c'est vraiment nécessaire, dit le moi et je modifierai ce moteur de façon dédiée juste par nécessite. Autrement, il est préférable (dans mon approche en Basic) de laisser ces répétitions.

A propos des images:
1) Chaque Image est en double.
2) L'image [Paire] est celle visible et se charge sur la Page 0: (Surface visible de l'écran ainsi que la barre d'item en bas d'écran)
3) L'image [impaire] est celle non visible et se charge en page 1:(Le haut et le bas de l'image contient les animations des héros et/ou ennemis/items )
4) Il y a 12 images au départ ce qui signifie 24 images à l'arrivée (numérotés de 00 à 23)
5) Tout est sur "CF" émulée par Bluemsx.

Bref..J'envoie l'image .DSK de 200Mo sur free et je met le lien dans 5 minutes ;)
http://dl.free.fr/wmmQiPtoY
Edité par igal Le 27/07/2018 à 19h00


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 27/07/2018 à 21h04
Voila le code Jipe.

Etrangement, il ne semble pas être plus lent que l'ancien malgré l'ajout d'un GOSUB =><= RETURN à chaque boucle.
8937 Octets contre 10707 Octets auparavant :top

A croire que le temps perdu à l'exécution d'une boucle supplémentaire à chaque boucle du moteur est gagné en ayant écourté le programme :hum

Voici le listing testé fonctionnel.
Nb:Pour le moment, les pages 0 et 1 sont chargées et lorsque le héro atteint le bord droit, les pages 2 et 3 sont chargées.
Je dois implémenter les commandes avec une incrémentation à chaque fois pour afficher les pages suivantes ;)

Code TEXT :
30 DEFINT A-Z
130 SCREEN 8
150 COLOR,,0
200 CALLCHDIR("stage1")
 
320 ZA = 4
330 ZB = 4
340 ZC = 4
350 ZD = 4
360 ZE = 176
370 ZF = 207
380 ZG = 25
390 ZH = 32
400 ZI = 0
410 ZJ = 156
420 ZK = 0
430 ZL = ZB*34
440 ZM = ZA*32
450 ZN= 1
460 ZO = 0
470 ZP = 0
480 ZQ = 0
 
500 ZR = 0
510 ZS = 255
520 ZT = 0
530 ZU = 171
 
550 ZV = 128-ZA-(ZG/2)
560 ZW = ZV+ZA+ZG+ZC
570 ZX = 172
580 ZY = ZX+ZB+ZH+ZD
582 GOTO 10320
 
590 DEFUSR =&H41:A=USR(0)
600 BLOAD"00.sc8",S:SETPAGE1,1:BLOAD"01.sc8",S:VDP(10)=0:SETPAGE0
610 IFVDP(-2)AND1THEN610
620 DEFUSR=&H44:A=USR(0)
 
 
 
750 GOSUB4000:GOTO 750
 
780 ZQ=5:IFZO=1THENZK=ZJELSEZK=0
800 IFSTRIG(0)THENGOSUB2270
820 RETURN
 
890 ZQ=10:IFZO=1THENZK=ZJELSEZK=0
910 IFZL<ZB*24THENRETURN
930 IFSTRIG(0)THENIFZL<ZB*32THENRETURNELSE2270
950 ZI=ZI+25:IFZI=100THENZI=0
970 ZL=ZL-ZB
990 RETURN
 
1060 ZQ=10:ZN=1:ZO=0 
1080 IFZL<ZB*24THENRETURN
1100 GOSUB5000
1120 IFSTRIG(0)THENGOSUB2270
1140 ZI=ZI+25:IFZI=100THENZI=0
1160 ZM=ZM+ZA:ZL=ZL-ZB:SC=SC+4AND255
1180 RETURN
 
1250 ZQ=5:ZN=1:ZO=0
1270 IFSTRIG(0)THENGOSUB2270
1290 GOSUB5000
1310 ZI=ZI+25:IFZI=100THENZI=0
1330 ZM=ZM+ZA:SC=SC+4AND255
1350 RETURN
 
1420 ZQ=2:ZN=1:ZO=0 
1440 IFZL>ZB*33THENRETURN
1460 ZI=ZI+25:IFZI=100THENZI=0
1480 ZM=ZM+ZA:ZL=ZL+ZB:SC=SC+4AND255
1500 GOSUB5000
1520 RETURN
 
1590 ZQ=2:IFZO=1THENZK=ZJELSEZK=0
1610 IFZL>ZB*33THENRETURN
1630 ZI=ZI+25:IFZI=100THENZI=0
1650 ZL=ZL+ZB
1670 RETURN
 
1740 ZQ=2:ZO=1:ZN=0 
1760 IFZL>ZB*33THENRETURN
1780 ZI=ZI+25:IFZI=100THENZI=0
1800 ZL=ZL+ZB:ZM=ZM-ZA:SC=SC-4AND255
1820 GOSUB6000
1840 RETURN
 
1910 ZQ=5:ZO=1:ZN=0 
1930 ZI=ZI+25:IFZI=100THENZI=0
1950 IFSTRIG(0)THENGOSUB2270
1970 GOSUB6000
1990 ZM=ZM-ZA:SC=SC-4AND255
2010 RETURN
 
2080 ZQ=10:ZO=1:ZN=0
2100 IFZL<ZB*24THENRETURN
2120 GOSUB6000
2140 IF STRIG (0) THEN GOSUB 2270
2160 ZI=ZI+25:IFZI=100THENZI=0
2180 ZM=ZM-ZA:ZL=ZL-ZB:SC=SC-4AND255
2200 RETURN
 
 
2270 IFZL<100THENRETURN
 
2290 IFZP=ZQTHEN2570ELSEZP=ZP+1
 
2310 GOSUB7000:S=STICK(0):ONS+1GOTO 2330,2350,2370,2370,2370,2430,2450,2450,2450:GOTO2310
2330 GOTO2500
2350 GOTO2500
2370 ZI=25:ZK=0:ZM=ZM+4:SC=SC+4:SETSCROLLSCAND255:GOTO2500
2430 GOTO2500
2450 ZI=75:ZK=ZJ:ZM=ZM-4:SC=SC-4:SETSCROLLSCAND255:GOTO2500
2500 GOSUB5000
2510 GOSUB6000
2520 ZL=ZL-ZD*2
2530 COPY(ZM-ZA,ZL)-(ZM+ZG+ZC,ZL+ZB+ZH+ZD),1TO(ZV,ZX),1
2540 COPY(ZI+ZK,ZE)-(ZI+24+ZK,ZF),1TO(ZV+ZA,ZX),1,TPSET
2550 COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL),0
2560 GOTO2290
 
2570 GOSUB7000:S=STICK(0):ONS+1GOTO 2580,2580,2590,2590,2590,2580,2600,2600,2600:GOTO2570
2580 GOTO 2610 
2590 ZM=ZM+4:SC=SC+4:SETSCROLLSCAND255:GOTO2610
2600 ZM=ZM-4:SC=SC-4:SETSCROLLSCAND255:GOTO2610
2610 COPY(ZM-ZA,ZL)-(ZM+ZG+ZC,ZL+ZB+ZH+ZD),1TO(ZV,ZX),1
2620 COPY(ZI+ZK,ZE)-(ZI+24+ZK,ZF),1TO(ZV+ZA,ZX),1,TPSET
2630 COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL),0
2640 GOSUB5000
2650 GOSUB6000
2660 IFZP=0THEN2930ELSEZP=ZP-1
 
2680 GOSUB7000:S=STICK(0):ONS+1GOTO2700,2700,2740,2740,2740,2800,2820,2820,2820:GOTO2680
2700 GOTO 2870
2740 ZI=25:ZK=0:ZM=ZM+4:SC=SC+4:SETSCROLLSCAND255:GOTO2870
2800 GOTO 2870
2820 ZI=75:ZK=ZJ:ZM=ZM-4:SC=SC-4:SETSCROLLSCAND255:GOTO2870
2870 COPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZB+ZH+ZD-4),1 TO (ZV,ZX),1
2880 COPY(ZI+ZK,ZE)-(ZI+24+ZK,ZF),1 TO (ZV+ZA,ZX+8),1,TPSET
2890 COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL-ZB),0
2900 GOSUB5000
2910 GOSUB6000
2920 ZL=ZL+ZD*2:GOTO2660
2930 RETURN:'ZA=4:ZB=4:RETURN
 
2960 DEFUSR =&H41:A=USR(0):SETPAGE1,1:CLS:SETPAGE0,0:CLS
2970 BLOAD"02.sc8",S:SETPAGE1,1:BLOAD"03.sc8",S:VDP(10)=0:SETPAGE0,0
2980 IFVDP(-2)AND1THEN2980
3000 DEFUSR=&H44:A=USR(0)
3010 RETURN
 
4000 S=STICK(0):ONS+1GOSUB780,890,1060,1250,1420,1590,1740,1910,2080:COPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZV,ZX),1:COPY(0+ZK+ZI,ZE)-(24+ZK+ZI,ZF),1TO(ZV+ZA,ZX+ZB),1,TPSET:COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL-ZB),0
4010 T=STICK(1):ONT+1GOSUB10780,10890,11060,11250,11420,11590,11740,11910,12080:COPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(VA,VC),1:COPY(0+GS+DS,AP)-(24+GS+DS,AC),1TO(VA+EA,VC+FA),1,TPSET:COPY(VA,VC)-(VB,VD),1TO(E-EA,F-FA),0
4020 SETSCROLLSCAND255
4030 RETURN
 
5000 IFZM>240THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=4:GOSUB2960
5010 RETURN
 
6000 IFZM<4THENCOPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZM-ZA,ZL-ZB),0:ZM=240:GOSUB2960
6010 RETURN
 
7000 T=STICK(1):ONT+1GOSUB10780,10890,11060,11250,11420,11590,11740,11910,12080:COPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(VA,VC),1:COPY(0+GS+DS,AP)-(24+GS+DS,AC),1TO(VA+EA,VC+FA),1,TPSET:COPY(VA,VC)-(VB,VD),1TO(E-EA,F-FA),0
7010 RETURN
 
 
 
10320 EA = 4
10330 FA = 4
10340 EB = 4
10350 FB = 4
10360 AP = 176 - 172
10370 AC = 207 - 172
10380 AI = 25
10390 AW = 31
10400 DS = 0
10410 II = 156
10420 GS = 0
10430 F = FA*34
10440 E = EA*20
10450 J = 1
10460 K = 0
10470 QB = 0
10480 NB = 0
10550 VA = 128-EA-(AI/2)
10560 VB = VA+EA+AI+EB
10570 VC = 172 - 172
10580 VD = VC+FA+AW+FB
10582 GOTO 590
 
10780 NB=5:IFK=1THENGS=IIELSEGS=0 
10800 IFSTRIG(1)THENGOSUB12270
10820 RETURN
 
10890 NB=10:IFK=1THENGS=IIELSEGS=0
10910 IFF<FA*24THENRETURN
10930 IFSTRIG(1)THENIFF<FA*32THENRETURNELSE12270
10950 DS=DS+25:IFDS=100THENDS=0
10970 F=F-FA
10990 RETURN
 
11060 NB=10:J=1:K=0 
11080 IFF<FA*24THENRETURN
11100 GOSUB15000
11120 IFSTRIG(1)THENGOSUB12270
11140 DS=DS+25:IFDS=100THENDS=0
11160 E=E+EA:F=F-FA
11180 RETURN
 
11250 NB=5:J=1:K=0
11270 IFSTRIG(1)THENGOSUB12270
11290 GOSUB15000
11310 DS=DS+25:IFDS=100THENDS=0
11330 E=E+EA 
11350 RETURN
 
11420 NB=2:J=1:K=0 
11440 IFF>FA*33THENRETURN
11460 DS=DS+25:IFDS=100THENDS=0
11480 E=E+EA:F=F+FA
11500 GOSUB15000
11520 RETURN
 
11590 NB=2:IFK=1THENGS=IIELSEGS=0
11610 IFF>FA*33THENRETURN
11630 DS=DS+25:IFDS=100THENDS=0
11650 F=F+FA
11670 RETURN
 
11740 NB=2:K=1:J=0 
11760 IFF>FA*33THENRETURN
11780 DS=DS+25:IFDS=100THENDS=0
11800 F=F+FA:E=E-EA
11820 GOSUB16000
11840 RETURN
 
11910 NB=5:K=1:J=0 
11930 DS=DS+25:IFDS=100THENDS=0
11950 IFSTRIG(1)THENGOSUB12270
11970 GOSUB16000
11990 E=E-EA
12010 RETURN
 
12080 NB=10:K=1:J=0
12100 IFF<FA*24THENRETURN
12120 GOSUB16000
12140 IFSTRIG(1)THENGOSUB12270
12160 DS=DS+25:IFDS=100THENDS=0
12180 E=E-EA:F=F-FA
12200 RETURN
 
 
12270 IF F < 100 THEN RETURN
 
12290 IF QB = NB THEN 12570 ELSE QB = QB + 1
 
12310 GOSUB17000:T=STICK(1):ONT+1GOTO 12330,12350,12370,12390,12410,12430,12450,12470,12490:GOTO12310
 
12330 GOTO12500
 
12350 GOTO12500
 
12370 DS = 25 : GS = 0 : E = E+4 : GOTO12500
 
12390 DS = 25 : GS = 0 : E = E+4 : GOTO12500
 
12410 DS = 75 : GS = 0 : E = E+4 : GOTO12500
 
12430 GOTO12500
 
12450 DS = 75 : GS = II : E = E-4 : GOTO12500
 
12470 DS = 25 : GS = II : E = E-4 : GOTO12500
 
12490 DS = 25 : GS = II : E = E-4 : GOTO12500
12500 GOSUB18000
12510 GOSUB19000
12520 F = F - FB*2
12530 COPY (E-EA,F)-(E+AI+EB,F+FA+AW+FB),1 TO (VA,VC),1
12540 COPY (DS+GS,AP)-(DS+24+GS,AC),1 TO (VA+EA,VC),1,TPSET
12550 COPY (VA,VC)-(VB,VD),1 TO (E-EA,F),0
12560 GOTO12290
12570 GOSUB17000:T=STICK(1):ONT+1GOTO 12580,12580,12590,12590,12590,12580,12600,12600,12600:GOTO12570
12580 GOTO 12610
12590 E = E + 4 : GOTO 12610
12600 E = E - 4 : GOTO 12610
12610 COPY (E-EA,F)-(E+AI+EB,F+FA+AW+FB),1 TO (VA,VC),1
12620 COPY (DS+GS,AP)-(DS+24+GS,AC),1 TO (VA+EA,VC),1,TPSET
12630 COPY (VA,VC)-(VB,VD),1 TO (E-EA,F),0
12640 GOSUB18000
12650 GOSUB19000
12660 IF QB = 0 THEN 12930 ELSE QB = QB - 1
 
12680 GOSUB17000:T=STICK(1):ONT+1GOTO12700,12720,12740,12760,12780,12800,12820,12840,12860:GOTO12680
 
12700 GOTO 12870
 
12720 GOTO 12870
 
12740 DS = 25 : GS = 0 : E = E+4 : GOTO 12870
 
12760 DS = 25 : GS = 0 : E = E+4 : GOTO 12870
 
12780 DS = 75 : GS = 0 : E = E+4 : GOTO 12870
 
12800 GOTO 12870
 
12820 DS = 75 : GS = II : E = E-4 : GOTO 12870
 
12840 DS = 25 : GS = II : E = E-4 : GOTO 12870
 
12860 DS = 25 : GS = II : E = E-4 : GOTO 12870
12870 COPY (E-EA,F-FA)-(E+AI+EB,F+FA+AW+FB-4),1 TO (VA,VC),1
12880 COPY (DS+GS,AP)-(DS+24+GS,AC),1 TO (VA+EA,VC+8),1,TPSET
12890 COPY (VA,VC)-(VB,VD),1 TO (E-EA,F-FA),0
12900 GOSUB18000
12910 GOSUB19000
12920 F = F + FB*2 : GOTO 12660
12930 RETURN
 
 
 
12960 DEFUSR =&H41:A=USR(0):SETPAGE1,1:CLS:SETPAGE0,0:CLS
12970 BLOAD"02.sc8",S:SETPAGE1,1:BLOAD"03.sc8",S:VDP(10)=0:SETPAGE0,0
12980 IFVDP(-2)AND1THEN12980
13000 DEFUSR=&H44:A=USR(0)
13010 RETURN
 
15000 IFE>240THENCOPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(E-EA,F-FA),0:E=4:GOSUB12960
15010 RETURN
 
16000 IFE<4THENCOPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(E-EA,F-FA),0:E=240:GOSUB12960
16010 RETURN
 
17000 S=STICK(0):ONS+1GOSUB780,890,1060,1250,1420,1590,1740,1910,2080:COPY(ZM-ZA,ZL-ZB)-(ZM+ZG+ZC,ZL+ZH+ZD),1TO(ZV,ZX),1:COPY(0+ZK+ZI,ZE)-(24+ZK+ZI,ZF),1TO(ZV+ZA,ZX+ZB),1,TPSET:COPY(ZV,ZX)-(ZW,ZY),1TO(ZM-ZA,ZL-ZB),0
17010 RETURN
 
18000 IFE>240THENCOPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(E-EA,F-FA),0:E=4:GOSUB12960
18010 RETURN
 
19000 IFE<4THENCOPY(E-EA,F-FA)-(E+AI+EB,F+AW+FB),1TO(E-EA,F-FA),0:E=240:GOSUB12960
19010 RETURN



@Jipe: J'attends tes remarques :D


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

Le 28/07/2018 à 08h22
1ére remarque mais pas sur ton programme
a priori tu travailles a partir du Basic pour exploiter ton image de disque dur
ci-joint une image avec le dos 2.30 et BLS (viewer d'images)
il suffit de l'insérer dans le disque B: et de taper
COPY "B:*.*" TO "A:"
au reboot tu seras dans le dos , il suffit de taper BASIC pour te retrouver comme avant ;)
pas contre en lançant BLS.COM tu peux aller dans ton sous directory voir tes images sans taper de commande
-
ensuite ne travaille pas avec les .ASC mais re-sauve les en .BAS normaux
tu va gagner beaucoup de temps sur le chargement du programme
-
pour le programme je regarde


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 28/07/2018 à 09h10
Salut Jipe.

En fait, je démarre sur la CF qui me fait arriver sur un DOS sur le disque A:
Ensuite, je tape la commande E: suivie de la commande BASIC
Je me retrouve donc dans le lecteur E: sous BASIC.
on lecteur E est en fait une partition du disque dur dans laquelle j'ai placé le programme xyz.ASC et surtout le répertoire STAGE1 qui contient les images chargées par le programme .ASC
j'ai toujours fais comme cela.

Y a t il un problème à faire ainsi?
Je vois que BLS.COM est un visualiseur d'images. Je dois l'utiliser pour quelque chose de spécial?
Oui je travaille en ASC parce que lorsque j'intervient sur mes programme "plutôt" répétitifs, je fais des modifications par "gros paquets" de sorte à essayer différents angles d'approches du moteur.
Ca reste donc plus intéressant pour moi de laisser tout en ASC quitte à accélérer l'émulation juste le temps du chargement du fichier pour ensuite ramener la vitesse d'émulation à la normale et voir ce que cela donne.
Une fois le travail "completé", évidemment, y a aucune raison de laisser le fichier sous le format ASCII mais tout intérêt à le sauvegarder en .BAS ;)

J'essais de débugger le saut simultané des deux héros mais c'est pas gagné. Va falloir se creuser les méninges :oups


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

Le 28/07/2018 à 09h20
l'image que tu m'a envoyé booote en basic
d'aprés toi elle contient plusieurs partitions mais je ne vois que la A:
STAGE1 se trouve sur le disque A

BLS c'est juste pour voir directement tes images , c'est plus rapide qu'un BLOAD ;)


:noel
Site web    
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 28/07/2018 à 09h35
Igal,
Pour faire fonctionner le programme on a besoin de 4 images de 52ko (00.sc8 à 03.sc8), tu nous fournis une image disque de 200Mo pour y placer à priori 1,2 Mo. :fou

A part cette petite remarque, je voudrais savoir quel logiciel tu utilises pour transformer les images BMP de 1,2 Mo (dans ton fichier stage_1.zip) en SC8 ?
Merci!
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 28/07/2018 à 10h11
Salut Sylvain.

BMP2MSX pour passer de BMP au SC8 :)

Le programme ne charge que 4 images parce que pour le moment, je n'ai pas encore travaillé sur [l'incrémentation automatique du numéro des pages à charger].
Les deux premières pages 00 et 01 forment un couple dont est visible "que" la page 00 et les héros de la page 01
Pour faire un semblant de scroll, il fallait que j'ajoute un couple de pages à savoir 02 et 03 de sorte à avoir de la "matière" pour scroller.
Pour le moment, j'ai laissé de coté le scroll ainsi que le chargement des pages automatisées pour me concentrer sur la boucle de sauts!

Je pense que je vais devoir reprendre la boucle de sauts a Zéro pour rendre possible les sauts simultanés des joueurs 1 et 2.
A ce propos:
Dès le départ, j'avais choisi d'utiliser la commande [ S=STICK(0):ONS+1GOSUB ] par [S=STICK(0):ONS+1GOTO ]
Le grand principe de mon approche est la suivante:

1) Elévation.
S=STICK(0):ONS+1GOTO 1a, 1b, 1c, 1d, etc...
1a) Statique
1b) Haut
1c) Haut Droite
1d) Droite
1e) Droite Bas
1f) Bas
1g) Bas Gauche
1h) Gauche
1i) Gauche Haut
2) Sustentation.
S=STICK(0):ONS+1GOTO 2a, 2b, 2c, 2d, etc...
2a) Statique
2b) Haut
2c) Haut Droite
2d) Droite
2e) Droite Bas
2f) Bas
2g) Bas Gauche
2h) Gauche
2i) Gauche Haut
3) Abaissement.
S=STICK(0):ONS+1GOTO 3a, 3b, 3c, 3d, etc...
3a) Statique
3b) Haut
3c) Haut Droite
3d) Droite
3e) Droite Bas
3f) Bas
3g) Bas Gauche
3h) Gauche
3i) Gauche Haut

J'ai essayé de remplacer ONS+1GOTO par ONS+1GOSUB en adaptant le reste autour mais dans le meilleur des cas, j'arrive a déclencher le saut du second héro simultanément au premier mais...mais le premier des deux qui à commencé le saut vois son saut "figé" le temps que le saut de l'autre héro se termine.
Je pense donc reprendre à zéro mon approche des sauts mais je ne vois pas trop comment "entrelacer" deux saut distincts comme si l'on devait "enchevêtrer" deux séries de GOSUB les uns dans les autres sans s'emmêler les pinceaux :sick

J'attends vos suggestions :oups Edité par igal Le 28/07/2018 à 10h16


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 28/07/2018 à 10h15
JIPEMSX :
l'image que tu m'a envoyé booote en basic
d'aprés toi elle contient plusieurs partitions mais je ne vois que la A:
STAGE1 se trouve sur le disque A

BLS c'est juste pour voir directement tes images , c'est plus rapide qu'un BLOAD ;)


Pardon..
En fait, l'image que je t'ai envoyé n'est QUE le disque E:
Mon msx virtuel boot sur A: .. de la, je vais sur E: par la commande E: et ensuite, je vais sur le basic en entrant la commande BASIC.
Effectivement ça me sert à rien de passer par A: mais le MSX avec la CF qui contient le system etc...le fait tout seul...c'est moi qui vais sur E: pour profiter des 200 mo d'espace du disc. je touche pas aux partitions A et B.


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

Le 28/07/2018 à 10h44
peut être avec ON INTERVAL GOSUB

https://www.msx.org/wiki/ON_INTERVAL_GOSUB


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 29/07/2018 à 07h32
Après avoir réfléchi je vais prendre une orientation différente concernant le saut des héros.

Il existe deux façons de sauter dans les jeux vidéo.
1) Le saut ouvert.
2) Le saut prédéterminé.

1) Le saut ouvert.
Le saut que j'appelle "ouvert" consiste à laisser au joueur la possibilité de modifier la direction du héro alors qu'il est déjà dans les airs!
Un problème se pose lorsqu'on veut donner la possibilité à un second héro de sauter et donc de modifier lui aussi son saut alors qu'il est dans les airs.
Ce saut se présente actuellement en trois phases:

1) L'ascension:
Il s'agit d'un boucle qui diminue la valeur Y du héro tout en offrant la possibilité de modifier la valeur X.
L'élévation est donc dirigeable.
2) L'apesanteur:
Y n'est donc pas influé mais X est modifié selon les input du joueur.
1) La dépression:
Tout comme la phase d'ascension, la dépression est une boucle qui va influer sur Y mais en additionnant la valeur soustraire lors de l'ascension et encore une fois, le joueur à loisir d'infléchir le lieu de chute en agissant sur l''axe X à chaque cycle de cette boucle.

Toutes ces opérations ne posent aucun problème à piloter un second héro dans le même temps puisqu'il suffit de placer un GOSUB au début de chaque phase (boucle) pour permettre le déplacement dans les 8 directions possibles.

Par contre, lorsque l'on souhaite faire sauter un second héro alors qu'un des deux est déjà dans sa phase de saut (donc dans l'une trois boucles), la phase est "mise en veille" jusqu'à ce que le second héro ait accompli l'entièreté de son saut pour que "la main soit rendue" au premier héro qui "sortira de sa léthargie" pour finir l'accomplissement de ses boucles de saut.

Continuer dans cette voix m'obligerait à prévoir une multitude de combinaisons possible entre les trois phases de saut des deux héros tout en tenant compte de la boucle en cours pour chacun des joueurs.
Disons:
3 ou 6 boucles pour l'élévation, 2 boucles pour l'apesanteur, 3 ou 6 boucles pour la dépression et le tout multiplié par 2 joueurs et c'est pas fini...
Soit:
3 x 2 x 3 => 18 possibilités multipliées par 2 jours, ce qui nous donne 36 phases possibles.
A ces 36 possibilités, il faut implémenter une "chiée" de GOSUB afin de permettre l’entrelacement des mouvements à tour de rôle etc etc...

2) Le saut prédéterminé.

J'appelle le saut prédéterminé le saut que l'on retrouve dans "Vampire Killer".
Contrairement au "saut ouvert", le "saut prédéterminé" s'imbrique dans la boucle principale.
En effet, la prédétermination consiste à imbriquer simplement les phases d'élévation, apesanteur et dépression à l'intérieur du moteur principal.
Par contre, il nécessite principalement l'ajout d'un "interrupteur" qui indique si le héro est déjà dans une des phases de saut afin d'empêcher un "double" ou encore "triple" saut ainsi que quelques autres variables qui indiquent quelle phase du saut est en cours.

Le point faible étant la prise en charge de Variables supplémentaires à chaque cycle du moteur principal mais ce sera le prix à payer pour rendre possible la gestion intégrale et indépendante des deux héros simultanément.

Voila donc pour la suite du programme :tea Edité par igal Le 29/07/2018 à 07h35


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