La Place des Développeurs [RESOLU] VDP(27) le Scrolling hardware Horizontal Comment alimenter de nouveaux décors VDP (27)?
igal
Membre non connecté
Conseiller Municipal
Reprise du message précédent
Si tu regardes attentivement les enregistrements que jais fais, tu verras qu'il y a des ralentissement de façon "cyclique". Je pense que la majeur partie de la lenteur à "retrouver" le fichier à charger est en réalité causée par "translation" en binaire du nom de fichier.1 fichier d'un caractère dont le nom est est contenu entre Zéro et F s'
Tels que:
00000000 pour le fichier 0.SCC
ou encore:
00001111 pour le fichier F.SCC
si l'on procédé avec des fichiers nommés avec plus d'un caractères ou encore un seul caractère supérieur à F on augmenterait automatiquement le nombre d'octets nécessaires à la machine pour le localiser.
Ça reste des suppositions, mais ça tient la route je pense. Edité par igal Le 21/09/2014 à 14h26
igal :
L'idée étant de ne plus être ralenti par le temps de recherche des fichiers.
Ca ne changera strictement rien.
Tu refuses l'évidence depuis le début.
Le MSX a besoin d'un temps de recherche et de chargement du fichier, que tu ne pourras pas diminuer ou exploiter.
Et il n'a RIEN à voir avec l'emplacement, le répertoire ou le nom.
Je te l'ai expliqué mais tu ne veux pas l'entendre.
GDX te le dit, mais tu ne veux pas l'entendre.
Va te renseigner sur le fonctionnement de la FAT12 et tu comprendras ce qu'on veux te dire.
igal :
(Peut être qu'en déplaçant la zone des Sprite sur une autre page ces derniers ne subirait plus ces accoups
Rien à voir.
Dans tous les cas, tu devras compenser le déplacement des sprites.
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
igal
Membre non connecté
Conseiller Municipal
Pour en avoir le coeur net, il suffit de lancer un "timer" juste avant de charger le seul et unique fichier suivant.
10 timer on
20 bload "zzzzzzzz. scc", S
30 timer off
40 ? Timer
Puis de renommer "zzzzzzzz.scc", S en "0.scc"
Il suffit ensuite de lancer:
10 timer on
20 bload "0.scc", S
30 timer off
40 ? Timer
Jipe avait donné une solution simple pour créer un timer mais je sais plus trop ou!
Nous somme d'accord que "zzzzzzzz.scc" et "0.scc" sont un seul et unique fichier. Seul son nom à changé.
pour aller plus loin on peut même faire le même test avec la condition que ce fichier soit noyé au milieu de centaines d'autres fichiers et enfin un dernier test avec "0.scc" au milieu de 15 autres fichiers nommés de 1 à F.
non?! Edité par igal Le 21/09/2014 à 16h59
10 timer on
20 bload "zzzzzzzz. scc", S
30 timer off
40 ? Timer
Puis de renommer "zzzzzzzz.scc", S en "0.scc"
Il suffit ensuite de lancer:
10 timer on
20 bload "0.scc", S
30 timer off
40 ? Timer
Jipe avait donné une solution simple pour créer un timer mais je sais plus trop ou!
Nous somme d'accord que "zzzzzzzz.scc" et "0.scc" sont un seul et unique fichier. Seul son nom à changé.
pour aller plus loin on peut même faire le même test avec la condition que ce fichier soit noyé au milieu de centaines d'autres fichiers et enfin un dernier test avec "0.scc" au milieu de 15 autres fichiers nommés de 1 à F.
non?! Edité par igal Le 21/09/2014 à 16h59
ericb59
Membre non connecté
Conseiller Municipal
sylvain :
Dites-moi si je dis des bêtises, mais ne serait-il pas plus efficace de lire des secteurs disque pour lire les bribes?
je l'ai déjà proposé. Cela dit, je ne suis pas certain que ça doit plus rapide dans le cas d'un MSX.
igal
Membre non connecté
Conseiller Municipal
J'ai lancé le teste suivant:
A l’intérieur d'un répertoire contenant 64 fichiers j'ai nommé l'un d'eux en
O.SCC
0 SCREEN 12,1
1 TME = 0
2 BLOAD"0.SCC"
3 X=X+1:IF X =100 THEN 4 ELSE 2
4 SCREEN 0 : PRINT TIME
5 GOTO 5
=> TIME = 681
Ensuite, j'ai fais:
NAME "0.SCC" AS "ZZZZZZZZ.SCC"
Puis j'ai relancé le programme:
0 SCREEN 12,1
1 TME = 0
2 BLOAD"ZZZZZZZZ.SCC"
3 X=X+1:IF X =100 THEN 4 ELSE 2
4 SCREEN 0 : PRINT TIME
5 GOTO 5
=> TIME = 758
Pour savoir si le nombre de fichiers étaient en corrélation avec la différence dans les temps d'accès, j'ai créé...
REPERTOIRE ZERO / 0.SCC
TIME => 662
Puis le même teste avec
REPERTOIRE ZERO / ZZZZZZZZ.SCC
TIMER => 738
Notez qu'il est plus rapide de charger un FICHIER 0.SCC au milieu de 63 autres fichiers contenus dans un répertoire que de charger un ZZZZZZZZ.SCC placé tout seul dans un répertoire
On peut donc raisonnablement penser que OUI, le nom du fichier influe sur le temps d'accès
Je ne sais pas faire le ratio et donc affirmer avec justesse le Pourcentage gagné, mais il est flagrant à l'écran....
Métalion..... => Edité par igal Le 22/09/2014 à 17h03
A l’intérieur d'un répertoire contenant 64 fichiers j'ai nommé l'un d'eux en
O.SCC
0 SCREEN 12,1
1 TME = 0
2 BLOAD"0.SCC"
3 X=X+1:IF X =100 THEN 4 ELSE 2
4 SCREEN 0 : PRINT TIME
5 GOTO 5
=> TIME = 681
Ensuite, j'ai fais:
NAME "0.SCC" AS "ZZZZZZZZ.SCC"
Puis j'ai relancé le programme:
0 SCREEN 12,1
1 TME = 0
2 BLOAD"ZZZZZZZZ.SCC"
3 X=X+1:IF X =100 THEN 4 ELSE 2
4 SCREEN 0 : PRINT TIME
5 GOTO 5
=> TIME = 758
Pour savoir si le nombre de fichiers étaient en corrélation avec la différence dans les temps d'accès, j'ai créé...
REPERTOIRE ZERO / 0.SCC
TIME => 662
Puis le même teste avec
REPERTOIRE ZERO / ZZZZZZZZ.SCC
TIMER => 738
Notez qu'il est plus rapide de charger un FICHIER 0.SCC au milieu de 63 autres fichiers contenus dans un répertoire que de charger un ZZZZZZZZ.SCC placé tout seul dans un répertoire
On peut donc raisonnablement penser que OUI, le nom du fichier influe sur le temps d'accès
Je ne sais pas faire le ratio et donc affirmer avec justesse le Pourcentage gagné, mais il est flagrant à l'écran....
Métalion..... => Edité par igal Le 22/09/2014 à 17h03
je vais dire une connerie : et si ta bribe ne faisait qu'une ligne
le bload étant plus court ça permettra de faire autre chose entre deux
en suite si tu n'utilise pas tout l'écran mais que tu laisse une bande noire de chaque coté ça va encore accélerer car le bload sera encore plus petit
le bload étant plus court ça permettra de faire autre chose entre deux
en suite si tu n'utilise pas tout l'écran mais que tu laisse une bande noire de chaque coté ça va encore accélerer car le bload sera encore plus petit
igal
Membre non connecté
Conseiller Municipal
Possible que je réduise encore le nombre de lignes composants la bribe à deux lignes.
En ne faisant sue deux lignes au lieu de quatre on obtiendrait ceci:
Avantages.
Une seule commande vdp (24) = vdp (24) + 2 and 255 (au lieu de deux fous cette commande).
La bribe devrait peser 515 octets et donc tenir dans un seul cluster ( au lieu de 1031 octets sur deux clusters)
Les msx rend la main deux fois plus souvent et deux fois plus vite qu auparavant.
Le mouvement des spirites peut être deux fois plus fluide sans perte de vitesse.
Concernant la longueur des décors à charger pour un gain de vitesse:
Je souhaite trouver une solution "additionnelle" au procédé actuel.
Je mexplique:
Le msx est capable de créer des blocs graphiques affichables comme si elle étaient tressées dans un Canevas de la taille de l'écran.
Le contrainte de cette méthode est qu'il est possible de créer ces blocs n'importe où sur le canevas mais en déterminant les "longitudes" de début et de fin du tressage, mais pas la latitude!
Ou est le problème me direz vous?
Cette technique permet donc de créer des "bribes" horizontales mais pas de bribes verticales
Dans l'absolu, il faudrait ouvrir une bribe et voir quel est la technique utilisée pour ces bribes horizontales et voir si il est possible de les manipuler "genetiquement" pour créer artificiellement des Bribes verticales.
Voici un tout premier jet...
il sagit de Metal Slug 2 Stage 1.
comme vous pouvez le voir, il manque 1/2 page de transiion entre chaque page. Il s'agit donc de la prochaine étape.
http://youtu.be/eXV-C-FBiSA Edité par igal Le 05/10/2014 à 12h43
En ne faisant sue deux lignes au lieu de quatre on obtiendrait ceci:
Avantages.
Une seule commande vdp (24) = vdp (24) + 2 and 255 (au lieu de deux fous cette commande).
La bribe devrait peser 515 octets et donc tenir dans un seul cluster ( au lieu de 1031 octets sur deux clusters)
Les msx rend la main deux fois plus souvent et deux fois plus vite qu auparavant.
Le mouvement des spirites peut être deux fois plus fluide sans perte de vitesse.
Concernant la longueur des décors à charger pour un gain de vitesse:
Je souhaite trouver une solution "additionnelle" au procédé actuel.
Je mexplique:
Le msx est capable de créer des blocs graphiques affichables comme si elle étaient tressées dans un Canevas de la taille de l'écran.
Le contrainte de cette méthode est qu'il est possible de créer ces blocs n'importe où sur le canevas mais en déterminant les "longitudes" de début et de fin du tressage, mais pas la latitude!
Ou est le problème me direz vous?
Cette technique permet donc de créer des "bribes" horizontales mais pas de bribes verticales
Dans l'absolu, il faudrait ouvrir une bribe et voir quel est la technique utilisée pour ces bribes horizontales et voir si il est possible de les manipuler "genetiquement" pour créer artificiellement des Bribes verticales.
Voici un tout premier jet...
il sagit de Metal Slug 2 Stage 1.
comme vous pouvez le voir, il manque 1/2 page de transiion entre chaque page. Il s'agit donc de la prochaine étape.
http://youtu.be/eXV-C-FBiSA Edité par igal Le 05/10/2014 à 12h43
igal :
Métalion..... =>
Il faut savoir reconnaître ses erreurs.
A la lumière de ces tests, je dois bien te concéder que le nom du fichier semble avoir une influence sur le temps d'accès.
Autant pour moi.
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
ericb59
Membre non connecté
Conseiller Municipal
Metalion :
Il faut savoir reconnaître ses erreurs.
A la lumière de ces tests, je dois bien te concéder que le nom du fichier semble avoir une influence sur le temps d'accès.
Autant pour moi.
igal :
Métalion..... =>
Il faut savoir reconnaître ses erreurs.
A la lumière de ces tests, je dois bien te concéder que le nom du fichier semble avoir une influence sur le temps d'accès.
Autant pour moi.
en fait ça dépend aussi des circonstances des tests.
Il me semble aussi que les fichiers qui sont créés/copiés en premier sur un floppy sont accessibles plus rapidement que ceux qui sont copiés/créés en dernier. Edité par ericb59 Le 23/09/2014 à 20h33
Oui tout à fait Eric, sur les floppy les données sont organisés par pistes et secteur concentrique
Sans rentrer dans les détails technique : la piste au centre est la piste ayant le plus grands numéro la piste au bord extérieur du floppy est la numéro 0 .
Le catalogue ce situe vers le secteur 8 ( à vérifier pour le MSX-DOS) et donc si ton fichier est crée en premier il sera proche de ce secteur si ton fichier est crée après 50 autres il seras très loin, donc la tête du floppy mettra plus de temps pour aller chercher les données de ce fichier que celui qui est crée près du directory
Après il faut étudier le fonctionnement des floppy MSX mais ca doit être ca
Sans rentrer dans les détails technique : la piste au centre est la piste ayant le plus grands numéro la piste au bord extérieur du floppy est la numéro 0 .
Le catalogue ce situe vers le secteur 8 ( à vérifier pour le MSX-DOS) et donc si ton fichier est crée en premier il sera proche de ce secteur si ton fichier est crée après 50 autres il seras très loin, donc la tête du floppy mettra plus de temps pour aller chercher les données de ce fichier que celui qui est crée près du directory
Après il faut étudier le fonctionnement des floppy MSX mais ca doit être ca
igal
Membre non connecté
Conseiller Municipal
Edit: Pour une meilleur lisibilité, j'ai replacé les vidéos précédentes dans le sujet à propos du Scroll Vertical VDP(24).
Pour ce qui est du déplacement horizontal, c'est assez compliqué mais j'y travaille...
http://youtu.be/-JowqPcEy_s
Petit correctif sur le scroll horizontal:
http://youtu.be/zldqVwkyu1k
Voici le listing:
Pour ce qui est du déplacement horizontal, c'est assez compliqué mais j'y travaille...
http://youtu.be/-JowqPcEy_s
Petit correctif sur le scroll horizontal:
http://youtu.be/zldqVwkyu1k
Voici le listing:
Code TEXT :
Edité par
igal
Le 04/10/2014 à 21h13
10 'SAVE"HPLAY13.asc",A 20 'PLAYER DE BRIBES HORIZONTAL [11X(4X256)]+[(53X(4X256)] 30 VDP(10)=0:SCREEN 12,,,,,1:X=100:Y=100 40 IF P=0 THEN CALL CHDIR ("H-04-05"):SET PAGE 0,1:'BLOAD"00000005.SCC",S:CALL CHDIR (".."):CALL CHDIR ("H-00-01") 41 IF P=1 THEN CALL CHDIR ("H-00-01"):GOTO49 42 IF P=2 THEN CALL CHDIR ("H-02-03"):GOTO49 43 IF P=3 THEN CALL CHDIR ("H-04-05"):GOTO49 44 IF P=4 THEN CALL CHDIR ("H-06-07"):GOTO49 45 IF P=5 THEN CALL CHDIR ("H-08-09"):GOTO49 46 IF P=6 THEN CALL CHDIR ("H-10-11"):GOTO49 47 IF P=7 THEN CALL CHDIR ("H-12-13"):GOTO49 48 IF P=8 THEN CALL CHDIR ("H-14-15"):P=0:GOTO49 49 SET PAGE 0,1 50 BLOAD"00.scc",S,0-11264:GOSUB 10000 60 BLOAD"01.scc",S,0-11264:GOSUB 10000 70 BLOAD"02.scc",S,0-11264:GOSUB 10000 80 BLOAD"03.scc",S,0-11264:GOSUB 10000 90 BLOAD"04.scc",S,0-11264:GOSUB 10000 100 BLOAD"05.scc",S,0-11264:GOSUB 10000 110 BLOAD"06.scc",S,0-11264:GOSUB 10000 120 BLOAD"07.scc",S,0-11264:GOSUB 10000 130 BLOAD"08.scc",S,0-11264:GOSUB 10000 140 BLOAD"09.scc",S,0-11264:GOSUB 10000 150 BLOAD"10.scc",S,0-11264:GOSUB 10000 160 BLOAD"11.scc",S:GOSUB 10000 170 BLOAD"12.scc",S:GOSUB 10000 180 BLOAD"13.scc",S:GOSUB 10000 190 BLOAD"14.scc",S:GOSUB 10000 200 BLOAD"15.scc",S:GOSUB 10000 210 BLOAD"16.scc",S:GOSUB 10000 220 BLOAD"17.scc",S:GOSUB 10000 230 BLOAD"18.scc",S:GOSUB 10000 240 BLOAD"19.scc",S:GOSUB 10000 250 BLOAD"20.scc",S:GOSUB 10000 260 BLOAD"21.scc",S:GOSUB 10000 270 BLOAD"22.scc",S:GOSUB 10000 280 BLOAD"23.scc",S:GOSUB 10000 290 BLOAD"24.scc",S:GOSUB 10000 300 BLOAD"25.scc",S:GOSUB 10000 310 BLOAD"26.scc",S:GOSUB 10000 320 BLOAD"27.scc",S:GOSUB 10000 330 BLOAD"28.scc",S:GOSUB 10000 340 BLOAD"29.scc",S:GOSUB 10000 350 BLOAD"30.scc",S:GOSUB 10000 360 BLOAD"31.scc",S:GOSUB 10000 370 BLOAD"32.scc",S:GOSUB 10000 380 BLOAD"33.scc",S:GOSUB 10000 390 BLOAD"34.scc",S:GOSUB 10000 400 BLOAD"35.scc",S:GOSUB 10000 410 BLOAD"36.scc",S:GOSUB 10000 420 BLOAD"37.scc",S:GOSUB 10000 430 BLOAD"38.scc",S:GOSUB 10000 440 BLOAD"39.scc",S:GOSUB 10000 450 BLOAD"40.scc",S:GOSUB 10000 460 BLOAD"41.scc",S:GOSUB 10000 470 BLOAD"42.scc",S:GOSUB 10000 480 BLOAD"43.scc",S:GOSUB 10000 490 BLOAD"44.scc",S:GOSUB 10000 500 BLOAD"45.scc",S:GOSUB 10000 510 BLOAD"46.scc",S:GOSUB 10000 520 BLOAD"47.scc",S:GOSUB 10000 530 BLOAD"48.scc",S:GOSUB 10000 540 BLOAD"49.scc",S:GOSUB 10000 550 BLOAD"50.scc",S:GOSUB 10000 560 BLOAD"51.scc",S:GOSUB 10000 570 BLOAD"52.scc",S:GOSUB 10000 580 BLOAD"53.scc",S:GOSUB 10000 590 BLOAD"54.scc",S:GOSUB 10000 600 BLOAD"55.scc",S:GOSUB 10000 610 BLOAD"56.scc",S:GOSUB 10000 620 BLOAD"57.scc",S:GOSUB 10000 630 BLOAD"58.scc",S:GOSUB 10000 640 BLOAD"59.scc",S:GOSUB 10000 650 BLOAD"60.scc",S:GOSUB 10000 660 BLOAD"61.scc",S:GOSUB 10000 670 BLOAD"62.scc",S:GOSUB 10000 680 BLOAD"63.scc",S:GOSUB 10000 1340 CALL CHDIR(".."):P=P+1:GOTO40 10000 VDP(27)=(N+7)/8:VDP(28)=-NAND7:S=STICK(0):ONS+1 GOSUB 11000,12000,13000,14000,15000,16000,17000,18000,19000:RETURN 10010 ' 11000 COPY(H,0)-(H+3,212),1TO(H,0),0:H=H+4AND255:N=N+4AND255:'STATIQUE 11010 RETURN 11020 ' 12000 'HAUT 12010 Y=Y-8:RETURN 12020 ' 13000 'DIAGO HAUT DROITE 13010 Y=Y-16:VDP(27)=VDP(27)+1AND255:RETURN 13020 ' 14000 'DROITE 14010 VDP(27)=VDP(27)+1AND255:RETURN 14020 ' 15000 'DIAGO DROITE BAS 15010 Y=Y+16:VDP(27)=VDP(27)+1AND255::RETURN 15020 ' 15030 ' 16000 'BAS 16010 Y=Y+8:RETURN 16020 ' 17000 'DIAGO BAS GAUCHE 17010 Y=Y+16:VDP(27)=VDP(27)+255AND255:RETURN 17020 ' 18000 'GAUCHE 18010 VDP(27)=VDP(27)+255AND255:RETURN 18020 ' 19000 'DIAGO HAUT GAUCHE 19010 VDP(27)=VDP(27)+255AND255:Y=Y-16:RETURN
MSXlegend
Membre non connecté
Conseiller Municipal
c'est pas mal. Les petit beug d'affichage que tu as , c'est du a la zone de sprite qu'il faut effacer avant de lancer ton defilement. Pour ma demo de terminator, j'ai eu le meme probleme en screen 5
regarde au debut dans la demo terminator 2 que j'ai fait debut 2013
https://www.youtube.com/watch?v=958LcBofDQU&list=UU2EsXnk_Wq-Kydny2_zpw1A
je fait defiler le t800 sur la hauteur de 3 ecrans a la vertical
En tour cas je sais le boulot que ça represente de rassembler les tiles, chapeau !! et tu me feras des cours pour le screen 12 Edité par MSXlegend Le 04/10/2014 à 12h04
regarde au debut dans la demo terminator 2 que j'ai fait debut 2013
https://www.youtube.com/watch?v=958LcBofDQU&list=UU2EsXnk_Wq-Kydny2_zpw1A
je fait defiler le t800 sur la hauteur de 3 ecrans a la vertical
En tour cas je sais le boulot que ça represente de rassembler les tiles, chapeau !! et tu me feras des cours pour le screen 12 Edité par MSXlegend Le 04/10/2014 à 12h04
igal
Membre non connecté
Conseiller Municipal
Lut Légend.
En fait les soucis posés par la zone de sprites ne concerne que le SCROLL vertical VDP(24) => http://www.msxvillage.fr/forum/topic.php?id=2491#m58825
En fait il suffirait (au conditionnel) de déplacer la Zone des Sprites pour éluder ce problème. Ceci viendra plus tard lorsque j'aborderai le sujet des psirtes
Pour ce qui est du SCROLL horizontal, aussi incroyable que cela puisse paraître, j'ai quasiment résolu le sujet puisque je pense avoir trouvé la solution.
En effet, les bribes sont de bandes Horizontales chargées par BLOAD sur la Page 1 et sont ensuite copiées depuis la page 1 vers la page 0 verticalement.
Il reste deux petits détails à creuser puis je posterai une explication en image sous forme de schéma.
Cette technique ouvre grand la porte à une variété illimité de graphismes en scrolling horizontal
Edité par igal Le 05/10/2014 à 17h13
En fait les soucis posés par la zone de sprites ne concerne que le SCROLL vertical VDP(24) => http://www.msxvillage.fr/forum/topic.php?id=2491#m58825
En fait il suffirait (au conditionnel) de déplacer la Zone des Sprites pour éluder ce problème. Ceci viendra plus tard lorsque j'aborderai le sujet des psirtes
Pour ce qui est du SCROLL horizontal, aussi incroyable que cela puisse paraître, j'ai quasiment résolu le sujet puisque je pense avoir trouvé la solution.
En effet, les bribes sont de bandes Horizontales chargées par BLOAD sur la Page 1 et sont ensuite copiées depuis la page 1 vers la page 0 verticalement.
Il reste deux petits détails à creuser puis je posterai une explication en image sous forme de schéma.
Cette technique ouvre grand la porte à une variété illimité de graphismes en scrolling horizontal
Edité par igal Le 05/10/2014 à 17h13
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie