les forums de Grospixels
 
Bienvenue sur le forum de Grospixels : [ S'Enregistrer ]
Déjà inscrit ? [ Connexion ]
 
retour sur le site
rechercher
Index du Forum » » Emulation » » L’overcloking d’un CPU de console émulee : comment ça marche ?
9 messages • page
1
Auteur L’overcloking d’un CPU de console émulee : comment ça marche ?
David
Glaçon du sentiment


Joue à Forza Horizon 3

Inscrit : Mar 17, 2002
Messages : 10174
De : Lille, en l'an 3000.

Hors ligne
Posté le: 2021-08-31 20:47
Duckstation étant dispo sur Xbox Series X, je profite des possibilités de ce superbe émulateur pour améliorer la qualité technique des jeux PlayStation auxquels je joue.

Deux points m’intéressent particulièrement.

Le premier, c’est augmenter la définition graphique des jeux en 3D. Passer d’une résolution de 256x224 à 3840x2060 constitue une véritable métamorphose. La 3D de la PlayStation subit une telle cure de jouvence qu’elle ne se réduit plus à une bouillie de pixels : le moindre détail d’un objet apparaît enfin dans toute sa splendeur. Magique.

La seconde, c’est booster la cadence du CPU d’origine pour lui permettre d’augmenter la fréquence d’affichage de l’image. Et c’est là que j’ai besoin de vos lumières.

De façon très naïve, je pensais qu’en augmentant la vitesse d’un CPU par deux, on lui permettait, en gros, d’afficher deux fois plus d’images par seconde *sans augmenter pour autant la vitesse de déroulement du jeu*.

Sauf que non. Ou du moins, pas tout le temps.

Exemple : dans Final Fantasy 9, qui plafonne à 15/20 FPS, je comptais sur l’ému pour donner un peu de fluidité aux combats. Hélas, l’overclocking du CPU accélère *aussi* la vitesse du jeu, rendant ce dernier beaucoup trop rapide.

A contrario, dans Chrono Cross, l’overclocking fait exactement ce que j’attends de lui : faire tourner le jeu en 60 FPS *et* conserver la vitesse d’origine. Le résultat est franchement époustouflant.

Ma question : pourquoi cette différence de résultats entre ces deux jeux ? Et existe-t-il un moyen d’atteindre le résultat d’un Chrono Cross dans toutes les productions PSOne (en usant, peut-être, d’une option que j’aurais ratée dans mes émulateurs ?)

Merci pour vos éclairages, et désolé pour la question de noob.

  Voir le site web de David
RainMakeR
Chef de Rubrique Nécrologique
Score au grosquiz
1035015 pts.

Joue à Re5, Actraiser Renaissance, Luigi mansion

Inscrit : Apr 01, 2003
Messages : 30566
De : Toulouse

Hors ligne
Posté le: 2021-09-01 00:05
J'ai jamais compris comment on peut passer de 256x224 à 3840x2060. Ou alors t'as une IA qui invente des elements de decors ?

POur ta question sur la vitesse des jeux, si tu me permets d'emettre qui doit pas etre loin de la vérité, j'ai envie de te répondre warcraft 2.

J'avais lancé le jeu sur un pc récent quand je m'etais lancé dans le retro. Et le jeu était injouable car comme tu le decris ca allait beaucoup trop vite. A l'epoque j'avais même installé un logiciel pour ralentir mon pc, ca marchait mais ca ralentissait vraiment mon pc et c'est pas jouable...

Je pense que sur certains jeux, ils doivent se caler sur la frequence du CPU pour organiser les taches. Du coup quand tu augmentes la frequence, y'a plus de taches qui passent, et donc tu augmentes tout d'un coup.
Genre par exemple, tu dis sur un cycle de 1", t'as 2 raffraichissements d'images. Et dans le moteur tu dis que ton perso avance à chaque changement d'image.
Si au lieu d'avoir un cycle d'1" il dure 1/2 ou moins, ton perso va tracer comme un ane ^^

Ce qui m'etonne c'est que t'ais pas des jeux qui ne bougent pas même si tu augmente le CPU.
Il doit bien y'avoir des gens qui ont du definir un framerate en dur pour ne pas avoir à gerer quand le cpu est à bloc ou moins occupé ...


Wild est dans le milieu, je pense qu'il pourra nous eclairer de ses lumieres
_________________

Image


inFiniteRunN3rd
Pixel de bonne taille



Inscrit : Sep 07, 2014
Messages : 330

Hors ligne
Posté le: 2021-09-01 01:10   [ Edité le: 2021-09-01 01:24 ]
Comme l'indique Rain, cela doit dépendre comment est codé le jeu.
Si le framerate est fixe (15 à 20 FPS, 30 FPS etc) : le rendu sera accéléré car augmenter la vitesse d'horloge fera aussi augmenter la vitesse du jeu.
Si le framerate est dynamique : augmenter la vitesse d'horloge permettra de produire plus d'image par seconde sans augmenter la vitesse du jeu.

Citation :
Le 2021-09-01 00:05, RainMakeR a écrit :
J'ai jamais compris comment on peut passer de 256x224 à 3840x2060. Ou alors t'as une IA qui invente des elements de decors ?


Non ce n'est pas une IA qui entre en jeu.

La résolution interne du jeu est multipliée et ce sont principalement les élément 3D qui en bénéficient.
Ce sont après tout des élément de tracé géométrique calculé en temps réel, ils peuvent bénéficier de la montée en résolution de la caméra servant a la rasterisation de l'image 3D en 2D.

Les éléments fixes (pré rendus) ne bénéficient pas de ce traitement et gardent leur rendu (pixelisé en haute définition).
C'est ici que peut intervenir une IA pour améliorer le rendu de ces éléments (ex : plusieurs assets dans les 3 jeux Mario de Super Mario 3D All Stars, le Moguri mod pour FF IX et le ReMako mod pour OG FF7).

Wild_Cat
Anarchy in the UK


Score au grosquiz
0031906 pts.

Joue à MusicMan Sterling 5

Inscrit : May 01, 2002
Messages : 11115
De : Laval, de l'autre côté du pont

Hors ligne
Posté le: 2021-09-01 03:14   [ Edité le: 2021-09-01 03:14 ]
Citation :
Le 2021-08-31 20:47, David a écrit :

Ma question : pourquoi cette différence de résultats entre ces deux jeux ?


Il y a (pour simplifier) deux façons de gérer le temps dans un jeu:

1. Dans FF9, la logique de jeu est basée sur les frames: il a été programmé en partant du principe que comme il tourne à 20fps, une frame correspond à 50ms (1/20s). Donc chaque fois que le jeu commence à dessiner une frame, il "sait" que 50ms se sont passées depuis la frame précédente. Il fait donc tourner sa logique en conséquence: par exemple, les personnages courent à X pixels [par frame, donc à 20*X pixels par seconde. Si tu fais tourner le jeu à 60fps au lieu de 20, les personnages courent toujours à X pixels par frame, donc à 60*X pixels par seconde: tout va 3 fois plus vite. Lorsque la console rame, le jeu ralentit.

2. Dans Chrono Cross, la logique de jeu est basée sur une horloge: il a été programmé en partant du principe qu'il ne sait pas à quel framerate il va s'afficher. Donc chaque fois que le jeu commence à dessiner une frame, il demande à la console combien de temps s'est écoulé depuis la frame précédente, puis il utilise ce délai pour faire tourner sa logique. Par exemple, les personnages courent à Y pixels par seconde. Si le jeu tourne à 20fps, les personnages courent à Y/20 pixels par frame. Si le jeu tourne à 60fps, ils courent à Y/60 pixels par frame: c'est 3 fois plus fluide mais ça va toujours à la même vitesse. Lorsque la console rame, le jeu saccade.


La méthode 1 est plus simple, mais elle ne fonctionne correctement que si le framerate est fixe et connu d'avance. C'est comme ça que fonctionnent 99% des jeux sur consoles 8 et 16 bits. Elle a été très longtemps privilégiée par les développeurs japonais, qui ne développaient que sur consoles (donc sur un hardware fixe, donc aux performances connues d'avance). Il a fallu attendre que les développeurs japonais se rendent compte de l'existence du marché PC, vers la fin des années 2000, pour que la tendance s'inverse. (mais même sur un jeu comme Dark Souls, les calculs de durabilité des armes dépendent du framerate -- les armes s'usent 2 fois plus vite à 60fps qu'à 30)

Autre note: il existe une troisième méthode, qui consiste à désolidariser la logique de jeu de l'affichage. On fait tourner la logique à 60 FPS (fixes -- en utilisant une horloge pour s'assurer qu'on ne va pas trop vite) et on affiche quand on peut (des fois c'est plus lent, d'autres fois c'est plus rapide). C'est plus compliqué mais beaucoup plus flexible.

Citation :

Et existe-t-il un moyen d’atteindre le résultat d’un Chrono Cross dans toutes les productions PSOne (en usant, peut-être, d’une option que j’aurais ratée dans mes émulateurs ?)


Pas sans modifier le jeu, non.


EDIT: en ce qui concerne la résolution, InfiniteRun3rd a déjà répondu correctement.
_________________

https://twitter.com/MaxNoelBass
https://www.youtube.com/c/TheTiberianSons


Kaede
Pixel visible depuis la Lune


Inscrit : Mar 06, 2002
Messages : 5125

Hors ligne
Posté le: 2021-09-01 08:03   [ Edité le: 2021-09-01 13:03 ]
Concernant le framerate : https://www.grospixels.com/site/animation1.php, notamment la section "Le ralenti, c'est mal"
Et pour ceux qui veulent vraiment des maths et surtout du code, cet article 100% orienté technique est vraiment pas mal : https://gafferongames.com/post/fix_your_timestep/

Overclocker une machine émulée, c'est un peu comme overclocker ton PC en utilisation courante. Les programmes s'exécutent plus vite, certains en tirent vraiment parti, d'autres (un jeu pour lequel la vsync fait office de frame limiter, et qui s'exécute déjà à 30 ou 60fps constants), non. Certains programmes temps réel le gèrent bien (plus de frames par seconde), d'autres mal (accélération de tout). Bien sûr, les PC étant modulaires, il n'y a quasiment pas de programmes PC qui le gèrent mal, mais c'est le cas de certaines adaptation consoles "bloquées" à 60fps et qui s'exécutent plus vite si on veut augmenter ce framerate, par exemple.

Je ne connais pas les détails, mais je pense que la plupart des systèmes, même assez vieux, embarquent une vraie horloge temps réel, qui est indépendante de la fréquence du CPU (et à laquelle les émulateurs ne touchent pas quand tu overclockes le CPU).
Avec un émulateur, c'est la vitesse d'exécution de l'émulateur lui-même qui doit commander cette horloge temps réel. Si tu utilises la fonction fast forward de l'émulateur pour que 10 secondes de jeu soient exécutées en 1 seconde de temps réel dans la vraie vie, alors la console doit croire qu'il s'est passé 10 secondes en réalité
En plus de cette horloge tu as bien sûr la fréquence d'affichage, connue à l'avance sur console, dont l'intêret est expliquée dans l'article

David
Glaçon du sentiment


Joue à Forza Horizon 3

Inscrit : Mar 17, 2002
Messages : 10174
De : Lille, en l'an 3000.

Hors ligne
Posté le: 2021-09-04 13:20
Merci beaucoup pour vos explications, les gars ! Il faudrait donc re-programmer en partie FF9 pour pouvoir en profiter en 60 fps (quid du "remake" HD sorti en numérique il y a quelques années sur PS4/Xbox One ?)

  Voir le site web de David
RainMakeR
Chef de Rubrique Nécrologique
Score au grosquiz
1035015 pts.

Joue à Re5, Actraiser Renaissance, Luigi mansion

Inscrit : Apr 01, 2003
Messages : 30566
De : Toulouse

Hors ligne
Posté le: 2021-09-04 14:31
Reprogrammer oui certainement, mais pas entierement, en séparant le calcul moteur/affichage et en virant tous les trucs en dur ca peut passer

Sinon tu leurres le jeu en bricolant un faux proc qui repond aux instructions
_________________

Image


Kaede
Pixel visible depuis la Lune


Inscrit : Mar 06, 2002
Messages : 5125

Hors ligne
Posté le: 2021-09-05 09:25   [ Edité le: 2021-09-05 09:31 ]
Citation :
Le 2021-09-04 13:20, David a écrit :
Il faudrait donc re-programmer en partie FF9 pour pouvoir en profiter en 60 fps

Malheureusement !

Citation :
Le 2021-09-04 13:20, David a écrit :
(quid du "remake" HD sorti en numérique il y a quelques années sur PS4/Xbox One ?)

Je ne sais pas, il rame ce remake, non, justement ?
Les devs "autorisés" (re-sorties / remakes officiels) ont parfois accès au code source du jeu, ce qui facilite énormément la compréhension du code et sa modification. Ceci étant, les remakes sont loin de faire tous sauter ce type de limitations techniques, parce que c'est du travail en +, alors qu'augmenter la résolution, par exemple, ne demande pour ainsi dire aucun travail supplémentaire vu que c'est déjà pris en charge en standard en émulation.

Citation :
Le 2021-09-04 14:31, RainMakeR a écrit :
Sinon tu leurres le jeu en bricolant un faux proc qui repond aux instructions

Un émulateur, quoi ?

RainMakeR
Chef de Rubrique Nécrologique
Score au grosquiz
1035015 pts.

Joue à Re5, Actraiser Renaissance, Luigi mansion

Inscrit : Apr 01, 2003
Messages : 30566
De : Toulouse

Hors ligne
Posté le: 2021-09-05 14:37
pour moi l'emu c'est la solution complete là c'est un genre d'adaptateur

Ce qui m'etonnera toujours c'est que les gens qui font les remakes n'ont pas le code de base, decompiler ou devoir refaire tout à partir du jeu en testant tout je trouve ca debile. T'aura jamais un jeu 100% fidele
_________________

Image



Index du Forum » » Emulation » » L’overcloking d’un CPU de console émulee : comment ça marche ?

9 messages • page
1




Forum phpBB modifié par www.grospixels.com (© 2011 Grospixels)