5 votes

Pourquoi la lecture/écriture des cartes mémoire est-elle lente dans les émulateurs PS1 ?

La vitesse de la mémoire flash et des autres supports de stockage s'est considérablement améliorée depuis l'époque de la PS1. Aujourd'hui, certains émulateurs peuvent fournir des vitesses de lecture supérieures à la normale lors du chargement d'un "CD" dans un jeu (par exemple, le PSPEMU intégré de la PS Vita peut le faire). Cependant, d'une manière ou d'une autre, cela n'a pas affecté les vitesses de lecture ou d'écriture d'une carte mémoire PS1, dans tous les émulateurs que j'ai utilisés. Détecter une carte mémoire est lent, l'écrire est lent, la lire est lent - même lorsque le jeu ne recharge pas le monde du jeu mais lit juste quelques chiffres. Compte tenu de la taille minuscule des sauvegardes PS1 par rapport aux normes modernes, elles devraient être lues ou écrites en quelques instants.

Je suis curieux : qu'est-ce qui limite la vitesse des cartes mémoire PS1 dans les émulateurs ?

On a vaguement l'impression que les jeux font de l'électronique de bas niveau avec les cartes, au lieu de déléguer à l'API de la console - l'émulateur doit donc préserver les timings d'origine et ne peut pas détourner les événements avec une approche plus rapide. Si c'est la raison, à quel point cette méthode de communication avec le stockage était-elle répandue à l'époque ? A-t-elle été appliquée à la génération PS2 ou plus tard ?

4voto

RLH Points 3631

Cela a absolument tout à voir avec le timing. Gardez à l'esprit que si la PS1 était avancée pour l'époque, elle était encore assez basique par rapport aux normes actuelles. Les temps de lecture des CD étaient fixes, tout comme les temps d'écriture des cartes mémoire. Cela signifie que si les développeurs le souhaitaient, certaines opérations pouvaient être exécutées ou lancées pendant que certaines opérations de lecture et d'écriture avaient lieu. Les développeurs pouvaient démarrer une écriture sur carte mémoire et savoir exactement combien de cycles CPU il leur faudrait pour la terminer.

En réalité, il y avait probablement un sous-système qui était utilisé pour écrire le bloc de RAM contenant les données sur la carte mémoire. Une fois le processus terminé, une interruption est appelée pour dire à l'unité "écriture sur la carte mémoire, terminée". Si les développeurs savaient que l'écriture de 256 octets dans la RAM de la carte mémoire prenait X cycles, ils pourraient utiliser ces cycles d'arrière-plan pour précharger un stage ou préparer les données de la RAM pour gérer l'interaction du joueur pour la suite du jeu.

En général, la PS1 avait un contrôle de timing très serré. Pour cette raison, les développeurs pouvaient l'utiliser comme un "truc" dans leurs manches pour précharger des données et rendre le jeu plus rapide. L'inconvénient de cette astuce est que, des années plus tard, nous sommes obligés d'émuler des vitesses qui, pour nous, sont lentes.

Mais il y a du caviat ! Apparemment, Sony a en partie trouvé le moyen de dépenser certaines de ces opérations sans casser trop de jeux. Je ne peux pas parler pour la PS3, mais il existe des options pour accélérer les temps de chargement dans la PS2 pour les jeux PS1. Je sais qu'il y a eu des avertissements indiquant que cette fonction pouvait ne pas fonctionner avec tous les jeux, Sony était donc conscient qu'il s'agissait d'une fonction de qualité de vie à utiliser à ses risques et périls. A ma connaissance, la PS2 n'a pas également intégré des opérations de sauvegarde mémoire plus rapides, donc ils étaient définitivement conscients que c'était une fonction qu'ils ne devaient pas modifier (bien que les vitesses d'écriture maximales pour la PS1 aient pu faire partie de cette décision).

Je pense que l'état de l'émulation de la PS1 n'est pas ce qu'il devrait être pour surmonter intelligemment la possibilité d'avoir certains jeux qui ont besoin d'un comportement juste et précis. Mon instinct me dit que si une telle fonction était implémentée dans un émulateur moderne, les développeurs voudraient tester minutieusement la fonction sur les centaines de jeux de la bibliothèque. Il est vrai que cette fonction pourrait être activée par jeu et sauvegardée dans les paramètres de l'utilisateur, mais je pense que ce n'est pas encore une priorité.

Je recommande de faire quelque chose comme cela une demande de fonctionnalité sur GitHub où tout émulateur principal est hébergé. Je suis sûr que les développeurs peuvent vous donner une réponse plus spécifique sur la raison pour laquelle cela est intentionnellement retardé, et les obstacles impliqués pour surmonter le problème dans l'émulateur. Cependant, le fait que cela soit mentionné comme une fonctionnalité qui peut être définie par jeu et qui est considérée comme "expérimentale" pourrait être quelque chose qu'ils essaieraient d'implémenter un jour.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X