LINUX.ORG.RU

Starcraft портирован на ARM

 , , ,


1

2

Notaz, участник проекта OpenPandora, провёл реверс-инжиниринг игры StarCraft и портировал её на ARM-платформу. Ему удалось это сделать несмотря на отсутствие исходного кода в открытом доступе.

В репозитории выложен перекомпилированный бинарник для установки которого на игровую приставку «Пандора» нужно еще скопировать несколько файлов с ПК-версии игры.

Автор порта говорит, что он дизассемблировал игру в IDA, затем конвертировал код на C с помощью инструментов собственной разработки (их пришлось написать в процессе работы специально для этой задачи), потом скомпилировал в нормальную программу и связал с библиотекой winelib, которая работает с Win32 API из-под ARM-версии wine. Задача поначалу казалась простой, но в реальности проект занял почти полгода: вылезло очень много неожиданных проблем. Так или иначе, но автор довёл дело до конца.

Теоретически, он мог бы выложить код C в открытый доступ, чтобы кто-нибудь скомпилировал версию под Android. Сейчас StarCraft запускается на Android-планшетах и смартфонах с помощью Winulator. Видео запуска
Взято с хабра.

>>> Топик автора



Проверено: Shaman007 ()
Последнее исправление: Shaman007 (всего исправлений: 1)

Еслиб автор порта был более «зрелым»,то сделал бы так:

Дизасемблил оригинальный старкрафтовский бинарник,транслировал в СИ,пофиксил ошибки(кто не занимался и спрашивает какие могли вылезти ошибки-ошибки восновном с адресами,которые трудно и противно выискивать)собралбы под винду.

Собранную версию-опять дизасемблил,опять в СИ,пять фикс ошибок,и ВНЕЗАПНО получаем опенсурс запускалку старкрафта(только ресурссы нужны былиб),с ОРИГИНАЛЬНЫМ кодом.(после двойной трансляции-гарантировано будет никак не отслеживаемый,не связаный с оригиналом «уникальный» код)

Но автор недопер.

anonymous
()
Ответ на: комментарий от anonymous

Гуглить «Diablo: The Hell» мод. Охереете проходить первый уровень уже.

dv76 ★★★★
()

видео впечатляет:)

вообще поковырялся бы в этих исходниках на досуге.

сам старкрафт не смотря ни на что остается моей любимой стратегией. и в нее можно еще не раз поиграть. очень жаль что близард законсервировали такую хорошую игрушку:(

есть кстати stargus. там яко бы можно поиграть в первый старкрафт. но на самом деле совсем не играбельный. если в сетевую на некоторых картах еще можно поиграть, то кампаний там нету вовсе.

а касательно второго старика, то движок там не очень ушел далеко от первого. графика получше разве что. так что при наличии движка на линуксе для первого старика, думаю можно было бы и поиграть и на втором, вытащив из него всю необходимую графику.

vitalikp
()
Ответ на: комментарий от vitalikp

а касательно второго старика, то движок там не очень ушел далеко от первого. графика получше разве что. так что при наличии движка на линуксе для первого старика, думаю можно было бы и поиграть и на втором, вытащив из него всю необходимую графику.

На такое кроме как «LOL» даже и ответить нечего.

AnDoR ★★★★★
()
Ответ на: комментарий от AnDoR

На такое кроме как «LOL» даже и ответить нечего.

А что именно LOL? Я что-то не так говорю? Поправьте где не прав. Или гордыня не позволяет?

vitalikp
()

Ждём новости, где Blizzard угрожает судебным преследованием за дизассемблирование игры.

grem ★★★★★
()
Ответ на: комментарий от xusrol

Что такое «под ARM нативно» ? И с каких это пор wine означает эмуляцию, а не исполнение нативного кода?

Reset ★★★★★
()
Ответ на: комментарий от comp00

«диабло 2 это классика жанра»

Кто тебе сказал такую глупость? Когда она вышла, народ уже плевался. Да и прошел я ее на всех 3 уровнях один раз, и больше играть не хочется. А в первую регулярно переигрываю.

anonymous
()

Notaz насчет публикации своего C-исходника (да-да, у него один ".c"-файл, компилирующийся несколько минут и содержащий такой код):

Don't know about that too, it might increase chances to bring trouble, so would prefer not to. It's using computed goto heavily and won't compile on anything but gcc, those things need msvc, don't they?

EXL ★★★★★
()
Ответ на: комментарий от EXL

публикации своего C-исходника

Очевидно, что он не вручную писался, поэтому бесполезен для чтения человеком. Зачем он вообще кому-то нужен? Похоже на просьбу публиковать .o файлы, которые образуются при сборке проекта из нескольких единиц трансляции.

компилирующийся несколько минут

clang'ом заметно быстрее собирается

It's using computed goto heavily and won't compile on anything but gcc

Решается большим switch-case'ом. Компиляторы достаточно умные, чтобы преобразовывать такие switch-case либо в jump table, либо в дерево if'ов.

i-rinat ★★★★★
()
Ответ на: комментарий от EXL

и содержащий такой код

Спроси у него лучше, как он проверял overflow и carry флаги.

i-rinat ★★★★★
()

Так как не являюсь поклонницей старкрафта больше всего в этом видео меня порадовал холодильник.

totik
()
Ответ на: комментарий от i-rinat

Очевидно, что он не вручную писался, поэтому бесполезен для чтения человеком. Зачем он вообще кому-то нужен? Похоже на просьбу публиковать .o файлы, которые образуются при сборке проекта из нескольких единиц трансляции.

Ну так никто и не говорил, что он пихал все вручную в один файл сам. Я написал это к тому, что он в течении полугода работал над проектом, даже не разбивая его на составляющие, например, на работу с графикой и логику.

Зачем он вообще кому-то нужен?

Он бы был полезен тем, кто хочет портировать StarCraft на любое устройство с 32-х битным процессором, отличное от OpenPandora. Например, человек попросил опубликовать исходный код для портирования этой игры на WinRT. Notaz кинул в ответ то, что я опубликовал выше.

clang'ом заметно быстрее собирается

К чему это ты вообще? Имеется ввиду, что исходный файл такой толстый, что gcc жует его несколько минут. И да, он отметил, что у него в коде gcc'измы + проект использует собственный форк wine-arm с различными hack'ами. Да и на OpenPandora весь софт с помощью gcc компилируют.

Спроси у него лучше, как он проверял overflow и carry флаги.

Я с ним вообще не контактировал по этой теме, а лишь привел его пост на требование расшарить сорец. Зарегайся на boards.openpandora.org и спроси его сам. Он не строит из себя мегакрутого профессионала, как некоторые тут; вполне дружелюбно отвечает на все вопросы, особенно по технической части.

Кстати, он весьма недоволен тем, что его работа получила такую широчаюшую огласку. В треде на boards.openpandora.org какой-то хомячок, потеряв голову от возможности запуска StarCraft на своей пандорке, решил сделать «приятное» автору порта и запостил новость на reddit.com и geek.com с которых alizar быстро скопипастил всё на хабр, а когда вся IT-общественность заинтересовалась, то оно и на ЛОР приплыло. Естественно, все дошло и до Blizzard; как компания отреагирует на эту поделку Notaz'а (он никогда не скрывал IRL-данных) можно только догадываться.

А вообще у них куча интересных проектов:
это и порт Jedi Academy / Aliens vs Predator на ARM -> PowerVR Open GL|ES, и подобные (через статическую рекомпиляцию) порты Warcraft: Orc & Humans, X-COM: UFO Defense, X-COM: Terror from the Deep и Albion для ARM. Жаль инсайдеров отсюда там совсем нету, пандорка, как ни крути, частичка мира GNU/Linux.

EXL ★★★★★
()

Задача поначалу казалась простой

Ни хрена себе простой O_O

vitalif ★★★★★
()
Ответ на: комментарий от vitalikp

notaz портировал brood war последней версии. Если под «второй старик» подразумевался Starcraft 2, а не BroodWar, то это действительно LOL.

crowbar
()
Ответ на: комментарий от EXL

он в течении полугода работал над проектом, даже не разбивая его на составляющие, например, на работу с графикой и логику.

Он писал программу, которая берёт как вход asm файл и выплёвывает код на Си. Сомневаюсь, что вообще возможно разбивать на составляющие.

Он бы был полезен тем

Так инструменты же открыты, надо просто узнать, как ими пользоваться, и можно самим сгенерировать :)

К чему это ты вообще? Имеется ввиду, что исходный файл такой толстый, что gcc жует его несколько минут.

К тому, что я сам занимался подобным, и ждать по несколько минут напрягало. Во время разработки время компиляции имеет значение, и мне помогало использование clang'а.

Зарегайся на boards.openpandora.org и спроси его сам.

Мне лениво в исходник смотреть, но регистрироваться там и спрашивать ещё более лениво.

А вообще у них куча интересных проектов

По-моему, это первый, у которого исходники инструментов открыли. Полгода назад я искал готовый инструмент; с openpandora помню информацию о портировании xcom 1,2 и albion, но инструменты не были доступны. Какие-то я находил, но они либо не собирались, либо просто падали на каждый чих. Да и дописывать чужой код трудно.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от EXL

спроси его сам

Всё, нашёл. Он сделал в лоб, используя 64-битную арифметику.

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

Кто тебе сказал такую глупость?

Это говорю я, убивавший сотни раз диабло в актуале, начиная с самой ванильной diablo I.

Когда она вышла, народ уже плевался.

Вот не надо только, плевались истерички и школьники, знающие люди понимали что diablo II это платформа для diablo II LOD, которая и является винрарной классикой жанра. Заметь, говорю в настоящем времени. С DiabloIII с сейчас точно такая же ситуация, только во тпотенциал у нее куда-куда больше, чем 10 лет назад у diabloII

Да и прошел я ее на всех 3 уровнях один раз

В Diablo II мной лично было наигранно овер 5к ч., и это только на battle.net. И ты со своим «прогрессом» в виде единоразового прохождения на хэлле будешь что-то рассказывать?

А в первую регулярно переигрываю.

Diablo 2 это атмосфера, экшен, драйв, сюжет. Diablo тоже была хороша в свое время, но именно что хороша, а не эпична. там не было той атмосферы, там не было того драйва. Собственно, цель ее одна - погрузить в мир Diablo, с чем она успешно справляется, но 2я превосходит ее во много-много раз. Хотя, что я тебе объясяняю, раз ты прошел лишь по разу и все забросил, ты небось и про LoD не знаешь....

comp00 ★★★★
()
Ответ на: комментарий от anonymous

Более трушно будет сделать свободную реализацию с старкрафтскими ресурсами.

Уже было кстати, именно так делали. Только ресурсы запретили использовать близзарды. Ну они оставили движок. Вставить ресурсы в него - не проблема.

Поскольку движок уже был написан давным-давно, я вообще не понимаю этого экзерциониста, хоть бы упражнялся в чем-нибудь полезном. Извращения с экспортом кучи говнокода... жесть.

sanaris
()
Последнее исправление: sanaris (всего исправлений: 1)
Ответ на: комментарий от crowbar

notaz портировал brood war последней версии.

не спорю.

Если под «второй старик» подразумевался Starcraft 2, а не BroodWar, то это действительно LOL.

А можно поподробнее?:) А то я не совсем понимаю, что смешного.

vitalikp
()

И так будет с каждым!11!

dikiy ★★☆☆☆
()

Задача поначалу казалась простой

Убило

pozitiffcat ★★★
()
Ответ на: комментарий от EXL

Я на 98% уверен, что в лицензиях Blizzard есть пункт, запрещающий обратную разработку их продуктов.

Чтобы быть связанным этим пунктом лицензии, нужно для начала принять условия лицензии.

unC0Rr ★★★★★
()
Ответ на: комментарий от EXL

" Я на 98% уверен, что в лицензиях Blizzard есть пункт, запрещающий обратную разработку их продуктов. "

Также там есть пункт про то, что местные законы могут отменять часть положений, которые не соответствуют им. А в ГК дизасемблирование разрешено в личных целях для обеспечения работоспособности программы. Вот только результат дизасемблирования нельзя распространять, только методики процесса.

anonymous
()
Ответ на: комментарий от comp00

С DiabloIII с сейчас точно такая же ситуация, только во тпотенциал у нее куда-куда больше, чем 10 лет назад у diabloII

Согласен. Подсел на диаблу3 в 2012 году, до сих пор не отпускает. Сейчас весь баланс поменяли и аддон на подходе — считай полностью новая игра. Теперь опять все перепроходить :)

Reset ★★★★★
()
Ответ на: комментарий от Reset

во тпотенциал у нее куда-куда больше


Сейчас весь баланс поменяли

Значительно изменился только дроп шмота и пересчет стат, остальное мусор. Новые уровни сложности? -хрень, всего лишь лишний месяц на набор шмота - потом т6 пробегается. Будет как в 2012 - побегают месяцок другой и потом забьют. В д3 не хватает контента игрового и ивентов. Из развлечений только уберы и пони. Проходить акты в миллиардный раз не представляется интересным.

ZUKMAN
() автор топика
Ответ на: комментарий от Reset

Сейчас весь баланс поменяли и аддон на подходе — считай полностью новая игра.

Кстати, мне показалось, что подрее сделали. Новая система лута нравится, всякой ненужности меньше падает.

cipher ★★★★★
()
Ответ на: комментарий от ZUKMAN

побегают месяцок другой и потом забьют.

В диаблу3 до сих пор рубятся и рубиться будут. Недостаток в игроках для пати не ощущается.

Проходить акты в миллиардный раз не представляется интересным.

Ты не понял суть диаблы. Суть не в актах, а в выбивании шмота. Сюжет, евенты и прочая херь вторичны.

Reset ★★★★★
()
Последнее исправление: Reset (всего исправлений: 1)
Ответ на: комментарий от fMad

«зачем это если есть WarZOne 2010?»

Зачем стратегии, когда скоро можно будет повоевать в Третьей Мировой?

anonymous
()
Ответ на: комментарий от ZUKMAN

Новый контент предоставляет: бесконечный кач и апгрейд чара, интересный и не казуальный крафт, и фарм, фарм , фарм. Фарм, которого никогда не было в DIII. Новый класс, новые спеллы, новый шмот, новые локации. Игра обретает смысл. Но тебе этого не понять, потому скажу тебе то же, что и анонимусу выше: иди продолжать раковать на миде.

Из развлечений только уберы и пони.

Все с тобой ясно...

comp00 ★★★★
()
Ответ на: комментарий от cipher

Да, лут стал качественнее - это факт. Не нравится лишь что обрезали всякую возможность взаимообмена. Аук несомненно не нужен, но и привязывать шмот к учетке тоже нехорошо. Сейчас, по сути голда нужна только для ремонта и крафта.

comp00 ★★★★
()
Ответ на: комментарий от Reset

Не знаю зачем люди фармят обычку для белого и серого шмота, я за фарм т3 нафармил уже несколько паков белых итемов. Падают достаточно часто.

comp00 ★★★★
()
Ответ на: комментарий от comp00

бесконечный кач и апгрейд чара

- инетереса не увидел. Это же так интересно циферку изменять каждый раз вместе с новым уровнем, которая мало что дает.

интересный и не казуальный крафт

- 99.9% того, что ты скрафтишь будет унылым говном.

фарм, фарм , фарм. Фарм, которого никогда не было в DIII.

- невероятно, фарм в D3 - NO WAY.

Новый класс

- всего один класс, и тот, надопал какой-то.

новые спеллы

- ну вот честно, там половина абилок от барба.

Игра обретает смысл.

Но тебе этого не понять

Все с тобой понятно, жри дальше любое говно, что тебе продают и играй в д3 и вовы всякие.

ZUKMAN
() автор топика
Ответ на: комментарий от xusrol

задизассемблить и декомпилировать, не значит переписать игру, освободившись от вызовов функций из Win32 API

sotlef
()
Ответ на: комментарий от ZUKMAN

которая мало что дает.

Лоулвл детектед. Уже при 100+ ощущается внушительный прирост статов от парагона.

- 99.9% того, что ты скрафтишь будет унылым говном.

4.2. Прежде чем такое заявлять, хоть попробовыл ли что ли. Я в первые дни контента весь свой сет заменил на скрафченные желтые шмотки.

невероятно, фарм в D3 - NO WAY.

Разупорись уже.

- ну вот честно, там половина абилок от барба.

щито?
В общем, понятно все с тобой. Видно, что ты знающий и понимающий человек, разбирающийся в сабже. Не забудь поныть саппорту и в general о том, какие близзы гады, и что все деньги, сэкономленные на завтраках в школьной столовой ты потратил зря. Такие посты очень доставляют.

жри дальше любое говно, что тебе продают и играй в д3 и вовы всякие.

Да, а ты, Ылита, продолжай рачить на миде, кемперить кишку на mansion и танки качать^Wдонатить в WoT.

comp00 ★★★★
()
Ответ на: комментарий от ZUKMAN

да ты еще и барыга? Понятно откуда такой батхерт.

comp00 ★★★★
()
Ответ на: комментарий от Reset

а то, выбить не может, на нормальный шмот денег не хватает, вот и смотрит на желтый мусор в пределах 100кк, и ничего ему не остается, кроме как поныть о том, что DIII унылое гавно.

comp00 ★★★★
()
Ответ на: комментарий от Reset

Там движки совсем разные.

Так никто не спорит. Я говорил, что у второго он далеко вперед не ушел.

Если такой движок был на линуксе, то он хорошо подошел для обеих версий. Или в это трудно поверить?

vitalikp
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.