La Place des Développeurs [EN COURS] un seul chargement et deux destinations. Comment charger une fois pour deux emplacements.
![Avatar](/images/avatars/avatar_09e47.png)
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
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
![:)](/images/smileys/sourire.gif)
![Avatar](/images/avatars/97700190071d_green_tall_tiki_mug.jpg)
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.
Sinon pour gagner du temps :
Chargement en page 0 et copie en page 1.
igal :
Charger la même image deux fois prend des ressources.
Comment faire pour afficher à deux endroits un image chargée une seule fois ?
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)
![Avatar](/upload/avatar_msxlegend3_120px.gif)
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!
![:)](/images/smileys/sourire.gif)
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
![:)](/images/smileys/sourire.gif)
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
![:top :top](/images/smileys/top.gif)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
![:\'( :\'(](/images/smileys/snif.gif)
![Avatar](/images/avatars/97700190071d_green_tall_tiki_mug.jpg)
z80 :
Je serais curieux de voir par qu'elle magie tu arriverais à modifier le BIOS pour faire cela!![:)](/images/smileys/sourire.gif)
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!
![:)](/images/smileys/sourire.gif)
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.
Fabf :
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 :
Je serais curieux de voir par qu'elle magie tu arriverais à modifier le BIOS pour faire cela!![:)](/images/smileys/sourire.gif)
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!
![:)](/images/smileys/sourire.gif)
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 :top](/images/smileys/top.gif)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
![:\'( :\'(](/images/smileys/snif.gif)
![Avatar](/images/avatars/97700190071d_green_tall_tiki_mug.jpg)
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
Edité par
Fabf
Le 26/03/2015 à 18h31
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](/images/smileys/doute.gif)
![Avatar](/images/avatars/avatar_09e47.png)
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
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
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](/images/smileys/tirelangue.gif)
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
igal :
En fait, j'espérai une solution "autre" qui "serait" plus rapide peut être en utilisant une des solutions ci dessous ![:p](/images/smileys/tirelangue.gif)
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
![:p](/images/smileys/tirelangue.gif)
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)
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
GDX :
C''est confirmé.
http://www.msxvillage.fr/forum/topic.php?id=1956#m44958
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...
![:)](/images/smileys/sourire.gif)
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
![:)](/images/smileys/sourire.gif)
Couper l'écran et les sprites accélère les COPY et l'accès à la VRAM
![:)](/images/smileys/sourire.gif)
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
![:top :top](/images/smileys/top.gif)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
![:\'( :\'(](/images/smileys/snif.gif)
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.
Attendre la VBL ne fait que ralentir.
Tu es sûr pour l'accès à la VRAM ?
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 ?
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.
Attendre la VBL ne fait que ralentir.
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 :
Tu es sûr pour l'accès à la VRAM ?
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 :top](/images/smileys/top.gif)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
![:\'( :\'(](/images/smileys/snif.gif)
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie