
Obsah
- Čo je Batocera Linux?
- Čo všetko Batocera umožňuje?
- Batocera ako multimediálne centrum
- Minimálne hardvérové požiadavky
- 1. Použitý hardvér
- 1.1 Hardvérová konfigurácia
- 1.2 Rozdelenie úložísk
- 1.3 Arkádové ovládanie
- 2. Inštalácia Batocera Linux 43.1
- 2.1 Stiahnutie operačného systému
- 2.2 Príprava microSD karty
- 2.3 Prvé spustenie Batocery
- 2.4 Povolenie SSH a vzdialená správa Batocery
- 2.5 Overenie hardvéru a operačného systému
- 2.6 Dôležité adresáre a konfiguračné súbory Batocery
- 3. Konfigurácia GPIO joysticku a arkádových tlačidiel
- 3.1 Identifikácia GPIO ovládača
- 3.2 Aktivácia GPIO ovládača v Batocere
- 3.3 Mapovanie joysticku a tlačidiel v EmulationStation
- 3.4 Nastavenie HOTKEY a ukončovania hier
- 4. Konfigurácia zvukovej karty WM8960 Audio HAT
- 4.1 Kontrola dostupných zvukových zariadení
- 4.2 Aktivácia WM8960 Audio HAT
- 4.3 Kontrola hardvérovej konfigurácie Raspberry Pi
- 4.4 Reštart systému a kontrola zvukovej karty
- 4.5 Nastavenie zvukového výstupu
- 4.6 Testovanie zvuku
- 4.7 Riešenie problémov so zvukom
- 4.8 Výsledok konfigurácie
- 5. Konfigurácia externého USB SSD na ukladanie hier
- 5.1 Identifikácia externého SSD
- 5.2 Nastavenie automatického pripojenia SSD
- 5.3 Kontrola dostupnosti SSD a bezpečný prenos hier
- 6. Príprava ROM súborov a hier pre Batocera Linux 43.1
- 6.1 Príprava pracovného prostredia na Linux Mint
- 6.2 Príprava MS-DOS hier pre DOSBox Pure
- 6.3 Príprava hier pre klasické herné konzoly
- 7. Konfigurácia DOSBox Pure a individuálne mapovanie MS-DOS hier
- 7.1 Kontrola emulačného jadra DOSBox Pure
- 7.2 Mapovanie arkádových tlačidiel na klávesnicu v DOSBox Pure
- 7.3 Kontrola a správa súborov
.rmpv RetroArchu - 7.4 Praktické nastavenie ovládania hier Dyna Blaster a Heretic
- 7.5 Výkonové obmedzenia Raspberry Pi 3 pri MS-DOS hrách
- 7.6 Zhrnutie konfigurácie DOSBox Pure a odporúčania
Čo je Batocera Linux?
Batocera Linux je bezplatná open-source linuxová distribúcia určená predovšetkým na emuláciu klasických herných konzol, arkádových automatov a starších počítačov.
Jej hlavnou výhodou je, že obsahuje pripravené prostredie na spúšťanie retro hier bez potreby inštalácie a konfigurácie každého emulátora samostatne.
O prehľadné používateľské rozhranie sa stará EmulationStation, prostredníctvom ktorého môžeme organizovať hernú knižnicu, vyberať jednotlivé herné platformy, nastavovať ovládače a spúšťať hry.
Batocera podporuje viacero hardvérových platforiem vrátane počítačov s architektúrou x86-64 a vybraných jednodoskových počítačov, medzi ktoré patrí aj Raspberry Pi.
Čo všetko Batocera umožňuje?
Medzi hlavné možnosti patria:
- Emulácia retro hier – podpora klasických konzol, arkádových automatov a starších počítačov vrátane MS-DOS hier.
- Správa hernej knižnice – prehľadné rozdelenie hier podľa jednotlivých systémov, obrázky, popisy a obľúbené tituly.
- Podpora herných ovládačov – používanie joystickov, USB a Bluetooth gamepadov či vybraných GPIO ovládačov.
- Sieťová správa – prenos hier a správa konfigurácií prostredníctvom lokálnej siete.
- Multimediálne centrum Kodi – možnosť prehrávania videí, hudby a ďalšieho multimediálneho obsahu.
Batocera ako multimediálne centrum
Batocera nemusí slúžiť výhradne na hranie hier. Súčasťou podporovaných systémových obrazov je aj multimediálne centrum Kodi.
Kodi umožňuje prehrávať filmy, seriály, hudbu a ďalší multimediálny obsah uložený na lokálnych diskoch alebo dostupný prostredníctvom sieťového úložiska NAS.
Vďaka tomu môže jedno zariadenie slúžiť ako retro herná konzola aj ako jednoduché multimediálne centrum.
Kodi možno podľa dostupnej konfigurácie aktivovať v nastaveniach systému:
MAIN MENU → SYSTEM SETTINGS → KODI SETTINGS
Treba však počítať s tým, že dostupnosť Kodi a výkon prehrávania závisia od konkrétnej hardvérovej platformy, systémového obrazu a použitého formátu videa.
V mojom prípade je prioritou predovšetkým emulácia retro hier. Kodi predstavuje ďalšiu zaujímavú možnosť využitia Batocery, ktorú môžem otestovať aj na Raspberry Pi 3.
Minimálne hardvérové požiadavky
Batocera nemá jediné univerzálne minimálne hardvérové požiadavky. Závisia od zvolenej hardvérovej platformy a od hier, ktoré chceme emulovať.
Pre inštaláciu na Raspberry Pi 3 Model B je vhodné pripraviť nasledujúce vybavenie:
| Komponent | Požiadavka alebo odporúčanie |
|---|---|
| Jednodoskový počítač | Raspberry Pi 3 Model B alebo kompatibilný model s príslušným obrazom Batocery |
| Procesor a RAM | Hardvér Raspberry Pi 3 s procesorom ARM Cortex-A53 a 1 GB RAM |
| Pamäťová karta | microSD, minimálne 16 GB, odporúčané 32 GB alebo viac |
| Napájanie | Stabilný a kvalitný napájací zdroj vhodný pre Raspberry Pi 3 |
| Obrazový výstup | Kompatibilný displej pripojený k Raspberry Pi |
| Ovládanie | USB gamepad, klávesnica alebo správne nakonfigurovaný GPIO joystick |
| Úložisko hier | microSD alebo voliteľný externý USB disk či SSD |
| Sieťové pripojenie | Odporúčané na správu systému a prenos hier |
Pre samotné spustenie Batocery nie je potrebné externé SSD. V mojom projekte som ho však použil na oddelenie knižnice hier od systémovej konfigurácie.
Dôležité: Minimálne požiadavky na spustenie operačného systému nie sú totožné s požiadavkami na plynulú emuláciu všetkých herných platforiem.
Raspberry Pi 3 si poradí s množstvom klasických 8-bitových a 16-bitových hier, no pri náročnejších systémoch a niektorých MS-DOS tituloch treba počítať s výkonovými obmedzeniami.
Práve tieto obmedzenia som si overil pri testovaní hry Blood, ktorej sa venujem v ďalšej časti dokumentácie.
Viac informácií o projekte a dostupných systémových obrazoch nájdeme na oficiálnej stránke:
Arkádové automaty neodmysliteľne patria k histórii počítačových hier. Aj dnes majú svoje čaro – najmä keď si na nich môžeme zahrať klasické tituly, ktoré si pamätáme z detstva.
V roku 2021 som sa pustil do zostavenia vlastného arkádového automatu Waveshare Arcade-101-1P, ktorého základom je minipočítač Raspberry Pi 3. Pôvodne som na emuláciu retro hier využíval operačný systém RetroPie. Celý postup zostavenia som zdokumentoval v pôvodnom článku Arkádový automat Arcade-101.
Po niekoľkých rokoch som sa rozhodol automat opäť oživiť a modernizovať. Tentoraz som zvolil Batocera Linux 43.1, systém určený na emuláciu retro herných konzol a počítačov.
Cieľom modernizácie nebolo iba spustiť staré hry. Chcel som vytvoriť stabilné a pohodlne ovládateľné herné zariadenie, pri ktorom nebude potrebné používať externú klávesnicu ani myš.
Modernizácia zahŕňala konfiguráciu GPIO joysticku a arkádových tlačidiel, sprevádzkovanie zvukovej karty WM8960, pripojenie externého SSD úložiska, prípravu hier a individuálne nastavenie emulátorov.
Samostatnou výzvou bolo spúšťanie klasických MS-DOS hier prostredníctvom DOSBox Pure. Pri tituloch ako Commander Keen, Duke Nukem 2, Dyna Blaster či Heretic bolo potrebné vyriešiť mapovanie klávesnice na arkádové tlačidlá, ovládanie hier a ich bezpečné ukončovanie.
V tomto článku postupne predstavím jednotlivé kroky modernizácie vrátane použitých príkazov, konfiguračných súborov, riešených problémov a praktických skúseností z testovania.
Výsledkom má byť plnohodnotný arkádový automat, na ktorom si možno pohodlne zahrať retro klasiky priamo pomocou joysticku a farebných tlačidiel.
1. Použitý hardvér
Základom celého projektu je arkádový automat Waveshare Arcade-101-1P, ktorý som pôvodne zostavil v roku 2021. Jeho hlavnou výhodou je kompaktné vyhotovenie, klasický arkádový joystick a farebné tlačidlá pripomínajúce herné automaty z minulosti.
Srdcom zariadenia je Raspberry Pi 3 Model B, na ktorom je nainštalovaný operačný systém Batocera Linux 43.1. Napriek staršiemu hardvéru dokáže Raspberry Pi 3 bez väčších problémov emulovať množstvo klasických herných konzol a počítačov.
1.1 Hardvérová konfigurácia
| Komponent | Použitý hardvér |
|---|---|
| Arkádový automat | Waveshare Arcade-101-1P |
| Jednodoskový počítač | Raspberry Pi 3 Model B |
| Procesor | Broadcom BCM2837, ARM Cortex-A53 |
| Operačná pamäť | 1 GB RAM |
| Displej | LCD, rozlíšenie 1024 × 600 |
| Ovládanie | GPIO arkádový joystick a farebné tlačidlá |
| Zvuk | WM8960 Audio HAT |
| Systémové úložisko | microSD karta |
| Úložisko hier | Externý USB SSD, 64 GB |
| Operačný systém | Batocera Linux 43.1 |
1.2 Rozdelenie úložísk
Pri modernizácii som sa rozhodol oddeliť operačný systém od samotných hier.
MicroSD karta slúži na spúšťanie operačného systému Batocera a uchovávanie systémových konfigurácií.
Externý USB SSD je určený na ukladanie ROM súborov a hier pre jednotlivé emulátory. Je naformátovaný súborovým systémom EXT4 a pripojený do adresára /userdata/roms.
Toto riešenie umožňuje rozširovať zbierku hier bez potreby ukladať všetky dáta na microSD kartu.
1.3 Arkádové ovládanie
Arkádový automat Waveshare Arcade-101-1P je vybavený klasickým joystickom a ôsmimi farebnými tlačidlami, ktoré sú pripojené prostredníctvom GPIO rozhrania Raspberry Pi 3.
Na rozdiel od bežných USB herných ovládačov bolo potrebné zabezpečiť, aby operačný systém Batocera Linux správne rozpoznával jednotlivé GPIO vstupy a dokázal ich priradiť k funkciám herného ovládača.
Na ovládacom paneli sa nachádzajú tlačidlá označené A, B, X, Y, L1, R1, START a SELECT. Ich fyzické rozloženie je znázornené na nasledujúcom obrázku.
Pri konfigurácii som musel zohľadniť aj skutočnosť, že jednotlivé emulátory používajú odlišné ovládacie schémy. Najväčšiu pozornosť si vyžadovali klasické MS-DOS hry, pri ktorých bolo potrebné namapovať klávesy pôvodnej počítačovej klávesnice na arkádové tlačidlá.
Samostatnou úlohou bolo nastavenie kombinácie tlačidiel na bezpečné ukončovanie hier a návrat do rozhrania EmulationStation.
Podrobnému nastaveniu GPIO joysticku, testovaniu jednotlivých tlačidiel a konfigurácii ovládania sa budem venovať v kapitole 3.
2. Inštalácia Batocera Linux 43.1
Po príprave hardvéru som pristúpil k nahradeniu pôvodného systému RetroPie operačným systémom Batocera Linux 43.1.
Batocera je linuxová distribúcia zameraná na emuláciu klasických herných konzol, arkádových automatov a počítačov. Jej súčasťou je grafické rozhranie EmulationStation, ktoré umožňuje pohodlné prehliadanie, organizovanie a spúšťanie hier.
V nasledujúcich krokoch si ukážeme prípravu microSD karty, prvé spustenie systému, povolenie vzdialeného prístupu cez SSH a základnú kontrolu konfigurácie.
2.1 Stiahnutie operačného systému
Inštalačný obraz operačného systému Batocera Linux je dostupný na oficiálnej stránke:
Pri sťahovaní je potrebné vybrať obraz určený pre Raspberry Pi 3, pretože jednotlivé modely Raspberry Pi môžu vyžadovať odlišné systémové obrazy.
V mojom prípade používam nasledujúcu konfiguráciu:
- Operačný systém: Batocera Linux
- Verzia: 43.1
- Dátum zostavenia: 30. mája 2026
- Hardvér: Raspberry Pi 3 Model B
- Architektúra systému: aarch64
Po stiahnutí príslušného systémového obrazu môžeme pokračovať jeho zápisom na microSD kartu.
2.2 Príprava microSD karty
Po stiahnutí obrazu operačného systému Batocera Linux je potrebné pripraviť microSD kartu, z ktorej bude Raspberry Pi 3 spúšťať operačný systém.
Na zápis systémového obrazu môžeme použiť napríklad aplikáciu Raspberry Pi Imager alebo balenaEtcher. Obidve umožňujú zapisovať obraz operačného systému na pamäťovú kartu.
V mojom prípade bol postup nasledujúci:
- Vložil som microSD kartu do čítačky kariet pripojenej k počítaču.
- Spustil som aplikáciu na zápis systémových obrazov.
- Vybral som stiahnutý obraz Batocera Linux určený pre Raspberry Pi 3.
- Ako cieľové zariadenie som zvolil microSD kartu.
- Spustil som zápis operačného systému.
- Po dokončení zápisu a overení dát som kartu bezpečne odpojil od počítača.
Upozornenie: Zápis systémového obrazu odstráni pôvodné dáta na vybranej microSD karte. Pred zápisom je preto potrebné skontrolovať správnosť cieľového zariadenia a v prípade potreby zálohovať jeho obsah.
Po úspešnom zápise je microSD karta pripravená na vloženie do Raspberry Pi 3.
Samotné hry budú neskôr uložené na externom USB SSD. MicroSD karta bude slúžiť predovšetkým na spúšťanie Batocery a uchovávanie jej systémovej konfigurácie.
2.3 Prvé spustenie Batocery
Po úspešnom zápise operačného systému som vložil pripravenú microSD kartu do Raspberry Pi 3 a zapol arkádový automat.
Pri prvom spustení Batocera inicializuje systémové prostredie a podľa potreby rozšíri dátový oddiel na dostupnú kapacitu microSD karty. Tento proces môže trvať dlhšie než bežné spustenie systému.
Po dokončení inicializácie sa zobrazí grafické používateľské rozhranie EmulationStation, ktoré slúži na správu herných systémov, prehliadanie knižnice hier a spúšťanie jednotlivých emulátorov.
V tejto fáze ešte nebolo všetko pripravené na používanie arkádového automatu. Bolo potrebné nakonfigurovať najmä GPIO joystick a tlačidlá, zvukovú kartu WM8960 a externé úložisko s hrami.
Pripojenie do lokálnej siete
Pre jednoduchšiu konfiguráciu som Raspberry Pi 3 pripojil do lokálnej siete. Sieťové pripojenie umožňuje vzdialenú administráciu prostredníctvom SSH a prenos hier z počítača s Linux Mint.
Sieťové nastavenia možno skontrolovať v grafickom rozhraní:
MAIN MENU → NETWORK SETTINGS
Po úspešnom pripojení zariadenie získa IP adresu prostredníctvom DHCP servera.
V mojom prípade Raspberry Pi počas konfigurácie používalo adresu 10.10.8.56.
Pridelenú IP adresu je vhodné poznačiť si, pretože ju budeme používať pri ďalšej konfigurácii cez SSH.
Dôležité: Pri našej inštalácii Batocera 43.1 nebolo možné okamžite nadviazať SSH spojenie. Vzdialený prístup bolo potrebné najskôr povoliť v nastaveniach systému. Tomuto postupu sa budeme venovať v nasledujúcej kapitole.
2.4 Povolenie SSH a vzdialená správa Batocery
Na ďalšiu konfiguráciu arkádového automatu som využíval vzdialený prístup prostredníctvom protokolu SSH (Secure Shell). Ten umožňuje spravovať Raspberry Pi 3 z iného počítača bez potreby pripájať externý monitor alebo klávesnicu.
V mojom prípade som na vzdialenú administráciu používal počítač s operačným systémom Linux Mint.
2.4.1 Povolenie SSH
Pri prvom pokuse o pripojenie k Batocere nebolo SSH spojenie dostupné. Pred pokračovaním bolo preto potrebné povoliť SSH službu.
Batocera umožňuje nastavenie vzdialeného prístupu prostredníctvom konfiguračného súboru:
/userdata/system/batocera.conf
Pre povolenie SSH sa používa nastavenie:
system.ssh.enabled=1
Toto nastavenie zabezpečuje povolenie SSH prístupu pri štarte systému.
SSH môže byť v niektorých inštaláciách povolené už predvolene. Vždy je preto vhodné skontrolovať jeho aktuálny stav.
2.4.2 Zistenie IP adresy zariadenia
V grafickom rozhraní Batocery otvoríme:
MAIN MENU → NETWORK SETTINGS
V sieťových nastaveniach nájdeme IP adresu, ktorú Raspberry Pi získalo prostredníctvom DHCP servera.
Počas mojej konfigurácie bola adresa zariadenia:
10.10.8.56
IP adresa sa môže po reštarte alebo opätovnom pripojení do siete zmeniť. Ak chceme používať stabilnú adresu, môžeme na DHCP serveri vytvoriť rezerváciu.
2.4.3 Pripojenie cez SSH z Linux Mint
Po povolení SSH služby v operačnom systéme Batocera Linux som pristúpil k nastaveniu vzdialeného administrátorského prístupu.
V mojom prípade bolo potrebné v grafickom rozhraní Batocery aktivovať aj bezpečnostné nastavenie, ktoré zabezpečilo vygenerovanie nového hesla používateľa root.
V hlavnom menu otvoríme:
MAIN MENU → SYSTEM SETTINGS → SECURITY
Následne aktivujeme možnosť:
ENFORCE SECURITY
Po aktivovaní tejto funkcie a reštartovaní systému Batocera vygeneruje nové, náhodné heslo administrátorského účtu.
Toto heslo môžeme zobraziť v rovnakej sekcii nastavení, v položke ROOT PASSWORD.
Dôležité: Po aktivovaní zabezpečenia už nepoužívame predvolené heslo linux, ale heslo vygenerované systémom Batocera.
Pripojenie z Linux Mint
Na počítači s operačným systémom Linux Mint otvoríme terminál a zadáme:
ssh root@10.10.8.56
V mojom prípade bola IP adresa Raspberry Pi 10.10.8.56. Pri inej inštalácii je potrebné použiť aktuálnu IP adresu zariadenia.
Pri prvom pripojení môže SSH klient požiadať o potvrdenie odtlačku verejného kľúča servera. Po overení jeho správnosti potvrdíme pripojenie zadaním yes.
Následne zadáme heslo vygenerované Batocerou, ktoré sme získali v nastaveniach zabezpečenia.
Pri zadávaní hesla sa v termináli z bezpečnostných dôvodov nezobrazujú žiadne znaky.
Po úspešnom prihlásení získame prístup k príkazovému riadku Batocery.
Funkčnosť pripojenia môžeme overiť príkazom:
uname -m
V mojom prípade systém vrátil:
aarch64
Vzdialené pripojenie ukončíme príkazom:
exit
Bezpečnostné odporúčanie: Vygenerované administrátorské heslo si bezpečne uschováme a nikdy ho nezverejňujeme v dokumentácii ani na snímkach obrazovky. SSH prístup odporúčam používať iba v dôveryhodnej lokálnej sieti.
2.4.4 Overenie konfigurácie
Po pripojení môžeme skontrolovať, či je SSH povolené aj v hlavnom konfiguračnom súbore:
grep -n '^system.ssh.enabled=' /userdata/system/batocera.conf
Očakávané nastavenie:
system.ssh.enabled=1
Ak príkaz nič nevypíše, znamená to, že uvedená položka nie je v konfiguračnom súbore výslovne zapísaná. Samotný prázdny výpis ešte neznamená, že SSH služba nefunguje.
Funkčnosť služby môžeme overiť aj príkazom:
ps | grep '[d]ropbear'
Batocera používa SSH server Dropbear, ktorý zabezpečuje vzdialené pripojenie.
2.4.5 Bezpečnostné odporúčania
Keďže SSH poskytuje administrátorský prístup s oprávneniami používateľa root, odporúča sa dodržiavať základné bezpečnostné pravidlá:
- Zmeniť predvolené heslo správcu.
- Povoliť SSH iba v dôveryhodnej lokálnej sieti.
- Nevystavovať SSH port priamo do internetu.
- V prípade potreby využívať autentifikáciu pomocou SSH kľúčov.
Po úspešnom sprevádzkovaní SSH bolo možné vykonávať všetky ďalšie konfigurácie vzdialene z Linux Mint, vrátane nastavenia GPIO joysticku, zvukovej karty WM8960 a externého SSD úložiska.
2.5 Overenie hardvéru a operačného systému
Po úspešnom pripojení cez SSH som najskôr overil základné informácie o hardvéri a operačnom systéme Batocera.
Tieto údaje sú dôležité pred ďalšou konfiguráciou, pretože umožňujú identifikovať model Raspberry Pi, architektúru systému, dostupnú operačnú pamäť a stav úložísk.
2.5.1 Identifikácia modelu Raspberry Pi
Model zariadenia zistíme príkazom:
cat /proc/device-tree/model
V mojom prípade ide o:
Raspberry Pi 3 Model B Rev 1.2
2.5.2 Overenie architektúry procesora
Architektúru bežiaceho systému overíme pomocou:
uname -m
Výstup:
aarch64
Hodnota aarch64 znamená, že operačný systém používa 64-bitovú architektúru ARM.
2.5.3 Overenie verzie Batocery
Verziu operačného systému môžeme zistiť príkazom:
cat /etc/os-release
Prípadne môžeme zobraziť identifikáciu zostavenia:
cat /etc/batocera.version
V mojom prípade používam Batocera Linux 43.1, zostavenú 30. mája 2026.
2.5.4 Kontrola operačnej pamäte
Dostupnú operačnú pamäť zobrazíme príkazom:
free -h
Raspberry Pi 3 Model B disponuje 1 GB RAM, pričom časť pamäte využíva operačný systém a grafický subsystém.
Tento údaj je dôležitý najmä pri náročnejších emulátoroch, napríklad DOSBox Pure.
2.5.5 Kontrola úložísk
Obsadenie diskov a súborových systémov zobrazíme:
df -h
Pre podrobnejší prehľad pripojených blokových zariadení môžeme použiť:
lsblk -f
V mojom zapojení používam microSD kartu pre systém Batocera a externý 64 GB USB SSD na ukladanie hier.
Správne pripojenie adresára s hrami overíme:
findmnt -T /userdata/roms
Po konfigurácii externého SSD je očakávaným výsledkom zariadenie /dev/sda1 so súborovým systémom ext4, pripojené do /userdata/roms.
Podrobnému nastaveniu externého SSD sa budem venovať v samostatnej kapitole.
2.5.6 Kontrola teploty procesora
Pri emulácii náročnejších hier je vhodné sledovať aj teplotu procesora:
vcgencmd measure_temp
Kontrolu prípadného obmedzovania výkonu procesora vykonáme príkazom:
vcgencmd get_throttled
Hodnota:
throttled=0x0
znamená, že neboli zaznamenané príznaky podpätia ani teplotného obmedzovania výkonu od posledného spustenia či resetovania príslušných príznakov.
Tieto príkazy som využil aj pri testovaní náročnejšej MS-DOS hry Blood, kde bolo potrebné rozlíšiť výkonové obmedzenia emulátora od prípadného prehrievania Raspberry Pi.
Po overení základného stavu hardvéru a systému môžeme pristúpiť ku konfigurácii arkádového joysticku, tlačidiel a ďalších hardvérových komponentov.
2.6 Dôležité adresáre a konfiguračné súbory Batocery
Pred ďalšou konfiguráciou je vhodné oboznámiť sa so základnou adresárovou štruktúrou operačného systému Batocera Linux.
Na rozdiel od bežných linuxových distribúcií je systém Batocera navrhnutý ako špecializované prostredie na emuláciu hier. Väčšina používateľských nastavení, konfiguračných súborov a hier sa nachádza v adresári /userdata.
2.6.1 Základná adresárová štruktúra
| Adresár alebo súbor | Účel |
|---|---|
/userdata | Používateľské dáta a nastavenia |
/userdata/roms | ROM súbory a hry |
/userdata/bios | BIOS súbory jednotlivých emulovaných systémov |
/userdata/saves | Uložené pozície a dáta hier |
/userdata/system | Používateľské konfigurácie |
/userdata/system/batocera.conf | Hlavný konfiguračný súbor Batocery |
/userdata/system/configs/retroarch | Konfigurácia emulátora RetroArch |
/userdata/system/configs/emulationstation | Nastavenia grafického rozhrania a ovládačov |
/boot/config.txt | Hardvérová konfigurácia Raspberry Pi |
2.6.2 Hlavný konfiguračný súbor
Jedným z najdôležitejších súborov je:
/userdata/system/batocera.conf
Obsahuje nastavenia operačného systému, emulátorov a hardvérových komponentov.
Jeho obsah môžeme zobraziť príkazom:
cat /userdata/system/batocera.conf
Pred vykonaním zmien je vhodné vytvoriť zálohu:
cp -a /userdata/system/batocera.conf /userdata/system/batocera.conf.bak
V prípade potreby tak môžeme obnoviť predchádzajúcu konfiguráciu.
2.6.3 Konfigurácia RetroArchu
Pri testovaní klasických MS-DOS hier sme využívali emulátor DOSBox Pure, ktorý je integrovaný do prostredia RetroArch.
Jeho konfiguračné súbory sa nachádzajú v adresári:
/userdata/system/configs/retroarch
Dôležité sú napríklad:
retroarchcustom.cfg– konfigurácia RetroArchu.cores/retroarch-core-options.cfg– nastavenia jednotlivých emulačných jadier.config/remaps/– mapovania herných ovládačov.
Pri individuálnom mapovaní DOS hier bolo potrebné dávať pozor na spoločné konfiguračné profily, pretože viaceré hry používali rovnaké emulačné jadro DOSBox Pure.
2.6.4 Oddelenie systémových nastavení a hier
Pri modernizácii arkádového automatu som ponechal systémové konfigurácie na microSD karte, zatiaľ čo adresár /userdata/roms využíva externý USB SSD.
Správne pripojenie úložiska môžeme kedykoľvek overiť:
findmnt -T /userdata/roms
Toto rozdelenie je dôležité aj pri zálohovaní. Samotná záloha ROM súborov na externom SSD totiž neobsahuje všetky systémové konfigurácie uložené v /userdata/system.
Pred väčšími úpravami odporúčam zálohovať nielen hry, ale aj konfiguráciu Batocery, nastavenia ovládačov a príslušné súbory emulátorov.
Po oboznámení sa s adresárovou štruktúrou môžeme pristúpiť ku konfigurácii GPIO joysticku a arkádových tlačidiel.
3. Konfigurácia GPIO joysticku a arkádových tlačidiel
Jednou z najdôležitejších častí modernizácie arkádového automatu Waveshare Arcade-101-1P bolo sprevádzkovanie pôvodného joysticku a farebných tlačidiel v operačnom systéme Batocera Linux 43.1.
Na rozdiel od bežného USB gamepadu sú ovládacie prvky automatu pripojené prostredníctvom GPIO rozhrania Raspberry Pi 3. Systém ich preto musí sprístupniť ako vstupné zariadenie, ktoré následne dokážu využívať EmulationStation a jednotlivé emulátory.
Na tento účel som použil ovládač mk_arcade_joystick_rpi, vďaka ktorému Batocera rozpoznáva GPIO joystick a tlačidlá ako herný ovládač.
3.1 Identifikácia GPIO ovládača
Po konfigurácii GPIO vstupov bolo potrebné overiť, či operačný systém správne rozpoznáva arkádový ovládač.
Najskôr môžeme skontrolovať načítanie príslušného jadrového modulu:
lsmod | grep mk_arcade
Ak je modul načítaný, mal by sa vo výstupe objaviť mk_arcade_joystick_rpi.
Následne overíme dostupné joystickové zariadenia:
ls -lah /dev/input/js*
V mojom prípade bol arkádový joystick dostupný ako:
/dev/input/js0
Podrobnejšiu identifikáciu zariadenia získame pomocou nástroja jstest:
jstest --event /dev/input/js0
Výpis obsahoval:
Joystick (GPIO Custom Controller 1) has 2 axes (X, Y)
and 9 buttons (BtnA, BtnB, BtnX, BtnY, BtnTL, BtnTR, BtnSelect, BtnStart, BtnMode).
Z výsledku vidíme, že Batocera rozpoznala zariadenie GPIO Custom Controller 1 s dvoma osami a deviatimi logickými tlačidlami.
Pri pohybe joysticku alebo stláčaní farebných tlačidiel nástroj jstest priebežne vypisuje udalosti. Takýmto spôsobom možno zistiť, či jednotlivé ovládacie prvky správne reagujú a aké čísla vstupov im systém priraďuje.
Test ukončíme klávesovou kombináciou:
Ctrl + C
Poznámka: Označenia a čísla vstupov predstavujú logické mapovanie ovládača. Nemusia priamo zodpovedať fyzickému rozloženiu tlačidiel na arkádovom paneli. Práve preto je dôležité overiť ich pomocou jstest pred nastavovaním jednotlivých emulátorov.
3.2 Aktivácia GPIO ovládača v Batocere
Aby bolo možné používať pôvodný joystick a arkádové tlačidlá automatu Waveshare Arcade-101-1P, bolo potrebné aktivovať podporu GPIO ovládačov v operačnom systéme Batocera Linux 43.1.
Na tento účel Batocera využíva jadrový modul mk_arcade_joystick_rpi, ktorý sprístupňuje ovládacie prvky pripojené ku GPIO pinom Raspberry Pi ako herný ovládač.
Konfigurácia sa vykonáva prostredníctvom hlavného konfiguračného súboru:
/userdata/system/batocera.conf
3.2.1 Zálohovanie pôvodnej konfigurácie
Pred vykonaním akýchkoľvek zmien v konfigurácii Batocery je vhodné vytvoriť zálohu pôvodného konfiguračného súboru.
Po pripojení cez SSH zadáme:
cp -a /userdata/system/batocera.conf /userdata/system/batocera.conf.bak-gpio
Týmto príkazom vytvoríme záložnú kópiu súboru batocera.conf s názvom batocera.conf.bak-gpio.
V prípade problémov môžeme pôvodnú konfiguráciu obnoviť príkazom:
cp -a /userdata/system/batocera.conf.bak-gpio /userdata/system/batocera.conf
Upozornenie: Obnovenie zo zálohy prepíše aktuálnu konfiguráciu, preto tento príkaz použijeme iba v prípade potreby.
3.2.2 Aktivácia GPIO joysticku
Po vytvorení zálohy môžeme pristúpiť k aktivácii GPIO joysticku a arkádových tlačidiel.
Hlavný konfiguračný súbor Batocery otvoríme pomocou textového editora nano:
nano /userdata/system/batocera.conf
Do konfiguračného súboru pridáme alebo upravíme nasledujúce riadky:
controllers.gpio.enabled=1
controllers.gpio.args="map=5 gpio=16,5,27,12,6,4,22,23,24,25,26,17,-1"
Toto nastavenie sa mi osvedčilo pri konfigurácii arkádového automatu Waveshare Arcade-101-1P s Raspberry Pi 3.
Význam jednotlivých parametrov:
| Parameter | Význam |
|---|---|
controllers.gpio.enabled=1 | Aktivuje podporu GPIO ovládača |
map=5 | Používa vlastné mapovanie GPIO vstupov |
gpio=16,5,... | Určuje GPIO piny priradené k jednotlivým vstupom ovládača |
-1 | Označuje nevyužitú pozíciu v mapovaní |
Po dokončení úprav uložíme súbor klávesovou kombináciou Ctrl + O, potvrdíme klávesom Enter a editor ukončíme pomocou Ctrl + X.
Upozornenie: Uvedené GPIO mapovanie vychádza z konkrétneho zapojenia môjho arkádového automatu. Pri inom zapojení joysticku alebo tlačidiel sa môžu používať odlišné GPIO piny. Konfiguráciu preto nemožno považovať za univerzálnu.
Zároveň je dôležité skontrolovať, či sa v súbore batocera.conf nenachádzajú duplicitné nastavenia controllers.gpio.enabled alebo controllers.gpio.args s rozdielnymi hodnotami.
3.2.3 Kontrola uloženej konfigurácie
Po úprave konfiguračného súboru je vhodné overiť, či sa nastavenia GPIO joysticku správne uložili.
Na kontrolu použijeme príkaz:
grep -n '^controllers.gpio' /userdata/system/batocera.conf
Príkaz vyhľadá všetky riadky začínajúce na controllers.gpio a zároveň zobrazí ich čísla v konfiguračnom súbore.
V mojom prípade je požadovaná konfigurácia nasledujúca:
controllers.gpio.enabled=1
controllers.gpio.args="map=5 gpio=16,5,27,12,6,4,22,23,24,25,26,17,-1"
Čísla riadkov vo výstupe príkazu grep sa môžu líšiť podľa obsahu konfiguračného súboru.
Ak sa vo výpise nachádza viacero aktívnych riadkov s rovnakým konfiguračným parametrom, je potrebné skontrolovať, či si navzájom neodporujú.
Konfiguračný súbor môžeme v prípade potreby znova otvoriť:
nano /userdata/system/batocera.conf
Dôležité: Správny zápis konfigurácie ešte neznamená, že je GPIO ovládač úspešne načítaný. Jeho skutočnú funkčnosť overíme až po reštartovaní Raspberry Pi a následnej kontrole vstupného zariadenia.
3.2.4 Reštart Raspberry Pi
Po uložení a kontrole konfigurácie GPIO joysticku je potrebné reštartovať Raspberry Pi, aby Batocera pri ďalšom štarte načítala nové nastavenia.
Reštart vykonáme cez SSH príkazom:
reboot
Po vykonaní príkazu sa SSH spojenie preruší a Raspberry Pi začne proces reštartovania.
Po opätovnom spustení systému sa z počítača s Linux Mint znova pripojíme:
ssh root@10.10.8.56
Pri prihlasovaní použijeme administrátorské heslo vygenerované systémom Batocera po aktivovaní funkcie ENFORCE SECURITY.
Poznámka: Uvedená IP adresa platila pre moje zariadenie počas konfigurácie. Ak Raspberry Pi získava adresu prostredníctvom DHCP, je vhodné pred pripojením overiť jej aktuálnu hodnotu v sieťových nastaveniach Batocery.
Po úspešnom prihlásení môžeme pristúpiť ku kontrole načítania GPIO ovládača.
3.2.5 Overenie načítania GPIO modulu
Po reštartovaní Raspberry Pi je potrebné overiť, či operačný systém Batocera Linux správne načítal GPIO ovládač a sprístupnil joystick spolu s arkádovými tlačidlami.
Kontrola jadrového modulu
Najskôr overíme načítanie modulu mk_arcade_joystick_rpi:
lsmod | grep mk_arcade
Ak je ovládač úspešne načítaný, vo výstupe sa zobrazí názov modulu mk_arcade_joystick_rpi.
Kontrola vstupného zariadenia
Následne skontrolujeme dostupné joystickové zariadenia:
ls -lah /dev/input/js*
V mojom prípade bol GPIO joystick dostupný ako:
/dev/input/js0
Identifikácia joysticku a tlačidiel
Na podrobnejšiu diagnostiku som použil nástroj jstest:
jstest --event /dev/input/js0
Batocera rozpoznala arkádový ovládač pod názvom GPIO Custom Controller 1.
Výpis zariadenia obsahoval:
Joystick (GPIO Custom Controller 1) has 2 axes (X, Y)
and 9 buttons (BtnA, BtnB, BtnX, BtnY, BtnTL, BtnTR, BtnSelect, BtnStart, BtnMode).
Z výsledku vidíme, že operačný systém rozpoznal dve osi joysticku a deväť logických tlačidiel.
Testovanie jednotlivých vstupov
Po spustení príkazu jstest môžeme postupne pohybovať joystickom do všetkých smerov a stláčať jednotlivé farebné tlačidlá.
V termináli sa zobrazujú udalosti, ktoré obsahujú typ vstupu, jeho číslo a aktuálnu hodnotu.
Pri diagnostike sa stretávame najmä s týmito typmi udalostí:
| Typ udalosti | Význam |
|---|---|
type 1 | Stlačenie alebo uvoľnenie tlačidla |
type 2 | Zmena polohy osi joysticku |
value 1 | Stlačené tlačidlo |
value 0 | Uvoľnené tlačidlo alebo neutrálna poloha osi |
value -32767 alebo 32767 | Krajné hodnoty osi joysticku v našom testovaní |
Pri testovaní som zistil, že niektoré fyzické tlačidlá sa v systéme hlásili ako osi joysticku namiesto bežných tlačidiel.
Táto skutočnosť bola dôležitá najmä pri mapovaní funkcií START, SELECT a HOTKEY v EmulationStation a RetroArchu.
Diagnostiku ukončíme kombináciou:
Ctrl + C
Výsledok: GPIO joystick a arkádové tlačidlá boli v Batocere úspešne rozpoznané ako zariadenie GPIO Custom Controller 1, dostupné cez /dev/input/js0.
Týmto sme overili funkčnosť GPIO ovládača na úrovni operačného systému. V ďalšom kroku bude potrebné správne priradiť jednotlivým vstupom ich funkcie v grafickom rozhraní EmulationStation.
3.3 Mapovanie joysticku a tlačidiel v EmulationStation
Po úspešnej aktivácii GPIO ovládača a overení jeho funkčnosti bolo potrebné priradiť jednotlivým smerom joysticku a farebným tlačidlám správne funkcie v grafickom rozhraní EmulationStation.
Operačný systém Batocera síce rozpoznal zariadenie GPIO Custom Controller 1, ale samotné rozpoznanie ovládača ešte nezaručuje správne mapovanie jeho vstupov.
V mojom prípade bola konfigurácia špecifická tým, že niektoré fyzické tlačidlá sa hlásili ako osi joysticku namiesto klasických tlačidiel.
3.3.1 Spustenie konfigurácie ovládača
V hlavnom rozhraní Batocery otvoríme:
MAIN MENU → CONTROLLER & BLUETOOTH SETTINGS → CONTROLLER MAPPING
Následne podržíme niektoré tlačidlo na arkádovom paneli, aby systém rozpoznal ovládač, ktorý chceme nakonfigurovať.
EmulationStation nás postupne vyzve na priradenie smerov joysticku, akčných tlačidiel a ďalších funkcií.
Postupne nastavíme požadované vstupy podľa pokynov na obrazovke.
Ak náš arkádový panel nemá samostatné tlačidlo pre niektorú požadovanú funkciu, môžeme danú položku preskočiť podržaním už priradeného tlačidla.
3.3.2 Rozloženie arkádových tlačidiel
Na mojom automate sa nachádza osem farebných tlačidiel s nasledujúcimi označeniami:
| Označenie | Farba |
|---|---|
| SELECT | Žltá |
| START | Žltá |
| Y | Zelená |
| X | Červená |
| L1 | Ružová |
| B | Žltá |
| A | Modrá |
| R1 | Biela |
Fyzické rozloženie jednotlivých tlačidiel je znázornené na obrázku v kapitole 1.3 Arkádové ovládanie.
Pri mapovaní je dôležité rozlišovať medzi označením tlačidla na ovládacom paneli a jeho skutočnou funkciou v konkrétnej hre.
Jednotlivé emulátory môžu využívať odlišné ovládacie schémy, preto správne nastavenie tlačidiel v EmulationStation ešte neznamená, že budú všetky hry fungovať bez ďalších úprav.
3.3.3 Kontrola uloženej konfigurácie
EmulationStation ukladá konfiguráciu herných ovládačov do súboru:
/userdata/system/configs/emulationstation/es_input.cfg
Po pripojení cez SSH môžeme vyhľadať konfiguráciu GPIO ovládača:
grep -n -A 18 'deviceName="GPIO Custom Controller 1"' /userdata/system/configs/emulationstation/es_input.cfg
V mojom prípade sa v konfigurácii nachádzali napríklad nasledujúce hodnoty:
<input name="select" type="button" id="2" value="1" code="307" />
<input name="start" type="axis" id="1" value="1" code="1" />
<input name="hotkey" type="button" id="2" value="1" code="307" />
Z uvedeného výpisu vidíme, že funkcia START bola priradená k osi joysticku, zatiaľ čo SELECT a HOTKEY používali rovnaký logický vstup.
To bolo dôležité pri neskoršej konfigurácii klávesových skratiek v RetroArchu.
Upozornenie: Uvedené hodnoty vychádzajú z konkrétneho GPIO zapojenia môjho automatu. Pri inom zapojení môžu byť čísla vstupov aj ich typy odlišné.
3.3.4 Overenie funkčnosti ovládania
Po dokončení mapovania som overil základné ovládanie prostredia EmulationStation.
Pomocou joysticku bolo možné prechádzať jednotlivé položky menu, zatiaľ čo akčné tlačidlá slúžili na potvrdzovanie výberu a návrat do predchádzajúcej ponuky.
Následne som otestoval aj ovládanie hier.
Pri klasických herných konzolách bolo možné využívať štandardné mapovanie ovládača. Pri niektorých MS-DOS hrách však bolo potrebné individuálne priradiť klávesy pôvodnej počítačovej klávesnice k arkádovým tlačidlám.
Samostatnou výzvou bolo aj nastavenie kombinácie HOTKEY na bezpečné ukončovanie hier bez potreby reštartovania Raspberry Pi.
Tomuto nastaveniu sa budem venovať v nasledujúcej podkapitole.
Výsledkom konfigurácie bolo funkčné ovládanie hlavného rozhrania Batocery pomocou pôvodného GPIO joysticku a farebných arkádových tlačidiel.
Na nasledujúcom obrázku je zobrazené fyzické rozloženie joysticku a tlačidiel, ktoré bolo použité pri mapovaní ovládania v Batocere.

Takto to bude pôsobiť profesionálne a čitateľ sa v dokumentácii ľahko zorientuje.
3.4 Nastavenie HOTKEY a ukončovania hier
Po úspešnom nakonfigurovaní GPIO joysticku a arkádových tlačidiel bolo potrebné vyriešiť ešte jednu dôležitú funkciu – bezpečné ukončovanie hier a návrat do hlavného rozhrania EmulationStation.
Pri bežných herných ovládačoch sa na ukončenie emulátora často používa kombinácia tlačidiel HOTKEY + START.
V mojom prípade však bolo mapovanie neštandardné. Niektoré fyzické tlačidlá systém rozpoznával ako osi joysticku, čo komplikovalo použitie bežnej kombinácie.
Pri testovaní klasických MS-DOS hier sa preto ukázalo, že je potrebné nastaviť vlastnú kombináciu na ukončenie emulátora DOSBox Pure.
3.4.1 Kontrola nastavenia HOTKEY
Najskôr som skontroloval konfiguráciu RetroArchu, ktorá sa nachádza v súbore:
/userdata/system/configs/retroarch/retroarchcustom.cfg
Príslušné nastavenia môžeme vyhľadať pomocou príkazu:
grep -nE 'input_(enable_hotkey|exit_emulator|player1_start|player1_select)' /userdata/system/configs/retroarch/retroarchcustom.cfg
Pri testovaní sa v konfigurácii nachádzali napríklad tieto hodnoty:
input_enable_hotkey_btn = 2
input_enable_hotkey = "shift"
input_exit_emulator = "escape"
input_player1_start_axis = +1
input_player1_select_btn = 2
Z konfigurácie vyplýva, že funkcia HOTKEY bola priradená k logickému tlačidlu číslo 2, zatiaľ čo START bol rozpoznávaný ako kladná hodnota osi joysticku.
Toto neštandardné mapovanie bolo jedným z dôvodov, prečo sme pri ukončovaní hier nemohli jednoducho využiť bežnú kombináciu HOTKEY + START.
3.4.2 Zálohovanie konfigurácie
Pred úpravou hlavného konfiguračného súboru Batocery som vytvoril zálohu:
cp -a /userdata/system/batocera.conf /userdata/system/batocera.conf.bak-exit
Záloha umožňuje v prípade problémov obnoviť predchádzajúce nastavenia.
3.4.3 Nastavenie ukončovania MS-DOS hier
Hlavný konfiguračný súbor otvoríme príkazom:
nano /userdata/system/batocera.conf
Pre emuláciu MS-DOS hier cez RetroArch som použil nasledujúce nastavenie:
dos.retroarch.input_exit_emulator_btn=7
Týmto nastavením som pre MS-DOS hry určil logické tlačidlo číslo 7 ako tlačidlo pre ukončenie emulátora v kombinácii s funkciou HOTKEY.
Dôležité je, že ide o nastavenie pre MS-DOS hry spúšťané prostredníctvom RetroArchu. Nemožno automaticky predpokladať, že rovnaká konfigurácia bude platiť pre všetky ostatné emulátory.
Po vykonaní úprav súbor uložíme a ukončíme editor.
3.4.4 Overenie uloženej konfigurácie
Správnosť nastavenia skontrolujeme príkazom:
grep -n '^dos.retroarch.input_exit_emulator_btn=' /userdata/system/batocera.conf
Očakávaný výsledok:
dos.retroarch.input_exit_emulator_btn=7
Následne som spustil MS-DOS hru a otestoval ukončovanie pomocou fyzických tlačidiel na arkádovom paneli.
3.4.5 Funkčná kombinácia tlačidiel
V mojom konkrétnom zapojení sa osvedčila nasledujúca kombinácia:
Podržať pravé malé žlté tlačidlo HOTKEY a následne stlačiť zelené tlačidlo.
Postup ukončenia hry:
- Počas spustenej MS-DOS hry podržíme pravé malé žlté tlačidlo, ktoré používa funkciu HOTKEY.
- Pri jeho podržaní stlačíme zelené tlačidlo.
- RetroArch ukončí emulátor a systém sa vráti do rozhrania EmulationStation.
Túto kombináciu sa mi podarilo úspešne otestovať pri spúšťaní MS-DOS hier.
Výsledok: Po nastavení kombinácie HOTKEY a ukončovacieho tlačidla už nebolo potrebné pri odchode z hry reštartovať Raspberry Pi.
3.4.6 Núdzové ukončenie emulátora cez SSH
Počas testovania sa občas stalo, že emulátor nereagoval na ovládanie alebo sa nepodarilo hru štandardným spôsobom ukončiť.
V takom prípade bolo možné pripojiť sa k Batocere cez SSH a ukončiť proces RetroArchu príkazom:
pkill -TERM -x retroarch
Príkaz odošle procesu RetroArch signál na ukončenie.
Upozornenie: Ide o núdzový spôsob ukončenia emulátora. Neuložený postup v hre sa môže stratiť. Používame ho iba vtedy, keď štandardné ukončenie nefunguje.
Vďaka správnemu nastaveniu HOTKEY bolo možné používať arkádový automat podstatne pohodlnejšie, pretože spúšťanie aj ukončovanie podporovaných MS-DOS hier bolo dostupné priamo z ovládacieho panela.
4. Konfigurácia zvukovej karty WM8960 Audio HAT
Ďalšou dôležitou súčasťou modernizácie arkádového automatu Waveshare Arcade-101-1P bolo sprevádzkovanie zvukovej karty WM8960 Audio HAT, ktorá zabezpečuje prehrávanie zvuku prostredníctvom reproduktorov automatu.
Táto zvuková karta využíva rozhrania Raspberry Pi, predovšetkým I²C na riadenie zvukového kodeku a I²S na prenos digitálnych zvukových dát.
Pri prechode z RetroPie na Batocera Linux 43.1 bolo potrebné zabezpečiť správne načítanie ovládača WM8960 a nastaviť výstupné zvukové zariadenie.
Samotné rozpoznanie zvukovej karty totiž ešte neznamená, že na ňu operačný systém automaticky smeruje všetok zvuk.
4.1 Kontrola dostupných zvukových zariadení
Po pripojení do Batocery cez SSH môžeme najskôr skontrolovať, aké zvukové zariadenia systém rozpoznáva.
Použijeme príkaz:
cat /proc/asound/cards
Príkaz zobrazí zvukové karty rozpoznané systémom ALSA.
Ďalšou možnosťou je:
aplay -l
Tento príkaz zobrazí dostupné hardvérové zariadenia na prehrávanie zvuku, pokiaľ je nástroj aplay v systéme dostupný.
Pri správne načítanej zvukovej karte by sa mal vo výpise nachádzať záznam zodpovedajúci zvukovému zariadeniu WM8960.
Ak zvuková karta nie je rozpoznaná, je potrebné skontrolovať jej konfiguráciu a načítanie príslušného hardvérového ovládača.
4.2 Aktivácia WM8960 Audio HAT
Na aktiváciu podpory zvukovej karty som využil konfiguračné nástroje dostupné priamo v Batocere.
Najskôr som zadal príkaz:
batocera-settings-set system.power.switch WM8960_AUDIO_HAT
Následne som použil:
rpi_gpioswitch config WM8960_AUDIO_HAT
Hoci názov nastavenia system.power.switch môže pôsobiť nezvyčajne, Batocera používa mechanizmus rpi_gpioswitch aj na konfiguráciu niektorých prídavných modulov Raspberry Pi.
V mojom prípade tento postup umožnil aktivovať potrebnú konfiguráciu zvukovej karty WM8960.
Upozornenie: Tieto príkazy sú určené pre príslušnú konfiguráciu Raspberry Pi a Batocery. Pri inom modeli zvukového modulu nemusí byť postup rovnaký.
4.3 Kontrola hardvérovej konfigurácie Raspberry Pi
Po aktivácii zvukovej karty som skontroloval systémový konfiguračný súbor Raspberry Pi:
/boot/config.txt
Na vyhľadanie príslušných nastavení použijeme:
grep -nE 'i2c_arm|i2s|wm8960' /boot/config.txt
V mojej funkčnej konfigurácii sa nachádzali nasledujúce riadky:
dtparam=i2c_arm=on
dtparam=i2s=on
dtoverlay=wm8960-soundcard
Význam jednotlivých nastavení:
| Parameter | Význam |
|---|---|
dtparam=i2c_arm=on | Aktivuje I²C rozhranie používané na komunikáciu so zvukovým kodekom |
dtparam=i2s=on | Aktivuje digitálne zvukové rozhranie I²S |
dtoverlay=wm8960-soundcard | Aktivuje príslušné hardvérové nastavenie zvukovej karty WM8960 |
Tieto parametre sú dôležité na správne rozpoznanie a fungovanie zvukového modulu.
Dôležité: Ak sú už uvedené riadky v súbore prítomné a zvuková karta funguje, nie je potrebné ich pridávať opakovane ani meniť ďalšie nastavenia.
Pri ručných úpravách súboru /boot/config.txt je potrebné postupovať opatrne, pretože nesprávna konfigurácia môže ovplyvniť spustenie systému alebo fungovanie pripojeného hardvéru.
4.4 Reštart systému a kontrola zvukovej karty
Po aktivovaní konfigurácie zvukovej karty vykonáme reštart:
reboot
Po opätovnom spustení Batocery sa pripojíme cez SSH a overíme dostupné zvukové zariadenia:
cat /proc/asound/cards
Skontrolovať môžeme aj príslušné systémové správy:
dmesg | grep -iE 'wm8960|sound|audio'
Tieto príkazy pomáhajú zistiť, či systém rozpoznal zvukovú kartu a či pri načítavaní ovládača nevznikli chyby.
Ak Batocera zvukovú kartu rozpoznáva, môžeme pokračovať nastavením jej použitia na prehrávanie zvuku.
4.5 Nastavenie zvukového výstupu
Po sprevádzkovaní WM8960 sa ukázalo, že samotné načítanie zvukovej karty nestačí.
Bolo potrebné zabezpečiť, aby Batocera používala správne zvukové zariadenie namiesto iného dostupného výstupu.
Na tento účel som použil príkaz:
batocera-audio set alsa_output._sys_devices_platform_soc_soc_sound_sound_card1.stereo-fallback
Tento príkaz nastaví konkrétne výstupné zvukové zariadenie, ktoré bolo funkčné v mojej konfigurácii.
Po jeho použití sa podarilo zabezpečiť prehrávanie zvuku aj v spustených hrách.
Upozornenie: Identifikátor zvukového zariadenia nemusí byť na každej inštalácii rovnaký. Je závislý od rozpoznaného hardvéru a konfigurácie zvukového systému.
Pred použitím uvedeného príkazu na inom zariadení je vhodné zistiť dostupné výstupy:
batocera-audio list
Následne zvolíme identifikátor príslušného zvukového zariadenia.
Zvukový výstup možno nastaviť aj prostredníctvom grafického rozhrania Batocery:
MAIN MENU → SYSTEM SETTINGS → AUDIO OUTPUT
Ak je to potrebné, skontrolujeme aj dostupné možnosti v položke AUDIO PROFILE.
4.6 Testovanie zvuku
Po dokončení konfigurácie som funkčnosť zvuku overil najskôr v prostredí Batocery a následne v jednotlivých hrách.
Dôležité bolo skontrolovať:
- Či je zvuková karta WM8960 rozpoznaná operačným systémom.
- Či je ako výstupné zariadenie nastavený správny zvukový výstup.
- Či sa zvuk prehráva cez reproduktory arkádového automatu.
- Či funguje prehrávanie zvukov aj po spustení emulátorov.
Po správnom nastavení zvukového výstupu bolo možné počuť zvuky v retro hrách bez potreby používať externé reproduktory alebo iné zvukové zariadenie.
4.7 Riešenie problémov so zvukom
Ak sa po aktivovaní WM8960 zvuk neprehráva, odporúčam postupovať nasledovne.
Zvuková karta nie je rozpoznaná
Skontrolujeme hardvérovú konfiguráciu:
grep -nE 'i2c_arm|i2s|wm8960' /boot/config.txt
Následne overíme dostupné zvukové karty:
cat /proc/asound/cards
Zvuková karta je rozpoznaná, ale nepočuť zvuk
Skontrolujeme dostupné výstupy:
batocera-audio list
Následne overíme správnosť výstupného zariadenia v nastaveniach Batocery.
Zvuk funguje v menu, ale nie v hre
V takom prípade je potrebné skontrolovať nastavenia konkrétneho emulátora alebo herného jadra.
Ak je zvuk prerušovaný alebo skreslený, príčinou môže byť aj vysoké zaťaženie Raspberry Pi 3 pri emulácii náročnejších hier.
Zvuk prestal fungovať po zmene konfigurácie
Najskôr skontrolujeme, ktoré nastavenia boli upravené, a overíme, či sa nezmenil zvukový profil alebo výstupné zariadenie.
Pred ďalšími zásahmi je vhodné vytvoriť zálohu aktuálnej konfigurácie.
4.8 Výsledok konfigurácie
Po aktivovaní podpory WM8960 Audio HAT, kontrole hardvérových nastavení Raspberry Pi a správnom výbere zvukového výstupu sa podarilo zabezpečiť funkčné prehrávanie zvuku v operačnom systéme Batocera Linux 43.1.
Zvuková karta WM8960 tak zostala plnohodnotnou súčasťou modernizovaného arkádového automatu bez potreby jej výmeny.
Výsledkom bolo funkčné prehrávanie zvuku prostredníctvom pôvodného zvukového hardvéru automatu, a to aj pri spúšťaní klasických retro hier.
V ďalšej kapitole sa budem venovať pripojeniu externého USB SSD, jeho konfigurácii a využitiu na ukladanie ROM súborov a hier.
5. Konfigurácia externého USB SSD na ukladanie hier
Pri modernizácii arkádového automatu Waveshare Arcade-101-1P som sa rozhodol oddeliť operačný systém od samotnej knižnice hier.
Operačný systém Batocera Linux 43.1 a jeho používateľské konfigurácie zostali uložené na microSD karte, zatiaľ čo na ukladanie hier som použil externý 64 GB USB SSD.
Toto riešenie umožňuje jednoduchšiu správu ROM súborov bez nutnosti ukladať celú hernú knižnicu na microSD kartu.
Dôležitou požiadavkou bolo, aby externý SSD obsahoval iba hry, zatiaľ čo adresáre so systémovými nastaveniami, konfiguráciami emulátorov a ovládačov zostali na pôvodnom úložisku.
Na tento účel som využil možnosť selektívneho pripojenia úložiska, ktorú podporuje Batocera.
5.1 Identifikácia externého SSD
Po pripojení externého SSD k Raspberry Pi 3 som najskôr overil, či ho operačný systém správne rozpoznáva.
Prostredníctvom SSH som spustil:
lsblk -f
Príkaz zobrazí pripojené blokové zariadenia, ich oddiely, súborové systémy a identifikátory UUID.
V mojom prípade bol externý SSD rozpoznaný ako zariadenie:
/dev/sda1
Jeho súborový systém bol EXT4.
Podrobnejšie informácie o oddiele môžeme získať pomocou:
blkid /dev/sda1
V mojom prípade mal oddiel nasledujúci identifikátor UUID:
2cdad15a-7143-44dc-a70b-7dc85dda2e29
UUID predstavuje jedinečný identifikátor súborového systému, pomocou ktorého môžeme určiť konkrétny diskový oddiel bez toho, aby sme sa spoliehali iba na označenie /dev/sda1.
To je dôležité, pretože označenie zariadenia sa môže pri zmene pripojeného hardvéru zmeniť.
Upozornenie: Uvedené UUID patrí môjmu konkrétnemu SSD. Pri konfigurácii iného zariadenia je potrebné zistiť a použiť jeho vlastný identifikátor.
5.1.1 Kontrola kapacity SSD
Kapacitu pripojeného úložiska môžeme skontrolovať pomocou:
lsblk -o NAME,SIZE,FSTYPE,UUID,MOUNTPOINTS
Pri 64 GB SSD sa v Linuxe môže zobrazovať kapacita približne 59 GiB. Rozdiel vyplýva najmä z používania odlišných jednotiek GB a GiB.
5.1.2 Použitie súborového systému EXT4
Pre externé úložisko som zvolil súborový systém EXT4, ktorý je bežne používaný v operačných systémoch Linux.
Je vhodný na ukladanie hier a adresárovej štruktúry Batocery, pretože podporuje linuxové prístupové práva a ďalšie vlastnosti súborového systému.
V mojom prípade bol SSD pripravený so súborovým systémom EXT4 ešte pred jeho nastavením ako úložiska hier.
Dôležité: Ak je externý SSD už naformátovaný a obsahuje hry alebo iné dáta, nie je potrebné ho opätovne formátovať. Formátovanie by odstránilo jeho existujúci obsah.
Po identifikácii SSD a zistení jeho UUID môžeme pokračovať nastavením automatického pripojenia úložiska do adresára /userdata/roms.
5.2 Nastavenie automatického pripojenia SSD
Po identifikácii externého SSD a zistení jeho UUID som pristúpil k nastaveniu automatického pripojenia úložiska.
Mojím cieľom bolo, aby operačný systém Batocera Linux 43.1 používal externý SSD výhradne na ukladanie hier v adresári /userdata/roms, zatiaľ čo používateľské konfigurácie a nastavenia emulátorov zostanú na microSD karte.
Na tento účel som upravil konfiguračný súbor:
/boot/batocera-boot.conf
Batocera umožňuje prostredníctvom tohto súboru nastaviť selektívne pripojenie externých úložísk.
5.2.1 Kontrola a zálohovanie pôvodnej konfigurácie
Najskôr zobrazíme aktuálne nastavenie úložiska:
grep -nE '^sharedevice|^sharewait' /boot/batocera-boot.conf
Pred vykonaním zmien vytvoríme záložnú kópiu konfiguračného súboru.
Keďže systémový oddiel /boot je štandardne pripojený iba na čítanie, zálohu uložíme do zapisovateľného adresára /userdata/system:
cp -a /boot/batocera-boot.conf /userdata/system/batocera-boot.conf.bak-ssd
Táto záloha nám umožní obnoviť pôvodné nastavenie, ak by sa po úprave vyskytli problémy.
5.2.2 Povolenie zápisu na systémový oddiel
Pred úpravou konfiguračného súboru dočasne povolíme zápis na systémový oddiel:
mount -o remount,rw /boot
Týmto príkazom sa oddiel /boot pripojí v režime čítania aj zápisu.
Upozornenie: Ide o systémový oddiel Batocery. Pri jeho úpravách je potrebné postupovať opatrne a meniť iba nastavenia, ktorých význam poznáme.
5.2.3 Konfigurácia externého SSD
Konfiguračný súbor otvoríme pomocou textového editora nano:
nano /boot/batocera-boot.conf
V mojom prípade som použil nasledujúce nastavenie:
sharedevice=DEVICES
sharedevice_part1=ROMS@2cdad15a-7143-44dc-a70b-7dc85dda2e29
Význam jednotlivých parametrov:
| Parameter | Význam |
|---|---|
sharedevice=DEVICES | Aktivuje možnosť používania viacerých úložísk pre vybrané časti používateľských dát |
sharedevice_part1= | Definuje prvé pravidlo pripojenia úložiska |
ROMS@ | Určuje, že externé úložisko sa použije pre adresár s hrami |
2cdad15a-7143-44dc-a70b-7dc85dda2e29 | UUID súborového systému môjho externého SSD |
Kľúčové je označenie ROMS@, ktorým Batocere určujeme, že sa externý SSD použije iba pre knižnicu hier.
Ostatné používateľské adresáre, napríklad /userdata/system a /userdata/bios, zostávajú na internom dátovom oddiele microSD karty.
Dôležité: UUID uvedené v príklade patrí môjmu konkrétnemu SSD. Pri inej inštalácii je potrebné použiť vlastné UUID zistené príkazom:
blkid
Zároveň je potrebné skontrolovať, aby konfiguračný súbor neobsahoval viacero aktívnych a vzájomne si odporujúcich nastavení sharedevice.
Po dokončení úprav uložíme súbor kombináciou Ctrl + O, potvrdíme klávesom Enter a editor ukončíme pomocou Ctrl + X.
5.2.4 Kontrola konfigurácie a obnovenie ochrany oddielu
Pred reštartovaním skontrolujeme uložené nastavenia:
grep -nE '^sharedevice' /boot/batocera-boot.conf
V mojom prípade má konfigurácia obsahovať:
sharedevice=DEVICES
sharedevice_part1=ROMS@2cdad15a-7143-44dc-a70b-7dc85dda2e29
Následne zapíšeme čakajúce zmeny na disk:
sync
Systémový oddiel opäť pripojíme iba na čítanie:
mount -o remount,ro /boot
Týmto krokom obnovíme pôvodný režim pripojenia systémového oddielu.
5.2.5 Reštart Batocery
Aby sa nové nastavenie úložiska prejavilo, reštartujeme Raspberry Pi:
reboot
Po opätovnom spustení systému sa pripojíme cez SSH a skontrolujeme, či Batocera používa externý SSD na ukladanie hier.
5.2.6 Overenie správneho pripojenia SSD
Najdôležitejším krokom je kontrola adresára /userdata/roms.
Použijeme príkaz:
findmnt -T /userdata/roms
Vo výpise skontrolujeme, či zdrojový súborový systém zodpovedá nášmu externému SSD.
Následne zobrazíme kapacitu úložiska:
df -h /userdata/roms
V mojom prípade išlo o 64 GB SSD, ktorého využiteľná kapacita sa zobrazovala približne ako 59 GiB.
Pre kontrolu UUID a súborového systému môžeme použiť aj:
lsblk -f
Pri správnej konfigurácii musí byť možné priradiť súborový systém používaný pre /userdata/roms k externému SSD.
Pozor: Samotná existencia adresára /userdata/roms ešte nedokazuje, že je SSD správne pripojený.
Ak Batocera externé úložisko nepripojí, adresár /userdata/roms môže stále existovať na internom dátovom oddiele microSD karty.
Pri kopírovaní alebo odstraňovaní veľkého množstva hier je preto dôležité najskôr overiť skutočný zdroj úložiska pomocou findmnt a df.
5.2.7 Výsledok konfigurácie
Po správnom nastavení súboru /boot/batocera-boot.conf sa podarilo oddeliť systémové konfigurácie od samotnej knižnice hier.
Výsledné rozdelenie úložísk:
| Úložisko | Účel |
|---|---|
| microSD karta | Operačný systém Batocera Linux 43.1 |
| microSD karta | Konfigurácie, nastavenia emulátorov a ovládačov |
| Externý USB SSD, 64 GB | ROM súbory a hry v adresári /userdata/roms |
Týmto spôsobom môžem spravovať a rozširovať knižnicu hier na externom SSD bez toho, aby bolo potrebné presúvať celú používateľskú konfiguráciu Batocery.
Výsledkom bolo funkčné automatické pripojenie externého SSD pri spustení Raspberry Pi, pričom systémové nastavenia zostali na microSD karte.
5.3 Kontrola dostupnosti SSD a bezpečný prenos hier
Po nastavení automatického pripojenia externého SSD bolo potrebné overiť, či je úložisko dostupné a pripravené na kopírovanie hier.
Pri prenose ROM súborov som používal počítač s operačným systémom Linux Mint, z ktorého som sa k Raspberry Pi 3 pripájal cez SSH.
5.3.1 Kontrola pripojenia SSD
Pred kopírovaním hier najskôr overíme, či adresár /userdata/roms skutočne používa externý SSD:
findmnt -T /userdata/roms
Následne skontrolujeme jeho dostupnú kapacitu:
df -h /userdata/roms
V mojom prípade sa používal externý 64 GB SSD so súborovým systémom EXT4.
Dôležité: Ak externý SSD nie je pripojený, adresár /userdata/roms môže naďalej existovať na microSD karte.
Preto pred kopírovaním väčšieho množstva hier vždy skontrolujeme, či je pripojené správne úložisko.
5.3.2 Príprava hier na počítači s Linux Mint
Na prípravu hier som si v domovskom adresári vytvoril pracovnú štruktúru:
~/batocera-compile/
├── 01-original/
├── 02-working/
├── 03-ready/
├── 04-tested/
├── 05-favorites/
└── logs/
Jednotlivé adresáre slúžili na oddelenie pôvodných súborov, pracovných verzií, pripravených hier a výsledkov testovania.
Pre samotný prenos som používal adresár:
~/batocera-compile/03-ready/
V tomto adresári sa nachádzali hry pripravené na zaradenie do adresárovej štruktúry Batocery.
5.3.3 Prenos hier pomocou rsync
Na prenos súborov som použil nástroj rsync, ktorý umožňuje bezpečnejšie a prehľadnejšie kopírovanie väčšieho množstva dát cez SSH.
Na počítači s Linux Mint som spustil:
rsync -avh --progress --ignore-existing --omit-dir-times \
"$HOME/batocera-compile/03-ready/" \
root@10.10.8.56:/userdata/roms/
Význam použitých parametrov:
| Parameter | Význam |
|---|---|
-a | Rekurzívne kopíruje súbory a zachováva vybrané atribúty |
-v | Zobrazuje podrobnejší priebeh |
-h | Zobrazuje veľkosti v čitateľnej podobe |
--progress | Zobrazuje priebeh prenosu jednotlivých súborov |
--ignore-existing | Neprepisuje súbory, ktoré už existujú v cieľovom umiestnení |
--omit-dir-times | Nepokúša sa zachovávať časy úprav adresárov |
V mojom prípade sme týmto spôsobom prenášali pripravenú knižnicu približne 190 súborov s celkovou veľkosťou približne 111 MB.
Upozornenie: Parameter --ignore-existing chráni existujúce súbory pred prepísaním, ale zároveň znamená, že ich obsah sa pri prenose neaktualizuje. Príkaz neobsahuje parameter --delete, takže neodstraňuje súbory, ktoré sa už nachádzajú na SSD.
5.3.4 Kontrola prenesených hier
Po dokončení prenosu sa cez SSH pripojíme k Batocere:
ssh root@10.10.8.56
Obsah adresára s hrami zobrazíme:
ls -lah /userdata/roms
Napríklad MS-DOS hry sa nachádzajú v adresári:
ls -lah /userdata/roms/dos
Pre záverečnú kontrolu môžeme znova overiť aj pripojené úložisko:
findmnt -T /userdata/roms
Po úspešnom skopírovaní ROM súborov je potrebné v EmulationStation obnoviť zoznam hier, prípadne reštartovať grafické rozhranie, aby sa nové tituly zobrazili.
5.3.5 Výsledok
Použitím externého SSD a prenosu cez rsync sa podarilo oddeliť správu hernej knižnice od systémových súborov Batocery.
Hry môžem pripravovať na počítači s Linux Mint, otestovať ich adresárovú štruktúru a následne ich preniesť do arkádového automatu cez lokálnu sieť.
Tento postup zároveň znižuje riziko náhodného prepísania už existujúcich hier.
Pred každým väčším prenosom je však potrebné overiť, že adresár /userdata/roms skutočne smeruje na externý SSD.
6. Príprava ROM súborov a hier pre Batocera Linux 43.1
Po úspešnej konfigurácii externého SSD som pristúpil k príprave hernej knižnice pre jednotlivé emulátory.
Keďže Batocera podporuje široké spektrum klasických herných konzol a počítačov, bolo potrebné zohľadniť požiadavky jednotlivých emulačných systémov na formáty súborov a adresárovú štruktúru.
Najväčšiu pozornosť som venoval klasickým MS-DOS hrám, ktoré som sa rozhodol spúšťať prostredníctvom emulačného jadra DOSBox Pure.
Pri tituloch ako Commander Keen, Duke Nukem 2, Dyna Blaster, Heretic či Blood nestačilo iba skopírovať pôvodné herné súbory. Bolo potrebné správne pripraviť adresáre, spúšťacie skripty a následne otestovať funkčnosť hier.
6.1 Príprava pracovného prostredia na Linux Mint
Na prípravu herných súborov som využíval počítač s operačným systémom Linux Mint.
Aby som mal jednotlivé verzie súborov prehľadne oddelené, vytvoril som si pracovný adresár:
~/batocera-compile
V termináli môžeme pripraviť potrebnú adresárovú štruktúru:
mkdir -p ~/batocera-compile/{01-original,02-working,03-ready,04-tested,05-favorites,logs}
Výsledná štruktúra:
batocera-compile/
├── 01-original/
├── 02-working/
├── 03-ready/
├── 04-tested/
├── 05-favorites/
└── logs/
Význam jednotlivých adresárov:
| Adresár | Účel |
|---|---|
01-original | Pôvodné herné súbory bez úprav |
02-working | Pracovné verzie hier |
03-ready | Hry pripravené na prenos do Batocery |
04-tested | Súbory a hry určené na testovanie |
05-favorites | Výber obľúbených hier |
logs | Pomocné záznamy z prípravy a testovania |
Zachovanie pôvodných súborov
Pri príprave hier som dodržiaval zásadu, že pôvodné súbory zostávajú nezmenené.
Všetky potrebné úpravy som vykonával až na pracovných kópiách v adresári 02-working.
Vďaka tomu bolo možné v prípade problémov začať prípravu hry odznova bez rizika poškodenia pôvodných dát.
Po dokončení prípravy som výsledné súbory ukladal do adresára 03-ready, ktorý slúžil ako zdroj pri prenose hier na externý SSD arkádového automatu.
Dôležité: Pri používaní ROM súborov a klasických počítačových hier je potrebné rešpektovať autorské práva a licenčné podmienky. Batocera neobsahuje komerčné hry, preto si používateľ musí zabezpečiť herné súbory z oprávnených zdrojov.
6.2 Príprava MS-DOS hier pre DOSBox Pure
Pri modernizácii arkádového automatu som sa rozhodol sprevádzkovať aj klasické MS-DOS hry, ktoré som v minulosti hrával na osobných počítačoch.
Na ich emuláciu som použil DOSBox Pure, ktorý je dostupný ako emulačné jadro v prostredí RetroArch.
DOSBox Pure umožňuje spúšťanie hier určených pre operačný systém MS-DOS a ich ovládanie prostredníctvom herného ovládača.
6.2.1 Adresár pre MS-DOS hry
V Batocere sa MS-DOS hry nachádzajú v adresári:
/userdata/roms/dos/
Jednotlivé hry som pripravil ako samostatné adresáre s príponou .pc.
V mojom prípade vznikla nasledujúca štruktúra:
/userdata/roms/dos/
├── Blood.pc/
├── CommanderKeen1.pc/
├── CommanderKeen4.pc/
├── DukeNukem2.pc/
├── DynaBlaster.pc/
├── Heretic.pc/
└── Wolfenstein3D.pc/
Prípona .pc umožňuje Batocere rozpoznávať príslušné adresáre ako samostatné MS-DOS hry.
6.2.2 Príprava herných súborov
Pôvodné herné súbory som najskôr skopíroval do pracovného adresára 02-working na počítači s Linux Mint.
Každá hra mala vlastný adresár, v ktorom sa nachádzali jej súbory potrebné na spustenie.
Následne som pre jednotlivé hry pripravil spúšťací dávkový súbor:
dosbox.bat
Jeho úlohou je spustiť príslušný program hry po načítaní adresára v DOSBox Pure.
Príklad obsahu súboru pre hru Commander Keen 1:
@echo off
KEEN1.EXE
Poznámka: Ide o ilustračný príklad. Skutočný názov spustiteľného súboru je potrebné prispôsobiť konkrétnej verzii hry.
6.2.3 Kontrola spúšťacieho súboru
Po prenesení hier do Batocery môžeme skontrolovať obsah vybraného adresára:
ls -lah /userdata/roms/dos/CommanderKeen1.pc/
Následne zobrazíme obsah spúšťacieho súboru:
cat /userdata/roms/dos/CommanderKeen1.pc/dosbox.bat
Týmto spôsobom môžeme overiť, aký program sa má po spustení DOSBox Pure vykonať.
Pri inom titule môže byť potrebné pred spustením hry nastaviť pracovný adresár alebo vykonať ďalšie príkazy.
6.2.4 Overenie dostupných hier
Zoznam pripravených MS-DOS hier zobrazíme príkazom:
ls -lah /userdata/roms/dos/
V mojom prípade som pripravil sedem titulov:
| Hra | Výsledok prvotného testovania |
|---|---|
| Commander Keen 1 | Funkčná |
| Commander Keen 4 | Funkčná |
| Duke Nukem 2 | Funkčná |
| Dyna Blaster | Funkčná po úprave ovládania |
| Heretic | Funkčná, individuálne mapovanie ovládania |
| Blood | Spustiteľná, ale výkon Raspberry Pi 3 je nedostatočný na plynulé hranie |
| Wolfenstein 3D | Spustiteľná, ovládanie ešte vyžaduje úpravy |
Pri náročnejších tituloch sa ukázalo, že aj keď sa hra úspešne spustí, nemusí byť jej emulácia dostatočne plynulá.
Najvýraznejšie sa tento problém prejavil pri hre Blood, ktorá kladie na výkon emulovaného procesora vyššie nároky.
6.2.5 Aktualizácia zoznamu hier
Po skopírovaní hier na externý SSD je potrebné aktualizovať hernú knižnicu v EmulationStation.
V hlavnom menu Batocery otvoríme:
MAIN MENU → GAME SETTINGS → UPDATE GAMELISTS
Po obnovení zoznamu sa pripravené MS-DOS hry zobrazia v príslušnej kategórii.
Ak sa niektorá hra nezobrazuje, je potrebné skontrolovať jej adresárovú štruktúru, príponu .pc a dostupnosť súborov potrebných na spustenie.
Výsledkom bolo sedem pripravených MS-DOS hier v adresári /userdata/roms/dos, ktoré som následne testoval prostredníctvom emulačného jadra DOSBox Pure.
6.3 Príprava hier pre klasické herné konzoly
Okrem klasických MS-DOS hier som sa rozhodol rozšíriť hernú knižnicu aj o tituly určené pre staršie herné konzoly.
Batocera Linux 43.1 podporuje viacero emulovaných systémov, pričom každý z nich má vlastný adresár na ukladanie hier.
V mojom prípade som pripravoval hry pre tieto platformy:
- Nintendo Entertainment System (NES)
- Super Nintendo Entertainment System (SNES)
- Game Boy
- Game Boy Color
- Game Boy Advance
- Nintendo 64
Pri príprave bolo potrebné zohľadniť správne umiestnenie ROM súborov, ich formát a kompatibilitu s príslušným emulátorom.
6.3.1 Adresárová štruktúra konzolových hier
Batocera používa pre jednotlivé herné systémy samostatné adresáre v /userdata/roms.
| Herná konzola | Adresár |
|---|---|
| Nintendo NES | /userdata/roms/nes |
| Super Nintendo | /userdata/roms/snes |
| Game Boy | /userdata/roms/gb |
| Game Boy Color | /userdata/roms/gbc |
| Game Boy Advance | /userdata/roms/gba |
| Nintendo 64 | /userdata/roms/n64 |
Pripravené hry som najskôr ukladal do pracovného adresára 03-ready na počítači s Linux Mint.
Jeho štruktúra kopírovala adresáre Batocery:
03-ready/
├── nes/
├── snes/
├── gb/
├── gbc/
├── gba/
└── n64/
Takto pripravené súbory bolo možné preniesť na externý SSD pri zachovaní správneho umiestnenia.
6.3.2 Kontrola formátov ROM súborov
Jednotlivé emulátory podporujú rôzne formáty herných súborov.
Príklady bežne používaných formátov:
| Herná konzola | Príklady formátov |
|---|---|
| NES | .nes, .zip, .7z |
| SNES | .sfc, .smc, .zip, .7z |
| Game Boy | .gb, .zip |
| Game Boy Color | .gbc, .zip |
| Game Boy Advance | .gba, .zip |
| Nintendo 64 | .z64, .n64, .v64, .zip, .7z |
Podporované formáty sa môžu líšiť podľa konkrétneho emulátora alebo emulačného jadra.
Informácie o podporovaných príponách môžeme skontrolovať aj priamo v Batocere. Každý podporovaný systém spravidla obsahuje informačný súbor _info.txt.
Napríklad:
cat /userdata/roms/n64/_info.txt
Tento súbor obsahuje informácie o podporovaných typoch ROM súborov a príslušnom hernom systéme.
6.3.3 Problém s komprimovanými hrami Nintendo 64
Pri príprave hier pre Nintendo 64 som narazil na problém, keď sa niektoré ROM súbory uložené v archívoch ZIP nepodarilo správne spustiť.
Hoci Batocera podporuje aj komprimované formáty, ich funkčnosť závisí od zvoleného emulátora.
Preto som pri problematických hrách pristúpil k rozbaleniu archívov a použitiu pôvodných ROM súborov.
Napríklad:
DukeNukem64.zip
Po rozbalení archívu môžeme získať súbor s príponou:
DukeNukem64.z64
Názvy súborov v uvedenom príklade sú ilustračné; skutočná prípona závisí od obsahu archívu.
Na počítači s Linux Mint môžeme najskôr skontrolovať obsah archívu:
unzip -l DukeNukem64.zip
Ak archív obsahuje požadovaný ROM súbor, môžeme ho rozbaliť:
unzip DukeNukem64.zip
Pri mojej konfigurácii som pre Nintendo 64 používal priamo rozbalené súbory s príponami .z64, .v64 alebo .n64.
Pôvodné ZIP archívy som si ponechal ako zálohu.
Dôležité: Nie všetky ZIP archívy je potrebné rozbaľovať. Pri Nintendo 64 závisí podpora komprimovaných ROM súborov od konkrétneho emulátora.
6.3.4 Rozdiel medzi konzolovými ROM súbormi a MAME
Pri práci s ROM súbormi je potrebné rozlišovať medzi hrami pre klasické konzoly a arkádovými hrami určenými pre emulátor MAME.
Pri MAME sa jednotlivé hry spravidla nachádzajú v ZIP archívoch, ktoré obsahujú súbory potrebné na emuláciu pôvodného arkádového hardvéru.
Tieto archívy sa zvyčajne nerozbaľujú.
Ich obsah, názvy a vzájomné závislosti musia zodpovedať konkrétnej verzii ROMsetu a použitému emulátoru.
Preto nemožno postup použitý pri problematickom ZIP archíve Nintendo 64 automaticky aplikovať na MAME.
6.3.5 Prenos pripravených hier do Batocery
Po príprave konzolových hier som súbory preniesol z Linux Mint na externý SSD pomocou nástroja rsync, ktorému sme sa venovali v kapitole 5.3.
Pred prenosom je potrebné overiť, že externý SSD je skutočne pripojený do adresára /userdata/roms.
Po úspešnom prenose môžeme obsah jednotlivých adresárov skontrolovať napríklad príkazmi:
ls -lah /userdata/roms/nes/
ls -lah /userdata/roms/snes/
ls -lah /userdata/roms/n64/
Následne v grafickom rozhraní EmulationStation vykonáme aktualizáciu zoznamu hier:
MAIN MENU → GAME SETTINGS → UPDATE GAMELISTS
Týmto spôsobom Batocera načíta nové ROM súbory do hernej knižnice.
6.3.6 Testovanie konzolových hier
Po prenose som pristúpil k testovaniu vybraných hier.
Medzi pripravenými titulmi sa nachádzali napríklad:
- Duke Nukem 64
- Santa Claus Saves the Earth
- The Grinch
- Home Alone
- Home Alone 2
- Daze Before Christmas
- Road Fighter
- The Bugs Bunny Crazy Castle
- Duck Hunt
Pri testovaní bolo potrebné zohľadniť obmedzenia konkrétnych emulátorov a ovládacích zariadení.
Napríklad hra Duck Hunt bola pôvodne navrhnutá na ovládanie pomocou svetelnej pištole, takže jej plnohodnotné hranie nemusí byť možné iba pomocou klasického arkádového joysticku.
Pri Nintendo 64 môže byť zase limitujúcim faktorom výkon samotného Raspberry Pi 3.
Výsledkom bola pripravená knižnica konzolových hier rozdelená podľa jednotlivých emulovaných systémov, ktorú bolo možné spravovať priamo prostredníctvom EmulationStation.
7. Konfigurácia DOSBox Pure a individuálne mapovanie MS-DOS hier
Jednou z najnáročnejších častí modernizácie arkádového automatu Waveshare Arcade-101-1P bolo nastavenie ovládania klasických MS-DOS hier.
Na ich spúšťanie som použil emulačné jadro DOSBox Pure, ktoré je integrované do prostredia RetroArch.
Zatiaľ čo pri mnohých konzolových hrách stačilo štandardné mapovanie GPIO joysticku a tlačidiel, pri MS-DOS hrách bolo potrebné riešiť aj emuláciu pôvodnej počítačovej klávesnice.
Každá hra totiž používala trochu odlišné klávesové skratky a ovládacie prvky. Univerzálna konfigurácia preto nebola vždy postačujúca.
7.1 Kontrola emulačného jadra DOSBox Pure
Po úspešnom prenesení MS-DOS hier na externý SSD som najskôr overil dostupnosť emulačného jadra DOSBox Pure.
Na Raspberry Pi 3 s Batocerou 43.1 sa príslušná knižnica nachádzala v adresári:
/usr/lib/libretro/
Jej existenciu môžeme overiť príkazom:
ls -lh /usr/lib/libretro/dosbox_pure_libretro.so
Súbor dosbox_pure_libretro.so predstavuje emulačné jadro, ktoré RetroArch používa na spúšťanie MS-DOS hier.
7.1.1 Kontrola konfigurácie emulačného jadra
Nastavenia jadra DOSBox Pure sa nachádzajú v súbore:
/userdata/system/configs/retroarch/cores/retroarch-core-options.cfg
Príslušné parametre môžeme zobraziť príkazom:
grep '^dosbox_pure_' /userdata/system/configs/retroarch/cores/retroarch-core-options.cfg
Pri našom testovaní sme pracovali okrem iného s nasledujúcimi hodnotami:
dosbox_pure_auto_mapping = "true"
dosbox_pure_cpu_core = "auto"
dosbox_pure_cycles = "auto"
dosbox_pure_cycles_scale = "1.0"
Význam nastavení:
| Parameter | Význam |
|---|---|
dosbox_pure_auto_mapping | Automatické mapovanie ovládača |
dosbox_pure_cpu_core | Výber režimu emulácie procesora |
dosbox_pure_cycles | Nastavenie emulovaného výkonu procesora |
dosbox_pure_cycles_scale | Násobiteľ nastavenia emulovaných cyklov |
Tieto hodnoty predstavovali východiskovú konfiguráciu pri testovaní hier.
Samotné automatické mapovanie však nepostačovalo pre všetky tituly. Pri hrách Dyna Blaster a Heretic bolo potrebné upraviť ovládanie individuálne.
7.1.2 Otvorenie nastavení RetroArchu počas hry
Po spustení MS-DOS hry môžeme otvoriť ponuku RetroArchu pomocou pripojenej USB klávesnice.
Pri našom testovaní sme používali kláves F1.
V ponuke RetroArchu následne otvoríme:
QUICK MENU → CONTROLS → PORT 1 CONTROLS
Tu môžeme upraviť spôsob, akým DOSBox Pure interpretuje vstupy herného ovládača.
Pri niektorých hrách som používal režim:
DEVICE TYPE → CUSTOM KEYBOARD BINDINGS
Tento režim umožňuje priradiť jednotlivým tlačidlám arkádového ovládača klávesy pôvodnej počítačovej klávesnice.
Dôležité: Samotná zmena mapovania v ponuke RetroArchu nemusí znamenať jeho trvalé uloženie. Upravené nastavenia je potrebné uložiť prostredníctvom QUICK MENU → CONTROLS → MANAGE REMAP FILES.
Pri testovaní som narazil aj na problém, keď sa po opätovnom spustení hry načítalo spoločné mapovanie jadra DOSBox Pure namiesto individuálneho profilu konkrétnej hry. Tento problém sa prejavil najmä pri hre Heretic, kde bolo možné funkčné mapovanie načítať manuálne, ale jeho automatické načítanie ešte vyžadovalo ďalšie úpravy.
Jeho využitie bolo dôležité najmä pri hrách, ktoré nemali natívnu podporu herného ovládača alebo používali špecifické klávesové skratky.
V ďalších častiach sa budem venovať konkrétnym nastaveniam jednotlivých hier a problémom, ktoré sa objavili pri ukladaní a opätovnom načítavaní profilov ovládania.
7.2 Mapovanie arkádových tlačidiel na klávesnicu v DOSBox Pure
Pri testovaní klasických MS-DOS hier som narazil na problém s ovládaním. Hoci joystick a farebné tlačidlá správne fungovali v prostredí EmulationStation, niektoré hry očakávali vstupy z klasickej počítačovej klávesnice.
Na vyriešenie tohto problému som využil funkciu Custom Keyboard Bindings, ktorá umožňuje emulovať jednotlivé klávesy pomocou arkádového ovládača.
7.2.1 Aktivácia režimu Custom Keyboard Bindings
Najskôr spustíme požadovanú MS-DOS hru.
Pomocou pripojenej USB klávesnice otvoríme ponuku RetroArchu a prejdeme do:
QUICK MENU → CONTROLS → PORT 1 CONTROLS
Pri položke Device Type vyberieme:
Custom Keyboard Bindings
Týmto nastavením umožníme DOSBox Pure interpretovať vstupy herného ovládača ako klávesy počítačovej klávesnice.
Jednotlivým smerom joysticku a akčným tlačidlám následne môžeme priradiť klávesy podľa požiadaviek konkrétnej hry.
7.2.2 Mapovanie smerov joysticku
Pri našom testovaní sme používali aj mapovanie smerov joysticku na numerickú klávesnicu.
V konfiguračných súboroch sa nachádzali nasledujúce hodnoty:
input_player1_key_up = "264"
input_player1_key_down = "258"
input_player1_key_left = "260"
input_player1_key_right = "262"
Ich význam:
| Smer joysticku | Emulovaný kláves |
|---|---|
| Hore | Numpad 8 |
| Dole | Numpad 2 |
| Doľava | Numpad 4 |
| Doprava | Numpad 6 |
Tieto hodnoty predstavujú konkrétne nastavenie použité pri našom testovaní. Nie všetky MS-DOS hry však používajú numerickú klávesnicu na pohyb, preto môže byť potrebné mapovanie pre jednotliv
7.2 Mapovanie arkádových tlačidiel na klávesnicu v DOSBox Pure
Pri testovaní klasických MS-DOS hier som narazil na problém s ovládaním. Hoci joystick a farebné tlačidlá správne fungovali v prostredí EmulationStation, niektoré hry očakávali vstupy z klasickej počítačovej klávesnice.
Na vyriešenie tohto problému som využil funkciu Custom Keyboard Bindings, ktorá umožňuje emulovať jednotlivé klávesy pomocou arkádového ovládača.
7.2.1 Aktivácia režimu Custom Keyboard Bindings
Najskôr spustíme požadovanú MS-DOS hru.
Pomocou pripojenej USB klávesnice otvoríme ponuku RetroArchu a prejdeme do:
QUICK MENU → CONTROLS → PORT 1 CONTROLS
Pri položke Device Type vyberieme:
Custom Keyboard Bindings
Týmto nastavením umožníme DOSBox Pure interpretovať vstupy herného ovládača ako klávesy počítačovej klávesnice.
Jednotlivým smerom joysticku a akčným tlačidlám následne môžeme priradiť klávesy podľa požiadaviek konkrétnej hry.
7.2.2 Mapovanie smerov joysticku
Pri našom testovaní sme používali aj mapovanie smerov joysticku na numerickú klávesnicu.
V konfiguračných súboroch sa nachádzali nasledujúce hodnoty:
input_player1_key_up = "264"
input_player1_key_down = "258"
input_player1_key_left = "260"
input_player1_key_right = "262"
Ich význam:
| Smer joysticku | Emulovaný kláves |
|---|---|
| Hore | Numpad 8 |
| Dole | Numpad 2 |
| Doľava | Numpad 4 |
| Doprava | Numpad 6 |
Tieto hodnoty predstavujú konkrétne nastavenie použité pri našom testovaní. Nie všetky MS-DOS hry však používajú numerickú klávesnicu na pohyb, preto môže byť potrebné mapovanie pre jednotlivé tituly upraviť.
7.2.3 Mapovanie akčných tlačidiel
Okrem smerov joysticku bolo potrebné priradiť aj ďalšie klávesy.
Pri konfigurácii sme pracovali napríklad s nasledujúcimi nastaveniami:
input_player1_key_a = "271"
input_player1_key_b = "305"
input_player1_key_x = "112"
Význam použitých hodnôt:
| Nastavenie | Emulovaný kláves |
|---|---|
input_player1_key_a | Enter na numerickej klávesnici |
input_player1_key_b | Pravý Ctrl |
input_player1_key_x | P |
Tieto nastavenia sme využívali pri prispôsobovaní ovládania jednotlivých hier.
Pri hre Dyna Blaster sa nám podarilo nastaviť modré akčné tlačidlo na pokladanie bômb a žlté tlačidlo na pozastavenie hry.
Pri hre Heretic sme potrebovali odlišné priradenie akčných klávesov, pretože hra používa samostatné klávesy na streľbu a otváranie dverí.
7.2.4 Ukladanie konfigurácie ovládača
Po nastavení ovládania môžeme v RetroArchu prejsť do:
QUICK MENU → CONTROLS → MANAGE REMAP FILES
Tu sú dostupné možnosti uloženia mapovania pre emulačné jadro, adresár alebo konkrétnu hru.
Pri individuálnom nastavovaní MS-DOS hier je vhodné použiť možnosť:
Save Game Remap File
Je však potrebné upozorniť na špecifické správanie DOSBox Pure.
Viaceré naše hry používali spúšťací súbor dosbox.bat. Pri opätovnom spustení sa preto mohlo načítať spoločné mapovanie namiesto profilu pripraveného pre konkrétnu hru.
Tento problém sme zaznamenali najmä pri hre Heretic. Jej individuálne mapovanie fungovalo po manuálnom načítaní, ale automatické načítanie po ďalšom spustení nebolo spoľahlivé.
V nasledujúcej časti si ukážeme, kde RetroArch tieto konfiguračné súbory ukladá a ako ich možno kontrolovať cez SSH.
7.3 Kontrola a správa súborov .rmp v RetroArchu
Pri individuálnom nastavovaní MS-DOS hier prostredníctvom DOSBox Pure som narazil na problém s ukladaním a automatickým načítavaním konfigurácie ovládania.
RetroArch umožňuje uložiť vlastné mapovanie tlačidiel do súborov s príponou .rmp, ktoré označujeme ako remap súbory.
Tieto súbory obsahujú priradenia vstupov herného ovládača k funkciám emulátora, prípadne ku klávesom emulovanej počítačovej klávesnice.
7.3.1 Umiestnenie remap súborov
V mojej konfigurácii sa súbory pre DOSBox Pure nachádzali v adresári:
/userdata/system/configs/retroarch/config/remaps/DOSBox-pure/
Jeho obsah môžeme zobraziť príkazom:
ls -lah /userdata/system/configs/retroarch/config/remaps/DOSBox-pure/
Pri našom testovaní sa tu nachádzali napríklad tieto súbory:
dosbox.rmp
DynaBlaster.pc.rmp
Heretic.pc.rmp
Heretic.rmp
Okrem nich vznikli počas diagnostiky aj záložné alebo dočasne odložené verzie niektorých profilov.
Dôležité: Samotná existencia súboru .rmp ešte nezaručuje, že ho RetroArch pri spustení konkrétnej hry automaticky načíta.
7.3.2 Kontrola obsahu mapovania
Obsah spoločného profilu DOSBox Pure môžeme zobraziť príkazom:
cat /userdata/system/configs/retroarch/config/remaps/DOSBox-pure/dosbox.rmp
Pri testovaní sa v ňom nachádzali napríklad nasledujúce nastavenia:
input_player1_key_up = "264"
input_player1_key_down = "258"
input_player1_key_left = "260"
input_player1_key_right = "262"
input_player1_key_a = "271"
input_player1_key_b = "305"
input_player1_key_x = "112"
V uvedenom príklade boli smery joysticku priradené k numerickej klávesnici a akčné tlačidlá ku klávesom používaným v MS-DOS hrách.
Toto mapovanie bolo užitočné pri hre Dyna Blaster, no nemuselo vyhovovať ostatným titulom.
7.3.3 Individuálne mapovanie hry Heretic
Pri hre Heretic bolo potrebné nastaviť samostatné ovládanie streľby a otvárania dverí.
V jej individuálnom profile sme používali napríklad:
input_player1_key_l = "32"
input_player1_key_r = "306"
Význam nastavení:
| Parameter | Kláves | Funkcia v hre |
|---|---|---|
input_player1_key_l | Space | Otváranie dverí a používanie predmetov |
input_player1_key_r | Ľavý Ctrl | Streľba |
Po manuálnom načítaní súboru Heretic.rmp sa podarilo dosiahnuť funkčné ovládanie:
- Ružové tlačidlo slúžilo na streľbu.
- Červené tlačidlo slúžilo na otváranie dverí.
Problém nastal po ukončení a opätovnom spustení hry. Individuálny profil sa automaticky nenačítal vždy správne a ovládanie sa vrátilo k spoločnému mapovaniu.
7.3.4 Prečo dochádzalo k načítaniu nesprávneho profilu
Jednou z možných príčin bolo používanie rovnakého názvu spúšťacieho súboru dosbox.bat pri viacerých MS-DOS hrách.
RetroArch môže pri výbere profilu vychádzať z názvu načítaného obsahu, preto sa pri jednotlivých hrách mohli uplatniť spoločné pravidlá mapovania.
Počas testovania sme zaznamenali, že po opätovnom spustení Heretic sa načítalo mapovanie zo súboru dosbox.rmp, aj keď existoval samostatný profil Heretic.rmp.
Poznámka: Túto príčinu sme považovali za pravdepodobnú, ale automatické načítanie individuálneho profilu nebolo v čase testovania definitívne vyriešené.
7.3.5 Zálohovanie remap súborov
Pred úpravami odporúčam vytvoriť záložnú kópiu príslušného profilu.
Napríklad:
cp -a \
/userdata/system/configs/retroarch/config/remaps/DOSBox-pure/dosbox.rmp \
/userdata/system/configs/retroarch/config/remaps/DOSBox-pure/dosbox.rmp.bak
Záloha umožňuje obnoviť predchádzajúce nastavenie bez nutnosti opätovného mapovania všetkých tlačidiel.
Pred ďalšími úpravami si môžeme tiež zobraziť všetky dostupné profily:
find /userdata/system/configs/retroarch/config/remaps/DOSBox-pure/ \
-maxdepth 1 -type f -name '*.rmp' -print
Tieto príkazy slúžia iba na kontrolu a vytvorenie zálohy. Neodstraňujú existujúce mapovania.
7.3.6 Manuálne načítanie profilu v RetroArchu
Ak sa individuálne mapovanie automaticky nenačíta, môžeme ho počas spustenej hry vybrať manuálne.
V RetroArchu otvoríme:
QUICK MENU → CONTROLS → MANAGE REMAP FILES → LOAD REMAP FILE
Následne vyberieme požadovaný súbor, napríklad:
Heretic.rmp
Po jeho načítaní overíme ovládanie priamo v hre.
Pri našom testovaní tento postup fungoval, ale po ďalšom spustení hry bolo niekedy potrebné profil načítať znova.
Výsledok: Podarilo sa nám vytvoriť funkčné individuálne mapovania pre vybrané MS-DOS hry a identifikovať problém so spoločnými profilmi DOSBox Pure. Automatické načítavanie profilu hry Heretic však zostalo otvorenou úlohou, ktorú bolo potrebné ďalej doladiť.
7.4 Praktické nastavenie ovládania hier Dyna Blaster a Heretic
Po príprave základného mapovania DOSBox Pure som pristúpil k testovaniu jednotlivých MS-DOS hier priamo na arkádovom automate.
Pri testovaní som sa snažil dosiahnuť, aby bolo možné hry ovládať výhradne pomocou pôvodného joysticku a farebných tlačidiel bez nutnosti používať externú klávesnicu.
Najviac času som venoval hrám Dyna Blaster a Heretic, pretože každá z nich vyžadovala odlišné priradenie klávesov.
7.4.1 Nastavenie hry Dyna Blaster
Dyna Blaster je klasická arkádová hra, v ktorej hráč pomocou bômb odstraňuje prekážky a poráža protivníkov.
Pre pohodlné hranie bolo potrebné nakonfigurovať pohyb postavy, pokladanie bômb a pozastavenie hry.
Pri našom testovaní sa osvedčilo nasledujúce ovládanie:
| Ovládací prvok | Funkcia v hre |
|---|---|
| Arkádový joystick | Pohyb postavy |
| Modré tlačidlo | Položenie bomby |
| Žlté akčné tlačidlo | Pozastavenie hry |
Pre modré tlačidlo sme použili mapovanie na kláves pravý Ctrl:
input_player1_key_b = "305"
Pre pozastavenie hry sme pracovali s mapovaním klávesu P:
input_player1_key_x = "112"
Tieto hodnoty boli súčasťou konfigurácie mapovania DOSBox Pure.
Po úprave ovládania sa podarilo hru Dyna Blaster úspešne ovládať pomocou arkádového panela.
7.4.2 Nastavenie hry Heretic
Heretic patrí medzi klasické akčné hry z pohľadu prvej osoby. Na rozdiel od Dyna Blaster vyžaduje viacero ovládacích funkcií vrátane pohybu, streľby a otvárania dverí.
Pri našom testovaní bolo potrebné pripraviť individuálne mapovanie.
Dôležité boli najmä tieto klávesy:
| Kláves | Funkcia v hre |
|---|---|
| Ľavý Ctrl | Streľba |
| Space | Otváranie dverí a používanie |
| Smerové klávesy alebo príslušné klávesy pohybu | Ovládanie postavy |
V súbore Heretic.rmp sme použili nasledujúce priradenia:
input_player1_key_l = "32"
input_player1_key_r = "306"
Hodnota 32 predstavuje kláves Space a hodnota 306 predstavuje ľavý Ctrl.
Po manuálnom načítaní profilu sa podarilo dosiahnuť nasledujúce funkčné ovládanie:
| Fyzické tlačidlo | Funkcia |
|---|---|
| Ružové | Streľba |
| Červené | Otváranie dverí |
Toto mapovanie som úspešne otestoval priamo v hre.
7.4.3 Problém s automatickým načítaním profilu Heretic
Hoci sa po manuálnom načítaní súboru Heretic.rmp podarilo správne namapovať tlačidlá, po ukončení a opätovnom spustení hry sa niekedy obnovilo spoločné mapovanie DOSBox Pure.
Individuálny profil bolo následne potrebné znova načítať cez ponuku RetroArchu:
QUICK MENU → CONTROLS → MANAGE REMAP FILES → LOAD REMAP FILE
Následne som vybral súbor:
Heretic.rmp
Po jeho načítaní ovládanie opäť fungovalo podľa pripravených nastavení.
Pri diagnostike som zároveň skúšal konfiguráciu režimu Custom Keyboard Bindings priamo pre hru Heretic pomocou nasledujúcej položky v súbore /userdata/system/batocera.conf:
dos["Heretic.pc"].controller1_dosbox_pure=3
Táto konfigurácia nastavovala požadovaný typ ovládača pre DOSBox Pure, ale sama osebe nevyriešila problém s automatickým načítavaním individuálneho remap súboru.
Dôležité: V čase testovania bolo individuálne mapovanie Heretic funkčné po manuálnom načítaní. Jeho spoľahlivé automatické načítanie po každom spustení hry ešte nebolo dokončené.
7.4.4 Ukončovanie MS-DOS hier
Okrem samotného ovládania bolo potrebné zabezpečiť aj pohodlný návrat do hlavného menu Batocery.
Na mojom arkádovom automate sa osvedčila kombinácia:
Podržať pravé malé žlté tlačidlo HOTKEY a následne stlačiť zelené tlačidlo.
Táto kombinácia bola úspešne otestovaná pri ukončovaní MS-DOS hier a podrobne je zdokumentovaná v kapitole 3.4.
7.4.5 Výsledky testovania
Pri testovaní sa ukázalo, že používanie arkádového joysticku s DOSBox Pure je možné, ale pri niektorých hrách si vyžaduje individuálnu konfiguráciu.
Dyna Blaster sa podarilo nastaviť tak, aby bolo možné pohybovať postavou, pokladať bomby a pozastaviť hru pomocou arkádových tlačidiel.
Heretic bolo možné ovládať pomocou individuálneho profilu, avšak automatické načítavanie tohto profilu ešte vyžadovalo ďalšie doladenie.
Tieto skúsenosti ukázali, že pri emulácii MS-DOS hier nestačí vždy iba univerzálne mapovanie ovládača. Pre jednotlivé tituly je vhodné pripraviť a otestovať samostatné konfigurácie.
7.5 Výkonové obmedzenia Raspberry Pi 3 pri MS-DOS hrách
Po úspešnom nastavení ovládania som sa venoval aj testovaniu výkonu náročnejších MS-DOS hier.
Raspberry Pi 3 Model B disponuje štvorjadrovým procesorom Broadcom BCM2837 s architektúrou ARM Cortex-A53 a 1 GB operačnej pamäte.
Hoci tento hardvér postačuje na emuláciu mnohých starších hier, pri náročnejších tituloch môžu byť jeho možnosti obmedzené.
Najvýraznejšie sa to prejavilo pri testovaní hry Blood.
7.5.1 Testovanie hry Blood
Blood je akčná hra z pohľadu prvej osoby, ktorá využíva herný engine Build.
Hru som pripravil v adresári:
/userdata/roms/dos/Blood.pc/
Po spustení prostredníctvom DOSBox Pure sa hra načítala, ale jej priebeh nebol dostatočne plynulý na pohodlné hranie.
Preto som začal kontrolovať, či problém spôsobuje vysoké zaťaženie procesora, nedostatok operačnej pamäte alebo prehrievanie Raspberry Pi.
7.5.2 Kontrola zaťaženia procesora
Počas spustenej hry som sa cez SSH pripojil k Batocere a sledoval aktuálne zaťaženie systému.
Na tento účel môžeme použiť príkaz:
top
Pri testovaní sa zaťaženie procesu RetroArch pohybovalo približne na úrovni 134 % CPU.
V nástroji top môže proces na viacjadrovom systéme vykazovať viac ako 100 % využitia procesora, ak využíva výkon viacerých jadier.
Zvýšené zaťaženie potvrdilo, že emulácia hry kladie na Raspberry Pi 3 značné nároky. Samotná hodnota CPU však ešte neurčuje presnú príčinu nízkej snímkovej frekvencie.
7.5.3 Kontrola teploty Raspberry Pi
Aby som vylúčil prípadné prehrievanie, skontroloval som teplotu procesora:
vcgencmd measure_temp
Počas testovania hry Blood dosahovala teplota približne:
temp=73.6'C
Následne som overil, či nedochádza k obmedzovaniu výkonu v dôsledku vysokej teploty alebo problémov s napájaním:
vcgencmd get_throttled
Výsledok:
throttled=0x0
Táto hodnota znamená, že v sledovanom stave neboli hlásené aktuálne ani zaznamenané príznaky podpätia alebo obmedzovania výkonu, ktoré tento príkaz sleduje.
Pri danom meraní sa teda nepotvrdilo, že príčinou pomalého chodu hry bolo teplotné obmedzovanie procesora.
7.5.4 Nastavenia procesora v DOSBox Pure
Pri diagnostike som skontroloval aj nastavenia emulačného jadra DOSBox Pure.
Príslušné hodnoty zobrazíme príkazom:
grep -E '^dosbox_pure_(cpu_core|cycles|cycles_scale)' /userdata/system/configs/retroarch/cores/retroarch-core-options.cfg
V našej konfigurácii sa používali nasledujúce hodnoty:
dosbox_pure_cpu_core = "auto"
dosbox_pure_cycles = "auto"
dosbox_pure_cycles_scale = "1.0"
DOSBox Pure pri automatickom režime upravuje parametre emulácie podľa dostupných možností a požiadaviek emulovaného programu.
Zmena počtu emulovaných cyklov však nemusí priniesť vyšší výkon. Ak hardvér nedokáže požadovanú emuláciu spracovať dostatočne rýchlo, príliš vysoké nastavenie môže plynulosť ešte zhoršiť.
Preto som nepovažoval za vhodné bez ďalšieho testovania meniť systémové nastavenia, ktoré fungovali pri ostatných hrách.
7.5.5 Porovnanie s Linux Mint
Hru Blood som testoval aj na výkonnejšom počítači s operačným systémom Linux Mint prostredníctvom klasického DOSBoxu.
Pri tomto testovaní som využíval nastavenia:
core=dynamic
cycles=max
Na počítači s architektúrou x86 bolo možné dosiahnuť výrazne lepšiu hrateľnosť než na Raspberry Pi 3.
Je však potrebné zdôrazniť, že klasický DOSBox a DOSBox Pure nie sú totožné implementácie. Rovnako sa líšia možnosti procesora Raspberry Pi 3 a výkonnejšieho osobného počítača.
Toto porovnanie preto slúžilo predovšetkým na potvrdenie, že samotné herné súbory sú funkčné a hra môže na výkonnejšom hardvéri pracovať plynulejšie.
7.5.6 Výsledok testovania
Testovanie hry Blood prinieslo nasledujúce zistenia:
| Kontrolovaná oblasť | Výsledok |
|---|---|
| Spustenie hry Blood | Úspešné |
| Plynulosť hrania | Nedostatočná |
| Zaťaženie procesu RetroArch | Približne 134 % CPU |
| Teplota procesora | Približne 73,6 °C |
| Kontrola obmedzovania výkonu | throttled=0x0 |
| Test na výkonnejšom počítači | Výrazne lepšia hrateľnosť |
Z výsledkov vyplýva, že hra Blood predstavuje pre Raspberry Pi 3 v použitom emulačnom prostredí príliš náročnú úlohu na pohodlné hranie.
Naopak, pri menej náročných tituloch, ako Commander Keen, Duke Nukem 2 alebo Dyna Blaster, sa podarilo dosiahnuť funkčnú emuláciu a použiteľné ovládanie.
Hru Blood som sa rozhodol v hernej knižnici ponechať na ďalšie experimentovanie, napríklad s alternatívnym ovládaním alebo na prípadné testovanie výkonnejšieho hardvéru.
Záver: Raspberry Pi 3 dokáže aj v súčasnosti poslúžiť ako základ arkádového automatu pre množstvo klasických hier. Pri náročnejších MS-DOS tituloch však treba počítať s výkonovými obmedzeniami, ktoré nemožno vyriešiť iba zmenou mapovania tlačidiel alebo pripojením nového herného ovládača.
7.6 Zhrnutie konfigurácie DOSBox Pure a odporúčania
Konfigurácia emulačného jadra DOSBox Pure patrila medzi časovo najnáročnejšie časti modernizácie arkádového automatu Waveshare Arcade-101-1P.
Najväčšou výzvou nebolo samotné spustenie klasických MS-DOS hier, ale prispôsobenie ich ovládania pôvodnému GPIO joysticku a farebným tlačidlám.
Pri testovaní som dospel k niekoľkým dôležitým zisteniam.
7.6.1 Overené výsledky
| Hra | Výsledok testovania |
|---|---|
| Commander Keen 1 | Funkčná |
| Commander Keen 4 | Funkčná |
| Duke Nukem 2 | Funkčná |
| Dyna Blaster | Funkčná vrátane ovládania pomocou arkádových tlačidiel |
| Heretic | Funkčná po manuálnom načítaní individuálneho mapovania |
| Wolfenstein 3D | Spustiteľná, ovládanie vyžaduje ďalšie úpravy |
| Blood | Spustiteľná, ale výkon Raspberry Pi 3 nestačí na plynulé hranie |
7.6.2 Odporúčania pri konfigurácii
Pri nastavovaní DOSBox Pure sa mi osvedčilo najskôr overiť funkčnosť hry pomocou klávesnice a až následne pristúpiť k mapovaniu arkádových tlačidiel.
Dôležité je tiež vytvárať zálohy konfiguračných súborov, pretože nesprávne mapovanie môže znemožniť pohodlné ovládanie hry.
Pri individuálnych profiloch RetroArchu treba skontrolovať nielen uloženie súboru .rmp, ale aj to, či sa správny profil automaticky načíta pri ďalšom spustení hry.
Osobitnú pozornosť si vyžadujú hry používajúce rovnaký názov spúšťacieho súboru dosbox.bat, pri ktorých sme zaznamenali problémy s načítavaním individuálnych profilov.
7.6.3 Otvorené úlohy
Aj po úspešnej konfigurácii zostali niektoré oblasti, ktorým sa chcem v budúcnosti venovať:
- Spoľahlivé automatické načítavanie individuálneho mapovania hry Heretic.
- Dokončenie ovládania hry Wolfenstein 3D.
- Testovanie ďalších možností ovládania pomocou externého herného ovládača.
- Prípadné porovnanie výkonu náročnejších MS-DOS hier na výkonnejšom Raspberry Pi.
Výsledkom celej konfigurácie bolo sprevádzkovanie viacerých klasických MS-DOS hier na pôvodnom arkádovom hardvéri, pričom väčšinu bežných herných činností bolo možné vykonávať priamo pomocou joysticku a farebných tlačidiel.























































































































































































































































































































































































































































































































































































































































































































































































































