les forums de Grospixels
 
Bienvenue sur le forum de Grospixels : [ S'Enregistrer ]
Déjà inscrit ? [ Connexion ]
 
retour sur le site
rechercher
Index du Forum » » Groblogs » » Groblog RobertGlucose : Intégration d'émulateurs dans le client Steam
11 messages • page
1
Auteur Groblog RobertGlucose : Intégration d'émulateurs dans le client Steam
RobertGlucose
Pixel monstrueux



Inscrit : Feb 06, 2005
Messages : 2609

Hors ligne
Posté le: 2013-07-28 11:34   [ Edité le: 2013-08-05 21:18 ]
Ma lubie du moment est d'intégrer le plus élégamment possible mes émulateurs dans le client Steam.

Il existe plusieurs front-ends graphiques ou gestionnaires de ROMs à vocation universelle, comme GameEx, qui ont des fonctionnalités plus avancées qu'un simple raccourci, mais l'idée de Steam est de centraliser tous les jeux, modernes et rétros, au sein d'une même interface.

Quand je parle d'intégration élégante, je veux dire au moins un raccourci séparé par jeu, avec une jolie icône dédiée faite pour l'occasion, en mode de visualisation "grille".
Le jeu doit se lancer sans apparition de fenêtre DOS ou autres événements disgracieux. Idéalement, l'overlay Steam fonctionne, mais ce point n'est pas évident, donc c'est un bonus.



Je posterai dans ce Groblog la procédure pour faire ça, et les icônes que je fais au fur et à mesure.
L'objectif n'est évidemment pas de faire tous les jeux existants, mais les très grands classiques de chaque console.
Si vous avez des suggestions de jeux à ajouter, je suis toute ouïe (mais je ne garantis rien).

RobertGlucose
Pixel monstrueux



Inscrit : Feb 06, 2005
Messages : 2609

Hors ligne
Posté le: 2013-07-28 11:35   [ Edité le: 2013-08-05 11:21 ]
I - Création des raccourcis.

1) Le launcher

Pour créer ce type de raccourci avec icôné dédiée, il faut détourner certaines limitations de Steam, qui n'est pas fait pour ça à la base.

Le principal souci est que chaque icône custom est liée à un exécutable unique. Or, avec un émulateur, en théorie c'est toujours le même exécutable qu'on lance, par exemple snes9x.exe, en lui donnant la ROM en argument.
Avec Steam, impossible, car on ne pourrait alors pas mettre des icônes différentes pour chaque jeu.

Il y a plusieurs méthodes pour pallier ce problème.
La plus propre me semble être de se créer un "launcher", un petit exécutable qui ne fait rien d'autre que lancer l'émulateur avec la ROM en argument. L'idée étant de dupliquer ce petit exécutable, un par jeu, ce qui donne la possibilité de mettre une icône différente par jeu.

Voilà le code C++ du launcher à compiler :


#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
ShellExecute(NULL, NULL, "D:\\Emulation\\Snes9x\\snes9x-x64.exe", lpCmdLine, "D:\\Emulation\\Snes9x", SW_SHOW);
return 0;
}


Alors c'est du vite fait hein, idéalement il faudrait rendre le chemin de l'exécutable paramétrable, mais j'ai la flemme.
Donc pour l'instant, il faut adapter le chemin à votre installation de Snes9x si elle est différente.

Si vous voulez une version compilée et adaptée à votre installation, demandez-le moi en MP et je vous l'enverrai.

Donc pour Super Mario World, il faut avoir quelque part un fichier nommé par exemple "SNES_SMW.exe", qui sera le launcher de Super Mario World.


2) Le raccourci

Ensuite, dans le client Steam, il faut ajouter un jeu non-Steam via la procédure habituelle, en choisissant comme exécutable le launcher ci-dessus, "SNES_SMW.exe".

Dans les propriétés du raccourci Steam, il faut modifier les éléments suivants :

- Nom :

Pour le nom, je conseille d'adopter une nomenclature qui garantisse un classement clair des jeux dans la liste.
Oui, car il faut préciser qu'il n'est pas possible dans Steam d'afficher les catégories en mode "grille", ce qui est un peu nul.

En attendant que ça soit implémenté un jour, il faut faire avec l'ordre alphabétique.

Personellement, je nomme mes raccourcis comme ça : "[SNES] Super Mario World", ou encore "[MD] Sonic The Hedgehog".
o Le "[" assure que tous les jeux émulateurs sont regroupés à la fin de la librairie.
o Le "SNES" / "MD" assure que les jeux sont regroupés par console.
o Le nom du jeu les classe ensuite pas ordre alphabétique, entre eux.

- Cible :

Dans ce champ, il faut spécifier la ROM, et les options éventuelles de l'émulateur en ligne de commande (s'il les supporte).

Pour Snes9x 1.53, j'ai ajouté l'option "-fullscreen" car on dirait qu'il y a un bug dans l'émulateur : l'option fullscreen n'est pas bien mémorisée.

Au final, j'ai ça :


"D:\SteamCustom\SNES_SMW.exe" -fullscreen "d:\Emulation\Snes9x\Roms\Super Mario World (U) [!].zip"


3) L'image custom

Un simple clic droit sur le raccourci permet d'attribuer une image custom au raccourci (cf. ci-dessous).

RobertGlucose
Pixel monstrueux



Inscrit : Feb 06, 2005
Messages : 2609

Hors ligne
Posté le: 2013-07-28 11:35   [ Edité le: 2013-08-05 11:31 ]
II - Les icônes

Voilà les icônes que j'ai faites pour l'instant.
Il y en a d'autres ici, pour exemple pour la SNES.










RobertGlucose
Pixel monstrueux



Inscrit : Feb 06, 2005
Messages : 2609

Hors ligne
Posté le: 2013-08-05 11:27   [ Edité le: 2013-08-05 12:01 ]
Intégration de la Mega Drive

Pour la Mega Drive / Master System / Game Gear, j'utilise l'émulateur Kega Fusion v3.64.

De la même manière que pour Snes9x, le code du launcher est :


ShellExecute(NULL, NULL, "D:\\Emulation\\Fusion364\\Fusion.exe", lpCmdLine, "D:\\Emulation\\Fusion364", SW_SHOW);

Et la ligne de commande du raccourci Steam :


D:\SteamCustom\MD_CastleOfIllusion.exe -fullscreen "d:\Emulation\Fusion364\Roms\Mickey Mouse - Castle of Illusion (U) [!].zip"

Et bonne nouvelle : l'overlay Steam fonctionne avec Fusion !
Seul léger souci : la touche TAB arrête l'émulateur... Je n'ai pas creusé plus loin pour l'instant.


Voici les icônes MD que j'ai faites. Je suis assez content de la Ristar.








Odysseus
Pixel intergalactique

47
0004305

Joue à lâcher trois poissons-ballons sur la ligne de départ.

Inscrit : Sep 15, 2002
Messages : 10879
De : Αἰαία

Hors ligne
Posté le: 2013-08-05 21:05
Merci beaucoup pour ces données, je vais tester ça dès que possible.

Par contre, l'affichage en mode vue détaillée dans la bibliothèque permet d'afficher les icônes en format réduit ou ça ne fonctionne qu'en vue grille?
_________________

"Il n'est pas de lutte plus violente et déterminée que celle d'un homme face à son envie d'aller aux toilettes" - Karate Boy


RobertGlucose
Pixel monstrueux



Inscrit : Feb 06, 2005
Messages : 2609

Hors ligne
Posté le: 2013-08-05 21:20
Seulement en mode grille pour l'instant.
Il faut que je regarde si c'est possible pour le mode liste aussi.

RobertGlucose
Pixel monstrueux



Inscrit : Feb 06, 2005
Messages : 2609

Hors ligne
Posté le: 2013-08-22 19:20   [ Edité le: 2013-08-25 11:22 ]
Quelques icônes supplémentaires :






RobertGlucose
Pixel monstrueux



Inscrit : Feb 06, 2005
Messages : 2609

Hors ligne
Posté le: 2013-09-12 23:29   [ Edité le: 2013-09-14 17:01 ]
Quelques icônes NES :








Kaede
Pixel monstrueux


Inscrit : Mar 06, 2002
Messages : 4006

Hors ligne
Posté le: 2017-06-09 14:34   [ Edité le: 2017-06-09 14:40 ]
Quelqu'un aurait testé ce bouzin ? https://scottrice.github.io/Ice/
Il semble que ce soit un outil noskill pour arriver au même résultat que celui proposé par RG.

Erhynn Megid
Seigneur d'Yseïr


44
0004551

Joue à Freelancer

Inscrit : Nov 22, 2003
Messages : 13012
De : Orléans

Hors ligne
Posté le: 2017-06-19 14:31
L'outil semble en effet génial mais le lien du téléchargement est HS.
_________________

Super Putty Squad, Mega Man 11, Bubsy 4, Sonic Mania... où est mon nouveau Turrican ?


Kaede
Pixel monstrueux


Inscrit : Mar 06, 2002
Messages : 4006

Hors ligne
Posté le: 2017-06-19 20:30
Ca devait être temporaire (bizarre), chez moi le bouton vert "download" fonctionne.
Sinon, il reste l'option de le télécharger via GitHub : https://github.com/scottrice/Ice/releases


Index du Forum » » Groblogs » » Groblog RobertGlucose : Intégration d'émulateurs dans le client Steam

11 messages • page
1




Version de base : phpBB (© 2001 The phpBB Group)
Modifié pour www.grospixels.com (© 2011 Grospixels)