Incompéhension EF9345
Modérateurs : Papy.G, fneck, Carl
Re: comment lit on dans l'EF9345 ?
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.
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.
L'obstacle augmente mon ardeur.
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: comment lit on dans l'EF9345 ?
mais alors quelle est la bonne méthode Daniel ?
Je ne suis qu'un utilisateur pas un pro
Re: comment lit on dans l'EF9345 ?
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.
L'obstacle augmente mon ardeur.
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: comment lit on dans l'EF9345 ?
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
- Mokona
- Messages : 1042
- Inscription : 17 déc. 2016 22:01
- Localisation : Nord Est des Yvelines
- Contact :
Re: comment lit on dans l'EF9345 ?
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à.
J'ai prévu ce genre de choses sur mon site, mais je n'en suis pas encore là.
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: comment lit on dans l'EF9345 ?
Je ne comprends pas peux tu développer stp
Je ne suis qu'un utilisateur pas un pro
Re: comment lit on dans l'EF9345 ?
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.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.
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: comment lit on dans l'EF9345 ?
Tu m'as donné une idée Joaopa !
Je ne suis qu'un utilisateur pas un pro
Re: comment lit on dans l'EF9345 ?
Super
Tu as le droit de partager, tu sais...
Tu as le droit de partager, tu sais...
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: comment lit on dans l'EF9345 ?
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...
Je ne suis qu'un utilisateur pas un pro
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: comment lit on dans l'EF9345 ?
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
Re: comment lit on dans l'EF9345 ?
As-tu bien désactivé les interruptions dans ton programme?
Ton programme doit commencer par l'instruction DI
Ton programme doit commencer par l'instruction DI
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: comment lit on dans l'EF9345 ?
non, mais le di ça marche Malgres les retour basic ?
Je ne suis qu'un utilisateur pas un pro
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: comment lit on dans l'EF9345 ?
Eureka ! ça marche. Il ne me reste plus qu'a finaliser les vrais sprites maintenant au nombre de 4 (gain de place oblige)
Je ne suis qu'un utilisateur pas un pro
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: Incompéhension EF9345
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.
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