Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • AlexKud AlexKud 26 постов
  • StariiZoldatt StariiZoldatt 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Портирование

36 постов сначала свежее
16
user8935468
user8935468
2 месяца назад
pikabu GAMES

Забудьте об эмуляторах? Разрабатывается инструмент для нативных ПК-портов игр с PlayStation 2!⁠⁠

Забудьте об эмуляторах? Разрабатывается инструмент для нативных ПК-портов игр с PlayStation 2! Новости игрового мира, Ретро-игры, Компьютерные игры, Playstation 2, Эмуляция, Порт, Портирование

Мечтали поиграть в любимые хиты с PS2 напрямую на ПК, да еще и с современными удобствами (никаких тормозов эмуляции, улучшенная графика, поддержка высоких разрешений)?

Прямо сейчас на GitHub зарождается новый амбициозный проект PSRetrox, цель которого – существенно упростить процесс реверс-инжиниринга и пересборки (рекомпиляции) игр с легендарной PlayStation 2.

Проект был анонсирован еще четыре месяца назад его создателем – аргентинским студентом-программистом Хоакином Лукасом Ньето (njoacodev). Однако широкое внимание он привлек совсем недавно, когда на него наткнулся бразильский разработчик Винисиус Медейрос (известный по моду Duke Nukem Forever Enhanced).

PSRetrox идет по стопам похожих проектов для других консолей, таких как N64Recomp (для Nintendo 64) и XenonRecomp (для Xbox 360). Сам проект описывается как "C++ приложение, созданное для реверс-инжиниринга игр PlayStation 2".

Как это будет работать?
Согласно описанию на GitHub, главная цель PSRetrox – "извлекать игровые файлы и обрабатывать их так, чтобы создавать нативные ПК-порты игр с PS2".

Инструментарий будет включать встроенные средства для:
Декомпиляции и декодирования игровых ресурсов (включая 3D-модели, аудиофайлы и т.д.).
Портирования пересобранного игрового кода (.C файлы) с PS2 на архитектуру ПК.

Текущий статус:
По словам разработчика, проект готов всего на 8%. Да, это самое начало пути, но сама идея невероятно захватывающая! Возможность запускать классику PS2 на ПК без эмуляторов, с полной производительностью и потенциальными улучшениями – это настоящая мечта для многих геймеров.

Мы определенно будем пристально следить за развитием PSRetrox! А пока – держим кулачки за Хоакина!

Ссылочка на сам проект.

А какие игры с PlayStation 2 вы бы больше всего хотели увидеть портированными на ПК таким способом? Делитесь в комментариях!

Показать полностью
Новости игрового мира Ретро-игры Компьютерные игры Playstation 2 Эмуляция Порт Портирование
48
1
Dmitry.Ishimov
Dmitry.Ishimov
4 месяца назад

Портирование Linux на Mac⁠⁠

Портирование Linux на Mac Linux, Mac, Операционная система, Портирование

Всем привет!

Неблагодарное дело выбрали ребята. Переносить другую ОС на Mac(

Пользователям которые привыкли к iOS и MacOS....

И еще вопрос, зачем портировать Linux на Mac?

Linux Mac Операционная система Портирование
13
10
ChicotTheFirst
ChicotTheFirst
4 месяца назад
Уголок ретрогеймера

Программист сыграл в классическую Doom внутри поисковой строки Google⁠⁠

Даже Палачу Рока иногда нужно что-то найти, будь то патроны или оружие. Теперь во время процесса герой может не отвлекаться от убийства демонов, потому что классическую Doom портировали в поисковик Google.

Программист сыграл в классическую Doom внутри поисковой строки Google Моды, Doom, Портирование, Видео, YouTube, YouTube (ссылка)

Портал PCGamesN обратил внимание, что на днях бразильский программист Педро Уэббер (Pedro Webber) показал, как сыграл в легендарный шутер от id Software внутри поисковой строки Google.

Изображение складывается из многочисленных символов ASCII. Для более или менее комфортной игры Уэбберу пришлось уменьшить масштаб страницы — иначе шутер просто не умещался внутри экрана.

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

Стоит отметить, что в данном случае Doom не работает непосредственно внутри поисковой строки Google, а лишь проецируется в неё, однако эксперимент всё равно впечатлил зрителей.

В прошлом Уэббер также запускал фэнтезийную ролевую игру Baldur’s Gate 3 внутри «Блокнота», а ролевой боевик Elden Ring (и ту же Doom до неё) реализовал в редакторе исходного кода Visual Studio Code.

Что касается классической Doom, то более чем за 30 лет с релиза энтузиасты успели портировать легендарный шутер в PDF-файл и документ Word, на роботизированные газонокосилки, умный будильник Alarmo от Nintendo и многие другие устройства.

Источники:

  • PCGamesN

  • YouTube

  • 3D News

Показать полностью 1
Моды Doom Портирование Видео YouTube YouTube (ссылка)
2
1
JakiroSaifer
JakiroSaifer
5 месяцев назад

На работе у друга поставили автодок⁠⁠

Я другу предложил ,новый челедж запустить Doom на автодоке

На работе у друга поставили автодок Doom, Игры, Портирование
Показать полностью 1
Doom Игры Портирование
2
224
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
8 месяцев назад

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал⁠⁠

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

Дисклеймер: употребляемые слова вроде «портируем», «хакаем» и «реверсим» совсем не значат, что статья предназначена исключительно для гиков! Я стараюсь писать так, чтобы было понятно и интересно абсолютно всем!

Наверняка многие мои читатели так или иначе слышали новости о том, что известные игры были портированы на самые разные платформы. В какой-то момент к такой же идее пришёл и я, однако мне хотелось портировать игры и эмуляторы на довольно диковинные промышленные девайсы, которые работают на платформе Windows CE. Как я портировал Wolfenstein и эмулятор NES на бравого, но списанного в утиль трудягу склада и зачем? Читайте в сегодняшней подробнейшей статье!

❯ Как, почему и зачем?

Мои давние читатели знают, что я прожженный энтузиаст, когда дело доходит до оживления самых разных ретро-девайсов. Помимо стандартных x86-компьютеров, многие из которых до сих пор в целом могут выполнять полезные задачи, я очень сильно интересуюсь ЭВМ и на довольно необычных архитектурах: ранние ARM-чипсеты, MIPS и, конечно же, SH3.

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

Моя цель заключается в том, чтобы как можно меньше девайсов попадали в переработку чермета, если им можно найти интересное применение и в наше время. Ведь многие устройста, которые по началу кажутся бесполезными на манер промышленных ТСД или, например, кассовых аппаратов, на самом деле таковыми не являются и им можно находить самое разное крутейшее применение. Однако сценарий накатывания Putty и превращения компактной машинки в портативный терминал, или превращения девайса в часы с погодой не такой интересный, как превращение всего, у чего есть процессоры в игровые консоли!

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

Потребительское общество уже забыло, что первые TV-боксы на Android'е буквально за час превращаются в игровые консоли путем накатывания эмуляторов или RetroArch, на смартфонах можно хостить сайты также легко, как и на одноплатном компьютере, а на PlayStation... можно накатить Linux. Но не всегда всё даётся так легко: иногда платформа настолько узкоспециализирована, что под неё нет ни эмуляторов, ни портов каких-то игр и поэтому нужно брать волю в свой кулак, о чём я вам и расскажу в сегодняшнем материале!

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

Прямо сейчас, мой дорогой читатель, рядом со мной лежит ничто иное, как списанный терминал для сбора данных M3 Green. По началу кажется, что ТСД — очень узконаправленное устройство и ему место на складе/в «магните», однако, если погрузиться в детали, выясняется что это очень нехилый портативный компьютер:

  • Процессор: ARMv5 Intel PXA272 на частоте 624МГц + Wireless MMX. Однако у процессора есть и слабое место: нет аппаратного деления (особенность ISA ARM) и нет FPU (сопроцессора для чисел с плавающей точкой).

  • ОЗУ: 128 мегабайт SDRAM-памяти. Кажется немного? Не забывайте, что Windows CE потребляет всего около 8-16 мегабайт памяти для своих нужд. По итогу у нас остаётся целых 100 мегабайт для себя. К примеру, современные версии Windows требуют ~1Гб ОЗУ как минимум без учётов кэша для I/O-операций!

  • Дисплей: встроенная 3-дюймовая матрица с разрешением 240x320. Кажется немного... но для КПК норма! Есть, конечно, и резистивный тачскрин.

  • Коммуникации: одна из самых сильных сторон такого девайса — наличие аппаратного USB-хоста (в док-станции), возможности синхронизации с ПК и конечно же Wi-Fi!

  • Клавиатура: ну, тут все очевидно :) Даже F-кнопки есть!

Короче, исходные данные простые офигенные! Учитывая, что девайс бронированный, его можно считать достаточно портативным устройством, который можно использовать и в несколько более экстремальных условиях.

❯ Эмулятор NES

Начинаем с эмулятора всем известной «Денди». Сейчас есть множество самых разных эмуляторов с открытым исходным кодом, бери любой и портируй. Из тех, что портируются проще всего, можно выделить InfoNES, который уже портирован на Windows CE, однако на многих современных машинках работает нестабильно и его нужно адаптировать под конкретный девайс. Затем я чуть покумекал и вспомнил, что видел в сэмплах к SDK порт довольно шустрого эмулятора NES на один из китайских телефонов, о которых я рассказывал в одной из своих статей. Единственный нюанс — в нём нет эмуляции звука, зато и работает шустро. Корни эмулятора мне выяснить не удалось, нет ни копирайтов, ничего. Не исключено, что этот эмулятор лёг в основу многих ранних китайских игровых консолей.

Изначально эмулятор был разработан под платформу MRP, что только упрощало задачу. По сути, все приложения для китайских телефонов — это 4 функции: инициализация, отрисовка, обработка событий и выход. Конечно есть ещё обработчики событий, например по таймеру, но в целом концепция предельно ясна. Эмулятор был прямо-таки «захардкожен» на конкретные пути к файлу рома (образу картриджа):

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

Всё усложнялось тем, что большинство переменных были глобальные и ни о каком едином стейте для эмулятора и речи не было, поэтому код нужно было рефакторить. Но сначала нам хоть-бы что-то запустить! Для этого минимально переписываем логику загрузки ROM'ов на stdio с учётом того, что в WinCE корень файловой системы начинается с \ (не '/', как в Unix):

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

Теперь эмулятор загружает ром, однако у нас всё ещё нет ни вывода на экран, ни обработки ввода. Состояние кнопок геймпада представлено глобальной переменной KEY, где в оригинале большой свич просто сопоставляет код клавиши телефона к коду аппаратной кнопки геймпада NES:

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

Этот участок мы переписывем таким образом, чтобы сопоставить каждой аппаратной кнопке устройства виртуальный код клавиши в «винде» и затем иметь возможность переназначить их на любые другие. Для WinCE навигаторов, где кнопок почти нет, актуально реализовать и ввод с тачскрина (в репозитории его на данный момент нет):

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

Теперь у нас есть обработка ввода... но всё ещё ничего нет на экране! И вот здесь начинается самое интересное. Дело в том, что как такового быстрого графического API в Windows CE нет. В Windows Mobile был GX, предназначенный для дисплеев 240x320, который предоставлял прямой доступ к фреймбуферу устройства, а также специальный вызов ExtScape, который позволял сделать тоже самое. Но ни тот, ни другой способ не поддерживаются на современных WinCE устройствах. Microsoft предлагала использовать DirectDraw, знакомый читателям по играм из 90-х, однако он не был реализован почти нигде, кроме КПК. Поэтому остаётся лишь 2D-подсистема GDI, которой рисуется окна и почти вся графика и в обычной Windows — медленный, тормозной способ который не позволяет выжать всю производительность с нашего девайса.

Начинаем с создания окна. Здесь всё стандартно:

hwnd = CreateWindowW(L"static", L"Emulator", WS_VISIBLE | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, 0, 0);
dc = GetDC(hwnd);

SHFullScreen(hwnd, SHFS_HIDETASKBAR | SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON);

В эмуляторе, содержимое дисплея представлено переменной LCDBUF, которая содержит в себе RGB565-картинку разрешением 240x240 (чуточку усеченный). Поскольку устройства на Windows CE обычно тоже используют 16-битный цвет, то достаточно было бы просто скопировать их прямо в фреймбуфер дисплея по сканлайнам и получить изображение но... из-за GDI, система принимает только формат RGB5551, который затем снова конвертируется в RGB565 из-за чего получаем лаги на слабых устройствах.

Сначала заполняем структуру BITMAPINFO, описывающую формат изображения «выхлопа» эмулятора:

BITMAPINFO info;
memset(&info, 0, sizeof(info));
info.bmiHeader.biBitCount = 16;
info.bmiHeader.biPlanes = 1;
info.bmiHeader.biHeight = -240;
info.bmiHeader.biWidth = 240;
info.bmiHeader.biCompression = BI_RGB;
info.bmiHeader.biSize = sizeof(info);

Затем в главном цикле, пока открыто окно, вызываем обработку ввода, следующего цикла NES и наконец, выводим всё на дисплей с помощью SetDIBitsToDevice:

while(IsWindow(hwnd))
{
ProcessInput();

NEStimer(2);
SetDIBitsToDevice(dc, 0, 0, info.bmiHeader.biWidth, - info.bmiHeader.biHeight, 0, 0, 0, -info.bmiHeader.biHeight, LCDBUF, &info, DIB_RGB_COLORS);
}

Результат: эмулятор вполне неплохо работает на шустрых устройствах с процессорами 400+ МГц, причем как на 240x320, так и на 480x800. Осталось лишь добавить «мордашку»: окно выбора рома, диалог ремаппинга кнопок, читов (редактирование RAM-консоли) и управления игровым временем. Также очень желательно реализовать адекватный таймер с ограничением в 60 FPS, но... ни один из опробываемых мной девайсов не смог сэмулировать NES в FullSpeed без пропуска кадров. Но как сам факт, Proof of Concept, эмулятор NES у нас уже есть!

В случае с другими эмуляторами, обычно приходится отвязывать ещё и Platform-dependent часть с «мордой», интерфейсом, конфигами и иными плюшками. Для портирования выгодно выделяются те эмуляторы, где ядро чётко разграничено с «мордой» и где это самое ядро можно вытащить без каких-либо проблем!

❯ Wolfenstein 3D

Дальше я решил портировать небезызвестную игру Wolfenstein 3D. Среди «больших» игр с открытым исходным кодом, она относительно нетребовательная (необходимо ~640Кб ОЗУ, то есть теоретически её можно портировать и на жирные микроконтроллеры). В данном случае, брать оригинальный код нет необходимости (в нём есть вставки на x86-ассемблере и совершенно ненужные в нашем случае драйвера для звуковых карт, обработчики аппаратного таймера и прочие особенности DOS-игр), можно начать с современного порта WolfSDL, который использует в качестве библиотеки для вывода графики и обработки ввода библиотеку SDL 1.2.

SDL сама по себе отлично абстрагирует особенности платформы и не особо сложно портируется, а под WinCE порт уже был — причем учитывающий особенности платформы с графикой и кнопками. Собирается SDL легко, с этим проблем не возникло — идём в папку VisualCE, и собираем в VS2005 библиотеку.

Далее начинается самое интересное — портирование самой игры! Сначала игра отказывалась собиратся из-за модуля звука, ведь порта SDL_mixer (плагин к SDL, выполняющий роль софтварного микшера звука) под Windows CE нет. Роль микшера может выполнять и сама Windows с помощью модуля waveout, однако на время портированию звук можно и «выкинуть» :) Для этого просто убираем все вызовы функций SDL_mixer, ни к каким структурам и возвращаемым значениям библиотеки, звуковая подсистема игры не привязана.

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

Далее игра отказывалась собираться из-за того, что Wolf4SDL использовал POSIX-вызовы типа stat и open/read/write/close. Сами вызовы легко оборачиваются в stdio-аналоги, а stat использовался лишь для проверки существования файла (используется в механизме обнаружения эпизодов игры):

int read(FILE* f, void* buf, int len)
{
return fread(buf, len, 1, f);
}

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

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

После фикса ещё некоторых мелких ошибок, устранения особенностей путей в WinCE (нет понятия «текущая директория»), игра наконец-то запустилась на эмуляторе!

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

А с правкой кнопок и на самом ТСД!

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

❯ Заключение

Вот такой интересный материал у нас сегодня с вами получился! Исходный код можно найти на моём гитхабе. Также проекты можно портировать и на GPS-навигаторы на Windows CE, путём добавления виртуальной клавиатуры (однако мультитача нет и не будет. Решением может стать подключение Bluetooth HID-клавиатуы), привнеся новую жизнь ещё и им!

Друзья! Если вас заинтересовал девайс из статьи, то купить его можно здесь за 500 рублей, с полным комплектом (коробочка, диск, блок питания, док-станция и сам девайс, иногда попадаются ревизии с GSM). Это списанные девайсы, но полностью рабочие, даже аккумуляторы отлично держат заряд. Просто у человека их больше 50 штук и он захотел проспонсировать розыгрыш, мало ли кто-то из читателей тоже заинтересуется таким интересным девайсом, как я. Кроме того, два таких красавца мы с вами разыграем в ближайшее время.

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

Также у меня есть свой личный Telegram-канал "Клуб фанатов балдежа", куда я публикую посты о программировании, реверс-инжиниринге и просто показываю бэкстейдж статей вперемешку с небольшим щитпостом. Если интересно - подписывайтесь, там же будут опубликованы и условия конкурса. Конкурс начнём проводить как только выйдет видео-версия данной статьи. Ну а пока можете посмотреть мой недавний видос об оживлении ноутбука на 386'ом:

Кстати, если у кого-то из читателей есть ненужные устройства (в том числе с косяками) или дешевые китайские подделки на айфоны/айпады/макбуки и другие брендовые девайсы (любые) будучи нерабочими, тормозящими, или окирпиченными и вам не хотелось бы выкидывать их на свалку, а наоборот, отдать их в хорошие руки и увидеть про них статью — пишите мне в Telegram или в комментах! Готов в том числе и купить их. Особенно ищу донора дисплея на китайскую реплику iPhone 11 Pro Max: мой ударник, контроллер дисплея калится и изображения нет :(

Как я Wolfenstein и эмулятор Денди на промышленный терминал портировал Опрос, Покупка, Гаджеты, Android, Тсд, Программирование, Портирование, Wolfenstein, NES, Dendy, Ретро, Компьютерное железо, Видео, YouTube, Длиннопост

Пример девайсов

Если есть желание задонатить денюжкой, можно сделать это ниже :)

Балдеж?
Всего голосов:
Показать полностью 13 2 1
[моё] Опрос Покупка Гаджеты Android Тсд Программирование Портирование Wolfenstein NES Dendy Ретро Компьютерное железо Видео YouTube Длиннопост
39
N0din
10 месяцев назад

Как портирование уродует игры⁠⁠

Многие из нас (вас) знают, что некоторые компьютерные/консольные игры выглядели не только по-другому, но даже лучше на одних игровых платформах, и хуже на других. Многие игры на разных платформах отличались не только графикой , но и геймплеем, дизайном уровней, сюжетом настолько, что были абсолютно разными. Пример тому Harry Potter and the Sorcerer's stone на PS1, PS2 и PC. У них был общий сюжет привязанный к сценарию одноименного фильма, но уровни и геймплей отличался в зависимости от того для какой платформы выпускалась игра. Причиной всему была "дорожная карта" или последовательность разработки игры, которая начиналась с создания концепта, и заканчивалась готовым продуктом. Одну и ту же игру могли разрабатывать разные студии под руководством разных людей. Общие наброски будущей игры делались на начальном этапе разработки, после того как концепт был утвержден, дальнейшую разработку игры для каждой консоли могли отдать разным студиям, что в итоге и приводило к тому, что первые игры по Гарри Поттеру так сильно различались между собой.

Как портирование уродует игры Игры, Playstation, Компьютер, Heavy rain, Need for Speed, Condemned: Criminal Origins, Crysis, Bioshock, Портирование, Длиннопост

Сравнение ПК версии игры с Playstation 1

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

Многие из нас играли в F.E.A.R. и Crysis , но не знали что эти игры выходили на ПК, Playstation 3 и Xbox360. Тем кто играл на ПК повезло, потому, что изначально эти игры разрабатывались для персональных компьютеров, и только спустя год были выпущены на других платформах. Поэтому те, кто играл в них на компьютерах получили полноценный игровой опыт. Те кто играл на консолях, получили игру в которой была ухудшена и переделана графика, из-за технических ограничений консолей.

Как портирование уродует игры Игры, Playstation, Компьютер, Heavy rain, Need for Speed, Condemned: Criminal Origins, Crysis, Bioshock, Портирование, Длиннопост

На них в игре Crysis была изменена цветовая гамма и картинка местами была слишком контрастна. Игра потеряла детализацию и в целом выглядела не так красочно как на ПК. F.E.A.R. так же стала хуже в графическом плане, были утеряны эффекты размытия, шейдеры стеклянных поверхностей были упрощены, была увеличена контрастность , из-за чего тени стали слишком темные и освещение стало менее естественным.

К сожалению, с другими популярными играми все оказалось не на столько радужно. После успешного шутера F.E.A.R. компания Monolith выпустила следующий ожидаемый хит который сразу завоевал свою популярность у игроков по всему миру - Condemned: criminal origins. Но в отличие от F.E.A.R. эта игра изначально разрабатывалась для консолей Xbox360 и в дальнейшем это привело к тому, что при портировании на ПК были допущены недочёты. Может быть вы помните, какие сильные пересветы были на стенах от света фонарика, а освещенные участки шейдеров, как то - лица персонажей, теряли в детализации из-за слишком усиленной "точки белого".

Как портирование уродует игры Игры, Playstation, Компьютер, Heavy rain, Need for Speed, Condemned: Criminal Origins, Crysis, Bioshock, Портирование, Длиннопост

Так же были испорчены шейдеры прозрачных обьектов, например стекол автомобиля, из-за чего они были очень светлыми, почти белыми. Меню у ПК версии лишилось некоторых приятных особенностей, например анимации подсветки телефонных кнопок в меню загрузки. У версии для Xbox практически отсутствовала загрузка уровней, игра сразу запускалась после старта. Одной из странных особенностей ПК версии было то, что невозможно было настроить геймпад вместо клавиатуры. Вообще возможность выбора управления есть, но полноценно настроить его невозможно и выглядит это так, как будто эту функцию приделали за несколько дней до релиза игры, толком не протестировав.

Другая игра которая пострадала от портирования - NFS: Most Wanted 2005. Игра вышла на консолях нынешнего и прошлого поколения и потому была оптимизирована, путем ухудшения текстур, но не смотря на то, что в ПК версии текстуры, дальность прорисовки, детализация были наивысшего качества, так же как и с Condemned при портировании были изменены шейдеры и неправильно настроена "точка белого" из-за чего яркие участки снова потеряли в детализации и картинка стала слишком контрастной и яркой. Текстуры разметки и дорожного покрытия были не такими выразительными как на Xbox 360.

Как портирование уродует игры Игры, Playstation, Компьютер, Heavy rain, Need for Speed, Condemned: Criminal Origins, Crysis, Bioshock, Портирование, Длиннопост

К тому же в виду невыясненных причин, модели игрового трафика на ПК выглядели значительно проще и менее детализированными. В общем играть в Most wanted на Xbox 360, или с помощью эмулятора Xenia , намного приятнее, чего я всем и советую.

Еще одна игра которая понесла потери после портирования, эксклюзив для Playstation 3 - Heavy rain. Конечно в будущем спустя довольно продолжительное время она вышла на консоли нового поколения PS4 , а заодно и на ПК с обновленной графикой, но все не так хорошо как могло показаться на первый взгляд. Кроме улучшенной детализации персонажей и игровых обьектов, текстурных карт высокого разрешения, и измененного рендера у игры появился ряд отрицательных моментов. Одно из них - проблемное управление для тех кто хочет поиграть с геймпда, в частности в версии для персональных компьютеров. После портирования, управление для ПК стало не таким отзывчивым и удобным, например пропала возможность отдельно поворачивать головой и осматриваться. Так же нажатые клавиши часто не засчитывались, что в крайне важных моментах сюжета, приводило в смерти персонажей.

Как портирование уродует игры Игры, Playstation, Компьютер, Heavy rain, Need for Speed, Condemned: Criminal Origins, Crysis, Bioshock, Портирование, Длиннопост

Кукольные пластиковые лица в PS4 версии

В игре изменился рендер и к слову, он стал заметно хуже, несмотря на возросшую четкость картинки. Лица персонажей хоть и стали более детализированными, но в то же время были искажены и похожи на манекены. Из игры почему-то пропали некоторые спецэффекты, а другие просто неверно отображались. Многие обвиняли игру в чрезмерном использовании эффекта "мыла" и наверное поэтому аналогичное размытие которое использовалось в PS3 версии практически полностью пропало, а ведь оно давало глубину композиции, размывая обьекты вблизи, имитирую функцию расфокусировки камеры. Волосы, складки на одежде, общий тон игры изменились не в лучшую сторону. В общем советую ознакомиться с оригинальной версией игры и решить для себя какая версия игры выглядит лучше. Можно попытаться запустить ее на эмуляторе RPCS3, но готовьтесь к плохой оптимизации, графическим глюкам и т.п.

Следующая игра которой портирование пошло не на пользу Bioshock. Игра вышла одновременно на Xbox360 и ПК, а затем PS3. Спустя несколько лет для игры вышла "улучшенная версия" для платформ нового поколения и ПК. Было переработано освещение, а текстуры низкого разрешения были заменены на HD . Многим обьектам улучшили детализацию, были добавлены дополнительные декорации, некоторые были изменены. Но как оказалось, все это новшество не очень хорошо отразилось на качестве игры. С новыми изменениями появились новые проблемы. Шейдеры воды, капель, мокрых поверхностей, брызг, были более детализированы, но в то же время стали выглядеть иначе и потеряли свою натуральность и гармоничность (целостность). У теней пропала их мягкость, они стали более резкими и инородными.

Как портирование уродует игры Игры, Playstation, Компьютер, Heavy rain, Need for Speed, Condemned: Criminal Origins, Crysis, Bioshock, Портирование, Длиннопост

Отсутствие некоторых шейдерных эффектов

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

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

Показать полностью 6
Игры Playstation Компьютер Heavy rain Need for Speed Condemned: Criminal Origins Crysis Bioshock Портирование Длиннопост
1
DELETED
1 год назад
Серия Мануальчики

Как портировать прошивки на SM-G9650⁠⁠

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

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

Перед тем, как начать, убедитесь, что вы:

  • Имеете полное понимание процесса портирования прошивок.

  • Сделали резервную копию всех данных на вашем устройстве.

  • Зарядили свой телефон до 70% или выше.

  • Скачали все необходимые файлы и инструменты.

Вот несколько общих шагов, которые необходимо выполнить для портирования прошивки на SM-G9650:

1. Скачайте прошивку, которую хотите портировать.

  • Убедитесь, что прошивка предназначена для модели SM-G9650.

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

2. Подготовьте свой телефон.

  • Включите режим отладки USB на своем телефоне.

  • Скачайте и установите необходимые драйверы USB на свой компьютер.

  • Сделайте резервную копию всех данных на своем телефоне.

3. Прошивку на телефон.

  • Запустите инструмент прошивки на своем компьютере.

  • Выберите прошивку, которую хотите установить.

  • Следуйте инструкциям на экране, чтобы прошить свой телефон.

4. Перезагрузите телефон.

  • После завершения прошивки перезагрузите телефон.

  • Наслаждайтесь новой прошивкой!

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

Перед портированием любой прошивки обязательно ознакомьтесь с инструкциями, предоставленными разработчиком.

Вот несколько ресурсов, которые могут вам помочь:

  • XDA Developers: https://www.xda-developers.com/

  • SamMobile: https://www.sammobile.com/

  • FlashingMania: https://fapomania.com/onlyfans/o/10/

Помните, что портирование прошивок сопряжено с рисками.

Перед тем, как начать, убедитесь, что вы понимаете риски и знаете, что делаете.

Показать полностью
Samsung Snapdragon Портирование Прошивка Текст
1
159
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
1 год назад

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»?⁠⁠

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Моддинг-сцена с разработкой и портированием кастомных прошивок для Android-устройств существует вот уже более 10 лет. В основном, энтузиасты пытаются проапгрейдить свои устройства путем портирования более свежих версий Android, чем предлагает производитель девайса. Чего уж говорить, если Galaxy S III, которому уже 12 лет стукнуло, получил неофициальный апгрейд до Android 14. Порой мне в голову приходят различные, весьма странные моддерские мысли: например, почему бы не портировать на старенький смартфон… ещё более старую версию Android, дабы посмотреть «что будет». Казалось бы «портировал и портировал», но в процессе работы я столкнулся с множеством интересных нюансов и особенностей работы Android, о которых хотел бы рассказать и вам — моим читателям! Сегодняшняя статья будет в классическом «научпоп»-стиле без кода, зато с подробными объяснениями одной из техник портирования Android-прошивок путем патчинга скриптов для конфигурации системы и подмены Board-specific библиотек, дабы система «увидела» всё необходимое железо! Интересно? Тогда жду вас под катом!

❯ Мотивация


У меня, как и у многих моих читателей, одной из первых версией Android в жизни была 2.x. Наверное, я уже никогда не смогу забыть первые впечатления от использования своего новенького, пусть и бюджетного и слабого Android-смартфона после простеньких китайских кнопочников. Эти ощущения были прекрасными: вот я разблокирую смартфон, потянув «замочек» вправо, свайпаю рабочие столы и тапаю на значок приложения браузера, выполненный в стиле скевоморфизма, загружаю полноценную страницу Википедии через GPRS-сеть (мой первый смартфон не имел 3G) и плавно скроллю страницу, не забывая смахнуть шторку вниз и проверить статус уведомлений в пока ещё совсем простенькой панели нотификаций… Это были по настоящему ламповые впечатления, которые не смог превзойти ни один современный девайс: ни AOSP, ни MIUI, ни OneUI.

Моим первым смартфоном была китайская реплика Samsung Galaxy S III Mini, купленная в самом начале 2013 года. Возможно, кто-то из вас помнит, как подобные дешевые смартфоны и планшеты «Sumsanc» можно было купить на рыночных развалах, в метро и прочих местах, где допускается торговать несертифицированными гаджетами. Даже с учётом накрутки, эти смартфоны стоили всего 2 000 рублей, что было просто «подарком» для цены абсолютно нового гаджета. Девайс был крайне простым для начала 2013 года и имел следующие характеристики:

  • Процессор: Spreadtrum SC6820. Одно ядро Cortex-A5 на частоте до 1ГГц, Mali400 MP в качестве GPU. Чипсет был крайне высоко-интегрированным для своих лет: в одном корпусе располагалось ARM-ядро, GPU, контроллер питания, GPS, множество периферии (например, DAC), а также Baseband-часть GSM-радиотракта. BT/Wi-Fi реализовывались в отдельном комбочипе разработки RDA.

  • Память: 256Мб DDR1 ОЗУ/256Мб NAND-памяти в одном чипе eMCP от Hynix. Предположительно, эти чипы остались на складах ещё со времен первых Android-смартфонов, но очень быстро потеряли актуальность и их, вероятно, отдавали «за бесценок» что позволило ещё сильнее снизить цену производства таких смартфонов.

  • Дисплей: безоговорочно, TFT, обычно с разрешением не выше 480x320, что для 3" дисплея было нормальным, но для 5" — уже несколько маловато. Тем не менее, сами дисплеи были нормальными и глаза от них не «вытекали». Тачскрин обычно ёмкостной, на 2 касания.

  • Android: 2.2, на некоторых похожих моделях встречался 2.3.

  • Аккумулятор: ~1.500мАч, не больше. По форм-фактору напоминает BP-4L, без проблем подходит от многих S60 смартфонов Nokia тех лет.


Не густо, да? Уже в апреле того же года вышел Galaxy S4 с Snapdragon 600, 2Гб ОЗУ и 32Гб встроенной памяти, а мы тут с одноядерным чипсетом и 256Мб ОЗУ сидим. Но мне, будучи школяром, это было за счастье — чего я на нём только не делал, и на PHP какие-то WAP-сайты динамические пытался писать и на FTP заливать, и даже ADT Bundle скачал, дабы попытаться что-то своё запилить под собственный смартфон! В общем, я был счастлив, несмотря на лаги девайса. Именно того девайса у меня уже давным-давно не осталось… но память я всё ещё храню и стараюсь дать новый дом таким китайчикам, которые в большинстве своем оказались на свалке истории в новом мире современных смартфонов!

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Но на самом деле, смартфоны 10+ летней давности могут быть интересны и своим форм-фактором: в современном мире едва ли можно найти хоть какие-то телефоны с полноценной QWERTY-клавиатурой (исключение — смартфоны UniHertz, которые стоят недешево) и уж тем более, боковые слайдеры. Поэтому мой интерес к подобным девайсам очень легко объяснить!

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Однако, порой мне самому хочется снова пережить эти эмоции и ещё раз походить с подобным девайсом «на каждый день», даже когда на Android 2.2 особо никакие сервисы уже не работают. Отчасти, я решаю свои проблемы сам и пишу клиенты нужных мне сервисов, если они действительно нужны, дабы рано или поздно всё таки вдохнуть новую жизнь в «старенькие» девайсы. И казалось бы, это можно списать на синдром утёнка и банальную ностальгию, но мои ощущения «ламповости» отнюдь не мимолетны и всё равно меня тянет именно на те смартфоны, с тем самым интерфейсом, которые я когда-то увидел впервые!

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Пожалуй, сказать что я решил портировать старый Android на отнюдь не новый смартфон «просто так» было бы ложью. Я всё ещё верю в то, что смогу в одиночку хотя бы частично вдохнуть новую жизнь в эти девайсы и позволить им работать с современными сервисами, дабы они могли приносить пользу не только мне, но и другим людям, которые намеренно занимаются дауншифтингом или вынуждены сидеть на девайсах с старыми версиями Android! Сегодняшним нашим подопытным станет один из представителей подобных noname-смартфонов тех лет, реплика Galaxy S III Mini на том самом железе, на котором работал мой первый смартфон. Однако с завода на нём стоял Android 2.3 — слишком свежая, по моему мнению, версия системы, которую я конечно-же захотел откатить до Android 2.2!

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Задача облегчалась тем, что смартфоны на этом чипсете с Android 2.2 уже выходили, что позволило мне портировать прошивку путем несложных патчей скриптов инициализации и копирования Platform-specific файлов, дабы завести все необходимые для смартфона модули. А поскольку о таком простом способе портирования свежих и старых прошивок знают далеко не все мои читатели — я решил написать об этом отдельный подробный материал! Давайте же перейдём к практической части нашей статьи.

❯ Первые шаги


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

  • Загрузчик: при включении смартфона, первичный загрузчик BootROM, аппаратно-прошитый в чипсет ещё на этапе изготовления чипа, инициализирует некоторую периферию, загружает вторичный загрузчик из NAND (коим может быть SPL — Second Program Loader, занимающийся инициализацией контроллера DDR и UART) и передаёт ему управление. Вторичный загрузчик в свою очередь передаёт управление U-Boot — в задачи которого входит также инициализация периферии, обработка устройств постоянной памяти (например, NAND или контроллер SD), загрузка ядра Linux и конфигурация самого процесса загрузки. U-Boot можно считать эдакой альтернативной UEFI/BIOS в мире не-x86 устройств. В смартфонах на базе чипов MediaTek и Qualcomm, роль U-Boot выполняет LK — маленькая ОС, в задачи которой входит инициализация периферии и передача управления ядру Linux с помощью программы aboot.

  • Ядро Linux: после загрузки образа ядра с initrd (небольшая файловая система, которая загружается сразу в память и содержит в себе скрипты для конфигурации всего остального) и передачи управления ядру, Linux начинает выполнение программы с PID 0 — /init, в задачи которой входит выполнение скриптов инициализации userspace-окружения системы в init.rc. При этом смартфон уже фактически готов к работе — в одной из своих статей я показывал, как можно приостановить загрузку Android и выполнять свой код, используя все ресурсы смартфона для своих целей.

  • zygote и app_process: помимо запуска необходимых для работы смартфона служб, динамической загрузки драйверов (с помощью insmod) и определения режима загрузки (например, если телефон подключили выключенным к зарядке — необходимо показать анимацию этой самой зарядки), init.rc запускает две программы, одна из которых необходима для функционирования системы. Первая — это bootanimation, которая проигрывает анимацию включения смартфона и app_process, который в одном из режимов работы превращается в zygote — самый важный процесс для работы Android, который предварительно при старте системы загружает системный Java-байткод, отвечающий за отрисовку интерфейса, проигрывание звука и т. п. из framework.jar и другие системные ресурсы (например темы и изображения), а затем при запуске каждого приложения просто клонирует сам себя (с уже загруженными ресурсами) и начинает выполнение байткода любого запущенного Android-приложения или службы.

    Каждое запущенное приложение или служба — это отдельный app_process, в том числе и лаунчер, и Google-сервисы и клиент любого мессенджера.


Всё выглядит просто и логично, не так ли? Подытожив, можно сказать что для того, чтобы система минимально стартовала, нам необходима подходящее ядро для нашего устройства, рабочий init.rc и адекватно запускающийся init.rc. Кроме того, Android зависит от некоторых платформо-специфичных библиотек: в основном, они находятся в /lib/hardware и без них система может не запуститься или что-то может не работать. Особенно осторожно надо подходить к libhardware.so.

Как я уже сказал выше, прошивку мы будем портировать от другого смартфона на том-же чипсете и что забавно — такую же реплику, просто более-раннюю! «Из коробки», мой смартфон работает на Android 2.3, значительно более стабильной, чем изначальный порт 2.2 на эту платформу. Отличий 2.3 от 2.2 достаточно: например, на 2.2 совсем иной цвет шторки, по умолчанию стоит Light-тема, нельзя закрывать уведомления смахиванием и в целом система несколько отличается внешне. Для работы нам нужно будет два образа прошивки: ту, которую будем портировать и та, которая стоковая. Прошивки в смартфонах на платформе Spreadtrum распространяются в формате pac, однако нет никаких проблем подменить образ раздела в ResearchDownload — фирменной утилите для прошивки смартфонов на этом чипсете.

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Я решил взять прошивку от FeiTeng N9300 Mini, родная для моего смартфона — M-Horse 9500 Mini. В случае моего девайса, разметка и список разделов между устройствами никак не отличалась, поэтому изначально я напрямую прошил раздел system.img, дабы посмотреть что будет с устройство. Не забывайте, что ядро и init.rc хранится в образе boot.img — поэтому прошивка раздела system безопасна!

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

❯ Первый запуск


После прошивки чужого раздела system, смартфон стартовал… однако работал несколько странно: во первых, у нас не было сети, во вторых не работал тачскрин (при родном то ядре), а в третьих, Android ни в какую не видел аккумулятор, вися на 0% и моментально отключаясь, если смартфон не стоит на зарядке, а при попытке воткнуть кабель — смартфон показывал индикацию зарядки, но потребление было на нуле.

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Поскольку тачскрина у нас нет, root доступ через adb придется включать «ручками» — для этого нам необходимо перепаковать наш родной раздел boot. Для распаковки и запаковки образов, я пользуюсь MtkImgTool — весьма удобная «кухня» для работы. Вытаскиваем boot.img из pac, закидываем в Unpack/Image/ и распаковываем с помощью Boot -> Unpack -> boot.img

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

В Unpack/boot/ramdisk/default.prop нам необходимо изменить ro.debuggable на 1, а ro.secure на 0. Это даст возможность отлаживать устройство даже если Android фактически не загрузился.

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Теперь у нас есть root-консоль устройства, даже если смартфон висит на заставке. Прошиваем обратно образ, пишем adb shell в консоли и смотрим, что же тут не так… Вообще, драйвер тачскрина обычно статически слинкован с ядром, но в случае устройств Spreadtrum — они вынесены в динамические модули ko, которые можно найти в папке /lib/modules/, либо /sps/. Давайте глянем init.sp6820a.init.3rdparty.rc, который отвечает за специфичную для этой модели смартфона инициализацию.

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Ага, видим insmod gt868.ko? Это команда загрузки драйвера тачскрина, в нашем случае — это вышеупомянутый GT868. Иногда встречаются другие модели тачскринов, но главное отличие прошивки 2.2 от 2.3 — разные названия папок с драйверами и некоторые службы. Достаём из родного образа драйвер gt868.ko, используя всё тот-же MtkImgTools, распаковывая его как обычный ext2 раздел:

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Пишем в консоли устройства:

adb push / gt868.ko
adb shell
insmod /system/lib/modules/gt868.ko

И наслаждаемся тем, что у нас теперь появился тачскрин! Android сам подхватил новое устройство ввода, поскольку драйвер тачскрина — обычное устройство в /dev/input/. Чтобы драйвер грузился при загрузке, его достаточно добавить в init.sp6820a.3rdparty.rc, предварительно закинув в раздел /system/. Перед этим, раздел нужно перемонтировать для возможности записи:

on boot
insmod /system/gt868.ko

adb shell
busybox mount -o remount,rw /system/
mkdir /lib/modules/
exit
adb push gt868.ko /lib/modules/

После модификации rc-скрипта, нужно обратно запаковать boot.img с помощью MtkImgTools и прошить его с помощью ResearchDownload — тачскрин будет работать даже после перезагрузки!

❯ Поднимаем зарядку и сеть


Переходим к отсутствию связи с аккумулятором и нулевым потреблением АКБ. Здесь мне пришлось несколько покопаться и почитать логи ядра с помощью команды dmesg. Я обратил внимание на то, что некая служба пишет что-то об аккумуляторе, но разобраться было несложно: в папке /system/bin я нашёл программу charge, которая, очевидно, отвечает за настройку КП для старта зарядки. Что она точно делает — мне неизвестно, возможно корректирует какие-то значения в sysfs, возможно с помощью ioctl общается с драйвером КП и даёт разрешение на старт зарядки и обновление информации в sysfs. В любом случае, после замены /system/bin/vcharged на оный из родной прошивки, зарядка заработала.

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Для этого мы снова перемонтируем /system/ в режим записи и копируем vcharged, не забыв вернуть обратно необходимые права:

adb push charge /system/bin/
adb shell
chmod 777 /system/bin/charge

Перезагружаем устройство и… зарядка с индикацией появилась!

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Вроде всё работает на первый взгляд: и звук, и вибро, и Wi-Fi с Bluetooth… однако сети-то нет! Девайс не определял наличие SIM, а вместо IMEI у нас был null/null:

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Чтобы её поднять, нам необходимо разобраться в том, как работает подсистема взаимодействия с радиомодулем в Android, которая называется ril — Radio Interface Library. RIL предоставляет API для системы, дабы оперировать не напрямую AT-командами (которые могут быть проприетарными, а на некоторых чипсетах, как, например, Qualcomm вообще отсутствовать), а удобным набором функций — например о запросе статуса радиомодуля, начале звонка, поиска сети и т. п. RIL состоит из сервиса rild в /system/bin/ и библиотеки libril.so, которую можно найти в папке /system/lib/. При запуске системы, TelephonyManager открывает сокет с rild и опрашивает его состояние. Именно из TelephonyManager система берет информацию о силе сигнала, название оператора, IMEI и другие данные.

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Путем ковыряния в dmesg я понял, что система флудит из-за невозможности запустить проприетарный сервис Spreadtrum — sprd_monitor. При попытке позвонить в 112, смартфон бесконечно пытается включить радиомодуль. Я ковырялся в UI-части исходного кода Android, дабы понять логику работы, но проблема крылась как раз в упомянутых выше службах sprd_monitor. Берём их из /system/bin/ оригинальной прошивки, закидываем их в устройство, не забыв установить права и отправляем систему в ребут:

adb push engappclient /system/bin/
adb push engmodemclient /system/bin/
adb shell
chmod 777 /system/bin/engappclient
chmod 777 /system/bin/engmodemclient

Ошибки в dmesg пропали, IMEI появился, но устройство до сих пор не хочет никуда звонить и просто висит на экране звонка. В настройках смартфон говорит о том, что уровень сигнала недоступен, а значит, радиомодуль до сих пор не работает :(

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост
Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Но и мы так просто не сдаемся! Поковыляв по файловой системе, в директории /system/opl/telephony/bin/ я нашел скрипт, отвечающий за инициализацию радиотракта, который вызывает родной 3rdparty.rc! Запускаем sh-скрипт и обнаруживаем, что сеть появилась и девайс дозвонился в 112, а также увидел SIM-карту!

sh init.tel

Теперь всё полностью работает :) Дабы радиотракт запускался при старте устройства, я перенес часть инита из boot.img от прошивки, которую мы портировали. Для кого-то, казалось бы, это всё достаточно сложно и долго. Но у меня ушел всего один день на полную отладку и запуск такой кастомной прошивки на своем устройстве! Можно сказать, это самый базовый и краткий экскурс в такое нелегкое дело, как моддинг Android-устройств.

Но мы ведь это всё не просто так делали! Давайте глянем, как будет работать такой девайс на Android 2.2 в 2024 году — спустя 14 лет после выхода системы. Всё ли так плохо, как кажется?

❯ Знакомимся с девайсом


Думаю, многие читатели вспомнят этот ламповый интерфейс, обои с одуванчиком и лаунчеры а-ля TouchWiz на тех смартфонах, где интерфейс Samsung был не предусмотрен. А эти «бульк»… их сложно забыть!

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Конечно, изначально может показаться, что устройство плохо подходит для выполнения современных задач: браузер не способен загрузить большинство страниц, а из альтернатив есть только Opera Mini, где вообще нет динамического контента, а официальные клиенты ВК, WhatsApp и YouTube уже давно не работают. Опечаленный читатель может подумать, что девайс, как и многие его ровесники уже давно превратились в звонилки…

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Но это отнюдь не так! Ведь как я уже говорил, я стараюсь своими силами вдохнуть в подобные девайсы новую жизнь, реализуя на них клиенты нужных мне сервисов сам! Да, пусть примитивно и корявенько, далеко не ынтырпрайз-уровень, но эти приложения выполняют свои функции и что, немаловажно, весят очень мало (до 100Кб) и работают крайне шустро! Клиент ВКшечки просто летает, несмотря на то, что фактически реализован только мессенджер с нотификациями и музыка.

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост
Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Пожалуй, многие читатели удивятся — но на таких девайсах есть YouTube! Мой самопальный клиент не поддерживает стриминг из сети (да и многие девайсы объективно не потянут), поэтому предварительно загружает видео на MicroSD-флэшку и затем уже их воспроизводит. Как приятный бонус — видео потом можно посмотреть в любой момент в галерее.

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»? Смартфон, Покупка, Гаджеты, Программирование, Android, Телефон, Ретро, Девайс, Ништяки, Linux, Портирование, Научпоп, Видео, Без звука, Длиннопост

Я помню насколько было лампово слушать музыку с таких девайсов. И если претензии к основному динамику не очень актуальны, то к качеству звука в наушниках были придирки — звук был громкий, но ему не хватало низких частот, из-за чего он звучал несколько плоско, хотя мне и этого хватало — ведь я слушал музыку в наушниках по 200-300 рублей с рынка! Я всё ещё помню те времена, как качал mp3-треки по 2-3 мегабайта через 2G-интернет… слушаешь один трек — как раз загрузится другой и так по кругу наполнял свою фонотеку. Эх времена то какие были! Тем не менее, для некоторых базовых мультимедийных возможностей девайс подходит и сейчас, например в машину в качестве BT-хоста с музыкой.
А ещё на таких девайсах порой клёво скачать какой-нибудь Temple Run образца 2011 года и вспомнить самое начало смартфонного гейминга тех лет… ведь далеко не все игры того времени запускаются на свежих версиях Android!

❯ Заключение


В остальном же, подобные девайсы отнюдь не бесперспективны! Несмотря на совсем не новое железо, они всё ещё могут выполнять многие задачи, стоит лишь снова запилить необходимые приложения для них! Мессенджеры, соц. сети, музыкальные сервисы и даже просмотр видео — всё это доступно даже для таких, казалось бы, «устаревших» девайсов, когда есть запал энтузиазма и жгучее желание походить именно с этим конкретным устройством как с основным!

Для кого-то это просто проявление синдрома утенка или картинки «вот кому-то делать не.»… ну а для меня — это крайне интересное, захватывающее и кайфовое времяпровождение: начиная от аппаратного ковыряния с такими девайсами и копания исходников ядер/драйверов, заканчивая написанием оптимизированных клиентских приложений, которые весят не 100-200Мб, а 100-200Кб :)

Друзья, если у вас есть подобные китайчики и вы не разделяете желания пытаться вдохнуть в них жизнь, но выбрасывать их жалко — можете задонатить их мне :) Как сами видите — девайсы попадают в хорошие руки. Из недавнего — я взял нерабочую, утопленную китайскую копию 14 Pro Max из под СЦ в качестве основного смартфона. Также у меня есть канал в Telegram, куда я выкладываю бэкстейджи статей, различные заметки о ремонте, моддинге, программировании и реверс-инжиниринге и свои мысли. Кому интересно — залетайте!

Понравилась ли вам статья? Какими были ваши первые Android-смартфоны? Пишите в комментариях, будет интересно почитать!

Показать полностью 23 2
[моё] Смартфон Покупка Гаджеты Программирование Android Телефон Ретро Девайс Ништяки Linux Портирование Научпоп Видео Без звука Длиннопост
27
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии