Page 7 sur 8

Re: comment lit on dans l'EF9345 ?

Publié : 29 juil. 2017 21:59
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.

Re: comment lit on dans l'EF9345 ?

Publié : 29 juil. 2017 22:37
par rendomizer
mais alors quelle est la bonne méthode Daniel ?

Re: comment lit on dans l'EF9345 ?

Publié : 30 juil. 2017 14:29
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.

Re: comment lit on dans l'EF9345 ?

Publié : 30 juil. 2017 14:48
par rendomizer
la page écran à partir de $4000 n'est pas utilisé en mode multicolore et c'est la seul accessible directement ! :? Alors...

Re: comment lit on dans l'EF9345 ?

Publié : 30 juil. 2017 14:52
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à.

Re: comment lit on dans l'EF9345 ?

Publié : 30 juil. 2017 17:12
par rendomizer
Je ne comprends pas :( peux tu développer stp

Re: comment lit on dans l'EF9345 ?

Publié : 30 juil. 2017 18:14
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.

Re: comment lit on dans l'EF9345 ?

Publié : 30 juil. 2017 18:24
par rendomizer
Tu m'as donné une idée Joaopa ! :D

Re: comment lit on dans l'EF9345 ?

Publié : 30 juil. 2017 20:25
par joaopa
Super :twisted:
Tu as le droit de partager, tu sais...

Re: comment lit on dans l'EF9345 ?

Publié : 30 juil. 2017 20:51
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:

Re: comment lit on dans l'EF9345 ?

Publié : 01 août 2017 06:38
par rendomizer
Je vais utiliser un autre emplacement en mémoire car la page ecran provoque des interferences comme avec la fonction play ...

Re: comment lit on dans l'EF9345 ?

Publié : 01 août 2017 08:49
par joaopa
As-tu bien désactivé les interruptions dans ton programme?

Ton programme doit commencer par l'instruction DI

Re: comment lit on dans l'EF9345 ?

Publié : 01 août 2017 19:03
par rendomizer
non, mais le di ça marche Malgres les retour basic ?

Re: comment lit on dans l'EF9345 ?

Publié : 02 août 2017 00:43
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

Re: Incompéhension EF9345

Publié : 13 avr. 2018 20:30
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