Aller au contenu


Photo
- - - - -

Émulation Jeux Ms-Dos Et Résolution


  • Veuillez vous connecter pour répondre
4 réponses à ce sujet

#1 Takhnor

Takhnor

    Soulmate

  • Membres
  • PipPipPipPipPip
  • 1 871 messages

Posté 03/03/2016 - 20:10

Comme beaucoup parmi ceux qui s'essaient aux oldies PC, j'utilise DOSBox comme émulateur MS-DOS, et grâce aux filtres de DOSBox (et d'autres builds produits par la communauté), j'essaie de donner une nouvelle jeunesse à ces jeux.

Autant le dire tout de suite, je n'aime pas les gros pixels mais en même temps je n'aime pas non plus les filtres trop baveux qui hachent l'image et en particulier le texte (bien que quand j'ai découvert DOSBox la première fois - la version 0.63 ou 0.69 je ne sais plus - j'avais l'habitude de mettre du SuperEagle).

 

Après avoir vu des screens d'un shader visant à donner un aperçu plus proche de celui d'un écran cathodique (enfin, il faut quand même admettre que cela s'approche davantage de celui d'un écran de TV) à partir d'un build SVN (celui de Daum), et après avoir lu un article sur Gamasutra, je me suis mis en tête d'essayer de m'approcher le plus possible du rendu de l'époque à partir de ce qu'on a aujourd'hui.

 

Et je me heurte à un problème, celui de la résolution. Car si concernant les jeux sortis après Windows 3.1 (3.11 et 95 surtout, en fait), on a régulièrement un standard : le VGA en 640x480 au minimum (format 4/3), si on regarde ceux sortis avant, il y a plusieurs autres formats, CGA, MCGA, EGA; le VGA sorti durant la deuxième moitié des années 80 s'imposant petit à petit. Là où c'est épineux, c'est qu'on dirait qu'il existe plusieurs résolutions suivant le nombre de couleurs affichées. La résolution la plus courante étant le 320x200 (donc du 8/5, comme le 16/10 pour ceux qui ont oublié leurs fractions :p), d'autres plus exotiques comme le 480x320 (HVGA d'après Wikipedia, format 3/2, ce qui semble être utilisé pour Lords of Midnight: Citadel d'après les captures d'écran au dos de la boîte) et d'autres encore.

 

Je vais m'en tenir à deux résolutions qui ont attiré mon attention : le 640x400 et le 640x480.

C'est assez important, car comme on va le voir dans les captures d'écran que j'ai prises, les images et le texte peuvent se retrouver déformés évidemment, pouvant rendre élancés des personnages trapus.

Le 640x400 dans DOSBox est souvent une simple mise à l'échelle d'un affichage en 320x200, mais parfois certains jeux ont une résolution native de 640x400.

 

J'en viens à ma question après tout ce charabia : quelle est la résolution pour laquelle les développeurs ont développé leur jeu ? Il semble tout à fait probable que certains, pour des économies de puissance de l'ordinateur ou de place, ont pensé leur jeu à une résolution qui sera déformée naturellement par l'écran pour un affichage donné (j'ai régulièrement vu cette logique pour les consoles de jeu).

 

J'ai eu mon premier PC en 1997 avec Windows 95 et un écran 4/3 14 pouces, donc c'est un sujet avec lequel je ne suis pas familier. Est-ce que les écrans PC des années 80 et début 90 étaient tous en 4/3, ou certains suivaient  d'autres formats comme le 3/2 ou le 8/5 ?

 

J'ai pris deux exemples, Lords of Midnight (l'original de 1984 adapté pour PC en 1991, qui semble tirer profit de la déformation 320x200 -> 640x480) et Uncharted Waters II - New Horizons, qui lui est venu me jeter le doute sur la déformation.

 

(j'ai ajouté les captures d'écran avec la retouche par le shader pour donner une idée, d'ailleurs seul gros défaut de ce shader, quand on monte en mise à l'échelle au delà du 640x480, j'ai un point noir pile au milieu - c'est assez discret, mais maintenant je ne vois plus que ça :(, donc j'en reste au fenêtré en 640x480)

 

 

Lords of Midnight (EGA 16 couleurs ?, 1991)

  • Résolution : 640x400, Scaler : normalx2
Spoiler

 

  • Résolution : 640x400, Scaler : hardwarex2, Pixelshader : CRT-geom-curved
Spoiler
  • Résolution : 640x480, Scaler : normalx2
Spoiler
  • Résolution : 640x480, Scaler : hardwarex2, Pixelshader : CRT-geom-curved
Spoiler

 

 

Uncharted Waters II : New Horizons (VGA 256 couleurs, 1994)

  • Résolution : 640x480, Scaler : normalx2
Spoiler

 

Ce qu'on remarque ici, c'est qu'après l'écran titre, l'image est centrée : le jeu est en fait en 640x400 centré avec bandes noires pour faire du 640x480.

  • Résolution : 640x480, Scaler : hardwarex2, Pixelshader : CRT-geom-curved
Spoiler
  • Résolution : 640x480, modifié (Interpolation : aucune)
Spoiler

 

J'ai retouché la première capture de UW2 en supprimant les bandes et déformant manuellement pour obtenir du 640x480. Évidemment, je n'ai pas la version déformée par le shader.

 

À noter concernant UW2 (et peut-être d'autres jeux KOEI ?), il est totalement réfractaire à tout filtre de type Scaler. La seule possibilité de modifier le rendu est de passer par un Shader comme celui que j'ai utilisé plus haut.

 

UW2 semble indiquer que des jeux ont été pensés pour avoir un rendu en 8/5 (320x200 ou 640x400), et non en 4/3 (640x480). Dans le cas présent avec l'avancée de Windows 3.11, même si le jeu est sorti sur MS-DOS, il aurait été adapté pour suivre le format 4/3 tout en conservant le format initial. Je commence à prendre au sérieux les captures d'écran en 3/2 de Citadel.

 

 

 

Donc il faudrait adapter l'affichage au cas par cas ?

 

Ou alors je fais comme si j'étais sur mon PC de 97, en forçant tout en 640x480 au risque d'avoir une image faussée ?

 

 

Oui, j'ai l'art de me créer des soucis là où il n'y en a pas. :D


Modifié par Takhnor, 03/03/2016 - 20:13.

sign_4569.gif

sign_1.jpg

sign_416.jpg

 

"Within cells interlinked."


#2 Riskbreaker

Riskbreaker

    Imiduno

  • Admins
  • 5 691 messages

Posté 03/03/2016 - 20:56

Gros post :)
Précision, avant de parler : je donne énormément dans l'émulation, mais pas dans DOSbox. Pas encore plongé là dedans. 
Néanmoins, les problématiques sont similaires. Étant donné que chaque console a sa résolution propre, qui peut en plus varier selon les jeux. Bref.
 
Concernant ton point noir au milieu, c'est lié à la curvature que fournit le shader crt-geom. Ces shaders sont pensés pour fonctionner en résolution native, et non pas scalée. Du coup, des artefacts apparaissent si tu pousses trop loin. et le point central n'est ni plus ni moins que le point central parfait des courbes. Plus tu vas monter en reso, plus il va grossir. 
Après avoir joué bien longtemps avec cet effet (avec d'autres shaders, bien que Geom soit un des meilleurs), j'ai fini par enlever cette courbe de l'écran. Ça n'a pas de sens sur nos écrans, ça provoque ce bug au centre, et ça ne change strictement rien visuellement au jeu, car pensé à plat. C'est juste pour la nostalgie en somme. Donc adios, problème de point résolu. 
 
Pour le reste, mon conseil est très simple, tu réponds toi-même : tu laisses tout en 480p, comme à l'époque.

Ne t'occupes pas de changer le ratio. Si des jeux en profitaient (quasiment tous les jeux consoles d'ailleurs), c'était aussi le cas du pc. L'image n'est pas tant déformée que ça et ça fait parti de cette nostalgie. Toi-même, tu y jouais comme ça à l'époque, comme nous tous. Après, je comprends la frustration qui en découle, mais au contraire, il faut jouer avec ces contraintes, qui étaient similaires ya 20-30 ans  ;) 
 
Après, vu que tu sembles tatillon ^^  : Vaut mieux bannir les écrans 1080p pour jouer aux émulateurs. 
Ce ne sont pas des multiples de 240 (4,5) et du coup, 1 pixel original = 4,5 pixel sur ces écrans. De ce fait, tu ne peux avoir de rendu parfait, tes images seront toujours tronquées à un endroit, pour recoller les pixels entre eux. C'est très disgracieux. 
Du coup, soit tu joues sur un écran 720p, soit un 1440p soit un 4k. Ce sont tous des multiples de 240. 
C'est valable uniquement si ton émulateur (je ne connais pas DOSbox je rappelle), ne gère pas le scaling avec entiers, comme la plupart des émul. Généralement, ils scalent sur la taille globale de ton écran, soit en 16/9e, soit en 4/3 et des fois dans des proportions exotiques. Si ton émul peut t'afficher ton jeu en scale x4 (donc 1280x960) en plein écran – comme le fait retroarch par exemple – alors c'est un problème reglé. T'auras juste des bandes noires en haut et en bas, mais le scaling sera parfait. 
 
Attention aussi au scaling, ou plutôt à la résolution interne des jeux. Si tu montes trop, tu provoques des pépins et des artefacts. Souvent très très minimes (genre une mini ligne blanche par-ci par-là, mais qui peuvent ternir l'expérience si t'es pointilleux. Rester autour de 2x la réso native est conseillée. 
 
Moi j'ai fait mon shader perso, à force de bidouiller sur des mois entiers. J'ai testé à peu près tous les shaders existants fournis avec retroarch et les émulateurs, et jamais trouvé ce que j'aimais, d'après mes souvenirs. 
Depuis quelques temps, j'ai trouvé mon bonheur et les jeux s'affichent comme je le souhaite. 
 
Exemple avec Mario 64 (bien regarder le HUD en haut de l'écran. Le nombre de vie / étoiles s'affiche parfaitement, pas comme avec une hausse brute de la résolution interne). 
 

Spoiler

 

 

Et sinon, pour terminer, il faut savoir que tout ce qui touche aux shaders n'est qu'une histoire de goûts personnels. Il n'y a aucun shader miracle, aucun shader parfait qui correspond au rendu que toi tu aimes. Tout comme à l'époque, la différence entre les écrans CRT, de l'un à l'autre, était très grand. Il en va de même pour les shaders, il faut juste trouver ce qui nous plait. :)
 



#3 Takhnor

Takhnor

    Soulmate

  • Membres
  • PipPipPipPipPip
  • 1 871 messages

Posté 04/03/2016 - 13:24

Héhé, merci pour toutes ces précisions. :)

 

Concernant le point noir du shader, je m'en doutais, car quand je mettais en plein écran, que ce soit à partir d'une réso 640x400 ou 640x480 (je vais venir directement au troisième point que tu as soulevé), ce point était présent, ça ne se voit pas de loin, mais je n'ai pas vraiment l'habitude de me mettre à une distance éloignée d'un écran d'ordinateur contrairement à un écran TV.

Car oui avec DOSBox, on peut faire du scaling entier (dans la version de base, toujours en 0.74, les scalers dispos sont max 2x ou 3x, sauf si on change la résolution à main, tandis que pour le build SVN Daum - comme d'autres builds - on peut aller jusqu'à 4x ou 5x).

Donc de base j'avais déjà anticipé en mettant en 1280x800 ou 1280x960 pour du plein écran. (l'écran de ma tour est un vieil 19 pouces en 5/4, en 1280x1024 : oui je sais je ne suis pas à la page des écrans larges, je suis un peu chiant - un peu, seulement ?  :ph34r: - je veux toujours avoir une largeur d'écran supérieure quand j'en change, donc selon mes calculs il me faudrait un écran 24 pouces en 16/9 ou du 23 pouces en 16/10, donc question prix, ce n'est pas encore à l'ordre du jour...). En définitive, les bandes noires en 1280x1024 sont plus discrètes qu'elles pourraient l'être en 1080p, ou au pire je joue en fenêtré agrandi.

 

Le build SVN Daum apporte des shaders en plus des scalers "internes" de DOSBox (je ne sais pas trop comment les appeler, ces derniers ne sont pas modifiables, contrairement aux shaders qui sont comme des plugins). Et j'avoue que je n'étais pas allé très loin dans l'exploration des shaders (il y en a qui reproduisent les scalers, mais donc ici on peut les customiser), et j'avais été bluffé par celui du CRT-geom (la faute aussi au fait que j'ai revu des magazines d'époque avec photos d'écrans il y a peu), donc oui la nostalgie a frappé. ;)

Mais, j'avoue que l'aspect fusiforme des lignes qui sont flagrantes sur des jeux à faible nombre de couleurs affichées (comme pour Lords of Midnight) donne une drôle d'impression. Sur des jeux en 256 couleurs ça peut passer, noyées dans les détails, mais sur des jeux en 16 couleurs, voire moins...  :think: 

 

Cette problématique du recours aux shaders m'est apparue quand j'ai voulu appliquer des scanlines. D'ailleurs, bien que depuis quelques années quand j'essayais un jeu MS-DOS, je me détachais peu à peu des filtres un peu bourrins comme hq2x ou supereagle, je me posais des questions sur les scanlines, et c'étaient tes posts sur Blogendra qui m'ont poussé à adopter définitivement ce genre de filtres, donc justement ton exemple de Mario 64 est très bon. Avec SSF, je mets en scanlines, de même pour Kega Fusion (à 50%) que je préfère à Mednafen (Mednafen est connu pour poser des failles de sécurité sur Linux concernant les statesaves, donc j'évite) et j'attends le support du MegaCD dans la nouvelle version de Gens/GS +.

Donc quand j'ai voulu appliquer les scanlines à DOSBox, au début, je trouvais ça bien, car bien qu'assombrissant un peu l'image, j'obtenais un rendu similaire à celui de SSF. Sauf que dans la plupart des jeux qui nécessitent vraiment un tel filtre (ceux qui sont plus vieux que Windows 95), la résolution de base est en 320x200 (ou 640x400), donc après application du filtre, avec ou sans mise à l'échelle, on a une image en 640x400. Or si je force le rendu en 640x480 avec les scanlines (quel que soit le filtre, scanx2, tvx2 ou rgbx2), le rendu est vraiment dégueulasse. Enfin, c'est mon avis.  :ph34r: 

 

D'où l'utilisation du shader qui se mettant par dessus donnait un rendu plus convenable.

Je pense qu'il va falloir que je teste les shaders de scanlines plus classiques et que je les modifie.

 

Mais je me pose toujours la question sur le rendu voulu par certains développeurs (cf l'exemple de UW2), car j'ai vu que pour la version FM Towns, il était également d'une image centrée (enfin pas tout à fait) avec des décorations en lieu et place des bandes noires de la version DOS. Et pour d'autres jeux, adaptés sur X68k, on a des décorations supplémentaires, car la résolution est encore plus grande. Cela se comprend, quand on a de multiples machines avec différents supports graphiques et résolutions qui vont avec, c'est plus simple pour un développeur de centrer la zone de jeu affichée et de rajouter des décorations ou du vide en fonction de l'ordinateur concerné. Ça me fait penser aux portages de jeux sur Amstrad et ZX. D'ailleurs la version PC de Lords of Midnight a des zones de vide par rapport à la version ZX Spectrum (comblé par la couleur du terrain en mode exploration ou par la couleur principale pour les autres modes).

 

Enfin au final, ma pensée c'est "vive le VGA"  :lol: 


sign_4569.gif

sign_1.jpg

sign_416.jpg

 

"Within cells interlinked."


#4 Riskbreaker

Riskbreaker

    Imiduno

  • Admins
  • 5 691 messages

Posté 04/03/2016 - 14:00

Le problème des shaders, c'est qu'ils varient trop d'un émulateur à un autre. 
Certains comme DOSBox font l'effet de proposer de bons shaders, comme CRT-Geom ou CRT-Lottes, d'autres n'ont que des shaders ripoux embarqués, bien inférieurs en qualité. Un shader CRT, c'est pas uniquement des scanlines ajoutés, il y a pas mal de calculs derrières pour rendre l'image un peu plus floue, déformée pour coller aux scanlines, parfois un peu d'aberration chromatique propre aux TV de l'époque, etc, etc. C'est relativement complexe.

 

Mon problème, c'était justement ça : avoir un unique shader, reproduisant UN SEUL type d'écran, sur lequel je vais jouer à tous mes oldies. 

J'ai réussi avec SweetFX (c'est ce qu'on voit avec mario 64 là). Ce n'est donc pas embarqué dans l'émulateur, mais ajouté par dessus par sweetFx. Assez pratique car j'ai juste à coller le dossier dans le jeu / émul que je veux et pouf, appliqué direct. Super easy. 

 

Le rendu pour les consoles est j'avoue bien plus simple à aborder que pour les PC. 

Les PC avaient des écrans CRT, c'est clair, mais la qualité était déjà bien différente des écrans TV de l'époque. La résolution déjà bien supérieure, le rendu plus net... 

 

Le top, dans les deux cas, pour les oldies, ce serait d'avoir un écran CRT d'époque, dédié à ça. Là, plus de problème de shader, l'écran le fournit tout seul :p

Sans compter qu'ils enlèvent le défaut majeur des écrans LCD 60Hz qu'on a actuellement : l'input lag (t'as pas de lag lié à la V-Sync sur CRT, ni de tearing). Ya que les écrans à haut fréquence et g-sync (permettant de s'adapter à la fréquence du jeu) qui peuvent gérer ça actuellement. 

Bref, autre sujet. 

 

Du coup, la conclusion : soit tu fais des concessions, soit si t'es ultra perfectionniste et prêt à garder chez toi ces monstres d'écrans, tu prends des CRT ;)



#5 Takhnor

Takhnor

    Soulmate

  • Membres
  • PipPipPipPipPip
  • 1 871 messages

Posté 04/03/2016 - 19:03

Oh oui SweetFX ça j'en ai pas mal entendu parler, malheureusement, c'est du Windows only. :p

 

Déjà niveau émulateur, j'ai une sacrée liste, j'utilise Wine pour lancer la version Windows de DOSBox SVN Daum (j'ai essayé plusieurs fois de compiler sous Fedora, mais il y a plein de bibliothèques qui ne correspondent pas, j'ai ajouté des #include .. dans certains fichiers *.h, mais j'ai abandonné, trop de bordel  :lol:  ). Donc si en plus je lance Wine pour lancer SweetFX...  :updown:

 

En effet, la meilleure option serait de monter un ordinateur dédié au retrogaming PC, avec Windows 98 SE (non pas le ME !!!  :mad:), pour le support USB, plus pratique pour le transfert de données (sauvegardes en particulier). De plus, DOSBox est limité en puissance par le CPU, genre au max pour un i5, on aurait une émulation d'un PII 300MHz.

Pour les jeux japonais, je n'ai toujours pas de Win98SE japonais (la version fr n'a pas l'intégration des langues asiatiques, seul l'IME est disponible pour IE ou pour MSOffice, alors le mieux que j'ai pu trouver c'est d'utiliser WinXP via une machine virtuelle).

J'ai toujours à disposition une machine-test, un vieux ordinateur portable de 2001, que j'ai rétrogradé en Win98SE (il était vendu avec WinXP avec seulement 256Mb de ram...), mais retour case départ : l'écran n'est évidemment pas un CRT. ;)


sign_4569.gif

sign_1.jpg

sign_416.jpg

 

"Within cells interlinked."





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s) et 0 utilisateur(s) anonyme(s)