L'école [En Cours] Space Manbow Mappe complète. Mappe du Jeu Space Manbow.
igal
Membre non connecté
Conseiller Municipal
Reprise du message précédent
C'est cool j'ai essayé aussi de mon coté l’arborescence sous dos jusqu'à 16 niveau et ca devrait aussi fonctionner sous basic je penseEn fait, la complétude des arborescences d'un profondeur de 16 répertoires dans lesquels se trouvent 8 fichiers (bribes) soit (16 rep X 8 fichiers = 128 fichiers) forment un ensemble qui est en fait une image large de 256 pixels découpée en tranches verticales larges de 2 pixels (tranches verticales permettant l'affichage par COPY) .
De fait, un nouveau problème va se poser:
Avec mon ancienne approche:
Disons que mon approche pour lire l'ensemble des fichiers consistait à consulter des répertoires de façon latérale...Comme si les répertoires étaient rangés les uns à la droite des autres... Il suffisait donc de ressortir "d'une seule arborescence après lecture de chaque groupe de 8 fichiers" pour pouvoir ensuite rentrer dans un nouveau répertoire... L'opération étant répétée 16 fois.
Avec ton approche:
En appliquant ta technique, une fois qu'on a fini de lire le 8 ieme fichier qui se trouve dans la 16 arborescence en profondeur, il faut remonter 16 arborescences pour pouvoir attaquer une nouvelle série de répertoires contenant les 128 fichiers formant une nouvelle image qui formera la suite du scrolling
CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR (".."):CALL CHDIR ("..")
Ma question est donc la suivante:
Existe t il une commande en BASIC ou encore une astuce (n'importe laquelle) qui permette de remonter à la racine ou encore de 16 arborescence?
Merci pour toute vos idées
Edité par igal Le 19/01/2018 à 11h28
Visiteurs
Vagabond
Message : 0
C'est pas compliqué;
-soit tu sais sur quel lecteur tu te trouves et pour revenir à la racine tu fais un change directory absolu :
_CHDIR("A:\")
ou
_CHDIR("A:\MONJEU")
-soit tu sais pas sur quel lecteur tu te trouves mais tu connais la profondeur de répertoire courant et tu fais un change directory relatif :
_CHDIR("..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..")
-soit tu sais sur quel lecteur tu te trouves et pour revenir à la racine tu fais un change directory absolu :
_CHDIR("A:\")
ou
_CHDIR("A:\MONJEU")
-soit tu sais pas sur quel lecteur tu te trouves mais tu connais la profondeur de répertoire courant et tu fais un change directory relatif :
_CHDIR("..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..")
igal
Membre non connecté
Conseiller Municipal
Bien joué!
Tellement évident que j'y ai pas pensé
Je vais essayer de "construire le stage 1", modifier le programme, faire une vidéo et la poster d'ici ce soir
Pour ce qui est de l'incrémentation du nom de répertoire en hexadecimal, donc de 0 a F, la solution m'a été donnée par Gdx sur le forum msx.org
Edité par igal Le 19/01/2018 à 13h50
Code CPP :
CALLCHDIR("E:\STAGE1")
Tellement évident que j'y ai pas pensé
Je vais essayer de "construire le stage 1", modifier le programme, faire une vidéo et la poster d'ici ce soir
Pour ce qui est de l'incrémentation du nom de répertoire en hexadecimal, donc de 0 a F, la solution m'a été donnée par Gdx sur le forum msx.org
Code VB :
50 CD=-1: ' prérequis par ce que mon premier répertoire se nomme zéro 4700 CD=CD+1:CALL CHDIR(HEX$(CD)) 4710 COPY RIGHT$(STR$(PC),1)TO(VA,HA) 4715 ONS+1GOSUB 800,810,820,830,840,850,860,870,880 4720 PC=PC+1:IFPC<9THEN4710ELSEPC=1 4790 CALL CHDIR (".."):IFCD<&HFTHEN4700 5000 CD=-1:' permet de redémarrer le processus en commencant par le répertoire Zéro
Edité par igal Le 19/01/2018 à 13h50
igal
Membre non connecté
Conseiller Municipal
@Sylvain: J'essaie d'explorer la piste des répertoire emboîtés comme des poupées Russse
Aucun problème pour créer la première série d'arborescence qui se nomme [ZERO]
Les fichiers que j'y place sont nommés respectivement => 1,2,3,4,5,6,7
Par contre, lorsque j'essaie de faire la même chose avec la série de repertoires qui se nomment [UN], je suis confronté au problème suivant:
Aucun souci pour introduire les fichiers 2,3,4,5,6,7
Pas moyen d'introduire le fichier "UN" dans un répertoire [UN]
Je pense que je vais modifier le nom des répertoires 0 à F en les renommant A à P comme tu en parlais plus haut.
Si vous savez comment "loger" un fichier X sans terminologie dans un répertoire X, n'hésitez pas
Aucun problème pour créer la première série d'arborescence qui se nomme [ZERO]
Les fichiers que j'y place sont nommés respectivement => 1,2,3,4,5,6,7
Par contre, lorsque j'essaie de faire la même chose avec la série de repertoires qui se nomment [UN], je suis confronté au problème suivant:
Aucun souci pour introduire les fichiers 2,3,4,5,6,7
Pas moyen d'introduire le fichier "UN" dans un répertoire [UN]
Je pense que je vais modifier le nom des répertoires 0 à F en les renommant A à P comme tu en parlais plus haut.
Si vous savez comment "loger" un fichier X sans terminologie dans un répertoire X, n'hésitez pas
igal
Membre non connecté
Conseiller Municipal
Merci jipe.
Vais voir ça de près puis je vous dirais ce qui en ressort.
Dans un premier temps, je remodèle min générateur pour implanter les fichiers selon l'arborescence proposée par Sylvain.
Cela m'oblige à corriger les nom des répertoires de A à P et à modifier le moteur en conséquence.
Au final, je verrais bien si l'économie d'une commande toute les 8 bribes donne un gain visible
Vais voir ça de près puis je vous dirais ce qui en ressort.
Dans un premier temps, je remodèle min générateur pour implanter les fichiers selon l'arborescence proposée par Sylvain.
Cela m'oblige à corriger les nom des répertoires de A à P et à modifier le moteur en conséquence.
Au final, je verrais bien si l'économie d'une commande toute les 8 bribes donne un gain visible
Visiteurs
Vagabond
Message : 0
igal
Membre non connecté
Conseiller Municipal
Bah c'est ce que je viens de faire...Zé fini
pour repérer les "profondeurs d'arborescence des répertoires", j'ai collé à chaque "strate" un fichier texte qui décrit à quelle profondeur je suis pour pas me tromper
Me reste à modifier le moteur en espérant que le gain ( un huitième peut être ) soit visible à l'écran.
@Jipe: Je viens de tester la commande CALL CHDIR ("\") sous basic et ça fonctionne parfaitement
Par contre, je retrouve plus sur le symbole "anti slash" [ \ ] sur le MSX
J'ai pas mal de truc à débugger mais le scroll démarre correctement
Faut juste que j'implémente une variable qui compte jusqu'à 16 pour revenir à la racine du msx et passer a la série suivante de répertoires
Putain ça fait une plombe que je suis sur l'ordi et ma femme a pipé un mot
pour repérer les "profondeurs d'arborescence des répertoires", j'ai collé à chaque "strate" un fichier texte qui décrit à quelle profondeur je suis pour pas me tromper
Me reste à modifier le moteur en espérant que le gain ( un huitième peut être ) soit visible à l'écran.
@Jipe: Je viens de tester la commande CALL CHDIR ("\") sous basic et ça fonctionne parfaitement
Par contre, je retrouve plus sur le symbole "anti slash" [ \ ] sur le MSX
J'ai pas mal de truc à débugger mais le scroll démarre correctement
Faut juste que j'implémente une variable qui compte jusqu'à 16 pour revenir à la racine du msx et passer a la série suivante de répertoires
Putain ça fait une plombe que je suis sur l'ordi et ma femme a pipé un mot
igal
Membre non connecté
Conseiller Municipal
Salut Jipe:
Je suis sur l'émulateur exclusivement, y a un moment déjà, fallait choisir entre le hardware et ma femme donc....
Je me souviens avoir pas mal tâtonné avant de trouver réattribué artificiellement les signes suivants:
">", "<", "\" et "/".
En fait, le clavier virtuel visible dans bluemsx est QWERTY et des symboles comme le "Y" japonais etc...
Je sais plus qui m'avait donné la solution sur le forum il me semble..Faut que je cherche
Je viens de finir de réussir une boucle complète du moteur avec le principe proposé par Sylvain. ... OUFFFF ca saoule de débugger
Me reste à adapter le reste du moteur pour que les graphismes et les scrolling multidirectionnelles se mettent en branle
Voici maintenant à quoi se résument les lignes de commande du moteur principal:
Nb: Je dois nettoyer, réorganiser et optimiser l'ordre ces quelques lignes avant de passer à la suite.
J'essais de poster une vidéo d'ici ce soir et l'on verra bien si il y a un gain de vitesse ou pas
Je suis sur l'émulateur exclusivement, y a un moment déjà, fallait choisir entre le hardware et ma femme donc....
Je me souviens avoir pas mal tâtonné avant de trouver réattribué artificiellement les signes suivants:
">", "<", "\" et "/".
En fait, le clavier virtuel visible dans bluemsx est QWERTY et des symboles comme le "Y" japonais etc...
Je sais plus qui m'avait donné la solution sur le forum il me semble..Faut que je cherche
Je viens de finir de réussir une boucle complète du moteur avec le principe proposé par Sylvain. ... OUFFFF ca saoule de débugger
Me reste à adapter le reste du moteur pour que les graphismes et les scrolling multidirectionnelles se mettent en branle
Voici maintenant à quoi se résument les lignes de commande du moteur principal:
Nb: Je dois nettoyer, réorganiser et optimiser l'ordre ces quelques lignes avant de passer à la suite.
Code CPP :
4700 PC=0:CV=CV+1:IFCV=17THENCV=1:CD=CD+1:PC=0:VA=0:_CHDIR("E:\STAGE10") 4710 _CHDIR(CHR$(65+CD)) 4720 PC=PC+1:IFPC=9THEN4700 4730 COPY RIGHT$(STR$(PC),1)TO(VA,HA) 4740 ONS+1GOSUB 800,810,820,830,840,850,860,870,880 4750 GOTO 4720
J'essais de poster une vidéo d'ici ce soir et l'on verra bien si il y a un gain de vitesse ou pas
igal
Membre non connecté
Conseiller Municipal
@Jipe: C'est bien noté pour Defint A-Z
@Sylvain: n'ayant pas de point de repère pour savoir ou ca cloche (si jamais ça cloche) j'ai laissé dans un premier temps, le nom du répertoire racine (mais pas les arborescence en plus en profondeur..) donc juste la racine de chaque répertoire qui porte le même nom des 15 autres répertoires du même nom qu'il contient
Par la suite, j'ai remplacé par la formule qui convient.
Après avoir teste, il s'avère que malgré l'économie d'une commande CALL CHDIR ("..") n'est pas bénéfique.
En effet, la lecture en "profondeur" dans les arborescences semble faire ralentir grandement la vitesse du moteur.
Cependant, si on ne descend pas jusqu'à 16 niveaux de profondeur dans l'arborescence, le gain doit est bien présent.
Cela peut se voir d'ailleurs sur la vitesse de déroulement du scroll, on voit de accélérations et ralentissement répétés du déroulement du scroll.
Ton approche reste cependant une très bonne idée pour "basculer" le sens de lecture du scroll et plus particulièrement pour les direction HAUT et BAS.
Pour dérouler GAUCHE/DROITE alternativement, j'ai trouvé la solution visible dans mes vidéos postés je pense à celle des décors métalgear2 scrollés facilement.
Il me reste gagner de la place en remplacant mes anciennes commandes CALL CHDIR ("nom du fichier") par CALL CHDIR ("VARIABLE") pour gagner énormément de place.
Une fois fait, j'essaierai d'implémenter ton approche pour permettre le défilement HAUT/BAS simplement en ajoutant la profondeur correspondence comme tu l'a proposé.
Par exemple je place les décors du haut dans [/] puis ceux encore plus haut dans [ / / ] etc etc...
Pour redescendre le scroll, il suffit de redescendre d'autant de répertoires que voulus simplement avec [ . ] puis plus bas encore [ . . ]
Cela ne résout pas tous les problème techniques que j'ai déjà rencontré lors de mes expérimentations, mais cela "semble" résoudre un problème lourd auquel j'ai déjà eut à faire.
Bref voici une vidéo avec ton approche
Pour les curieux, voici le listing:
Voici le générateur de bribes modifié pour implémenter des répertoires les uns dans les autres façon poupée russes
Nb: Ici, l'image chargée se nomme P.SC5 et elle est découpée puis sauvée 8 bribes dans le répertoire [P] puis les 8 suivantes dans [P/P] les 8 autres dans [P/P/P] etc... jusqu'à P/P/P/P/P/P/P/P/P/P/P/P/P/P/P/P
Comme suggéré par Sylvain, A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P
Il faut donc commencer par créer A et une fois terminé, modifier en B.SC5 et [B] pour les répertoire etc etc.. jee sais j'aurais pu modifier le programme avec ce que je viens d'apprendre
Si t'as d'autres idées
@Suivre....
@Sylvain: n'ayant pas de point de repère pour savoir ou ca cloche (si jamais ça cloche) j'ai laissé dans un premier temps, le nom du répertoire racine (mais pas les arborescence en plus en profondeur..) donc juste la racine de chaque répertoire qui porte le même nom des 15 autres répertoires du même nom qu'il contient
Par la suite, j'ai remplacé par la formule qui convient.
Après avoir teste, il s'avère que malgré l'économie d'une commande CALL CHDIR ("..") n'est pas bénéfique.
En effet, la lecture en "profondeur" dans les arborescences semble faire ralentir grandement la vitesse du moteur.
Cependant, si on ne descend pas jusqu'à 16 niveaux de profondeur dans l'arborescence, le gain doit est bien présent.
Cela peut se voir d'ailleurs sur la vitesse de déroulement du scroll, on voit de accélérations et ralentissement répétés du déroulement du scroll.
Ton approche reste cependant une très bonne idée pour "basculer" le sens de lecture du scroll et plus particulièrement pour les direction HAUT et BAS.
Pour dérouler GAUCHE/DROITE alternativement, j'ai trouvé la solution visible dans mes vidéos postés je pense à celle des décors métalgear2 scrollés facilement.
Il me reste gagner de la place en remplacant mes anciennes commandes CALL CHDIR ("nom du fichier") par CALL CHDIR ("VARIABLE") pour gagner énormément de place.
Une fois fait, j'essaierai d'implémenter ton approche pour permettre le défilement HAUT/BAS simplement en ajoutant la profondeur correspondence comme tu l'a proposé.
Par exemple je place les décors du haut dans [/] puis ceux encore plus haut dans [ / / ] etc etc...
Pour redescendre le scroll, il suffit de redescendre d'autant de répertoires que voulus simplement avec [ . ] puis plus bas encore [ . . ]
Cela ne résout pas tous les problème techniques que j'ai déjà rencontré lors de mes expérimentations, mais cela "semble" résoudre un problème lourd auquel j'ai déjà eut à faire.
Bref voici une vidéo avec ton approche
Pour les curieux, voici le listing:
Code CSS :
10 'SAVE"SPMA0040.asc",A 20 'PLAYER DE BRIBES VERICALES[(192 X 2) 30 'Mode graphique 40 DEFINT A-Z:SCREEN 5:COLOR1,1,0:SETADJUST(-2,8) 50 'Chargement de la Page Alpha 60 CALL CHDIR("STAGE10") 70 BLOAD"0.SC5",S:COLOR = RESTORE 80 SET PAGE 0,2:BLOAD"COMPLET.sc5",S:SETPAGE0,0 90 VDP(10)=0:VDP(10)=VDP(10)AND2 92 'VARIABLE DU HERO 95 VA=0:CD=0:CV=0:PC=0:X=127:Y=145:PUTSPRITE0,(X,Y),15,0 97 'Primier input 99 ONS+1GOTO 100,110,120,130,140,150,160,170,180:GOTO99 100 S=STICK(0):GOTO99 110 S=STICK(0):Y=Y-4:PUTSPRITE0,(X,Y),15,0:GOTO99 120 VA=0:HA=0:HS=0:I=&H1:CALL CHDIR ("Z"):GOTO300 130 VA=0:HA=0:HS=0:GOTO300 140 VA=0:HA=0:HS=0:I=&H1:CALL CHDIR ("Z"):GOTO300 150 S=STICK(0):Y=Y+4:PUTSPRITE0,(X,Y),15,0:GOTO99 160 VA=0:HA=0:HS=0:I=&HF:CALL CHDIR ("P"):GOTO11300 170 VA=0:HA=0:HS=0:I=&HF:CALL CHDIR ("P"):GOTO11300 180 VA=0:HA=0:HS=0:I=&HF:CALL CHDIR ("P"):GOTO11300 300 CALL CHDIR("a"):GOTO 2000 799 'RETURN DE DROITE 800 RETURN 810 Y=Y-4:PUTSPRITE0,(X,Y),15,0:RETURN 820 Y=Y-4:X=X+4:PUTSPRITE0,(X,Y),15,0:RETURN 830 X=X+4:PUTSPRITE0,(X,Y),15,0:RETURN 840 Y=Y+4:X=X+4:PUTSPRITE0,(X,Y),15,0:RETURN 850 Y=Y+4:PUTSPRITE0,(X,Y),15,0:RETURN 860 Y=Y+4:X=X-4:PUTSPRITE0,(X,Y),15,0:RETURN 870 X=X-4:PUTSPRITE0,(X,Y),15,0:RETURN 880 X=X-4:Y=Y-4:PUTSPRITE0,(X,Y),15,0:RETURN 2000 CD=1:VA=0:CV=0:HA=12:_CHDIR("E:\STAGE10") 2010 PC=0:CV=CV+1:IFCV=17THEN2100 2020 _CHDIR(CHR$(65+CD)) 2030 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 2040 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN2030ELSE2010 2100 CD=2:VA=0:CV=0:HA=12:_CHDIR("E:\STAGE10") 2110 PC=0:CV=CV+1:IFCV=17THEN2200 2120 _CHDIR(CHR$(65+CD)) 2130 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 2140 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN2130ELSE2110 2200 CD=3:VA=0:CV=0:HA=12:_CHDIR("E:\STAGE10") 2210 PC=0:CV=CV+1:IFCV=17THEN2300 2220 _CHDIR(CHR$(65+CD)) 2230 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 2240 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN2230ELSE2210 2300 CD=4:VA=0:CV=0:HA=12:_CHDIR("E:\STAGE10") 2310 PC=0:CV=CV+1:IFCV=17THEN2400 2320 _CHDIR(CHR$(65+CD)) 2330 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 2340 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN2330ELSE2310 2400 CD=5:VA=0:CV=0:HA=12:_CHDIR("E:\STAGE10") 2410 PC=0:CV=CV+1:IFCV=17THEN2500 2420 _CHDIR(CHR$(65+CD)) 2430 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 2440 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN2430ELSE2410 2500 CD=6:VA=0:CV=0:HA=48:_CHDIR("E:\STAGE10") 2510 PC=0:CV=CV+1:IFCV=17THEN2600 2520 _CHDIR(CHR$(65+CD)) 2530 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 2540 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN2530ELSE2510 2600 CD=7:VA=0:CV=0:HA=48:_CHDIR("E:\STAGE10") 2610 PC=0:CV=CV+1:IFCV=17THEN2700 2620 _CHDIR(CHR$(65+CD)) 2630 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 2640 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN2630ELSE2610 2700 CD=8:VA=0:CV=0:HA=48:_CHDIR("E:\STAGE10") 2710 PC=0:CV=CV+1:IFCV=17THEN2800 2720 _CHDIR(CHR$(65+CD)) 2730 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 2740 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN2730ELSE2710 2800 CD=9:VA=0:CV=0:HA=48:_CHDIR("E:\STAGE10") 2810 PC=0:CV=CV+1:IFCV=17THEN2900 2820 _CHDIR(CHR$(65+CD)) 2830 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 2840 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN2830ELSE2810 2900 CD=10:VA=0:CV=0:HA=48:_CHDIR("E:\STAGE10") 2910 PC=0:CV=CV+1:IFCV=17THEN3000 2920 _CHDIR(CHR$(65+CD)) 2930 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 2940 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN2930ELSE2910 3000 CD=11:VA=0:CV=0:HA=48:_CHDIR("E:\STAGE10") 3010 PC=0:CV=CV+1:IFCV=17THEN3100 3020 _CHDIR(CHR$(65+CD)) 3030 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 3040 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN3030ELSE3010 3100 CD=12:VA=0:CV=0:HA=2:_CHDIR("E:\STAGE10") 3105 COPY(0,0)-(255,63),2TO(0,192),0 3110 PC=0:CV=CV+1:IFCV=17THEN3200 3120 _CHDIR(CHR$(65+CD)) 3130 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 3140 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN3130ELSE3110 3200 CD=13:VA=0:CV=0:HA=-20:_CHDIR("E:\STAGE10") 3202 DR=-2:HS=64 3205 COPY(0,0)-(255,63),2TO(0,192),0 3210 PC=0:CV=CV+1:IFCV=17THEN3300 3220 _CHDIR(CHR$(65+CD)) 3230 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 3240 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN3230ELSE3210 3300 CD=14:VA=0:CV=0:HA=-20:_CHDIR("E:\STAGE10") 3305 COPY(0,64)-(255,127),2TO(0,192),0 3310 PC=0:CV=CV+1:IFCV=17THEN3400 3320 _CHDIR(CHR$(65+CD)) 3330 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 3340 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN3330ELSE3310 3400 CD=15:VA=0:CV=0:HA=-20:_CHDIR("E:\STAGE10") 3402 DR=2:HS=0 3405 COPY(0,128)-(255,191),2TO(0,192),0 3410 PC=0:CV=CV+1:IFCV=17THEN3500 3420 _CHDIR(CHR$(65+CD)) 3430 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 3440 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN3430ELSE3410 3500 CD=0:VA=0:CV=0:HA=-20:_CHDIR("E:\STAGE10") 3510 PC=0:CV=CV+1:IFCV=17THEN2000 3520 _CHDIR(CHR$(65+CD)) 3530 PC=PC+1:COPYRIGHT$(STR$(PC),1)TO(VA,HA):ONS+1GOSUB800,810,820,830,840,850,860,870,880 3540 S=STICK(0):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255:IFPC<8THEN3530ELSE3510
Voici le générateur de bribes modifié pour implémenter des répertoires les uns dans les autres façon poupée russes
Nb: Ici, l'image chargée se nomme P.SC5 et elle est découpée puis sauvée 8 bribes dans le répertoire [P] puis les 8 suivantes dans [P/P] les 8 autres dans [P/P/P] etc... jusqu'à P/P/P/P/P/P/P/P/P/P/P/P/P/P/P/P
Comme suggéré par Sylvain, A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P
Il faut donc commencer par créer A et une fois terminé, modifier en B.SC5 et [B] pour les répertoire etc etc.. jee sais j'aurais pu modifier le programme avec ce que je viens d'apprendre
Code CSS :
10 'SAVE"GENSYL2P.ASC",A 20 'generateur de bribes d'images 128 X 2 verticales. 22 'generateur par copy de bribes verticales. 30 ' Mode Graphique utilisé 32 VDP(10)=0: SCREEN 5 70 ' 71 SETPAGE 0,0: CLS 73 CALL CHDIR ("STAGE10") 74 'BLOAD"0.SC5",S:COLOR=RESTORE:VDP(10)=VDP(10)AND2 76 ' 78 BLOAD"P.sc5",S:COLOR=RESTORE:VDP(10)=VDP(10)AND280 'GOTO80 81 A=0:'debut de copy 89 Z=179:'fin de copy 90 'Creer repertoires de A a P et y générer 8 bribes. 100 CALL MKDIR ("P"):CALL CHDIR ("P") 101 COPY(0,A)-(1,Z),0TO"1" 102 COPY(2,A)-(3,Z),0TO"2" 103 COPY(4,A)-(5,Z),0TO"3" 104 COPY(6,A)-(7,Z),0TO"4" 105 COPY(8,A)-(9,Z),0TO"5" 106 COPY(10,A)-(11,Z),0TO"6" 107 COPY(12,A)-(13,Z),0TO"7" 108 COPY(14,A)-(15,Z),0TO"8" 109 'CALL CHDIR ("..") 110 CALL MKDIR ("P"):CALL CHDIR ("P") 111 COPY(16,A)-(17,Z),0 TO "1" 112 COPY(18,A)-(19,Z),0 TO "2" 113 COPY(20,A)-(21,Z),0 TO "3" 114 COPY(22,A)-(23,Z),0 TO "4" 115 COPY(24,A)-(25,Z),0 TO "5" 116 COPY(26,A)-(27,Z),0 TO "6" 117 COPY(28,A)-(29,Z),0 TO "7" 118 COPY(30,A)-(31,Z),0 TO "8" 119 'CALL CHDIR ("..") 120 CALL MKDIR ("P"):CALL CHDIR ("P") 121 COPY(32,A)-(33,Z),0 TO "1" 122 COPY(34,A)-(35,Z),0 TO "2" 123 COPY(36,A)-(37,Z),0 TO "3" 124 COPY(38,A)-(39,Z),0 TO "4" 125 COPY(40,A)-(41,Z),0 TO "5" 126 COPY(42,A)-(43,Z),0 TO "6" 127 COPY(44,A)-(45,Z),0 TO "7" 128 COPY(46,A)-(47,Z),0 TO "8" 129 'CALL CHDIR ("..") 130 CALL MKDIR ("P"):CALL CHDIR ("P") 131 COPY(48,A)-(49,Z),0 TO "1" 132 COPY(50,A)-(51,Z),0 TO "2" 133 COPY(52,A)-(53,Z),0 TO "3" 134 COPY(54,A)-(55,Z),0 TO "4" 135 COPY(56,A)-(57,Z),0 TO "5" 136 COPY(58,A)-(59,Z),0 TO "6" 137 COPY(60,A)-(61,Z),0 TO "7" 138 COPY(62,A)-(63,Z),0 TO "8" 139 'CALL CHDIR ("..") 140 CALL MKDIR ("P"):CALL CHDIR ("P") 141 COPY(64,A)-(65,Z),0 TO "1" 142 COPY(66,A)-(67,Z),0 TO "2" 143 COPY(68,A)-(69,Z),0 TO "3" 144 COPY(70,A)-(71,Z),0 TO "4" 145 COPY(72,A)-(73,Z),0 TO "5" 146 COPY(74,A)-(75,Z),0 TO "6" 147 COPY(76,A)-(77,Z),0 TO "7" 148 COPY(78,A)-(79,Z),0 TO "8" 149 'CALL CHDIR ("..") 150 CALL MKDIR ("P"):CALL CHDIR ("P") 151 COPY(80,A)-(81,Z),0 TO "1" 152 COPY(82,A)-(83,Z),0 TO "2" 153 COPY(84,A)-(85,Z),0 TO "3" 154 COPY(86,A)-(87,Z),0 TO "4" 155 COPY(88,A)-(89,Z),0 TO "5" 156 COPY(90,A)-(91,Z),0 TO "6" 157 COPY(92,A)-(93,Z),0 TO "7" 158 COPY(94,A)-(95,Z),0 TO "8" 159 'CALL CHDIR ("..") 160 CALL MKDIR ("P"):CALL CHDIR ("P") 161 COPY(96,A)-(97,Z),0 TO "1" 162 COPY(98,A)-(99,Z),0 TO "2" 163 COPY(100,A)-(101,Z),0 TO "3" 164 COPY(102,A)-(103,Z),0 TO "4" 165 COPY(104,A)-(105,Z),0 TO "5" 166 COPY(106,A)-(107,Z),0 TO "6" 167 COPY(108,A)-(109,Z),0 TO "7" 168 COPY(110,A)-(111,Z),0 TO "8" 169 'CALL CHDIR ("..") 170 CALL MKDIR ("P"):CALL CHDIR ("P") 171 COPY(112,A)-(113,Z),0 TO "1" 172 COPY(114,A)-(115,Z),0 TO "2" 173 COPY(116,A)-(117,Z),0 TO "3" 174 COPY(118,A)-(119,Z),0 TO "4" 175 COPY(120,A)-(121,Z),0 TO "5" 176 COPY(122,A)-(123,Z),0 TO "6" 177 COPY(124,A)-(125,Z),0 TO "7" 178 COPY(126,A)-(127,Z),0 TO "8" 179 'CALL CHDIR ("..") 180 CALL MKDIR ("P"):CALL CHDIR ("P") 181 COPY(128,A)-(129,Z),0 TO "1" 182 COPY(130,A)-(131,Z),0 TO "2" 183 COPY(132,A)-(133,Z),0 TO "3" 184 COPY(134,A)-(135,Z),0 TO "4" 185 COPY(136,A)-(137,Z),0 TO "5" 186 COPY(138,A)-(139,Z),0 TO "6" 187 COPY(140,A)-(141,Z),0 TO "7" 188 COPY(142,A)-(143,Z),0 TO "8" 189 'CALL CHDIR ("..") 190 CALL MKDIR ("P"):CALL CHDIR ("P") 191 COPY(144,A)-(145,Z),0 TO "1" 192 COPY(146,A)-(147,Z),0 TO "2" 193 COPY(148,A)-(149,Z),0 TO "3" 194 COPY(150,A)-(151,Z),0 TO "4" 195 COPY(152,A)-(153,Z),0 TO "5" 196 COPY(154,A)-(155,Z),0 TO "6" 197 COPY(156,A)-(157,Z),0 TO "7" 198 COPY(158,A)-(159,Z),0 TO "8" 199 'CALL CHDIR ("..") 200 CALL MKDIR ("P"):CALL CHDIR ("P") 201 COPY(160,A)-(161,Z),0 TO "1" 202 COPY(162,A)-(163,Z),0 TO "2" 203 COPY(164,A)-(165,Z),0 TO "3" 204 COPY(166,A)-(167,Z),0 TO "4" 205 COPY(168,A)-(169,Z),0 TO "5" 206 COPY(170,A)-(171,Z),0 TO "6" 207 COPY(172,A)-(173,Z),0 TO "7" 208 COPY(174,A)-(175,Z),0 TO "8" 209 'CALL CHDIR ("..") 210 CALL MKDIR ("P"):CALL CHDIR ("P") 211 COPY(176,A)-(177,Z),0 TO "1" 212 COPY(178,A)-(179,Z),0 TO "2" 213 COPY(180,A)-(181,Z),0 TO "3" 214 COPY(182,A)-(183,Z),0 TO "4" 215 COPY(184,A)-(185,Z),0 TO "5" 216 COPY(186,A)-(187,Z),0 TO "6" 217 COPY(188,A)-(189,Z),0 TO "7" 218 COPY(190,A)-(191,Z),0 TO "8" 219 'CALL CHDIR ("..") 220 CALL MKDIR ("P"):CALL CHDIR ("P") 221 COPY(192,A)-(193,Z),0 TO "1" 222 COPY(194,A)-(195,Z),0 TO "2" 223 COPY(196,A)-(197,Z),0 TO "3" 224 COPY(198,A)-(199,Z),0 TO "4" 225 COPY(200,A)-(201,Z),0 TO "5" 226 COPY(202,A)-(203,Z),0 TO "6" 227 COPY(204,A)-(205,Z),0 TO "7" 228 COPY(206,A)-(207,Z),0 TO "8" 229 'CALL CHDIR ("..") 230 CALL MKDIR ("P"):CALL CHDIR ("P") 231 COPY(208,A)-(209,Z),0 TO "1" 232 COPY(210,A)-(211,Z),0 TO "2" 233 COPY(212,A)-(213,Z),0 TO "3" 234 COPY(214,A)-(215,Z),0 TO "4" 235 COPY(216,A)-(217,Z),0 TO "5" 236 COPY(218,A)-(219,Z),0 TO "6" 237 COPY(220,A)-(221,Z),0 TO "7" 238 COPY(222,A)-(223,Z),0 TO "8" 239 'CALL CHDIR ("..") 240 CALL MKDIR ("P"):CALL CHDIR ("P") 241 COPY(224,A)-(225,Z),0 TO "1" 242 COPY(226,A)-(227,Z),0 TO "2" 243 COPY(228,A)-(229,Z),0 TO "3" 244 COPY(230,A)-(231,Z),0 TO "4" 245 COPY(232,A)-(233,Z),0 TO "5" 246 COPY(234,A)-(235,Z),0 TO "6" 247 COPY(236,A)-(237,Z),0 TO "7" 248 COPY(238,A)-(239,Z),0 TO "8" 249 'CALL CHDIR ("..") 250 CALL MKDIR ("P"):CALL CHDIR ("P") 251 COPY(240,A)-(241,Z),0 TO "1" 252 COPY(242,A)-(243,Z),0 TO "2" 253 COPY(244,A)-(245,Z),0 TO "3" 254 COPY(246,A)-(247,Z),0 TO "4" 255 COPY(248,A)-(249,Z),0 TO "5" 256 COPY(250,A)-(251,Z),0 TO "6" 257 COPY(252,A)-(253,Z),0 TO "7" 258 COPY(254,A)-(255,Z),0 TO "8" 259 'CALL CHDIR ("..") 300 'CALL CHDIR (".."):CALL CHDIR ("..") 302 CALL CHDIR ("E:")
Si t'as d'autres idées
@Suivre....
Visiteurs
Vagabond
Message : 0
Merci Igal pour cette vidéo, je suis un peu déçu que cela ne soit pas une solution aussi miraculeuse pour le gain de rapidité, mais au moins cela permet d'explorer d'autres directions... pour la programmation et pour le scrolling
A mon avis pour gagner en rapidité et fluidité il faudrait une solution intermédiaire, c'est à dire lire un partie du décor en mémoire et supprimer/lire au fur et à mesure. Mais c'est plus technique, il existe la commande DSKI$(D,S) qui lit 512 octets d'un secteur S du disque D. Il faut pouvoir se positionner sur le secteur du disque où se trouve le fichier du décor. Au fait, combien d'octets prend chaque fichier de bribes dans ton cas ? (je pense que c'est 180 x 2 = 360 octets en SCREEN5)
Il reste que la lecture sur disque est performant si on lit les données de façon séquentielle, mais dans le cas où on doit sauter vers un autre emplacement mémoire, c'est mécanique, la tête de lecture doit se déplacer plus loin ou revenir et l'accès aux données en est donc ralenti.
Le problème avec le Basic c'est que le programme est lu de façon séquentielle, la plupart des jeux du marché se basent sur une boucle principale qui se débranche sur la partie de code qui traite le graphisme au rythme des interruptions du processeur vidéo. Cela permet de faire en quelque sorte du "multitâches".
Bon, j'espère qu'un jour tu m'inviteras à la maison pour voir ça!
Edité par Visiteurs Le 24/01/2018 à 10h34
A mon avis pour gagner en rapidité et fluidité il faudrait une solution intermédiaire, c'est à dire lire un partie du décor en mémoire et supprimer/lire au fur et à mesure. Mais c'est plus technique, il existe la commande DSKI$(D,S) qui lit 512 octets d'un secteur S du disque D. Il faut pouvoir se positionner sur le secteur du disque où se trouve le fichier du décor. Au fait, combien d'octets prend chaque fichier de bribes dans ton cas ? (je pense que c'est 180 x 2 = 360 octets en SCREEN5)
Il reste que la lecture sur disque est performant si on lit les données de façon séquentielle, mais dans le cas où on doit sauter vers un autre emplacement mémoire, c'est mécanique, la tête de lecture doit se déplacer plus loin ou revenir et l'accès aux données en est donc ralenti.
Le problème avec le Basic c'est que le programme est lu de façon séquentielle, la plupart des jeux du marché se basent sur une boucle principale qui se débranche sur la partie de code qui traite le graphisme au rythme des interruptions du processeur vidéo. Cela permet de faire en quelque sorte du "multitâches".
Bon, j'espère qu'un jour tu m'inviteras à la maison pour voir ça!
Edité par Visiteurs Le 24/01/2018 à 10h34
igal
Membre non connecté
Conseiller Municipal
Je suis en train de me rendre compte d'une chose.
Les résultats visible de la méthode à la façon "poupée Russe" est peut être un peu plus performante que ce que l'on peut voir à l'image sur la vidéo.
Je me bat depuis quelques jours avec un/des [svchost.exe] qui puisent font plafonner mon CPU et probablement l'émulation du MSX sur Bluemsx
Mon PC rame lamentablement depuis que j'ai essayé de récupérer un logiciel qui réoriente et modifie la qualité "MIDI" du PC.
J'ai eu beau faire des restaurations de system avec des dates antérieurs, rien à faire
Je m'applique donc à résoudre ce problème puis je ferai une nouvelle vidéo avec un code un peu plus optimisé
Thé ou café, ce sera avec plaisir
Les résultats visible de la méthode à la façon "poupée Russe" est peut être un peu plus performante que ce que l'on peut voir à l'image sur la vidéo.
Je me bat depuis quelques jours avec un/des [svchost.exe] qui puisent font plafonner mon CPU et probablement l'émulation du MSX sur Bluemsx
Mon PC rame lamentablement depuis que j'ai essayé de récupérer un logiciel qui réoriente et modifie la qualité "MIDI" du PC.
J'ai eu beau faire des restaurations de system avec des dates antérieurs, rien à faire
Je m'applique donc à résoudre ce problème puis je ferai une nouvelle vidéo avec un code un peu plus optimisé
Thé ou café, ce sera avec plaisir
igal
Membre non connecté
Conseiller Municipal
Voilà qui est mieux:
1) J'ai remodeler le moteur de sorte à supprimer deux boucles afin de comparer plus justement les deux approches à savoir:
A) Façon "Saut latérale" impliquant [une] entré et [une] sortie après lecture de chaque série de 8 bribes.
B) Façon "Poupée Russe" nécessitant qu'une seule entrée après lecture de chaque série de 8 birbes.
2) J'ai ouvert le gestionnaire de périphérique pour virer des .EXE qui puisent la quasi totalité des ressources de mon PC
Je n'ai pas chronométré, mais le résulta est tout à fait comparable voir même un peu plus rapide.
Cependant, la méthode "à la poupée Russe" semble présenter de petits à-coups probablement du fait des commandes [ _CHDIR E:\STAGE10] qui demande certainement plus de temps à s'accomplir qu'un simple [ _CHDIR/x ].
Pour le fun, vais essayer d'ajouter une bande son et je ferai une vidéo histoire de vous montrer ce que ça donne
En attendant, voici la vidéo de teste après correction de mon PC et amélioration du code Basic:
@Suivre... Edité par igal Le 26/01/2018 à 10h39
1) J'ai remodeler le moteur de sorte à supprimer deux boucles afin de comparer plus justement les deux approches à savoir:
A) Façon "Saut latérale" impliquant [une] entré et [une] sortie après lecture de chaque série de 8 bribes.
B) Façon "Poupée Russe" nécessitant qu'une seule entrée après lecture de chaque série de 8 birbes.
2) J'ai ouvert le gestionnaire de périphérique pour virer des .EXE qui puisent la quasi totalité des ressources de mon PC
Je n'ai pas chronométré, mais le résulta est tout à fait comparable voir même un peu plus rapide.
Cependant, la méthode "à la poupée Russe" semble présenter de petits à-coups probablement du fait des commandes [ _CHDIR E:\STAGE10] qui demande certainement plus de temps à s'accomplir qu'un simple [ _CHDIR/x ].
Pour le fun, vais essayer d'ajouter une bande son et je ferai une vidéo histoire de vous montrer ce que ça donne
En attendant, voici la vidéo de teste après correction de mon PC et amélioration du code Basic:
@Suivre... Edité par igal Le 26/01/2018 à 10h39
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie