comment lit on dans l'EF9345 ?

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Carl, Papy.G, fneck

Avatar du membre
rendomizer
Messages : 159
Enregistré le : 17 juin 2016 21:00
Contact :

comment lit on dans l'EF9345 ?

Message par rendomizer » 15 juil. 2017 08:38

J'aimerai savoir si quelqu'un sait comment on lit dans l'EF9345. J'ai besoin de lire dans la mémoire video pour faire un générateur de sprites qui restituer l’arrière plan quand le sprite passe sur un décor.
le mot de passe c'est quoi ? quoi !

Daniel
Messages : 9533
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment lit on dans l'EF9345 ?

Message par Daniel » 15 juil. 2017 09:13

La commande OCT permet de transférer un octet de mémoire vidéo dans un registre, que l'on peut lire ensuite.

Mais ce n'est pas la bonne méthode, car beaucoup trop long. En général on gère une image de l'écran dans la RAM accessible directement par le microprocesseur, et on transmet uniquement ce qui change au processeur graphique.
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
rendomizer
Messages : 159
Enregistré le : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 15 juil. 2017 10:59

Peux tu me donner un petit exemple Daniel ? Comme lire le code caractère a une position x y... :D
le mot de passe c'est quoi ? quoi !

Daniel
Messages : 9533
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment lit on dans l'EF9345 ?

Message par Daniel » 15 juil. 2017 11:06

Je ne pratique plus l'EF9345 depuis de nombreuses années et j'ai tout oublié. Je laisse les spécialistes répondre.
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
Papy.G
Modérateur
Messages : 1617
Enregistré le : 10 juin 2014 13:40
Localisation : Nantes/La Roche sur Yon

Re: comment lit on dans l'EF9345 ?

Message par Papy.G » 17 juil. 2017 12:00

Le goulot d'étranglement causé par l'utilisation de VRam propre au VDP, et le transfert de données par boîtes aux lettres et envoi de commande fait que la lecture dans la VRam ralentira considérablement un jeu utilisant des sprites avec survol de décor. :cry:
Il faut calculer les caractères à redéfinir pendant le balayage en mémoire processeur, et y gérer les sprites, masques et mozaïques d'arrière-plan pour n'avoir qu'à envoyer les données nécessaires pendant le blanking, période où l'exécution des instructions envoyées au VDP ne subiront pas de délai. :o

Pour lire un caractère à la position X, Y, il faut déjà savoir la position de la page-écran dans la zone d'affichage, si tu utilises le mode "rouleau" pour faire un scrolling ligne par ligne. Cette position te permet de calculer le Y relatif de la lignes que tu vises.
Tu charges en R6 et R7 le pointeur principal,
Tu envoies la commande KRF, KRG, KRC, KRL, ou encore OCT, selon le mode d'affichage utilisé, avec la variante lecture (bit 3 en R0 à 0), tu attends l'exécution de la commande, via le Bit "Busy" en R0, ensuite, tu peux lire les registres 1 à 3, selon le mode d'affichage, toujours.
Si c'est pour du bitmap, il va te falloir ensuite recalculer où se trouve le sprite que tu veux lire, pour ensuite aller le lire ligne par ligne dans le bloc mémoire où tu auras mis tes sprites. :mrgreen:

C'est à la louche, j'ai peu de temps, là, les pages 33 à 36 de la doc du EF9345 t'en apprendront plus, voir aussi la structure de positionnement X-Y des caractères, il y a un sujet de Phil pour l'écriture d'un caractère à une position donnée, son mémo, ainsi que les notes de Carl, sont de précieuses aides. :wink:

Dans un système sans Ram à double ports, l'utilisation de VDP à mémoire privée pour certains jeux est un vrai défi. :?
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.

Avatar du membre
rendomizer
Messages : 159
Enregistré le : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 17 juil. 2017 15:13

ça vaut le coup d'essayer Papy G ! :lol: car j'ai finalisé un générateur de sprites pour le basic mais il efface seulement les caractères derrière eux pour l'instant. J'ai bon espoir avec ton aide merci !
Je posterai le programme ce soir.
le mot de passe c'est quoi ? quoi !

Avatar du membre
rendomizer
Messages : 159
Enregistré le : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 20 juil. 2017 11:53

J'aimerais avoir un petit exemple de lecture d'un caractère dans une position x et y car là c'est un peu compliqué :mrgreen:
le mot de passe c'est quoi ? quoi !

Avatar du membre
Papy.G
Modérateur
Messages : 1617
Enregistré le : 10 juin 2014 13:40
Localisation : Nantes/La Roche sur Yon

Re: comment lit on dans l'EF9345 ?

Message par Papy.G » 21 juil. 2017 01:33

Figures 9, 23, et tableau 4. :wink:

Admettons que tu veux lire le numéro de caractère avec l'instruction OCT en pointeur principal:
Ta page est localisée dans le bloc dont l'adresse est, en binaire, d1, d0, b1, b0 (le EF9345 peut adresser 15 blocs, mais le VG5000 n'a que 8ko de Ram, donc, huit blocs seulement)

Tu mets en R6 bit 0 à 4 la valeur de Y (0, 1, ou 8 à 31), en bit 5 la valeur d0, en bit 6 la valeur d'1 (pointeur secondaire), et en bit 7 la valeur d1, les deux à Zéro de toute façons sur VG5000
Tu mets en R7 bit 0 à 5 la valeur de X, en bit 6 la valeur b1, en bit 7 la valeur b0

Tu mets en R0 bit 0-0 pour lecture unique (1 pour lectures séquentielles avec incrémentation automatique), bit1-0, bit 2-0 pour utiliser le pointeur principal, bit 3-1 pour lecture, bits 7 à 4, 0011 code de l'instruction OCT, lecture d'octet. Sans oublier de mettre le bit 3 de l'adresse à 1, pour requérir l'exécution (tu ajoutes 8 à l'adresse habituelle de R0).

Tu teste l'octet de statut jusqu'à ce que busy libéré, et tu peux lire en R1 le code du caractère que tu voulais pointer.


Pour un "Space invaders", le VDP offre des fonctions qui peuvent être utiles, il ne faut plus voir les vaisseaux envahissants comme des sprites, mais comme un arrière-plan, alors, tu peux faire un scrolling sur la masse avec les fonctions de copie-déplacement intégrées, cela limite par contre à un pas minimum de l'ordre d'une colonne ou ligne. :?
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.

joaopa
Messages : 354
Enregistré le : 14 sept. 2013 12:17

Re: comment lit on dans l'EF9345 ?

Message par joaopa » 21 juil. 2017 08:37

Tu fais comment un déplacement horizontal? Je pensais que le scrolling ne pouvait se faire que verticalement sur l'EF9345.

Avatar du membre
Papy.G
Modérateur
Messages : 1617
Enregistré le : 10 juin 2014 13:40
Localisation : Nantes/La Roche sur Yon

Re: comment lit on dans l'EF9345 ?

Message par Papy.G » 21 juil. 2017 11:44

Tu as des instructions (Move buffer) de copie de position à position, utilisant les pointeurs principal et secondaire, pour scroller d'autant que tu veux, si tu ne veux pas faire de double buffering, c'est possible, mais il faudra, pour scroller dans un des sens, faire une copie de -39, et sauter une ligne à l'envers. A la suite de l'opération, il faut remettre les bouts de lignes qui ont "fait le tour", dans un "space invaders", on s'en fiche car le groupe laisse du vide, si c'est gênant, on peut faire masquer la première et dernière colonne si l'on peut se passer de scroller certains attributs. :wink:
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.

Avatar du membre
rendomizer
Messages : 159
Enregistré le : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 29 juil. 2017 19:56

Personne ne l'a pas déja fait sur VG5000µ ? IL n'y a pas moyen. Je crois que ce n'est pas possible sur VG5000µ :shock:
le mot de passe c'est quoi ? quoi !

Avatar du membre
Papy.G
Modérateur
Messages : 1617
Enregistré le : 10 juin 2014 13:40
Localisation : Nantes/La Roche sur Yon

Re: comment lit on dans l'EF9345 ?

Message par Papy.G » 29 juil. 2017 20:50

Je ne sais pas si cela a déjà été fait, mais ce sont des instructions documentées dans la Datasheet du 9345, il n'y a pas de raison que ça ne soit pas possible. :roll:
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.

Avatar du membre
rendomizer
Messages : 159
Enregistré le : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 29 juil. 2017 21:01

Oui mais il n'y a pour l'adressage qu'une seul routine qui entre les codes dans l'ef9345 mais pas l'inverse !
le mot de passe c'est quoi ? quoi !

Daniel
Messages : 9533
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment lit on dans l'EF9345 ?

Message par Daniel » 29 juil. 2017 21:59

La routine de lecture en mémoire vidéo n'existe pas toute prête dans la ROM du VG5000, nous sommes bien d'accord.
C'est au programmeur de l'écrire, et la datasheet de l'EF9345 donne toutes les informations nécessaires pour le faire.
Mais, comme je l'ai déjà écrit, ce n'est pas une bonne méthode pour afficher des sprites animés, car c'est trop lent.
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
rendomizer
Messages : 159
Enregistré le : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 29 juil. 2017 22:37

mais alors quelle est la bonne méthode Daniel ?
le mot de passe c'est quoi ? quoi !

Répondre