Журнал LinuxFormat - перейти на главную

LXF164: Иг­рать на Pi

Материал из Linuxformat
Версия от 02:00, 30 октября 2018; Olkol (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск


Raspberry Pi Пре­вра­ща­ем ваш кар­ман­ный ком­пь­ю­тер в иг­ро­вую при­став­ку

Содержание

Raspberry Pi: Рет­ро-иг­ры

Дэ­вид Хей­вард воз­вра­ща­ет без­дар­но по­тра­чен­ную юность, эму­ли­руя зо­ло­тую эру до­машних ком­пь­ю­тер­ных игр 1980-х с по­мо­щью Pi.

(thumbnail)
Наш эксперт Дэ­вид Хей­вард вы­рос сре­ди тю­ле­ней, при­род­ных вра­гов пин­гви­нов, но это ни­ко­гда не ме­ша­ло ему лю­бить Linux.

На этом ко­ро­лев­ском ост­ро­ве [на­мек на од­но­имен­ную ра­дио­по­ста­нов­ку BBC, – прим. пер.] мно­го пре­крас­ных на­цио­наль­ных тра­ди­ций: ры­ба и чип­сы [лю­би­мое блю­до анг­ли­чан, – прим. пер.], «иде­аль­ная пин­та» [сеть бри­тан­ских па­бов “The Perfect Pint”, – прим. пер.] и пляж раз­вле­чений в Боль­шом Яр­му­те – лишь часть из них. Но один обы­чай сто­ит пле­чом к пле­чу с куль­то­вы­ми па­мятника­ми, при­даю­щи­ми Бри­тании ве­ли­чие: он по­ро­дил це­лое по­ко­ление сво­бод­ных твор­че­­ских мыс­ли­те­лей. Этот обы­чай – не что иное, как Ве­ли­кая ре­во­лю­ция 8-бит­ных до­машних ком­пь­ю­тер­ных вы­чис­лений. Пло­ды ее проч­но воз­гла­вили спи­сок игр вось­ми­де­ся­тых, а неко­то­рые из лю­би­мей­ших фи­гу­ран­тов ком­пь­ю­тер­ной ис­то­рии се­го­дня ук­ра­ша­ют собой стра­ницы eBay.

Что­бы воскре­сить эти ушед­шие дни, час­то при­хо­дит­ся уста­нав­ли­вать эму­ля­то­ры в на­ши г­ромад­ные ком­пь­ю­те­ры, что ли­ша­ет нас час­ти то­го ду­ха, ко­то­рый оли­це­тво­рял зо­ло­той век до­машних ком­пь­ю­те­ров. Конеч­но, есть и дру­гая воз­мож­ность: мож­но ку­пить один из на­ших лю­би­мых ком­пь­ю­те­ров и под­клю­чить его к ста­ро­му плаз­мен­но­му те­ле­ви­зо­ру с диа­го­на­лью 52 дюй­ма. Од­на­ко эти ком­пь­ю­те­ры уже не юны, и ес­ли о них не за­бо­ти­лись долж­ным об­ра­зом, они мо­гут сло­мать­ся при под­ве­ши­вании их на сте­ну.

Но есть аль­тер­на­ти­ва: со­че­тание кое-че­го со­вре­мен­но­го и кое-че­го не слиш­ком со­вре­мен­но­го. Raspberry Pi – воз­мож­но, од­на из луч­ших ин­но­ва­ций со вре­мен по­яв­ления до­машних ком­пь­ю­те­ров, ко­то­рая воз­ве­ща­ет но­вую зо­ло­тую эру ком­пь­ю­те­ров. Этот ком­пь­ю­тер раз­ме­ром с бан­ков­скую кар­ту на­хо­дит серь­ез­ное при­менение в твор­че­­ских про­ек­тах: от­прав­ля­ет­ся к границам космо­са, пре­вра­ща­ет­ся в бес­про­вод­ной при­емник из со­ро­ко­вых, ста­но­вит­ся сред­ст­вом ав­то­ма­ти­за­ции до­ма и ис­поль­зу­ет­ся во мно­гих дру­гих про­ек­тах, ко­то­рые до­ка­зы­ва­ют, на­сколь­ко изобретательными и гиб­ки­ми яв­ля­ют­ся поль­зо­ва­те­ли и RPi.

По­это­му мы по­сле­ду­ем их при­ме­ру и по­смот­рим, что по­лу­чит­ся, ес­ли при­ку­пить кое-что на eBay, взять Raspberry Pi и лист са­мо­клея­ще­го­ся пла­сти­ка и, восполь­зо­вав­шись по­мо­щью рас­ту­ще­го со­об­ще­ст­ва поль­зо­ва­те­лей RPi, воссоз­дать клас­си­че­­ский до­машний ком­пь­ю­тер вось­ми­де­ся­тых.

ZXPi

На­ша пер­вая оста­нов­ка – это ми­лое чу­до с ре­зи­но­вой кла­виа­ту­рой, из­вест­ное в на­ро­де как Speccy. ZX Spectrum 48k и в са­мом де­ле стал вы­даю­щим­ся дости­жением сво­его вре­мени, мгно­вен­но пре­вра­тив до­мо­рощенных про­грам­ми­стов в ком­мер­че­­ских ги­ган­тов сфе­ры раз­ра­бот­ки ПО, а школьники мог­ли явить­ся до­мой после уроков и про­си­деть за ним до ужи­на, кро­пая иг­ры, во­шед­шие в ан­на­лы ком­пь­ю­тер­ной ис­то­рии.

(thumbnail)
> Ве­ли­кий ZX Spectrum. Бла­го­сло­ви его Гос­подь!
(thumbnail)
> Внут­рен­но­сти ZX Spectrum, го­то­вые к сня­тию.

Но до­воль­но носталь­гии – от нее сы­ре­ют гла­за. По­бро­див по страницам eBay, мы на­шли нера­бо­чий ZX Spectrum за пле­вые 2,99 фун­та – в кон­це кон­цов, раз­би­рать жи­во­го Speccy бы­ло бы ко­щун­ст­вом. Он вы­гля­дел не очень хо­ро­шо из-за из­но­са, но и боль­шин­ст­во из нас, некогда иг­рав­ших в та­кие, се­го­дня то­же не цве­тут пыш­ным цве­том.

На­шей пер­вой за­да­чей бы­ло про­ве­рить, не уста­рел ли RPi; мы экс­пе­ри­мен­ти­ро­ва­ли с ним с мо­мен­та его по­яв­ления у нас в поч­то­вом ящи­ке, и по­сколь­ку в ми­ре Pi все бы­ст­ро ме­ня­ет­ся, мы по­ду­ма­ли, что по­ра об­но­вить его на Wheezy. Ссыл­ку для за­груз­ки сис­те­мы мож­но най­ти на сай­те Raspberry Pi, goo.gl/4w4ps, с под­роб­ным ру­ко­во­дством по ее ко­пи­ро­ванию на SD-кар­ту и на­строй­ке. За­тем мы вы­полнили ко­ман­ду sudo apt-get update/upgrade, и че­рез несколь­ко ми­нут наш RPi об­но­вил­ся и пре­красно за­ра­бо­тал.

За­тем по­сле­до­вал де­мон­таж ZX Spectrum, сво­дя­щий­ся к от­кру­чи­ванию пя­ти вин­тов на нижней час­ти ма­ши­ны и сня­тия шлей­фа кла­виа­ту­ры. Ма­те­рин­ская пла­та име­ла один цен­траль­ный винт, ко­то­рый по­сле уда­ления оста­вил толь­ко го­лый пла­ст­мас­со­вый кор­пус.

RPi су­ще­ст­вен­но мень­ше на­стоя­щей ма­те­рин­ской пла­ты Spectrum, и нам при­шлось ма­лость по­тру­дить­ся, что­бы удоб­но и на­деж­но рас­по­ло­жить ком­понен­ты RPi в но­вом кор­пу­се. Мы об­на­ру­жи­ли, что пор­ты RPi – RCA Video и Audio пре­крас­но сов­па­ли с пор­та­ми Spectrum – Mic и Ear, но разъ­ем для под­клю­чения SD-кар­ты RPi упер­ся в стен­ку пла­ст­мас­со­во­го кор­пу­са. Лег­кое дви­жение ку­са­чек – и у нас по­лу­чил­ся са­мо­дель­ный слот для SD-карт, доступ­ный да­же при за­кры­том кор­пу­се; рас­ши­рив этот слот, мы так­же смог­ли за­пи­тать уст­рой­ст­во от за­рядника HTC.

За­тем мы под­клю­чи­ли HDMI и Ethernet и с по­мо­щью ста­рой доб­рой чер­ной изо­лен­ты за­кре­пи­ли RPi на осно­вании кор­пу­са Spectrum, а так­же за­кре­пи­ли ка­бе­ли на кор­пу­се, что­бы они не вы­ры­ва­ли RPi с ее за­кон­но­го мес­та, ес­ли за них дер­нуть. Тут у нас возник­ла про­бле­ма с кла­виа­ту­рой. Хо­тя до нас уже был про­ект та­ко­го ро­да – па­рень по имени Брай­ан пе­ре­со­брал ZX Spectrum на BeagleBoard [де­ше­вый од­но­плат­ный ком­пь­ю­тер, со­вме­ст­ная раз­ра­бот­ка ком­паний Texas Instruments и Digi-Key, – прим. пер.] и кла­виа­ту­ра у него успеш­но за­ра­бо­та­ла (см. goo.gl/V5cH3) – на­ши по­пыт­ки бы­ли не слиш­ком удач­ны. Ко­ро­че, мы пол­но­стью про­ва­ли­лись, за­пу­тав шлейф кла­виа­ту­ры в ин­тер­фей­се, ко­то­рый обод­ра­ли с обыч­ной кла­виа­ту­ры USB. Но ре­ши­ли плю­нуть на это и под­клю­чи­ли обыч­ную кла­виа­ту­ру и мышь че­рез боль­шой порт вво­да/вы­во­да Spectrum.

Когда мы на­де­ли крыш­ку, ZXRPi вы­гля­дел не так уж пло­хо, хо­тя кое-что за­ста­ви­ло бы Хи­та Ро­бин­со­на [W. Heath Robinson, анг­лий­ский ил­лю­ст­ра­тор XX в., бо­лее все­го из­вест­ный ри­сун­ка­ми экс­цен­трич­ных ме­ханиз­мов, – прим. ред.] ра­до­ст­но пе­ре­вер­нуть­ся в гро­бу. Од­на­ко, когда мы под­клю­чи­ли его к те­ле­ви­зо­ру и эле­гант­но, хо­тя и осто­рож­но, уло­жи­ли ря­дом, все это смот­ре­лось вполне достой­но. Нам оста­ва­лось толь­ко уста­но­вить при­лич­ный эму­ля­тор Spectrum и раз­до­быть ка­кие-нибудь ста­рые иг­ры.

Ус­та­нов­ка и за­пуск эму­ля­то­ра Spectrum бы­ли до­воль­но про­сты; для это­го про­ек­та мы взя­ли Fuse Emulator. Что­бы уста­но­вить и за­пустить его, вы­полните сле­дую­щие дей­ст­вия. Зай­ди­те в тер­ми­нал, на­бе­ри­те

sudo apt-get install fuse-emulator-common

и на­жми­те Enter. На­жми­те “y” для под­твер­жде­ния за­груз­ки и ус­та­нов­ки. По о­кон­чании ус­та­нов­ки вер­ни­тесь в ко­манд­ную стро­ку, на­бе­ри­те

sudo apt-get install spectrum-roms fuse-emulator-utils

и на­жми­те Enter. Сно­ва вер­нув­шись в ко­ман­дую стро­ку, на­бе­ри­те

sudo amixer cset numid=3 2

и опять-та­ки на­жми­те Enter.

Эта ко­ман­да вклю­чит звук че­рез HDMI, но он до­воль­но неста­би­лен, так что при необ­хо­ди­мо­сти за­мените «2» на «1», и звук пе­ре­на­пра­вит­ся на зву­ко­вой порт RPi.

По­том вый­ди­те из тер­ми­на­ла, на­жми­те на кноп­ку Start LXDE (За­пуск LXDE) и вы­бе­ри­те Games > Fuse Spectrum Emulator (GTK+ Version) [Иг­ры > Эму­ля­тор Fuse Spectrum (вер­сия для GTK+)]. Уве­личь­те раз­мер ок­на, по­тя­нув за уго­лок.

Те­перь за­гру­зи­те ка­кую-нибудь иг­ру Spectrum, на­при­мер, с сай­та World of Spectrum (goo.gl/trJvd); за­тем в ме­ню Fuse вы­бе­ри­те Media > Tape > Open [Но­си­тель > Лен­та > От­крыть], по­сле это­го в окне Spectrum на­бе­ри­те “J” для за­груз­ки иг­ры, за­тем “Ctrl+PP” (что со­от­вет­ст­ву­ет ко­ман­де Load “”).

Иг­ра долж­на за­гру­зить­ся, а в зву­ко­вом вы­хо­де, к ко­то­ро­му мож­но под­клю­чить сте­рео­на­ушники, дол­жен поя­вить­ся звук. По­сле это­го останет­ся толь­ко вер­нуть­ся к за­бро­шен­но­му 30 лет на­зад Manic Miner и прой­ти его до кон­ца.

MegaPi

Хо­тя нам не уда­лось на 100 % воссоз­дать функ­цио­наль­ность Spectrum, идея рет­ро-кор­пу­са для Raspberry Pi нам очень при­гля­ну­лась, и мы призаду­мались о дру­гих ста­рых ком­пь­ю­те­рах, ко­то­рые удов­ле­тво­ри­ли бы на­ши ка­при­зы.

На­ше внимание при­влек­ла ста­рая зна­ко­мая – Sega Mega Drive, ак­ку­рат­ная, стиль­ная да­же по се­го­дняшним стан­дар­там ко­ро­боч­ка; из нее по­лу­чил­ся бы иде­аль­ный рет­ро-кор­пус для RPi. Но сна­ча­ла нуж­но под­го­то­вить RPi для но­вой жизни внут­ри луч­шей из кон­со­лей всех вре­мен, и мы вознамерились иг­рать на ней не толь­ко в иг­ры для Sega Mega Drive, но и во все мно­го­об­ра­зие игр для «же­ле­за» той эпо­хи.

Для это­го мы уста­но­ви­ли пре­крас­ный про­ект RetroPie с сай­та petRockBlog – доста­точ­но бы­ло сле­до­вать ин­ст­рук­ци­ям с goo.gl/1sspF. В на­шем слу­чае мы ре­ши­ли ском­пи­ли­ро­вать са­мые све­жие вер­сии про­грамм, скрип­тов и ядер, вы­брав вто­рой пункт глав­но­го ме­ню спо­со­бов уста­нов­ки – Source-based (custom) [На осно­ве ис­ходников (поль­зо­ва­тель­ская)]. Од­на­ко, как от­ме­ча­ет­ся на сай­те, ком­пи­ля­ция все­го необ­хо­ди­мо­го занима­ет несколь­ко ча­сов, и все это вре­мя ре­сур­сы RPi бу­дут за­ня­ты до упо­ра, так что ча­са три ниче­го дру­го­го на нем де­лать не по­лу­чит­ся; но по­тер­пи­те – ре­зуль­тат сто­ит ожи­дания. По­сле окон­чания уста­нов­ки RPi по­лу­ча­ет за­слу­жен­ный пе­ре­рыв на от­дых в ви­де пе­ре­за­груз­ки. За­тем доста­точ­но лишь вы­брать иг­ру (мы пред­по­ла­га­ем, что вы сле­дуе­те ре­ко­мен­да­ци­ям по со­блю­дению ав­тор­ских прав, при­ве­ден­ным во врезке внизу слева) и за­пустить ее в тер­ми­на­ле сле­дую­щим об­ра­зом:

retroarch -L /home/pi/RetroPie/emulatorcores/Genesis-Plus-GX/libreto.so /home/pi/RetroPie/roms/megadrive/Sonic.md

Это мы за­гру­зи­ли иг­ру Sonic the Hedgehog, про­шив­ка ко­то­рой по­ме­ща­лась в ка­та­ло­ге roms на “megadrive”. Вам, ра­зу­ме­ет­ся, нуж­но в этой ко­ман­де из­менить пу­ти к эму­ля­то­ру и к иг­ре.

Ку­пить нера­бо­чую Mega Drive ока­за­лось до­воль­но про­сто, и она стои­ла все­го несколь­ко фун­тов с достав­кой, но вме­сто то­го, что­бы вы­тас­ки­вать из нее внут­рен­но­сти, мы при­ду­ма­ли кое-что по­хит­рее: не по­лу­чит­ся ли раз­мес­тить Raspberry Pi внут­ри кар­трид­жа Sega Mega Drive? Наш эк­зем­п­ляр Mega Drive вы­гля­дел немно­го из­но­шен­ным, так как с мо­мен­та сво­его ро­ж­дения в 1992 го­ду он-таки по­лу­чил свою до­лю экш­на, и мы по­ду­ма­ли, что с Paspberry Pi в кар­трид­же мы лишь до­ба­вим еще несколь­ко оч­ков в поль­зу его рет­ро-сти­ля.

Ра­зу­ме­ет­ся, в ка­че­­ст­ве иг­ры мы вы­бра­ли Sonic, и так как у нас был ста­рый кар­тридж Sonic the Hedgehog, мы по­ду­ма­ли, что сто­ит раз­мес­тить RPi внут­ри него. RPi и в са­мом де­ле уме­ща­ет­ся внут­ри кар­трид­жа Mega Drive, но оста­ет­ся очень ма­ло мес­та для ка­бе­лей, да­же ес­ли уда­лить пла­ст­мас­со­вые пе­ре­го­род­ки для раз­ме­щения SD-кар­ты. По­это­му вме­сто то­го, что­бы по­ме­стить RPi внут­ри гру­бо ис­кром­сан­но­го кар­трид­жа, из ко­то­ро­го тор­чал бы пу­чок про­во­дов, мы ре­ши­ли уста­но­вить RPi в кор­пу­се Mega Drive, восполь­зо­вав­шись тем, что там есть, для час­тич­но­го со­хранения функ­цио­наль­но­сти ори­ги­наль­ной кон­со­ли.

Мы раз­мес­ти­ли RPi в осно­вании кор­пу­са Mega Drive; SD-кар­та лег­ко доступ­на че­рез бо­ко­вой порт рас­ши­рения, ко­то­рый мож­но при­крыть пла­ст­мас­со­вой крыш­кой, а два ка­бе­ля USB от RPi вы­хо­дят в два пе­редние пор­та кон­трол­ле­ра иг­ро­вой кон­со­ли. Ка­бе­ли HDMI и Ethernet бы­ли про­пу­ще­ны че­рез порт пи­тания и ТВ-вы­ход с задней сто­ро­ны кор­пу­са, а пи­таю­щий ка­бель проведен че­рез бо­ко­вой про­ем.

Тща­тель­но за­кре­пив все ком­понен­ты Raspberry Pi, что­бы они не вы­скольз­ну­ли из кор­пу­са, мы на­ча­ли про­со­вы­вать необ­хо­ди­мые ка­бе­ли в со­от­вет­ст­вую­щие пор­ты. Мы на­деж­но за­кре­пи­ли крыш­ку Mega Drive, что­бы кре­пеж­ные вин­ты не ка­са­лись ка­бе­лей или са­мой RPi, уло­жи­ли кон­соль в ее но­вое жи­ли­ще под те­ле­ви­зо­ром и по­да­ли на восста­нов­лен­ную MegaPi пи­тание. Кноп­ки управ­ления пи­танием и гром­ко­стью на пе­редней панели кон­со­ли, ес­те­ст­вен­но, не ра­бо­та­ли, но они внесли свой вклад в рет­ро-стиль кон­со­ли де­вя­но­стых с прив­ку­сом со­вре­мен­но­сти.

Наш MegaPi пре­крас­но зара­бо­та­л, и мы уст­рои­ли се­бе ве­черинку клас­си­че­­ских игр Mega Drive с эму­ля­то­ром Genesis в RetroPie.

WinPi

C точ­ки зрения жур­на­ла о Linux, наш сле­дую­щий про­ект граничит с непри­ли­чи­ем. Нам уда­лось за­пустить в QEMU на RPi... DOS 6.22 и Windows 3.1! Вме­сто соз­дания об­раза в QEMU мы восполь­зо­ва­лись го­то­вым об­ра­зом VirtualBox, скон­вер­ти­ро­вав его в «сы­рой» файл IMG сле­дую­щей ко­ман­дой:

vboxmanage clonehd “image.vdi” “image.img” --format RAW

За­мените image.vdi и image.img на на­звание сво­его об­раза, за­тем пре­об­ра­зуй­те «сы­рой» об­раз в об­раз qcow QEMU ко­ман­дой

qemu-img convert -f raw image.img -O qcow2 image.qcow

Ре­зуль­та­ты ока­за­лись впе­чат­ляю­щи­ми, и на­блю­дение за­пуска Windows 3.1 под зву­ки «та-да-та-да» доста­ви­ло нам из­вра­щен­ное удо­воль­ст­вие. Сто­ит ли го­во­рить, что все за­пусти­лось очень бы­ст­ро, но на RPi ма­ло­ва­то опе­ра­тив­ной па­мя­ти, и че­рез несколь­ко ми­нут ра­бо­ты ОС от Microsoft все за­вис­ло, а QEMU пе­ре­стал за­гру­жать об­раз, по­ка мы не уда­ли­ли и по­втор­но не пре­об­ра­зо­ва­ли его. Как знать, воз­мож­но, ко­ман­да Эбо­на до­ба­ви­ла в Windows ава­рий­ный ме­ханизм вы­клю­чения спе­ци­аль­но на этот слу­­чай? |

Персональные инструменты
купить
подписаться
Яндекс.Метрика