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

Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment lit on dans l'EF9345 ?

Message par Daniel »

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

Re: comment lit on dans l'EF9345 ?

Message par rendomizer »

mais alors quelle est la bonne méthode Daniel ?
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 bonne méthode est celle que j'ai donnée plus haut :
Daniel a écrit :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 »

la page écran à partir de $4000 n'est pas utilisé en mode multicolore et c'est la seul accessible directement ! :? Alors...
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
Mokona
Messages : 1040
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: comment lit on dans l'EF9345 ?

Message par Mokona »

Dans la ROM, le transfert du contenu de la RAM vers l'EF9345 se situe à partir de 0x00bc et se termine en 0x18b. Comme cela provoque la totalité du transfert, tu dois pouvoir te reposer là dessus pour écrire la méthode proposée par Daniel.

J'ai prévu ce genre de choses sur mon site, mais je n'en suis pas encore là.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer »

Je ne comprends pas :( peux tu développer stp
Je ne suis qu'un utilisateur pas un pro
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: comment lit on dans l'EF9345 ?

Message par joaopa »

Daniel a écrit : 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.
Sur certains jeux du ZX Spectrum, c'est carrément toute la page RAM-écran qui est envoyé au processeur vidéo. Même avec des sprites animés, c'est assez rapide, alors que le Z80 est bridé à 3,5MHz.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer »

Tu m'as donné une idée Joaopa ! :D
Je ne suis qu'un utilisateur pas un pro
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: comment lit on dans l'EF9345 ?

Message par joaopa »

Super :twisted:
Tu as le droit de partager, tu sais...
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer »

Je vais recopier tout ce qui se passe avec l' EF9345 vers la mémoire écran en $4000 et comme ça je pourrai lire les caractères qui y sont à leur place tout bêtement mais ça va me prendre du temps à coder... :lol:
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 »

Je vais utiliser un autre emplacement en mémoire car la page ecran provoque des interferences comme avec la fonction play ...
Je ne suis qu'un utilisateur pas un pro
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: comment lit on dans l'EF9345 ?

Message par joaopa »

As-tu bien désactivé les interruptions dans ton programme?

Ton programme doit commencer par l'instruction DI
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer »

non, mais le di ça marche Malgres les retour basic ?
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 »

Eureka ! ça marche. Il ne me reste plus qu'a finaliser les vrais sprites maintenant au nombre de 4 (gain de place oblige) :D
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Incompéhension EF9345

Message par rendomizer »

Je ai revu ma copie et vue l'aide qui m'a été donné je vous livre mon code source de mon "sprite générateur" en échange.Je suis désolé de mon attitude mais je pense que cela était due au fait que je n'avais pas compris votre politique d'entraide que je comprend mieux aujourd'hui. mille excuse a tous. Je dois dire que ce qui m'a motivé c'est mon manque de connaissance et de maitrise de l'ef9345. Oui, j'ai besoin d'un serieux coup de main. Voila que je veux utiliser tous les caracteres en mode quadrichrome mais probleme il y a des interferences sur les caracteres. voila mon code. Je sais. ce sujet a déja été abordé mais pas avec les deux jeux de caractere setet et seteg. Merci de votre compréhension à tous.
voici mon code avec les erreurs.

Code : Tout sélectionner

.org $5ec0
 
          di
          ld bc,$5A00-$4A0A
          ld de,$4A0A
_boucle:
          ld hl,_motif
          ldi
          ldi
          ld a,b
          or c
          jr nz,_boucle
          
            
           ld a,31
           ld (_caractere),a
            ld  hl,$4A0A 
_debut1:            ;--------------build seteT--------------------
          ld a,(_caractere)
          inc a
          ld (_caractere),a
          cp 0 
          jp z,_debut
            push af
           call $001B ; construction sprites incremente HL de 10
           pop af
          jp _debut1
           
_caractere:
.db 31   


       
 
_debut:
       ld hl,_ef9345
       call $00AD
       ld a,0
       ld (_cursorxfill1),a
       ld a,20
       ld (_cursoryfill1),a
       ld a,31 
       ld (_caracterefill1),a
       ld a,0
       ld (_cursorxfill2),a
       ld a,23
       ld (_cursoryfill2),a
       ld a,128 
       ld (_caracterefill2),a
       ;pop hl
       ;ret
      ;push hl 
      ;push af
_setet:
     ld bc,28672
     ld de,28672
     ld a,(_cursorxfill1)
     inc a
     ld (_cursorxfill1),a
     cp 39
     jp z,_suitey1
     ld a,(_caracterefill1)
     inc a
     ld (_caracterefill1),a
     cp 128
     jp z,_seteg
     
     ld hl,_ef9345fill1 
     call $00ad
     
     jp _setet      
_suitey1:
      ld a,0
      ld (_cursorxfill1),a
      
      ld a,(_cursoryfill1)
      inc a
      ld (_cursoryfill1),a 
      jp _setet
      
      
_seteg: 
      ; pop af
      ;pop hl
      ;ret
      ;push hl
      ;push af
_setegsuite:      
     ld a,(_cursorxfill2)
     inc a
     ld (_cursorxfill2),a
     cp 39
     jp z,_suitey2
     ld a,(_caracterefill2)
     inc a
     ld (_caracterefill2),a
     cp 0
     jp z,_fin
     
     ld hl,_ef9345fill2 
     call $00ad
     
     jp _setegsuite      
_suitey2:
      ld a,0
      ld (_cursorxfill2),a
      
      ld a,(_cursoryfill2)
      inc a
      ld (_cursoryfill2),a 
      jp _setegsuite
_fin:
       jp _fin
       ;pop af  
       ;pop hl
       ;ret
       
 
_ef9345:
        .db $10,$20,$81,$29,$00,$20,$82,$29,$06,$20,$83,$29,$67,$20,$84,$29,$13 
 
 
  
_ef9345fill1:        
        .db 12,$21                
_caracterefill1:       
        .db 31,$22,$d8,$23
_colorfill1:        
        .db $66,$26
_cursoryfill1:        
        .db 1,$27
_cursorxfill1:        
        .db 0,$28,$00 
 
 
_ef9345fill2:        
        .db 12,$21                
_caracterefill2:       
        .db 127,$22,$c8,$23
_colorfill2:        
        .db $66,$26
_cursoryfill2:        
        .db 4,$27
_cursorxfill2:        
        .db 0,$28,$00 
        nop
        nop
        nop
_motif:
.db 0,255
        nop
        nop
        nop
_repere:
        ld hl,_init
        call $00AD
        ret
_init:
        .db $18,$21,$00,$28,$81,$21,$6E,$28,$82,$21,$f7,$28,$83,$21,$13,$28,$84,$21,$08,$28,$87,$22,$38,$28,$00        
Je ne suis qu'un utilisateur pas un pro
Répondre