Salut Romain,

> Par contre,  j'en profites pour te poser quelques questions:
> - combien dois-je émuler de niveaux de gris: 2 ou 3, 4 ou 5, 7 ou 8 ?
> <<* Ce serait bien d'avoir aussi une option 8 niveaux de gris (moyenne de
7
> plans plutôt que de 6).>>

Les nombres de niveaux de gris interessants sont 2, 4, 7 et 8:
* 2: plane0 (1/1)
* 4: plane0, plane0, plane1 (2/3, 1/3)
* 7: plane2, plane0, plane1, plane0, plane1, plane0 (3/6, 2/6, 1/6)
* 8: plane1, plane0, plane2, plane0, plane0, plane1, plane0 (4/7, 2/7, 1/7)

> - sur quel évènement puis-je me synchroniser pour les niveaux de gris.

Déjà, ça va dépendre de la version matérielle que tu émules:
* HW1: Tu peux travailler en termes de changements d'adresse de l'écran.
(Sache que les routines n'écrivent dans le port pour changer de plan que si
l'adresse change.) Une chose que tu peux essayer de faire par exemple est de
détecter automatiquement le nombre de ndg: prends les 6 dernières adresses
de l'écran (suffisamment récentes) et regarde:
- Si tu n'as pas 6 adresses ou si les premières ont déjà expiré, tu es en
blanc&noir.
- S'il n'y a qu'une adresse différente, tu es en blanc&noir.
- S'il n'y a que 2 adresses différentes, tu en en 4 ndg.
- Si tu as 3 adresses différentes, tu es en 7 ou 8 ndg. Tu ne vas pas
pouvoir distinguer ces cas en regardant seulement les changements, il faudra
mesurer les temps d'exposition. S'ils sont uniformes, ce sont 7 ndg, s'il y
en a un 2 fois plus long, ce sont 8 ndg (séquence plane0, plane0).
Avec ça (ou alors en te servant du choix dans le menu), tu regardes les
listes ci-dessus et tu t'en sers pour faire des moyennes. Pour les 4 ndg, tu
auras aussi besoin d'une mesure du temps d'exposition pour savoir quel plan
est le plan foncé et lequel est le plan clair.
* HW2/HW3: Relève les contenus de l'écran à des intervalles de temps
réguliers. Le port 0x70001D existe pour synchroniser les routines avec
l'écran. Il faudra flipper le sign bit de ce port à chaque fois que tu as
fini de relever une capture d'écran. Attention, les routines de gris HW2/HW3
copient seulement un tiers de l'écran à la fois, donc il faudra faire la
moyenne de 9 relèvements en 4 ndg, 18 en 7 ndg et 21 en 8 ndg. Par
conséquent, le timer de relèvement ne devra pas être trop lent. Le vrai
matériel le met à 90 Hz environ. Soit tu prends le pgcd (126 relèvements),
mais c'est très long, soit tu restes avec des choix à faire à la main.
Malheureusement, une autodétection n'est pas aussi simple que sur HW1, parce
que tu ne peux pas faire des comparaisons d'adresses, et le contenu peut
changer entre 2 frames. Une idée serait de prendre les 126 relèvements pour
l'option "blurry" et d'en faire l'option par défaut, et de proposer les
autres alternatives pour un meilleur rendu.

        Kevin Kofler