Author Topic: [Retroframboise] - Faire sa console retro all-in-one avec un Raspberry Pi  (Read 205715 times)

Offline MrBlueSky

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 1 278
  • Bonus Pute: 131


On s'en fout, c'est moche.
Non mais 4 boutons en façade...  :-X

J'ai confiance en toi mon Tam. Tu vas nous sortir un truc aussi propre et bien fini que ta Nes PC  ;)

Moi j'attends surtout d'avoir un Dremel (ou l'équivalent mini perceuse / ponceuse etc) pour me lancer.  J'ai une PCB "+ A B Start Select" depuis presque 2 ans, production limitée et faite par des amateurs à l'époque où des tarés d'un forum retro allemand s'amusaient à installer des GBA dans des GB. C'est quand même autre chose que le DIYBNRY.

Fuck DIYBNRY !

Offline ɯɐʇ

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 2 021
  • Bonus Pute: 115
  • ?x???? ¡¡¡¡¡
Moi j'attends surtout d'avoir un Dremel (ou l'équivalent mini perceuse / ponceuse etc) pour me lancer.

dremel forever, si j'avais pas ça je ferais rien.
t'as des "starter kits" dremel avec quelques outils (à part des disques de découpe j'ai rien racheté en 15 ans) à partir de 50€ fonce mec !

dans le genre "comment je faisais avant", en plus du classique fer à souder/multimètre/cutter le genre d'outillage qui change la vie :

- une pince pour tenir les circuits imprimés (éventuellement loupe parceque même une PCB gameboy faut pouvoir suivre)
- une pompe à dessouder (j'ai jamais testé les tresses à dessouder mais la pompe marche nickel)
- un stylo à colle <3 <3
- un mandrin pour ma petite visseuse à main + des micro forets <1mm
- une breadboard

il est où le topic noël quand on a besoin de lui ?

Offline MrBlueSky

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 1 278
  • Bonus Pute: 131
 :D

Parfait, tu lis dans mes pensées. J'hésitai encore à préciser la marque sur la liste pour le Papa Noël. Ce sera donc Dremel.

Offline Bast

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 1 612
  • Bonus Pute: 70
  • Alors, si t'en casses 4, ça va faire une omelette!
Je valide itou, pour avoir essayé un clone merdique de dremel ça vaut pas un cachou.

Par contre, prévois une paire de lunettes de protection si tu souhaites disquer des trucs, il y a quand même un coup à prendre et si tu coinces le disque, il pète, vu que la dremel ça a un peu de vitesse et bonjour le morceau tranchant dans ta gueule.

Moi je m'en fous j'ai des lunettes de hipster, et cette cicatrice le long de ma pommette me donne un air de gangsta.

tam : je viens de te mp mais en fait ouais y'a ça que je maitrise absolument pas, en fait on doit envoyer une image censée aller sur le hdmi dans un buffer et la copier vers le gpio, d'où la latence incompressible que tu rencontres ?

Je vais retourner à mon flash de gotek tiens, ça me fera les pieds..


Offline ɯɐʇ

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 2 021
  • Bonus Pute: 115
  • ?x???? ¡¡¡¡¡
bast dit le vrai, faut prendre un peu le coup notamment avec les disques, et avoir des lunettes.
ça a l'air de rien mais si je te dis que j'ai découpé 30 cm d'acier émaillé avec les pauvres disques de découpe dremel de 2cm ça te donne une idée... tes doigts ne feront pas le poids.

BAST : je vais t'envoyer mon image raspbian j'ai préparé les fichiers de conf et les drivers pour les écrans GPIO 3.2" et 3.5" que j'avais linké précédemment (avec le framebuffer copy). par contre vu que je me fous du tactile j'ai rien testé ni paramétré donc faudra que tu te débrouilles.

le problème est exactement celui que tu indiques : le HDMI c'est le framebuffer 0 (fb0), le GPIO le fb1. le GPU balance sur le fb0 pas le fb1. a priori t'as le GPU ou le GPIO.
pour une console linux pas de GPU c'est jouable, pour de l'émulation t'as besoin du GPU, donc il faut que tu récupère la mémoire image qu'il fabrique (en fb0), que tu la copies et que tu la balances vers le GPIO (en fb1).

le souci c'est qu'une copie bit à bit, même avec quelques optims, ça prend du temps, surtout si tu craches du 1080 en sortie par exemple.
solution : utiliser FBCP qui est plutôt optimisé, et configurer ta sortie vidéo pour cracher la plus petite résolution possible (ex. 320x240) afin de faire de la copie 1:1 vers ton écran.
je n'ai pas mesuré les temps, mais en terme de feeling je dirais que cette copie (si bien optimisé) doit prendre quelques 20ms env. donc tu as forcément une latence à l'image de 1 à 2 frames.

pour faire du display standard / écran de contrôle / linux ça va très très bien y a aucun souci, tu verras j'ai même configuré les polices et résolutions pour avoir un rendu clean.
pour jouer à fire emblem ou civilisation c'est pareil ça va tourner sans souci...

pour faire du time trial en revanche, c'est un peu mou le GPIO  :-[
« Last Edit: 23 November, 2016, 15:55:57 by tam »

Offline Bast

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 1 612
  • Bonus Pute: 70
  • Alors, si t'en casses 4, ça va faire une omelette!
Je ... je ... je t'aimeu.  ;D

Offline ɯɐʇ

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 2 021
  • Bonus Pute: 115
  • ?x???? ¡¡¡¡¡
hack manette check, aucun souci avec le retrogame.c d'adafruit ça marche les doigts dans le nez.
next : branchement de la carte son.




Offline Bast

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 1 612
  • Bonus Pute: 70
  • Alors, si t'en casses 4, ça va faire une omelette!
bon du coup je change d'approche.

Je me suis installé retropie en 2 2, c'est effectivement super easy ! j'adore !

du coup ça me fait une petite console de salon.

les écrans que j'ai sont des chinois noname a priori : un 2,8 pouces ressemblant fortement dans la conception à un adafruit de même dimension, et un 3,5 noname.

je repars donc de zéro en tentant différents trucs.

il se trouve que complètement par hasard j'ai trouvé un écran adafruit 2,8 pouces au taf, du coup je suis reparti avec une image adafruit, j'arrive à faire un "clean" de l'écran (il change de teinte) mais j'ai un problème d'écriture dans un fichier rc.local (droits d'écriture ?).

en suivant divers tutos je commence à capter lentement le fbcp et consorts.

donc là je tente de partir d'une image retropie propre, pour ensuite installer le kernel adafruit ou une variante pour faire marcher les divers écrans.. on va voir !



Offline ɯɐʇ

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 2 021
  • Bonus Pute: 115
  • ?x???? ¡¡¡¡¡
hésite pas à suivre la liste que je m'étais faite, vu de l'extérieur ça a l'air d'être du chinois je te l'accorde mais avec le matos sous les yeux c'est plus simple.

mon gros souci était de bien organiser les étapes, pour savoir si j'avançais dans le bon sens ou pas.
cette liste a l'avantage de bien indiquer par où commencer.

si ton 3.5" noname ressemble à ça tu as juste à remplacer

Quote
. git clone https://github.com/swkim01/waveshare-dtoverlays.git
. sudo cp waveshare-dtoverlays/waveshare35a-overlay.dtb /boot/overlays/
. sudo nano /boot/config.txt > add dtoverlay=waveshare32a en fin de fichier
et

Quote
. sudo nano /boot/config.txt
. modif taille HDMI > mode 2/87 -> 640x480 60fps

Offline Bast

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 1 612
  • Bonus Pute: 70
  • Alors, si t'en casses 4, ça va faire une omelette!
Ta todolist est très bien. Mais je me heurte systématiquement à des erreurs pénibles.

La j ai bien avance, j arrive à faire apparaître la console sur un écran 2,8 ou 3,5 sans souci, mais retropie ne kiffe pas trop la résolution. Il faut que je tweake ça. Stay tuned.

Offline Bast

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 1 612
  • Bonus Pute: 70
  • Alors, si t'en casses 4, ça va faire une omelette!
Double post dans la joie :

CA Y EST PUTAIN !  :D

pour la postérité ou si vous voulez vous lancer :

1) installer le driver et lancer la procédure manuelle associée sur :

http://www.waveshare.com/wiki/2.8inch_RPi_LCD_%28A%29

(ça marche nickel avec un 3.5 aussi)

2) à partir de là l'écran marche correctement.

ensuite de quoi frame buffer et compagnie :

https://learn.adafruit.com/running-opengl-based-games-and-emulators-on-adafruit-pitft-displays/pitft-setup

c'est bien expliqué, évidemment on saute la ligne qui concerne le dt-overlay puisque le script de waveshare s'en est occupé pour nous :)

bon globalement une fois ceci fait ça tourne, il reste pas mal d'optimisation, mais honnêtement ça se fait bien !
je conseille quand même d'avoir une config linux et de bosser sur la carte sd directement, ou comme tam en ssh, sinon c'est à devenir fou !

Offline ɯɐʇ

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 2 021
  • Bonus Pute: 115
  • ?x???? ¡¡¡¡¡

Offline Bast

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 1 612
  • Bonus Pute: 70
  • Alors, si t'en casses 4, ça va faire une omelette!
en terme de manettes, j'ai ma super retrousb sur une manette super famicom montée avec le sieur tam, elle fonctionne comme un charme.

Autrement, si je veux en acheter en plus pour faire une config retropie pour un pote ou avoir simplement un deuxième joueur, je prends quoi ? Buffalo style super famicom filaire ? Y'a d'autre possibilités easy sur retropie et sans vendre un rein ?

Offline ɯɐʇ

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 2 021
  • Bonus Pute: 115
  • ?x???? ¡¡¡¡¡
en terme de manettes, j'ai ma super retrousb sur une manette super famicom montée avec le sieur tam, elle fonctionne comme un charme.
j'utilise la même pour mon joueur 2, plug & play et hop ça roule, c'est effectivement bien foutu.

Autrement, si je veux en acheter en plus pour faire une config retropie pour un pote ou avoir simplement un deuxième joueur, je prends quoi ? Buffalo style super famicom filaire ? Y'a d'autre possibilités easy sur retropie et sans vendre un rein ?
j'ai 2 montages pour mon 1P (en hard à chaque fois, je garde le port USB pour le 2P éventuel)

A. un hack PCB de chaque bouton + GND vers le GPIO et j'utilise retrogame : https://github.com/adafruit/Adafruit-Retrogame : avantage t'es sûr que ça marche avec toutes les manettes du monde, inconvénient : pas mal de soudure, j'utilise ça pour mon projet avec la GB

B. un branchement direct du cable manette vers le GPIO avec le driver adapté : http://blug00.blogspot.fr/2016/03/retropie-gamecon-driver-readme-friendlier.html, avantage : peu de soudure et probable que l'analogique fonctionne, inconvénient : tout n'est pas supporté
« Last Edit: 04 December, 2016, 12:52:51 by tam »

Offline ɯɐʇ

  • Snack of Quality
  • Hero Member
  • *****
  • Posts: 2 021
  • Bonus Pute: 115
  • ?x???? ¡¡¡¡¡
vu qu'il me restait des pièces, que je me suis pris d'une flemme monstre pour finir mon mod GB et qu'en vue des fêtes en famille, il est toujours bon de savoir qu'on a un dodonpachi ou un super mario world dans la poche histoire de digérer peinard devant la télé sans avoir à se frapper beethoven fête noël, je vous présente le projet de manette SNES-PI !



concrètement il s'agit d'un pi zero alimenté sur batterie, avec sortie HDMI le tout gavé de 30Go de ROMs diverses (NES, SMS, PCE, arcade pré-2000, MD et la majorité des jeux SNES passent nickel).

on appuie sur l'interrupteur 3 secondes pour lancer la machine et vous arrivez en quelques secondes sur le frontend avec choix des émulateurs, tout est configuré, son et vidéo passent par le HDMI (1080p) bref, aucun souci pour jouer sur n'importe quelle télé récente.

matos (comptez entre 30 et 60€ suivant la provenance) :
  • pi zero + carte micro SD 32G
  • powerboost 500 d'adafruit (c'est ce qui va convertir le 3.7V de la batterie en 5V et permettre de la recharger)
  • une connectique micro USB (car j'ai pas pu positionner le powerboost pour un accès facile)
  • une batterie 3.7V 1200MAh (comptez env. 3h de jeu)
  • une manette SNES de récup'
  • un cable micro HDMI -> HDMI ultra slim (pour garder la souplesse du câble)
  • 2 résistances 10K et 100K (pour faire un circuit de shutdown propre en cas de low battery)
  • des câbles, plein de câbles
  • un micro switch pour allumer la machine



niveau : intermédiaire (rien de bien compliqué mais on manque VRAIMENT de place c'est super galère)
système : retropie

soucis rencontrés :

1.vu que j'avais pris une batterie assez "grosse" j'ai pas pu caser le powerboost derrière ma PCB, j'ai donc découpé la PCB de la manette pour caser le powerboost.
résultat, j'ai du hacker les boutons un par un (13 avec le ground, ce qui explique la quantité de câble) plutôt que de récupérer directement à la puce de la manette (5 câbles).

2. le système que j'utilise pour éteindre correctement le pi dès un signal de batterie faible est ceci, mais j'ai jamais pu faire marcher le CRON, j'ai à la place utilisé un crontab en root : crontab -e -u root

la manette en charge (le powerboost permet de jouer tout en chargeant) :