Gamoover

Vous aimez GAMOOVER ? Vous avez trouvé la perle rare grâce à notre forum ?
Alors pourquoi pas nous soutenir en effectuant un petit don Paypal sur : contribution@gamoover.net
C'est peut être un détail pour vous, mais nous, ça nous aiderait beaucoup !

Simuler du 15 KHz & 24 KHz sur écran 31 KHz

Démarré par Saturnin, Jeudi 24 Août 2023, 10:17:11 AM

Saturnin

Salut à tous, pour nourrir ma Naomi Universal Cabinet avec différents jeux j'ai branché un PC en VGA qui sort uniquement du 640x480 à 60Hz
J'ai fixé la résolution dans le marbre grâce au super soft Custom Resolution Utility afin d'être sûr de ne pas envoyer n'importe quoi à ma platine :angel:

Tout fonctionne sans problème et c'est très bien pour les jeux Naomi, Dreamcast, Atomiswave  (avec Flycast), les jeux LaserDisc (avec Hypseus que je trouve mieux que ce bon vieux Daphne) et même certains jeux "modernes" comme Ultra Street Fighter 4 ou Virtua Tennis 4 ^-

Mais c'est moins simple c'est pour les jeux 15 KHz et 24 KHz :-[

Pour des jeux Neo-Geo comme Metal Slug ou KOF'98 ayant une résolution de 304x224 je me retrouve avec une image en 608x448 et des bordures noires vu que j'active l'Integer Scaling mais une fois l'image recentrée sur le moniteur je trouve le rendu vraiment très bon avec des scanlines 8)

Là où c'est plus compliqué c'est pour des résolutions qui ne rentrent pas vraiment dans du 640x480 comme le 384x224 du CPS-2 ou le 400x254 d'un NBA Jam ou d'un Mortal Kombat 3 ;D

Si je désactive l'Integer Scaling je me retrouve avec des pixels mutilés que je peux camoufler avec des filtres mais ça donne un effet flou :-\

Pour régler le problème j'ai entendu parler de doublement de la résolution verticale qui permet d'envoyer du 384x448 (qui apparemment équivaudrait à du 31 KHz) pour les jeux 384x224, de "super-resolutions" avec du 1280x480 ou 2560x480, de fréquences doublées (240p à 120Hz) mais je dois bien avouer que je nage un peu dans la semoule (ne sachant pas comment faire les calculs et n'ayant pas envie de cramer ma platine en faisant n'importe quoi :( )

Je suis donc tout ouïe à vos précieux conseils <:)

njz3

#1
Je n'ai pas ta solution, mais je peux commenter.

Alors déjà pour ne pas cramer ta platine en balancant autre chose que du 31kHz, je te propose d'investir dans un VideoAmp ;-)
Ensuite pour le mode vsync à 120Hz, cela ne marchera probablement pas sur ton écran car cela double la fréquence verticale, ce que ton chassis ne va probablement pas savoir gérer. C'est plutôt réservé pour les moniteurs PC VGA qui montent haut en fréquence de rafraichissement.
Enfin pour ce qui est des résolutions super larges (appelées faussement "super-resolutions" en anglais, alors qu'on devrait dire "superwide") qui sont des multiples presque entiers des résolutions horizontales, c'est à la fois pour que ta carte graphique puisse générer une pixel clock assez haute et ne pas "crasher" lamentablement, et aussi pour essayer de caser au plus propre du scaling entier de pixels horizontaux.

Pour tes histoires de résolutions un peu étranges comme le 384x224p, qui rentre mal dans du 640x480p@60Hz, essai par exemple de générer avec CRU une résolution superwide en 31kHz comme du (384x5)x480p c'est à dire 1920x480p, et de jouer sur les fréquences verticales et pixel clock pour rester à 31kHz (par exemple 61 ou 62Hz). Comme cela tu pourras jouer à pratiquement tous tes jeux en 200p-240p sans changer de résolution et uniquement en stretchant l'image horizontalement dans tes emulateurs.
Certains jeux auront des multiples de pixel entiers pour l'horizontale, d'autre en fraction mais comme le tube c'est de l'analogique tu ne verras pas la différence à l'oeil entre pile "4 pixels" et 4,5 pixels.

Pour le 400x254, c'est plus compliqué car il faut en plus augmenter le nombre de lignes verticales, ce qui est faisable par exemple en mettant du 800x508p en 59Hz ou moins.
Donc si tu veux tout pouvoir caser sans changer de résolution à chaque fois, peut etre qu'un truc comme du 1920x508p@59Hz peut te convenir.
Ou alors tu rajoutes deux ou trois résolutions disponibles pour ton écran, et tu utilises GroovyMAME qui sait basculer vers le mode d'affichage le plus proche de ton jeu.


Saturnin

Merci beaucoup pour tes explications @njz3 ça permet de dissiper un peu la brume <:)
Pour le VideoAmp je me tâtais, là je n'ai plus de doute sur sa nécessité ;)

Je vais faire quelques tests avec CRU (le but de l'opération c'est bien de s'assurer que ma CG, un Intel HD Graphics 4600, acceptera de sortir le signal ?), au pire je taperais un out of range sur mon vieux LCD avec entrée VGA, je vais bind un raccourci clavier pour appeler QRes à la rescousse si besoin p=)

Pas bête de mettre GroovyMAME pour switcher automatiquement sur la fréquence la plus appropriée à un jeu, ça évite de tout faire à la main et je suppose qu'il rebascule sur la résolution de Windows lorsqu'il se ferme.

Au niveau des maths, pour calculer les fréquences il existe un lien sur le forum avec les formules ? Ou peut être un tableau avec les différentes résolutions 31 KHz avec un taux de rafraîchissement proche de 60 Hz ?
C'est le fait d'abaisser légèrement le taux de rafraîchissement qui permet de gagner quelques lignes verticales ?

Je vais arrêter là avec toutes mes questions, un très grand merci pour tes précieux conseils <:)

njz3

Les formules de calcul sont assez compliquées.
Par exemple pour le mode CVT (que tu as dans CRU), tu peux trouver différentes implémentations sur le net, et elles ne donnent pas toujours le même résultat.
Moi je me suis basé là dessus :
https://github.com/kevinlekiller/cvt_modeline_calculator_12/tree/master

Je n'ai pas de recette miracle, c'est plus par expérience.
Au final, en tatonnant avec CRU (ou le videoamp qui contient une calculatrice pour les timings), tu vas arriver à trouver des modelines qui marchent et qui répondent à tes besoins.

Saturnin

Si même une tête comme toi trouve les calculs compliqués je vais plutôt retrouver les fréquences par empirisme avec ton lien, ce sera plus simple :D

Surtout qu'il faut aussi prendre les comptes les problèmes liés à ce que certaines cartes graphiques refusent de sortir.

Merci pour ton temps et tes explications ^-

Saturnin

#5
En cherchant à lister les différentes résolutions qu'on retrouve en Arcade je suis tombé sur ce blog : https://pcbjunkie.net/index.php/2021/01/22/arcade-game-resolutions/

L'auteur y a listé les résolutions les plus populaires, en Yoko (Horizontal) on a donc :
  • 256x224
  • 320x224
  • 384x224
  • 320x240
  • 256x240
  • 288x224
  • 304x224
  • 336x240
  • 384x240
  • 512x240
  • 320x232
  • 256x480
  • 256x256
  • 704x480
  • 384x256
  • 480x480
  • 240x224
  • 640x240
  • 512x224
  • 400x254
  • 512x480
  • 352x240
  • 320x416
  • 256x192
  • 640x480
  • 512x384
  • 292x240
  • 512x400
  • 248x256
  • 512x288
  • 240x240
  • 638x240
  • 512x256
  • 448x224
  • 496x384
  • 432x224
  • 256x232
  • 508x384
  • 500x384
  • 240x192
  • 384x255

et en Tate (Vertical)
  • 224x256
  • 224x288
  • 240x256
  • 240x320
  • 224x240
  • 224x320
  • 240x240
  • 224x384
  • 240x384
  • 248x256
  • 192x240
  • 192x256
  • 256x256
  • 208x248
  • 384x512
  • 224x272
  • 224x280
  • 216x288

en Tate je rajouterai le 480x640 qu'on retrouve par exemple sur Ikaruga (système Sega NAOMI)