MDA/CGA/EGA vers... LCD
Modérateurs : Papy.G, fneck, Carl
MDA/CGA/EGA vers... LCD
Bonsoir à tous,
Je suis en ce moment en train de chercher la meilleure (moins mauvaise ?) solution pour afficher une source MDA, CGA ou EGA (par ordre croissant d'intérêt en ce qui me concerne, car ma principale utilisation pour ces vieilles bécanes reste le jeu ) sur un écran LCD.
Je sais, je sais... rien ne vaut un bon CRT, sauf qu'il faut reconnaître un grand nombre d'avantages au LCD :
- faible encombrement/poids;
- bonne disponibilité et faible prix;
- ne fatigue pas les yeux.
Les principaux inconvénients étant la moindre réactivité (embêtant pour les jeux) mais surtout les problèmes de scaling (image déformée, barres noires sur les cotés, artefacts...)
Concernant la réactivité, un temps de réponse inférieur à 10 ms (idéalement 5) me paraît un compromis acceptable. Pour cela il vaut mieux se rabattre sur des modèles d'écran plat plus récents.
Pour pallier aux problèmes de scaling, tout va dépendre de la source, et donc pour afficher sur du VGA/DVI/HDMI (les LCD EGA industriels coutent une fortune), du scaler utilisé.
Pour mes tests j'ai retenu 2 écrans Belinea : le 1970 S1 (TN 5 ms, 1280x1024, à droite) et le 2080 S1 (MVA 8 ms, 1600x1200, à gauche) qui présentent tous les deux des entrées VGA et DVI : J'utilise comme machines de test mes Toshiba pour pièces/de rechange 1200 (CGA, à droite) et 3200 (EGA, à gauche).
Pour les scalers, j'utilise principalement les 2 suivants :
- MCE2VGA : je ne m'appesantirais pas trop dessus car il est déjà détaillé dans ce thread;
- RGBtoHDMI : une alternative plus récente issue de ce projet open-source.
J'ajouterais peut-être plus tard des tests avec le CGA2SCART de Serdashop quand j'aurais mis la main sur un convertisseur SCART>HDMI digne de ce nom (je compte dans le futur m'acheter un OSSC).
Le RGBtoHDMI est très prometteur car il permet de faire du scaling en mode "entier" (sans interpolation) et donc de fournir une image très pointue sans artefact. Nous verrons en revanche que tout va dépendre des résolutions d'entrée et de sortie.
A noter que ce projet était à la base destiné au BBC Micro d'Acorn, mais sa compatibilité a été étendue à un grand nombre d'autres machines vintage, dont le PC.
Le paramétrage est aussi beaucoup plus riche que pour le MCE2VGA comme en atteste le wiki. La configuration repose essentiellement sur des profils (regroupant scaling, géométrie, couleurs, etc) : l'un de mes buts ici sera de trouver les valeurs idéales en fonction des sources et du LCD utilisé.
Voici mes premiers tests avec le profil existant "Standard PC" (les photos ne rendent pas justice à la qualité, surtout en mode "integer"). J'affiche le résumé de la configuration pour infos.
Integer scaling (sharp) / EGA 640x200 > LCD 1280x1024 :
Integer scaling (sharp) / EGA 640x200 > LCD 1600x1200 :
Interpolated scaling (soft) / EGA 640x200 > LCD 1600x1200:
Je suis en ce moment en train de chercher la meilleure (moins mauvaise ?) solution pour afficher une source MDA, CGA ou EGA (par ordre croissant d'intérêt en ce qui me concerne, car ma principale utilisation pour ces vieilles bécanes reste le jeu ) sur un écran LCD.
Je sais, je sais... rien ne vaut un bon CRT, sauf qu'il faut reconnaître un grand nombre d'avantages au LCD :
- faible encombrement/poids;
- bonne disponibilité et faible prix;
- ne fatigue pas les yeux.
Les principaux inconvénients étant la moindre réactivité (embêtant pour les jeux) mais surtout les problèmes de scaling (image déformée, barres noires sur les cotés, artefacts...)
Concernant la réactivité, un temps de réponse inférieur à 10 ms (idéalement 5) me paraît un compromis acceptable. Pour cela il vaut mieux se rabattre sur des modèles d'écran plat plus récents.
Pour pallier aux problèmes de scaling, tout va dépendre de la source, et donc pour afficher sur du VGA/DVI/HDMI (les LCD EGA industriels coutent une fortune), du scaler utilisé.
Pour mes tests j'ai retenu 2 écrans Belinea : le 1970 S1 (TN 5 ms, 1280x1024, à droite) et le 2080 S1 (MVA 8 ms, 1600x1200, à gauche) qui présentent tous les deux des entrées VGA et DVI : J'utilise comme machines de test mes Toshiba pour pièces/de rechange 1200 (CGA, à droite) et 3200 (EGA, à gauche).
Pour les scalers, j'utilise principalement les 2 suivants :
- MCE2VGA : je ne m'appesantirais pas trop dessus car il est déjà détaillé dans ce thread;
- RGBtoHDMI : une alternative plus récente issue de ce projet open-source.
J'ajouterais peut-être plus tard des tests avec le CGA2SCART de Serdashop quand j'aurais mis la main sur un convertisseur SCART>HDMI digne de ce nom (je compte dans le futur m'acheter un OSSC).
Le RGBtoHDMI est très prometteur car il permet de faire du scaling en mode "entier" (sans interpolation) et donc de fournir une image très pointue sans artefact. Nous verrons en revanche que tout va dépendre des résolutions d'entrée et de sortie.
A noter que ce projet était à la base destiné au BBC Micro d'Acorn, mais sa compatibilité a été étendue à un grand nombre d'autres machines vintage, dont le PC.
Le paramétrage est aussi beaucoup plus riche que pour le MCE2VGA comme en atteste le wiki. La configuration repose essentiellement sur des profils (regroupant scaling, géométrie, couleurs, etc) : l'un de mes buts ici sera de trouver les valeurs idéales en fonction des sources et du LCD utilisé.
Voici mes premiers tests avec le profil existant "Standard PC" (les photos ne rendent pas justice à la qualité, surtout en mode "integer"). J'affiche le résumé de la configuration pour infos.
Integer scaling (sharp) / EGA 640x200 > LCD 1280x1024 :
Integer scaling (sharp) / EGA 640x200 > LCD 1600x1200 :
Interpolated scaling (soft) / EGA 640x200 > LCD 1600x1200:
Re: MDA/CGA/EGA vers... LCD
J'ai eu mon RGBtoHDMI via le forum stardot.co.uk. Pour ceux que ça intéresse, il est maintenant en vente sur eBay.
A noter qu'il faut rajouter un Raspberry Pi Zero et une carte Micro SD.
A noter qu'il faut rajouter un Raspberry Pi Zero et une carte Micro SD.
Re: MDA/CGA/EGA vers... LCD
Merci pour cette présentation et les références des scalers. Le rendu m'a l'air très clean en effet.
Re: MDA/CGA/EGA vers... LCD
La plupart des jeux anciens (CGA, EGA et même VGA) utilisent la résolution 320x200 (CGA et VGA) et 640x200 (EGA) ce qui correspond à un ratio 16:10. Sauf que les CRTs des joueurs de l'époque étaient évidemment en 4:3. Les graphismes étaient donc conçus pour s'afficher sur de tels moniteurs et utilisait un rapport d'aspect de pixel non pas carré mais étiré verticalement (5:6). Ce qui était possible sur les CRTs mais ne l'est pas sur les LCDs où les pixels sont carrés et ne peuvent pas être étirés.
Pour en savoir plus sur ce sujet, voir cet article.
Le mode "Standard PC" du RGBtoHDMI qui est un compromis permettant d'afficher toutes les résolutions du MDA/CGA/EGA sur la plupart des LCDs, utilise en scaling entier pour le CGA et l'EGA un ratio de pixel de respectivement 4:5 pour du 320x200 et de 2:5 pour du 640x200.
2 (x2)/5=0,8 contre 5/6= 0,8333... d'où l'aspect légèrement étiré verticalement de l'image sur Monkey Island en scaling entier (le cadran de la tour de l'horloge n'est pas rond). Sur le scaling interpolé on a du 2,17(x2)/5,13=0,846... un peu plus proche du 5:6 quoique très légèrement écrasé.
Pour un rendu sans aucune déformation sur du LCD, il nous faut donc respecter au plus près ce rapport d'aspect de pixel de 5:6 en multipliant par la résolution de base des anciens programmes.
En CGA, ça fait : 5:6 x 320x200 = 1600x1200... Ca tombe bien, c'est la résolution exacte du Belinea 2080 S1
J'ai donc pour l'occasion créé un profil special CGA 320x200 > 1600x1200 (fichier ci-joint) adapté au integer scaling (sharp) et dont voici les résultats.
Photo de l'écran avec le résumé des infos (on voit d'ailleurs que toute la surface de l'écran est utilisée ) :
Le scaler permet de faire des captures d'écran. Celles-ci rendent mieux compte de l'excellente qualité de l'image sans interpolation. Le rendu réel sur l'écran est vraiment aussi bon que sur la capture
Planet X3 est un jeu récent conçu avec et pour des pixel carrés, donc pour le coup il peut paraître étiré. Mais avec un programme ancien, le rapport est parfaitement adapté. Dans Deluxe Paint II (1988), ont voit que les cercles sont bien ronds.
Juste pour le plaisir des yeux, avec les 4 palettes CGA :
Avoir un aussi bon rendu pour les jeux EGA est plus compliqué car il faudrait une résolution de 5:(6 x2) x 640x200 = 3200x2400. Il existe des écrans avec cette résolution (QUXGA) mais ils sont rares, chers et probablement pas adaptés en terme de réactivité.
Donc si on veut garder la qualité d'image avec le integer scaling il faut se résigner au pixel ratio 2:5 pas parfait du profil "Standard PC" : 2:5 x 640x200 = 1280x1000 (auquel cas le 1280x1024 du Belinea 1070 S1 utilise mieux la taille de l'écran). Ou bien on passe en mode interpolé (moins bonne qualité d'image) avec un pixel ratio de (5 /2):6 x 640x200 = 1600x1200 mais sans déformation et qui a l'avantage d'utiliser le même écran qu'avec le profil CGA précédent.
Je vais probablement aller dans cette direction et créer un autre profil dédié pour l'EGA en mode interpolé (soft).
Pour en savoir plus sur ce sujet, voir cet article.
Le mode "Standard PC" du RGBtoHDMI qui est un compromis permettant d'afficher toutes les résolutions du MDA/CGA/EGA sur la plupart des LCDs, utilise en scaling entier pour le CGA et l'EGA un ratio de pixel de respectivement 4:5 pour du 320x200 et de 2:5 pour du 640x200.
2 (x2)/5=0,8 contre 5/6= 0,8333... d'où l'aspect légèrement étiré verticalement de l'image sur Monkey Island en scaling entier (le cadran de la tour de l'horloge n'est pas rond). Sur le scaling interpolé on a du 2,17(x2)/5,13=0,846... un peu plus proche du 5:6 quoique très légèrement écrasé.
Pour un rendu sans aucune déformation sur du LCD, il nous faut donc respecter au plus près ce rapport d'aspect de pixel de 5:6 en multipliant par la résolution de base des anciens programmes.
En CGA, ça fait : 5:6 x 320x200 = 1600x1200... Ca tombe bien, c'est la résolution exacte du Belinea 2080 S1
J'ai donc pour l'occasion créé un profil special CGA 320x200 > 1600x1200 (fichier ci-joint) adapté au integer scaling (sharp) et dont voici les résultats.
Photo de l'écran avec le résumé des infos (on voit d'ailleurs que toute la surface de l'écran est utilisée ) :
Le scaler permet de faire des captures d'écran. Celles-ci rendent mieux compte de l'excellente qualité de l'image sans interpolation. Le rendu réel sur l'écran est vraiment aussi bon que sur la capture
Planet X3 est un jeu récent conçu avec et pour des pixel carrés, donc pour le coup il peut paraître étiré. Mais avec un programme ancien, le rapport est parfaitement adapté. Dans Deluxe Paint II (1988), ont voit que les cercles sont bien ronds.
Juste pour le plaisir des yeux, avec les 4 palettes CGA :
Avoir un aussi bon rendu pour les jeux EGA est plus compliqué car il faudrait une résolution de 5:(6 x2) x 640x200 = 3200x2400. Il existe des écrans avec cette résolution (QUXGA) mais ils sont rares, chers et probablement pas adaptés en terme de réactivité.
Donc si on veut garder la qualité d'image avec le integer scaling il faut se résigner au pixel ratio 2:5 pas parfait du profil "Standard PC" : 2:5 x 640x200 = 1280x1000 (auquel cas le 1280x1024 du Belinea 1070 S1 utilise mieux la taille de l'écran). Ou bien on passe en mode interpolé (moins bonne qualité d'image) avec un pixel ratio de (5 /2):6 x 640x200 = 1600x1200 mais sans déformation et qui a l'avantage d'utiliser le même écran qu'avec le profil CGA précédent.
Je vais probablement aller dans cette direction et créer un autre profil dédié pour l'EGA en mode interpolé (soft).
- Pièces jointes
-
- CGA_320_200.zip
- (275 octets) Téléchargé 95 fois
Re: MDA/CGA/EGA vers... LCD
Merci pour le lien eBay, j'étais en attente sur le forum stardot d'un éventuel nouveau run.
- fneck
- Site Admin
- Messages : 17490
- Inscription : 01 avr. 2007 12:03
- Localisation : Drôme Provençale (26)
- Contact :
Re: MDA/CGA/EGA vers... LCD
Très intéressantes les explications sur les résolutions, taille d'écrans, ratio, pixels...
Merci.
Merci.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
- Papy.G
- Modérateur
- Messages : 3051
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: MDA/CGA/EGA vers... LCD
Tout dépend de tes jeux et sources, personnellement, pour la GameCube, le plus gênant dans l'utilisation d'écran LCD, est la fréquence d'affichage de sortie fixe, et j'ai beau avoir essayé sur toutes sortes d'écrans, même sur un écran de PC "freesync" avec le câble HDMI, les jeux sont injouables en 50Hz, sous peine d'être malade (saccades).
Je n'ai cependant pas testé les modes de sortie 100Hz de la console, je le ferais peut-être à l'occasion, quand j'aurais mis à jour le FW de mon adaptateur HDMI.
Merci pour ce dossier très complet, qui pourra faire gagner un certain temps (et de l'argent) aux collègues qui veulent obtenir un résultat correct.
Je n'ai cependant pas testé les modes de sortie 100Hz de la console, je le ferais peut-être à l'occasion, quand j'aurais mis à jour le FW de mon adaptateur HDMI.
Merci pour ce dossier très complet, qui pourra faire gagner un certain temps (et de l'argent) aux collègues qui veulent obtenir un résultat correct.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Demandez-en plus, ou faites-le vous-même.
Re: MDA/CGA/EGA vers... LCD
Absolument, il n'y a pas UN réglage qui donnera un résultat parfait (i.e. bien scalé) dans tous les cas, surtout avec un LCD.Tout dépend de tes jeux et sources
Un des gros plus du RGBtoHDMI est la gestion de la configuration par profils, qui facilite la bascule en fonction des résolutions source et destination désirées et du programme/jeu utilisé.
Dernière modification par xmamat le 18 janv. 2021 14:59, modifié 1 fois.
Re: MDA/CGA/EGA vers... LCD
Pardon si ma question est stupide mais est-ce que cet upscaler pourrait convertir le signal RGB du CPC en fabriquant un câble sur mesure ?
EDIT: ok j'aurais dû lire le manuel d'abord. D'après la description en italien sur eBay c'est oui.
EDIT: ok j'aurais dû lire le manuel d'abord. D'après la description en italien sur eBay c'est oui.
Dernière modification par Zebulon le 18 janv. 2021 15:04, modifié 1 fois.
Re: MDA/CGA/EGA vers... LCD
Il faut rajouter l'interface analogique pour l'Amstrad CPC. Elle est vendue sur le forum stardot.co.uk mais pas encore sur eBay il me semble.
Re: MDA/CGA/EGA vers... LCD
Merci je vais creuser ça.
Re: MDA/CGA/EGA vers... LCD
Bonjour,
Suite de mes réglages avec le RGBtoHDMI sur de l'EGA : j'utilise cette fois le mode interpolé 4:3 (soft) qui convient à la fois pour l'EGA basse et haute résolution et pour le CGA tout en gardant le bon pixel ratio de 5:6.
L'image est un peu moins précise qu'en integer scaling mais quand même nettement plus qu'avec le MCE2VGA.
EGA mode 0EH 640x200 > LCD 1600x1200 (interpolated soft) :
EGA mode 10H 640x350 > LCD 1600x1200 (interpolated soft) :
Sur Monkey Island le résultat est superbe sans déformation de l'image :
Avec les scanlines activées :
J'ai du faire des photos d'écran car le mode capture ne fonctionne pas correctement en scaling interpolé contrairement au scaling entier.
J'ai joint un fichier avec ma configuration optimisée en EGA/CGA pour une sortie EGA haute-résolution vers un LCD 1600x1200 (à décompresser dans la racine de la carte Micro SD) : il surcharge le mode par défaut "Standard PC". Attention de bien changer le scaling de "Auto/Integer (sharp)" à "Interpolated 4:3 (soft)". Je pense que ça devrait aussi fonctionner avec un LCD 1920x1200 (barres noires sur le coté).
Reste le MDA et l'Hercules qui ne sont pas ma priorité mais si ça intéresse quelqu'un, je peux aussi tester/optimiser les réglages pour ces modes.
Suite de mes réglages avec le RGBtoHDMI sur de l'EGA : j'utilise cette fois le mode interpolé 4:3 (soft) qui convient à la fois pour l'EGA basse et haute résolution et pour le CGA tout en gardant le bon pixel ratio de 5:6.
L'image est un peu moins précise qu'en integer scaling mais quand même nettement plus qu'avec le MCE2VGA.
EGA mode 0EH 640x200 > LCD 1600x1200 (interpolated soft) :
EGA mode 10H 640x350 > LCD 1600x1200 (interpolated soft) :
Sur Monkey Island le résultat est superbe sans déformation de l'image :
Avec les scanlines activées :
J'ai du faire des photos d'écran car le mode capture ne fonctionne pas correctement en scaling interpolé contrairement au scaling entier.
J'ai joint un fichier avec ma configuration optimisée en EGA/CGA pour une sortie EGA haute-résolution vers un LCD 1600x1200 (à décompresser dans la racine de la carte Micro SD) : il surcharge le mode par défaut "Standard PC". Attention de bien changer le scaling de "Auto/Integer (sharp)" à "Interpolated 4:3 (soft)". Je pense que ça devrait aussi fonctionner avec un LCD 1920x1200 (barres noires sur le coté).
Reste le MDA et l'Hercules qui ne sont pas ma priorité mais si ça intéresse quelqu'un, je peux aussi tester/optimiser les réglages pour ces modes.
- Pièces jointes
-
- CGA+EGA.zip
- (1.13 Kio) Téléchargé 102 fois
- Papy.G
- Modérateur
- Messages : 3051
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: MDA/CGA/EGA vers... LCD
J'en reviens au support du 50Hz, les écrans VGA ne supportent pas les fréquences de balayage en-dessous de 56Hz, si l'on veut qu'un affichage 50Hz se fasse sans saccades, peut-être la solution pourrait venir d'un upscaler qui doublerait la fréquence, ainsi, l'écran pourrait être forcé à 100Hz en sortie.
L'un des appareils que tu utilises propose-t'il le doublage de la fréquence?
L'un des appareils que tu utilises propose-t'il le doublage de la fréquence?
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Demandez-en plus, ou faites-le vous-même.
Re: MDA/CGA/EGA vers... LCD
Les résolutions/fréquences verticales de sortie du MCE2VGA sont malheureusement fixes et non configurables avec les boutons (peut-être en bidouillant le firmware) : 720x480@60Hz pour le CGA/EGA lo-res, 640x350@70Hz pour l'EGA hi-res et 720x400@70Hz pour le MDA/Hercules.
Avec le RGBtoHDMI, il est possible de configurer pour sortir du 50 ou 60Hz dans n'importe quelle résolution, voire la même fréquence que la source (passthrough). Bien sûr, il faut que l'écran supporte ces fréquences en entrée pour afficher quelque chose. Mais à priori, il n'y pas moyen de doubler de 50 à 100Hz...
Par contre, il existe bien des LCDs qui supportent le 50Hz direct : c'est le cas du mien (Belinea 2080 S1 capable de faire de 50 à 85Hz en VGA et DVI).
D'après ce que j'ai pu lire sur le web, la sortie des cartes CGA/EGA utilise du 60Hz, et le MDA du 50Hz. Je n'ai pas d'oscilloscope pour tester mes sorties, mais d'après ce qui affiché dans les infos à l'écran, mes fréquences de sortie et d'entrée sont toujours bien alignées.
Test avec la carte IBM MDA (50Hz) :
Avec le RGBtoHDMI, il est possible de configurer pour sortir du 50 ou 60Hz dans n'importe quelle résolution, voire la même fréquence que la source (passthrough). Bien sûr, il faut que l'écran supporte ces fréquences en entrée pour afficher quelque chose. Mais à priori, il n'y pas moyen de doubler de 50 à 100Hz...
Par contre, il existe bien des LCDs qui supportent le 50Hz direct : c'est le cas du mien (Belinea 2080 S1 capable de faire de 50 à 85Hz en VGA et DVI).
D'après ce que j'ai pu lire sur le web, la sortie des cartes CGA/EGA utilise du 60Hz, et le MDA du 50Hz. Je n'ai pas d'oscilloscope pour tester mes sorties, mais d'après ce qui affiché dans les infos à l'écran, mes fréquences de sortie et d'entrée sont toujours bien alignées.
Test avec la carte IBM MDA (50Hz) :
Re: MDA/CGA/EGA vers... LCD
Hello,
Je me suis récemment procuré un OSSC à bon prix et j'ai fais quelques tests avec le CGA2SCART Pro et un câble Peritel :
Je trouve le résultat encore plus net qu'avec le RGBtoHDMI en mode interpolé.
Par contre sur mon LCD 1600x1200, je n'arrive qu'à utiliser les modes Line2x, Line3x et Line4x. Le moniteur est malheureusement hors fréquence en Line5x, ce qui n'est pas tellement étonnant car d'après ce qui affiché sur l'écran de l'OSSC, le nombre de lignes que me sort le CGA/EGA lo-res est 262 (donc x5, ça dépasse 1200).
Du coup, je me retrouve avec des bandes noires verticales et horizontales dans les modes en dessous de Line5x...
J'imagine que pour avoir une image plein écran il aurait fallu que le nombre de lignes de la source soit de 240 (ce qui est plus courant avec les consoles qui sont d'ailleurs davantage destiné à l'OSSC). Mais si quelqu'un qui connait bien cet appareil saurait comment le régler pour afficher du 1600x1200 en plein écran avec ma source, je suis preneur.
A noter que sur ma TV OLED 4K, le mode Line5x fonctionne sans problème :
Je me suis récemment procuré un OSSC à bon prix et j'ai fais quelques tests avec le CGA2SCART Pro et un câble Peritel :
Je trouve le résultat encore plus net qu'avec le RGBtoHDMI en mode interpolé.
Par contre sur mon LCD 1600x1200, je n'arrive qu'à utiliser les modes Line2x, Line3x et Line4x. Le moniteur est malheureusement hors fréquence en Line5x, ce qui n'est pas tellement étonnant car d'après ce qui affiché sur l'écran de l'OSSC, le nombre de lignes que me sort le CGA/EGA lo-res est 262 (donc x5, ça dépasse 1200).
Du coup, je me retrouve avec des bandes noires verticales et horizontales dans les modes en dessous de Line5x...
J'imagine que pour avoir une image plein écran il aurait fallu que le nombre de lignes de la source soit de 240 (ce qui est plus courant avec les consoles qui sont d'ailleurs davantage destiné à l'OSSC). Mais si quelqu'un qui connait bien cet appareil saurait comment le régler pour afficher du 1600x1200 en plein écran avec ma source, je suis preneur.
A noter que sur ma TV OLED 4K, le mode Line5x fonctionne sans problème :