Borne arcade

Borne TerminéeIntroduction

Les bornes arcades faites maison sont très à la mode depuis quelques années. Pour ma part, j'ai toujours été un grand amateur de jeux vidéos qu'il s'agisse des dernières sorties ou bien de ceux de notre enfance. J'ai pas mal de consoles à la maison mais l'idée d'avoir accès à tout depuis une seule machine, sur laquelle les amis peuvent s'éclater dans le salon, m'était très séduisante.

Baignant dans les jeux de rythme depuis très longtemps, j'avais également l'occasion de faire quelque chose de différent, en offrant la possibilité de jouer à DanceDanceRevolution sur la borne.

Configuration

J'ai commencé par récupérer un vieux PC sur lequel pourraient tourner la plupart des jeux qui m'intéressent. J'avais auparavant étudié plusieurs solutions sur Raspberry mais je suis vite retrouvé bridé sur les performances ainsi que par l'OS UNIX sur lequel certains de mes jeux récents n'étaient pas compatibles.

Pour la partie software, je me suis basé sur des émulateurs + RocketLauncher + Hyperspin. 

Hyperspin Front-End est un programme permettant de créer des menus navigables pour borne arcade à partir d'une base de données de jeux/console. Le fonctionnement est simple: on lance Hyperspin, on choisit un appareil, on choisit un jeu et une commande est lancée en arrière plan. Les menus sont personnalisables: pour chaque jeu on peut définir une image (logo), une vidéo de présentation, des effets sonores, etc. Même fonctionnement pour les consoles.

Menu consolesMenu jeu

La partie la plus longue de tout le projet fut de récupérer tous les logos et aperçus vidéos des 1000+ jeux installés !

RocketLauncher est le programme appelé par Hyperspin après le choix du jeu. C'est un gestionnaire de lancement d'émulateurs qui permet de définir en fonction de chaque console et chaque jeu quel émulateur doit être lancé et avec quels paramètres. Il permet également d'uniformiser la configuration des touches entre les différents émulateurs, etc.

Exemple: je veux jouer à Super Smash Bros Melee sur Gamecube. Je lance Hyperspin, je choisis la Gamecube, je choisis SSBM, Hyperspin lance une commande RocketLauncher avec ces infos, RocketLauncher démarre le module Gamecube, voit que j'ai installé l'émulateur Dolphin pour ce jeu et lance Dolphin et plein écran avec le jeu que j'ai choisi et la configuration qui va bien.

SSBM ConsoleSSBM jeuSSBM Launch

Construction

Beaucoup de bois, du plexi, des boutons et un I-Pac. La suite en images

Supports boisAssemblageEcran et boutonsPeintureT-Molding

DDR Pad

La plateforme DanceDanceRevolution m'a posé plus de problèmes. Plier la tôle à la main, pas simple!

La plateforme est composée d'une base contreplaqué 15mm sous laquelle est collée une plaque en caoutchouc pour la stabilité. Des morceaux de tasseau de sapin 19mm viennent ensuite délimiter les 9 panneaux (photo 1). Pour que la plateforme respecte les dimensions officielles, il est important que chaque panneau mesure 28x28cm.

5 carrés de medium recouverts de tole viennent se poser sur les panneaux neutres. (photo 2). Sous l'une d'entre elles, on trouve le contrôleur Xinput qui sort en USB en façade de la plateforme.

Les 4 panneaux restants sont pour les touches de jeu. Pour chaque touche, côté plateforme il 4 plaques en métal vissées sur les angles des tasseaux (les 4 sont connectées entre elles et reliées à un bouton du controleur). Pour la touche, le visuel (flêche directionnelle) est pris entre 2 plaques de plexiglass 2.5mm qui reposent sur une plaque d'aluminium qui est connectée à la masse du contrôleur. De l'isolant pour fenêtres (languettes noires) permet d'éviter le contact éléctrique entre la touche et les plaquettes en L au repos. L'interrupteur s'active donc par pression sur la touche.

 

 

Lattes inter-panneauxToleContactsFlechesIntegration

Réaction au son

Deux barres de LED sont intégrées à la borne (l'une éclaire le logo en haut de la borne, l'autre est situé dans le renfoncement sous les boutons).

Pour reproduire au mieux le feeling des vraies bornes DDR, un microphone est relié à un microcontrolleur Arduino qui allume ou non les LEDs en fonction du volume capté en sortie du caisson de basses posé à l'intérieur de la borne.

LED stripWiring