MSX Village forum

La Place des Développeurs [EN COURS] Double Buffer Scroll VDP(24) Créer un double buffer hors des zones d'affichage.

Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10339

Le 01/04/2015 à 14h42

Reprise du message précédent

ça parait logique car les pages 0 et 1 sont dans le même bloc de 64K , idem pour page 2 et 3


:noel
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 01/04/2015 à 14h42
igal :
SET PAGE 0,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 :D


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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 01/04/2015 à 15h21
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 :)


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

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 01/04/2015 à 16h42
L'architecture n'empêche pas de faire des copies d'une page quelconque vers une autre.



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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 01/04/2015 à 17h21
je confirme qu'en sceen8, dans lequel je travaille, on ne peut pas copier en dessous de 212 avec copy


banniere-ericb59e
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1487

Le 01/04/2015 à 20h38
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.


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 02/04/2015 à 10h54
Ça sens fortement le bug.
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10339

Le 02/04/2015 à 15h09
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


:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10339

Le 02/04/2015 à 16h15
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


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 03/04/2015 à 07h01
en fait j'avais jamais compris à quoi servait la directive #C ! :siffle

Merci Jipe :)


banniere-ericb59e
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 03/04/2015 à 10h00
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


Passer du mode turbo au mode normal, ça rajoute des lignes et ça ralentit l'exécution.
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 03/04/2015 à 11h36
GDX :
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


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! :lol :lol :lol :lol

ASM Power! Edité par z80 Le 03/04/2015 à 11h37


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 03/04/2015 à 12h39
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
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 03/04/2015 à 18h23
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 :oups

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


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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5794

Le 03/04/2015 à 20h01
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.




Bon après les extraordinaires évolutions hardware que L'on trouve par-ci par-là dans le village ;), qui serait capable de s'attaquer à une évolution du Basic, soit sous forme de patch additionnel, ou carrément une ROM made in Msxvillage :siffle:oups:p

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:D) Edité par TurboSEB Le 03/04/2015 à 20h08



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie