couleur marge pour EF9345
Modérateurs : Papy.G, fneck, Carl
couleur marge pour EF9345
Bonjour,
quelu'un sait-il s'il est possible de de colorier la marge avec deux couleurs différentes avec l'EF9345?
Merci d'avance
quelu'un sait-il s'il est possible de de colorier la marge avec deux couleurs différentes avec l'EF9345?
Merci d'avance
Re: couleur marge pour EF9345
Il n'y a qu'une couleur de marge, donnée par les 3 bits de poids faible du registre MAT. En la changeant en cours de balayage on peut avoir l'illusion de plusieurs couleurs. Sans précaution particulière on obtient des bandes colorées qui défilent dans la marge. Si on se synchronise sur la VBL ont peut stabiliser ces bandes, ou contrôler leur défilement.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: couleur marge pour EF9345
C'est le principe utilisé pour les bandes lors d'un chargement de programme?
Re: couleur marge pour EF9345
Sais-tu comment on peut faire cette synchronisation? Je n'ai rien trouvé de tel dans les clefs du VG5000.
Re: couleur marge pour EF9345
Bonjour,
Je suppose que tu as dans l'idée d'avoir une interface avec deux couleurs de fond différentes et du coup, tu voudrais que ces couleurs apparaissent aussi dans la bordure ?
Si je fais une analogie avec une machine que je connais un peu plus (l'Amstrad CPC), j'aurais tendance à dire que le RST &38 est encore ton sauveur. Cette routine est appelée tous les 300ème de secondes. Sur CPC, pour changer le BORDER dans des programmes, certains programmeurs détournaient ce vecteur d'interruption vers une routine qui faisait en gros les choses suivantes :
- gestion d'un compteur s'incrémentant à chaque appel du RST &38 (de 0 à 5). Si le compteur dépasse son maximum, on repart à 0, (0 correspondant au début de la synchro vidéo).
- en fonction de la valeur de ce compteur, appel d'une routine de changement de la couleur du border
Avec ce principe, on peut gérer la couleur sur six zones. Pour positionner plus finement le changement de couleur, il faut simplement rajouter une boucle d'attente. Il est aussi nécessaire de prévoir avant la mise en place de la routine uns synchro vidéo, histoire que la boucle ne soit pas décalée.
Sur le VG5000, la routine de changement de couleur de la bordure existe dans le système en &1FDE.
Après, la difficulté sur le VG5000 reste de trouver comment se synchroniser avec le début de l'affichage. Ca passe nécessairement par l'interrogation de la puce vidéo. En jetant un oeil rapide sur les caractéristiques de l'EF9345, je dirais que le registre R0 (bit sync) est un client potentiel...
Markerror
Je suppose que tu as dans l'idée d'avoir une interface avec deux couleurs de fond différentes et du coup, tu voudrais que ces couleurs apparaissent aussi dans la bordure ?
Si je fais une analogie avec une machine que je connais un peu plus (l'Amstrad CPC), j'aurais tendance à dire que le RST &38 est encore ton sauveur. Cette routine est appelée tous les 300ème de secondes. Sur CPC, pour changer le BORDER dans des programmes, certains programmeurs détournaient ce vecteur d'interruption vers une routine qui faisait en gros les choses suivantes :
- gestion d'un compteur s'incrémentant à chaque appel du RST &38 (de 0 à 5). Si le compteur dépasse son maximum, on repart à 0, (0 correspondant au début de la synchro vidéo).
- en fonction de la valeur de ce compteur, appel d'une routine de changement de la couleur du border
Avec ce principe, on peut gérer la couleur sur six zones. Pour positionner plus finement le changement de couleur, il faut simplement rajouter une boucle d'attente. Il est aussi nécessaire de prévoir avant la mise en place de la routine uns synchro vidéo, histoire que la boucle ne soit pas décalée.
Sur le VG5000, la routine de changement de couleur de la bordure existe dans le système en &1FDE.
Après, la difficulté sur le VG5000 reste de trouver comment se synchroniser avec le début de l'affichage. Ca passe nécessairement par l'interrogation de la puce vidéo. En jetant un oeil rapide sur les caractéristiques de l'EF9345, je dirais que le registre R0 (bit sync) est un client potentiel...
Markerror
Re: couleur marge pour EF9345
Merci pour les réponses. C'est pas gagné pour colorier la marge en deux couleurs différentes !!!
Re: couleur marge pour EF9345
Bonsoir,
Une mise en pratique rapide de mon précédent post. Le résultat n'est pas franchement concluant mais c'est toujours mieux que rien.
Le plus étonnant est qu'on a l'impression que le RST&38 n'est pas appelé tous les 300èmes de seconde, car on ne voit que trois bandes. C'est peut-être lié au EI RET de la fin de routine, mais pour l'instant, ça plante avec autre chose (simple RET ou RETI).
Autre problème, les bandes ne sont pas très stables (pas essayé sur un vrai VG5000 pour l'instant).
La routine ne rend pas la main au Basic
Une mise en pratique rapide de mon précédent post. Le résultat n'est pas franchement concluant mais c'est toujours mieux que rien.
Le plus étonnant est qu'on a l'impression que le RST&38 n'est pas appelé tous les 300èmes de seconde, car on ne voit que trois bandes. C'est peut-être lié au EI RET de la fin de routine, mais pour l'instant, ça plante avec autre chose (simple RET ou RETI).
Autre problème, les bandes ne sont pas très stables (pas essayé sur un vrai VG5000 pour l'instant).
La routine ne rend pas la main au Basic
Code : Tout sélectionner
; VG5000 bordure deux couleurs
; Assemble sous WINAPE
ORG &6000
NOLIST
WRITE "BORDERS.BIN"
JP detourne
flag_halt db &0
detourne
DI
PUSH IX
PUSH HL
PUSH AF
LD HL,border
LD (&47D1),HL
LD A,&C3
LD (&47D0),A
POP AF
POP HL
POP IX
EI
coucou
NOP
JR coucou
border DI
PUSH AF
PUSH HL
PUSH DE
LD A,(flag_halt)
INC A
CP &6
JR NZ,border1
XOR A
border1
LD (flag_halt),A
LD HL,colors
ADD A,L
LD L,A
LD E,(HL) ; on recupere la couleur
CALL &1FDE
POP DE
POP HL
POP AF
INC SP ; On quitte le RST &38
INC SP
EI
RET
colors db &04,&05,&04,&05,&04,&05