couleur marge pour 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

joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

couleur marge pour EF9345

Message par joaopa »

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
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: couleur marge pour EF9345

Message par Daniel »

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.
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: couleur marge pour EF9345

Message par joaopa »

C'est le principe utilisé pour les bandes lors d'un chargement de programme?
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: couleur marge pour EF9345

Message par Daniel »

Oui.
Daniel
L'obstacle augmente mon ardeur.
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: couleur marge pour EF9345

Message par joaopa »

Sais-tu comment on peut faire cette synchronisation? Je n'ai rien trouvé de tel dans les clefs du VG5000.
Markerror
Messages : 2121
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: couleur marge pour EF9345

Message par Markerror »

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
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: couleur marge pour EF9345

Message par joaopa »

Merci pour les réponses. C'est pas gagné pour colorier la marge en deux couleurs différentes !!!
Markerror
Messages : 2121
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: couleur marge pour EF9345

Message par Markerror »

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

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
Répondre