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

O takiej przeszłości się nie zapomina: emulacja Amigi na Raspberry Pi14.12.2015 23:55

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.

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.

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.

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.

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.

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:

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.

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.

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.

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.

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.

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.

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.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.