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 : 10120
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 : 192
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.

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

Re: comment lit on dans l'EF9345 ?

Message par Daniel » 30 juil. 2017 14:29

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 du membre
rendomizer
Messages : 192
Enregistré le : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 30 juil. 2017 14:48

la page écran à partir de $4000 n'est pas utilisé en mode multicolore et c'est la seul accessible directement ! :? Alors...
le mot de passe c'est quoi ? quoi.

Avatar du membre
Mokona
Messages : 263
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: comment lit on dans l'EF9345 ?

Message par Mokona » 30 juil. 2017 14:52

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 du membre
rendomizer
Messages : 192
Enregistré le : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 30 juil. 2017 17:12

Je ne comprends pas :( peux tu développer stp
le mot de passe c'est quoi ? quoi.

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

Re: comment lit on dans l'EF9345 ?

Message par joaopa » 30 juil. 2017 18:14

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 du membre
rendomizer
Messages : 192
Enregistré le : 17 juin 2016 21:00
Contact :

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 30 juil. 2017 18:24

Tu m'as donné une idée Joaopa ! :D
le mot de passe c'est quoi ? quoi.

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

Re: comment lit on dans l'EF9345 ?

Message par joaopa » 30 juil. 2017 20:25

Super :twisted:
Tu as le droit de partager, tu sais...

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

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 30 juil. 2017 20:51

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:
le mot de passe c'est quoi ? quoi.

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

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 01 août 2017 06:38

Je vais utiliser un autre emplacement en mémoire car la page ecran provoque des interferences comme avec la fonction play ...
le mot de passe c'est quoi ? quoi.

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

Re: comment lit on dans l'EF9345 ?

Message par joaopa » 01 août 2017 08:49

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

Ton programme doit commencer par l'instruction DI

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

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 01 août 2017 19:03

non, mais le di ça marche Malgres les retour basic ?
le mot de passe c'est quoi ? quoi.

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

Re: comment lit on dans l'EF9345 ?

Message par rendomizer » 02 août 2017 00:43

Eureka ! ça marche. Il ne me reste plus qu'a finaliser les vrais sprites maintenant au nombre de 4 (gain de place oblige) :D
le mot de passe c'est quoi ? quoi.

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

Re: Incompéhension EF9345

Message par rendomizer » 13 avr. 2018 20:30

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        
le mot de passe c'est quoi ? quoi.

Répondre