MSX Village forum

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

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 21/09/2014 à 14h22

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' interprète peut sinterpreter sur 1 seul octet.
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


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 21/09/2014 à 15h05
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

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 21/09/2014 à 16h57
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


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 21/09/2014 à 17h37
pour en avoir le coeur net voici ce que tu dois faire :

10 time=0
20 bload "zzzzzzzz. scc", S
30 print time



banniere-ericb59e
Site web    
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 21/09/2014 à 19h29
Dites-moi si je dis des bêtises, mais ne serait-il pas plus efficace de lire des secteurs disque pour lire les bribes?
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 21/09/2014 à 19h53
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.


banniere-ericb59e
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 22/09/2014 à 00h26
ericb59 :
pour en avoir le coeur net voici ce que tu dois faire :



10 time=0

20 bload "zzzzzzzz. scc", S

30 print time


Le temps variera en fonction de l'état de la FAT.
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 22/09/2014 à 17h02
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 :p

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..... => :tchin :tchin :tchin :D Edité par igal Le 22/09/2014 à 17h03


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

Le 22/09/2014 à 19h08
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


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 22/09/2014 à 21h30
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


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 23/09/2014 à 17h33
igal :
Métalion..... => :tchin :tchin :tchin :D


:lol :lol :lol



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

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 23/09/2014 à 20h32
Metalion :
igal :
Métalion..... => :tchin :tchin :tchin :D


:lol :lol :lol



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


banniere-ericb59e
Site web    
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 23/09/2014 à 22h38
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 :)



Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 03/10/2014 à 12h50
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:
Code TEXT :
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

Edité par igal Le 04/10/2014 à 21h13


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6285

Le 04/10/2014 à 12h02
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 :top Edité par MSXlegend Le 04/10/2014 à 12h04


KCX Bluetooth emitter Mono/ Stéréo, Smart USB
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 04/10/2014 à 21h26
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 :top

Edité par igal Le 05/10/2014 à 17h13


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