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

comment lit on dans l'EF9345 ?

Messagede 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 !
Avatar de l’utilisateur
rendomizer
 
Messages: 119
Inscription: 17 Juin 2016 21:00

Re: comment lit on dans l'EF9345 ?

Messagede 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.
Daniel
 
Messages: 9245
Inscription: 01 Mai 2007 18:30
Localisation: Vaucluse

Re: comment lit on dans l'EF9345 ?

Messagede 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 !
Avatar de l’utilisateur
rendomizer
 
Messages: 119
Inscription: 17 Juin 2016 21:00

Re: comment lit on dans l'EF9345 ?

Messagede 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.
Daniel
 
Messages: 9245
Inscription: 01 Mai 2007 18:30
Localisation: Vaucluse

Re: comment lit on dans l'EF9345 ?

Messagede 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 de l’utilisateur
Papy.G
Modérateur
 
Messages: 1534
Inscription: 10 Juin 2014 13:40
Localisation: Nantes/La Roche sur Yon

Re: comment lit on dans l'EF9345 ?

Messagede 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 de l’utilisateur
rendomizer
 
Messages: 119
Inscription: 17 Juin 2016 21:00

Re: comment lit on dans l'EF9345 ?

Messagede 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 de l’utilisateur
rendomizer
 
Messages: 119
Inscription: 17 Juin 2016 21:00

Re: comment lit on dans l'EF9345 ?

Messagede 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.
Avatar de l’utilisateur
Papy.G
Modérateur
 
Messages: 1534
Inscription: 10 Juin 2014 13:40
Localisation: Nantes/La Roche sur Yon


Retourner vers Développements actuels

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron