MSX Village forum

L'école [En Cours] Space Manbow Mappe complète. Mappe du Jeu Space Manbow.

igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 19/01/2018 à 11h21

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 pense :)

En 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 :oups
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 :top
Edité par igal Le 19/01/2018 à 11h28


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 19/01/2018 à 12h15
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("..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..")
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 19/01/2018 à 13h50
Bien joué!

Code CPP :
 
CALLCHDIR("E:\STAGE1") 

Tellement évident que j'y ai pas pensé :p

Je vais essayer de "construire le stage 1", modifier le programme, faire une vidéo et la poster d'ici ce soir :D

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


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 19/01/2018 à 15h07
@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 :gne


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

Le 19/01/2018 à 15h19
pour revenir a la racine principale sous MSX DOS c'est CD \ ou CD ¥ sur Turbo-R
donc essaye CALL CHDIR "\" sous basic


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 19/01/2018 à 16h03
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 :)


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 19/01/2018 à 16h24
Tu aurais pu nommer tous les répertoires avec le même nom par exemple 0 comme dans mon test.
Ainsi dans le programme tu n'as pas besoin de gérer une variable.
Au niveau de la lecture des répertoire c'est moins lisible, c'est sûr... Edité par Visiteur Le 19/01/2018 à 16h24
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 19/01/2018 à 19h10
Bah c'est ce que je viens de faire...Zé fini :p

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

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 :top
Par contre, je retrouve plus sur le symbole "anti slash" [ \ ] sur le MSX :sick

J'ai pas mal de truc à débugger mais le scroll démarre correctement :top
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 :oups

Putain ça fait une plombe que je suis sur l'ordi et ma femme a pipé un mot :gne :siffle :hum :noel :oups :heink


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

Le 19/01/2018 à 19h43
pour l'anti slash tu es sur un vrai MSX ou bien émulateur ?
en QWERTY c'est a coté de la touche BS sur un vrai


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 20/01/2018 à 13h56
Salut Jipe:

Je suis sur l'émulateur exclusivement, y a un moment déjà, fallait choisir entre le hardware et ma femme donc.... :lol :lol :lol
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 :oups

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 :sick
Me reste à adapter le reste du moteur pour que les graphismes et les scrolling multidirectionnelles se mettent en branle :top

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 ^^


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

Le 20/01/2018 à 22h24
pour gagner de la vitesse il a 2 solutions
passer en entier DEFINT A-Z au début du programme
programmer en x-basic


:noel
Site web    
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 21/01/2018 à 18h10
@Igal :
Tu n'as pas encore mis le nom du répertoire en fixe ?
Code CPP :
4710 _CHDIR("0")


@Jipe :
Ou tout refaire en assembleur :fou Edité par Visiteur Le 21/01/2018 à 18h11
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 23/01/2018 à 16h06
@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:
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 :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 :D
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....


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 24/01/2018 à 08h16
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 :lol

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 Visiteur Le 24/01/2018 à 10h34
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 24/01/2018 à 13h33
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é :top

Thé ou café, ce sera avec plaisir :)


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/01/2018 à 10h35
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 :devil

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


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