Retro gaming

Retro gaming is een van de meest populaire toepassingen voor de Raspberry Pi. In deze tutorial leg ik uit hoe je zelf een console kunt bouwen. 

Welke emulator moet je kiezen?
Voordat je begint met het bouwen van een arcade project, raad ik aan om eerst een paar emulatoren te testen en vast te stellen dat de games waarin je het meest geïnteresseerd bent, kunt spelen. Daarna gaan we verder met interessantere bedieningselementen zoals gamepad en joystick.

De programma’s zijn allemaal GRATIS te downloaden, het kan dus geen kwaad om ze allemaal te testen en te kijken wat bij jou past.

En als je aan het testen en instellen bent kan het voorkomen dat je alles weer moet wissen en opnieuw moet beginnen. Noteer het installatieproces en eventuele configuratiewijzigingen die je aanbrengt! Dit voorkomt later vragen en problemen.

Project te hoog gegrepen?
Ik ga in deze tutorial niet uitleggen hoe je een image van een emulator op de Raspberry Pi installeert. Als je een project als deze wilt doen, zou je deze kennis moeten hebben. Mocht dit niet het geval zijn, is dit project wellicht iets te hoog gegrepen voor je. Uiteraard mag je me wel vragen stellen via het formulier op deze site. Je krijgt altijd antwoord.

RetroPie
(Dit is mijn aanbevolen emulatorpakket!)

“Met RetroPie kun je van je Raspberry Pi of pc een retro gaming machine maken. Het pakket bouwt voort op Raspbian, EmulationStation, RetroArch en vele andere projecten om je in staat te stellen uw favoriete Arcade-, home-console- en klassieke pc-games te spelen met een minimale set-up. Voor ervaren gebruikers biedt het ook een grote verscheidenheid aan configuratietools om het systeem naar wens aan te passen.“RetroPie zit bovenop een volledig besturingssysteem, je kunt het daarmee installeren op een bestaande Raspbian versie. Je kunt ook beginnen met de RetroPie-image en later extra software toevoegen. Het is aan jou.”

Vanaf de downloadpagina van de Retropie site zijn er afzonderlijke versies beschikbaar die geoptimaliseerd zijn voor single- en multi-core Raspberry Pi-modellen (d.w.z. Pi Zero, origineel Model A of B, A + of B + versus de multi-core Pi 2 en Pi 3). Let op! deze zijn niet onderling compatibel. Zorg ervoor dat je begint met de juiste versie voor jouw model Pi!

In het bijzonder vind ik de 3.8.1-release leuk, omdat deze een aantal kant-en-klare games bevat zoals Doom ( bekijk hier alle releases )

Klik hier om de v3.8.1-release voor Raspberry Pi 2 en 3 te downloaden

Klik hier om de v3.8.1-release voor Raspberry Pi Zero en 1 te downloaden

Even wat jargon ophelderen…

  • Raspbian is de standaard en meest populaire Linux-besturingssysteem distributie voor de Raspberry Pi; het is waar de meeste mensen mee beginnen bij het opzetten van een Raspberry Pi voor ‘normale computerdingen’ zoals internetten en programmeren in Python.
  • EmulationStation is een grafische front-end waarmee je kunt kiezen uit verschillende emulators of games die op het systeem zijn geïnstalleerd, en waarmee je spelbesturing en andere opties kunt configureren.
  • RetroArch is een van de breedste en meest populaire multi-platform emulators… dit is de code die de daadwerkelijke spellen uitvoert. Maar het is niet de enige … RetroPie verzamelt verschillende code andere voor verschillende situaties om zo compleet mogelijk te worden.

PiPlay
Vanaf de PiPlay-website:

“PiPlay, voorheen PiMAME genaamd, [is een] voorgebouwd Raspberry Pi OS gemaakt voor gamen en emulatie. “Ook is inbegrepen een softwarepakket dat ontworpen is om de complexiteit en tijd te verminderen die nodig zijn om een ​​volledig werkend systeem op te zetten. Bij de distributie wordt een updater meegeleverd. “

PiPlay mist de breedte en actieve ontwikkeling van RetroPie; het is op moment van schrijven momenteel niet compatibel met Pi 3 of Zero , is niet bijgewerkt sinds 2015 (!) en erg vervelend is dat de forums het slachtoffer worden van spambots. Toch melden sommige gebruikers dat het hier gemakkelijker is om dingen te configureren dan andere distributies… zolang je op de juiste hardware draait.

Recalbox
Van de Recalbox-website :

“Recalbox biedt een brede selectie consoles en spelsystemen. Van de allereerste arcade-systemen tot de NES, de MEGADRIVE en zelfs 32-bits platforms, zoals de Playstation. “Met Kodi al inbegrepen, doet Recalbox ook dienst als Media Center. Door hem op je thuisnetwerk aan te sluiten, kun je video’s streamen vanaf alle compatibele apparaten (NAS, pc, externe harde schijf, enz.). “

Een relatieve nieuwkomer met een indrukwekkende verscheidenheid aan geëmuleerde systemen. Eén SD-kaartimage is compatibel met alle huidige Raspberry Pi-modellen (er zijn geen afzonderlijke single- of multi-core downloads).

Het lijkt erop dat Recalbox zijn eigen ondersteuning heeft voor het koppelen van arcade-knoppen en joysticks aan de GPIO-header van de Pi, waardoor de noodzaak voor aparte software overbodig is. 

Lakka
Van de Lakka-website:

“Lakka is een lichtgewicht Linux-distributie die een kleine computer verandert in een volwaardige gameconsole.“Lakka is de officiële Linux-distributie van RetroArch en het libretro-ecosysteem.“Elk spelsysteem is geïmplementeerd als een libretro-kern, terwijl de frontend RetroArch zorgt voor de invoer en weergave. Deze duidelijke scheiding zorgt voor modulariteit en gecentraliseerde configuratie.”

Lakka is niet zo all-inclusive als andere pakketten, maar daardoor extreem compact. Er zijn aparte downloads voor single- en multi-core Raspberry Pi-boards beschikbaar.

Besturingselementen toevoegen
Op dit punt zou je een (of meer) games moeten hebben die nu al vanaf het toetsenbord kunnen worden gespeeld. De volgende stap is het toevoegen van handige bedieningselementen zoals een joystick, wat arcade knoppen of een mooie gamepad.

Consolebediening in retrostijl
Als je op zoek bent naar het thuis-tv-gameconsole-gevoel, is het supergemakkelijk: er zijn verschillende USB-compatibele gamecontrollers die rechtstreeks op de Pi kunnen worden aangesloten. Ook als je een nostalgische console zoals de Commodore 64 of de Playstation wilt simuleren, is de kans groot dat je een gelijkwaardige controller met USB-indeling kunt vinden.

NES gamepad met USB connectie

Als je liever echte originele bedieningselementen gebruikt met een DB9 female steker, kun je losse USB converters hiervoor gebruiken.

Arcade- en handheld gaming bediening
Laten we eerst eens kijken naar arcade-achtige bedieningselementen, omdat ze fysiek groter en robuuster zijn en dus gemakkelijker om mee te werken.

Net zoals er USB-consolestijlen zijn, zijn er ook USB-arcade-achtige opstellingen. De onderdelen zijn in een Aziatische online-shop zeer betaalbaar. Mocht je je eigen bedieningspaneel willen bouwen, dan heb je wel de juiste materialen, gereedschappen en kennis nodig. Op YouTube staan veel projecten die je in detail uitleggen hoe je een arcadekast bouwt.

Klassieke joysticks
Een klassieke Atari- of Commodore-joystick kan ook worden gebruikt, aangezien dit intern slechts passieve schakelaars zijn.

Klassieke joystick met een DB9 female aansluiting

De klassieke joysticks kunnen m.b.v. speciale USB-omzetters geschikt gemaakt worden voor USB connectie. Een andere optie is de joystick rechtsreeks op de Raspberry Pi GPIO aan te sluiten zoals ik hieronder beschrijf.

USB adapter voor DB9 joystick

Verbinding maken met de Raspberry Pi
Niet-USB bedieningselementen, zoals de klassieke joystick, kunnen worden aangesloten op de 40-pins GPIO-header van de Raspberry Pi. Vroege modellen van de Raspberry Pi hadden een 26-pins header … hetzelfde idee, alleen met minder plekken om dingen aan te sluiten.

Elke pin op deze header heeft een uniek GPIO-nummer. De knoppen en een joystick (elk van 4 richtingen) maken verbinding tussen elke beschikbare GPIO-pin en een aardingspin (GND).

  • Alle  groene pinnen zijn bedoeld voor het aansluiten van de knoppen.
  • Gele pennen zijn niet beschikbaar voor controllers, afhankelijk van welke hardware-eigenschappen zijn ingeschakeld op het systeem:
    • GPIO2 en GPIO3 zijn verboden terrein bij gebruik van I2C-randapparatuur (bijvoorbeeld de meeste realtime klokkaarten).
    • GPIO14 en GPIO15 zijn verboden terrein bij gebruik van de TTL-seriële poort (bijvoorbeeld met een seriële consolekabel of thermische printer).
    • Als je een PiTFT-schermen gebruikt, zijn er nog zeven GPIO-pinnen buiten gebruik: GPIO7-GPIO11 en GPIO24-25.
    • GPIO-pinnen 18, 19 en 21 zijn nodig voor audioversterkerborden.
  • Vermijd rode pinnen, deze bevatten stroom en zijn niet geschikt voor bediening.
  • Zwarte pinnen zijn de aardingspunten (Ground). Iedere knop (en de gezamenlijk pin van een joystick) moet hiermee verbonden worden. Als je echter extra ongebruikte GPIO-pinnen hebt en slechts een paar extra aardeverbindingen nodig hebt, laten we je verderop een softwarematige oplossing zien.

Heb ik pull-up- of pull-down-weerstanden nodig?
Nee, je hebt geen externe pull-up weerstanden nodig voor de knoppen of arcade controller, ze kunnen direct aangesloten worden op de GPIO pinnen en GND. De Raspberry Pi heeft zijn eigen “interne” pull-ups.

Voorbeeld om een joystick en twee knoppen aan te sluiten:

Joystick Ground, Button A & B tweede contacten naar RPi GND

De lay-out is weliswaar eenvoudig, maar voldoende om een flink aantal klassieke spellen te besturen. Voor de overige zelden gebruikte functies (muntinworp, spel starten) wordt een gewoon USB-toetsenbord bij de hand gehouden.

Meer knoppen toevoegen
Hier is een voorbeeld lay-out als we zes knoppen plus een joystick willen toevoegen, met behulp van dezelfde snelkoppelingen voor knoppen:

Lay-out voor 6 knoppen en een joystick (herziene versie)

Deze lay-out vermijdt de meeste perifere (gele) pinnen (bijv. I2C), maar gebruikt wel pinnen die nodig zouden zijn voor een PiTFT-display. Meer dan twee knoppen aansluiten is daarmee alleen haalbaar als HDMI of de composiet video-uitgang wordt gebruikt.

A“, “B“, “X” en “Y” verwijzen hier naar de namen van de controllerknoppen die in EmulationStation, een onderdeel van RetroPie, worden gebruikt.

Eenmaal aangesloten ziet de bedrading er als volgt uit. Ieder wit paar draden (snelverbinding) vertegenwoordigt een knop. De gekleurde draden zijn met de joystick verbonden.

Aansluiting van joystick en 6 knoppen

Gaming handheld
Voor handheld-projecten zijn de principes hetzelfde als hierboven, alleen in een zeer beperkte ruimte geperst. Er worden kleinere componenten gebruikt en de aansluitingen zijn wat uitdagender. Daarnaast is het handig om een 3D-printer bij de hand te hebben om je eigen case te ontwikkelen.

Retrogame installeren
Let op! Als je een USB-gamecontroller gebruikt, is hier voor jou niets meer te zien. Je bent klaar! Ga lekker je gang en geniet van de retro gaming!

De volgende instructies zijn van toepassing als je aangepaste (niet-USB) bedieningselementen gebruikt zoals hierboven beschreven zijn.

Virtueel toetsenbord
Ons hulpprogramma voor retrogame is de softwarelijm die onze GPIO-verbonden bedieningselementen koppelt aan de “virtuele” toetsenbordinvoer.

Download en installeer
Er is een script hiervoor beschikbaar. Je hebt op de Raspberry Pi toegang nodig tot de opdrachtregel (CLI) in de terminal van de Pi. Log in via het netwerk met ssh. Het emulatiepakket dat je gebruikt zou mogelijk een optie hebben om toegang te krijgen tot een opdrachtregel (bijv. Met RetroPie, druk je op “F4“).

Typ vervolgens (of kopieer en plak, als je ssh gebruikt) de commando’s:

cd

curl https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/retrogame.sh >retrogame.sh

sudo bash retrogame.sh

Tijdens het uitvoeren wordt gevraagd om een ​​van de verschillende besturingsconfiguraties te kiezen.
– Als je bijvoorbeeld de eenvoudige joystick-en-twee-knoppen-opstelling van de vorige pagina gebruikt, kies je # 2.
– Als je van plan bent om je eigen aangepaste setup te maken, kies dan een van de andere. Hieronder leg ik uit hoe je dit kunt aanpassen.

Als je eerder retrogame hebt geïnstalleerd, wordt je gewaarschuwd dat het configuratiebestand zal worden herschreven. Druk op “y” als dat in orde is. Sluit anders af en maak een back-up van dat bestand, zodat u het later kunt herstellen.

Het script downloadt en installeert vervolgens het uitvoerbare bestand met de retrogame (/usr/local/bin/retrogame) en het configuratiebestand (/boot/retrogame.cfg) en voert vervolgens enkele beheertaken uit. /etc/rc.local is aangepast om de retrogame te starten. Een “udev rule” -bestand (/etc/udev/rules.d/10-retrogame.rules) wordt gegenereerd om het toetsenbord te simuleren.

Als je klaar bent wordt je gevraagd om opnieuw op te starten.

Als je andere setup-taken moet uitvoeren (andere pakketten installeren of overscan-instellingen wijzigen met raspi-config) hoef je nog niet opnieuw op te starten. Antwoord in dat geval “n”.