Przejdź do głównej zawartości

RetroPie, bo mi się dziecko alienowało

Dziecko moje najdroższe alienowało mi się siedząc przed komputerem w swoim pokoju. Nie żebym jej zabraniał, ale skoro ma grać, to niech gra przy nas, w salonie. Przynajmniej będziemy wiedzieli w co gra.

Wymagane hardware:

  • Raspberry Pi 2 Mod. B,
  • karta SD min. 8GB,
  • gamepad na USB,
  • telewizor

Opcjonalne w zależności od konfiguracji:

  • karta WiFi na USB
  • klawiatura na USB
  • pendrive czy inny storage na USB
Jak już to wszystko mamy, to możemy robić. Zajmie to parę godzin wszystkiego.

RetroPie

Obraz RetroPie pobieramy ze strony projektu, to będzie ten którego nazwa kończy się na rpi2.img.gz. Następnie obraz ten trzeba rozpakować i nagrać w standardowy sposób na kartę SD. Wkładamy kartę do RPi, podłączamy pada do USB, bootujemy naszą zabawkę i zaczynamy konfigurowanko jak zwykle z RPi (z podłączonego klawikordu i na telewizorze, albo po ludzku, po zalogowaniu przez SSH), czyli najpierw używając skryptu raspi-config rozciągamy system plików na całą kartę, reboot, pełna aktualizacja systemu, być może reboot jak trzeba, doprowadzić system do wygodnej obsługi (np. wrzucić swoje klucze SSH, zmienić hasło użytkownika pi, wrzucić tam swoje dotfiles, wybrać wygodny edytor, itd, itp) i co tam kto lubi. W tej chwili powinniśmy już mieć działające EmulationStation, jakkolwiek całkiem gołe. Teraz wypadałoby skonfigurować pada, albo nawet i dwa pady, bo obsługa EmulationStation jest przystosowana do użycia właśnie pada.

ROM-y

ROM-y skąd brać to każdy wie - z własnej kolekcji oryginalnych gier. Jako szczęśliwy były posiadacz PSX miałem coś tam pochowane po kątach, jakiś Tekken się znalazł, X-COM czy Final Fantasy. Używając legalnego oprogramowania z płyt CD zrobiłem komplety plików BIN/CUE, które to są znacznie lepiej obsługiwane przez RetroArch niż zwykłe ISO. Na początek postanowiłem użyć najprostszej metody transferu ROM-ów, czyli przez pendrive z użyciem automatu (działa literalnie jak jest w instrukcji, nie mam nic do dodania). Po wrzuceniu moich 3 szczęśliwie posiadanych gier okazało się, że karta SD 8GB to może być ciut za mało jak się chce obgrywać PSX, bo ROM-y mają po 500-650MB. Ale na razie ruszyło, tylko po restarcie EmulationStation nic się nowego w menu nie pojawiło.

Silnik emulatora do PSX

Zacznijmy od tego, że będzie potrzebny BIOS konsoli. Skąd go wziąć? HGW, jak ktoś ma PSX pewnie może go jakoś z niej wydobyć. Jako legalny posiadacz postanowiłem skorzystać z dorodziejstw torrentów i sobie ściągnąć backup. Moja konsola od jakiegoś czasu jest już trupem, więc to było jedyne rozwiązanie, które nie wymagało wielkiej gimnastyki.
Enter the hell of RetroPie-Setup. Nie, żartuję, aż tak źle nie jest. Zanim sobie pogiercujemy to trzeba zainstalować silnik emulatora PSX. W terminalu na koncie użytkownika pi odpalamy skrypt:
$ sudo RetroPie-Setup/retropie_setup.sh
Tam w pierwszym menu wybieramy "Experimental packages":
 i następnie "pcsx-rearmed":
Skrypt zadba o to, by wszystkie potrzebne do kompilacji pakiety zostały zainstalowane, następnie ściągnie sobie kod źródłowy, skompiluje go i wrzuci gdzie trzeba. Teraz wystarczy zrestartować EmulationStation i można grać.

Ale to słabo wygląda

No słabo wygląda, bo na liście gier mamy np. 4x Tekken 2 i 14x X-COM. Dzieje się tak dlatego, że ES (EmulationStation, tak to teraz będę oznaczał) listuje wszystkie pliki w katalogu o dopuszczalnych rozszerzeniach dla silnika, czyli w przypadku PSX i ROM-ów w postaci zbiorów BIN/CUE co najmniej 2x dla każdej gry. Jest to trochę głupie, bo próba odpalenia gry z pliku BIN się nie powiedzie, zadziała to tylko dla plików CUE. Co trzeba zrobić? Ano, trzeba zmienić listę dopuszczalnych rozszerzeń w konfiguracji emulatora (w żargonie ES nasywa się to "system"). W tym celu kopiujemy sobie plik konfiguracyjny do siebie:
$ cp /etc/emulationstation/es_systems.cfg ~/.emulationstation
i dokonujemy czujnej edycji usuwając wspominki o BIN (oraz bin) z ustawień silnika. Znajdujemy ustawienia dotyczące PSX i zmieniamy linijkę z tagiem <extension> na poniższą:
<extension>.cue .cbn .img .iso .m3u .mdf .pbp .toc .z .znx .CUE .CBN .IMG .ISO .M3U .MDF .PBP .TOC .Z .ZNX</extension>
Uwaga, to jest XML więc nie ma zmiłuj, musi być poprawnie składniowo albo małe kotki zginą.
Po restarcie ES już powinno być lepiej, ale nie całkiem dobrze, bo wciąż mamy listę plików, a nie listę gier - nie ma tam żadnych metadanych typu opis itd. Trzeba odpalić scraper.
Wracamy do naszego skryptu retropie_setup.sh i z Experimental packages wybieramy Scraper:
Po uruchomieniu wybieramy sobie albo albo "Scrape all systems" albo tylko wybrane, może na początek lepiej sobie pojechać po całości, ale i tak uprzednio dobrze będzie się upewnić czy nie ma nowszej wersji i dać "Update scraper". Tak dla pewności.
Ten program zadziała tylko wtedy, gdy ES nie będzie uruchomione, o czym nam uprzejmie przypomni w innym przypadku. W każdym razie po chwili będziemy mieli już metadane naszych gierek ściągnięte i z przyjemnością przejrzymy sobie ich listę, a następnie z przyjemnością w nagrodę pukniemy partyjkę w X-COM.
Po południu przyjdzie dzieć ze szkoły i już nie pogramy, więc lepiej korzystać.

Komentarze

Prześlij komentarz

Popularne posty z tego bloga

Programowanie ESP8266 w C/C++

ESP8266 powoli ustępuje miejsca swojemu następcy ESP32, ale jest to proces wyjątkowo powolny. Może to ceny tak samych chipów jak i płytek developerskich to powodują (niewiele jest gotowych modułów w cenie poniżej $10 z przesyłką), a może rozbudowany ekosystem bibliotek do ESP8266. W każdym razie ze starszym bratem ESP32 jeszcze długo będziemy mieć do czynienia, zwłaszcza że jest to wciąż jedna z najlepszych opcji jeżeli chodzi o mikrokontrolery.

ESP8266 można programować w Lua lub w Pythonie, jednak najlepszym wyjściem jest zaprogramowanie własnego firmware w C++ lub w C - daje to największą kontrolę i zapewnia najlepszą wydajność. Jakie mamy do tego możliwości? Od najłatwiejszej do najbardziej skomplikowanej.
ESP8266 core dla Arduino Link: Github

To jest najprostsze rozwiązanie, implementacja ramówki Wiring dla ESP8266. Jakkolwiek można tę obsługę zainstalować w Arduino IDE, to nie ma to większego sensu, bo nie da się tego edytora używać do niczego poważniejszego. Pisze się to w nor…

RetroPie, ROM-y z USB

Po wrzuceniu kilku ROM-ów na PSX okazało się, że karta SD z której bootuje się system jest za mała na to, żeby je tam trzymać. Inne opcje jakie przyszły mi do głowy to trzymać je na pendrive albo zamontować katalog z NAS po Sambie. W pomieszczeniu gdzie stoi telewizor WiFi działa co najwyżej jako-tako (nikt nie pomyślał o kablaturze podczas budowy...), więc na początek pójdzie 8GB pendrive. Powinno wystarczyć na parę dni.
Albo rybka, albo pipka RetroPie ma bardzo fajny ficzer automatycznego transferu ROM-ów po podłączeniu storage do USB. Jakkolwiek bardzo miłe i user friendly, to zupełnie nie będzie przydatne w momencie, gdy będziemy tam trzymać ROM-y. W końcu jak będziemy chcieli sobie coś tam wgrać, to i tak trzeba będzie wyjąć pendrive i włożyć go ponownie. Zaczynamy więc od wyłączenia tego wodotrysku, odpalamy retropie_setup.sh i na ekranie głównym wybieramy "Setup / configuration", a następnie "USB ROM Service":
i dalej "Disable USB ROM Service": Wyd…