LINUX.ORG.RU
ФорумMobile

Source linux-arm

 , ,


0

1

Вышедшая Half-life 2 на android (для Tegra 4) довольно хорошо враппится: внутри врапперы, эмулирующие более glibc-подобное окружение поверх ведра. Для графики и управления используется SDL2. Т.к valve часто делают проверку на нулевой указатель, думаю, для андройдоспецифичных функций можно делать реализации в виде return 0. Если заставить графику работать на mali, думаю, даже на кубиках можно будет играть (потребуется упрощение детализации текстур).

★★★★★

Ответ на: комментарий от mittorn

Согласен, в неё хоть играть можно было бы.

Нытик.

AnDoR ★★★★★ ()

можно подробнее о том, откуда ты узнал эти сведения?

меня тоже заинтересовали порты на ведроид, однако внутри аппарата стоит mali-t628mp6, коий достаточно мощный

reprimand ★★★★★ ()

и да, почему это я должен второй раз платить за игру, которая уже есть у меня в стиме? что-ли Габену написать...

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

Так какой стим под арм, только мессенджер с магазином.
Но я думаю габбен помимо кинца и мобилки потом захватит.

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

так мне там стим и не нужен
да и вообще, это не моя проблема - заниматься техническими вопросами защиты интеллектуальной собственности

я легально купил игру. Почему я должен еще раз платить - неясно.

Габен, однако, не всё предусмотрел...

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

да и вообще, это не моя проблема - заниматься техническими вопросами защиты интеллектуальной собственности

Вот и не занимайся.

я легально купил игру. Почему я должен еще раз платить - неясно.

Радуйся что так можно.

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

Вот и не занимайся.

спасибо что разрешил. А когда можно будет начать?

Радуйся что так можно.

ну да, вы же там привыкли у себя к наплевательскому отношению и нулевой защите прав. А мне то что?)

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

Ты не занимаешься этим с тех пор как установил DеRьMo и принял его лицензионное соглашение.
Расслабься и получай удовольствие.

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

reprimand> я легально купил игру. Почему я должен еще раз платить - неясно.

Ну нифига себе жлобы пошли наглые.

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

Ок. Если ты купил игру, то в чём проблема тебе самостоятельно запилить порт?

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

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

mittorn ★★★★★ ()

Посмотрел libsteam_api.so, думаю, код там напоминает примерно это: http://pastebin.com/4WFMbXEc, на каждый символ 5-10 инструкций.

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

Half-life: Source есть, так что думаю портирование проблемой не будет

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

Каким образом? Разве есть транслятор, способный генерировать приемлемый по производительности код? И opengl v.s GLES? А в случае с портированной версией можно и opengl сделать (т.к код libtogl доступен). Осталось заставить эти либы загружаться. У меня ld-linux сегфолтится пока что.

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

Каким образом? Разве есть транслятор, способный генерировать приемлемый по производительности код?

Его можно написать, причём не придётся начинать с нуля. Недавно была тема про портирование StarCraft на ARM. Автор обнародовал созданные инструменты.

И opengl vs GLES?

А что, на целевой платформе нет OpenGL? Да и тут можно придумать что-нибудь. Значительная часть совпадает, различия можно эмулировать.

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

На словах всё просто, а на деле нет. Транслятор сколько ни искал - не нашёл. И представьте себе скорость работы неоптимизированного кода. Врапер opengl в gles glshim даже кваку неправильно показывает, glesport и её не может. Если найду транслятор, попробую hl1 транслировать.

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

На словах всё просто, а на деле нет.

Я делал транслятор ARM->MIPS для Opera Mini под Android. Целевой телефон был довольно тормозной, но получившийся порт лагал не больше, чем лагает Opera Mini на новом телефоне, который значительно быстрее. Где-то за два месяца написал.

Транслятор сколько ни искал - не нашёл.

Нет — напиши. Даже путь в тысячу ли начинается с первого шага.

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

Решил пока заняться arm-версией, всё равно планирую на них перебираться. Есть некоторый прогресс: библиотеки загрузились и функции из них работают.
Теперь оно валится при попытке запустить поток на определённом процессоре (как известно, pthread убивает поток, если не смог установить ему параметры), а у меня только 1 (sun4i) или 2 (sun7i) ядра. Хаком определяется, что их 4, вот и делает tkill после облома sched_setaffinity. Предыдущий syscall - clone, значит ошибка при создании потока.
gdb после tkill валится.
Не думал, что количество процессоров может вызвать проблемы.

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

Уверены? Вот, например, в VBox (давно тестировал):tomsk.fm/watch/79260
Шейдеры игнорируются. Думаю, если отключить шейдеры и использовать lowres-текстуры, и на mali оно запустится. Нужно просто сделать реализации некоторых gles-функций, говорящую, что всё хорошо, но ничего не делающюю. Вопрос стоит только в сложности такой реализации (там фичи gles3) и играбельности (дрова mali никто не оптимизировал, а lima забросили). И ещё в source куча скрытых настроек графики, можно всякие тени поотключать.
Ну и конечно же нужен нормальный процессор (у меня квака на 100% нагружает его), поддерживающий набор инструкций cortex-a7 (мне пришлось эмулировать 3 инструкции на cortex-a8, и это ещё скорее всего не весь проблемный набор) и желательно четырёхъядерный (неправильно определяется количество ядер и используется sched_setafinity через pthread, что приводит к завершению потоков.

mittorn ★★★★★ ()

Сделал пропуск EINVAL в setaffinity в ядре, теперь добрался до графики.
Используется Regal (https://github.com/p3/regal) для трансляции opengl на тегру, правда, возможно, модифицированный. Странно, что оно не запускается на произвольном видеочипе - ведь Regal должен тестировать и эмулировать недостающие opengl функции. Возможно, при сборке
В принципе, исходники libtogl тоже доступны. Можно пересобрать это всё и вынести через врапперы. Жалко, что оно не GPL (иначе у меня были бы гарантии, что оно взлетит)
Пока что сегфолтится в SDL_CreateWindow, пересобираю c отладкой.

mittorn ★★★★★ ()


Проблема была с линковкой сразу с 2мя версиями SDL. Исправил, теперь это:
PROBLEM: You appear to have OpenGL 0.0.0, but we need at least 2.0.0!
Похоже, Regal не работает.

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

Причина ясна: Regal загружается через SDL и через него же берёт информпцию о версии и ищет функции. Прийдётся либо вытаскивать Regal и пересобирать SDL с opengl/Regal, либо писать врапперы внутри SDL.

mittorn ★★★★★ ()

Подружил наконец SDL с Regal, написал врапперы для opengl. Теперь оно проходит проверку требований графии и вылетает на этом:
vsnprintf 'Setup file '%s' doesn't exist in subdirectory '%s'.
Check your -game parameter or VCONFIG setting.'
vsnprintf '%s
Что вполне логично т.к файлов игры ещё нет на месте.

mittorn ★★★★★ ()

Вроде указал путь к файлам. Теперь оно валится по SIGTRAP :

#0  0x41dce0b0 in raise () from /lib/libpthread.so.0
No symbol table info available.
#1  0x437150f4 in ?? () from /mnt/nand/Half-Life+2+v23+apkmania.com/lib/armeabi-v7a/lib2/libtogl.so
No symbol table info available.
#2  0x4372b774 in IDirect3DDevice9::Create(IDirect3DDevice9Params*) ()
   from /mnt/nand/Half-Life+2+v23+apkmania.com/lib/armeabi-v7a/lib2/libtogl.so
No symbol table info available.
#3  0x4372b9bc in IDirect3D9::CreateDevice(unsigned int, _D3DDEVTYPE, void*, unsigned int, _D3DPRESENT_PARAMETERS_*, IDirect3DDevice9**) () from /mnt/nand/Half-Life+2+v23+apkmania.com/lib/armeabi-v7a/lib2/libtogl.so
No symbol table info available.

Конечно код libtogl доступен, но доступный вариант заточен под glx и имеет ассемблерные вставки x86. Я не уверен, что удастся его перекомпилировать.

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

Добрался до запуска server/client.
Теперь получил краш при инициализации потока.

 Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xbeffd6d0 (LWP 24873)]
0x41e064fc in __ctype_init () from /lib/libc.so.6
(gdb) bt full
#0  0x41e064fc in __ctype_init () from /lib/libc.so.6
No symbol table info available.
#1  0x41dc5c90 in start_thread () from /lib/libpthread.so.0
Иногда перед ним происходит неудачная попытка инициализации мутекса по плохому указателю (всякие 0x68 и 0x74)
Причина не понятна.
Ещё странность: пересобранный с use-флагом debug libc какого-то shell'a не имеет отладочных символов. С -g в CFLAGS вообще не собирается.

mittorn ★★★★★ ()
Последнее исправление: mittorn (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.