MSX Village forum

La Place des Développeurs [EN COURS] un seul chargement et deux destinations. Comment charger une fois pour deux emplacements.

igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 26/03/2015 à 14h11
Salut à tous.

Afin d'utiliser la technique du double buffer avec mon chargeur de bribes, je voudrais simplifier la commande suivante.

10 bload"image1.sc5",s:bload"image1.sc5",s,0+32768!

Ce qui a pour effet de charger l'image image.sc5 sur la page zéro
Pour ensuite charger encore une fois l'image image.sc5 su la page 1.

Charger la même image deux fois prend des ressources.

Comment faire pour afficher à deux endroits un image chargée une seule fois?

Merci de votre aide :) Edité par igal Le 26/03/2015 à 14h49


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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 26/03/2015 à 14h39
Le top serait de modifier la routine BIOS pour charger aux deux endroits mais ...

Sinon pour gagner du temps :
Chargement en page 0 et copie en page 1.
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 26/03/2015 à 15h14
igal :
Charger la même image deux fois prend des ressources.

Comment faire pour afficher à deux endroits un image chargée une seule fois ?


La seule solution est de charger l'image en page 0 et de la copier ensuite en page 1.

Soit par COPY, soit en utilisant les macro-commandes du VDP. Edité par Metalion Le 26/03/2015 à 16h35


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)
   
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6285

Le 26/03/2015 à 17h09
Tu te complique Igal. Fait comme Fabf et Metalion t'ont dit plus haut ;)


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

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 987

Le 26/03/2015 à 17h48
Fabf :
Le top serait de modifier la routine BIOS pour charger aux deux endroits mais ...




Je serais curieux de voir par qu'elle magie tu arriverais à modifier le BIOS pour faire cela! :)



il n'y a que deux solutions:



1/ charger deux fois avec destinations différentes, en gros tu dupliques la ligne de BASIC du programme



2/ charger la page 0 puis faire un COPY de la page 0 vers la page 1.



@Metalion: COPY et macro commande du VDP c'est la même chose :) (mais je pense que tu le sais déjà)


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 26/03/2015 à 18h01
z80 :
Fabf :
Le top serait de modifier la routine BIOS pour charger aux deux endroits mais ...


Je serais curieux de voir par qu'elle magie tu arriverais à modifier le BIOS pour faire cela! :)



Je suis pas magicien (magie que l'on peut résumer par esbroufe) mais il me semble bien que l'on peut modifier des commandes du Basic.
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 987

Le 26/03/2015 à 18h15
Fabf :
z80 :
Fabf :
Le top serait de modifier la routine BIOS pour charger aux deux endroits mais ...


Je serais curieux de voir par qu'elle magie tu arriverais à modifier le BIOS pour faire cela! :)



Je suis pas magicien (magie que l'on peut résumer par esbroufe) mais il me semble bien que l'on peut modifier des commandes du Basic.




Ça ok. Mais infiné tu vas charger les données du disque dans la VRAM puis au choix faire un COPY de VRAM a VRAM. Ou faire le chargement en RAM puis deux COPY RAM vers VRAM


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 26/03/2015 à 18h30
Non on pourrait charger et distribuer sur 2 octets en VRAM.
Maintenant en effet je ne suis pas sur que cela soit plus rapide que de tout charger, puis de faire un transfert en rafale :hum Edité par Fabf Le 26/03/2015 à 18h31
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 26/03/2015 à 21h05
Merci pour vos réactions.

Effectivement, COPY fonctionne très bien et présente l'avantage d'être un peu plus rapide.

J'ai donc remplacé la séquence BLOAD => BLOAD
10 bload"Bribe01.sc5",s:bload"Bribe01.sc5",s,0+32768!
Cette séquence charge une première fois sur la Page affichée (ZERO) puis une seconde fois sur la Page Suivante (UN).

Par la séquence avec BLOAD => COPY.
10 bload"Bribe01.sc5",s:COPY(0,0)-(255,2),0TO(0,0),1
Cette séquence charge une seule fois sur la page affichée (ZERO) puis copie et colle expressément sur la page UN.

En fait, j'espérai une solution "autre" qui "serait" plus rapide peut être en utilisant une des solutions ci dessous :p

Il me semble avoir vu qu'il existe un registre du genre High Copy Memory machin chouette
http://rs.gr8bit.ru/Documentation/V9938-programmers-guide.pdf

J'ai pensé peut être à une de ces possibilités:
4.4.2. YMMM (High speed move VRAM to VRAM, y only) ............................69
4.4.3. HMMM (High speed move VRAM to VRAM).......................................71 Edité par igal Le 26/03/2015 à 21h06


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

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 987

Le 26/03/2015 à 21h52
Implique le recours à l'assembleur... Pour "maquette" reste en BASIC.


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 27/03/2015 à 11h51
igal :
En fait, j'espérai une solution "autre" qui "serait" plus rapide peut être en utilisant une des solutions ci dessous :p



Il me semble avoir vu qu'il existe un registre du genre High Copy Memory machin chouette

http://rs.gr8bit.ru/Documentation/V9938-programmers-guide.pdf



J'ai pensé peut être à une de ces possibilités:

4.4.2. YMMM (High speed move VRAM to VRAM, y only) ............................69

4.4.3. HMMM (High speed move VRAM to VRAM).......................................71


C'est ce que j’évoquais quand je parlais plus haut des macro-commandes du VDP. Je pense qu'il est possible de les appeler à partir du BASIC, en utilisant une succession de commandes VDP(), mais c'est à confirmer.



Cependant on touche là à de l'optimisation. Comme le dit très justement z80, pour l'instant, reste avec la commande COPY, c'est plus simple.


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)
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 27/03/2015 à 12h16
Metalion :
C'est ce que j’évoquais quand je parlais plus haut des macro-commandes du VDP. Je pense qu'il est possible de les appeler à partir du BASIC, en utilisant une succession de commandes VDP(), mais c'est à confirmer.


C''est confirmé.



http://www.msxvillage.fr/forum/topic.php?id=1956#m44958
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 987

Le 27/03/2015 à 15h37
GDX :
Metalion :
C'est ce que j’évoquais quand je parlais plus haut des macro-commandes du VDP. Je pense qu'il est possible de les appeler à partir du BASIC, en utilisant une succession de commandes VDP(), mais c'est à confirmer.


C''est confirmé.



http://www.msxvillage.fr/forum/topic.php?id=1956#m44958


Par contre c'est peut-être plus lent... :) le temps de balancer TOUS les VDP()...

Pour aller vite:

Attendre la VBL

puis couper les sprite et éteindre l'écran

faire les COPY

Allumer les sprites et l'écran



IL va de soit que tout ça c'est en assembleur :)

Couper l'écran et les sprites accélère les COPY et l'accès à la VRAM :)


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 28/03/2015 à 00h17
On peut accélérer, la méthode des VDP en testant le bit 0 du registre de statut 2 juste avant de changer la valeur du registre 46.



z80 :
Attendre la VBL


Attendre la VBL ne fait que ralentir.



z80 :
Couper l'écran et les sprites accélère les COPY et l'accès à la VRAM


Tu es sûr pour l'accès à la VRAM ?
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 987

Le 28/03/2015 à 20h00
GDX :
On peut accélérer, la méthode des VDP en testant le bit 0 du registre de statut 2 juste avant de changer la valeur du registre 46.



z80 :
Attendre la VBL


Attendre la VBL ne fait que ralentir.




Faux, généralement on attend la VBL et on fait tout ce que qu'on a a faire avec le VDP. En suite on fait de la musique, on gère le héros les ennemis etc...

Faut, juste pas attendre la VBL pour chacun de COPY... Tu attends la VBL puis tu balances tes COPY.



GDX :
z80 :
Couper l'écran et les sprites accélère les COPY et l'accès à la VRAM


Tu es sûr pour l'accès à la VRAM ?




Certain, expérimenté dans des démos principalement, mais aussi quand tu as besoin d'accès rapide à la VRAM ou que les commandes du VDP s'exécutent à la vitesse la plus rapide possible. Edité par z80 Le 28/03/2015 à 20h02


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie