Pierwsze kroki z Raspberry Pi: RPi jako emulator konsoli Playstation i RetroPie
Kontynuujemy cykl prezentacji sposobów implementacji emulatorów konsol do grania na Raspberry Pi. W tym odcinku zajmiemy się emulacją konsol Playstation PSX oraz multisystemową konsolę RetroPie.
Playstation
Sądzę, że tej konsoli zarówno starszym jak i młodszym Czytelnikom nie trzeba przedstawiać. Jednak aby zachować spójność naszego cyklu artykułów „konsolowych” scharakteryzujmy ją w kilku zdaniach. Oficjalna premiera PlayStation miała miejsce 3 grudnia 1994 roku (w Europie pierwsze egzemplarze trafiły na półki około 10 miesięcy później). PlayStation, obok takich urządzeń jak Nintendo 64 czy Sega Saturn zaliczamy do konsol piątej generacji. Sercem PSX jest 32-bitowy procesor RISC R3000A MIPS taktowany zegarem 33,8688 MHz, zintegrowany z układem GPU. Do dnia dzisiejszego PlayStation wraz z PSOne (zmniejszona i odświeżona wersja PSX) sprzedało się w ponad 100 milionach egzemplarzy. O ogromnym sukcesie rynkowym konsoli zadecydowały nie tylko dobre parametry sprzętowe, umożliwiające uzyskanie efektownych gier 3D, ale także ich duża liczba.
Jednak co robi PlayStation w tym zestawieniu, przecież wciąż omawiamy temat emulacji na Raspberry Pi? Tak, emulacja PSX na Raspberry Pi jest możliwa! Do kompilacji i uruchomienia emulatora PCSX na zestawie RPi podszedłem z dużą dozą niedowierzania. Efekt końcowy nie jest idealny (może najbliższa przyszłość przyniesie lepszą optymalizację PCSX pod kątem OpenGL ES i Raspberry Pi), jednak i tak znacznie przerósł moje oczekiwania. Zacznijmy więc od kompilacji naszego emulatora.
Korzystając z narzędzia git pobieramy kod źródłowy PCSX:
git clone git://notaz.gp2x.de/~notaz/pcsx_rearmed.git cd pcsx_rearmed
Aby proces kompilacji przebiegł prawidłowo niezbędne jest uprzednie utworzenie dowiązania symbolicznego do biblioteki libGLESv1_CM.so:
sudo ln -fs /opt/vc/lib/libGLESv1_CM.so /usr/lib/libGLES_CM.so
W następnym kroku przygotowujemy kod źródłowy do kompilacji:
./configure --sound-drivers=sdl
W przypadku wystąpienia informacji o brakującej bibliotece lipicofe w terminalu wpisujemy polecenie:
it submodule init && git submodule update
oraz ponownie:
./configure --sound-drivers=sdl
Log procesu konfiguracji powinien wyglądać następująco:
architecture arm platform generic built-in GPU unai sound drivers sdl plugins gpu_gles.so gpu_unai.so gpu_peops.so spunull.so C compiler gcc C compiler flags -mfpu=vfp -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -Wno-unused-result libraries -L/usr/lib/arm-linux-gnueabihf -lSDL -lpng -ldl -lm -lz linker flags enable dynarec yes ARMv7 optimizations no enable ARM NEON no tslib support yes OpenGL ES output yes
W przedostatnim kroku uruchamiamy kilkudziesięciu minutową kompilację poleceniem:
make
Po jej zakończeniu kompilacji możemy uruchomić emulator:
sudo ./pcsx
W przypadku emulatora PCSX ROM-y z grami (w postaci obrazów ISO) nie muszą być umieszczone w jednym folderze. Wyboru pozycji, jak i konfiguracji emulatora dokonujemy poprzez wygodny w obsłudze graficzny interfejs użytkownika.
Poniżej zaprezentowano film ilustrujący szybkość komputera RPi w rozgrywce dwóch popularnych tytułów:
;
RetroPie
Dotychczas skupiliśmy się na opisie emulatorów pojedynczych platform. Uważny czytelnik zauważył również, że w naszym spisie zabrakło takich konsol jak NES (popularnie nazywany Pegasusem) oraz jego następcy SNES (Super Nintendo Entertainment System), które również w dużym stopniu odcisnęły swe piętno w historii elektronicznej rozrywki. Na szczęście nic nie zostanie pominięte, a taki układ artykułu jest zabiegiem celowym. Tym samym docieramy do podsumowania w którym chciałbym opisać projekt RetroPie, wykorzystujący aplikację RetroArch (znaną dawniej pod nazwą SSNES).
Czym jest RetroArch? Jest to multisystemowy emulator o modularnej budowie umożliwiający emulację wielu systemów, instalowanych poprzez system samodzielnych „wtyczek”. RetroArch w swym działaniu wykorzystuje API biblioteki libretro. Aktualnie system obsługuje m.in. takie platformy jak NES, SNES, GameBoy Color, GBA, Game Gear oraz maszyny Arcade (MAME).
Instalacja RetoArch nie jest zbyt skomplikowanym procesem, jednak dla własnej wygody warto uprościć zadanie poprzez wykorzystanie skryptów projektu RetroPie. Projekt RetroPie (strona domowa: https://github.com/petrockblog/RetroPie-Setup) umożliwia niezwykle proste zainstalowanie RetroArch wraz z niezbędnymi wtyczkami i wygodnym interfejsem, na zestawie Raspberry Pi. Tym samym w kilka minut przekształcimy RPi w multisystemowy emulator o potężnych możliwościach. Do dzieła…
Prze rozpoczęciem procesu instalacji, autorzy projektu zachęcają do aktualizacji wszystkich pakietów systemowych:
sudo apt-get update sudo apt-get upgrade
Następnie instalujemy w systemie pakiety git oraz dialog:
sudo apt-get install -y git dialog
Tym samym możemy przystąpić już do pobrania źródeł projektu:
cd $HOME git clone git://github.com/petrockblog/RetroPie-Setup.git
Ostatnim etapem przed uruchomieniem właściwego instalatora jest przypisanie odpowiednich praw do pobranego skryptu:
cd RetroPie-Setup chmod +x retropie_setup.sh
Jesteśmy już gotowi do uruchomienia skryptu instalacyjnego:
sudo ./retropie_setup.sh
Jedyną wymaganą przez instalator interakcją ze strony użytkownika jest podjęcie wyboru dotyczącego trybu przeprowadzanej instalacji, jak przedstawiono to na rysunku 1.
Rys. 1. RetroPie – wybór trybu instalacji