La Place des Développeurs [EN COURS] VDP Flash Pipeline Expérimentations Quelques applications sur l'approche Flash
igal
Membre non connecté
Conseiller Municipal
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)
A suivre...
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
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
igal
Membre non connecté
Conseiller Municipal
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
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
Je m'occupe de nettoyer le bordel dans les phases de saut. Edité par igal Le 26/07/2018 à 18h37
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
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
Je m'occupe de nettoyer le bordel dans les phases de saut. Edité par igal Le 26/07/2018 à 18h37
igal
Membre non connecté
Conseiller Municipal
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.
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 :
Edité par
igal
Le 27/07/2018 à 07h17
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
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 ?
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 ?
igal
Membre non connecté
Conseiller Municipal
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 1Le 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
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 1Le 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
igal
Membre non connecté
Conseiller Municipal
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
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
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
@Jipe: J'attends tes remarques
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
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
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
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
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
igal
Membre non connecté
Conseiller Municipal
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
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
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
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
Visiteur
Vagabond
Message : 0
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.
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!
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.
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
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
J'attends vos suggestions Edité par igal Le 28/07/2018 à 10h16
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
J'attends vos suggestions Edité par igal Le 28/07/2018 à 10h16
igal
Membre non connecté
Conseiller Municipal
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
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.
igal
Membre non connecté
Conseiller Municipal
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 Edité par igal Le 29/07/2018 à 07h35
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 Edité par igal Le 29/07/2018 à 07h35
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie