Сюрприз во льду wot blitz что это
Перейти к содержимому

Сюрприз во льду wot blitz что это

  • автор:

что такое сюрприз во льду в танках

Смотрите видео на тему «что такое сюрприз во льду в танках» в TikTok (тикток).

tplv-efzqqlc8t1-1:480:480.jpeg» alt=»Лайки: 381.Комментарии: 131.Видео в TikTok (тикток) от пользователя WoT_Tankist (@wot_tankos): «Сюрприз во льду#рекиии #вреки #р_е_к_о_м_и_н_д_а_ц_и_и #взрыв #боеукладка #сюрпризы #лед».Ребята что дает сюрприз во льду?оригинальный звук — WoT_Tankist.» />

16.6K

tplv-r00ih4996s-1:480:480.jpeg» alt=»Видео в TikTok (тикток) от пользователя колбаса вебкам (@antonkoncha): «#танксблиц#танки#мистики».Sequência da Dz7 — MC Menor Do Alvorada & TRASHXRL.» />

373

tplv-efzqqlc8t1-1:480:480.jpeg» alt=»Лайки: 644.2K.Комментарии: 3K.Видео в TikTok (тикток) от пользователя XRoNI_Blitz (@xroni_blitz): «#wotblitz #wot_blitz #wot_blitz_top #рекомендации #GoWinterGames #тренды #worldoftanks #blitz #танкоприколы #танки #вотблиц #танкисты #ивент».КОГДА ПЕРЕИГРАЛ В Wot Blitzоригинальный звук — XRoNI_Blitz.» />

23.3M

tplv-efzqqlc8t1-1:480:480.jpeg» alt=»Лайки: 134.8K.Комментарии: 3.1K.Видео в TikTok (тикток) от пользователя XRoNI_Blitz (@xroni_blitz): «#wotblitz #wot_blitz #wot_blitz_top #blitz #танкисты #танки #вотблиц #рекомендации #тренды #танкоприколы #тикток #ивент».НОВЫЙ ВЗВОД В РАЗРАБОТКЕоригинальный звук — _adilsnake_.» />

2.1M

tplv-f5insbecw7-1:480:480.jpeg» alt=»Лайки: 222.2K.Комментарии: 3.2K.Видео в TikTok (тикток) от пользователя Montall (@zhmyh25): «#танки#анимеубивает#xyzbca».Среднестатистический игрок с 20к боёв: | Все танкисты наверное очень грубые и мужественныеоригинальный звук — Montall.» />

1.5M

tplv-r00ih4996s-1:480:480.jpeg» alt=»Лайки: 21.8K.Комментарии: 160.Видео в TikTok (тикток) от пользователя Дракула��️�� (@drakulawotbb): «Смачно #бабахамусор #моментывотблиц #drakulawotb #шотныйсовок #wotblitz #вотблиц #приколвотблиц #дракулавотблиц #мемвотблиц #worldoftanksblitz #пуксреньк #бквотблиц #фугасвотблиц @MAMKINTANKIST @Kur0chka_sexi������ @BATINTANKIST @user44159010658 #фугасвотблиц #новыйгод #ягавотблитз #твпвотблиц #ис7».оригинальный звук — Дракула��️��.» />

376.2K

tplv-r00ih4996s-1:480:480.jpeg» alt=»Лайки: 5.5K.Комментарии: 430.Видео в TikTok (тикток) от пользователя Токсичный WOT BLITZ (@_t0ks1chniy_): «видели их в рандоме?) #blitz #tanksblitz #wotblitz #блиц #танки #ник».оригинальный звук — Токсичный WOT BLITZ.» />

67.1K

tplv-f5insbecw7-1:480:480.jpeg» alt=»Видео в TikTok (тикток) от пользователя IvanDoren (@ivan_doren07): «#Вотблиц,#Танкионлайн,#Танки,#Wotblitz,#Обзортанка,#Новоститанков,#ИвентБлиц,#Реплеи,#Блицлучшее,#Вотофтанкс,#Реплеивотблиц,#приколывотблиц,#Нарезки,#Контейнерывотблиц,#Голдаблиц,#Новаяветка,#Ивент,#Режим,#Madgames,#Турнирыблиц,#Магазинвотблиц,#Снежныйшарблиц,#Бабаха,#Новостиблиц,#Стримблиц,#Ракиблиц,#Смешныемоменты,#Гравитациявотблиу,#вотблицвыживание,#Обновлениевотблиц,#Прикол,#Мастер,#игрыонлайн,#экшен,#D_W_S,#Блиц,#Blitz,#МирТанков,#Экшен,#Гайдывотблиц,#МоментыВотблиц,#РулеткаВотблиц #МирТанковБлиц,#WoTBlitz,#Блиц,#Танки,#Игры,#МобильныеИгры,#Многопользовательские,#Стратегия,#БитвыНаТанках,#ИгровоеВидео,#СоветыИТрюки,#ОбучающиеВидео,#Обновления,#КлановыеБои,#Конкурсы,#Киберспорт,#МобильныйКиберспорт,#ПрямыеЭфиры,#ОнлайнИгры,#БесплатноеИгровое,#wotblitzmobile,#вотблиц,#танковыйблиц,#лучшийтанковыйблиц,#стримыпотанкам,#wotblitzguide,#танковыебаталии,#вотблицонлайн,#блицматчи,#обзорыблиц,#wotblitzpro,#танкиблиц,#блицсоветы,#блицмоды,#блицстрим,#wotblitzclans,#блицприколы».Toma Toma — DJ DAVL.» />

Как получать танки из контейнеров. Проверяем теорию в действии ⁠ ⁠

что за бред? назовите хоть один смысл «обновлять» рандом в три часа ночи?

я сегодня тоже открыл

Предпросмотр

Хороший центр, я бы посетил⁠ ⁠

Хороший центр, я бы посетил Мобильная фотография, Семейная психология, Объявление

Когда спрашивают "сколько зарабатываешь". ⁠ ⁠

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

Знаете, как ушки у собачек при интересе поднимаются? Вот так и все гости отреагировали. Тишина настала. Пяток ментов родился )

Хотел ответить одной фразой, но уж больно хотелось преподать урок. План родился тут же. Итак, если вас спросили про заработок — можете смело рассказывать притчу.

Во время проповеди в католическом храме, к ящичку с пожертвованиями подошел мальчик. Выглядел он бедно. Взяв пару монет из ящичка, он вышел. Прихожане спросили: «Падре, а почему мальчик взял деньги, а вы ничего не сказали?» Священник ответил, что этот мальчик беден и голоден. А пару монет на хлеб, никак не обеднят храм.

После этих слов, стоявший у стены мальчик, подошел к ящичку, чтоб взять пару монет себе на пропитание. Священник схватил его за руку и сказал: «Не гоже воровать у храма». Зашептались прихожане, заволновались. Один, самый смелый, спросил: «Падре, но почему вы не дали мальчику взять монету на хлеб? Ведь это такой же бедный мальчик, как и тот!»

На что священник с улыбкой ответил: «Такой же — да не такой же. Лишь тот, кто лазит мне в трусы, имеет право лезть и в мой кошелек!«

Черновато, но работает безотказно

Ответ Nislas в «Единственный плюс от падения рубля»⁠ ⁠

Моя любимая тема, когда кто считает мои деньги. Решил заняться производством декоративной гипсовой плитки. Закупил формы, материал. Просмотрел кучу инфы в инете, неделю подбирал оптимальный для меня замес смеси, способ сушки изделия, колеровка красящих растворов, расчеты вложений и выхлопа, процент брака. Всё, вроде пришло в нормик, результат меня устраивает.

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

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

Самая мякотка в том, что при разговоре задают вопросы типа чем крепить на стену, чем красить? И так между прочем типа вот ты замешал раствор и залил в формы, через сколько можно вытаскивать? -20 минут говорю.

Реально видно как в голове у людей начинает работать калькулятор. Скрудж Макдак нервно курит.

Условно как выглядит мой бизнес со стороны: Метр стоит 500р, сохнет 20 минут, в час клепаем три метра. За 8 часов 24 метра= 12000/день, да ты охуел. Если напрячься и работать по 10 часов и без выходных 15000/день х 30дней= 450000. Пол ляма в месяц- да ты мега охуел такие цены лупить. Щас мы сами купим форму, гипс и сделаем сами дешевле и красивее.

Как это выглядит на самом деле: Метр стоит 500р. Минус 180р стоимость гипса с доставкой( литьевого белого гипса, а не дешевого алебастра). Минус 18р пластификатор. Минус 35р упаковка. Минус 17р амортизация форм, электричество, амортизация инструмента, разные расходники. Остается 250р. Тоже неплохо. вроде 225т.р в месяц.

Томить не буду. В час получается 1 метр. В день 8-10 метров. Сюда входит время замеса раствора, заливка, распалубка, укладка в сушилку, очистка форм для новой заливки, вытащить из сушилки и разложить в упаковку. 2-2,5 т.р/д. в месяц 50т.р Это если у ворот стоит очередь и сразу все разбирают. А так минус день езда по магазинам и рынкам, минус день привезти материал. Минус налоги. Минус месяца в которые не берут товар (подготовка к школе, праздники, начало и конец дачных сезонов) . Много всяких минусов. И да, тоже хочу побыть с семьей и поделать домашние дела, а не хренашить как станок на износ.

Короче 25-28т.р в месяц.

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

Реалистично⁠ ⁠

Реалистично

Правило для туристов⁠ ⁠

Правило для туристов Чистомэн, Мусор, Черное море, Картинка с текстом

Тафтинг Такой⁠ ⁠

Всем привет пикабутяне) Решила попробовать себя на новом поприще, интересно и неожиданно. Вот он такой получился первый) И пост и ковер)

Безотходное производство⁠ ⁠

Безотходное производство Скриншот, Мат, Переписка, Повтор

Колесо сансары⁠ ⁠

Колесо сансары Прогресс, Овцеводство, Гетеры, Комментарии на Пикабу, Длиннопост, Скриншот, Презервативы, Европа, Арабы, Римская империя

Тест: Какая ты сегодня Тюмень?⁠ ⁠

Тест: Какая ты сегодня Тюмень? Тюмень, Мемы, Мобильная фотография, Повтор, Зашакалено

Выбери лишнее⁠ ⁠

Привела ребенка 5 л на прием к психологу, там картинка стандартная, выбери лишнее.
Корова, собака, кот и медведь.
Кто лишний .
Конечно корова.
Психолог в ступоре. Я делаю указательные движения глазами на медведя.
психолог говорит , ну почему же коровка, давай подумаем ещё.
— А чего тут думать?
Кот мясо ест?
Ест.
Собака? Есть?
Ест.
И медведь ест!
А корова то травоядное!

Жизненно⁠ ⁠

Жизненно

В Москве ожидается зеркало заднего вида⁠ ⁠

В Москве ожидается зеркало заднего вида

Машка вернулась⁠ ⁠

Машка вернулась Скриншот, Подслушано, Кот

И для чего же нам осёл? (И как его зовут?)⁠ ⁠

"я не слышал" и скорая помощь⁠ ⁠

Диалог⁠ ⁠

Диалог Юмор, Скриншот, Twitter, Кофе, Размер, Пенис, Диалог

Ани Лорак, собиравшая деньги на ВСУ, выступит в Москве и Питере⁠ ⁠

Ани Лорак, собиравшая деньги на ВСУ, выступит в Москве и Питере Новости, Ани Лорак, Музыка, Политика

Также она станет членом жюри в новом сезоне музыкального проекта на российском ТВ.

Неоднократные публикации в СМИ о «гуманитарной деятельности» Ани Лорак, направленной то ли мирным беженцам, то ли на помощь ВСУ, никак не смогли нарушить ее планы. Певица собирается дать концерт в «Крокус Сити Холле». Readovka связалась с площадкой, на которой 27 сентября 2023 года должна выступить певица – там ответили, что отмены концерта пока не предвидится. Также, согласно афишам, певица собирается выступить и в Санкт-Петербурге 25 октября.

Мало того, она станет членом жюри нового сезона детского музыкального шоу «Ты супер!», где выступят талантливые дети, оставшиеся без родителей. Лорак будет участвовать там вместе с Игорем Крутым, Алексеем Воробьевым и Люсей Чеботиной.

Ранее Readovka писала, что украинские СМИ подтвердили, что Ани Лорак спонсирует ВСУ.

Фото: Яндекс.Картинки

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля⁠ ⁠

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

К огромному сожалению, старые смартфоны всё чаще и чаще находят своё пристанище в мусорном баке. К прошлым, надежным «друзьям» действует исключительно потребительское отношение — чуть устарел и сразу выкинули, словно это ненужный мусор. И ведь люди даже не хотят попытаться придумать какое-либо применение гаджетам прошлых лет! Отчасти, это вина корпораций — Google намеренно тормозит и добивает довольно шустрые девайсы. Отчасти — вина программистов, которые преследуют исключительно бизнес-задачи и не думают об оптимизации приложений совсем. В один день я почувствовал себя Тайлером Дёрденом от мира IT и решил бросить вызов проприетарщине: написать свою прошивку для уже существующего смартфона с нуля. А дабы задачка была ещё интереснее, я выбрал очень распространенную и дешевую модель из 2012 года — Fly IQ245 (цена на барахолках — 200-300 рублей). Кроме того, у этого телефона есть сразу несколько внешних шин, к которым можно подключить компьютер или микроконтроллер, что даёт возможность использовать его в качестве ультрадешевого одноплатника для DIY-проектов. Получилось ли у меня реализовать свои хотелки? Читайте в статье!

Мотивация

Честно сказать, идея попытаться реализовать свою прошивку мне пришла ещё давно. Однако, дабы не завлекать опытного читателя кликбейтом, я сразу поясню, в чём заключается «прошивка с нуля»:

Мы всё ещё используем Linux: в качестве ядра мы продолжаем использовать образ Linux, предоставленный нам производителем. Написание прошивки полностью с нуля заняло бы очень много времени (особенно без схемы на устройство). Однако, мы вообще не загружаем Android никаким образом.

Мы не используем библиотеки AOSP: наша прошивка без необходимости не использует никаких библиотек уже имеющегося образа Android. Вся работа с железом происходит с помощью низкоуровневого API Linux. Это значит, что отрисовка графики, звук, управление ресурсами и питанием ложится полностью на нас.

Прошивка может запускать только нативные программы: да, это тоже камень в сторону Android. Изначально, наша прошивка умеет запускать только нативные программы, написанные на C. Причём она экспортирует собственное C API — дабы приложения могли использовать всю мощь нашего смартфона в виде простого и понятного набора методов.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Проектов по выкидыванию Android из, собственно, Android-смартфонов как минимум несколько: UBPorts — бывший Ubuntu Touch, FireFox OS и его наследник Kai OS и конечно же, postmarketOS. Отчасти можно сюда отнести и Sailfish OS — но там образы имеются в основном на смартфоны от Sony. Все эти проекты объединяет сложность портирования и невозможность их завести на устройствах без исходного кода ядра. Даже если у вас есть исходный код ядра, но, например, устройство использует ядро 2.6 — навряд-ли вы сможете завести современный дистрибутив на нём.

Другой вопрос в том, что можно использовать полу-baremetal подход, когда от Linux берется практически минимальный функционал. Всё, что мы имеем — busybox, libc и низкоуровневый доступ к железу, благодаря API самого ядра. Как под это всё программировать — я рассказывал впрошлойстатье. Этот же подход мы будем использовать и сейчас — как иллюстрация реального применения подобного способа.

Итак, что наша прошивка должна уметь:

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

Уметь звонить и работать с модемом: общение с модемом происходит посредством AT-команд — общепринятого в индустрии стандарта. Однако в случае нашего устройства, есть м-а-а-а-ленький нюанс, о котором я расскажу позже.

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

Обрабатывать ввод: обработка тачскрина и жестов — это задача подсистемы ввода.

Реализовывать анимированный UI: здесь всё очевидно, наша прошивка должна иметь готовые элементы пользовательского интерфейса для будущих приложений: кнопки, текстовые поля и т. д. О деталях реализации этой подсистемы, я расскажу ниже (а реализовал я её очень необычно для такой системы).

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

Аппаратная часть

В качестве смартфона для нашего проекта, я выбрал популярную бюджетную модель из 2012 года — Fly IQ245 Wizard. Это простенький китайский смартфон, который работал на базе популярного в прошлом 2G-чипсета: MediaTek MT6573, да и стоил около 2х тысяч рублей новым. Однако вот в чём суть: мне удалось заставить работать «медиатековский» модем и даже позвонить с него на свой основной телефон, но… только ввод и вывод данных из звукового тракта модема происходит через звуковую подсистему Android — к которой доступа у нас нет!

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Именно поэтому, мы идём на очень хитрый и занимательный костыль: мы распаяем внешний модем сами! В качестве радиомодуля у нас выступит модуль SIM800 от компании SIMCOM. И даже он очень близок к нашему смартфону в аппаратном плане: ведь в основе этого модуля лежит популярнейший чипсет из кнопочников тех лет: MediaTek MT6261D. Преимущество SIM800 в его цене — он стоит пару сотен рублей, так что по карману выбор модема не влияет.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

На весу паять крайне неудобно. В финальном варианте перепаяю нормально.

Но как его подключать? SIM800 общается с другими устройствами посредством протокола UART — универсальный асинхронный приемо-передатчик. И вот тут мы включаем смекалочку. Разбираем устройство и видим то, что я пытаюсь долгое время донести до моих читателей — аж два канала UART: один практически посередине, второй справа. Нам нужны пятачки TXD4 и RXD4:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Обычно на этот канал UART летят логи ядра, которые можно без проблем отключить минорной правкой U-Boot в HEX-редакторе. Впрочем, модем никак не реагирует на «мусор» из консоли и просто отвечает ошибками — хватит лишь очистить буфер сообщений для того, чтобы все работало нормально. Подпаиваемся к UART’у с помощью преобразователя — у меня оным выступает ESP32 с выпаянным чипом.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Увидели логи? Замечательно, пора попытаться что-то отправить на ПК и с ПК. UART работают без тактовых сигналов и зависит исключительно от старт/стоп битов и бодрейта, который на устройствах MediaTek равен 921600. TXD4 и RXD4 обнаруживаются в системе на консоли/dev/ttyMT3. Пробуем что-то отправить: всё работает!

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Вот теперь-то можно подключить наш внешний модем и попытаться пообщаться с ним, отправив тестовую командуAT. Модем отвечаетOK! На этот раз я работаю с смартфоном из режимаFactory mode— практически тоже самое, что и режим recovery, но позволяющий, например, получить доступ к камере устройства. Простая и понятная схема, поясняющая что и куда подключать:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

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

Заставляем смартфон запускать нашу прошивку

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

3-4 секунды с холодного старта. Очень даже ничего.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Я взял уже готовый образ TWRP для своего смартфона и пропатчил его, дабы сам рекавери не мешал своим интерфейсом. Для этого я распаковал образ recovery.img с помощью MtkImgTools и убрал в init.rc запуск службы /sbin/recovery. После этого, я залил прошивку обратно на устройство и получил подобную свободу действий — консоль через USB и чистый холст в виде смартфона! Старые смартфоны на чипсетах MediaTek шьются через USB только после замыкания тест-поинта — на моем аппарате его местонахождение очевидно. Замыкаем контакты между собой, подключаем смартфон без АКБ к ПК и ждем прошивки:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Теперь можно деплоить программы! Важный нюанс: в отличии от Makefile из прошлой статьи, для Android 2.3 параметр -fPIE нужно убрать — иначе динамический линкер (/sbin/linker) будет вылетать в segmentation fault.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

❯ Графическая подсистема

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

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

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

В случае с этим устройством (и большинством старых устройств), формат пикселя оказался RGB565 — т. е. 5 бит красный, 6 бит синий, 5 бит зеленый. Конвертация форматов пикселей всегда была занозой в заднице для программных рендереров, поскольку занимает дополнительное время, которое обратно зависимо от размера дисплея. Изначально я решил выделить буфер в том же формате, что и фреймбуфер, но затем решил сделать классический и самый портативный формат — RGB888 (24х-битный цвет), а при копировании кадра на экран, на лету делать преобразования цвета:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Очень важный нюанс, который я не упомянул в предыдущей статье: на устройствах прошлых лет для обновления фреймбуфера необходимо послать структуру var_screeninfo, где хотя бы что-то изменено, иначе никаких изменений мы не увидим. Этот же костыль используется в родном recovery для отрисовки, а судя по исходникам драйвера fb, «правильный» способ обновить экран — послать драйверу ioctl (который я пока что не пробовал).

После того, как я смог управлять дисплеем, я решил загрузить и отобразить какую-нибудь картинку. Пусть это будут обои для нашей прошивки:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Загрузчик TGA сильно не поменялся: я таскаю его в неизменном виде из проекта в проект. Он поддерживает любые форматы пикселя, кроме палитровых, но я его искусственн ограничиваю на RGB888 и RGBA8888 — для поддержки обычных картинок и картинок с альфа-каналом. После этого, я написал не очень шустрые, но достаточно универсальные методы для отрисовки картинок. Для больших участков кода, я буду использовать pastebin, поскольку на Пикабу до сих пор не добавили ни подсветки синтаксиса, не нормальный перенос форматирования табов 🙁

PutPixel желательно заинлайнить в будущем. В целом, сама отрисовка работает достаточно быстро, но поскольку рендеринг выполняется на ЦПУ — рано или поздно мы упремся в количество картинок на экране. Есть некоторые оптимизации: например, непрозрачные картинки можно просто коприовать сканлайнами прямо в задний буфер.

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

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

1 байт говорит нам о размере шрифта и далее идут 255 изображений символов. Да, это не очень эффективно т.к попадают пустые символы из ASCII-таблицы, но в будущем это можно поправить.

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

Теперь у нас есть отображение картинок и текста! Что с этим можно сделать?

❯ Обработка ввода

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Пока что здесь не хватает обработки «хардварных» кнопок — домой, меню, назад и т. п. Однако в будущем это всё можно реализовать!

❯ Анимация

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

Аниматор напоминает оный из ранних версий Android: он имеет фиксированный набор свойств, которые умеет интерполировать в промежутках определенного времени. Если простыми словами: то он оперирует линейными отрезками времени a и b, в промежутке которых мы имеем значение «прогресса» — которое даёт нам результат от 0.0f (начало анимации) до 1.0f (конец анимации). Пока время тикает до необходимого интервала (duration), аниматор интерполирует заранее назначенные ему поля до нужных значений.

Именно так и получается плавность! Похожим образом реализованы анимационные системы во многих играх и мобильных ОС, только там они гораздо более комплексны: есть сериализация/десериализация из файлов, поддержка кейфреймов (несколько последовательных состояний на одном промежутке времени), поддержка кастомных свойств и т. п.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

❯ Модем

Как я уже говорил раннее, работа с модемом происходит посредством AT-команд. Лучше всего обрабатывать ввод-вывод модема из отдельного потока, поскольку он может отвечать довольно медленно и тормозить UI-поток основной программы, вызывая лаги. В SIM800 уже реализован весь GSM-стек, в том числе декодирование и вывод звука через встроенный усилитель с фильтром — остается только подключить динамики и микрофон от нашего телефона. Пока что я подсобрал аудиотракт на том, что было под рукой — микрофон от нерабочего смартфона и динамик от планшета, но для проверки этого хватает:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Важный нюанс: по умолчанию, tty-устройства в Linux работают по терминальному принципу — т. е. дробят транзакции по символу окончания строки (\n), имеют ограниченный буфер и т. д. Для нормальной работы в условиях модема — когда фактически длина ответа неизвестна, а в сам ответ могут «вклиниваться» Unsolicited-команды (своеобразные флаги о состоянии от модема, которые могут прийти в произвольное время — т. е. при входящем звонке, модем начнёт флудить RING в терминал), необходимо иметь возможность точно прочитать весь буфер до конца и парсить данные «по месту». Для этого используется raw-режим терминала:

(BRKINT | ICRNL | INPCK | ISTRIP | IXON);

tio.c_oflag &=

(OPOST);

tio.c_cflag |= (CS8);

tio.c_lflag &=

(ECHO | ICANON | IEXTEN | ISIG);

tcsetattr(modemFd, TCSAFLUSH, &tio);

После чего можно запросить состояние модема:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

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

Пытаемся позвонить с помощью метода Dial и видим, что всё работает! Это очень круто! А теперь, конечно же, самое время переходить к реализации того, чего вы ждали — пользовательского интерфейса!

❯ Главный экран

К выбору концепции для интерфейса, я поступил максимально просто — «слизал» дизайн первых версий iOS. Как по мне, это одни из самых красивых версий iOS вообще — все эти приятные градиенты и переливания. Конечно, я не так крут, как инженеры Apple, да и мощного UI-фреймворка у меня пока что нет, поэтому я приступил к реализации с «минимальным» функционалом.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Начал я с разделения главного экрана на модули и продумывания архитектуры основного «лаунчера». У нас есть статусбар, который рисуется поверх всех приложений, полка с приложениями — AppDrawer и сами экраны приложений, унаследованные от суперкласса CScreen.

На данный момент, отрисовка достаточно примитивная: сначала рисуются фоновые обои, затем, если нет никаких активных экранов — AppDrawer и в самом конце рисуется статусбар и всевозможные оверлеи.

Практически сразу я решил обкатать анимационную «систему» и добавить первые анимашки — выезжающий статусбар и анимация а-ля айфон:

animator = new CAnimator();

animator->SetTranslation(0, -imFiller->Height, 0, 0);

animator->Run();

Выглядит симпатичненько. Если я смогу поднять хардварный GLES, то это получится сделать в разы плавнее и шустрее — не хуже айфонов тех лет! Реализация самого статусбара примитивненькая, но вполне рабочая:

gLauncher->Graphics->DrawImage(imFiller, animator->X, animator->Y);

gLauncher->Graphics->DrawImage(imBattery[(int)gLauncher->PowerManager->GetBatteryLevel()], imFiller->Width — imBattery[0]->Width — 5, animator->Y + 5);

char timeFmt[64];

time_t _time = time(0);

tm* _localTime = localtime(&_time);

strftime((char*)&timeFmt,

sizeof(timeFmt), «%R», _localTime);

gLauncher->Graphics->DrawString(gLauncher->Font, (char*)&timeFmt, 0, 0);

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

Обратите внимание на удобство примененного подхода Immediate GUI. Нам понадобился новый элемент интерфейса, который описывает кнопку номеронабирателя? Мы просто реализовываем ещё один метод, который берет за основу стандартную кнопку и дорисовывает к ней текст. Всё крайне просто и понятно, хотя на данный момент слишком захардкожено. 🙂

❯ Звоним!

Пришло время совершить первый звонок с нашей по настоящему кастомной прошивки. Набираем номерок и…

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Да, всё работает и мы без проблем можем дозвониться 🙂

❯ Заключение

Конечно же, это далеко не весь функционал, необходимый любому современному смартфону. Здесь много чего еще нужно реализовать хотя бы для соответствия уровню бюджетных кнопочных телефонов: телефонную книгу, поддержку СМС/ММС, мультимедийный функционал с играми. Однако начало уже положено и самая необходимая часть модулей реализована. Этот проект очень занимательный для меня и я горд, что смог не на словах, а на деле показать вам, моим читателям, возможности моддинга совершенно NoName-устройств, без каких либо опознавательных знаков…

Моя задача заключается в том, чтобы показать вам возможности использования старых телефонов не только в потребительских, но и в гиковских DIY-сферах. Судите сами: огромный классный дисплей, емкостной тачскрин, готовый звук, камера — и всё это за каких-то пару сотен рублей. Главное показать людям, как всю эту мощь использовать в своих целях и делать совершенно новые устройства из существующих, а не выбрасывать их на помойку!
Сейчас смартфоны, подобные Fly из этого поста стоят копейки, а портировать на них прошивку можно без каких-либо трудностей. Я очень надеюсь, что после этого поста читатели попытаются сделать что-то своё из старых смартфонов, благо свои наработки я выкладываю на GitHub!

От знакомства до смерти 14 лет дружбы⁠ ⁠

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

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

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

-Ваш котёнок? — спрашивает.

-Жаль, он просто у вас на этаже сидел, может сбежал от кого-то. Пойду искать дальше.

И тут что-то дёрнуло меня сказать: «Если не найдете хозяина, приносите».

Закрыл дверь и даже забыл про разговор. Минут через 20 стук в дверь, снова стоит эта же девчонка, протягивает мне это черепашковое чудо и поздравляет с прибавлением.

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

После этого много чего было, и переезды, и дом построили, сын родился и вырос, и даже собаку завели, а Ксения Александровна всё это время была с нами.

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

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

Я понимаю, что возраст, болячки и т.д., но так грустно терять кого-то, кто был всегда рядом.

�� Продолжаем отсчитывать дни до Нового года — сегодня в Tanks Blitz тебя ждёт новая порция приятных сюрпризов ��

�� В магазине ты можешь приобрести набор «Обратный отсчёт» с ключом к Запертому контейнеру, приправленный вкусными бустерами золота. Внутри может оказаться Concept 1B (X) — динамичный тяжёлый танк с крепкой рикошетной башней
⛄ Вкусная скидка в 30% на покупку прокачиваемой техники V — VII уровня
❄ Знакомый приятный бонус к первой победе — x3 для каждого танка в твоём Ангаре
�� Подарочный набор из бустеров: по 10 бустеров опыта экипажа, свободного опыта и боевого опыта

День Рождения World of Tanks Blitz

День рождения любимой игры — это всегда праздник. Разработчики постоянно дарят подарки тем, кто оказался самым преданным. Даже если вы успели зарегистрировать аккаунт за несколько дней до Дня Рождения World of Tanks Blitz, то вы получите подарки. Посмотрим, что можно получить.

Подарки на день рождения

Ежегодно разработчики не оставляют без внимания День Рождения игры. Они раздают множество подарков и дарят игрокам новые возможности. Например, каждый игрок может получить много кредитов, свободного опыта и даже танки определенных уровней. Размер награды напрямую зависит от того, сколько лет игрок провел в WoT Blitz и сколько лет его аккаунту. Например:

Игрок, который зарегистрировал аккаунт 5 лет назад, получит танк 6-го уровня, специальный аватар и 100 голды. Также он получит несколько тысяч свободного опыта, который можно потратить на прокачку танков.

WoT Blitz, источник

Обычно игрокам, которые зарегистрировались относительно недавно (их аккаунту от 1 до 3-х лет) могут получить гораздо меньше, чем «старички» в мире танков blitz. Это 100% будет значок аватара, немного свободного опыта, голды и тематические награды в виде камуфляжа или двух.

Танкисты, аккаунты которых старше 5-ти лет, гарантированно получают много свободного опыта в Ворлд оф Танк Блиц, танк 5-го уровня (случайный) и камуфляжи с голдой.

Важно! Если игрок мог получить танк 5-го уровня, то он открывал специальный предмет в игре. Так ему выдавалась «случайная» награда. Если танк, выигранный случайным образом, уже есть в ангаре, то игрок получал такой же предмет, но для получения танка 6-го уровня. Таким образом игрок гарантированно получал танк 5 или 6 уровня

Кроме этого выдавались вполне серьезные награды, которые нельзя было потратить и забыть про них:

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

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

Важно! Если игрок открывает контейнер со случайным танком и ему постоянно выпадают те, которые у него уже есть в ангаре, то разработчики после 6-го уровня выдают игроку 600 000 кредитов в знак компенсации, но после этого бесплатный танк получить нет возможности

Если же игрок владеет более старым аккаунтом и ему положен контейнер с танками 7-го уровня, в случае повторки на аккаунт будет зачислено 2 500 голды.

Когда день рождения в WoT Blitz в 2023 году

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *