Bonjour à tous les lecteurs!
Je continue le thème de l'émulateur logiciel pour PlayStation 2 et PlayStation Portable - Omega Red. Plus de détails:
J'ai écrit cette publication dans le cadre de l'ajout d'un émulateur logiciel pour la PlayStation 1.
Bienvenue à Kat.
Comme son titre l'indique, cet article présente le résultat de mes recherches sur l'intégration de l'émulateur PlayStation PCSX-Reloaded. L'idée d'ajouter la prise en charge de l'émulation de la première ligne de console de jeu PlayStation est logique, mais lorsque j'ai essayé de l'implémenter, il y avait un problème - la version OpenSource a environ 15 ans, qui a cessé d'être prise en charge par la communauté et l'intégration dans le projet avec les technologies DirectX11 et WPF a posé un vrai problème. La version du rendu vidéo est présentée sous la forme d'une implémentation logicielle, et après avoir créé l'image finale dans la mémoire système, ce résultat est copié dans la mémoire vidéo DirectX11. À première vue, une telle solution ne semble pas efficace, mais elle permet d'utiliser le code déjà débogué du logiciel de rendu, et pour la première version c'est plus qu'une solution adaptée.
De plus, j'ai ajouté un certain nombre de fonctions pour la compatibilité avec PCSX-Reloaded:
- Vibration visuelle - le contrôleur de jeu «Dualshock» pour la gamme de consoles de jeu PlayStation possède la fonctionnalité de «retour d'information» pour une immersion plus profonde du processus de jeu. L'émulateur Omega Red prend en charge une fonction similaire pour un contrôleur de jeu externe, mais le «retour de retour» pour l'écran tactile est toujours hors du domaine de la fiction. Cependant, en recherchant le code PCSX-Reloaded, je suis tombé sur un pointeur vers une fonction de rappel de l'émulateur du contrôleur de jeu vers le rendu graphique. L'idée d'afficher un «retour en arrière» par transformation visuelle de l'image est divertissante et j'ai décidé de l'implémenter dans mon projet.
- Carte mémoire partagée - le projet original Omega Red crée une carte mémoire pour le jeu basée sur le numéro de série unique du disque de jeu, ce qui permet d'éviter l'écrasement d'un jeu à partir de la session de jeu d'un autre jeu. Cette technique fonctionne pour les jeux PlayStation 2 qui occupent un DVD, mais dans le cas des jeux PlayStation 1, il y a un problème de transfert de la sauvegarde d'une session de jeu sur un disque vers une session de jeu sur un autre disque de jeu - les jeux sur PlayStation 1 peuvent occuper deux disques ou plus. Pour résoudre ce problème, j'ai ajouté une carte mémoire partagée.
En plus des exigences de compatibilité, j'ai ajouté plusieurs améliorations générales, notamment:
- Sélection du débit vidéo pour l'enregistrement vidéo du gameplay:
Sélection de la taille du fichier d'enregistrement vidéo cible:
- Séparation du BIOS et des disques de jeu en groupes pour PlayStation 1, PlayStation 2 et PlayStation Portable.
- Affichez le nom du BIOS et du disque de jeu actuels dans le nom des sections correspondantes.
La démonstration des jeux pour les trois plates-formes peut être vue dans la démo:
Actuellement, le programme est disponible sur:
Omega Red et est présenté sur GitHub:
OmegaRed .