Геймдев, про который мы забыли: как работали 2D-игры на кнопочных телефонах нулевых
Друзья! А вы помните, какими были мобильные игры в 2000-х годах? Помните, как разработчики умудрялись уместить целые миры в устройство с небольшим дисплеем, аппаратной клавиатурой, весьма слабым железом и парой сотен килобайт памяти? Но задумывались ли вы, как в своё время работали эти сами игры «под капотом»? В сегодняшней статье-ретроспективе предлагаю вспомнить мобильный геймдев нулевых и узнать, как же работали 2D Java-игры, какие API были доступны и что из себя представлял средний телефон тех лет! Интересно? Тогда добро пожаловать под кат!
❯ Предисловие
Пожалуй, геймдев всегда был одной из самых интересных сфер программирования. Множество нестандартных задач, возможность применить профильные математические и алгоритмические познания, а также огромный простор для архитектов в продумывании архитектуры будущей игры, ведь, например, в больших студиях комплексные и большие игры обычно очень сложные и нередко тянут за собой целый пласт легаси-кода и наработок чуть ли не из 90-х.
Но помимо десктопных и консольных игр, существуют и мобильные игры, которые в последние 5 лет вплотную приблизились к уровню AAA на консолях (привет порту GRID, AC Mirage, RE4 на мобилки). А ведь ещё 15-20 лет назад мы играли на кнопочных телефонах с небольшими дисплейчиками, которые в свое время подарили нам множество эмоций и кайфа от прохождения этих самых игр, несмотря на простенькую графику, не особо комплексный геймплей и относительно простой левел-дизайн. Продвинутые мобильные геймеры играли уже на Symbian-смартфонах и WinMobile-коммуникаторах (да, в какой-то момент времени, устройства на WM были весьма перспективными), но чаще всего — на Java-телефонах Nokia, Sony Ericsson, Siemens и, конечно-же, Samsung с LG!
По правде сказать, игры на смартфонах — тема отдельная, например на Symbian был полноценный телефон-игровая консоль Nokia N-Gage, о которой я писал отдельный материал, а о разработке игры под Windows Mobile я относительно недавно написал отдельную статью. У смартфонов обычно было несколько больше ресурсов: шустрее процессор, значительно больше памяти доступной игре, а также возможность запуска нативного кода, но и игры для них было разрабатывать значительно сложнее.
Зато о том, как работали игры на Java-телефонах информации практически нет и этот недостаток нужно исправлять, ведь это была одна из первых попыток унифицировать формат приложений на телефонах вне зависимости от архитектуры их процессоров и ОС на борту. Недавно я писал о том как работали 3D-игры на Java-телефонах, но там затрагивалась только 3D-часть без 2D, звука, обработки ввода и иных модулей, без которых игра не может работать!
❯ Каким был телефон?
В середине 2000-х годов, обычно телефон представлял из себя девайс в корпусе моноблок/раскладушка/слайдер и «флип» с весьма большим цветным дисплеем, одним/двумя (привет Motorola E398) динамиками и несколькими аппаратными кнопками. В зависимости от ценового сегмента устройства, обычно менялся корпус, разрешение и размер дисплея, а также материалы, из которого был изготовлен девайс. При этом у многих больших вендоров были собственные программные платформы — у Nokia это был S40, у Sony Ericsson своя, у Samsung и LG тоже свои.
В среднем, характеристики телефонов были следующими:
Процессор: ARMv4/ARMv5 на частоте ~100-200МГц. Есть исключения — Siemens E-Gold работал на базе архитектуры C166, а платформа Motorola работала на 66МГц (что и объясняет небольшую тормознутось).
ОЗУ: ~8Мб SDRAM. Эта память распределялась под все нужды системы, в том числе и обработку GSM, Java и пользовательский интерфейс. Java-приложениям было доступно ~1Мб ОЗУ.
Постоянная память: в среднем ~10-30Мб, плюс возможность расширения памяти за счет MicroSD или MS Pro Duo (Sony Ericsson).
Казалось бы, не густо. На самом деле вполне достаточно, учитывая все ограничения телефонов тех лет. Но почему именно Java?
Ещё в начале нулевых, когда прогресс развития телефонов шёл семимильными шагами, перед разработчиками телефонов встал вопрос, какой формат для программ выбрать, дабы привлечь как можно больше разработчиков на рынок мобильных приложений. Очевидно, что нативные программы на C/C++ точно не подойдут (разные архитектуры, большие отличия в платформах), поэтому нужна была виртуальная машина с собственным байткодом. Вариантов было несколько: Mophun, некая корейская виртуальная машина (точного названия, увы, не помню и инфы очень мало) и, конечно-же, Java с JVM. Со временем именно J2ME стала стандартом благодаря оптимальной скорости работы, хорошему и простому API и низкому порогу входа.
❯ Какие API существовали?
Несмотря на то, что игры под кнопочные телефоны писались на Java, набор API и поддерживаемых пакетов отличался от обычной JVM на ПК, которую использует, например, Minecraft. Всего существует три профиля — J2SE (Android и ПК), J2EE (серверы и энтерпрайз) и J2ME (встраиваемая электроника и телефоны). Однако сам по себе J2ME делится ещё на два стандарта — CLDC/CDC (набор поддерживаемых фишек языком — например, ранние телефоны не поддерживали float) и MIDP (набор поддерживаемых телефоном фишек — работа с дисплеем, проигрывание звуков, доступ в сеть и обработка ввода — всё это часть MIDP). За всё время существования было две версии MIDP — 1.0, которая была весьма ограничена в возможностях (например, нельзя было развернуть игру на весь экран) и использовалась с 2001 по ~2003 год и MIDP 2.0, которая использовалась вплоть до кончины J2ME.
Теоретически, появление J2ME должно было стандартизировать игры на телефонах разных производителей… но был нюанс — ведь функционал телефонов рос как на дрожжах, разрешение дисплеев тоже, у телефонов появлялась собственная память и файловая система, возможность подключения к интернету и Bluetooth и появился целых ворох API…
Несмотря на то, что игры по большей части были одинаковыми (или почти одинаковыми) на всех кнопочных телефонах, тем не менее набор поддерживаемых API каждым устройством значительно отличался. Вероятно, вы помните как многие игры подразделялись не только на версии для разных разрешений дисплея, но и на версии для каждого производителя отдельно: Nokia, SE, Samsung и т. п. Для реализации каких-то особых фишек (например, быстрая отрисовка изображений с регулируемой прозрачностью) требовалось использовать пакеты, неподдерживаемые в базовом профиле MIDP. И подобные пакеты делились на два типа — JSR и Vendor-specific пакеты.
JSR — это расширения-спецификации (то есть просто описание классов без какого либо кода), которые вносились в специальную базу Java community process и формально стандартизировались среди всех нормальных производителей телефонов. Среди таких JSR есть и поддержка 3D-графики (JSR184 — M3G, JSR239 — OpenGLES Bindings for J2ME), и доступа к файловой системе устройства (JSR75), и возможность использования Bluetooth для реализации мультиплеера (JSR82). Говоря простыми словами, это опциональные «фишки», которые могли быть доступны на каких-то телефонах, а на каких-то не поддерживались и соответственно игры, которые их используют, в большинстве случаев просто вылетают с ошибкой (однако особенно «умные» игры используют рефлексию и определяют поддерживается ли та или иная функция с помощью метода Class.forName).
Vendor-specific пакеты обеспечивали очень крутой функционал, характерный не просто одному производителю телефонов, а зачастую даже одной линейке телефонов на определенной платформе. На SE такие пакеты практически не использовались (кроме, конечно, Mascot Capsule), а вот на Nokia постоянно (Nokia UI, Nokia S40 API), позволяя на изначально «слабеньких» s40-телефонах рисовать в буфер дисплея напрямую, а также отрисовывать треугольники, рисовать полупрозрачные картинки и выполнять некоторые другие операции, недоступные на других телефонах. У Samsung, же, например, в свое время была поддержка MMF-звуков в мобильных играх, что в начале и середине 2000х годов было просто нереально крутым, даже несмотря на другие ограничения корейских телефонов.
❯ Графика
Возможности по отрисовке графики на кнопочных телефонах были не сказать что сильно широкие, но тем не менее позволяли легко реализовать графику уровня SNES или даже PlayStation 1. Например, в отличии от современных смартфонов, мы не могли использовать шейдеры, умножить спрайт на цвет (дабы придать ему другой оттенок) и даже использовать аффинные трансформации (поворот, скейлинг) — исключительно полупрозрачные спрайты даже без возможности плавно «растворить» спрайт путем изменения его альфы! Поэтому многие разработчики шли на «хак» и предварительно рисовали в редакторе 8-16 положений одного спрайтов с разным углом поворота, дабы потом выбрать нужный в зависимости от физического угла поворота в градусах!
Для графики использовался пакет javax.microedition.lcdui, в котором были классы для построения нативного интерфейса (выглядело так себе на большинстве телефонов), а также механизм фреймов (Form, Canvas).
Для игр же предлагался Canvas и GameCanvas, которые позволяли развернуть поверхность для рисования на весь экран и предлагали инстанс объекта Graphics, который сразу предоставлял механизм двойной буферизации! В свою очередь, Graphics предоставлял методы для отрисовки спрайтов (Image и drawRGB для «сырых» картинок не в нативном-формате, может быть медленно), примитивов (линии, прямоугольники, овалы), текста и… всё! Например, картинку можно было нарисовать вот так:
getGraphics().drawImage(img, 0, 0, Graphics.LEFT | Graphics.TOP);
При этом с шрифтами вопрос был отдельный: у каждого устройства был свой набор поддерживаемых шрифтов и свои фишки, о которых клиентская программа даже могла и незнать: например поздние телефоны поддерживали сглаживание шрифтов (что дико лагало на устройствах типа Nokia Asha), но что самое забавное — шрифты не могли быть произвольного размера, лишь 3х типов (один из них — моноширинный) и 3х размеров (маленький, средний, большой). Немудрено, что многие вендоры реализовывали свои рендереры битмапных шрифтов, которые точно будут нужного разработчику размера.
Но откуда же грузить картинки? Для этого, в Java был использован встроенный механизм открытия ресурсов из JAR: никакого кэша, никаких OBB, все нужные данные сразу в пакете с игрой. Да, это накладывало некоторые ограничения: например на телефонах Samsung долгое время было ограничение ~250Кб на приложение, зато было просто и портативно. Выглядело это вот так:
InputStreamReader reader = new InputStreamReader(getClass().getResourceAsStream('/img.png");
Или в случае картинок так:
Image image = Image.createImage("/img.png");
Всё очень легко и понятно, согласитесь?
❯ А звук?
Помните диалог «включить звук» при запуске почти каждой игры? Конечно же помимо графической части, в каждой игре должен быть и звук! И с его реализацией были свои нюансы: ведь в MIDP 1.0 звук поддерживался только с помощью Vendor-specific API (то есть его вообще могло и не быть, зато на телефонах Samsung поддерживался MMF, что, как я уже и говорил раннее, было очень круто).
MIDP 2.0 уже стандартизировал нормальный протокол для общения с мультимедийной подсистемой устройства с помощью пакета javax.microedition.media, в котором было три класса: Player (собственно, сам звук или музыка), PlayerListener (прослушиватель событий от плеера) и Control для управления различными параметрами воспроизведения (громкость, тональность и, вероятно, прочие расширения от производителей типа эквалайзера).
Конечно-же набор поддерживаемых форматов был невелик, но почти все устройства хотя-бы поддерживали wav (для коротких эффектов) и midi (для музыки), на ранних телефонах ни о каком mp3 и речи не шло (именно в Java-приложениях). При этом на некоторых телефонах, насколько мне известно, не было возможности воспроизводить одновременно звуки и музыку из-за отсутствия программного или аппаратного микшера. Интерфейс для воспроизведения звуков был один: мы создаём Player с помощью метода createPlayer, которому передаём адрес нужного ресурса и проигрываем его. Это мог быть как и трек на удаленном сервере (стриминг поддерживался не везде), так и в ресурсах программы:
InputStream is = getClass().getResourceAsStream("/music.wav");
Player player = Manager.createPlayer(is, "audio/x-wav");player.prefetch();
player.start();
Так почему-же в большинстве игр на телефонах тех лет были midi-мелодии вместо wav? Всё дело в размере и ресурсах: во первых, midi-мелодия на пару минут может весит пару десятков килобайт. Помните «бумер.mid», «europa.mid» и другие известные тогда файлы? Эти треки весили совсем немного благодаря тому, что в отличии от оцифрованных сэмплов (т.е аналоговых данных с микрофона), вес которых зависит от разрешения, наличие стерео и частоты дискретизации, midi оперировали лишь наборами инструментов: что где и когда нужно проиграть. Во вторых, в Java-телефонах был ограниченный объем памяти, а heap мог быть менее 1 мегабайта, поэтому загрузка даже небольшого wav-файла могло быть крайне проблематичным на таком устройстве. Поэтому выкручивались как могли!
Но в целом, аудио-возможности были хорошими. Java-игры славились весьма неплохим звуковым сопровождением для уровня телефонов, явно не хуже GBA.
❯ Мультиплеер! Давай про мультиплеер!
Вероятно многие читатели помнят, что локальный мультиплеер в Java-играх был зачастую Must-have: возможность игры с друзьями по «локалке» собирала все лавочки и подоконники в школах на переменах в жёстких баталиях на бипланах, или, например, в матчах CS для Java!
И для реализации мультиплеера у Java было довольно немало возможностей: в первую очередь, это наличие полноценных TCP-сокетов и Http-подключений с помощью класса Connection. Да, были некоторые ограничения (например на Nokia нельзя было установить TCP-соединение на порт 80 в обход встроенного клиента Http), но тем не менее даже через GPRS можно было создать с кем-то матч и попробовать поиграть, а чуть позже, к 2009 году, в РФ уже появился +- стабильный 3G и можно было поиграть в игры с достаточно быстрым и стабильным интернетом! Но интернет был дорогой, да и смысл ради сессионного матча подключаться к интернету, когда есть Bluetooth?
Появление Bluetooth в телефонах значительно расширяло возможности телефонов в обмене информации на короткой дистанции. Конечно и до этого уже был ИК-порт, который позволял передавать файлы на относительно низкой скорости, но у него была не самая большая стабильность, да и далеко не все можно было успеть перекинуть за время школьной переменной (и не все давали свой телефон «на урок»). Появление OBEX и возможности передачи файлов друг-другу через беспроводной канал дало возможность скидывать музыку и игры прямо на уроке, что было очень круто и позволило некоторым школьникам с флэшкой или телефоном с большим объемом встроенной памяти даже торговать контентом и скидывать, например, эротику за пирожок или школьную пиццу (я застал когда она уже стоила около 10 рублей — весьма немало!). Особо красноречивые ребята умудрялись уболтать друзей себе скидывать весь контент, что был у них на телефонах и становились центром внимания с новым крутым треком — я и сам в некоторой степени таким был (у меня была флэшка на 2 гигабайта!).
Но помимо возможности обмена файлами, Bluetooth также поддерживал некоторые профили: например, подключение к наушникам или протокол L2CAP/RFCOMM для установки соединения клиент-сервер между устройствами, которое и использовалось в Java-играх. Именно оно позволяло сделать один телефон сервером (хостом), а другому — клиентом, который подключается к серверу и они инициируют сессию игры!
❯ Проблемы мультиплатформенности
На бумаге все было хорошо: Java-машина была стандартизированной, поддерживаемые профили тоже и по идее игры и программы должны без проблем запускаться на большинстве Java-телефонов. Но как-бы не так: проблемы с кроссплатформенностью имели место быть. Начиная от упомянутых выше Vendor-specific API и версиями MIDP, заканчивая… как это ни странно, разрешениями экрана.
Да, сейчас игры не зависят от разрешения дисплея благодаря возможности скейлинга картинок до любого размера. Таким образом достаточно заранее нарисовать спрайты для, например, FHD разрешения и просто скейлить их по размеру дисплея в меньшую или большую сторону. Никто не мешает и отдалять камеру в зависимости от разрешения дисплея, впрочем, это считается не очень хорошей практикой (и зависит от игры).
Во времена Java-телефонов, зависимость от разрешения дисплея была критичной и поэтому игры для «не того» разрешения либо выходили за экран, либо наоборот — выглядели слишком маленькими и игрались в небольшом окошке. Многие вероятно вспомнят как устанавливая игру для малого разрешения дисплея, можно было заметить как шлейфом уезжают спрайты за виртуальный экран и остаются на белом фоне…
Небольшие проблемы были и с обработкой ввода. И если резистивные тачскрины поддерживались еще в MIDP 2.0 с помощью обработки определенных событий, то с мультитачем (во времена Asha и поздних телефонов Samsung) было уже сложнее. Другой вопрос что даже коды кнопок почему-то не унифицировали, из-за чего возникало деление на Samsung, Sony Ericsson и Nokia: разработчики J2ME предполагали что смартфоны будут в разных форм-факторах и предоставили лишь механизм для унификации «игровых» кнопок. Таким образом, некоторые игры, собранные под телефоны конкретного производителя могли не реагировать на нажатие кнопок клавиатуры из-за отличающихся кодов клавиш.
❯ Заключение
Друзья! Вы, вероятно, думаете что если телефоны с поддержкой J2ME больше не производятся, значит и коммьюнити уже «всё»? Как-бы не так: после моих статей мне продолжают писать читатели и спрашивать детали реализации тех или иных техник или игровых механик! Да, энтузиастов мало, но они есть, как и у ретро-компьютеров: например, спектрума, или консолей типа NES… А значит наше дело будет жить и Java-телефоны с их играми останутся в наших сердцах, а Java-телефоны останутся на скрижалях истории! Берегите своих кнопочных красавцев и восстанавливайте по возможности, благо пока-что даже корпуса на популярные модели кнопочных телефонов найти относительно легко.
Надеюсь, сегодняшний материал вам был интересен, писал его специально так, чтобы было понятно даже тем читателям, которые не пишут код или знакомы с программированием поверхностно. Подписывайтесь на мой Telegram-канал, куда я публикую различные мысли и советы по ремонту и программированию под гаджеты прошлых лет, подсъемы с новых видосов и всегда актуальные ссылки на новые статьи!
Материал подготовлен при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, дабы не пропускать новые статьи каждую неделю!
Красивый?) Nokia 6233
Как это устроено: современное производство по приготовлению безалкогольного пива
От маленького зернышка до мягкой пены в бокале — рассказываем, как мы готовим безалкогольное пиво!
Вот так выглядят здоровые колосья, из которых мы получаем зерна для безалкогольного пива
Этап 1. Подготовительный
Мы начинаем с отбора семян
Из них вырастет ячмень. Из ячменя будет сделан солод, из которого мы приготовим безалкогольное пиво. Чтобы получить большой хороший урожай, важно выбрать правильные сорта. Наши сорта «Грэйс», «Гузель», «Евгения» и «Фатима» устойчивы к болезням, вредителям и внезапным майским похолоданиям :) Из таких семян вырастут крупные колосья с большим количеством зерен.
И выбираем место для посевов
Ячмень — это не петербуржец! Ему важно солнце и чтобы температура была выше 10 градусов минимум 150 дней в году. Такие условия есть в 17 регионах России, включая Тульскую, Рязанскую, Липецкую и Воронежскую область, а также Приморский край. Для своих полей мы выбираем земли, которые богаты черноземом — самой плодородной почвой.
Также почву нужно подготовить
В лаборатории мы тестируем почву на уровень кислотности и других показателей, которые влияют на растения. Это помогает подобрать правильные экологичные удобрения, которые ускоряют рост зерна и повышают урожайность. После этого можно переходить к посеву.
Этап 2. Выращивание и сбор урожая
Контроль на каждом этапе роста
Спутниковые снимки ячменных полей «Балтики»
Разве может человек уследить за полями в несколько тысяч гектаров? Может, если на помощь ему приходят современные технологии! Мы наблюдаем за ростом ячменя со спутника: каждую неделю наши сотрудники получают фотоотчет, на котором виден прогресс.
А вот так выглядит созревший урожай — можно собирать!
Сбор и хранение
Урожай собирают с помощью уборочных комбайнов и отправляют на хранение в элеваторы. Это здания с подходящей температурой и влажностью, чтобы зерно в них не испортилось. В одном таком элеваторе помещается до 10 000 тонн зерна!
Элеватор для хранения изнутри, на фото сотрудница открывает специальный люк для проветривания
Этап 3. Соложение
Это когда зерно превращается в солод. Из элеваторов ячмень поступает на солодовню. Здесь он проходит контроль качества, очистку. Далее зерна замачивают в воде в течение нескольких циклов. Затем ячмень проращивают в специальных ящиках — обычно на это уходит от пяти дней. Из этих ростков вполне может развиться новое растение. Но это не наша цель! Поэтому отправляем пророщенный ячмень на сушку, а если нам нужно получить карамельный солод, то на обжарку. Теперь — это солод!
Солод для безалкогольного пива — то же самое, что виноград для вина или яблоки для сидра. От условий сушки и обжарки зависит, какой цвет, аромат и вкус будет у готового напитка.
Этап 4. Варка
Готовый солод отправляется в варочный цех. Здесь его измельчают, смешивают с водой, нагревают, фильтруют и кипятят. На этапе кипячения в получившуюся смесь добавляют хмель для вкуса и аромата.
Добро пожаловать в варочный цех!
Для приготовления безалкогольного пива часто используют два вида хмеля: горький и ароматический. Их добавляют в начале и в конце кипячения соответственно.
Этап 5. Брожение
Думаете, что после варки безалкогольное пиво уже готово? А вот и нет! Далее оно отправляется в бродильный цех, в котором расположены цилиндро-конические танки из нержавеющей стали. Там в будущий напиток добавляют дрожжи. Процесс брожения б/а пива занимает от 7 до 14 дней в зависимости от вида дрожжей. Но получившийся продукт — это еще не безалкогольное пиво. Перед тем, как попасть в бутылку, напиток должен созреть.
Вот так выглядят бродильные танки
Этап 6. Созревание
Этап особого творчества для пивоваров, когда будущее безалкогольное пиво приобретает свой окончательный вкус и аромат. На этом этапе за счет использования специальных дрожжей мы получаем безалкогольное пиво, в котором присутствует менее 0,5% спирта.
Этап 7. Фильтрация
Как только безалкогольное пиво созрело, приступаем к фильтрации. Это многоуровневый процесс. Сначала напиток попадает в сепаратор, где отделяются крупные взвеси и дрожжи. Далее проходит через кизельгур — фильтрующий материал, который помогает хорошо отделить оставшиеся дрожжи и белковую взвесь. Последний стадия — тонкая фильтрация. В результате фильтрации пиво осветляется, становится прозрачным. По окончании фильтрации безалкогольное пиво поступает в специальные накопительные емкости — форфасы. Здесь оно ожидает своей очереди поступления на линию розлива.
Нефильтрованное безалкогольное пиво не проходит стадию фильтрации и содержит небольшое количество дрожжей, придающих характерные особенности вкусу напитка.
Этап 8. Розлив
Напиток готов! Теперь его можно разливать по упаковкам. Но, перед тем как разлить, в зависимости от сорта, следует процесс пастеризации. Это кратковременный нагрев, который замедляет жизнедеятельность микроорганизмов, чтобы увеличить срок годности напитка.
Для розлива мы используем стеклянные бутылки, алюминиевые банки и кеги для ресторанов. А еще сами производим ПЭТ бутылки из компактных заготовок. Упаковка перед розливом проверяется специальным оборудованием — инспекторами. Брак не пройдет!
Выбор упаковки не влияет на вкус напитка: один сорт может разливаться по бутылкам и банкам
Теперь вы знаете больше о пивоварении! Ищите безалкогольную «Балтику» в любимых магазинах и на маркетплейсах.
Реклама ООО «Пивоваренная компания «Балтика»» 18+, ИНН: 7802849641
Все вспомнили этот звук?
Азбука морзе
В Nokia стандартный гудок при получении SMS является кодом азбуки морзе - означающим SMS.
Три легенды из нулевых: оживляем, прошиваем, патчим и смотрим на культовые телефоны Siemens из начала двухтысячных!
Друзья! А вы помните такие мобильные телефоны, как Siemens? Когда-то у всемирно известного консорциума, занимающегося выпуском различного силового оборудования и поездов, было собственное мобильное подразделение, которое успешно конкурировало в конце 90х и начале 2000х. Многие мои читатели «постарше» наверняка вспомнят, а то и сами владели такими легендарными моделями, как Siemens SL45, ME45, C55, C65, S65, S75! Но немногие знают, что в своё время эти девайсы были сродни полноценным Symbian-смартфонам Nokia, или даже современным Android-девайсам с разблокированным загрузчиком: энтузиасты быстро смогли разобраться в алгоритме генерации ключей для загрузчика и начать делать патчи, которые фактически превращали «тормозной» телефон в почти настоящий смартфон с полноценной многозадачностью! Недавно мне подарили целых три телефона Siemens, которые носят статус культовых: Siemens C65, Siemens C75 и Siemens S75! Два девайса из трёх были в замечательном состоянии, но имели некоторые проблемы в аппаратной части. В сегодняшнем ностальгическом материале, мы с вами: вспомним о том, какие телефоны делали Siemens в своё время и на каких аппаратных платформах они работали, продиагностируем, проведем аппаратный ремонт и составим список самых частых болячек устройств на платформе S-Gold, рассчитаем ключи для загрузчика, пропатчим, накатим эльфпак и посмотрим, какой же была моддинг-сцена телефонов в нулевых! Интересно? Тогда бегом разворачивать статью!
❯ Эх, Siemens, Siemens...
Пожалуй, ни одно видео или статья с ностальгией по мобильным телефонам из нулевых не обходится без упоминания телефонов от компании Siemens. Немецкие девайсы были инновационными и прорывными во многих аспектах. Например, инженеры Siemens стали первопроходцами, добавив возможность прослушивания MP3 на телефоне, поддержку карт памяти MMC (предок MicroSD, полностью совместимый с ним на программном уровне) и установки полноценных Java-приложений в легендарный SL45, вышедший аж в 2000 году. Нельзя также не упомянуть первый телефон с цветным дисплеем и предусмотрительность инженеров Siemens с точки зрения разъёма для аксессуаров — вряд ли вы видели ещё один телефон с возможностью «горячей» установки внешней камеры прямо в порт для синхронизации!
Но особый статус телефоны Siemens получили на территории СНГ — их девайсы одновременно обожали и злостно ругали. И ведь было за что их любить: у Siemens был особый подход к дизайну телефонов с чётким разделением целевой аудитории устройства, не похожий ни на Nokia, ни на Sony Ericsson, а прошивка в этих девайсах хоть и была достаточно тормознутой и местами не совсем логичной, но тем не менее, её визуальная часть была сделана с явной любовью художников к делу. Каждый девайс по своему отличался от своих собратьев. Вот, вспомните молодежного маскота Siemens, пацанёнка в очках:
Из набора стикеров в Telegram.
Критика в основном заключалась в очень сырых и тормозных первых версиях прошивок (однако компания активно выпускала обновления и пользователь мог спокойно перепрошить телефон в домашних условиях без похода в СЦ), слишком сильном урезании C-серии (например, в С75 невозможно было установить флэшку, а встроенной памяти было мало для мультимедийного телефона) и отсутствии поддержки MP3 на поздних устройствах. Но тем не менее, «сименсам» всё равно было что предложить простым пользователям в мультимедийном плане. А со временем, потянулись и энтузиасты…
Телефоны Siemens были построены на двух аппаратных платформах разработки родственной компании Infineon (ранее эта компания была полупроводниковым подразделением Siemens и занималась разработкой микропроцессоров): первая платформа называлась E-Gold и состояла из микропроцессора с архитектурой C166, работающего на частоте от ~13МГц (SL45) до ~52МГц (S55), GSM-радиотракта и контроллера питания Dialog (на некоторых телефонах использовался Twigo, по каким-то причинам несовместимый с «диалогом»). Её мы могли встретить во множестве устройств A-серии (бюджетники), S и C серии до 6x, а также некоторых устройствах серии SL. Второй платформой была легендарная и многообещающая S-Gold, которая использовалась в устройствах 65'ой и 75'ой серии. Эта платформа была построена на базе ядра ARM926EJ-S, работающего на частоте ~104-208МГц (с возможность разгона), GSM-радиотракта с поддержкой GPRS и EDGE, а также всё того-же контроллера питания Dialog. В своё время устройства на базе S-Gold получили небывалый интерес среди энтузиастов, которые относительно быстро разобрались в алгоритме расчёта ключей для загрузчика и получили возможность применять специальные врезки ресурсов или кода в оригинальную прошивку устройства, называемые патчами. В сегодняшнем материале мы рассмотрим устройства именно на платформе S-Gold!
Со временем, патчи стали неотъемлемой частью «прошаренного» сообщества Siemens, которое в основном тусовалось на форуме siemens-club. Десятки людей активно ковыряли различные версии прошивок под разные девайсы, добавляя новый функционал или меняли визуальную составляющую устройства: какие-то патчи просто «перекрашивали» индикаторы, или, например, меняли шрифт устройства, другие отключали надоедливую кнопку выхода в интернет (которая сжирала огромные денюжки для среднестатистического школяра или студента тех лет), добавляли возможность альтернативного управления, переназначая вечно ломучий джойстик C65 на кнопки клавиатуры, а то и добавляли довольно точную A-GPS навигацию по карте вышек оператора (!) и поддержку нескольких (!!) E-Sim (!!!) в 2004-2005 году!
Пожалуй, многие читатели отнесутся со скепсисом к E-Sim в 2005 году. Но такая возможность была, хоть и не совсем в современном и удобном виде.
Дело в том, что у каждой SIM-карты, помимо публично доступного для телефона идентификатора IMSI, существует ещё идентификатор Ki, который возможно расшифровать только используя алгоритмы БС оператора. Однако в те годы, алгоритмы криптографии в «симках» были проще и с помощью специального софта была возможность «сбрутить» (взломать методом перебора) Ki за несколько часов.
Патч, предположительно, работал довольно просто: он подменял Ki и IMSI на те, которые уже были предварительно посчитаны и заставлял baseband часть прошивки заново искать сеть. По итогу мы работали уже с другой SIM-картой :)
Не стоит забывать о различных патчах, связанных с Java-машиной: были ускорители Java-приложений, расширители хипа и тому подобное, позволяющие играть в Java-игры с большим комфортом.
Высшей точкой развития моддинг-сцены на телефонах Siemens стало появление эльфлоадера и эльфпака — возможности запуска нативных программ, написанных на C с полноценной многозадачностью и возможность переключаться между несколькими приложениями! Фактически, это превращало простой мультимедийный телефон в смартфон, который мог выполнять довольно широкий круг задач! Чего уж говорить, одними из самых популярных эльфов были клиенты электронной почты, аськи, плееры с поддержкой mp3 (они, кстати, с дикими хаками — поскольку PCM-часть сименсов толком не отреверсили, эльф просто налету конвертировал mp3 в wav (т. е. тот же PCM) и скармливал в родной плеер :)). Такая свобода действий позволяла, например, портировать на телефон эмулятор NES или SEGA и играть в них на долгих и скучных парах. Для владельцев обычных кнопочников (но не смартфонов на WM2003 for Smartphones) это было шиком и роскошью.
Стоит упомянуть также проект моего друга, с которым мы довольно давно знакомы — @Azq2, который вообще умудрился портировать на него Linux, причём полноценный, а не ucLinux (который не требует MMU и в целом попроще своего десктопного аналога).
Со временем подтянулись и фанаты других производителей мобильных телефонов — Motorola и Sony Ericsson. Сначала появились «моторы» — на мотофане с большим трудом смогли справиться с RSA-подписью и шифрованием прошивок (об этом может подробнее рассказать один из активных админов мотофана — @EXL. По его словам, не обошлось без утечек дебаг-инфы прошивки), но всё же нашли тестпоинт, изучили утекшую информацию и написали свой эльфлоадер, который работает на E398, E1, Razr V3/V3i и некоторых других аппаратах. Сонерики подтянулись позже всех, а вот на Nokia S40 почему-то никто особо и не пытался ничего сделать. Возможно дело в RPL-сертификатах и жёсткой политике Nokia относительно модов, а может в том, что моддерам хватало Symbian — ведь кастомные прошивки выходят даже сейчас!
Недавно мне подарили сразу двух красавцев в очень хорошем состоянии — Siemens C65 от известного блогера Maddy MURK и Siemens C75 от моего читателя из Краснодара. А ещё мой читатель @kostett, задарил CX75 в идеальном состоянии, S75 под реставрацию и S68, за что вам всем огромное спасибо!
И C65 и C75 имели определенные аппаратные проблемы — оба девайса не включались и не подавали никаких признаков жизни. Ну что ж, берём в зубы сервис-мануал, схему и идём диагностировать наших красавцев, плавно переходя в практическую часть нашей статьи!
❯ Диагностика
Начнём мы с вами с C75. Визуально девайс был в очень хорошем состоянии, если бы не бич 75-ой серии — крайне хрупкие корпуса. Крепления фронтальных панелек рассыпались прямо на глазах, так что на этапе фотографирования пришлось немного, эээ, выкручиваться :) К сожалению, к моменту написания статьи я так и не нашёл новый (пусть и китайский) корпус на C75 по нормальной цене, зато нашел на S-ки!
Итак, при установке аккумулятора, девайс не реагируетy ни на кнопку включения, ни на зарядное устройство. В первую очередь, нам нужно определить характер неисправности: исправны ли контроллер питания, процессор и флэш-память.
Очевидно что одно без другого работать не может, однако здесь важна поступательность действий: если за кнопку включения и формирование напряжений для остальных модулей отвечает КП, то и начинать нужно с него. Смотрим, присутствует ли на кнопке включения напряжение, близкое к вольтажу часов реального времени (~2.8В).
В нашем случае, питальники были на месте и при замыкании KB_ON_OFF на землю, КП кратковременно поднимал напряжения на процессоре и затем обратно отключался. Смотрим внимательно сервис-мануал и находим Power On Sequence. После старта контроллера питания, процессор должен вычитать из флэш-памяти стартовый код прошивки, проинициализировать ОЗУ и после этого регулярно отправлять «пинг» контроллеру питания, сигнализируя о том, что телефон работает. Если связь с флэш-памятью, ОЗУ или КП утеряна, то модуль WatchDog в КП просто выключит устройство.
Цитата из схемы на A60 на платформе E-Gold, но ASIC'и концептуально очень похожи.
Кроме того, процессор тактируется от 26МГц кварца, идущего с SDR-передатчика. Если он пострадал в следствии воды или падения — телефон также не включится. Проверить наличие старта процессора можно с помощью x65PapuaUtils. Если девайс хотя бы как-то отвечает на нажатие красной кнопки и что-то показывает в логе «папуаса» — значит передатчик, скорее всего, жив. Но для этого, конечно же, нужен дата-кабель.
Самое время глянуть, что у нас под металлическими экранами! Вскрываем их и видим… вот это:
Явные следы попадания влаги, процессор был весь ужарен и во флюсе… кто-то ещё в нулевых пытался его ремонтировать. Берём в зубы строительный фен и сдуваем процессор:
Процессор снялся за 10-15 секунд без нижнего подогрева, что говорит нам о том, что прошлый мастер пытался посадить процессор «на пузо» (т. е. не нанося новые шары припоя) и у него явно не получилось. После этого на девайс забили и отложили в долгий ящик… чтобы спустя 18 лет он попал ко мне! Специально для ремонта этого «симака» я нашёл и купил новый BGA-трафарет, отреболил процессор и поставил обратно:
Помимо перекатки процессора, поскольку девайс «купался», помимо поврежденных шаров процессора помер и фильтр на USB, отвечающий за дата-кабель. Его можно заменить на перемычки, но для этого нужен адекватный микроскоп, которого у меня пока нет. Я пробовал махнуть с 65 серии — не работает.
Тот самый крошечный фильтр на примере C65. Находится в BGA-корпусе, его легко посадить «на пузо».
Подсобрал девайс и… Он включился! Правда, работал только под небольшим изгибом — присмотревшись, я обнаружил следы флюса около флэш-памяти производства Intel, которую тоже сажали на пузо, да ещё и криво. После прогрева, девайс поработал какое-то время и через пару дней отвалился — как раз к моменту подготовки статьи, а у меня как назло не было нужного универсального трафарета :( Поэтому C75 выбывает из сегодняшней статьи, окруженным, но не сломленным :) Трафареты заказаны — ждём, оживляем и я сделаю отдельный пост о его судьбе.
Давайте перейдем ко второму красавцу — Siemens C65. Как я уже говорил ранее, его мне подарил известный блогер Maddy MURK, у которого частенько выходят обзорные ламповые видео о ретро-мобилках. Заслал он мне сразу несколько девайсов под восстановление, одним из которых и был этот C65!
Изначально, у девайса был битый дисплей — это не проблема, у меня такие есть :) Очевидно, что это следствие падения и как это часто бывало на 65'ых/75'ых, заменой дисплея всё не закончилось. Всё дело в том, что в те годы отвал процов и диалогов был типовой болячкой на телефонах Siemens. После перехода на более низкий техпроцесс производства плат (шары уменьшились в размерах, а следовательно и сами контактные площадки), пятачки стали хрупкими и в лучшем случае дело заканчивалось отвалом с необходимостью прогрева или перекатки. А в худшем — пятаки под процессором срывало и приходилось их восстанавливать, тянув перемычки!
К сожалению, конструктивно некоторые Сименсы были не очень продуманы: блок клавиатуры был внешним и пружинился к коннектору на плате, создавая при каждом нажатии нагрузку на плату. Добавить к этому то, что иногда телефоны закручивались фиг пойми какими винтами (после мастерских и т. д.), перекашивая плату, и результат был печальным — спустя пару лет активных нажатий на клавиатуру, девайс переставал включаться…
И причина этому проста — из-за того, что плата подвергается регулярным деформациям (хоть и несерьезным) — со временем может либо оборвать дороги, либо просто отвалиться процессор/флэш/ОЗУ с необходимостью дальнейшей перекатки. Именно поэтому живых CX65 осталось относительно немного.
Девайс определялся в «папуасе», но не мог зайти в сервисный режим из-за ошибки связи с ОЗУ. Тут уже всё стало очевидно и я приготовил фен… ремонт оказался абсолютно таким же, как и в случае с C75! Правда, если вы хотите попробовать оживить свой симак и перекатывать BGA не умеете, то можете просто погреть и покачать процессор с хорошим флюсом, есть шанс, что девайс оживет и ещё порадует вас или, по крайней-мере, позволит скинуть фото на другое устройство.
Обратите внимание на выделенную надпись. Boot not loaded как раз означает то, что телефон ответил на нажатие буткея, но девайс не смог полностью проинициализировать загрузчик.
Дисплей я взял в одном из сименсов, которые купил по 70 рублей «на запчасти».
Включаем девайс и тут тоже всё работает :)
Девайс определяется в папуасе и полностью проходит тест дисплея, кнопок и звука, что означает его полную работоспособность!
Подытоживая аппаратный ремонт, рассказываю о некоторых типовых болячках телефонов Siemens:
Телефон едва слышимо пикает при попытке включения: это называется пикофф (отключение телефона с вылетевшим исключением) из-за переполнения раздела с пользовательскими данными. Увы и ах, но его придётся форматировать (хотя перед этим можно посчитать ключи и снять дамп, а потом попытаться поискать фотки в условном binwalk'е). Решается очень легко при наличии дата-кабеля: подключаем телефон к ПК с Windows XP (подойдет и виртуалка), заходим в «папуас», жмём «Service Mode» и кратковременно нажимаем красную кнопку. После того, как девайс зашёл в сервис-мод, форматируем User-раздел в соотвествующей вкладке. Всё, девайс загрузится как новый!
Телефон не стартует, VRTC нет, питаний на тест-поинтах вообще никаких нет: начните с осмотра Dialog, на месте ли обвязка, не калится ли он, приходит ли на него VBat, какое потребление при нажатии на кнопку питания и есть ли реакция на подключение ЗУ. При необходимости перекатать или заменить. Аккумулятор тоже стоит проверить.
Телефон не стартует, но определяется в папуасе: проверьте процессор. При необходимости перекатайте и, если умеете, восстановите пятаки. Вполне возможно, что девайс когда-то прошивали и окирпичили — прошейте последнюю доступную сервисную прошивку (через Winswup). В крайнем случае можно посчитать буткей и залить фуллфлэш с чужого девайса.
Телефон не стартует, напряжения есть и никак не определяется: вполне может быть что и фильтр USB-поврежден, из-за чего папуас не видит телефон. Опять же, катаем проц, если не помогло — то ОЗУ и КП. Стоит глянуть на наличие 26МГц кварца с передатчика.
Телефон пикает и отключается в процессе работы: если есть дата-кабель, то x65PapuaUtils покажет причину пикоффа и ExitString, что поможет понять из-за чего ошибка. Но в основном это следствие кривой прошивки: шьем последнюю официальную и наслаждаемся!
❯ Прошиваем и патчим
Давайте сначала я просвещу вас в терминологию в мире моддинга сименсов:
Патч — хак оригинальной прошивки, который прошивается в флэш-память по определенному адресу. Обычно патчи подменяют графику, реакцию системы на какие либо события (например поиск сети или пропуск проверки SIM-карты) или добавляют новые функции.
Эльфлоадер — загрузчик нативных ELF-программ.
XTask — диспетчер задач, позволяющий переключаться между программами.
Эльфпак — сборка из эльфлоадера и необходимых патчей для его работы.
SWILIB, библиотека функций — Специальная таблица функций, предназначенная для того, чтобы эльфы и патчи могли работать на разных версиях прошивок.
Пришло время пропатчить наши сименсы и посмотреть, на что они способны теперь! Я собрал все необходимые файлы, в том числе папуас, флэшер и патчер, а также прошивки для C65 и SL65 и необходимые патчи в один архив, дабы вам не пришлось ничего искать самим! К сожалению, к моменту подготовки статьи, я так и не смог найти фильтр на C75, да ещё и флэша отвалилась :( Поэтому моддить мы будем только C65 и S75! И в этом нам снова поможет x65PapuaUtils. Для применения патчей нам необходимо разблокировать загрузчик путем расчёта Boot-ключе, которые генерируются на основе связки ESN + Hash. Для устройств 65 серии с низкой версией прошивки, x65PapuaUtils может сам всё сделать одной кнопкой, но для устройств 75 серии придется устанавливать отдельный мидлет и смотреть бут-ключи там.
Мидлет, позволяющий узнать ESN, эксплуатировал интересную уязвимость Java-машины, связанную с реализацией deflate. Благодаря тому, что разработчики оставили ошибку с переполнением, мидлет выходил за границы указателя и инжектил собственный шеллкод, который позволял читать и писать всё адресное пространство устройства :)
После разлочки загрузчика, сгенерируйте VKD-файл в папуасе и ставьте софт одного из самых крутых дядек в моддинг-сцене сименсов: V_KLay от ValeraVi! Это довольно крутая программа, которая оперирует собственным «языком» патчей: каждый патч предполагает указатель на адрес в флэш-памяти, старое значение (для валидации) и новое. По итогу, каждый патч — это просто текстовый файл, в том числе и эльфлоадер!
Пример патча. ValeraVi даже какое-то подобие препроцессора сделал с #if'ами — что вообще улёт :)
Но ставить патчи пока рано, на C65 в чистом виде не было нормального эльфпака, хотя патчей было достаточно. Обычно его перепрошивали в SL65, где была более шустрая Java-машина (вроде даже с поддержкой M3G) и возможность снимать видео! В остальном, девайс был почти аналогичен C65. Сначала телефон нужно «переименовать» в SL65 с помощью утилиты x65Flasher, а затем прошить WinSwup'ом с отключенными галочками проверок.
Девайс откажется стартовать, вылетая с пикоффом (при этом телефон будет жаловаться на Invalid HW). Для обхода этого ограничения, нам необходимо поставить специальный патч на обход проверки железа телефона и адаптации C65 к SL65. Делается это просто: загружаем патч по отдельности, выбираем C65 (Password boot) и подключаем выключенный телефон к ПК. Когда программа начнет искать телефон — кратковременно нажимаем красную кнопочку и программа начнет патчить девайс!
Делать дамп флэши необязательно, достаточно просто нажать пробел (дамп затянется на час-полтора).
После применения патчей, девайс стартует и работает как будто это SL65! Давайте же теперь присмотрим себе прикольные плюшки в базе патчей и накатим что-нить интересное. Например, я поставил «ускоритель Java», «замена значков на C75», «открыть все диски» и «работа без SIM-карты».
Увы, я несколько ночей бился с эльфпаком и заставить работать у меня его не вышло: на C65 эльфпак слишком старый и удален из базы патчей, а на SL65 он банально нерабочий — в комментариях тоже были жалобы на то, что программы банально не работают :(
Накатили эльфпак? Отлично, теперь наш телефон пропатчен, посмотрим как это работало в случае C65, а заодно узнаем, какую информацию он хранит в себе уже почти 20 лет!
❯ Знакомимся с девайсом поближе
Друзья! Эту часть статьи я решил оформить в виде серии относительно небольших видосов, дабы вы могли лучше прочувствовать дух того времени. Для занятых читателей, или просто тех, кто не хочет смотреть видео, я хотел сделать отдельный подраздел, где были бы только скриншоты - но увы, ограничение Pikabu на 25 медиа-элементов в одном посте дают о себе знать :(
Включив девайс, нас встречает такой знакомый звук щелчка включения света и пацаненок в очках на фоне! После установки патча на работу без SIM, девайс сразу грузится в систему и работает стабильно, без каких либо проблем.
Эффекты от патчей есть сразу. Разблокируются два скрытых диска с кэшем системы и конфигами, что позволяет чистить их без форматирования устройства, немного меняется верхний статусбар, а Java-машина и StackAttack в ней работают заметно шустрее!
Но самая главная кладезь информации в «симаках» — это, конечно же, раздел файлов! Телефоном пользовалась маленькая девочка лет десяти и здесь, спустя практически 20 лет, сохранилась часть её жизни! На телефоне остались фотографии родственников, а также мультимедийные файлы, которыми она обменивалась со своими друзьями и возможно одноклассниками! На девайсе есть просто куча различных картиночек и гифок, популярные в рунете тех лет. Котики, гифки с девушками, машины — всё, чем делились пацаны класса попадало сюда! Не менее важной была и фонотека каждого телефона! Некоторые MIDI-мелодии на большинстве девайсов и сейчас можно встретить!
Что особенно забавно, девочка, видимо, очень хотела себе Sony Ericsson, так что на телефоне есть заставка с лого «сонерика» и фирменным рингтоном! А может, это отголоски тех лет, когда сонерики считались самыми крутыми и некоторые пытались стилизовать под них свои телефоны? Ведь в начале 2010-х такой тренд тоже был, но с кастомными прошивками в стиле iOS для Android смартфонов!
Осторожно, на фото ниже ламповые бобины, а из-за названия файла начинает играть миди в голове! Кто тут не узнает evropa.mid? На телефоне были самые разные треки, начиная с midi-версий ранних треков Eminem, заканчивая гимном СССР и, конечно же, саундтреками фильмов «Бумер» и сериала «Бригада»!
Но вы ведь, вероятно, ждёте эльфов, дабы узнать что они могли привносить новенького в телефон?
❯ А эльфы? Эльфы где!?
Ну как я мог написать статью про Siemens'ы без эльфов! Как я уже говорил выше, на C65 (который стал SL65) эльфлоадер поставить мне не удалось. Однако, на более популярные модели Siemens, эльфлоадер легко установить и он работает без проблем, разве что перед этим придется прошиться на самую свежую прошивку для вашего девайса!
Изучать эльфы мы будем с вами на примере Siemens S75, который подарил мне читатель! На телефон были установлены патчи для работы без SIM, библиотека функций а также эльфпак. Но для работы эльфов, необходимо закинуть на нулевой диск (т. е. в память) папку ZBin с некоторыми полезными программами типа того же XTask'а. Если у вас нет подходящей флэшки, то это можно сделать через Bluetooth, ИК-порт или дата-кабелем с помощью Mobile Phone Manager (осторожно, он забагованный до жути!).
Ну, а на видео ниже предлагаю вам ознакомиться с тем, что же привносили эльфы в мир телефонов Siemens!
❯ Заключение
И вот, казалось бы, мобильные телефоны Siemens серьёзно сдали позиции в 2004 году и совсем погибли после покупки компанией Benq. Но какая же ирония случилась ближе к концу 2000 годов, когда Nokia на платформе S40 начала использовать… чипсеты Infineon X-Gold, те самые продолжатели сименсовких S-Gold'ов! До этого Nokia использовала собственный процессор UPP (вроде бы, разработанный в сотрудничестве с STMicroelectronics). Помимо Nokia, X-Gold использовали Apple и некоторые другие производители (LG), а старую платформу E-Gold можно было встретить в некоторых бюджетных телефона, по типу Мегафон Минифон. То есть в весьма своеобразной форме, учитывая родственные связи Infineon и Siemens, «сименсы» как бы вернулись обратно на рынок телефонов, только уже в качестве «сердца» телефонов других брендов!
Вот такой была моддинг-сцена эльфов в нулевых годах! Лёгким движением руки, сименсы превращались из обычных кнопочников в почти аналоги современных смартфонов!
Казалось бы, прошло практически 20 лет, многие форумы упомянутые в первом разделе статьи уже не существуют, а тот же мотофан стал прибежищем коллекционеров и немногих владельцев «моторов» в наше время. Но как бы не так! Спустя много лет, интерес к кнопочникам снова пробудился у многих участников сообщества того же сименс клаба. Мы чудом обнаруживаем, что база патчей для Siemens, которую ведет Илья kibab всё ещё работает, EXL с мотофана продолжает портировать всякие ништяки на моторы, Azq2 всё ещё пилит эльфы, патчи, а также полноценный аппаратный эмулятор процессора SGold, который способен запустить родную прошивку! У любителей моддинга мобилок из нулевых есть собственный TG-канал siepatch, где обсуждают моддинг под симаки, моторы — всё подряд! Но чатик формально приватный и по инвайтам. Если действительно хотите попасть туда — пишите мне в тг @monobogdan, скину инвайт.
P. S.: Друзья! Время от времени я пишу пост о поиске различных китайских девайсов (подделок, реплик, закосов на айфоны, самсунги, сони, HTC и т. п.) для будущих статей. Однако очень часто читатели пишут «где ж ты был месяц назад, мешок таких выбросил!», поэтому я решил в заключение каждой статьи вставлять объявление о поиске девайсов для контента. Есть желание что-то выкинуть или отправить в чермет? Даже нерабочую «невключайку» или полурабочую? А может, у этих девайсов есть шанс на более интересное существование! Смотрите в соответствующем посте, что я делаю с китайскими подделками на айфоны, самсунги, макбуки и айпады! Да и чего уж там говорить: эта статья уже сама по себе весьма наглядный пример! Найти меня можно в комментариях тут, на Пикабу, и в тг @monobogdan
Понравилась статья и хотите поддержать меня, дабы новые статьи выходили чаще? Ниже есть формочка с донатами. Всем большое спасибо!
А вам как наши сегодняшние герои? Понравились? Если вдруг интересно, то у меня есть канал в Телеге, куда я публикую бэкстейдж со статей, всякие мысли и советы касательно ремонта и программирования под различные девайсы, а также вовремя публикую ссылки на свои новые статьи. 1-2 поста в день, никакого мусора!
Материал подготовлен при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, дабы не пропускать новые статьи каждую неделю!
Телефоны Nokia больше не существуют
Компания прекратила выпускать смартфоны и вся будущая продукция будет представлена под брендом HMD.