O takiej przeszłości się nie zapomina: emulacja Amigi na Raspberry Pi

Strona głównaO takiej przeszłości się nie zapomina: emulacja Amigi na Raspberry Pi
14.12.2015 23:55
O takiej przeszłości się nie zapomina: emulacja Amigi na Raspberry Pi

Zdobyliście już swoje upragnioneRaspberry Pi 2, znaleźliście dla niego właściweoprzyrządowanie. Na biurku leży niewielki komputerek wielkościpaczki papierosów, którego jeden tylko rdzeń CPU jest szybszy niżPentium III, a rdzeni takich jest przecież cztery. Nie można teżzapomnieć o zintegrowanym układzie graficznym, o możliwościachniewyobrażalnych w 1999 roku. Co teraz? Oryginalna Malina nienadawała się do użytku jako komputer ogólnego zastosowania, alebyła interesującym edukacyjnym gadżetem, ciekawą zabawką dlaelektroników, znalazła zastosowanie jako centrum multimedialne –i jako emulator starego sprzętu. Mogliśmy bez problemu uruchomićna niej gry dla 8-bitowych komputerów czy konsol takich jak NES,SNES czy MegaDrive, ale płynna emulacja nowszych platform była pozajej zasięgiem. W drugiej części naszego poradnika pokażemy, żeRaspberry Pi 2 z odpowiednim oprogramowaniem z łatwością poradzi sobie też z Amigą 500/600.

bEpTOjjF

Overclocking: potrzeba szybkości

Raspberry Pi 2 bazuje na czipie Broadcom BCM2836, z czteremardzeniami Cortex-A7 taktowanymi zegarem 900 MHz. Do najbardziejwymagających zastosowań, takich jak emulacja całkowicie przecieżobcych architektur mikroprocesorowych to nie wystarczy. Na szczęściecałkiem łatwo możemy z Maliny wycisnąć więcej – twórcyzadbali o to, by podkręcanie sprzętu odbywało się w dobrym,uniksowym stylu, po prostu przez edycję pliku tekstowegokontrolującego firmware komputerka. Ten plik to /boot/config.txt –już mieliście z nim nieco do czynienia podczas konfigurowaniawyjścia wideo.

350170408810735553

Uwaga: rekordziści zdołali podkręcić zegar Raspberry Pi 2 donawet 1500 MHz, ale wiązało się to z naruszeniem wszelkichzabezpieczeń i ograniczeń, zatem nie polecamy takich prób –nawet jeśli uzyskacie stabilną pracę, znacznie skrócicie czasżycia Maliny. Normalnie firmware oferuje pięć bezpiecznych trybówpodkręcania, w których monitorowane są temperatura rdzenia iobciążenie procesora, a taktowanie i napięcie dynamiczniemodyfikowane. Włączyć jeden z takich bezpiecznych trybów możnaza pomocą narzędzia raspi-config – uruchamiamy go w terminalukomendą sudo raspi-config, a następnie w menu wybieramy pozycję 8– Overclock. Takie bezpieczne tryby niekiedy jednak źle wpływająna jakość emulacji, nierzadko powodując „przycinanie”emulowanej gry. Jeśli więc dysponujecie dodatkowymi radiatorami iporządnym zasilaczem, lepiej o podkręcanie zadbać samodzielnie.

bEpTOjjH

Otwieramy plik opcji firmware poleceniem sudo nano/boot/config.txt, a następnie na jego końcu dopisujemy następującepary właściwość-wartość (oczywiście nie trzeba przepisywaćkomentarzy):

arm_freq=1000 #częstotliwość rdzeniaARM w MHz sdram_freq=500 #częstotliwość pamięcioperacyjnej w MHz core_freq=500 #częstotliwość GPU wMHz over_voltage=2 #zwiększenie napięcia rdzeni (z1,2 do 1,25 V) temp_limit=85 #ochrona przed przegrzaniem force_turbo=1 #wyłącza dynamiczneskalowanie zegarów boot_delay=1 #chroni przeduszkodzeniem karty pamięci w trybie turbo

Warto na tym etapie zmienić jeszcze ilość pamięciudostępnionej układowi graficznemu – domyślne64 MB możemy powiększyć do nawet 512 MB, co przyda się później, przyemulacji wymagających konsol, takich jak PlayStation. W tym celudopisujemy do /boot/config.txt wiersz gpu_mem=512 Z pełną dokumentacją wszystkich opcji konfiguracyjnych firmwaremożecie zapoznać się na stronach elinux.org.A jaki jest efekt podkręcania? Kilka testów z phoronix-test-suitepokazało wyniki lepsze o nawet 25% – to często przekłada się naróżnicę między płynną grą, a klatkowaniem.

Malinowa Amiga

Emulacja starych architektur sprzętowych zawsze była wyzwaniem –wiele tych klasycznych maszyn nigdy nie doczekało się publicznegowydania dokumentacji, to co o nich wiemy często pochodzi z pracyochotników, mozolnie odtwarzających metodami odwrotnej inżynieriiich działanie i implementujących je na zupełnie innejarchitekturze sprzętowej. A jednak pomimo utrudnień taktechnicznych jak i prawnych (trzeba pamiętać, że oryginalny kodsystemowego oprogramowania jest na mocy konwencji berneńskiej wciążchroniony prawem autorskim), udało się osiągnąć bardzo dużo –dzisiejsze emulatory pozwalają na uruchamianie klasycznych gier zlepszą grafiką i dźwiękiem, ułatwiają zapisywanie stanów gry,a nawet dodają funkcje grania w trybie multiplayer.

bEpTOjjN

Jak się przekonacie, nawet Raspberry Pi pozwoli na skorzystanie ztych ulepszeń. Co ważne, powstają dziś emulatory pisane odpodstaw z myślą o Malinie, a nie tylko rekompilowane naarchitekturę ARM, dzięki którym możliwe się staje uzyskanieznacznie lepszej wydajności. W oficjalnych repozytoriach systemuRaspbian znajdziemy gotowy emulator Amigi 500/600, dobrze znany zpeceta fs-uae z dodatkowymi nakładkami. Nie warto naniego jednak tracić czasu – nie zapewni on płynnej rozgrywkinawet na Raspberry Pi 2.

350170408811194305

Najwydajniejszym emulatorem Amigi dla Maliny jest obecnieuae4arm-rpi, oferujący m.in. optymalizację kodu Just-In-Time iwsparcie dla interfejsu grafiki DispmanX, korzystającego zesprzętowej akceleracji GPU tego komputerka. Projekt rozwijany jestna Git Hubie, askompilowaną na Raspberry Pi 2 binarkę znajdziecie tutaj.

Przed zainstalowaniem emulatora należy w systemie zainstalowaćbiblioteki libguichan-sdl i libguichan, poleceniem sudo apt-getinstall libguichan-sdl-0.8.1-1 libguichan-0.8.1-1. Jeśli naszwyświetlacz to obsłuży, warto zmienić częstotliwośćodświeżania na 50 Hz, podając w pliku /boot/config.txtparametry:

bEpTOjjO

hdmi_group=1 hdmi_mode=31Pobrane archiwum rozpakowujemy poleceniem bzip2 -dcuae4arm-rpi-chips-0_4.bz2 | tar xvf - (albo np. za pomocą mc, Midnight Commandera).

Uruchamiamy emulator wchodząc w konsoli do katalogu uae4arm-rpi iwydając polecenie ./uae4arm.

Konfiguracja uae4arm jest bardzo prosta: panele menu dotycząkolejno ścieżek dostępu do Kickstartów i plikówkonfiguracyjnych, typu emulowanego procesora (w teorii nawet 68040 zAmigi 4000, ale nie liczcie na zbyt wiele), czipsetów graficznych,konfiguracji pamięci, dyskietek, twardych dysków, wyświetlania,dźwięku, kontrolerów i zapisanych stanów gry. Aby uzyskaćstandardową Amigę 500, należy wybrać ROM (Kickstart) w wersji1.3, Chipset: OCS, RAM: 512 KB pamięci Chip i 512 KB pamięci Slow(było to standardowe rozszerzenie do Amigi montowane od spodukomputera.

350170408811587521

Drugim wartym polecenia emulatorem jest uae4all2, rozwijany nabazie kodu uae4arm. Linki do jego najnowszej wersji znajdziecie naforachRaspberry Pi. Może on być interesujący dla posiadaczy Malinekpierwszej generacji, w archiwum znajduje się binarka uae4all-rpi1,skompilowana właśnie na starsze komputerki (oraz najnowszeRaspberry Pi Zero, jakby ktoś takie już miał). Niestety brakujejej optymalizacji JIT, odnotowaliśmy też problemy z dźwiękiem.

bEpTOjjP

Kilka słów o licencjach

Niestety emulatory to nie wszystko. Nie uruchomicie praktycznie żadnej gryczy dema z Amigi bez obrazu Kickstartu, czyli firmware tegokomputera. Bez naruszenia prawa możecie wejść w jego posiadaniena dwa sposoby – albo zgrywając binarny obraz ROM zeswojej starej Amigi, albo też kupując za 10 euro podstawowypakiet Amiga Forever (zawierający Kickstarty i inneoprogramowanie) od obecnego posiadacza praw do firmware'u Amigi,firmy Cloanto. Choć wiele osób skusi zapewne Zatoka Piratów,należy podkreślić, że te 10 euro pójdzie na dobrą sprawę –Cloanto wiele robiło i robi dla amigowej społeczności, starając się ozachowanie legalności emulowania tego kultowego komputera nawet wnajtrudniejszych czasach.

Klasyczne Lemingi tym razem nie na Amidze 500
Klasyczne Lemingi tym razem nie na Amidze 500

Kwestia licencjonowania tych wszystkich amigowych gier, obficieserwowanych przez serwisy z oprogramowaniem typu abandonware niestetydla zwykłego użytkownika nie wygląda zbyt dobrze. Prawo nierozpoznaje takiej kategorii jak „oprogramowanie porzucone przezproducenta”, z perspektywy ustawy nie ma różnicy międzypobraniem z Sieci takiego klasyka jak Shadow of the Beast i takiejnowości jak Fallout 4. Nienaruszające prawa źródła gier na Amigęsą dwa – albo poprzez samodzielne zgranie obrazu oryginalnychamigowych dyskietek, albo przez sięgnięcie po amigoweoprogramowanie rozprowadzane jako freeware/shareware. Godnympolecenia źródłem takich gier, dem i programów użytkowych jestAmiSector One.

uae4arm-rpi radzi sobie dobrze nie tylko z grami, ale i wymagającymi demami
uae4arm-rpi radzi sobie dobrze nie tylko z grami, ale i wymagającymi demami

Przydałby się szczęśliwy drążek

Po zdobyciu emulatora, amigowych Kickstartów i interesującychgier, pozostaje jedna nierozstrzygnięta kwestia – jak sterowaćwiększością gier? Najbardziej „retro” metodą byłobypodłączenie do Maliny klasycznego cyfrowego dżojstika przez złączeDB9, ale to już wymaga zabawy z elektryką i elektroniką orazoprogramowania sygnałów dla szyny GPIO – zajęcie raczej dlabardziej zaawansowanych użytkowników. Do tej kwestii wrócimy wprzyszłości.

bEpTOjjQ

Bez żadnej dodatkowej konfiguracji możecie jako dżojstik wuae4arm wykorzystać przewodowy gamepad do konsoli Super Nintendo.Wpinane do portów USB chińskie „klony” takich padów kosztująw Sieci niecałe 30 zł. Jeśli zaś chcielibyście skorzystać zpada bezprzewodowego, to najlepszym rozwiązaniem jest sięgnięciepo DualShocka 3 z PS3. Czemu nie z Xboksa 360? Niestety padMicrosoftu nie będzie działał bez specjalnego odbiornikabezprzewodowego (cena samego odbiornika to ok. 40 zł), zaś kabelekdo jego ładowania, dostarczany wraz z konsolą, na nic się nieprzyda – nie przesyła żadnych danych.

W wypadku DualShocka 3 nie tylko dostajemy działające połączeniepo kabelku USB, ale też do łączności bezprzewodowej wystarczykosztujący kilka złotych moduł Bluetooth. By go uruchomić,zainstalujmy wpierw zestaw niezbędnych bibliotek i narzędzi: sudoapt-get install bluez bluez-hcidump checkinstall libusb-devlibbluetooth-dev joystick.

By sprawdzić działanie modułu Bluetooth, wydajemy poleceniehciconfig – efekt wyglądać podobnie do tego.

350170408812242881

Jeśli tak nie jest,moduł niestety nie został rozpoznany przez system i lepiej poszukać innego. Jeśli w komunikacieznajduje się słowo DOWN, należy jeszcze moduł „obudzić”,wydając polecenie sudo hciconfig hci0 up.

Kolejny krok to sparowanie modułu z gamepadem. Pomoże nam w tymnarzędzie sixlinux,niestety niedostępne w repozytoriach Raspbiana. Jego kompilacja tojednak kilka chwil. Zrobimy to poleceniami

sudo apt-get install pyqt4-dev-tools wget http://www.pabr.org/sixlinux/sixpair.c gcc -o sixpair sixpair.c -lusb W rezultacie w bieżącym katalogu znajdziemyprogram sixpair. Podłączamy gamepad do Maliny kabelkiem USB iwydajemy polecenie sudo ./sixpair. W efekcie powinniśmy otrzymaćkomunikat informujący o powodzeniu całej operacji.

350170408812505025

To już prawie koniec – pozostaje jeszcze sięgnąć pomenedżera peryferiów PS 3 – QtSixA.Jego też będziemy musieli skompilować. Sięgniemy po źródła niez Sourceforge (te są obarczone poważnym błędem, uniemożliwiającympomyślną kompilację), ale z GitHuba. W tym celu należy wydaćpolecenia:

wget https://github.com/falkTX/qtsixa/archive/master.zip unzip master.zip cd qtsixa-master/sixad make sudo mkdir -p/var/lib/sixad/profiles sudo checkinstall Ostatniepolecenie zbuduje z wyników kompilacji pakiet Debiana (Raspbiana) izainstaluje go w systemie. Teraz, by sprawdzić, czy wszystko działa, należyuruchomić demona sixad poleceniem sudo sixad --start, a następnienacisnąć przycisk PlayStation na padzie. Jeśli poczujecie wibracje,to znak, że wszystko działa. Wówczas należy demona sixad dodaćdo listy uruchomieniowej poleceniem sudo update-rc.d sixad defaults izrestartować system (polecenie reboot).

To już naprawdę wszystko – domyślnyukład przycisków na padzie możecie modyfikować w ustawieniachInput emulatora. Trzeba jedynie zapamiętać, że trójkąt to X,kwadrat to Y, kółko to A, zaś krzyżyk to B.

350170408812767169

A co z konsolami?

Amiga nie jest największym wyzwaniemdla Raspberry Pi, choć ze względu na jej popularność w naszymkraju, właśnie Przyjaciółką zajęliśmy się na początku.Podkręcona Malina poradzi sobie też z emulacją oryginalnegoPlayStation i Nintendo 64, maszyn znacznie wydajniejszych. Tąkwestią zajmiemy się w trzeciej części cyklu, przyglądając siębliżej oprogramowaniu EmulationStation oraz projektom takim jakretropie i recalbox. W następnej zaś części… spodziewajcie sięniespodzianki.

Programy

Aktualizacje
Aktualizacje
Nowości
Udostępnij:
bEpTOjkD