La Place des Développeurs [EN COURS] Double Buffer Scroll VDP(24) Créer un double buffer hors des zones d'affichage.
igal :
SET PAGE 0,0
COPY (0,0)-(255,43),0 TO (0,212),0
COPY (0,0)-(255,43),0 TO (0,212),0
Il manque une ligne pour faire tout l'écran. COPY (0,0)-(255,44)
igal :
N'hésitez pas à donner votre point de vu sur ces limitations 

Sans doute un bug parmi d'autres. Edité par GDX Le 01/04/2015 à 16h43

Je pense comme. Jipe que c'est plus une question d'architecture que d'un bug.
Par exemple ce qui m'a mis sur la piste c'est que pour utiliser le phénomène d'alternance des pages comme celui du dinosaure, l'utilisation ne peut se faire que en alternant les page 0 et 1 ou encore 2 et 3.
Je crois d'ailleurs que c'est toi qui nous l à fait remarqué.
Dans la soirée je posterai d'autres trouvailles amusantes toujours à ce sujet
Par exemple ce qui m'a mis sur la piste c'est que pour utiliser le phénomène d'alternance des pages comme celui du dinosaure, l'utilisation ne peut se faire que en alternant les page 0 et 1 ou encore 2 et 3.
Je crois d'ailleurs que c'est toi qui nous l à fait remarqué.
Dans la soirée je posterai d'autres trouvailles amusantes toujours à ce sujet

L'architecture n'empêche pas de faire des copies d'une page quelconque vers une autre.
Non, ça n'a rien à voir.
Pas à partir du SCREEN 7. Il faudrait essayer dans ces modes d'écran. Edité par GDX Le 01/04/2015 à 17h04
igal :
Par exemple ce qui m'a mis sur la piste c'est que pour utiliser le phénomène d'alternance des pages comme celui du dinosaure, l'utilisation ne peut se faire que en alternant les page 0 et 1 ou encore 2 et 3.
Non, ça n'a rien à voir.
Jipe :
ça parait logique car les pages 0 et 1 sont dans le même bloc de 64K , idem pour page 2 et 3
Pas à partir du SCREEN 7. Il faudrait essayer dans ces modes d'écran. Edité par GDX Le 01/04/2015 à 17h04
L'architecture du MSX n'impose pas ces limitations, c'est plutôt le BASIC. Il y a pas mal d'exemples de choses réalisables en assembleur, ou par simple manipulation des registres du VDP, mais qui sont impossibles en BASIC (sans que ce soit une question de rapidité).
J'avais souligné ce problème récemment avec le déplacement de la zone des sprites : très facile en théorie, par simple manipulation des registres. Mais en fait, c'est le BASIC qui limite ce que l'on peut faire.
Il n'est donc pas impossible que ce qui semble tout à fait naturel, en terme de déplacement et de copie de zones, soit en fait limité par les capacités du BASIC.
J'avais souligné ce problème récemment avec le déplacement de la zone des sprites : très facile en théorie, par simple manipulation des registres. Mais en fait, c'est le BASIC qui limite ce que l'on peut faire.
Il n'est donc pas impossible que ce qui semble tout à fait naturel, en terme de déplacement et de copie de zones, soit en fait limité par les capacités du BASIC.
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)
le MSX applique une fonction de clipping si on dessine une ligne (0,0)-(255,255) elle va s'arrêter en 211
le X-Basic permet de s'affranchir de ce clipping
extrait de la DOC péché chez MSXOsaure
# C- et #C+
Remplace CLIP. En modes d'écran 5 à 8 (excepté pour PAINT, et CIRCLE), Affichage ON ou OFF.
10 SCREEN 8
20 '#C-
30 LINE(0,0)-(255,255) 'Y CLIPPED
40 IF INKEY$="" THEN 40
50 '#C+
60 LINE(0,0)-(255,255) 'NOT CLIPPED
70 IF INKEY$="" THEN 70
la commande '#C- permet de travailler avec les pleines coordonées de la page 255 x 255
il faut précéder la commande de CALL TURBO ON et sortir par CALL TURBO OFF a la fin du traitement
CALL peut s'écrire _
pas encore fait l'essai avec les 4 pages
le X-Basic permet de s'affranchir de ce clipping
extrait de la DOC péché chez MSXOsaure
# C- et #C+
Remplace CLIP. En modes d'écran 5 à 8 (excepté pour PAINT, et CIRCLE), Affichage ON ou OFF.
10 SCREEN 8
20 '#C-
30 LINE(0,0)-(255,255) 'Y CLIPPED
40 IF INKEY$="" THEN 40
50 '#C+
60 LINE(0,0)-(255,255) 'NOT CLIPPED
70 IF INKEY$="" THEN 70
la commande '#C- permet de travailler avec les pleines coordonées de la page 255 x 255
il faut précéder la commande de CALL TURBO ON et sortir par CALL TURBO OFF a la fin du traitement
CALL peut s'écrire _
pas encore fait l'essai avec les 4 pages
j'ai testé le X-BASIC et la fonction '#C-
j'ai testé en screen 5 : on peut copier directement dans le bloc 212-255 , a partir et dans n'importe quelle page
plus besoin de se prendre la tête
ok c'est limité a 10k mais avec toutes les lignes que ça va économiser et la vitesse d'éxécution ça permet de belle chose
pour les bload il faut revenir au mode TURBO OFF
j'ai testé en screen 5 : on peut copier directement dans le bloc 212-255 , a partir et dans n'importe quelle page
plus besoin de se prendre la tête
ok c'est limité a 10k mais avec toutes les lignes que ça va économiser et la vitesse d'éxécution ça permet de belle chose
pour les bload il faut revenir au mode TURBO OFF
GDX :
Passer du mode turbo au mode normal, ça rajoute des lignes et ça ralentit l'exécution.
Jipe :
ok c'est limité a 10k mais avec toutes les lignes que ça va économiser et la vitesse d'éxécution ça permet de belle chose
pour les bload il faut revenir au mode TURBO OFF
pour les bload il faut revenir au mode TURBO OFF
Passer du mode turbo au mode normal, ça rajoute des lignes et ça ralentit l'exécution.
Certes, mais ça reste quand même plus rapide que 100% en mode normal.
Cela dit le mode normal en assembleur est et reste LE plus rapide!




ASM Power! Edité par z80 Le 03/04/2015 à 11h37
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)

Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...

z80 :
Certes, mais ça reste quand même plus rapide que 100% en mode normal.
Pas toujours!
http://www.msx.org/forum/msx-talk/development/question-about-10kb-limitation-turbo-basic

Désolé. Je sais pas comment je me suis débrouillé, mais je me suis certainement mélangé les Poireaux pinceaux
COPY (X,Y)
Permet de copier n'importe quelle [Zone (0 à 212)] vers [Hors Zone (213 à 256)] de la même page.
COPY "IMAGE.SCx"
Permet de copier dans n'importe quelle [Zone (0 à 212)] ou encore [Hors Zone (213 à 256)] dans n'importe quelle page.
Ceci ne fait pas avancer mon problème puisque COPY "Image.SCx" est un chargement tout comme l'est BLOAD"Image.SCx".
Il faut noter cependant que BLOAD"Image.SCx" à des prérequis dont COPY "image.SCx" n'en à pas besoin.
Voici les prérequis de BLOAD:
1) BLOAD une image en [Hors Zone (213 à 255)] de la même page!
SET PAGE 0,0 => Page Visible Zéro, Page de Travail Zéro.
VDP(24)=VDP(24)+44 => décaler la partie visible du VDP de 44 lignes.
BLOAD"00000001.SC5",S,0+27136 => Charger l'image en décalant de 27136 Bytes.
2) BSAVE l'image en [Hors Zone (213 à 255)] de la page suivante!
SET PAGE 1,0 => Page visible Un, page de Travail Zéro.
VDP(24)=vdp(24)+44 => décaler la partie visible du VDP de 44 lignes.
BSAVE"00000001.SC5",S,0+27136 => Sauver l'image décalée de 27136 Bytes.
3) Il en résulte une "IMAGE.SC5 dont l'entête contient une coordonnée décalée jusqu'à la ligne 212 de l'écran.
BLOAD"IMAGE.SC5",S => Cette simple commande suffit à afficher l'image contenant l'entête décalée en [Hors Zone (212 à 256)].
Voici les Prérequis pour COPY "IMAGE.SC5"
1) Charger une image
BLOAD"IMAGE.SC5",S
2) Sauver l'image avec la commande COPY et non BSAVE!
COPY (0,0)-(255,44) TO "IMAGE.SC5"
3) Charger l'image en précisant ou la positionner.
COPY "IMAGE.SC5" TO (X,Y),Z
X, Y et Z n'ont aucune restriction ni condition!
Exemple:
SET PAGE 0,0 => Page visible Zéro, Page de Travail Zéro
COPY "IMAGE.SC5" TO (213,255), 2 => Les Zones ou Hors Zone ainsi que toutes les pages sont possibles.
Au final:
COPY"IMAGE" à une grande souplesse mais nécessite de déterminer les coordonnées de chaque bribes d'image à afficher!
BLOAD"IMAGE" à de nombreuses contraintes, mais présente l'avantage de ne nécessiter aucune coordonnée d'affichage!
Conclusions: Je vais devoir garder 2 X BLOAD pour deux destinations différentes
PS: Au cours de mes testes, je me suis rendu compte que l'on pouvait contourner certaines limites sur l'adressage an combinant non seulement [Héxadécimale + Décimale], mais aussi [Héxadécimale + Décimale + Binaire].
Même si au niveau du SCREEN 5 cela ne m'a pas servi à grand chose, ca pourra peut être servir un jour

COPY (X,Y)
Permet de copier n'importe quelle [Zone (0 à 212)] vers [Hors Zone (213 à 256)] de la même page.
COPY "IMAGE.SCx"
Permet de copier dans n'importe quelle [Zone (0 à 212)] ou encore [Hors Zone (213 à 256)] dans n'importe quelle page.
Ceci ne fait pas avancer mon problème puisque COPY "Image.SCx" est un chargement tout comme l'est BLOAD"Image.SCx".
Il faut noter cependant que BLOAD"Image.SCx" à des prérequis dont COPY "image.SCx" n'en à pas besoin.
Voici les prérequis de BLOAD:
1) BLOAD une image en [Hors Zone (213 à 255)] de la même page!
SET PAGE 0,0 => Page Visible Zéro, Page de Travail Zéro.
VDP(24)=VDP(24)+44 => décaler la partie visible du VDP de 44 lignes.
BLOAD"00000001.SC5",S,0+27136 => Charger l'image en décalant de 27136 Bytes.
2) BSAVE l'image en [Hors Zone (213 à 255)] de la page suivante!
SET PAGE 1,0 => Page visible Un, page de Travail Zéro.
VDP(24)=vdp(24)+44 => décaler la partie visible du VDP de 44 lignes.
BSAVE"00000001.SC5",S,0+27136 => Sauver l'image décalée de 27136 Bytes.
3) Il en résulte une "IMAGE.SC5 dont l'entête contient une coordonnée décalée jusqu'à la ligne 212 de l'écran.
BLOAD"IMAGE.SC5",S => Cette simple commande suffit à afficher l'image contenant l'entête décalée en [Hors Zone (212 à 256)].
Voici les Prérequis pour COPY "IMAGE.SC5"
1) Charger une image
BLOAD"IMAGE.SC5",S
2) Sauver l'image avec la commande COPY et non BSAVE!
COPY (0,0)-(255,44) TO "IMAGE.SC5"
3) Charger l'image en précisant ou la positionner.
COPY "IMAGE.SC5" TO (X,Y),Z
X, Y et Z n'ont aucune restriction ni condition!
Exemple:
SET PAGE 0,0 => Page visible Zéro, Page de Travail Zéro
COPY "IMAGE.SC5" TO (213,255), 2 => Les Zones ou Hors Zone ainsi que toutes les pages sont possibles.
Au final:
COPY"IMAGE" à une grande souplesse mais nécessite de déterminer les coordonnées de chaque bribes d'image à afficher!
BLOAD"IMAGE" à de nombreuses contraintes, mais présente l'avantage de ne nécessiter aucune coordonnée d'affichage!
Conclusions: Je vais devoir garder 2 X BLOAD pour deux destinations différentes

PS: Au cours de mes testes, je me suis rendu compte que l'on pouvait contourner certaines limites sur l'adressage an combinant non seulement [Héxadécimale + Décimale], mais aussi [Héxadécimale + Décimale + Binaire].
Même si au niveau du SCREEN 5 cela ne m'a pas servi à grand chose, ca pourra peut être servir un jour


Metalion :
L'architecture du MSX n'impose pas ces limitations, c'est plutôt le BASIC. Il y a pas mal d'exemples de choses réalisables en assembleur, ou par simple manipulation des registres du VDP, mais qui sont impossibles en BASIC (sans que ce soit une question de rapidité).
J'avais souligné ce problème récemment avec le déplacement de la zone des sprites : très facile en théorie, par simple manipulation des registres. Mais en fait, c'est le BASIC qui limite ce que l'on peut faire.
Il n'est donc pas impossible que ce qui semble tout à fait naturel, en terme de déplacement et de copie de zones, soit en fait limité par les capacités du BASIC.
J'avais souligné ce problème récemment avec le déplacement de la zone des sprites : très facile en théorie, par simple manipulation des registres. Mais en fait, c'est le BASIC qui limite ce que l'on peut faire.
Il n'est donc pas impossible que ce qui semble tout à fait naturel, en terme de déplacement et de copie de zones, soit en fait limité par les capacités du BASIC.
Bon après les extraordinaires évolutions hardware que L'on trouve par-ci par-là dans le village




Je sais que cela est possible, car je l'ai déjà expérimenté dans mes mags avec des instructions supplémentaire contenues dans des fichiers musicaux récupérer sur des pinksox et autres mags Japonais

En gros créé une instruction sous Basic spécifique à la demande d'Igal. Un patch en somme

(je risque rien à lancer l'idée


MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)





Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie