Incompéhension 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 : Papy.G, fneck, Carl

Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Incompéhension EF9345

Message par Papy.G »

De rien, mes connaissances ne sont que théoriques, je ne suis pour l'instant parvenu à afficher sur mon minitel que des caractères erronés. :oops:
Par contre, je n'avais pas répondu complètement à ta question, pour les quadrichromes, il semblerait qu'il faille accéder directement à l'EF9345, écrire avec la commande OCT pour les jeux de caractères, pour le reste, KRF ou peut-être les routines de la Rom, si elles le supportent. (J'ai peur que le basic utilise le mode 16 bits fixe, auquel cas il faudra tout faire en assembleur, les caractères Q ne pouvant être utilisés dans ce mode.) :?
Vu la richesse graphique de space invaders, tu pourrais presque te contenter des mozaïques, voire, au pire, un jeu de caractères monochromes. :lol:
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Incompéhension EF9345

Message par rendomizer »

je veux faire quelque chose de plus qu'un simple space invader biensur Papy G je comprend bien. j'ai déjà commencer a faire le deplacement et le tir maintenant il me faut travailler le graphisme improbable que le vg5000 n'a jamais exploité et redorer son blason j'ai un ami qui lui aussi s'y attelle de son coté on pense y arriver pour cet été.dans le datasheet on voit qu'il y a 8x100 caracteres de disponible en quadrichrome je travail essencielement en asm et c'est un vrai régale je me demande d'ailleur pourquoi il n'on pas intergré un assembleur dans la rom du VG5000 car c pour moi le meilleur ordinateur 8bit en qualité d'ecrant( pas de bavure ntsc ou pal comme avec les serie cbm ou atari ou les couleurs son ternes) Le VG500 merite son heure de gloire je pense. :D
Pièces jointes
17265255_284344875332687_7143938589984607658_n.png
17265255_284344875332687_7143938589984607658_n.png (18.74 Kio) Consulté 4270 fois
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

comment lit on dans l'EF9345 ?

Message par rendomizer »

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.
Je ne suis qu'un utilisateur pas un pro
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment lit on dans l'EF9345 ?

Message par Daniel »

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 de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer »

Peux tu me donner un petit exemple Daniel ? Comme lire le code caractère a une position x y... :D
Je ne suis qu'un utilisateur pas un pro
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment lit on dans l'EF9345 ?

Message par Daniel »

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 de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: comment lit on dans l'EF9345 ?

Message par Papy.G »

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 de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer »

ç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.
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer »

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:
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: comment lit on dans l'EF9345 ?

Message par Papy.G »

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 : 512
Inscription : 14 sept. 2013 12:17

Re: comment lit on dans l'EF9345 ?

Message par joaopa »

Tu fais comment un déplacement horizontal? Je pensais que le scrolling ne pouvait se faire que verticalement sur l'EF9345.
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: comment lit on dans l'EF9345 ?

Message par Papy.G »

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 de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer »

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:
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: comment lit on dans l'EF9345 ?

Message par Papy.G »

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 de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer »

Oui mais il n'y a pour l'adressage qu'une seul routine qui entre les codes dans l'ef9345 mais pas l'inverse !
Je ne suis qu'un utilisateur pas un pro
Répondre