[Projet] Mame avec high scores en ligne

Pour tout ce qui est fan arts, homebrew, shooters codés à la main, rip de sprites, doujins et toute autre productions artistiques ou logicielles faites maison.
Répondre
Risike
Dieu de la Borne
Messages : 1935
Inscription : 01 déc. 2009, 13:30
Localisation : Citoyen du monde, partisan d'un monde sans frontière

J'étais tranquillement à la maison en train de m'énerver sur le 3ème boss de Dodonpachi quand m'est venue une idée.

Développe un programme (Client / Server web), qui permet de lancer un Mame custom qui gère les high score dans tous les shmups et qui une fois le fichier high score modifié l'envoie à un serveur web (un web service quoi) qui récupère ce fichier, extrait les scores et gère un tableau de score en ligne par jeu.

Pour ça il faudrait recompiler un Mame qui gère les high score (le 0.99 par exemple :) ) en désactivant tout ce qui permettrait de tricher : save states, ralentis, service mode...etc. Pour éviter la triche le CRC du Mame.exe exécuté serait vérifié avant chaque lancement et toutes les communications client serveur seraient cryptées avec une clé unique.

Au final on a un site, on s'inscrit, il y a une liste de jeux compatibles. On clique sur "lancer tel jeu". On joue, on fait un joli score, celui-ci est envoyé au serveur, on quitte mame et hop, notre nom est enregistré ^^. Et on peut consulter les scores de chaque joueur pour chaque jeu (avec classement par pays...etc par exemple).

ça pourrait être sympa non ?

Tout ça me semble assez facile à développer mais j'ai un gros problème :
Je n'arrive pas à trouver des explications sur la structure des fichiers .hi :(

Quelqu'un saurait où trouver ça ?
La jeunesse n'est pas une période de la vie, mais un état d'esprit...
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Petites questions...

Tu as déjà développé une appli réseau ? Avec gestion de base de donnée ?
Un hébergeur qui accepte les connexions extérieurs sur ces serveurs de BDD pas cher ?

Parce que heuuuuuuuu moi qui suis un peu dans le dév, je peux t'assurer que c'est pas simple du tout :)

Sans compter le développement du site web :mrgreen:

Donc récapitulons... Un programme qui va lire les fichier high score de Mame dont tu ne connais pas le type. ( plus simple de le faire à part que de l'intégrer à Mame )

Un site web à construire.

Trouver un hébergeur qui accepte les connexion extérieurs.

Donc ca fait 4 langages distincts :)
html/css, php, sql, C/C++

Chaque fichier .hi peut être géré différement vu que chaque jeu n'est pas issu du meme matériel...

Je te souhaite bien du courage :)
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Risike
Dieu de la Borne
Messages : 1935
Inscription : 01 déc. 2009, 13:30
Localisation : Citoyen du monde, partisan d'un monde sans frontière

Je suis développeur pro... Et c'est ce que je fais quotidiennement... J'ai 3 ans de dev pro et 10 ans amateur derrière moi... Voilà pour le CV.

Et il n'y a pas besoin de connexion extérieur à la BDD ! Il faut développer un Webservice. C'est côté serveur que tu fais appel à la BDD. Le client a juste a envoyer une requête HTTP sur le port 80 à une page web (php par exemple), qui elle fait les requêtes.
(Pour info, même si on s'en fout, mon hébergeur (payant) accepte les connexions extérieur si j'en fais la demande, ils m'ouvrent aussi les ports que j'ai besoin sur demande ^^).

Développer le site (hors charte graphique), avec le système de compte utilisateur et la gestion des high score, y'en a pour quelques heures.
Developper le client qui lance les jeux sur un Mame spécifique et envoie les données cryptées au serveur y'en a pour quelques minute (allez disons une heure avec les tests).

Si je connaissais la structure des fichiers ".hi" il me faudrait très peu de temps pour extraire les scores. Bref c'est tout ce qu'il me manque. Il n'y a absolument rien de compliqué à développer (à moins que ces fichiers ".hi" soient structurées n'importe comment, ce que je doute).

Si personne ne sait où trouver ça, j'éplucherais le code source des versions Mame avec support des High Scores.

EDIT : pour les langages utilisés tu peux ajouter très certainement C# et le framework .NET qui serviront sans doute à développer le client. Je ne vais pas me faire chier avec du C/C++ pour un truc si petit et qui ne nécessite quasiment aucune ressource.
La jeunesse n'est pas une période de la vie, mais un état d'esprit...
Avatar de l’utilisateur
MoonZ
Smart Bomber
Messages : 813
Inscription : 02 oct. 2009, 05:19

Risike a écrit :EDIT : pour les langages utilisés tu peux ajouter très certainement C# et le framework .NET qui serviront sans doute à développer le client. Je ne vais pas me faire chier avec du C/C++ pour un truc si petit et qui ne nécessite quasiment aucune ressource.
J'aurais pas dit mieux ;)
A shmup session a day keeps the bullets away
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Bha à part l'analyse comparative via editeur hexa des fichiers .hi, je vois pas trop ce que tu peux faire en dehors d'aller fouiner dans le code source...

Je peux dire des bétises, mais normalement, les high scores ne sont pas des données sensibles, donc ca ne m'étonnerait pas que se soit juste de simples fichiers binaires en claire...

Du moment que tu connais la valeur de ce que tu cherches, avec un éditeur hexa, un fichier vierge et un fichier avec high score de joueur tu devrais t'en sortir.

Mais bon t'as déjà dû passer par là sinon tu viendrais pas demander de l'aide ^^

edit : Par contre je me demande comment tu vas t'y prendre pour la gestion des comptes... Car expliqué comme tu l'as fait, il manque des trucs ^^ Genre comment le serveur va savoir QUI envoie le score ? Radigo ou shinnen ?
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Risike
Dieu de la Borne
Messages : 1935
Inscription : 01 déc. 2009, 13:30
Localisation : Citoyen du monde, partisan d'un monde sans frontière

Mais rien de plus simple !
Tout est envoyé au serveur via une requête HTTP. Il suffit d'envoyer un paramètre pour le login un autre pour le mot de passe et un pour le fichier. Le tout crypté maison pour éviter la triche et lee vol de comtes sur des réseaux publics.
Tu n'as pas l'air de comprendre le principe d'une requête web. Il n'y a rien de plus simple à envoyer et à traiter. D'un côté .NET propose une librairie pour écrire ça en 3 lignes, de l'autre les langages web (php dans ce cas), récupèrent les données en une ligne.

Sinon oui j'ai décortiqué les fichiers .hi et je ne pige rien... Dans un éditeur hexa rein n'apparait en clair... Je pensais au moins voir des octets de valeurs des scores ou des 3 lettres mais y'a rien de tout ça. Bon je vais plonger dans le code de Mame.
La jeunesse n'est pas une période de la vie, mais un état d'esprit...
Avatar de l’utilisateur
Radigo
Counter Stop
Messages : 7577
Inscription : 22 mai 2003, 17:31
Localisation : Paris
Contact :

Risike a écrit :Sinon oui j'ai décortiqué les fichiers .hi et je ne pige rien... Dans un éditeur hexa rein n'apparait en clair... Je pensais au moins voir des octets de valeurs des scores ou des 3 lettres mais y'a rien de tout ça. Bon je vais plonger dans le code de Mame.
Certainement que ce fichier "sensible" est crypté pour éviter la triche en éditant trop facilement les fichiers .hi si jamais qq'un se décidait un jour à créer un outil de gestion de hiScores mutalisé.

Bon courage. Enfin, j'espère juste que c'est une histoire de codage de caractères de ton éditeur hexa...
"HYPER GAGE : 500%"
Image
Avatar de l’utilisateur
niluge
Radiant Silverpost
Messages : 1247
Inscription : 29 juin 2006, 15:29
Localisation : Above and beyond

Question bête, mais sait on jamais :
- Est on sur que les fichiers *.hi ne stockent pas les scores dans un format propriétaire à chaque jeux (ou hardware)? Dans ce cas ça complique pas mal le boulot (mais c'est jouable)
- As tu essayé la conversion en hexa en changeant d'endian ? voir pourquoi pas carrement la position du bit de poid fort ?
- As tu pensé à demander directement aux auteurs ? (ouais okay, celle là elle est facile ^^ )
- Reverse engineering sur le code qui génére les fichiers *.hi ? Les source sont disponible non ?

Sinon, comme ça, aucune idée. Mais si je peut t'aider ^^
Avatar de l’utilisateur
MoonZ
Smart Bomber
Messages : 813
Inscription : 02 oct. 2009, 05:19

J'ai juste 5 minutes pour regarder rapidement, j'ai peut-être trouvé un début de piste, pas le temps de creuser, sorry:

HiToText

Bon courage !
A shmup session a day keeps the bullets away
Risike
Dieu de la Borne
Messages : 1935
Inscription : 01 déc. 2009, 13:30
Localisation : Citoyen du monde, partisan d'un monde sans frontière

En épluchant les sources de la version de Mame avec high scores j'ai remarqué qu'en fait les fichiers .hi ne sont qu'une copie d'une plage de la mémoire, la partie qui gère les scores quoi ! Et sont bêtement chargé en RAM dès le lancement de la ROM... Donc c'est dépendant de chaque jeu... ça craint !

Je vais regarder ce que c'est ton HiToText, merci !
La jeunesse n'est pas une période de la vie, mais un état d'esprit...
Répondre